From 79a3420aa5fc5a0b8e6139c0ce557b2acc573057 Mon Sep 17 00:00:00 2001 From: Phil Kunz Date: Sat, 1 Sep 2018 16:40:42 +0200 Subject: [PATCH] fix(CI): update CI build --- .gitlab-ci.yml | 72 +++++-- npmextra.json | 5 +- package.json | 3 +- readme.md | 6 +- test/test.ts | 26 +-- ts/index.ts | 6 +- ts/smartnpm.classes.npmpackage.ts | 53 ++--- ts/smartnpm.classes.npmregistry.ts | 83 +++++--- ts/smartnpm.interfaces.ts | 27 ++- yarn.lock | 321 ----------------------------- 10 files changed, 175 insertions(+), 427 deletions(-) delete mode 100644 yarn.lock diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9360876..a1d614e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,33 +3,39 @@ image: hosttoday/ht-docker-node:npmci cache: paths: - - .yarn/ + - .npmci_cache/ key: "$CI_BUILD_STAGE" stages: -- mirror - security - test - release -- trigger -- pages +- metadata +# ==================== +# security stage +# ==================== mirror: - stage: mirror + stage: security script: - npmci git mirror tags: - docker + - notpriv -security: +snyk: stage: security script: - - npmci command yarn global add snyk - - npmci command yarn install --ignore-scripts + - npmci command npm install -g snyk + - npmci command npm install --ignore-scripts - npmci command snyk test tags: - docker + - notpriv +# ==================== +# test stage +# ==================== testLEGACY: stage: test script: @@ -39,6 +45,7 @@ testLEGACY: coverage: /\d+.?\d+?\%\s*coverage/ tags: - docker + - notpriv allow_failure: true testLTS: @@ -50,6 +57,7 @@ testLTS: coverage: /\d+.?\d+?\%\s*coverage/ tags: - docker + - notpriv testSTABLE: stage: test @@ -60,37 +68,75 @@ testSTABLE: coverage: /\d+.?\d+?\%\s*coverage/ tags: - docker + - notpriv release: stage: release script: - - npmci npm prepare + - npmci node install stable - npmci npm publish only: - tags tags: - docker + - notpriv + +# ==================== +# metadata stage +# ==================== +codequality: + stage: metadata + image: docker:stable + allow_failure: true + services: + - docker:stable-dind + script: + - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/') + - docker run + --env SOURCE_CODE="$PWD" + --volume "$PWD":/code + --volume /var/run/docker.sock:/var/run/docker.sock + "registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code + artifacts: + paths: [codeclimate.json] + tags: + - docker + - priv trigger: - stage: trigger + stage: metadata script: - npmci trigger only: - tags tags: - docker + - notpriv pages: image: hosttoday/ht-docker-node:npmci - stage: pages + stage: metadata script: - - npmci command yarn global add npmpage - - npmci command npmpage + - npmci command npm install -g typedoc typescript + - npmci npm install + - npmci command typedoc --module "commonjs" --target "ES2016" --out public/ ts/ tags: - docker + - notpriv only: - tags artifacts: expire_in: 1 week paths: - public + allow_failure: true + +windowsCompatibility: + image: stefanscherer/node-windows:10-build-tools + stage: metadata + script: + - npm install & npm test + coverage: /\d+.?\d+?\%\s*coverage/ + tags: + - windows + allow_failure: true diff --git a/npmextra.json b/npmextra.json index 5aed605..095e3c9 100644 --- a/npmextra.json +++ b/npmextra.json @@ -1,7 +1,6 @@ { "npmci": { - "npmGlobalTools": [ - "npmts" - ] + "npmGlobalTools": [], + "npmAccessLevel": "public" } } \ No newline at end of file diff --git a/package.json b/package.json index 9761c2a..ed9b17e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "name": "@pushrocks/smartnpm", "version": "1.0.7", + "private": false, "description": "interface with npm to retrieve package information", "main": "dist/index.js", "typings": "dist/index.d.ts", @@ -22,4 +23,4 @@ "@pushrocks/smartlog": "^2.0.1", "@pushrocks/smartrequest": "^1.1.14" } -} +} \ No newline at end of file diff --git a/readme.md b/readme.md index dd10609..a545338 100644 --- a/readme.md +++ b/readme.md @@ -1,13 +1,16 @@ # smartnpm + interface with npm to retrieve package information ## Availabililty + [![npm](https://pushrocks.gitlab.io/assets/repo-button-npm.svg)](https://www.npmjs.com/package/smartnpm) [![git](https://pushrocks.gitlab.io/assets/repo-button-git.svg)](https://GitLab.com/pushrocks/smartnpm) [![git](https://pushrocks.gitlab.io/assets/repo-button-mirror.svg)](https://github.com/pushrocks/smartnpm) [![docs](https://pushrocks.gitlab.io/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/smartnpm/) ## Status for master + [![build status](https://GitLab.com/pushrocks/smartnpm/badges/master/build.svg)](https://GitLab.com/pushrocks/smartnpm/commits/master) [![coverage report](https://GitLab.com/pushrocks/smartnpm/badges/master/coverage.svg)](https://GitLab.com/pushrocks/smartnpm/commits/master) [![npm downloads per month](https://img.shields.io/npm/dm/smartnpm.svg)](https://www.npmjs.com/package/smartnpm) @@ -19,11 +22,12 @@ interface with npm to retrieve package information [![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/) ## Usage + Use TypeScript for best in class instellisense. For further information read the linked docs at the top of this README. > MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh) -| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html) +> | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html) [![repo-footer](https://pushrocks.gitlab.io/assets/repo-footer.svg)](https://push.rocks) diff --git a/test/test.ts b/test/test.ts index 537afee..0e3f842 100644 --- a/test/test.ts +++ b/test/test.ts @@ -1,22 +1,22 @@ -import { expect, tap } from '@pushrocks/tapbundle' -import * as smartnpm from '../ts/index' +import { expect, tap } from '@pushrocks/tapbundle'; +import * as smartnpm from '../ts/index'; -let testRegistry: smartnpm.NpmRegistry -let testPackage: smartnpm.NpmPackage +let testRegistry: smartnpm.NpmRegistry; +let testPackage: smartnpm.NpmPackage; tap.test('should create valid instances', async () => { - testRegistry = new smartnpm.NpmRegistry() - expect(testRegistry).to.be.instanceof(smartnpm.NpmRegistry) + testRegistry = new smartnpm.NpmRegistry(); + expect(testRegistry).to.be.instanceof(smartnpm.NpmRegistry); - testPackage = new smartnpm.NpmPackage({}) - expect(testPackage).to.be.instanceof(smartnpm.NpmPackage) -}) + testPackage = new smartnpm.NpmPackage({}); + expect(testPackage).to.be.instanceof(smartnpm.NpmPackage); +}); tap.test('should produce a valid search string and this return npmts', async () => { let packages = await testRegistry.search({ name: 'npmts' - }) - expect(packages[0].name).to.equal('npmts') -}) + }); + expect(packages[0].name).to.equal('npmts'); +}); -tap.start() +tap.start(); diff --git a/ts/index.ts b/ts/index.ts index 90d8992..fa061a0 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -1,4 +1,4 @@ -import * as plugins from './smartnpm.plugins' +import * as plugins from './smartnpm.plugins'; -export * from './smartnpm.classes.npmregistry' -export * from './smartnpm.classes.npmpackage' +export * from './smartnpm.classes.npmregistry'; +export * from './smartnpm.classes.npmpackage'; diff --git a/ts/smartnpm.classes.npmpackage.ts b/ts/smartnpm.classes.npmpackage.ts index 0bf4572..a449736 100644 --- a/ts/smartnpm.classes.npmpackage.ts +++ b/ts/smartnpm.classes.npmpackage.ts @@ -1,39 +1,40 @@ -import * as plugins from './smartnpm.plugins' +import * as plugins from './smartnpm.plugins'; export class NpmPackage { - name: string = null - scope: string = null - version: string = null - description: string = null - keywords: string[] = null - date: '2017-08-02T11:22:49.144Z' + name: string = null; + scope: string = null; + version: string = null; + description: string = null; + keywords: string[] = null; + date: '2017-08-02T11:22:49.144Z'; links: { - npm: string - homepage: string - repository: string - bugs: string - } = null + npm: string; + homepage: string; + repository: string; + bugs: string; + } = null; author: { - name: 'Lossless GmbH' - } = null + name: 'Lossless GmbH'; + } = null; publisher: { - username: 'gitzone', email: 'npm@git.zone' - } = null - maintainers: any = null + username: 'gitzone'; + email: 'npm@git.zone'; + } = null; + maintainers: any = null; score: { - final: number, + final: number; detail: { - quality: number, - popularity: number, - maintenance: number - } - } = null - searchScore: number = null + quality: number; + popularity: number; + maintenance: number; + }; + } = null; + searchScore: number = null; - constructor (descriptionArg) { + constructor(descriptionArg) { for (let key in descriptionArg) { if (this[key] === null) { - this[key] = descriptionArg[key] + this[key] = descriptionArg[key]; } } } diff --git a/ts/smartnpm.classes.npmregistry.ts b/ts/smartnpm.classes.npmregistry.ts index 8b80abe..409dd82 100644 --- a/ts/smartnpm.classes.npmregistry.ts +++ b/ts/smartnpm.classes.npmregistry.ts @@ -1,83 +1,102 @@ -import * as plugins from './smartnpm.plugins' +import * as plugins from './smartnpm.plugins'; // interfaces -import { ISearchObject } from './smartnpm.interfaces' +import { ISearchObject } from './smartnpm.interfaces'; // classes -import { NpmPackage } from './smartnpm.classes.npmpackage' +import { NpmPackage } from './smartnpm.classes.npmpackage'; export class NpmRegistry { - private searchDomain = 'https://api.npms.io/v2/search?q=' - async search (searchObjectArg: ISearchObject) { - let searchString = '' + private searchDomain = 'https://api.npms.io/v2/search?q='; + async search(searchObjectArg: ISearchObject) { + let searchString = ''; let addToSearchString = (addStringArg: string) => { - searchString = `${searchString}+${addStringArg}` - } + searchString = `${searchString}+${addStringArg}`; + }; // name - if (searchObjectArg.name) { searchString = `${searchObjectArg.name}` } + if (searchObjectArg.name) { + searchString = `${searchObjectArg.name}`; + } // metadata - if (searchObjectArg.author) { addToSearchString(`author:${searchObjectArg.author}`) } - if (searchObjectArg.maintainer) { addToSearchString(`maintainer:${searchObjectArg.maintainer}`) } - if (searchObjectArg.scope) { addToSearchString(`scope:${searchObjectArg.scope}`) } + if (searchObjectArg.author) { + addToSearchString(`author:${searchObjectArg.author}`); + } + if (searchObjectArg.maintainer) { + addToSearchString(`maintainer:${searchObjectArg.maintainer}`); + } + if (searchObjectArg.scope) { + addToSearchString(`scope:${searchObjectArg.scope}`); + } // status if (searchObjectArg.deprecated) { if (searchObjectArg.deprecated === true) { - addToSearchString(`is:deprecated`) + addToSearchString(`is:deprecated`); } else { - addToSearchString(`not:deprecated`) + addToSearchString(`not:deprecated`); } } if (searchObjectArg.unstable) { if (searchObjectArg.unstable === true) { - addToSearchString(`is:unstable`) + addToSearchString(`is:unstable`); } else { - addToSearchString(`not:unstable`) + addToSearchString(`not:unstable`); } } if (searchObjectArg.insecure) { if (searchObjectArg.insecure === true) { - addToSearchString(`is:insecure`) + addToSearchString(`is:insecure`); } else { - addToSearchString(`not:insecure`) + addToSearchString(`not:insecure`); } } // search behaviour - if (searchObjectArg.boostExact) { addToSearchString(`boost-exact:${searchObjectArg.boostExact}`) } - if (searchObjectArg.scoreEffect) { addToSearchString(`score-effect:${searchObjectArg.scoreEffect}`) } + if (searchObjectArg.boostExact) { + addToSearchString(`boost-exact:${searchObjectArg.boostExact}`); + } + if (searchObjectArg.scoreEffect) { + addToSearchString(`score-effect:${searchObjectArg.scoreEffect}`); + } // analytics - if (searchObjectArg.qualityWeight) { addToSearchString(`author:${searchObjectArg.qualityWeight}`) } - if (searchObjectArg.popularityWeight) { addToSearchString(`author:${searchObjectArg.popularityWeight}`) } - if (searchObjectArg.maintenanceWeight) { addToSearchString(`author:${searchObjectArg.maintenanceWeight}`) } + if (searchObjectArg.qualityWeight) { + addToSearchString(`author:${searchObjectArg.qualityWeight}`); + } + if (searchObjectArg.popularityWeight) { + addToSearchString(`author:${searchObjectArg.popularityWeight}`); + } + if (searchObjectArg.maintenanceWeight) { + addToSearchString(`author:${searchObjectArg.maintenanceWeight}`); + } - plugins.smartlog.defaultLogger.info(`Search on npm for ${plugins.consolecolor.coloredString(searchString, 'pink')}`) + plugins.smartlog.defaultLogger.info( + `Search on npm for ${plugins.consolecolor.coloredString(searchString, 'pink')}` + ); let body: any; try { - let response = (await plugins.smartrequest.getJson(this.searchDomain + searchString, {})) - body = response.body + let response = await plugins.smartrequest.getJson(this.searchDomain + searchString, {}); + body = response.body; } catch { // we do nothing } - // lets create the packageArray - let packageArray: NpmPackage[] = [] + let packageArray: NpmPackage[] = []; // if request failed just return it empty if (!body || typeof body === 'string') { - return packageArray + return packageArray; } for (let packageArg of body.results) { - let localPackage = new NpmPackage(packageArg.package) - packageArray.push(localPackage) + let localPackage = new NpmPackage(packageArg.package); + packageArray.push(localPackage); } - return packageArray + return packageArray; } } diff --git a/ts/smartnpm.interfaces.ts b/ts/smartnpm.interfaces.ts index 1570770..514e476 100644 --- a/ts/smartnpm.interfaces.ts +++ b/ts/smartnpm.interfaces.ts @@ -1,25 +1,24 @@ - export interface ISearchObject { // name - name?: string + name?: string; // metadata - author?: string - maintainer?: string - scope?: string - keywords?: string[] + author?: string; + maintainer?: string; + scope?: string; + keywords?: string[]; // status - deprecated?: boolean - unstable?: boolean - insecure?: boolean + deprecated?: boolean; + unstable?: boolean; + insecure?: boolean; // search behaviour - boostExact?: boolean - scoreEffect?: number + boostExact?: boolean; + scoreEffect?: number; // Analytics - qualityWeight?: number - popularityWeight?: number - maintenanceWeight?: number + qualityWeight?: number; + popularityWeight?: number; + maintenanceWeight?: number; } diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index a61d9c4..0000000 --- a/yarn.lock +++ /dev/null @@ -1,321 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@types/code@^4.0.3": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/code/-/code-4.0.4.tgz#527fbdbb487dabc4346b8a2ccca3496d8198bae7" - -"@types/lodash@^4.14.55": - version "4.14.102" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.102.tgz#586a3e22385fc79b07cef9c5a1c8a5387986fbc8" - -"@types/node@^8.0.33": - version "8.9.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.9.4.tgz#dfd327582a06c114eb6e0441fa3d6fab35edad48" - -"@types/node@^9.4.6": - version "9.4.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-9.4.6.tgz#d8176d864ee48753d053783e4e463aec86b8d82e" - -ansi-256-colors@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-256-colors/-/ansi-256-colors-1.1.0.tgz#910de50efcc7c09e3d82f2f87abd6b700c18818a" - -ansi-styles@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" - dependencies: - color-convert "^1.9.0" - -beautycolor@^1.0.11, beautycolor@^1.0.7: - version "1.0.11" - resolved "https://registry.yarnpkg.com/beautycolor/-/beautycolor-1.0.11.tgz#71c5568d5a7ed5c144d3a54f753ad1b08862aea5" - dependencies: - ansi-256-colors "^1.1.0" - typings-global "^1.0.14" - -beautylog@^6.1.10: - version "6.1.10" - resolved "https://registry.yarnpkg.com/beautylog/-/beautylog-6.1.10.tgz#9c27e566937684cb689f9372d98cfa5415d50b72" - dependencies: - "@types/lodash" "^4.14.55" - beautycolor "^1.0.7" - figlet "^1.2.0" - lodash "^4.17.4" - ora "^1.1.0" - smartenv "^2.0.0" - smartq "^1.1.1" - typings-global "^1.0.14" - -bindings@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7" - -chalk@^2.0.1, chalk@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.1.tgz#523fe2678aec7b04e8041909292fe8b17059b796" - dependencies: - ansi-styles "^3.2.0" - escape-string-regexp "^1.0.5" - supports-color "^5.2.0" - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - dependencies: - restore-cursor "^2.0.0" - -cli-spinners@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.1.0.tgz#f1847b168844d917a671eb9d147e3df497c90d06" - -code@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/code/-/code-5.2.0.tgz#fb3a5e247afc17e3d65c49e7ce0f69ebe51a75b5" - dependencies: - hoek "5.x.x" - -color-convert@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" - dependencies: - color-name "^1.1.1" - -color-name@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - -define-properties@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" - dependencies: - foreach "^2.0.5" - object-keys "^1.0.8" - -early@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/early/-/early-2.1.1.tgz#841e23254ea5dc54d8afaeee82f5ab65c00ee23c" - dependencies: - beautycolor "^1.0.7" - smartq "^1.1.1" - typings-global "^1.0.16" - -es-abstract@^1.5.1: - version "1.10.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864" - dependencies: - es-to-primitive "^1.1.1" - function-bind "^1.1.1" - has "^1.0.1" - is-callable "^1.1.3" - is-regex "^1.0.4" - -es-to-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" - dependencies: - is-callable "^1.1.1" - is-date-object "^1.0.1" - is-symbol "^1.0.1" - -es6-error@^4.0.2: - version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -figlet@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.2.0.tgz#6c46537378fab649146b5a6143dda019b430b410" - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - -function-bind@^1.0.2, function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - -has@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" - dependencies: - function-bind "^1.0.2" - -hoek@5.x.x: - version "5.0.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-5.0.3.tgz#b71d40d943d0a95da01956b547f83c4a5b4a34ac" - -is-callable@^1.1.1, is-callable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - dependencies: - has "^1.0.1" - -is-symbol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" - -leakage@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/leakage/-/leakage-0.3.0.tgz#15d698abdc76bbc6439601f4f3020e77e2d50c39" - dependencies: - es6-error "^4.0.2" - left-pad "^1.1.3" - memwatch-next "^0.3.0" - minimist "^1.2.0" - pretty-bytes "^4.0.2" - -left-pad@^1.1.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.2.0.tgz#d30a73c6b8201d8f7d8e7956ba9616087a68e0ee" - -lodash@^4.17.4: - version "4.17.5" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" - -log-symbols@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - dependencies: - chalk "^2.0.1" - -memwatch-next@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/memwatch-next/-/memwatch-next-0.3.0.tgz#2111050f9a906e0aa2d72a4ec0f0089c78726f8f" - dependencies: - bindings "^1.2.1" - nan "^2.3.2" - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - -minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -nan@^2.3.2: - version "2.8.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" - -object-keys@^1.0.8: - version "1.0.11" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" - -object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - dependencies: - mimic-fn "^1.0.0" - -ora@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-1.4.0.tgz#884458215b3a5d4097592285f93321bb7a79e2e5" - dependencies: - chalk "^2.1.0" - cli-cursor "^2.1.0" - cli-spinners "^1.0.1" - log-symbols "^2.1.0" - -pretty-bytes@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -smartchai@^1.0.3: - version "1.0.8" - resolved "https://registry.yarnpkg.com/smartchai/-/smartchai-1.0.8.tgz#a074836f4ddd4b98c50f1e7ae9e8e8ad9f6f1902" - dependencies: - "@types/code" "^4.0.3" - code "^5.1.0" - typings-global "^1.0.20" - -smartdelay@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/smartdelay/-/smartdelay-1.0.4.tgz#791c1a4ee6770494064c10b1d2d2b8e6f3105b82" - dependencies: - smartq "^1.1.1" - typings-global "^1.0.16" - -smartenv@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/smartenv/-/smartenv-2.0.6.tgz#b38c679b0c151b9af548f68c3a072c29d1417e8d" - dependencies: - lodash "^4.17.4" - smartq "^1.1.1" - typings-global "^1.0.14" - -smartq@^1.1.1: - version "1.1.6" - resolved "https://registry.yarnpkg.com/smartq/-/smartq-1.1.6.tgz#0c1ff4336d95e95b4f1fdd8ccd7e2c5a323b8412" - dependencies: - typings-global "^1.0.19" - util.promisify "^1.0.0" - -smartrequest@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/smartrequest/-/smartrequest-1.0.8.tgz#9af18dde34efa7d43b4ecfc92ccb157a98eda3b1" - dependencies: - smartq "^1.1.1" - -supports-color@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.2.0.tgz#b0d5333b1184dd3666cbe5aa0b45c5ac7ac17a4a" - dependencies: - has-flag "^3.0.0" - -tapbundle@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.1.8.tgz#e08aee0e100a830d8a26a583a85d37ce53312e02" - dependencies: - "@types/node" "^8.0.33" - early "^2.1.1" - leakage "^0.3.0" - smartchai "^1.0.3" - smartdelay "^1.0.3" - smartq "^1.1.1" - typings-global "^1.0.19" - -typings-global@^1.0.14, typings-global@^1.0.16, typings-global@^1.0.19, typings-global@^1.0.20: - version "1.0.28" - resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.28.tgz#e28cc965476564cbc00e438739e0aa0735d323d4" - -util.promisify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3"