diff --git a/.codeclimate.yml b/.codeclimate.yml index cb4dd5cbf..129ab702f 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -13,10 +13,10 @@ engines: ratings: paths: - - "**.ts" + - '**.ts' exclude_paths: - node_modules - typings - coverage - - dist \ No newline at end of file + - dist diff --git a/.codecov.yml b/.codecov.yml index 679d53bed..0d83b0b1a 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -9,8 +9,8 @@ coverage: status: project: default: - threshold: 0.2 - if_not_found: success + threshold: 0.2 + if_not_found: success patch: default: enabled: no diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..92cb96ab1 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +end_of_line = lf + +# editorconfig-tools is unable to ignore longs strings or urls +max_line_length = null diff --git a/.github/ISSUE_TEMPLATE/Bug.md b/.github/ISSUE_TEMPLATE/Bug.md index 8942a8b10..9c11bed6e 100644 --- a/.github/ISSUE_TEMPLATE/Bug.md +++ b/.github/ISSUE_TEMPLATE/Bug.md @@ -23,4 +23,4 @@ logs, and code as it's very hard to read otherwise.) --> **Possible fixes** - + \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/technical_debt.md b/.github/ISSUE_TEMPLATE/technical_debt.md index 8b6d368ef..fff924f6f 100644 --- a/.github/ISSUE_TEMPLATE/technical_debt.md +++ b/.github/ISSUE_TEMPLATE/technical_debt.md @@ -3,15 +3,13 @@ name: Technical Debt about: Suggest an improvement to the codebase --- -Please make sure the new issue you are opening is not a duplicate, and **remove** this notice! - ---- + **Description** -*(Brief description of the technical debt here)* + **Possible solutions** -*(Any possible suggestions on how to improve this code)* + diff --git a/.gitignore b/.gitignore index 0adf7cedc..e9f99fd30 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ node_modules npm-debug.log dist coverage +.rpt2_cache +.idea diff --git a/.huskyrc.yml b/.huskyrc.yml new file mode 100644 index 000000000..7d9feb83f --- /dev/null +++ b/.huskyrc.yml @@ -0,0 +1,2 @@ +hooks: + pre-commit": 'lint-staged' diff --git a/.lintstagedrc.yml b/.lintstagedrc.yml new file mode 100644 index 000000000..f783be0eb --- /dev/null +++ b/.lintstagedrc.yml @@ -0,0 +1,7 @@ +linters: + lib/*.{js, ts}: + - 'npm run lint:fix' + - 'git add' + lib/*.{json,md,yml}: + - 'prettier --write' + - 'git add' diff --git a/.prettierrc.yml b/.prettierrc.yml new file mode 100644 index 000000000..310957302 --- /dev/null +++ b/.prettierrc.yml @@ -0,0 +1,5 @@ +printWidth: 100 +singleQuote: true +trailingComma: all +tabWidth: 2 +useTabs: false diff --git a/.releaserc.yml b/.releaserc.yml index abfef9caf..e93d05565 100644 --- a/.releaserc.yml +++ b/.releaserc.yml @@ -1,9 +1,9 @@ tagFormat: '${version}' -verifyConditions: - - "@semantic-release/changelog" - - "@semantic-release/npm" - - "@semantic-release/git" +verifyConditions: + - '@semantic-release/changelog' + - '@semantic-release/npm' + - '@semantic-release/git' prepare: - - "@semantic-release/changelog" - - "@semantic-release/npm" - - "@semantic-release/git" + - '@semantic-release/changelog' + - '@semantic-release/npm' + - '@semantic-release/git' diff --git a/.travis.yml b/.travis.yml index cd8c14a56..d78406277 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,10 @@ language: node_js stages: - - lint and build + - lint + - build - test + - coverage - release notifications: @@ -10,31 +12,55 @@ notifications: jobs: include: - - stage: lint and build - node_js: 10.0.0 + - stage: lint + node_js: 10.15.3 script: - npm run lint + - prettier --check './*.json' './*.yml' './*.md' + + - &build + stage: build + node_js: 10.15.3 + script: - npm run build + - <<: *build + node_js: 8.9.0 + + - &test-unit + stage: test + node_js: 10.15.3 + name: 'Unit Tests 10.15.3' + script: + - npm run test:unit + - <<: *test-unit + name: 'Unit Tests 8.9.0' + node_js: 8.9.0 - - stage: test - node_js: 10.0.0 + - &test-integration + stage: test + node_js: 10.15.3 + name: 'Integration Tests 10.15.3' before_script: ## Spin up container - cd test/docker/ - docker-compose -f docker-compose.test.yml up -d - - ## Test for liveness - # - docker exec -it gitlab bash -lc 'while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://localhost/-/readiness)" != "200" ]]; do sleep 5; done' - - sleep 240 - + - sleep 260 - export PERSONAL_ACCESS_TOKEN=$(docker exec -it gitlab bash -lc 'printf "%q" "${PERSONAL_ACCESS_TOKEN}"') - export GITLAB_URL=$(docker exec -it gitlab bash -lc 'printf "%q" "${GITLAB_URL}"') - echo $GITLAB_URL - echo $PERSONAL_ACCESS_TOKEN script: - - npm run test + - npm run test:integration + - <<: *test-integration + name: 'Integration Tests 8.9.0' + node_js: 8.9.0 + + - stage: coverage + node_js: 10.15.3 + script: + - npm run coverage - stage: release - node_js: 10.0.0 + node_js: 10.15.3 script: - - npm run semantic-release + - npm run release diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fedac7f3..74dbcf18c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,236 +1,298 @@ ## [4.5.1](https://github.com/jdalrymple/node-gitlab/compare/4.5.0...4.5.1) (2019-03-22) - ### Bug Fixes -* Updating packages ([2c47d24](https://github.com/jdalrymple/node-gitlab/commit/2c47d24)) +- Updating packages ([2c47d24](https://github.com/jdalrymple/node-gitlab/commit/2c47d24)) # [4.5.0](https://github.com/jdalrymple/node-gitlab/compare/4.4.1...4.5.0) (2019-03-19) - ### Features -* Updated MergeRequests API options ([a306799](https://github.com/jdalrymple/node-gitlab/commit/a306799)) +- Updated MergeRequests API options ([a306799](https://github.com/jdalrymple/node-gitlab/commit/a306799)) # [4.4.1](https://github.com/jdalrymple/node-gitlab/compare/4.3.0...4.4.1) (2019-03-06) ### Features -* **Projects:** - * Add support for DELETE /projects/:id/fork ([ef53a2](https://github.com/jdalrymple/node-gitlab/commit/ef53a2)) +- **Projects:** + + - Add support for DELETE /projects/:id/fork ([ef53a2](https://github.com/jdalrymple/node-gitlab/commit/ef53a2)) -* **MergeRequests:** - * Add MergeRequest.participants request ([b11a4f](https://github.com/jdalrymple/node-gitlab/commit/b11a4f)) +- **MergeRequests:** -* **Triggers:** - * Add missing method for triggering pipelines ([5858fc](https://github.com/jdalrymple/node-gitlab/commit/5858fc)) + - Add MergeRequest.participants request ([b11a4f](https://github.com/jdalrymple/node-gitlab/commit/b11a4f)) + +- **Triggers:** + - Add missing method for triggering pipelines ([5858fc](https://github.com/jdalrymple/node-gitlab/commit/5858fc)) ### Bug Fixes -* Add missing / from unshare in Projects ([6fb7f5](https://github.com/jdalrymple/node-gitlab/commit/6fb7f5)) -* Change lint api url. ([1d6e6e](https://github.com/jdalrymple/node-gitlab/commit/1d6e6e)) -* Implement jobToken property to allow authentication via CI job token ([8f551f](https://github.com/jdalrymple/node-gitlab/commit/8f551f)) + +- Add missing / from unshare in Projects ([6fb7f5](https://github.com/jdalrymple/node-gitlab/commit/6fb7f5)) +- Change lint api url. ([1d6e6e](https://github.com/jdalrymple/node-gitlab/commit/1d6e6e)) +- Implement jobToken property to allow authentication via CI job token ([8f551f](https://github.com/jdalrymple/node-gitlab/commit/8f551f)) ### Docs -* Update README.md with `rejectUnauthorized` -* Fixing typo in the host url + +- Update README.md with `rejectUnauthorized` +- Fixing typo in the host url # [4.3.0](https://github.com/jdalrymple/node-gitlab/compare/4.2.7...4.3.0) (2018-12-12) +### Breaking + +- Added content as a required parameter for RepositoryFiles +- Removed projectId from System Hooks API since it wasn't required +- Removed dependency on FS. Now the Projects API takes in two arguments `projectId` and `content` as well as an option fileName argument +- Changing everything to named exports for simplicity +- Switching required initialization argument from 'url' to 'host' +- Updated Approvals API support to match https://docs.gitlab.com/ee/api/merge_request_approvals.html +- MergeRequest Pipelines require the mergeRequestId +- NotificationSettings API edit function now takes one parameter, `options` +- Changing the access level enum property from master to maintainer as per https://gitlab.com/gitlab-org/gitlab-ce/issues/42751 +- Notes now require a body argument instead of checking the options argument for a body parameter +- Bumped min node version to > v10 LTS + +### Bug Fixes + +- #227 (https://github.com/jdalrymple/node-gitlab/issues/227) Fixing array syntax thanks to Lukas Eipert (https://github.com/leipert) (f9bc34d (https://github.com/jdalrymple/node-gitlab/commit/f9bc34d)) +- Fixing Todos support. If todoId was not passed, an undefined value would be introduced into the url (cbeef18 (https://github.com/jdalrymple/node-gitlab/commit/cbeef18)) +- ResourceAwardEmojis API wasn't properly filtering based on awardId (70f4315 (https://github.com/jdalrymple/node-gitlab/commit/70f4315)) +- Removed xhr library in favour of ky, and switched request for got for a smaller package size and retry functionality +- Fixing ci lint url (#278) +- Fixing form data (#272) +- Fixing randomstring usage (#271) +- Incorrect http method used to update MR approvers #262 ### Features -* **services:** add protected tags ([8203830](https://github.com/jdalrymple/node-gitlab/commit/8203830)) +- Added the ability to add sudo to specific requests (780244f (https://github.com/jdalrymple/node-gitlab/commit/780244f)) +- Added the missing edit function to the Groups API +- Added LDAP support to the Groups API +- Added missing method for triggering pipelines (#275) +- Implement jobToken property to allow authentication via CI job token (#269) -## [4.2.7](https://github.com/jdalrymple/node-gitlab/compare/4.2.6...4.2.7) (2018-11-26) +### Documentation +- Removing xml request docs +- Updating imports to be named imports + +### Tests + +- Fixing integration test for ApplicationSettings (#273) + +## [4.5.1](https://github.com/jdalrymple/node-gitlab/compare/4.5.0...4.5.1) (2019-03-22) ### Bug Fixes -* handing the function arguments in the incorrect order ([26235ff](https://github.com/jdalrymple/node-gitlab/commit/26235ff)) +- Updating packages ([2c47d24](https://github.com/jdalrymple/node-gitlab/commit/2c47d24)) -## [4.2.6](https://github.com/jdalrymple/node-gitlab/compare/4.2.5...4.2.6) (2018-11-26) +# [4.5.0](https://github.com/jdalrymple/node-gitlab/compare/4.4.1...4.5.0) (2019-03-19) + +### Features +- Updated MergeRequests API options ([a306799](https://github.com/jdalrymple/node-gitlab/commit/a306799)) + +# [4.4.1](https://github.com/jdalrymple/node-gitlab/compare/4.3.0...4.4.1) (2019-03-06) + +### Features + +- **Projects:** + + - Add support for DELETE /projects/:id/fork ([ef53a2](https://github.com/jdalrymple/node-gitlab/commit/ef53a2)) + +- **MergeRequests:** + + - Add MergeRequest.participants request ([b11a4f](https://github.com/jdalrymple/node-gitlab/commit/b11a4f)) + +- **Triggers:** + - Add missing method for triggering pipelines ([5858fc](https://github.com/jdalrymple/node-gitlab/commit/5858fc)) ### Bug Fixes -* Update pagination docs and conditions [#238](https://github.com/jdalrymple/node-gitlab/issues/238) ([266de00](https://github.com/jdalrymple/node-gitlab/commit/266de00)) +- Add missing / from unshare in Projects ([6fb7f5](https://github.com/jdalrymple/node-gitlab/commit/6fb7f5)) +- Change lint api url. ([1d6e6e](https://github.com/jdalrymple/node-gitlab/commit/1d6e6e)) +- Implement jobToken property to allow authentication via CI job token ([8f551f](https://github.com/jdalrymple/node-gitlab/commit/8f551f)) -## [4.2.5](https://github.com/jdalrymple/node-gitlab/compare/4.2.4...4.2.5) (2018-11-26) +### Docs + +- Update README.md with `rejectUnauthorized` +- Fixing typo in the host url +# [4.3.0](https://github.com/jdalrymple/node-gitlab/compare/4.2.7...4.3.0) (2018-12-12) + +### Features + +- **services:** Add protected tags ([8203830](https://github.com/jdalrymple/node-gitlab/commit/8203830)) + +## [4.2.7](https://github.com/jdalrymple/node-gitlab/compare/4.2.6...4.2.7) (2018-11-26) ### Bug Fixes -* Project variables urls were being generated incorrectly ([28b28cf](https://github.com/jdalrymple/node-gitlab/commit/28b28cf)) +- Handing the function arguments in the incorrect order ([26235ff](https://github.com/jdalrymple/node-gitlab/commit/26235ff)) -## [4.2.4](https://github.com/jdalrymple/node-gitlab/compare/4.2.3...4.2.4) (2018-11-26) +## [4.2.6](https://github.com/jdalrymple/node-gitlab/compare/4.2.5...4.2.6) (2018-11-26) + +### Bug Fixes +- Update pagination docs and conditions [#238](https://github.com/jdalrymple/node-gitlab/issues/238) ([266de00](https://github.com/jdalrymple/node-gitlab/commit/266de00)) + +## [4.2.5](https://github.com/jdalrymple/node-gitlab/compare/4.2.4...4.2.5) (2018-11-26) ### Bug Fixes -* Event properties using the incorrect boolean operator ([5f21a46](https://github.com/jdalrymple/node-gitlab/commit/5f21a46)) +- Project variables urls were being generated incorrectly ([28b28cf](https://github.com/jdalrymple/node-gitlab/commit/28b28cf)) -## [4.2.3](https://github.com/jdalrymple/node-gitlab/compare/4.2.2...4.2.3) (2018-11-26) +## [4.2.4](https://github.com/jdalrymple/node-gitlab/compare/4.2.3...4.2.4) (2018-11-26) + +### Bug Fixes +- Event properties using the incorrect boolean operator ([5f21a46](https://github.com/jdalrymple/node-gitlab/commit/5f21a46)) + +## [4.2.3](https://github.com/jdalrymple/node-gitlab/compare/4.2.2...4.2.3) (2018-11-26) ### Bug Fixes -* Filtering all events shouldnt require an action or a target [#61](https://github.com/jdalrymple/node-gitlab/issues/61) ([cda23b8](https://github.com/jdalrymple/node-gitlab/commit/cda23b8)) +- Filtering all events shouldnt require an action or a target [#61](https://github.com/jdalrymple/node-gitlab/issues/61) ([cda23b8](https://github.com/jdalrymple/node-gitlab/commit/cda23b8)) ## [4.2.1](https://github.com/jdalrymple/node-gitlab/compare/4.2.0...4.2.1) (2018-10-29) - ### Bug Fixes -* Updating application settings test to match updated API ([dececa6](https://github.com/jdalrymple/node-gitlab/commit/dececa6)) +- Updating application settings test to match updated API ([dececa6](https://github.com/jdalrymple/node-gitlab/commit/dececa6)) # [4.2.0](https://github.com/jdalrymple/node-gitlab/compare/4.1.1...4.2.0) (2018-10-10) - ### Bug Fixes -* jest.config file to properly run tests again. Follow up issue to fix these exceptions ([dcee7ac](https://github.com/jdalrymple/node-gitlab/commit/dcee7ac)) - +- jest.config file to properly run tests again. Follow up issue to fix these exceptions ([dcee7ac](https://github.com/jdalrymple/node-gitlab/commit/dcee7ac)) ### Features -* Add sudo abilities [#203](https://github.com/jdalrymple/node-gitlab/issues/203) ([4bf574c](https://github.com/jdalrymple/node-gitlab/commit/4bf574c)) +- Add sudo abilities [#203](https://github.com/jdalrymple/node-gitlab/issues/203) ([4bf574c](https://github.com/jdalrymple/node-gitlab/commit/4bf574c)) ## [4.1.1](https://github.com/jdalrymple/node-gitlab/compare/4.1.0...4.1.1) (2018-09-25) - ### Bug Fixes -* Updating ApplicationSettings test ([0d345b7](https://github.com/jdalrymple/node-gitlab/commit/0d345b7)) +- Updating ApplicationSettings test ([0d345b7](https://github.com/jdalrymple/node-gitlab/commit/0d345b7)) # [4.1.0](https://github.com/jdalrymple/node-gitlab/compare/4.0.1...4.1.0) (2018-09-19) - ### Features -* Added user edit support [#186](https://github.com/jdalrymple/node-gitlab/issues/186) ([95e8999](https://github.com/jdalrymple/node-gitlab/commit/95e8999)) -* Adding markdown support [#182](https://github.com/jdalrymple/node-gitlab/issues/182) ([#193](https://github.com/jdalrymple/node-gitlab/issues/193)) ([2113e8e](https://github.com/jdalrymple/node-gitlab/commit/2113e8e)) -* Re-add list all project members endpoint ([#190](https://github.com/jdalrymple/node-gitlab/issues/190)) ([5b07b6a](https://github.com/jdalrymple/node-gitlab/commit/5b07b6a)), closes [/github.com/jdalrymple/node-gitlab/commit/e081a1629f33e3af172101b94977f281879539c9#diff-379104d7d595f3793c2d7380496cc3c3](https://github.com//github.com/jdalrymple/node-gitlab/commit/e081a1629f33e3af172101b94977f281879539c9/issues/diff-379104d7d595f3793c2d7380496cc3c3) [#141](https://github.com/jdalrymple/node-gitlab/issues/141) +- Added user edit support [#186](https://github.com/jdalrymple/node-gitlab/issues/186) ([95e8999](https://github.com/jdalrymple/node-gitlab/commit/95e8999)) +- Adding markdown support [#182](https://github.com/jdalrymple/node-gitlab/issues/182) ([#193](https://github.com/jdalrymple/node-gitlab/issues/193)) ([2113e8e](https://github.com/jdalrymple/node-gitlab/commit/2113e8e)) +- Re-add list all project members endpoint ([#190](https://github.com/jdalrymple/node-gitlab/issues/190)) ([5b07b6a](https://github.com/jdalrymple/node-gitlab/commit/5b07b6a)), closes [/github.com/jdalrymple/node-gitlab/commit/e081a1629f33e3af172101b94977f281879539c9#diff-379104d7d595f3793c2d7380496cc3c3](https://github.com//github.com/jdalrymple/node-gitlab/commit/e081a1629f33e3af172101b94977f281879539c9/issues/diff-379104d7d595f3793c2d7380496cc3c3) [#141](https://github.com/jdalrymple/node-gitlab/issues/141) ## [4.0.1](https://github.com/jdalrymple/node-gitlab/compare/4.0.0...4.0.1) (2018-09-06) - ### Bug Fixes -* Updating the package.lock ([9b4b6f9](https://github.com/jdalrymple/node-gitlab/commit/9b4b6f9)) +- Updating the package.lock ([9b4b6f9](https://github.com/jdalrymple/node-gitlab/commit/9b4b6f9)) # [4.0.0-beta](https://github.com/jdalrymple/node-gitlab/compare/3.11.0...4.0.0-beta) (2018-08-22) - ### Major Update + - Migration to Typescript ## [3.11.3](https://github.com/jdalrymple/node-gitlab/compare/3.11.2...3.11.3) (2018-08-31) - ### Bug Fixes -* Camelcasing broke the body params ([e50f588](https://github.com/jdalrymple/node-gitlab/commit/e50f588)) +- Camelcasing broke the body params ([e50f588](https://github.com/jdalrymple/node-gitlab/commit/e50f588)) ## [3.11.2](https://github.com/jdalrymple/node-gitlab/compare/3.11.1...3.11.2) (2018-08-28) - ### Bug Fixes -* obey rate limits for all request types correctly ([#170](https://github.com/jdalrymple/node-gitlab/issues/170)) ([4bc7c69](https://github.com/jdalrymple/node-gitlab/commit/4bc7c69)), closes [#165](https://github.com/jdalrymple/node-gitlab/issues/165) -* Testing negated npmignore ([86960c4](https://github.com/jdalrymple/node-gitlab/commit/86960c4)) +- obey rate limits for all request types correctly ([#170](https://github.com/jdalrymple/node-gitlab/issues/170)) ([4bc7c69](https://github.com/jdalrymple/node-gitlab/commit/4bc7c69)), closes [#165](https://github.com/jdalrymple/node-gitlab/issues/165) +- Testing negated npmignore ([86960c4](https://github.com/jdalrymple/node-gitlab/commit/86960c4)) ## [3.11.1](https://github.com/jdalrymple/node-gitlab/compare/3.11.0...3.11.1) (2018-08-28) - ### Bug Fixes -* **applications-settings:** Edit of application settings not working ([#169](https://github.com/jdalrymple/node-gitlab/issues/169)) ([f0213ca](https://github.com/jdalrymple/node-gitlab/commit/f0213ca)) -* **test:** Application settings api updated ([#177](https://github.com/jdalrymple/node-gitlab/issues/177)) ([0723a7a](https://github.com/jdalrymple/node-gitlab/commit/0723a7a)) +- **applications-settings:** Edit of application settings not working ([#169](https://github.com/jdalrymple/node-gitlab/issues/169)) ([f0213ca](https://github.com/jdalrymple/node-gitlab/commit/f0213ca)) +- **test:** Application settings api updated ([#177](https://github.com/jdalrymple/node-gitlab/issues/177)) ([0723a7a](https://github.com/jdalrymple/node-gitlab/commit/0723a7a)) # [3.11.0](https://github.com/jdalrymple/node-gitlab/compare/3.10.1...3.11.0) (2018-08-20) - ### Bug Fixes -* Revert "fix(api): Updating project members all function to include the inherited members. [#141](https://github.com/jdalrymple/node-gitlab/issues/141)" until properly implemented by GitLab (https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/6669) ([24d9bcd](https://github.com/jdalrymple/node-gitlab/commit/24d9bcd)) - +- Revert "fix(api): Updating project members all function to include the inherited members. [#141](https://github.com/jdalrymple/node-gitlab/issues/141)" until properly implemented by GitLab (https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/6669) ([24d9bcd](https://github.com/jdalrymple/node-gitlab/commit/24d9bcd)) ### Features -* **projects:** add archive/unarchive functionality ([#168](https://github.com/jdalrymple/node-gitlab/issues/168)) ([5e7b1bd](https://github.com/jdalrymple/node-gitlab/commit/5e7b1bd)), closes [#166](https://github.com/jdalrymple/node-gitlab/issues/166) +- **projects:** add archive/unarchive functionality ([#168](https://github.com/jdalrymple/node-gitlab/issues/168)) ([5e7b1bd](https://github.com/jdalrymple/node-gitlab/commit/5e7b1bd)), closes [#166](https://github.com/jdalrymple/node-gitlab/issues/166) ## [3.10.1](https://github.com/jdalrymple/node-gitlab/compare/3.10.0...3.10.1) (2018-08-16) - ### Bug Fixes -* Typo in PagesDomains all() method ([#162](https://github.com/jdalrymple/node-gitlab/issues/162)) ([128f150](https://github.com/jdalrymple/node-gitlab/commit/128f150)) +- Typo in PagesDomains all() method ([#162](https://github.com/jdalrymple/node-gitlab/issues/162)) ([128f150](https://github.com/jdalrymple/node-gitlab/commit/128f150)) # [3.10.0](https://github.com/jdalrymple/node-gitlab/compare/3.9.0...3.10.0) (2018-08-15) - ### Features -* Expose reject unauthorized in request helper ([#160](https://github.com/jdalrymple/node-gitlab/issues/160)) ([01a2ce2](https://github.com/jdalrymple/node-gitlab/commit/01a2ce2)), closes [#142](https://github.com/jdalrymple/node-gitlab/issues/142) +- Expose reject unauthorized in request helper ([#160](https://github.com/jdalrymple/node-gitlab/issues/160)) ([01a2ce2](https://github.com/jdalrymple/node-gitlab/commit/01a2ce2)), closes [#142](https://github.com/jdalrymple/node-gitlab/issues/142) # [3.9.0](https://github.com/jdalrymple/node-gitlab/compare/3.8.0...3.9.0) (2018-08-15) - ### Bug Fixes -* Fix error while throwing an error in RequestHelper ([#156](https://github.com/jdalrymple/node-gitlab/issues/156)) ([177d7fd](https://github.com/jdalrymple/node-gitlab/commit/177d7fd)) -* Handling errors before retrying request ([#142](https://github.com/jdalrymple/node-gitlab/issues/142)) [skip-ci] ([bc3b366](https://github.com/jdalrymple/node-gitlab/commit/bc3b366)) -* Linting Master ([#157](https://github.com/jdalrymple/node-gitlab/issues/157)) ([ab14ed7](https://github.com/jdalrymple/node-gitlab/commit/ab14ed7)) - +- Fix error while throwing an error in RequestHelper ([#156](https://github.com/jdalrymple/node-gitlab/issues/156)) ([177d7fd](https://github.com/jdalrymple/node-gitlab/commit/177d7fd)) +- Handling errors before retrying request ([#142](https://github.com/jdalrymple/node-gitlab/issues/142)) [skip-ci](<[bc3b366](https://github.com/jdalrymple/node-gitlab/commit/bc3b366)>) +- Linting Master ([#157](https://github.com/jdalrymple/node-gitlab/issues/157)) ([ab14ed7](https://github.com/jdalrymple/node-gitlab/commit/ab14ed7)) ### Features -* Add deploy keys enable functionality ([#155](https://github.com/jdalrymple/node-gitlab/issues/155)) thanks to [Michael Matzka](https://github.com/mimaidms ) ([66547ad](https://github.com/jdalrymple/node-gitlab/commit/66547ad)) +- Add deploy keys enable functionality ([#155](https://github.com/jdalrymple/node-gitlab/issues/155)) thanks to [Michael Matzka](https://github.com/mimaidms) ([66547ad](https://github.com/jdalrymple/node-gitlab/commit/66547ad)) # [3.8.0](https://github.com/jdalrymple/node-gitlab/compare/3.7.0...3.8.0) (2018-08-14) - ### Bug Fixes -* **api:** Updating project members all function to include the inherited members. [#141](https://github.com/jdalrymple/node-gitlab/issues/141) ([e081a16](https://github.com/jdalrymple/node-gitlab/commit/e081a16)) -* **package:** update [@semantic-release](https://github.com/semantic-release)/npm to version 5.0.0 ([dc9748d](https://github.com/jdalrymple/node-gitlab/commit/dc9748d)) -* **package:** update [@semantic-release](https://github.com/semantic-release)/npm to version 5.0.1 ([12b6ca1](https://github.com/jdalrymple/node-gitlab/commit/12b6ca1)), closes [#139](https://github.com/jdalrymple/node-gitlab/issues/139) -* **package:** Updating packages and fixing [#140](https://github.com/jdalrymple/node-gitlab/issues/140) due to a babel update ([04d1769](https://github.com/jdalrymple/node-gitlab/commit/04d1769)) - +- **api:** Updating project members all function to include the inherited members. [#141](https://github.com/jdalrymple/node-gitlab/issues/141) ([e081a16](https://github.com/jdalrymple/node-gitlab/commit/e081a16)) +- **package:** update [@semantic-release](https://github.com/semantic-release)/npm to version 5.0.0 ([dc9748d](https://github.com/jdalrymple/node-gitlab/commit/dc9748d)) +- **package:** update [@semantic-release](https://github.com/semantic-release)/npm to version 5.0.1 ([12b6ca1](https://github.com/jdalrymple/node-gitlab/commit/12b6ca1)), closes [#139](https://github.com/jdalrymple/node-gitlab/issues/139) +- **package:** Updating packages and fixing [#140](https://github.com/jdalrymple/node-gitlab/issues/140) due to a babel update ([04d1769](https://github.com/jdalrymple/node-gitlab/commit/04d1769)) ### Features -* Add push rule service ([#143](https://github.com/jdalrymple/node-gitlab/issues/143)) ([395f83c](https://github.com/jdalrymple/node-gitlab/commit/395f83c)) -* Add transfer a project to a new namespace ([#145](https://github.com/jdalrymple/node-gitlab/issues/145)) ([87e9f55](https://github.com/jdalrymple/node-gitlab/commit/87e9f55)) +- Add push rule service ([#143](https://github.com/jdalrymple/node-gitlab/issues/143)) ([395f83c](https://github.com/jdalrymple/node-gitlab/commit/395f83c)) +- Add transfer a project to a new namespace ([#145](https://github.com/jdalrymple/node-gitlab/issues/145)) ([87e9f55](https://github.com/jdalrymple/node-gitlab/commit/87e9f55)) # [3.7.0](https://github.com/jdalrymple/node-gitlab/compare/3.6.0...3.7.0) (2018-08-02) - ### Features -* Adding update push rules to Projects, and updating the Protected Branches service to match the updated API thanks to [jennparise](https://github.com/jennparise)([#134](https://github.com/jdalrymple/node-gitlab/issues/134)) ([9f3de02](https://github.com/jdalrymple/node-gitlab/commit/9f3de02)) -* Updating Project Snippets API [#138](https://github.com/jdalrymple/node-gitlab/issues/138) ([a7858bd](https://github.com/jdalrymple/node-gitlab/commit/a7858bd)) +- Adding update push rules to Projects, and updating the Protected Branches service to match the updated API thanks to [jennparise](https://github.com/jennparise)([#134](https://github.com/jdalrymple/node-gitlab/issues/134)) ([9f3de02](https://github.com/jdalrymple/node-gitlab/commit/9f3de02)) +- Updating Project Snippets API [#138](https://github.com/jdalrymple/node-gitlab/issues/138) ([a7858bd](https://github.com/jdalrymple/node-gitlab/commit/a7858bd)) # [3.6.0](https://github.com/jdalrymple/node-gitlab/compare/3.5.1...3.6.0) (2018-07-24) ### Bug Fixes -* **package:** update [@semantic-release](https://github.com/semantic-release)/npm to version 4.0.0 ([#122](https://github.com/jdalrymple/node-gitlab/issues/122)) ([5351dcc](https://github.com/jdalrymple/node-gitlab/commit/5351dcc)) +- **package:** update [@semantic-release](https://github.com/semantic-release)/npm to version 4.0.0 ([#122](https://github.com/jdalrymple/node-gitlab/issues/122)) ([5351dcc](https://github.com/jdalrymple/node-gitlab/commit/5351dcc)) ### Features -* Add mirror pull trigger ([#130](https://github.com/jdalrymple/node-gitlab/issues/130)) ([b6ccb80](https://github.com/jdalrymple/node-gitlab/commit/b6ccb80)) thanks to [Joseph Petersen](https://github.com/casz) -* Making API version modifyable ([a2732b9](https://github.com/jdalrymple/node-gitlab/commit/a2732b9)) -* Updating Jobs API ([03a2f2d](https://github.com/jdalrymple/node-gitlab/commit/03a2f2d)) -* Updating participants function for issues ([f60e7ed](https://github.com/jdalrymple/node-gitlab/commit/f60e7ed)) thanks to [Fabian Aussems](https://github.com/mozinator) -* Added pipelines to MergeRequests in [#128](https://github.com/jdalrymple/node-gitlab/pull/128) thanks to [jnovick](https://github.com/jnovick) +- Add mirror pull trigger ([#130](https://github.com/jdalrymple/node-gitlab/issues/130)) ([b6ccb80](https://github.com/jdalrymple/node-gitlab/commit/b6ccb80)) thanks to [Joseph Petersen](https://github.com/casz) +- Making API version modifyable ([a2732b9](https://github.com/jdalrymple/node-gitlab/commit/a2732b9)) +- Updating Jobs API ([03a2f2d](https://github.com/jdalrymple/node-gitlab/commit/03a2f2d)) +- Updating participants function for issues ([f60e7ed](https://github.com/jdalrymple/node-gitlab/commit/f60e7ed)) thanks to [Fabian Aussems](https://github.com/mozinator) +- Added pipelines to MergeRequests in [#128](https://github.com/jdalrymple/node-gitlab/pull/128) thanks to [jnovick](https://github.com/jnovick) # [3.5.1](https://github.com/jdalrymple/node-gitlab/tags/3.4.5) (2018-7-08) + - Fixed migrating-from-node-gitlab link in Table of Contents #118 thanks to [Quentin Dreyer](https://github.com/qkdreyer) - Fix methods for editing MR approval/approver settings #119 thanks to [Norm MacLennan](https://github.com/maclennann) - Removed codcov patch coverage until a larger portion of the codebase is covered # [3.5.0](https://github.com/jdalrymple/node-gitlab/tags/3.4.5) (2018-7-04) + - Obey the rate limit (9b46250), closes #73 thanks to [Max Wittig](https://github.com/max-wittig) # [3.4.6](https://github.com/jdalrymple/node-gitlab/tags/3.4.5) (2018-7-02) @@ -271,7 +333,7 @@ # [3.3.6](https://github.com/jdalrymple/node-gitlab/tags/3.3.6) (2018-5-22) - Typo fix and branch id encoding thanks to [Igor Katsuba](https://github.com/Defenderbass) - in [#92](https://github.com/jdalrymple/node-gitlab/pull/92) and [#91](https://github.com/jdalrymple/node-gitlab/pull/91) + in [#92](https://github.com/jdalrymple/node-gitlab/pull/92) and [#91](https://github.com/jdalrymple/node-gitlab/pull/91) - Removal of non standard babel plugins in prep for move to Typescript thanks to [Pavel Birukov](https://github.com/r00ger) in [#90](https://github.com/jdalrymple/node-gitlab/pull/90) - Docs update pointing to the wrong npm package thanks to [Joseph Petersen](https://github.com/casz) in [#88](https://github.com/jdalrymple/node-gitlab/pull/88) - Licence update (to match the year) thanks to [Sharma-Rajat](https://github.com/Sharma-Rajat) in [#87](https://github.com/jdalrymple/node-gitlab/pull/87) @@ -305,7 +367,7 @@ # [3.2.1](https://github.com/jdalrymple/node-gitlab/tags/3.2.1) (2018-4-23) -- Fixed incorrectly named bundles +- Fixed incorrectly named bundles # [3.2.0](https://github.com/jdalrymple/node-gitlab/tags/3.2.0) (2018-4-21) @@ -346,16 +408,20 @@ - Completed support for all Gitlab APIs, [#49](https://github.com/jdalrymple/node-gitlab/pull/49), [#53](https://github.com/jdalrymple/node-gitlab/pull/53) ### Breaking Changes between 2.2.6 and 3.0.0 + - Instantiation of the API must use the new operator consistently. See usage above. - All services being exported are not capitalized for clarity that they are themselves api's and not properties. ie. Gitlab.Projects vs Gitlab.projects - All subservices (services exposed as properties of other services) have been moved out into their own service + ``` ProjectRepository -> Repositories, Tags, Commits, Branches and RepositoryFiles Users -> Users, UserKeys, UserGPGKeys, UserCustomAttributes, UserVariables ``` + - Moved createTodo function from MergeRequests API to Todos API - Many services have been renamed: + ``` ProjectProtectedBranches -> ProtectedBranches ProjectDeployKeys -> DeployKeys @@ -369,6 +435,7 @@ ProjectTriggers -> Triggers ``` - Some services were merged: + ``` Issues = ProjectIssues + Issues. ProjectId is optional for all() MergeRequests = ProjectMergeRequests + MergeRequests + MergeRequestsChanges + MergeRequestsCommits + MergeRequestVersions. ProjectId is optional for all() @@ -415,12 +482,13 @@ Runners = ProjectRunners + Runners. ProjectId is optional for all() - Fixed the missing options parameter for the ProjectRepositoryCommitComment's model thanks to [Martin Benninger](https://github.com/MartinBenninger) in PR [#21](https://github.com/jdalrymple/node-gitlab/pull/21) - Removal of the left over debug console.logs's within project issues again by [Martin Benninger](https://github.com/MartinBenninger) in PR [#21](https://github.com/jdalrymple/node-gitlab/pull/22) - Added proper docs for ProjectRepositoryFiles, enabled default urlEncoding for the passed in file paths and also documented -how to run locally via npm linking for Development testing thanks to [Adam Dehnel](https://github.com/arsdehnel) in [PR #23](https://github.com/jdalrymple/node-gitlab/pull/23) + how to run locally via npm linking for Development testing thanks to [Adam Dehnel](https://github.com/arsdehnel) in [PR #23](https://github.com/jdalrymple/node-gitlab/pull/23) - Exposed the Merge Requests resource which was missing from the exports list thanks to [fewieden](https://github.com/fewieden) in [PR #26](https://github.com/jdalrymple/node-gitlab/pull/26) - Added support for the Project Environments API and the Project Jobs API thanks to [Jeff Pelton](https://github.com/comster) in [PR #28](https://github.com/jdalrymple/node-gitlab/pull/28) - Fixing parse function to handle encoded urls that don't include '/' such as in groups #24 ### Breaking Changes between 2.1.0 and 2.2.0 + - Fixed a problem with the get responses where the response contained the full request response and not just the body # [2.1.0](https://github.com/jdalrymple/node-gitlab/0ea73235e0b465a0d4717a7e1f33251b58777b60) (2017-12-15) @@ -432,8 +500,9 @@ how to run locally via npm linking for Development testing thanks to [Adam Dehne - Added Owned Runners and Runner Jobs API ### Breaking Changes between 1.3.3 and 2.1.0 + - The `list` functions are no longer supported and have all been renamed to `all` -- The `update` functions are no longer supported and have all been renamed to `edit` +- The `update` functions are no longer supported and have all been renamed to `edit` - The `addKey` function has been renamed to `add` in UserKeys class - The deploy_keys and merge_requests properties have been renamed to deployKeys and mergeRequests - Removed old group member functions from the groups class as they have been moved to the GroupMembers class. This includes the addMember, listMembers, editMember, and removeMember. These functions can now be access via group.members.add, group.members.all, group.members.edit and group.members.remove respectively. @@ -441,19 +510,17 @@ how to run locally via npm linking for Development testing thanks to [Adam Dehne - Updated the structure of the ProjectRepository class such that its commits, branches, tags and files are properties and can be accessed like `repository.commits.all()` etc. - Removed unused labels endpoint since it already exists under projects.labels - # [2.0.1-rc.1](https://github.com/jdalrymple/node-gitlab/62a4d360f0ca2cd584caf852d96ced3761992072) (2017-11-29) - Updating pagination changes into v2.0.1 - Removed unused labels endpoint since it already exists under projects.labels - Added a mergeRequests class for the merge_requests endpoints - Extended the ProjectMergeRequests class for additional functionality that was missing for project merge requests such as -accepting merge requests, canceling merges when the pipeline succeeds, listing issues that will close on merge, subscribing/unsubscribing to merges, creating todos, time spent and time estimates as well as time stats. + accepting merge requests, canceling merges when the pipeline succeeds, listing issues that will close on merge, subscribing/unsubscribing to merges, creating todos, time spent and time estimates as well as time stats. - Fixed the notes endpoints for ProjectMergeRequests. This can now be access via projects.mergeRequests.notes.[command here] - Added comments endpoints to the ProjectRepositoryCommits class - Added the ability to post a status to a specific commit to the Project class - # [1.3.3](https://github.com/jdalrymple/node-gitlab/b8a3db4a4aaf9482fb3905883d92d940babfb461) (2017-11-29) - Adding pagination to project pipelines thanks to [Tamás Török-Vistai](https://github.com/tvtamas) @@ -492,7 +559,6 @@ accepting merge requests, canceling merges when the pipeline succeeds, listing i - Extending the Groups API, see docs for a full overview. - # [1.2.0](https://github.com/jdalrymple/node-gitlab/b08779a321fb25668df1e0f7e001394679cc47ba) (2017-11-25) - Adding fix to the API constructor to include the [missing oauthToken](https://github.com/jdalrymple/node-gitlab/pulls?q=is%3Apr+is%3Aclosed) thanks to [Salim Benabbou](https://github.com/Salimlou). @@ -517,7 +583,7 @@ accepting merge requests, canceling merges when the pipeline succeeds, listing i # [1.1.1](https://github.com/jdalrymple/node-gitlab/67df1c8772614b3856f2995eaa7d260d0f697e49) (2017-09-24) - Patch, fixed a broken pagination property -- Adding in missing options parameter in the groups API thanks to a pull request from [Cory Zibell](https://github.com/coryzibell) +- Adding in missing options parameter in the groups API thanks to a pull request from [Cory Zibell](https://github.com/coryzibell) # [1.1.0](https://github.com/jdalrymple/node-gitlab/385ef9f351981f26180e1381525ade458bcde1cd) (2017-09-24) @@ -526,7 +592,7 @@ accepting merge requests, canceling merges when the pipeline succeeds, listing i # [1.0.14](https://github.com/jdalrymple/node-gitlab/b8fb74828503f0a6432376ad156b7f9e33f6228e) (2017-08-1) - Adding default file name for file uploads. If none is supplied, the file name is -inferred from the file path + inferred from the file path # [1.0.13](https://github.com/jdalrymple/node-gitlab/3eb244a5b487f487859f750e46c8fa287b4455c4) (2017-07-31) @@ -544,7 +610,6 @@ inferred from the file path - Standardized the use of parseInt in the code base - Removed instances of duplicate code found by code climate - # [1.0.10](https://github.com/jdalrymple/node-gitlab/commit/c4a55aba89d83fda1552b3d5688b090b0c2b60aa) (2017-07-13) - Fixing Issues [#1](https://github.com/jdalrymple/node-gitlab/pull/1), [#2](https://github.com/jdalrymple/node-gitlab/pull/3), and [#3](https://github.com/jdalrymple/node-gitlab/pull/3) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 63d9f09c1..d79ca3c03 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -8,19 +8,19 @@ In the interest of fostering an open and welcoming environment, we as contributo Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting +- The use of sexualized language or imagery and unwelcome sexual attention or advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9f1ab7baf..a1defcbc2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,19 +1,19 @@ # Contributing When contributing to this repository, please first discuss the change you wish to make via issue, -email, or any other method with the owners of this repository before making a change. +email, or any other method with the owners of this repository before making a change. Please note we have a code of conduct, please follow it in all your interactions with the project. ## Pull Request Process -1. Ensure any install or build dependencies are removed before the end of the layer when doing a +1. Ensure any install or build dependencies are removed before the end of the layer when doing a build. -2. Update the README.md with details of changes to the interface, this includes new environment +2. Update the README.md with details of changes to the interface, this includes new environment variables, exposed ports, useful file locations and container parameters. 3. Increase the version numbers in any examples files and the README.md to the new version that this Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/). -4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you +4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you do not have permission to do that, you may request the second reviewer to merge it for you. ## Code of Conduct @@ -32,21 +32,21 @@ orientation. Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or -advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic +- The use of sexualized language or imagery and unwelcome sexual attention or + advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a +- Other conduct which could reasonably be considered inappropriate in a professional setting ### Our Responsibilities diff --git a/LICENSE.md b/LICENSE.md index 46f1096d9..94146bbf8 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,8 +1,7 @@ -The MIT License -=============== +# The MIT License -Copyright (c) - **2018 Justin Dalrymple** +Copyright (c) +**2018 Justin Dalrymple** Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 14cfbbd0f..e018f1a9b 100644 --- a/README.md +++ b/README.md @@ -8,23 +8,26 @@ [![Coverage](https://img.shields.io/codecov/c/github/jdalrymple/node-gitlab/master.svg)](https://codecov.io/gh/jdalrymple/node-gitlab) [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) +[![Code Style: Prettier](https://img.shields.io/badge/code%20style-prettier-ff69b4.svg)](https://img.shields.io/badge/code%20style-prettier-ff69b4.svg) +[![Install Size](https://packagephobia.now.sh/badge?p=gitlab)](https://packagephobia.now.sh/result?p=gitlab) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/jdalrymple/node-gitlab/blob/master/LICENSE.md) # node-gitlab - 🤖 [GitLab](https://github.com/gitlabhq/gitlabhq) API NodeJS library with full support of all the [Gitlab API](https://github.com/gitlabhq/gitlabhq/tree/master/doc/api) services. +🤖 [GitLab](https://github.com/gitlabhq/gitlabhq) API NodeJS library with full support of all the [Gitlab API](https://github.com/gitlabhq/gitlabhq/tree/master/doc/api) services. ## Table of Contents - [Install](#install) - [Usage](#usage) - - [Supported APIs](#supported-apis) - - [Import](#import) - - [Specific Imports](#specific-imports) - - [Bundle Imports](#bundle-imports) - - [Examples](#examples) - - [Pagination](#pagination) - - [Sudo](#sudo) + - [Supported APIs](#supported-apis) + - [Import](#import) + - [Specific Imports](#specific-imports) + - [Bundle Imports](#bundle-imports) + - [Examples](#examples) + - [Pagination](#pagination) + - [Sudo](#sudo) + - [Custom Request Libraries](#custom-request-libraries) - [Migrating from node-gitlab](#migrating-from-node-gitlabnode-gitlab) - [Docs](#docs) - [Development](#development) @@ -33,7 +36,6 @@ - [License](#licence) - [Changelog](#changelog) - ## Install ```bash @@ -42,8 +44,11 @@ npm install gitlab ``` ## Usage + ### Supported APIs + The API's that are currently supported are: + ``` // General ApplicationSettings @@ -133,6 +138,7 @@ UserKeys UserGPGKeys ``` + ### Import URL to your GitLab instance should not include `/api/v4` path. @@ -140,33 +146,31 @@ URL to your GitLab instance should not include `/api/v4` path. Instantiate the library using a basic token created in your [Gitlab Profile](https://docs.gitlab.com/ce/user/profile/personal_access_tokens.html) ```javascript -// ES6 (>=node 8.0.0) -import Gitlab from 'gitlab'; - -// ES5, assuming Promise and Object.assign are available -const Gitlab = require('gitlab/dist/es5').default +// ES6 (>=node 8.9.0) +import { Gitlab } from 'gitlab'; +// ES5, assuming native or polyfilled Promise is available +const { Gitlab } = require('gitlab'); // Instantiating const api = new Gitlab({ - url: 'http://example.com', // Defaults to https://gitlab.com - token: 'abcdefghij123456' // Can be created in your profile. -}) + host: 'http://example.com', // Defaults to https://gitlab.com + token: 'abcdefghij123456', // Can be created in your profile. +}); // Or, use a OAuth token instead! const api = new Gitlab({ - url: 'http://example.com', // Defaults to https://gitlab.com - oauthToken: 'abcdefghij123456' -}) + host: 'http://example.com', // Defaults to https://gitlab.com + oauthToken: 'abcdefghij123456', +}); // You can also use a CI job token: const api = new Gitlab({ - url: 'http://example.com', // Defaults to https://gitlab.com - jobToken: process.env.CI_JOB_TOKEN -}) - + url: 'http://example.com', // Defaults to https://gitlab.com + jobToken: process.env.CI_JOB_TOKEN, +}); ``` #### Specific Imports @@ -177,22 +181,20 @@ Sometimes you don't want to import and instantiate the whole Gitlab API, perhaps import { Projects } from 'gitlab'; const service = new Projects({ - url: 'http://example.com', // Defaults to https://gitlab.com - token: 'abcdefghij123456' // Can be created in your profile. -}) - + host: 'http://example.com', // Defaults to https://gitlab.com + token: 'abcdefghij123456', // Can be created in your profile. +}); ``` #### Bundle Imports It can be annoying to have to import all the API's pertaining to a specific resource. For example, the Projects resource is composed of many API's, Projects, Issues, Labels, MergeRequests, etc. For convenience, there is a Bundle export for importing and instantiating all these related API's at once. - ```javascript import { ProjectsBundle } from 'gitlab'; const services = new ProjectsBundle({ - url: 'http://example.com', // Defaults to https://gitlab.com + host: 'http://example.com', // Defaults to https://gitlab.com token: 'abcdefghij123456' // Can be created in your profile. }) @@ -203,7 +205,9 @@ etc.. ``` Currently there are three Bundles: + 1. ProjectsBundle which includes: + ``` Branches Commits @@ -250,6 +254,7 @@ Triggers ``` 2. UsersBundle which includes: + ``` Users, UserCustomAttributes, @@ -260,6 +265,7 @@ UserGPGKeys ``` 3. GroupsBundle which includes: + ``` Groups GroupAccessRequests @@ -298,62 +304,47 @@ const api = new Gitlab({ > **NOTE**: _Using `process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'` will not work with the `gitlab` library. The `rejectUnauthorized` key is the only way to allow insecure certificates to be bypassed._ -### Using XMLHttpRequest -This package uses the [Request](https://github.com/request/request) library by default, which is built into Node. However, if your code is running in a browser, you can get better built-in resolution of proxies and self-signed certificates by using the browser's XMLHttpRequest implementation instead: - -```javascript -import Gitlab from 'gitlab'; - -const api = new Gitlab({ - url: 'http://example.com', // Defaults to https://gitlab.com - token: 'abcdefghij123456', // Can be created in your profile. - - useXMLHttpRequest: true // Use the browser's XMLHttpRequest instead of Node's Request library -}) -``` - -**WARNING:** Currently this option does not support the `multipart/form-data` content type, and therefore the endpoint for [uploading a file to a project](https://docs.gitlab.com/ee/api/projects.html#upload-a-file) will not work correctly. All other endpoints should work exactly as expected. - ### Examples + Once you have your library instantiated, you can utilize many of the API's functionality: Using the await/async method ```javascript -import Gitlab from 'gitlab'; +import { Gitlab } from 'gitlab'; const api = new Gitlab({ - url: 'http://example.com', // Defaults to https://gitlab.com - token: 'abcdefghij123456' // Can be created in your profile. + host: 'http://example.com', // Defaults to https://gitlab.com + token: 'abcdefghij123456', // Can be created in your profile. }); // Listing users let users = await api.Users.all(); // Or using Promise-Then notation -api.Projects.all() -.then((projects) => { - console.log(projects) -}) +api.Projects.all().then(projects => { + console.log(projects); +}); ``` General rule about all the function parameters: + - If its a required parameter, it is a named argument in the functions - If its an optional parameter, it is defined in a options object following the named arguments ie. ```javascript -import Gitlab from 'gitlab'; +import { Gitlab } from 'gitlab'; const api = new Gitlab({ - url: 'http://example.com', // Defaults to https://gitlab.com - token: 'abcdefghij123456' // Can be created in your profile. + host: 'http://example.com', // Defaults to https://gitlab.com + token: 'abcdefghij123456', // Can be created in your profile. }); api.Projects.create(projectId, { - //options defined in the Gitlab API documentation -}) + //options defined in the Gitlab API documentation +}); ``` ### Pagination @@ -361,29 +352,27 @@ api.Projects.create(projectId, { For any .all() function on a resource, it will return all the items from Gitlab. This can be troublesome if there are many items, as the request it self can take a while to be fulfilled. As such, a maxPages option can be passed to limit the scope of the all function. ```javascript -import Gitlab from 'gitlab'; +import { Gitlab } from 'gitlab'; const api = new Gitlab({ - url: 'http://example.com', // Defaults to https://gitlab.com - token: 'abcdefghij123456' // Can be created in your profile. + host: 'http://example.com', // Defaults to https://gitlab.com + token: 'abcdefghij123456', // Can be created in your profile. }); -let projects = await api.Projects.all({ maxPages:2 }); - +let projects = await api.Projects.all({ maxPages: 2 }); ``` You can also use this in conjunction to the perPage argument which would override the default of 30 per page set by Gitlab: ```javascript -import Gitlab from 'gitlab'; +import { Gitlab } from 'gitlab'; const api = new Gitlab({ - url: 'http://example.com', // Defaults to https://gitlab.com - token: 'abcdefghij123456' // Can be created in your profile. + host: 'http://example.com', // Defaults to https://gitlab.com + token: 'abcdefghij123456', // Can be created in your profile. }); -let projects = await api.Projects.all({ maxPages:2, perPage:40 }); - +let projects = await api.Projects.all({ maxPages: 2, perPage: 40 }); ``` Additionally, if you would like to get back the pagination information, to know how many total pages there are for example, pass the pagination option `showPagination` in addition to either the @@ -391,7 +380,11 @@ Additionally, if you would like to get back the pagination information, to know ```javascript ... -let { data, pagination } = await api.Projects.all({ perPage:40, maxPages:2, showPagination: true }); +const { data, pagination } = await api.Projects.all({ + perPage:40, + maxPages:2, + showPagination: true +}); ... ``` @@ -411,27 +404,51 @@ pagination: { } ``` +> Not supplying any pagination restrictions is call intensive. Some resources will require many requests which can put a significant load on the Gitlab Server. The general best practice would be setting the page request option to only return the first page if all results are not required. + ### Sudo + For private gitlab instances, administrators are able to impersonate users through the API. To do so, you have to set the 'Sudo' header on the services you want to impersonate the user for. For example, if you want to disable notifications for a specific user: + ```javascript -import Gitlab from 'gitlab'; +import { NotificationSettings } from 'gitlab'; -const { NotificationSettings } = new Gitlab({ - url: 'http://example.com', // Defaults to https://gitlab.com +const service = new NotificationSettings({ + host: 'http://example.com', // Defaults to https://gitlab.com token: 'abcdefghij123456' // Can be created in your profile. sudo: 8 // Can be the user ID or a username }); -await NotificationSettings.edit({ +await service.edit({ level: NotificationSettings.LEVELS.DISABLED }) ``` +### Custom Request Libraries + +There is another constructor parameter that allows the user to specify their own custom request library +as long as it has a similar API to ky. To specify the library, simply set the `requester` property when +instatiating a service: + +An example can be seen in the [KyRequester.ts](./src/infrastructure/KyRequester.ts) file + +```javascript +import { Gitlab } from 'gitlab'; +import YourCustomRequester from 'custom-requester'; + +const api = new Gitlab({ + host: 'http://example.com', // Defaults to https://gitlab.com + token: 'abcdefghij123456' // Can be created in your profile. + requester: YourCustomRequester +}); + +``` + ## Docs -Although there are the [official docs](https://github.com/gitlabhq/gitlabhq/tree/master/doc/api) for the API, this library comes with some extra goodies to make using the API easier. After the 5.0.0 release, the next large project will be putting together proper documentation for these goodies [#39]! Stay tuned! +Although there are the [official docs](https://github.com/gitlabhq/gitlabhq/tree/master/doc/api) for the API, there are some extra goodies offered by this package! After the 3.0.0 release, the next large project will be putting together proper documentation for these goodies [#39]! Stay tuned!! ## Development @@ -444,13 +461,11 @@ $ npm install $ npm build ``` -And then inside whatever project you are using `node-gitlab` in you change your references to use that repo. In your package.json of that upstream project change: +And then inside whatever project you are using `node-gitlab` in you change your references to use that repo. In your package.json of that upstream project change: ```json "dependencies": { - ... - "node-gitlab": "2.1.0" - ... + "gitlab": "5.0.0" } ``` @@ -458,15 +473,13 @@ to this ```json "dependencies": { - ... - "node-gitlab": "" - ... + "gitlab": "" } ``` ## Testing -Testing is a work-in-progress right now but here is the start. +Testing is a work-in-progress right now but here is the start. 1. First run Gitlab in a docker container: @@ -475,11 +488,11 @@ docker-compose -f docker-compose.test.yml up ``` 1. Once GitLab is up on localhost:8080, get the two environment variables from the docker image could -either export them into environment variables locally: + either export them into environment variables locally: ```bash export PERSONAL_ACCESS_TOKEN=$(docker exec -it gitlab bash -lc 'printf "%q" "${PERSONAL_ACCESS_TOKEN}"') -export GITLAB_URL=$(docker exec -it gitlab bash -lc 'printf "%q" "${GITLAB_URL}"') +export GITLAB_URL=$(docker exec -it gitlab bash -lc 'printf "%q" "${GITLAB_URL}"') ``` 1. Now run the tests @@ -499,7 +512,6 @@ PERSONAL_ACCESS_TOKEN='abcdefg' GITLAB_URL='http://localhost:8080' npm run test > Note it may take about 3 minutes to get the variables while Gitlab is starting up in the container - ## Contributors This started off as a fork from [node-gitlab](https://github.com/node-gitlab/node-gitlab) but I ended up rewriting much of the code. Here are the original work's [contributors](https://github.com/node-gitlab/node-gitlab#contributors). @@ -519,15 +531,16 @@ This started off as a fork from [node-gitlab](https://github.com/node-gitlab/nod - [Claude Abounegm](https://github.com/claude-abounegm) - [Stefan Hall](https://github.com/Marethyu1) - [Jordan Wallet](https://github.com/Mr-Wallet) -- [Ev Haus](https://github.com/EvHaus) +- [Ev Haus](https://github.com/EvHaus) - [zhao0](https://github.com/zhao0) - [Joshua Grosso](https://github.com/jgrosso) - [Frédéric Boutin](https://github.com/fboutin-pmc) - [Isaac Ouellet Therrien](https://github.com/yonguelink) -- [Pavel Birukov](https://github.com/r00ger) +- [Pavel Birukov](https://github.com/pablobirukov) - [Sharma-Rajat](https://github.com/Sharma-Rajat) - [Joseph Petersen](https://github.com/casz) -- [Igor Katsuba](https://github.com/Defenderbass) +- [Igor Katsuba](https://github.com/IKatsuba) +- [Giuseppe Angri](https://github.com/giuseppeangri) - [Michael Townsend](https://github.com/Continuities) - [bodtx](https://github.com/bodtx) - [Artem](https://github.com/arthot) @@ -537,6 +550,23 @@ This started off as a fork from [node-gitlab](https://github.com/node-gitlab/nod - [Norm MacLennan](https://github.com/maclennann) - [jnovick](https://github.com/jnovick) - [Fabian Aussems](https://github.com/mozinator) +- [jennparise](https://github.com/jennparise) +- [Michael Matzka](https://github.com/mimaidms) +- [CraigAllardyce](https://github.com/CraigAllardyce) +- [Bruno Guimarães](https://github.com/brunobastosg) +- [Louis Cherel](https://github.com/Musinux) +- [Lukas Eipert](https://github.com/leipert) +- [Maximilian Krauß](https://github.com/maximilian-krauss) +- [Evolution Gaming](https://github.com/evolution-gaming) +- [WEBER Logan](https://github.com/Neonox31) +- [Anton Zhukov](https://github.com/MrCheater) +- [Nic Loomans](https://github.com/beaverusiv) +- [Jennifer Everhart]() +- [Carl Kittelberger](https://github.com/icedream) +- [Patrik Votoček](https://github.com/Vrtak-CZ) +- [Kyrylo Fedorov](https://github.com/Kyr) +- [Claudio Vellage](https://github.com/jdalrymple/LRH539) +- [Seb0uil](https://github.com/seb0uil) ## License @@ -545,5 +575,3 @@ This started off as a fork from [node-gitlab](https://github.com/node-gitlab/nod ## Changelog [Here](https://github.com/jdalrymple/node-gitlab/blob/master/CHANGELOG.md) - - diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 7ff97b8b7..000000000 --- a/jest.config.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - preset: 'ts-jest', - - testEnvironment: 'node', - testRegex: 'test/tests/.*\\.ts$', - testMatch: null, - testURL: 'http://localhost/', - - coverageDirectory: './coverage/', - collectCoverage: true, - - setupTestFrameworkScriptFile: 'jest-extended', - - globals: { - 'ts-jest': { - diagnostics: { - ignoreCodes: [2322, 2445, 7006, 7031, 2339, 7016, 7023, 7017, 2345, 6133], - }, - }, - }, -}; diff --git a/jest.config.json b/jest.config.json new file mode 100644 index 000000000..3914366db --- /dev/null +++ b/jest.config.json @@ -0,0 +1,21 @@ +{ + "preset": "ts-jest", + + "testEnvironment": "node", + "testRegex": "test\\/.*\\.ts$", + "testMatch": null, + "testURL": "http://localhost/", + + "coverageDirectory": "./coverage/", + "collectCoverage": true, + + "setupFilesAfterEnv": ["jest-extended"], + + "globals": { + "ts-jest": { + "diagnostics": { + "ignoreCodes": [2322, 2445, 7006, 7031, 2339, 7016, 7023, 7017, 2345, 6133] + } + } + } +} diff --git a/package-lock.json b/package-lock.json index 5ccdda05d..c93ade783 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "gitlab", - "version": "4.5.1", + "version": "5.0.0-rc.17", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -10,42 +10,53 @@ "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", "dev": true, "requires": { - "@babel/highlight": "7.0.0" + "@babel/highlight": "^7.0.0" } }, "@babel/core": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.0.tgz", - "integrity": "sha512-Dzl7U0/T69DFOTwqz/FJdnOSWS57NpjNfCwMKHABr589Lg8uX1RrlBIJ7L5Dubt/xkLsx0xH5EBFzlBVes1ayA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0", - "@babel/generator": "7.4.0", - "@babel/helpers": "7.4.2", - "@babel/parser": "7.4.2", - "@babel/template": "7.4.0", - "@babel/traverse": "7.4.0", - "@babel/types": "7.4.0", - "convert-source-map": "1.6.0", - "debug": "4.1.0", - "json5": "2.1.0", - "lodash": "4.17.11", - "resolve": "1.10.0", - "semver": "5.5.0", - "source-map": "0.5.7" + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.4.tgz", + "integrity": "sha512-lQgGX3FPRgbz2SKmhMtYgJvVzGZrmjaF4apZ2bLwofAKiSjxU0drPh4S/VasyYXwaTs+A1gvQ45BN8SQJzHsQQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.4", + "@babel/helpers": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.11", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } } }, "@babel/generator": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", - "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", + "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", "dev": true, "requires": { - "@babel/types": "7.4.0", - "jsesc": "2.5.2", - "lodash": "4.17.11", - "source-map": "0.5.7", - "trim-right": "1.0.1" + "@babel/types": "^7.4.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" } }, "@babel/helper-function-name": { @@ -54,9 +65,9 @@ "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "7.0.0", - "@babel/template": "7.4.0", - "@babel/types": "7.4.0" + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" } }, "@babel/helper-get-function-arity": { @@ -65,7 +76,7 @@ "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", "dev": true, "requires": { - "@babel/types": "7.4.0" + "@babel/types": "^7.0.0" } }, "@babel/helper-plugin-utils": { @@ -75,23 +86,23 @@ "dev": true }, "@babel/helper-split-export-declaration": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", - "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", "dev": true, "requires": { - "@babel/types": "7.4.0" + "@babel/types": "^7.4.4" } }, "@babel/helpers": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.2.tgz", - "integrity": "sha512-gQR1eQeroDzFBikhrCccm5Gs2xBjZ57DNjGbqTaHo911IpmSxflOQWMAHPw/TXk8L3isv7s9lYzUkexOeTQUYg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz", + "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==", "dev": true, "requires": { - "@babel/template": "7.4.0", - "@babel/traverse": "7.4.0", - "@babel/types": "7.4.0" + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/highlight": { @@ -100,23 +111,15 @@ "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", "dev": true, "requires": { - "chalk": "2.4.1", - "esutils": "2.0.2", - "js-tokens": "4.0.0" - }, - "dependencies": { - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - } + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.2.tgz", - "integrity": "sha512-9fJTDipQFvlfSVdD/JBtkiY0br9BtfvW2R8wo6CX/Ej2eMuV0gWPk1M67Mt3eggQvBqYW1FCEk8BN7WvGm/g5g==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.4.tgz", + "integrity": "sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==", "dev": true }, "@babel/plugin-syntax-object-rest-spread": { @@ -125,46 +128,65 @@ "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/runtime": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.5.tgz", + "integrity": "sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==", + "requires": { + "regenerator-runtime": "^0.13.2" } }, "@babel/template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", - "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", + "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0", - "@babel/parser": "7.4.2", - "@babel/types": "7.4.0" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/traverse": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.0.tgz", - "integrity": "sha512-/DtIHKfyg2bBKnIN+BItaIlEg5pjAnzHOIQe5w+rHAw/rg9g0V7T4rqPX8BJPfW11kt3koyjAnTNwCzb28Y1PA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0", - "@babel/generator": "7.4.0", - "@babel/helper-function-name": "7.1.0", - "@babel/helper-split-export-declaration": "7.4.0", - "@babel/parser": "7.4.2", - "@babel/types": "7.4.0", - "debug": "4.1.0", - "globals": "11.11.0", - "lodash": "4.17.11" + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.4.tgz", + "integrity": "sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.4", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.11" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } } }, "@babel/types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", - "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", + "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", "dev": true, "requires": { - "esutils": "2.0.2", - "lodash": "4.17.11", - "to-fast-properties": "2.0.0" + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" } }, "@cnakazawa/watch": { @@ -173,8 +195,8 @@ "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", "dev": true, "requires": { - "exec-sh": "0.3.2", - "minimist": "1.2.0" + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" } }, "@fimbul/bifrost": { @@ -183,10 +205,10 @@ "integrity": "sha512-gVTkJAOef5HtN6LPmrtt5fAUmBywwlgmObsU3FBhPoNeXPLaIl2zywXkJEtvvVLQnaFmtff3x+wIj5lHRCDE3Q==", "dev": true, "requires": { - "@fimbul/ymir": "0.17.0", - "get-caller-file": "2.0.5", - "tslib": "1.9.3", - "tsutils": "3.9.1" + "@fimbul/ymir": "^0.17.0", + "get-caller-file": "^2.0.0", + "tslib": "^1.8.1", + "tsutils": "^3.5.0" }, "dependencies": { "get-caller-file": { @@ -196,12 +218,12 @@ "dev": true }, "tsutils": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.9.1.tgz", - "integrity": "sha512-hrxVtLtPqQr//p8/msPT1X1UYXUjizqSit5d9AQ5k38TcV38NyecL5xODNxa73cLe/5sdiJ+w1FqzDhRBA/anA==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.10.0.tgz", + "integrity": "sha512-q20XSMq7jutbGB8luhKKsQldRKWvyBO2BGqni3p4yq8Ys9bEP/xQw3KepKmMRt9gJ4lvQSScrihJrcKdKoSU7Q==", "dev": true, "requires": { - "tslib": "1.9.3" + "tslib": "^1.8.1" } } } @@ -212,64 +234,55 @@ "integrity": "sha512-xMXM9KTXRLHLVS6dnX1JhHNEkmWHcAVCQ/4+DA1KKwC/AFnGHzu/7QfQttEPgw3xplT+ILf9e3i64jrFwB3JtA==", "dev": true, "requires": { - "inversify": "5.0.1", - "reflect-metadata": "0.1.13", - "tslib": "1.9.3" + "inversify": "^5.0.0", + "reflect-metadata": "^0.1.12", + "tslib": "^1.8.1" } }, "@jest/console": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.3.0.tgz", - "integrity": "sha512-NaCty/OOei6rSDcbPdMiCbYCI0KGFGPgGO6B09lwWt5QTxnkuhKYET9El5u5z1GAcSxkQmSMtM63e24YabCWqA==", + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz", + "integrity": "sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==", "dev": true, "requires": { - "@jest/source-map": "24.3.0", - "@types/node": "10.7.1", - "chalk": "2.4.1", - "slash": "2.0.0" - }, - "dependencies": { - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } + "@jest/source-map": "^24.3.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" } }, "@jest/core": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.5.0.tgz", - "integrity": "sha512-RDZArRzAs51YS7dXG1pbXbWGxK53rvUu8mCDYsgqqqQ6uSOaTjcVyBl2Jce0exT2rSLk38ca7az7t2f3b0/oYQ==", - "dev": true, - "requires": { - "@jest/console": "24.3.0", - "@jest/reporters": "24.5.0", - "@jest/test-result": "24.5.0", - "@jest/transform": "24.5.0", - "@jest/types": "24.5.0", - "ansi-escapes": "3.2.0", - "chalk": "2.4.1", - "exit": "0.1.2", - "graceful-fs": "4.1.15", - "jest-changed-files": "24.5.0", - "jest-config": "24.5.0", - "jest-haste-map": "24.5.0", - "jest-message-util": "24.5.0", - "jest-regex-util": "24.3.0", - "jest-resolve-dependencies": "24.5.0", - "jest-runner": "24.5.0", - "jest-runtime": "24.5.0", - "jest-snapshot": "24.5.0", - "jest-util": "24.5.0", - "jest-validate": "24.5.0", - "jest-watcher": "24.5.0", - "micromatch": "3.1.10", - "p-each-series": "1.0.0", - "pirates": "4.0.1", - "realpath-native": "1.1.0", - "rimraf": "2.6.3", - "strip-ansi": "5.2.0" + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.8.0.tgz", + "integrity": "sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.8.0", + "jest-config": "^24.8.0", + "jest-haste-map": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-regex-util": "^24.3.0", + "jest-resolve-dependencies": "^24.8.0", + "jest-runner": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-snapshot": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", + "jest-watcher": "^24.8.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "strip-ansi": "^5.0.0" }, "dependencies": { "ansi-regex": { @@ -278,134 +291,69 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - }, - "jest-message-util": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.5.0.tgz", - "integrity": "sha512-6ZYgdOojowCGiV0D8WdgctZEAe+EcFU+KrVds+0ZjvpZurUW2/oKJGltJ6FWY2joZwYXN5VL36GPV6pNVRqRnQ==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0", - "@jest/test-result": "24.5.0", - "@jest/types": "24.5.0", - "@types/stack-utils": "1.0.1", - "chalk": "2.4.1", - "micromatch": "3.1.10", - "slash": "2.0.0", - "stack-utils": "1.0.1" - } - }, - "jest-regex-util": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz", - "integrity": "sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "4.1.0" + "ansi-regex": "^4.1.0" } } } }, "@jest/environment": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.5.0.tgz", - "integrity": "sha512-tzUHR9SHjMXwM8QmfHb/EJNbF0fjbH4ieefJBvtwO8YErLTrecc1ROj0uo2VnIT6SlpEGZnvdCK6VgKYBo8LsA==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.8.0.tgz", + "integrity": "sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw==", "dev": true, "requires": { - "@jest/fake-timers": "24.5.0", - "@jest/transform": "24.5.0", - "@jest/types": "24.5.0", - "@types/node": "10.7.1", - "jest-mock": "24.5.0" + "@jest/fake-timers": "^24.8.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "jest-mock": "^24.8.0" } }, "@jest/fake-timers": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.5.0.tgz", - "integrity": "sha512-i59KVt3QBz9d+4Qr4QxsKgsIg+NjfuCjSOWj3RQhjF5JNy+eVJDhANQ4WzulzNCHd72srMAykwtRn5NYDGVraw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.8.0.tgz", + "integrity": "sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw==", "dev": true, "requires": { - "@jest/types": "24.5.0", - "@types/node": "10.7.1", - "jest-message-util": "24.5.0", - "jest-mock": "24.5.0" - }, - "dependencies": { - "jest-message-util": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.5.0.tgz", - "integrity": "sha512-6ZYgdOojowCGiV0D8WdgctZEAe+EcFU+KrVds+0ZjvpZurUW2/oKJGltJ6FWY2joZwYXN5VL36GPV6pNVRqRnQ==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0", - "@jest/test-result": "24.5.0", - "@jest/types": "24.5.0", - "@types/stack-utils": "1.0.1", - "chalk": "2.4.1", - "micromatch": "3.1.10", - "slash": "2.0.0", - "stack-utils": "1.0.1" - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } + "@jest/types": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-mock": "^24.8.0" } }, "@jest/reporters": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.5.0.tgz", - "integrity": "sha512-vfpceiaKtGgnuC3ss5czWOihKOUSyjJA4M4udm6nH8xgqsuQYcyDCi4nMMcBKsHXWgz9/V5G7iisnZGfOh1w6Q==", - "dev": true, - "requires": { - "@jest/environment": "24.5.0", - "@jest/test-result": "24.5.0", - "@jest/transform": "24.5.0", - "@jest/types": "24.5.0", - "chalk": "2.4.1", - "exit": "0.1.2", - "glob": "7.1.3", - "istanbul-api": "2.1.1", - "istanbul-lib-coverage": "2.0.3", - "istanbul-lib-instrument": "3.1.0", - "istanbul-lib-source-maps": "3.0.2", - "jest-haste-map": "24.5.0", - "jest-resolve": "24.5.0", - "jest-runtime": "24.5.0", - "jest-util": "24.5.0", - "jest-worker": "24.4.0", - "node-notifier": "5.4.0", - "slash": "2.0.0", - "source-map": "0.6.1", - "string-length": "2.0.0" + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.8.0.tgz", + "integrity": "sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw==", + "dev": true, + "requires": { + "@jest/environment": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.1.1", + "jest-haste-map": "^24.8.0", + "jest-resolve": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-util": "^24.8.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.2.1", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" }, "dependencies": { - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -420,21 +368,15 @@ "integrity": "sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag==", "dev": true, "requires": { - "callsites": "3.0.0", - "graceful-fs": "4.1.15", - "source-map": "0.6.1" + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" }, "dependencies": { "callsites": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", - "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", - "dev": true - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "source-map": { @@ -446,57 +388,51 @@ } }, "@jest/test-result": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.5.0.tgz", - "integrity": "sha512-u66j2vBfa8Bli1+o3rCaVnVYa9O8CAFZeqiqLVhnarXtreSXG33YQ6vNYBogT7+nYiFNOohTU21BKiHlgmxD5A==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.8.0.tgz", + "integrity": "sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/types": "^24.8.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz", + "integrity": "sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg==", "dev": true, "requires": { - "@jest/console": "24.3.0", - "@jest/types": "24.5.0", - "@types/istanbul-lib-coverage": "1.1.0" + "@jest/test-result": "^24.8.0", + "jest-haste-map": "^24.8.0", + "jest-runner": "^24.8.0", + "jest-runtime": "^24.8.0" } }, "@jest/transform": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.5.0.tgz", - "integrity": "sha512-XSsDz1gdR/QMmB8UCKlweAReQsZrD/DK7FuDlNo/pE8EcKMrfi2kqLRk8h8Gy/PDzgqJj64jNEzOce9pR8oj1w==", - "dev": true, - "requires": { - "@babel/core": "7.4.0", - "@jest/types": "24.5.0", - "babel-plugin-istanbul": "5.1.1", - "chalk": "2.4.1", - "convert-source-map": "1.6.0", - "fast-json-stable-stringify": "2.0.0", - "graceful-fs": "4.1.15", - "jest-haste-map": "24.5.0", - "jest-regex-util": "24.3.0", - "jest-util": "24.5.0", - "micromatch": "3.1.10", - "realpath-native": "1.1.0", - "slash": "2.0.0", - "source-map": "0.6.1", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.8.0.tgz", + "integrity": "sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.8.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.8.0", + "jest-regex-util": "^24.3.0", + "jest-util": "^24.8.0", + "micromatch": "^3.1.10", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", "write-file-atomic": "2.4.1" }, "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - }, - "jest-regex-util": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz", - "integrity": "sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -506,13 +442,14 @@ } }, "@jest/types": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.5.0.tgz", - "integrity": "sha512-kN7RFzNMf2R8UDadPOl6ReyI+MT8xfqRuAnuVL+i4gwjv/zubdDK+EDeLHYwq1j0CSSR2W/MmgaRlMZJzXdmVA==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.8.0.tgz", + "integrity": "sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "1.1.0", - "@types/yargs": "12.0.10" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^12.0.9" } }, "@mrmlnc/readdir-enhanced": { @@ -521,8 +458,8 @@ "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", "dev": true, "requires": { - "call-me-maybe": "1.0.1", - "glob-to-regexp": "0.3.0" + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" } }, "@nodelib/fs.stat": { @@ -532,46 +469,91 @@ "dev": true }, "@octokit/endpoint": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-3.1.3.tgz", - "integrity": "sha512-vAWzeoj9Lzpl3V3YkWKhGzmDUoMfKpyxJhpq74/ohMvmLXDoEuAGnApy/7TRi3OmnjyX2Lr+e9UGGAD0919ohA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.1.1.tgz", + "integrity": "sha512-kCv3ZyqFTWGYmvuU0TETzC4jPGzyLCJrjXp65kRe9DHyQULZak+dpwmEbT7M2rpdr/O2im8ivrPGT6J+2WsKNg==", "dev": true, "requires": { "deepmerge": "3.2.0", - "is-plain-object": "2.0.4", - "universal-user-agent": "2.0.3", - "url-template": "2.0.8" + "is-plain-object": "^3.0.0", + "universal-user-agent": "^2.0.1", + "url-template": "^2.0.8" + }, + "dependencies": { + "is-plain-object": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", + "dev": true, + "requires": { + "isobject": "^4.0.0" + } + }, + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true + } } }, "@octokit/request": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-2.4.1.tgz", - "integrity": "sha512-nN8W24ZXEpJQJoVgMsGZeK9FOzxkc39Xn9ykseUpPpPMNEDFSvqfkCeqqKrjUiXRm72ubGLWG1SOz0aJPcgGww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-3.0.2.tgz", + "integrity": "sha512-lBH2hf2Yuh9XlmP3MSpn3jL9DyCGG+cuPXDRQiJMK42BwW6xFhwWmG1k6xWykcLM4GwZG/5fuwcqnQXYG0ZTSg==", "dev": true, "requires": { - "@octokit/endpoint": "3.1.3", - "deprecation": "1.0.1", - "is-plain-object": "2.0.4", - "node-fetch": "2.3.0", - "once": "1.4.0", - "universal-user-agent": "2.0.3" + "@octokit/endpoint": "^5.1.0", + "deprecation": "^1.0.1", + "is-plain-object": "^3.0.0", + "node-fetch": "^2.3.0", + "once": "^1.4.0", + "universal-user-agent": "^2.0.1" + }, + "dependencies": { + "is-plain-object": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", + "dev": true, + "requires": { + "isobject": "^4.0.0" + } + }, + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true + } } }, "@octokit/rest": { - "version": "16.16.5", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.16.5.tgz", - "integrity": "sha512-R7SD1DUUJVwNuiJWYiIYOm20Q/MFObN48o4BLnfhkzn4ArENWe4Vl5YOvVRZIC0vHGoYCgRtKhzBA6/WOjE/ig==", - "dev": true, + "version": "16.25.3", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.25.3.tgz", + "integrity": "sha512-/6/Isn9pNoKUQwuWUaskxMC6kFxtXTHhzsgYbyirEQ3UvcLciHvPgtRTbuV3bbVf0x4+4WEfKaI9UzxmPQ3W3A==", + "dev": true, + "requires": { + "@octokit/request": "3.0.2", + "atob-lite": "^2.0.0", + "before-after-hook": "^1.4.0", + "btoa-lite": "^1.0.0", + "deprecation": "^1.0.1", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lodash.uniq": "^4.5.0", + "octokit-pagination-methods": "^1.1.0", + "once": "^1.4.0", + "universal-user-agent": "^2.0.0", + "url-template": "^2.0.8" + } + }, + "@samverschueren/stream-to-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", + "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", "requires": { - "@octokit/request": "2.4.1", - "before-after-hook": "1.4.0", - "btoa-lite": "1.0.0", - "lodash.get": "4.4.2", - "lodash.set": "4.3.2", - "lodash.uniq": "4.5.0", - "octokit-pagination-methods": "1.1.0", - "universal-user-agent": "2.0.3", - "url-template": "2.0.8" + "any-observable": "^0.3.0" } }, "@semantic-release/changelog": { @@ -580,10 +562,10 @@ "integrity": "sha512-pDUaBNAuPAqQ+ArHwvR160RG2LbfyIVz9EJXgxH0V547rlx/hCs0Sp7L4Rtzi5Z+d6CHcv9g2ynxplE1xAzp2g==", "dev": true, "requires": { - "@semantic-release/error": "2.2.0", - "aggregate-error": "2.2.0", - "fs-extra": "7.0.0", - "lodash": "4.17.11" + "@semantic-release/error": "^2.1.0", + "aggregate-error": "^2.0.0", + "fs-extra": "^7.0.0", + "lodash": "^4.17.4" } }, "@semantic-release/commit-analyzer": { @@ -592,12 +574,23 @@ "integrity": "sha512-2lb+t6muGenI86mYGpZYOgITx9L3oZYF697tJoqXeQEk0uw0fm+OkkOuDTBA3Oax9ftoNIrCKv9bwgYvxrbM6w==", "dev": true, "requires": { - "conventional-changelog-angular": "5.0.3", - "conventional-commits-filter": "2.0.1", - "conventional-commits-parser": "3.0.1", - "debug": "4.1.0", - "import-from": "2.1.0", - "lodash": "4.17.11" + "conventional-changelog-angular": "^5.0.0", + "conventional-commits-filter": "^2.0.0", + "conventional-commits-parser": "^3.0.0", + "debug": "^4.0.0", + "import-from": "^2.1.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } } }, "@semantic-release/error": { @@ -612,16 +605,49 @@ "integrity": "sha512-sA+XoPU6GrV+A4YswO0b5JWL1KbzmyyaqUK6Y2poDkIVPlj+oQdi/stpKz/bKF5z9ChMGP87OVPMeUyXGaNFtw==", "dev": true, "requires": { - "@semantic-release/error": "2.2.0", - "aggregate-error": "2.2.0", - "debug": "4.1.0", - "dir-glob": "2.0.0", - "execa": "1.0.0", - "fs-extra": "7.0.0", - "globby": "9.1.0", - "lodash": "4.17.11", - "micromatch": "3.1.10", - "p-reduce": "1.0.0" + "@semantic-release/error": "^2.1.0", + "aggregate-error": "^2.0.0", + "debug": "^4.0.0", + "dir-glob": "^2.0.0", + "execa": "^1.0.0", + "fs-extra": "^7.0.0", + "globby": "^9.0.0", + "lodash": "^4.17.4", + "micromatch": "^3.1.4", + "p-reduce": "^1.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } } }, "@semantic-release/github": { @@ -630,133 +656,87 @@ "integrity": "sha512-z/UwIxKb+EMiJDIy/57MBzJ80ar5H9GJQRyML/ILQ8dlrPwXs7cTyTvC7AesrF7t1mJZtg3ht9Qf9RdtR/LGzw==", "dev": true, "requires": { - "@octokit/rest": "16.16.5", - "@semantic-release/error": "2.2.0", - "aggregate-error": "2.2.0", - "bottleneck": "2.17.1", - "debug": "4.1.0", - "dir-glob": "2.0.0", - "fs-extra": "7.0.0", - "globby": "9.1.0", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "issue-parser": "3.0.1", - "lodash": "4.17.11", - "mime": "2.4.0", - "p-filter": "1.0.0", - "p-retry": "3.0.1", - "parse-github-url": "1.0.2", - "url-join": "4.0.0" + "@octokit/rest": "^16.13.1", + "@semantic-release/error": "^2.2.0", + "aggregate-error": "^2.0.0", + "bottleneck": "^2.0.1", + "debug": "^4.0.0", + "dir-glob": "^2.0.0", + "fs-extra": "^7.0.0", + "globby": "^9.0.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "issue-parser": "^3.0.0", + "lodash": "^4.17.4", + "mime": "^2.0.3", + "p-filter": "^1.0.0", + "p-retry": "^3.0.0", + "parse-github-url": "^1.0.1", + "url-join": "^4.0.0" }, "dependencies": { - "aggregate-error": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-2.2.0.tgz", - "integrity": "sha512-E5n+IZkhh22/pFdUvHUU/o9z752lc+7tgHt+FXS/g6BjlbE9249dGmuS/SxIWMPhTljZJkFN+7OXE0+O5+WT8w==", - "dev": true, - "requires": { - "clean-stack": "2.0.0", - "indent-string": "3.2.0" - } - }, - "clean-stack": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.0.0.tgz", - "integrity": "sha512-VEoL9Qh7I8s8iHnV53DaeWSt8NJ0g3khMfK6NiCPB7H657juhro+cSw2O88uo3bo0c0X5usamtXk0/Of0wXa5A==", - "dev": true - }, - "fast-glob": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz", - "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "@mrmlnc/readdir-enhanced": "2.2.1", - "@nodelib/fs.stat": "1.1.3", - "glob-parent": "3.1.0", - "is-glob": "4.0.0", - "merge2": "1.2.3", - "micromatch": "3.1.10" + "ms": "^2.1.1" } }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" } }, - "globby": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.1.0.tgz", - "integrity": "sha512-VtYjhHr7ncls724Of5W6Kaahz0ag7dB4G62/2HsN+xEKG6SrPzM1AJMerGxQTwJGnN9reeyxdvXbuZYpfssCvg==", - "dev": true, - "requires": { - "@types/glob": "7.1.1", - "array-union": "1.0.2", - "dir-glob": "2.2.2", - "fast-glob": "2.2.6", - "glob": "7.1.3", - "ignore": "4.0.6", - "pify": "4.0.1", - "slash": "2.0.0" - }, - "dependencies": { - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "3.0.0" - } - } - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true } } }, "@semantic-release/npm": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-5.1.4.tgz", - "integrity": "sha512-YRl8VTVwnRTl/sVRvTXs1ncYcuvuGrqPEXYy+lUK1YRLq25hkrhIdv3Ju0u1zGLqVCA8qRlF3NzWl7pULJXVog==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-5.1.7.tgz", + "integrity": "sha512-4THiFGp9APX1a+EJJsOYurJCR8TrRUgNCU9u46AkZekWfvtyzacfIBKCrmEljpYG8qDDnHLZwHSqyW4ID4iteA==", "dev": true, "requires": { - "@semantic-release/error": "2.2.0", - "aggregate-error": "2.2.0", - "execa": "1.0.0", - "fs-extra": "7.0.0", - "lodash": "4.17.11", - "nerf-dart": "1.0.0", - "normalize-url": "4.2.0", - "npm": "6.5.0", - "rc": "1.2.8", - "read-pkg": "4.0.1", - "registry-auth-token": "3.4.0" + "@semantic-release/error": "^2.2.0", + "aggregate-error": "^3.0.0", + "execa": "^1.0.0", + "fs-extra": "^7.0.0", + "lodash": "^4.17.4", + "nerf-dart": "^1.0.0", + "normalize-url": "^4.0.0", + "npm": "^6.8.0", + "rc": "^1.2.8", + "read-pkg": "^5.0.0", + "registry-auth-token": "^3.3.1" + }, + "dependencies": { + "aggregate-error": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.0.tgz", + "integrity": "sha512-yKD9kEoJIR+2IFqhMwayIBgheLYbB3PS2OBhWae1L/ODTd/JF/30cW0bc9TqzRL3k4U41Dieu3BF4I29p8xesA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^3.2.0" + } + } } }, "@semantic-release/release-notes-generator": { @@ -765,39 +745,39 @@ "integrity": "sha512-pWPouZujddgb6t61t9iA9G3yIfp3TeQ7bPbV1ixYSeP6L7gI1+Du82fY/OHfEwyifpymLUQW0XnIKgKct5IMMw==", "dev": true, "requires": { - "conventional-changelog-angular": "5.0.3", - "conventional-changelog-writer": "4.0.3", - "conventional-commits-filter": "2.0.1", - "conventional-commits-parser": "3.0.1", - "debug": "4.1.0", - "get-stream": "4.1.0", - "import-from": "2.1.0", - "into-stream": "4.0.0", - "lodash": "4.17.11" + "conventional-changelog-angular": "^5.0.0", + "conventional-changelog-writer": "^4.0.0", + "conventional-commits-filter": "^2.0.0", + "conventional-commits-parser": "^3.0.0", + "debug": "^4.0.0", + "get-stream": "^4.0.0", + "import-from": "^2.1.0", + "into-stream": "^4.0.0", + "lodash": "^4.17.4" }, "dependencies": { - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "pump": "3.0.0" + "ms": "^2.1.1" } } } }, "@types/babel__core": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.0.tgz", - "integrity": "sha512-wJTeJRt7BToFx3USrCDs2BhEi4ijBInTQjOIukj6a/5tEkwpFMVZ+1ppgmE+Q/FQyc5P/VWUbx7I9NELrKruHA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.1.tgz", + "integrity": "sha512-+hjBtgcFPYyCTo0A15+nxrCVJL7aC6Acg87TXd5OW3QhHswdrOLoles+ldL2Uk8q++7yIfl4tURtztccdeeyOw==", "dev": true, "requires": { - "@babel/parser": "7.4.2", - "@babel/types": "7.4.0", - "@types/babel__generator": "7.0.2", - "@types/babel__template": "7.0.2", - "@types/babel__traverse": "7.0.6" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, "@types/babel__generator": { @@ -806,7 +786,7 @@ "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==", "dev": true, "requires": { - "@babel/types": "7.4.0" + "@babel/types": "^7.0.0" } }, "@types/babel__template": { @@ -815,8 +795,8 @@ "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", "dev": true, "requires": { - "@babel/parser": "7.4.2", - "@babel/types": "7.4.0" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, "@types/babel__traverse": { @@ -825,19 +805,13 @@ "integrity": "sha512-XYVgHF2sQ0YblLRMLNPB3CkFMewzFmlDsH/TneZFHUXDlABQgh88uOxuez7ZcXxayLFrqLwtDH1t+FmlFwNZxw==", "dev": true, "requires": { - "@babel/types": "7.4.0" + "@babel/types": "^7.3.0" } }, - "@types/bluebird": { - "version": "3.5.23", - "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.23.tgz", - "integrity": "sha512-xlehmc6RT+wMEhy9ZqeqmozVmuFzTfsaV2NlfFFWhigy7n6sjMbUUB+SZBWK78lZgWHA4DBAdQvQxUvcB8N1tw==", - "dev": true - }, - "@types/caseless": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.1.tgz", - "integrity": "sha512-FhlMa34NHp9K5MY1Uz8yb+ZvuX0pnvn3jScRSNAb75KHGB8d3rEU6hqMs3Z2vjuytcMfRg6c5CHMc3wtYyD2/A==", + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, "@types/events": { @@ -852,7 +826,7 @@ "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", "dev": true, "requires": { - "@types/node": "10.7.1" + "@types/node": "*" } }, "@types/glob": { @@ -861,9 +835,9 @@ "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", "dev": true, "requires": { - "@types/events": "3.0.0", - "@types/minimatch": "3.0.3", - "@types/node": "10.7.1" + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" } }, "@types/humps": { @@ -873,18 +847,37 @@ "dev": true }, "@types/istanbul-lib-coverage": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.0.tgz", - "integrity": "sha512-ohkhb9LehJy+PA40rDtGAji61NCgdtKLAlFoYp4cnuuQEswwdK3vz9SOIkkyc3wrk8dzjphQApNs56yyXLStaQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", "dev": true }, + "@types/istanbul-lib-report": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, "@types/jest": { - "version": "24.0.11", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.11.tgz", - "integrity": "sha512-2kLuPC5FDnWIDvaJBzsGTBQaBbnDweznicvK7UGYzlIJP4RJR2a4A/ByLUXEyEgag6jz8eHdlWExGDtH3EYUXQ==", + "version": "24.0.13", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.13.tgz", + "integrity": "sha512-3m6RPnO35r7Dg+uMLj1+xfZaOgIHHHut61djNjzwExXN4/Pm9has9C6I1KMYSfz7mahDhWUOVg4HW/nZdv5Pww==", "dev": true, "requires": { - "@types/jest-diff": "20.0.1" + "@types/jest-diff": "*" } }, "@types/jest-diff": { @@ -900,9 +893,9 @@ "dev": true }, "@types/node": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.7.1.tgz", - "integrity": "sha512-EGoI4ylB/lPOaqXqtzAyL8HcgOuCtH2hkEaLmkueOYufsTFWBn4VCvlCDC2HW8Q+9iF+QVC3sxjDKQYjHQeZ9w==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.0.tgz", + "integrity": "sha512-Jrb/x3HT4PTJp6a4avhmJCDEVrPdqLfl3e8GGMbpkGGdwAV5UGlIs4vVEfsHHfylZVOKZWpOqmqFH8CbfOZ6kg==", "dev": true }, "@types/normalize-package-data": { @@ -911,38 +904,13 @@ "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", "dev": true }, - "@types/parse-link-header": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-link-header/-/parse-link-header-1.0.0.tgz", - "integrity": "sha512-fCA3btjE7QFeRLfcD0Sjg+6/CnmC66HpMBoRfRzd2raTaWMJV21CCZ0LO8MOqf8onl5n0EPfjq4zDhbyX8SVwA==", - "dev": true - }, - "@types/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-47kAAs3yV/hROraCTQYDMh4p/6zI9+gtssjD0kq9OWsGdLcBge59rl49FnCuJ+iWxEKiqFz6KXzeGH5DRVjNJA==", - "dev": true - }, - "@types/request": { - "version": "2.47.1", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.47.1.tgz", - "integrity": "sha512-TV3XLvDjQbIeVxJ1Z3oCTDk/KuYwwcNKVwz2YaT0F5u86Prgc4syDAp6P96rkTQQ4bIdh+VswQIC9zS6NjY7/g==", - "dev": true, - "requires": { - "@types/caseless": "0.12.1", - "@types/form-data": "2.2.1", - "@types/node": "10.7.1", - "@types/tough-cookie": "2.3.3" - } - }, - "@types/request-promise": { - "version": "4.1.42", - "resolved": "https://registry.npmjs.org/@types/request-promise/-/request-promise-4.1.42.tgz", - "integrity": "sha512-b8li55sEZ00BXZstZ3d8WOi48dnapTqB1VufEG9Qox0nVI2JVnTVT1Mw4JbBa1j+1sGVX/qJ0R4WDv4v2GjT0w==", + "@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", "dev": true, "requires": { - "@types/bluebird": "3.5.23", - "@types/request": "2.47.1" + "@types/node": "*" } }, "@types/stack-utils": { @@ -951,28 +919,10 @@ "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", "dev": true }, - "@types/tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha512-MDQLxNFRLasqS4UlkWMSACMKeSm1x4Q3TxzUC7KQUsh6RK1ZrQ0VEyE3yzXcBu+K8ejVj4wuX32eUG02yNp+YQ==", - "dev": true - }, - "@types/url-join": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/url-join/-/url-join-4.0.0.tgz", - "integrity": "sha512-awrJu8yML4E/xTwr2EMatC+HBnHGoDxc2+ImA9QyeUELI1S7dOCIZcyjki1rkwoA8P2D2NVgLAJLjnclkdLtAw==", - "dev": true - }, - "@types/util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-JK7Ecs9ETHfYSoG5ZILe30Ar9fmMT7vZTirfZQQ9OAZDB8TfPVV6aQkYPtfx2MFfB+yrSY4jCfrvMdemv/9VHw==", - "dev": true - }, "@types/yargs": { - "version": "12.0.10", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.10.tgz", - "integrity": "sha512-WsVzTPshvCSbHThUduGGxbmnwcpkgSctHGHTqzWyFg4lYAuV5qXlyFPOsP3OWqCINfmg/8VXP+zJaa4OxEsBQQ==", + "version": "12.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.12.tgz", + "integrity": "sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==", "dev": true }, "JSONStream": { @@ -981,8 +931,8 @@ "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" } }, "abab": { @@ -991,20 +941,45 @@ "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", "dev": true }, - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", - "dev": true + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } }, - "acorn-globals": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", - "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", + "abstract-leveldown": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-0.12.4.tgz", + "integrity": "sha1-KeGOYy5g5OIh1YECR4UqY9ey5BA=", "dev": true, "requires": { - "acorn": "6.1.1", - "acorn-walk": "6.1.1" + "xtend": "~3.0.0" + }, + "dependencies": { + "xtend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", + "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=", + "dev": true + } + } + }, + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz", + "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" }, "dependencies": { "acorn": { @@ -1027,7 +1002,7 @@ "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", "dev": true, "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" } }, "aggregate-error": { @@ -1036,40 +1011,38 @@ "integrity": "sha512-E5n+IZkhh22/pFdUvHUU/o9z752lc+7tgHt+FXS/g6BjlbE9249dGmuS/SxIWMPhTljZJkFN+7OXE0+O5+WT8w==", "dev": true, "requires": { - "clean-stack": "2.0.0", - "indent-string": "3.2.0" + "clean-stack": "^2.0.0", + "indent-string": "^3.0.0" } }, "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { - "color-convert": "1.9.2" + "color-convert": "^1.9.0" } }, "ansicolors": { @@ -1078,32 +1051,27 @@ "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", "dev": true }, + "any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==" + }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "micromatch": "3.1.10", - "normalize-path": "2.1.1" - } - }, - "append-transform": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", - "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", - "dev": true, - "requires": { - "default-require-extensions": "2.0.0" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "argv": { @@ -1121,20 +1089,17 @@ "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" }, "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" }, "array-equal": { "version": "1.0.0", @@ -1158,47 +1123,55 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, "requires": { - "safer-buffer": "2.1.2" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, "astral-regex": { "version": "1.0.0", @@ -1206,15 +1179,6 @@ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true }, - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "dev": true, - "requires": { - "lodash": "4.17.11" - } - }, "async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", @@ -1229,187 +1193,122 @@ "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "atob-lite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", + "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=", "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "babel-jest": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.8.0.tgz", + "integrity": "sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw==", "dev": true, "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-jest": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.5.0.tgz", - "integrity": "sha512-0fKCXyRwxFTJL0UXDJiT2xYxO9Lu2vBd9n+cC+eDjESzcVG3s2DRGAxbzJX21fceB1WYoBjAh8pQ83dKcl003g==", - "dev": true, - "requires": { - "@jest/transform": "24.5.0", - "@jest/types": "24.5.0", - "@types/babel__core": "7.1.0", - "babel-plugin-istanbul": "5.1.1", - "babel-preset-jest": "24.3.0", - "chalk": "2.4.2", - "slash": "2.0.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.6.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" } }, "babel-plugin-istanbul": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.1.tgz", - "integrity": "sha512-RNNVv2lsHAXJQsEJ5jonQwrJVWK8AcZpG1oxhnjCUaAjL7xahYLANhPUZbzEQHjKy1NMYUwn+0NPKQc8iSY4xQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.4.tgz", + "integrity": "sha512-dySz4VJMH+dpndj0wjJ8JPs/7i1TdSPb1nRrn56/92pKOF9VKC1FMFJmMXjzlGGusnCAqujP6PBCiKq0sVA+YQ==", "dev": true, "requires": { - "find-up": "3.0.0", - "istanbul-lib-instrument": "3.1.0", - "test-exclude": "5.1.0" + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" } }, "babel-plugin-jest-hoist": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.3.0.tgz", - "integrity": "sha512-nWh4N1mVH55Tzhx2isvUN5ebM5CDUvIpXPZYMRazQughie/EqGnbR+czzoQlhUmJG9pPJmYDRhvocotb2THl1w==", + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz", + "integrity": "sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w==", "dev": true, "requires": { - "@types/babel__traverse": "7.0.6" + "@types/babel__traverse": "^7.0.6" } }, "babel-preset-jest": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.3.0.tgz", - "integrity": "sha512-VGTV2QYBa/Kn3WCOKdfS31j9qomaXSgJqi65B6o05/1GsJyj9LVhSljM9ro4S+IBGj/ENhNBuH9bpqzztKAQSw==", + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz", + "integrity": "sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw==", "dev": true, "requires": { - "@babel/plugin-syntax-object-rest-spread": "7.2.0", - "babel-plugin-jest-hoist": "24.3.0" + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.6.0" } }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "base": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } @@ -1418,9 +1317,9 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "optional": true, + "dev": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "before-after-hook": { @@ -1429,24 +1328,59 @@ "integrity": "sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg==", "dev": true }, - "bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==" + "bl": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-0.8.2.tgz", + "integrity": "sha1-yba8oI0bwuoA/Ir7Txpf0eHGbk4=", + "dev": true, + "requires": { + "readable-stream": "~1.0.26" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true }, "bottleneck": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.17.1.tgz", - "integrity": "sha512-ARJKJRNq6+W7BBYZnkqA1F4+HDclht7QyRJl2haAVtD7xBTG8Prpy6huO+canGLUxZaRrek8U/0NjTvoXACsaQ==", + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.18.0.tgz", + "integrity": "sha512-U1xiBRaokw4yEguzikOl0VrnZp6uekjpmfrh6rKtr1D+/jFjYCL6J83ZXlGtlBDwVdTmJJ+4Lg5FpB3xmLSiyA==", "dev": true }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -1454,31 +1388,35 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, "browser-process-hrtime": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", @@ -1502,13 +1440,86 @@ } } }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-fs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-fs/-/browserify-fs-1.0.0.tgz", + "integrity": "sha1-8HWqinKdTRcW0GZiDjhvzBMRqW8=", + "dev": true, + "requires": { + "level-filesystem": "^1.0.1", + "level-js": "^2.1.3", + "levelup": "^0.18.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, "bs-logger": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, "requires": { - "fast-json-stable-stringify": "2.0.0" + "fast-json-stable-stringify": "2.x" } }, "bser": { @@ -1517,7 +1528,7 @@ "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", "dev": true, "requires": { - "node-int64": "0.4.0" + "node-int64": "^0.4.0" } }, "btoa-lite": { @@ -1526,33 +1537,44 @@ "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", "dev": true }, + "buffer-es6": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/buffer-es6/-/buffer-es6-4.9.3.tgz", + "integrity": "sha1-8mNHuC33b9N+GLy1KIxJcM/VxAQ=", + "dev": true + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", + "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" } }, "call-me-maybe": { @@ -1565,7 +1587,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, "requires": { "callsites": "^2.0.0" } @@ -1574,7 +1595,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, "requires": { "caller-callsite": "^2.0.0" } @@ -1582,13 +1602,12 @@ "callsites": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" }, "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "camelcase-keys": { @@ -1597,9 +1616,17 @@ "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", "dev": true, "requires": { - "camelcase": "4.1.0", - "map-obj": "2.0.0", - "quick-lru": "1.1.0" + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } } }, "capture-exit": { @@ -1608,7 +1635,7 @@ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { - "rsvp": "4.8.4" + "rsvp": "^4.8.4" } }, "cardinal": { @@ -1617,24 +1644,24 @@ "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=", "dev": true, "requires": { - "ansicolors": "0.3.2", - "redeyed": "2.1.1" + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" } }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "ci-info": { @@ -1643,35 +1670,51 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } }, "clean-stack": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.0.0.tgz", - "integrity": "sha512-VEoL9Qh7I8s8iHnV53DaeWSt8NJ0g3khMfK6NiCPB7H657juhro+cSw2O88uo3bo0c0X5usamtXk0/Of0wXa5A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.1.0.tgz", + "integrity": "sha512-uQWrpRm+iZZUCAp7ZZJQbd4Za9I3AjR/3YTjmcnAtkauaIm/T5CT6U8zVI6e60T6OANqBFAzuR9/HB3NzuZCRA==", "dev": true }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "^2.0.0" + } + }, "cli-table": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", @@ -1681,113 +1724,208 @@ "colors": "1.0.3" } }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + } + }, "cliui": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "codecov": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.2.0.tgz", - "integrity": "sha512-3NJvNARXxilqnqVfgzDHyVrF4oeVgaYW1c1O6Oi5mn93exE7HTSSFNiYdwojWW6IwrCZABJ8crpNbKoo9aUHQw==", - "dev": true, - "requires": { - "argv": "0.0.2", - "ignore-walk": "3.0.1", - "js-yaml": "3.13.0", - "teeny-request": "3.11.3", - "urlgrey": "0.4.4" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" - } - }, - "color-convert": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", - "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", - "dev": true, - "requires": { - "color-name": "1.1.1" - } - }, - "color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", - "dev": true - }, - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "dev": true - }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "requires": { - "delayed-stream": "1.0.0" - } - }, - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "compare-func": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", - "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + } + } + }, + "clone": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.1.19.tgz", + "integrity": "sha1-YT+2hjmyaklKxTJT4Vsaa9iK2oU=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "codecov": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.5.0.tgz", + "integrity": "sha512-/OsWOfIHaQIr7aeZ4pY0UC1PZT6kimoKFOFYFNb6wxo3iw12nRrh+mNGH72rnXxNsq6SGfesVPizm/6Q3XqcFQ==", "dev": true, "requires": { - "array-ify": "1.0.0", - "dot-prop": "3.0.0" + "argv": "^0.0.2", + "ignore-walk": "^3.0.1", + "js-yaml": "^3.13.1", + "teeny-request": "^3.11.3", + "urlgrey": "^0.4.4" } }, - "compare-versions": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.4.0.tgz", - "integrity": "sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg==", + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", "dev": true }, + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" + }, + "compare-func": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", + "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", + "dev": true, + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^3.0.0" + } + }, "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } }, "conventional-changelog-angular": { "version": "5.0.3", @@ -1795,8 +1933,8 @@ "integrity": "sha512-YD1xzH7r9yXQte/HF9JBuEDfvjxxwDGGwZU1+ndanbY0oFgA+Po1T9JDSpPLdP0pZT6MhCAsdvFKC4TJ4MTJTA==", "dev": true, "requires": { - "compare-func": "1.3.2", - "q": "1.5.1" + "compare-func": "^1.3.1", + "q": "^1.5.1" } }, "conventional-changelog-writer": { @@ -1805,22 +1943,22 @@ "integrity": "sha512-bIlpSiQtQZ1+nDVHEEh798Erj2jhN/wEjyw9sfxY9es6h7pREE5BNJjfv0hXGH/FTrAsEpHUq4xzK99eePpwuA==", "dev": true, "requires": { - "compare-func": "1.3.2", - "conventional-commits-filter": "2.0.1", - "dateformat": "3.0.3", - "handlebars": "4.1.0", - "json-stringify-safe": "5.0.1", - "lodash": "4.17.11", - "meow": "4.0.1", - "semver": "5.5.0", - "split": "1.0.1", - "through2": "2.0.5" + "compare-func": "^1.3.1", + "conventional-commits-filter": "^2.0.1", + "dateformat": "^3.0.0", + "handlebars": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.2.1", + "meow": "^4.0.0", + "semver": "^5.5.0", + "split": "^1.0.0", + "through2": "^2.0.0" } }, "conventional-commit-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-2.2.0.tgz", - "integrity": "sha1-XblXOdbCEqy+e29lahG5QLqmiUY=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-2.1.1.tgz", + "integrity": "sha512-0Ts+fEdmjqYDOQ1yZ+LNgdSPO335XZw9qC10M7CxtLP3nIMGmeMhmkM8Taffa4+MXN13bRPlp0CtH+QfOzKTzw==", "dev": true }, "conventional-commits-filter": { @@ -1829,8 +1967,8 @@ "integrity": "sha512-92OU8pz/977udhBjgPEbg3sbYzIxMDFTlQT97w7KdhR9igNqdJvy8smmedAAgn4tPiqseFloKkrVfbXCVd+E7A==", "dev": true, "requires": { - "is-subset": "0.1.1", - "modify-values": "1.0.1" + "is-subset": "^0.1.1", + "modify-values": "^1.0.0" } }, "conventional-commits-parser": { @@ -1839,13 +1977,13 @@ "integrity": "sha512-P6U5UOvDeidUJ8ebHVDIoXzI7gMlQ1OF/id6oUvp8cnZvOXMt1n8nYl74Ey9YMn0uVQtxmCtjPQawpsssBWtGg==", "dev": true, "requires": { - "JSONStream": "1.3.5", - "is-text-path": "1.0.1", - "lodash": "4.17.11", - "meow": "4.0.1", - "split2": "2.2.0", - "through2": "2.0.5", - "trim-off-newlines": "1.0.1" + "JSONStream": "^1.0.4", + "is-text-path": "^1.0.0", + "lodash": "^4.2.1", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^2.0.0", + "trim-off-newlines": "^1.0.0" } }, "convert-source-map": { @@ -1854,42 +1992,97 @@ "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.1" } }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cosmiconfig": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.6.tgz", - "integrity": "sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.0.tgz", + "integrity": "sha512-nxt+Nfc3JAqf4WIWd0jXLjTJZmsPLrA9DDc4nRw2KFJQJK7DNooqSXrNI7tzLG50CF8axczly5UV929tBmh/7g==", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.0", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { - "is-directory": "0.3.1", - "js-yaml": "3.13.0", - "parse-json": "4.0.0" + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "nice-try": "1.0.5", - "path-key": "2.0.1", - "semver": "5.5.0", - "shebang-command": "1.2.0", - "which": "1.3.1" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" } }, "cssom": { @@ -1899,12 +2092,12 @@ "dev": true }, "cssstyle": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.1.tgz", - "integrity": "sha512-7DYm8qe+gPx/h77QlCyFmX80+fGaE/6A/Ekl0zaszYOubvySO2saYFdQ78P29D0UsULxFKCetDGNaNRUdSF+2A==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", + "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", "dev": true, "requires": { - "cssom": "0.3.6" + "cssom": "0.3.x" } }, "currently-unhandled": { @@ -1913,7 +2106,7 @@ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "array-find-index": "1.0.2" + "array-find-index": "^1.0.1" } }, "cz-conventional-changelog": { @@ -1922,19 +2115,20 @@ "integrity": "sha1-L0vHOQ4yROTfKT5ro1Hkx0Cnx2Q=", "dev": true, "requires": { - "conventional-commit-types": "2.2.0", - "lodash.map": "4.6.0", - "longest": "1.0.1", - "right-pad": "1.0.1", - "word-wrap": "1.2.3" + "conventional-commit-types": "^2.0.0", + "lodash.map": "^4.5.1", + "longest": "^1.0.1", + "right-pad": "^1.0.1", + "word-wrap": "^1.0.3" } }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "data-urls": { @@ -1943,24 +2137,16 @@ "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", "dev": true, "requires": { - "abab": "2.0.0", - "whatwg-mimetype": "2.3.0", - "whatwg-url": "7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "dev": true, - "requires": { - "lodash.sortby": "4.7.0", - "tr46": "1.0.1", - "webidl-conversions": "4.0.2" - } - } + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" } }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==" + }, "dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -1968,12 +2154,11 @@ "dev": true }, "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", - "dev": true, + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "ms": "2.1.1" + "ms": "^2.1.1" } }, "decamelize": { @@ -1988,8 +2173,8 @@ "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", "dev": true, "requires": { - "decamelize": "1.2.0", - "map-obj": "1.0.1" + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" }, "dependencies": { "map-obj": { @@ -2003,8 +2188,12 @@ "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" }, "deep-extend": { "version": "0.6.0", @@ -2024,13 +2213,13 @@ "integrity": "sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow==", "dev": true }, - "default-require-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", - "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "deferred-leveldown": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-0.2.0.tgz", + "integrity": "sha1-LO8fER4cV4cNi7uK8mUOWHzS9bQ=", "dev": true, "requires": { - "strip-bom": "3.0.0" + "abstract-leveldown": "~0.12.1" } }, "define-properties": { @@ -2039,50 +2228,59 @@ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, "requires": { - "object-keys": "1.0.12" + "object-keys": "^1.0.12" } }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -2094,6 +2292,16 @@ "integrity": "sha512-ccVHpE72+tcIKaGMql33x5MAjKQIZrk+3x2GbJ7TeraUCZWHoT+KSZpoC+JQFsUBlSTXUrBaGiF0j6zVTepPLg==", "dev": true }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "detect-newline": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", @@ -2112,14 +2320,24 @@ "integrity": "sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw==", "dev": true }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, "dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", - "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", "dev": true, "requires": { - "arrify": "1.0.1", - "path-type": "3.0.0" + "path-type": "^3.0.0" } }, "doctrine": { @@ -2128,7 +2346,7 @@ "integrity": "sha1-fLhgNZujvpDgQLJrcpzkv6ZUxSM=", "dev": true, "requires": { - "esutils": "1.1.6", + "esutils": "^1.1.6", "isarray": "0.0.1" }, "dependencies": { @@ -2146,18 +2364,13 @@ } } }, - "dom-walk": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", - "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" - }, "domexception": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", "dev": true, "requires": { - "webidl-conversions": "4.0.2" + "webidl-conversions": "^4.0.2" } }, "dot-prop": { @@ -2166,7 +2379,7 @@ "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", "dev": true, "requires": { - "is-obj": "1.0.1" + "is-obj": "^1.0.0" } }, "duplexer2": { @@ -2175,17 +2388,37 @@ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", "dev": true, "requires": { - "readable-stream": "2.3.6" + "readable-stream": "^2.0.2" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "optional": true, + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=" + }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "dev": true, "requires": { - "jsbn": "0.1.1", - "safer-buffer": "2.1.2" + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" } }, "emoji-regex": { @@ -2198,9 +2431,8 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "env-ci": { @@ -2209,41 +2441,50 @@ "integrity": "sha512-TFjNiDlXrL8/pfHswdvJGEZzJcq3aBPb8Eka83hlGLwuNw9F9BC9S9ETlkfkItLRT9k5JgpGgeP+rL6/3cEbcw==", "dev": true, "requires": { - "execa": "1.0.0", - "java-properties": "0.2.10" + "execa": "^1.0.0", + "java-properties": "^0.2.9" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" } }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "es-abstract": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", - "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", "dev": true, "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.1", - "has": "1.0.3", - "is-callable": "1.1.4", - "is-regex": "1.0.4" + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" } }, "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", "dev": true, "requires": { - "is-callable": "1.1.4", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" } }, "es6-promise": { @@ -2258,14 +2499,13 @@ "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "dev": true, "requires": { - "es6-promise": "4.2.6" + "es6-promise": "^4.0.3" } }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { "version": "1.11.1", @@ -2273,11 +2513,11 @@ "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", "dev": true, "requires": { - "esprima": "3.1.3", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.6.1" + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" }, "dependencies": { "esprima": { @@ -2298,8 +2538,7 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "estraverse": { "version": "4.2.0", @@ -2307,12 +2546,33 @@ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true }, + "estree-walker": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.0.tgz", + "integrity": "sha512-peq1RfVAVzr3PU/jL31RaOjUKLoZJpObQWJJ+LgfcxDUifyLZ1RjPQZTl0pzj2uJ45b7A7XpyppXvxdEqzo4rw==", + "dev": true + }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, "exec-sh": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.2.tgz", @@ -2323,26 +2583,14 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, "requires": { - "cross-spawn": "6.0.5", - "get-stream": "4.1.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - }, - "dependencies": { - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "3.0.0" - } - } + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, "exit": { @@ -2355,22 +2603,20 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -2379,25 +2625,22 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -2407,7 +2650,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "2.2.4" + "fill-range": "^2.1.0" }, "dependencies": { "fill-range": { @@ -2416,11 +2659,11 @@ "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "3.1.1", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "is-number": { @@ -2429,7 +2672,7 @@ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "isobject": { @@ -2447,83 +2690,46 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } }, "expect": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-24.5.0.tgz", - "integrity": "sha512-p2Gmc0CLxOgkyA93ySWmHFYHUPFIHG6XZ06l7WArWAsrqYVaVEkOU5NtT5i68KUyGKbkQgDCkiT65bWmdoL6Bw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.8.0.tgz", + "integrity": "sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA==", "dev": true, "requires": { - "@jest/types": "24.5.0", - "ansi-styles": "3.2.1", - "jest-get-type": "24.3.0", - "jest-matcher-utils": "24.5.0", - "jest-message-util": "24.5.0", - "jest-regex-util": "24.3.0" - }, - "dependencies": { - "jest-get-type": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz", - "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==", - "dev": true - }, - "jest-message-util": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.5.0.tgz", - "integrity": "sha512-6ZYgdOojowCGiV0D8WdgctZEAe+EcFU+KrVds+0ZjvpZurUW2/oKJGltJ6FWY2joZwYXN5VL36GPV6pNVRqRnQ==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0", - "@jest/test-result": "24.5.0", - "@jest/types": "24.5.0", - "@types/stack-utils": "1.0.1", - "chalk": "2.4.1", - "micromatch": "3.1.10", - "slash": "2.0.0", - "stack-utils": "1.0.1" - } - }, - "jest-regex-util": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz", - "integrity": "sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } + "@jest/types": "^24.8.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-regex-util": "^24.3.0" } }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -2532,63 +2738,57 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } @@ -2596,12 +2796,14 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-glob": { "version": "2.2.6", @@ -2609,18 +2811,19 @@ "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==", "dev": true, "requires": { - "@mrmlnc/readdir-enhanced": "2.2.1", - "@nodelib/fs.stat": "1.1.3", - "glob-parent": "3.1.0", - "is-glob": "4.0.0", - "merge2": "1.2.3", - "micromatch": "3.1.10" + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" } }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -2634,16 +2837,16 @@ "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", "dev": true, "requires": { - "bser": "2.0.0" + "bser": "^2.0.0" } }, "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" } }, "filename-regex": { @@ -2652,79 +2855,68 @@ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, - "fileset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", - "dev": true, - "requires": { - "glob": "7.1.3", - "minimatch": "3.0.4" - } - }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } }, + "find-parent-dir": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=" + }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "3.0.0" + "locate-path": "^3.0.0" } }, "find-versions": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.0.0.tgz", - "integrity": "sha512-IUvtItVFNmTtKoB0PRfbkR0zR9XMG5rWNO3qI1S8L0zdv+v2gqzM0pAunloxqbqAfT8w7bg8n/5gHzTXte8H5A==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.1.0.tgz", + "integrity": "sha512-NCTfNiVzeE/xL+roNDffGuRbrWI6atI18lTJ22vKp7rs2OhYzMK3W1dIdO2TUndH/QMcacM4d1uWwgcZcHK69Q==", "dev": true, "requires": { - "array-uniq": "2.0.0", - "semver-regex": "2.0.0" + "array-uniq": "^2.1.0", + "semver-regex": "^2.0.0" }, "dependencies": { "array-uniq": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-2.0.0.tgz", - "integrity": "sha512-O3QZEr+3wDj7otzF7PjNGs6CA3qmYMLvt5xGkjY/V0VxS+ovvqVo/5wKM/OVOAyuX4DTh9H31zE/yKtO66hTkg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-2.1.0.tgz", + "integrity": "sha512-bdHxtev7FN6+MXI1YFW0Q8mQ8dTJc2S8AMfju+ZR77pbg2yAdVyDlwkaUI7Har0LyOMRFPHrJ9lYdyjZZswdlQ==", "dev": true } } }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "requires": { - "is-callable": "1.1.4" - } + "fn-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", + "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=" }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, "for-own": { "version": "0.1.5", @@ -2732,72 +2924,656 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.19" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "requires": { - "map-cache": "0.2.2" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true + } } }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "fwd-stream": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fwd-stream/-/fwd-stream-1.0.4.tgz", + "integrity": "sha1-7Sgcq+1G/uz5Ie4y3ExQs3KsfPo=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "readable-stream": "~1.0.26-4" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } } }, - "fs-extra": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.0.tgz", - "integrity": "sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ==", - "dev": true, + "g-status": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/g-status/-/g-status-2.0.2.tgz", + "integrity": "sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA==", "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.2" + "arrify": "^1.0.1", + "matcher": "^1.0.0", + "simple-git": "^1.85.0" } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, + "get-own-enumerable-property-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz", + "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==" + }, "get-stdin": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", @@ -2805,23 +3581,25 @@ "dev": true }, "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "git-log-parser": { @@ -2830,12 +3608,12 @@ "integrity": "sha1-LmpMGxP8AAKCB7p5WnrDFme5/Uo=", "dev": true, "requires": { - "argv-formatter": "1.0.0", - "spawn-error-forwarder": "1.0.0", - "split2": "1.0.0", - "stream-combiner2": "1.1.1", - "through2": "2.0.5", - "traverse": "0.6.6" + "argv-formatter": "~1.0.0", + "spawn-error-forwarder": "~1.0.0", + "split2": "~1.0.0", + "stream-combiner2": "~1.1.1", + "through2": "~2.0.0", + "traverse": "~0.6.6" }, "dependencies": { "split2": { @@ -2844,23 +3622,22 @@ "integrity": "sha1-UuLiIdiMdfmnP5BVbiY/+WdysxQ=", "dev": true, "requires": { - "through2": "2.0.5" + "through2": "~2.0.0" } } } }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-base": { @@ -2869,8 +3646,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" }, "dependencies": { "glob-parent": { @@ -2879,7 +3656,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "is-extglob": { @@ -2894,7 +3671,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } } } @@ -2905,8 +3682,8 @@ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" }, "dependencies": { "is-glob": { @@ -2915,7 +3692,7 @@ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.0" } } } @@ -2926,64 +3703,35 @@ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", "dev": true }, - "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", - "requires": { - "min-document": "2.19.0", - "process": "0.5.2" - } - }, "globals": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", - "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, "globby": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.1.0.tgz", - "integrity": "sha512-VtYjhHr7ncls724Of5W6Kaahz0ag7dB4G62/2HsN+xEKG6SrPzM1AJMerGxQTwJGnN9reeyxdvXbuZYpfssCvg==", - "dev": true, - "requires": { - "@types/glob": "7.1.1", - "array-union": "1.0.2", - "dir-glob": "2.2.2", - "fast-glob": "2.2.6", - "glob": "7.1.3", - "ignore": "4.0.6", - "pify": "4.0.1", - "slash": "2.0.0" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "dependencies": { - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "3.0.0" - } - }, "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" } } }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "dev": true }, "growly": { @@ -2993,15 +3741,15 @@ "dev": true }, "handlebars": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.0.tgz", - "integrity": "sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", "dev": true, "requires": { - "async": "2.6.1", - "optimist": "0.6.1", - "source-map": "0.6.1", - "uglify-js": "3.4.9" + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" }, "dependencies": { "source-map": { @@ -3015,15 +3763,17 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", - "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^6.5.5", + "har-schema": "^2.0.0" } }, "has": { @@ -3032,60 +3782,97 @@ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "function-bind": "1.1.1" + "function-bind": "^1.1.1" } }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", "dev": true }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, "has-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hasurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hasurl/-/hasurl-1.0.0.tgz", + "integrity": "sha512-43ypUd3DbwyCT01UYpA99AEZxZ4aKtRxWGBHEIbjcOsUghd9YUON0C+JF6isNjaiwC/UF5neaUudy6JS9jZPZQ==" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "hook-std": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-1.2.0.tgz", - "integrity": "sha512-yntre2dbOAjgQ5yoRykyON0D9T96BfshR8IuiL/r3celeHD8I/76w4qo8m3z99houR4Z678jakV3uXrQdSvW/w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", + "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==", "dev": true }, "hosted-git-info": { @@ -3100,7 +3887,7 @@ "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, "requires": { - "whatwg-encoding": "1.0.5" + "whatwg-encoding": "^1.0.1" } }, "http-proxy-agent": { @@ -3109,7 +3896,7 @@ "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", "dev": true, "requires": { - "agent-base": "4.2.1", + "agent-base": "4", "debug": "3.1.0" }, "dependencies": { @@ -3134,10 +3921,11 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.2" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "https-proxy-agent": { @@ -3146,19 +3934,8 @@ "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", "dev": true, "requires": { - "agent-base": "4.2.1", - "debug": "3.2.6" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "2.1.1" - } - } + "agent-base": "^4.1.0", + "debug": "^3.1.0" } }, "humps": { @@ -3167,9 +3944,9 @@ "integrity": "sha1-3QLqYIG9BWjcXQcxhEY5V7qe+ao=" }, "husky": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/husky/-/husky-2.0.0.tgz", - "integrity": "sha512-YvSQ5UQHNfqm+g+P1sFTkPI23nEe0gbKXdv5ZTRStYSVdAYyH1iypFilAMVqXLXnjGtb6lBuR/2Sf5FkwCNY2Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/husky/-/husky-2.3.0.tgz", + "integrity": "sha512-A/ZQSEILoq+mQM3yC3RIBSaw1bYXdkKnyyKVSUiJl+iBjVZc5LQEXdGY1ZjrDxC4IzfRPiJ0IqzEQGCN5TQa/A==", "dev": true, "requires": { "cosmiconfig": "^5.2.0", @@ -3179,60 +3956,15 @@ "is-ci": "^2.0.0", "pkg-dir": "^4.1.0", "please-upgrade-node": "^3.1.1", - "read-pkg": "^5.0.0", + "read-pkg": "^5.1.1", "run-node": "^1.0.0", - "slash": "^2.0.0" + "slash": "^3.0.0" }, "dependencies": { - "cosmiconfig": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.0.tgz", - "integrity": "sha512-nxt+Nfc3JAqf4WIWd0jXLjTJZmsPLrA9DDc4nRw2KFJQJK7DNooqSXrNI7tzLG50CF8axczly5UV929tBmh/7g==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.0", - "parse-json": "^4.0.0" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "pkg-dir": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.1.0.tgz", - "integrity": "sha512-55k9QN4saZ8q518lE6EFgYiu95u3BWkSajCifhdQjvLvmr8IpnRbhI+UGpWJQfa0KzDguHeeWT1ccO1PmkOi3A==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "read-pkg": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.1.0.tgz", - "integrity": "sha512-NjNkqf8hlMuSxh+p8h8x8sCIfEv/MoRs/nYDmSRSAk879F9C94ADq+kHUJ4LTy5Nn0PYSmMYsy1mD4+lcXiBKg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^4.0.0", - "type-fest": "^0.4.1" - } - }, "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true } } @@ -3243,9 +3975,15 @@ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3" } }, + "idb-wrapper": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/idb-wrapper/-/idb-wrapper-1.7.2.tgz", + "integrity": "sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg==", + "dev": true + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -3258,14 +3996,13 @@ "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "dev": true, "requires": { - "minimatch": "3.0.4" + "minimatch": "^3.0.4" } }, "import-fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, "requires": { "caller-path": "^2.0.0", "resolve-from": "^3.0.0" @@ -3277,7 +4014,7 @@ "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", "dev": true, "requires": { - "resolve-from": "3.0.0" + "resolve-from": "^3.0.0" } }, "import-local": { @@ -3286,8 +4023,19 @@ "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", "dev": true, "requires": { - "pkg-dir": "3.0.0", - "resolve-cwd": "2.0.0" + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } } }, "imurmurhash": { @@ -3299,24 +4047,27 @@ "indent-string": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { "version": "1.3.5", @@ -3330,8 +4081,8 @@ "integrity": "sha512-i29KNyE5r0Y/UQzcQ0IbZO1MYJ53Jn0EcFRZPj5FzWKYH17kDFEOwuA+3jroymOI06SW1dEDnly9A1CAreC5dg==", "dev": true, "requires": { - "from2": "2.3.0", - "p-is-promise": "2.0.0" + "from2": "^2.1.1", + "p-is-promise": "^2.0.0" } }, "invariant": { @@ -3340,7 +4091,7 @@ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, "requires": { - "loose-envify": "1.4.0" + "loose-envify": "^1.0.0" } }, "inversify": { @@ -3355,22 +4106,26 @@ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, + "is": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/is/-/is-0.2.7.tgz", + "integrity": "sha1-OzSixI81mXLzUEKEkZOucmS2NWI=", + "dev": true + }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3378,28 +4133,18 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "1.1.1" - } + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-callable": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true }, "is-ci": { "version": "2.0.0", @@ -3407,25 +4152,23 @@ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "requires": { - "ci-info": "2.0.0" + "ci-info": "^2.0.0" } }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3440,26 +4183,23 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } }, "is-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" }, "is-dotfile": { "version": "1.0.3", @@ -3473,63 +4213,61 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-function": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", - "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } }, "is-generator-fn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.0.0.tgz", - "integrity": "sha512-elzyIdM7iKoFHzcrndIqjYomImhxrFRnGP3galODoII4TB9gI7mZ+FnlLQmmjf27SxHS2gKEeyhX5/+YRS6H9g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true }, "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.1" } }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3537,9 +4275,43 @@ "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-object": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-0.1.2.tgz", + "integrity": "sha1-AO+8CIFsM8/ErIJR0TLhDcZQmNc=", "dev": true }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "requires": { + "symbol-observable": "^1.1.0" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "requires": { + "path-is-inside": "^1.0.1" + } + }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -3550,9 +4322,8 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" } }, "is-posix-bracket": { @@ -3567,20 +4338,38 @@ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-reference": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.2.tgz", + "integrity": "sha512-Kn5g8c7XHKejFOpTf2QN9YjiHHKl5xRj+2uAZf9iM2//nkBNi/NNeB5JMoun28nEaUVHyPUzqzhfRlfAirEjXg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39" + } + }, "is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "dev": true, "requires": { - "has": "1.0.3" + "has": "^1.0.1" } }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, "is-subset": { "version": "0.1.1", @@ -3589,10 +4378,13 @@ "dev": true }, "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } }, "is-text-path": { "version": "1.0.1", @@ -3600,19 +4392,19 @@ "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", "dev": true, "requires": { - "text-extensions": "1.9.0" + "text-extensions": "^1.0.0" } }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, "is-wsl": { "version": "1.1.0", @@ -3623,99 +4415,81 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isbuffer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/isbuffer/-/isbuffer-0.0.0.tgz", + "integrity": "sha1-OMFG2d9Si4v5sHAcPUPPEt8/w5s=", "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "issue-parser": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-3.0.1.tgz", - "integrity": "sha512-5wdT3EE8Kq38x/hJD8QZCJ9scGoOZ5QnzwXyClkviSWTS+xOCE6hJ0qco3H5n5jCsFqpbofZCcMWqlXJzF72VQ==", - "dev": true, - "requires": { - "lodash.capitalize": "4.2.1", - "lodash.escaperegexp": "4.1.2", - "lodash.isplainobject": "4.0.6", - "lodash.isstring": "4.0.1", - "lodash.uniqby": "4.7.0" - } - }, - "istanbul-api": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.1.tgz", - "integrity": "sha512-kVmYrehiwyeBAk/wE71tW6emzLiHGjYIiDrc8sfyty4F8M02/lrgXSm+R1kXysmF20zArvmZXjlE/mg24TVPJw==", - "dev": true, - "requires": { - "async": "2.6.1", - "compare-versions": "3.4.0", - "fileset": "2.0.3", - "istanbul-lib-coverage": "2.0.3", - "istanbul-lib-hook": "2.0.3", - "istanbul-lib-instrument": "3.1.0", - "istanbul-lib-report": "2.0.4", - "istanbul-lib-source-maps": "3.0.2", - "istanbul-reports": "2.1.1", - "js-yaml": "3.13.0", - "make-dir": "1.3.0", - "minimatch": "3.0.4", - "once": "1.4.0" - } - }, - "istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw==", - "dev": true - }, - "istanbul-lib-hook": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.3.tgz", - "integrity": "sha512-CLmEqwEhuCYtGcpNVJjLV1DQyVnIqavMLFHV/DP+np/g3qvdxu3gsPqYoJMXm15sN84xOlckFB3VNvRbf5yEgA==", + "integrity": "sha512-5wdT3EE8Kq38x/hJD8QZCJ9scGoOZ5QnzwXyClkviSWTS+xOCE6hJ0qco3H5n5jCsFqpbofZCcMWqlXJzF72VQ==", "dev": true, "requires": { - "append-transform": "1.0.0" + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" } }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, "istanbul-lib-instrument": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz", - "integrity": "sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA==", - "dev": true, - "requires": { - "@babel/generator": "7.4.0", - "@babel/parser": "7.4.2", - "@babel/template": "7.4.0", - "@babel/traverse": "7.4.0", - "@babel/types": "7.4.0", - "istanbul-lib-coverage": "2.0.3", - "semver": "5.5.0" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + } } }, "istanbul-lib-report": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.4.tgz", - "integrity": "sha512-sOiLZLAWpA0+3b5w5/dq0cjm2rrNdAfHWaGhmn7XEFW6X++IV9Ohn+pnELAl9K3rfpaeBfbmH9JU5sejacdLeA==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", "dev": true, "requires": { - "istanbul-lib-coverage": "2.0.3", - "make-dir": "1.3.0", - "supports-color": "6.1.0" + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" }, "dependencies": { "supports-color": { @@ -3724,22 +4498,22 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } }, "istanbul-lib-source-maps": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz", - "integrity": "sha512-JX4v0CiKTGp9fZPmoxpu9YEkPbEqCqBbO3403VabKjH+NRXo72HafD5UgnjTEqHL2SAjaZK1XDuDOkn6I5QVfQ==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", "dev": true, "requires": { - "debug": "4.1.1", - "istanbul-lib-coverage": "2.0.3", - "make-dir": "1.3.0", - "rimraf": "2.6.3", - "source-map": "0.6.1" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" }, "dependencies": { "debug": { @@ -3748,7 +4522,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.1.1" + "ms": "^2.1.1" } }, "source-map": { @@ -3760,12 +4534,12 @@ } }, "istanbul-reports": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.1.1.tgz", - "integrity": "sha512-FzNahnidyEPBCI0HcufJoSEoKykesRlFcSzQqjH9x0+LC8tnnE/p/90PBLu8iZTxr8yYZNyTtiAujUqyN+CIxw==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.4.tgz", + "integrity": "sha512-QCHGyZEK0bfi9GR215QSm+NJwFKEShbtc7tfbUdLAEzn3kKhLDDZqvljn8rPZM9v8CEOhzL1nlYoO4r1ryl67w==", "dev": true, "requires": { - "handlebars": "4.1.0" + "handlebars": "^4.1.2" } }, "java-properties": { @@ -3775,105 +4549,84 @@ "dev": true }, "jest": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.5.0.tgz", - "integrity": "sha512-lxL+Fq5/RH7inxxmfS2aZLCf8MsS+YCUBfeiNO6BWz/MmjhDGaIEA/2bzEf9q4Q0X+mtFHiinHFvQ0u+RvW/qQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.8.0.tgz", + "integrity": "sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg==", "dev": true, "requires": { - "import-local": "2.0.0", - "jest-cli": "24.5.0" + "import-local": "^2.0.0", + "jest-cli": "^24.8.0" }, "dependencies": { "jest-cli": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.5.0.tgz", - "integrity": "sha512-P+Jp0SLO4KWN0cGlNtC7JV0dW1eSFR7eRpoOucP2UM0sqlzp/bVHeo71Omonvigrj9AvCKy7NtQANtqJ7FXz8g==", - "dev": true, - "requires": { - "@jest/core": "24.5.0", - "@jest/test-result": "24.5.0", - "@jest/types": "24.5.0", - "chalk": "2.4.1", - "exit": "0.1.2", - "import-local": "2.0.0", - "is-ci": "2.0.0", - "jest-config": "24.5.0", - "jest-util": "24.5.0", - "jest-validate": "24.5.0", - "prompts": "2.0.4", - "realpath-native": "1.1.0", - "yargs": "12.0.5" + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.8.0.tgz", + "integrity": "sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA==", + "dev": true, + "requires": { + "@jest/core": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^12.0.2" } } } }, "jest-changed-files": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.5.0.tgz", - "integrity": "sha512-Ikl29dosYnTsH9pYa1Tv9POkILBhN/TLZ37xbzgNsZ1D2+2n+8oEZS2yP1BrHn/T4Rs4Ggwwbp/x8CKOS5YJOg==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.8.0.tgz", + "integrity": "sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug==", "dev": true, "requires": { - "@jest/types": "24.5.0", - "execa": "1.0.0", - "throat": "4.1.0" + "@jest/types": "^24.8.0", + "execa": "^1.0.0", + "throat": "^4.0.0" } }, "jest-config": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.5.0.tgz", - "integrity": "sha512-t2UTh0Z2uZhGBNVseF8wA2DS2SuBiLOL6qpLq18+OZGfFUxTM7BzUVKyHFN/vuN+s/aslY1COW95j1Rw81huOQ==", - "dev": true, - "requires": { - "@babel/core": "7.4.0", - "@jest/types": "24.5.0", - "babel-jest": "24.5.0", - "chalk": "2.4.1", - "glob": "7.1.3", - "jest-environment-jsdom": "24.5.0", - "jest-environment-node": "24.5.0", - "jest-get-type": "24.3.0", - "jest-jasmine2": "24.5.0", - "jest-regex-util": "24.3.0", - "jest-resolve": "24.5.0", - "jest-util": "24.5.0", - "jest-validate": "24.5.0", - "micromatch": "3.1.10", - "pretty-format": "24.5.0", - "realpath-native": "1.1.0" - }, - "dependencies": { - "jest-get-type": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz", - "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==", - "dev": true - }, - "jest-regex-util": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz", - "integrity": "sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==", - "dev": true - } + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.8.0.tgz", + "integrity": "sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.8.0", + "@jest/types": "^24.8.0", + "babel-jest": "^24.8.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.8.0", + "jest-environment-node": "^24.8.0", + "jest-get-type": "^24.8.0", + "jest-jasmine2": "^24.8.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.8.0", + "realpath-native": "^1.1.0" } }, "jest-diff": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.5.0.tgz", - "integrity": "sha512-mCILZd9r7zqL9Uh6yNoXjwGQx0/J43OD2vvWVKwOEOLZliQOsojXwqboubAQ+Tszrb6DHGmNU7m4whGeB9YOqw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.8.0.tgz", + "integrity": "sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g==", "dev": true, "requires": { - "chalk": "2.4.1", - "diff-sequences": "24.3.0", - "jest-get-type": "24.3.0", - "pretty-format": "24.5.0" - }, - "dependencies": { - "jest-get-type": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz", - "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==", - "dev": true - } + "chalk": "^2.0.1", + "diff-sequences": "^24.3.0", + "jest-get-type": "^24.8.0", + "pretty-format": "^24.8.0" } }, "jest-docblock": { @@ -3882,55 +4635,47 @@ "integrity": "sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg==", "dev": true, "requires": { - "detect-newline": "2.1.0" + "detect-newline": "^2.1.0" } }, "jest-each": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.5.0.tgz", - "integrity": "sha512-6gy3Kh37PwIT5sNvNY2VchtIFOOBh8UCYnBlxXMb5sr5wpJUDPTUATX2Axq1Vfk+HWTMpsYPeVYp4TXx5uqUBw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.8.0.tgz", + "integrity": "sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA==", "dev": true, "requires": { - "@jest/types": "24.5.0", - "chalk": "2.4.1", - "jest-get-type": "24.3.0", - "jest-util": "24.5.0", - "pretty-format": "24.5.0" - }, - "dependencies": { - "jest-get-type": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz", - "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==", - "dev": true - } + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.8.0", + "jest-util": "^24.8.0", + "pretty-format": "^24.8.0" } }, "jest-environment-jsdom": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.5.0.tgz", - "integrity": "sha512-62Ih5HbdAWcsqBx2ktUnor/mABBo1U111AvZWcLKeWN/n/gc5ZvDBKe4Og44fQdHKiXClrNGC6G0mBo6wrPeGQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz", + "integrity": "sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ==", "dev": true, "requires": { - "@jest/environment": "24.5.0", - "@jest/fake-timers": "24.5.0", - "@jest/types": "24.5.0", - "jest-mock": "24.5.0", - "jest-util": "24.5.0", - "jsdom": "11.12.0" + "@jest/environment": "^24.8.0", + "@jest/fake-timers": "^24.8.0", + "@jest/types": "^24.8.0", + "jest-mock": "^24.8.0", + "jest-util": "^24.8.0", + "jsdom": "^11.5.1" } }, "jest-environment-node": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.5.0.tgz", - "integrity": "sha512-du6FuyWr/GbKLsmAbzNF9mpr2Iu2zWSaq/BNHzX+vgOcts9f2ayXBweS7RAhr+6bLp6qRpMB6utAMF5Ygktxnw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.8.0.tgz", + "integrity": "sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q==", "dev": true, "requires": { - "@jest/environment": "24.5.0", - "@jest/fake-timers": "24.5.0", - "@jest/types": "24.5.0", - "jest-mock": "24.5.0", - "jest-util": "24.5.0" + "@jest/environment": "^24.8.0", + "@jest/fake-timers": "^24.8.0", + "@jest/types": "^24.8.0", + "jest-mock": "^24.8.0", + "jest-util": "^24.8.0" } }, "jest-extended": { @@ -3939,9 +4684,9 @@ "integrity": "sha512-4klauyMgaoqMG27yu2HMGoQLVJ5ntJuJRgUKA/HS0oiGNBuSOkXNB7dxDtL83qYaBDMLVaOjy23QPLXFASUbVg==", "dev": true, "requires": { - "expect": "23.6.0", - "jest-get-type": "22.4.3", - "jest-matcher-utils": "22.4.3" + "expect": "^23.6.0", + "jest-get-type": "^22.4.3", + "jest-matcher-utils": "^22.0.0" }, "dependencies": { "ansi-regex": { @@ -3950,18 +4695,53 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, "expect": { "version": "23.6.0", "resolved": "https://registry.npmjs.org/expect/-/expect-23.6.0.tgz", "integrity": "sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "jest-diff": "23.6.0", - "jest-get-type": "22.4.3", - "jest-matcher-utils": "23.6.0", - "jest-message-util": "23.4.0", - "jest-regex-util": "23.3.0" + "ansi-styles": "^3.2.0", + "jest-diff": "^23.6.0", + "jest-get-type": "^22.1.0", + "jest-matcher-utils": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0" }, "dependencies": { "jest-matcher-utils": { @@ -3970,34 +4750,64 @@ "integrity": "sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog==", "dev": true, "requires": { - "chalk": "2.4.1", - "jest-get-type": "22.4.3", - "pretty-format": "23.6.0" + "chalk": "^2.0.1", + "jest-get-type": "^22.1.0", + "pretty-format": "^23.6.0" } } } }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, "jest-diff": { "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.6.0.tgz", "integrity": "sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g==", "dev": true, "requires": { - "chalk": "2.4.1", - "diff": "3.5.0", - "jest-get-type": "22.4.3", - "pretty-format": "23.6.0" + "chalk": "^2.0.1", + "diff": "^3.2.0", + "jest-get-type": "^22.1.0", + "pretty-format": "^23.6.0" } }, + "jest-get-type": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", + "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", + "dev": true + }, "jest-matcher-utils": { "version": "22.4.3", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz", "integrity": "sha512-lsEHVaTnKzdAPR5t4B6OcxXo9Vy4K+kRRbG5gtddY8lBEC+Mlpvm1CJcsMESRjzUhzkz568exMV1hTB76nAKbA==", "dev": true, "requires": { - "chalk": "2.4.1", - "jest-get-type": "22.4.3", - "pretty-format": "22.4.3" + "chalk": "^2.0.1", + "jest-get-type": "^22.4.3", + "pretty-format": "^22.4.3" }, "dependencies": { "pretty-format": { @@ -4006,243 +4816,173 @@ "integrity": "sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==", "dev": true, "requires": { - "ansi-regex": "3.0.0", - "ansi-styles": "3.2.1" + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" } } } }, + "jest-message-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", + "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0-beta.35", + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-regex-util": { + "version": "23.3.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz", + "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, "pretty-format": { "version": "23.6.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", "dev": true, "requires": { - "ansi-regex": "3.0.0", - "ansi-styles": "3.2.1" + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true } } }, "jest-get-type": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", - "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.8.0.tgz", + "integrity": "sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ==", "dev": true }, "jest-haste-map": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.5.0.tgz", - "integrity": "sha512-mb4Yrcjw9vBgSvobDwH8QUovxApdimGcOkp+V1ucGGw4Uvr3VzZQBJhNm1UY3dXYm4XXyTW2G7IBEZ9pM2ggRQ==", - "dev": true, - "requires": { - "@jest/types": "24.5.0", - "fb-watchman": "2.0.0", - "graceful-fs": "4.1.15", - "invariant": "2.2.4", - "jest-serializer": "24.4.0", - "jest-util": "24.5.0", - "jest-worker": "24.4.0", - "micromatch": "3.1.10", - "sane": "4.1.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - } + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.8.0.tgz", + "integrity": "sha512-ZBPRGHdPt1rHajWelXdqygIDpJx8u3xOoLyUBWRW28r3tagrgoepPrzAozW7kW9HrQfhvmiv1tncsxqHJO1onQ==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.4.0", + "jest-util": "^24.8.0", + "jest-worker": "^24.6.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" } }, "jest-jasmine2": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.5.0.tgz", - "integrity": "sha512-sfVrxVcx1rNUbBeyIyhkqZ4q+seNKyAG6iM0S2TYBdQsXjoFDdqWFfsUxb6uXSsbimbXX/NMkJIwUZ1uT9+/Aw==", - "dev": true, - "requires": { - "@babel/traverse": "7.4.0", - "@jest/environment": "24.5.0", - "@jest/test-result": "24.5.0", - "@jest/types": "24.5.0", - "chalk": "2.4.1", - "co": "4.6.0", - "expect": "24.5.0", - "is-generator-fn": "2.0.0", - "jest-each": "24.5.0", - "jest-matcher-utils": "24.5.0", - "jest-message-util": "24.5.0", - "jest-runtime": "24.5.0", - "jest-snapshot": "24.5.0", - "jest-util": "24.5.0", - "pretty-format": "24.5.0", - "throat": "4.1.0" - }, - "dependencies": { - "jest-message-util": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.5.0.tgz", - "integrity": "sha512-6ZYgdOojowCGiV0D8WdgctZEAe+EcFU+KrVds+0ZjvpZurUW2/oKJGltJ6FWY2joZwYXN5VL36GPV6pNVRqRnQ==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0", - "@jest/test-result": "24.5.0", - "@jest/types": "24.5.0", - "@types/stack-utils": "1.0.1", - "chalk": "2.4.1", - "micromatch": "3.1.10", - "slash": "2.0.0", - "stack-utils": "1.0.1" - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz", + "integrity": "sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.8.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-snapshot": "^24.8.0", + "jest-util": "^24.8.0", + "pretty-format": "^24.8.0", + "throat": "^4.0.0" } }, "jest-leak-detector": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.5.0.tgz", - "integrity": "sha512-LZKBjGovFRx3cRBkqmIg+BZnxbrLqhQl09IziMk3oeh1OV81Hg30RUIx885mq8qBv1PA0comB9bjKcuyNO1bCQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz", + "integrity": "sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g==", "dev": true, "requires": { - "pretty-format": "24.5.0" + "pretty-format": "^24.8.0" } }, "jest-matcher-utils": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.5.0.tgz", - "integrity": "sha512-QM1nmLROjLj8GMGzg5VBra3I9hLpjMPtF1YqzQS3rvWn2ltGZLrGAO1KQ9zUCVi5aCvrkbS5Ndm2evIP9yZg1Q==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz", + "integrity": "sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw==", "dev": true, "requires": { - "chalk": "2.4.1", - "jest-diff": "24.5.0", - "jest-get-type": "24.3.0", - "pretty-format": "24.5.0" - }, - "dependencies": { - "jest-get-type": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz", - "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==", - "dev": true - } + "chalk": "^2.0.1", + "jest-diff": "^24.8.0", + "jest-get-type": "^24.8.0", + "pretty-format": "^24.8.0" } }, "jest-message-util": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", - "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.8.0.tgz", + "integrity": "sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0", - "chalk": "2.4.1", - "micromatch": "2.3.11", - "slash": "1.0.0", - "stack-utils": "1.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "1.1.0" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } - } + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" } }, "jest-mock": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.5.0.tgz", - "integrity": "sha512-ZnAtkWrKf48eERgAOiUxVoFavVBziO2pAi2MfZ1+bGXVkDfxWLxU0//oJBkgwbsv6OAmuLBz4XFFqvCFMqnGUw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.8.0.tgz", + "integrity": "sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A==", "dev": true, "requires": { - "@jest/types": "24.5.0" + "@jest/types": "^24.8.0" } }, "jest-pnp-resolver": { @@ -4252,176 +4992,91 @@ "dev": true }, "jest-regex-util": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz", - "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=", + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz", + "integrity": "sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==", "dev": true }, "jest-resolve": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.5.0.tgz", - "integrity": "sha512-ZIfGqLX1Rg8xJpQqNjdoO8MuxHV1q/i2OO1hLXjgCWFWs5bsedS8UrOdgjUqqNae6DXA+pCyRmdcB7lQEEbXew==", - "dev": true, - "requires": { - "@jest/types": "24.5.0", - "browser-resolve": "1.11.3", - "chalk": "2.4.1", - "jest-pnp-resolver": "1.2.1", - "realpath-native": "1.1.0" - } - }, - "jest-resolve-dependencies": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.5.0.tgz", - "integrity": "sha512-dRVM1D+gWrFfrq2vlL5P9P/i8kB4BOYqYf3S7xczZ+A6PC3SgXYSErX/ScW/469pWMboM1uAhgLF+39nXlirCQ==", - "dev": true, - "requires": { - "@jest/types": "24.5.0", - "jest-regex-util": "24.3.0", - "jest-snapshot": "24.5.0" - }, - "dependencies": { - "jest-regex-util": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz", - "integrity": "sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==", - "dev": true - } - } - }, - "jest-runner": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.5.0.tgz", - "integrity": "sha512-oqsiS9TkIZV5dVkD+GmbNfWBRPIvxqmlTQ+AQUJUQ07n+4xTSDc40r+aKBynHw9/tLzafC00DIbJjB2cOZdvMA==", - "dev": true, - "requires": { - "@jest/console": "24.3.0", - "@jest/environment": "24.5.0", - "@jest/test-result": "24.5.0", - "@jest/types": "24.5.0", - "chalk": "2.4.2", - "exit": "0.1.2", - "graceful-fs": "4.1.15", - "jest-config": "24.5.0", - "jest-docblock": "24.3.0", - "jest-haste-map": "24.5.0", - "jest-jasmine2": "24.5.0", - "jest-leak-detector": "24.5.0", - "jest-message-util": "24.5.0", - "jest-resolve": "24.5.0", - "jest-runtime": "24.5.0", - "jest-util": "24.5.0", - "jest-worker": "24.4.0", - "source-map-support": "0.5.11", - "throat": "4.1.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - }, - "jest-message-util": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.5.0.tgz", - "integrity": "sha512-6ZYgdOojowCGiV0D8WdgctZEAe+EcFU+KrVds+0ZjvpZurUW2/oKJGltJ6FWY2joZwYXN5VL36GPV6pNVRqRnQ==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0", - "@jest/test-result": "24.5.0", - "@jest/types": "24.5.0", - "@types/stack-utils": "1.0.1", - "chalk": "2.4.2", - "micromatch": "3.1.10", - "slash": "2.0.0", - "stack-utils": "1.0.1" - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.8.0.tgz", + "integrity": "sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + } + }, + "jest-resolve-dependencies": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz", + "integrity": "sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.8.0" + } + }, + "jest-runner": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.8.0.tgz", + "integrity": "sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.8.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.8.0", + "jest-jasmine2": "^24.8.0", + "jest-leak-detector": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-resolve": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-util": "^24.8.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" } }, "jest-runtime": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.5.0.tgz", - "integrity": "sha512-GTFHzfLdwpaeoDPilNpBrorlPoNZuZrwKKzKJs09vWwHo+9TOsIIuszK8cWOuKC7ss07aN1922Ge8fsGdsqCuw==", - "dev": true, - "requires": { - "@jest/console": "24.3.0", - "@jest/environment": "24.5.0", - "@jest/source-map": "24.3.0", - "@jest/transform": "24.5.0", - "@jest/types": "24.5.0", - "@types/yargs": "12.0.10", - "chalk": "2.4.1", - "exit": "0.1.2", - "glob": "7.1.3", - "graceful-fs": "4.1.15", - "jest-config": "24.5.0", - "jest-haste-map": "24.5.0", - "jest-message-util": "24.5.0", - "jest-mock": "24.5.0", - "jest-regex-util": "24.3.0", - "jest-resolve": "24.5.0", - "jest-snapshot": "24.5.0", - "jest-util": "24.5.0", - "jest-validate": "24.5.0", - "realpath-native": "1.1.0", - "slash": "2.0.0", - "strip-bom": "3.0.0", - "yargs": "12.0.5" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - }, - "jest-message-util": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.5.0.tgz", - "integrity": "sha512-6ZYgdOojowCGiV0D8WdgctZEAe+EcFU+KrVds+0ZjvpZurUW2/oKJGltJ6FWY2joZwYXN5VL36GPV6pNVRqRnQ==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0", - "@jest/test-result": "24.5.0", - "@jest/types": "24.5.0", - "@types/stack-utils": "1.0.1", - "chalk": "2.4.1", - "micromatch": "3.1.10", - "slash": "2.0.0", - "stack-utils": "1.0.1" - } - }, - "jest-regex-util": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz", - "integrity": "sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.8.0.tgz", + "integrity": "sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.8.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "@types/yargs": "^12.0.2", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.8.0", + "jest-haste-map": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-mock": "^24.8.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.8.0", + "jest-snapshot": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^12.0.2" } }, "jest-serializer": { @@ -4431,47 +5086,23 @@ "dev": true }, "jest-snapshot": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.5.0.tgz", - "integrity": "sha512-eBEeJb5ROk0NcpodmSKnCVgMOo+Qsu5z9EDl3tGffwPzK1yV37mjGWF2YeIz1NkntgTzP+fUL4s09a0+0dpVWA==", - "dev": true, - "requires": { - "@babel/types": "7.4.0", - "@jest/types": "24.5.0", - "chalk": "2.4.1", - "expect": "24.5.0", - "jest-diff": "24.5.0", - "jest-matcher-utils": "24.5.0", - "jest-message-util": "24.5.0", - "jest-resolve": "24.5.0", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "pretty-format": "24.5.0", - "semver": "5.5.0" - }, - "dependencies": { - "jest-message-util": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.5.0.tgz", - "integrity": "sha512-6ZYgdOojowCGiV0D8WdgctZEAe+EcFU+KrVds+0ZjvpZurUW2/oKJGltJ6FWY2joZwYXN5VL36GPV6pNVRqRnQ==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0", - "@jest/test-result": "24.5.0", - "@jest/types": "24.5.0", - "@types/stack-utils": "1.0.1", - "chalk": "2.4.1", - "micromatch": "3.1.10", - "slash": "2.0.0", - "stack-utils": "1.0.1" - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.8.0.tgz", + "integrity": "sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "expect": "^24.8.0", + "jest-diff": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-resolve": "^24.8.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.8.0", + "semver": "^5.5.0" } }, "jest-tap-reporter": { @@ -4481,9 +5112,9 @@ "dev": true, "requires": { "@babel/code-frame": "7.0.0-beta.36", - "chalk": "2.4.1", - "string.prototype.padend": "3.0.0", - "string.prototype.padstart": "3.0.0", + "chalk": "^2.3.0", + "string.prototype.padend": "^3.0.0", + "string.prototype.padstart": "^3.0.0", "strip-ansi": "4.0.0", "utf8-bar": "0.1.0" }, @@ -4494,50 +5125,58 @@ "integrity": "sha512-sW77BFwJ48YvQp3Gzz5xtAUiXuYOL2aMJKDwiaY3OcvdqBFurtYfOpSa4QrNyDxmOGRFSYzUpabU2m9QrlWE7w==", "dev": true, "requires": { - "chalk": "2.4.1", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" } } } }, "jest-util": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.5.0.tgz", - "integrity": "sha512-Xy8JsD0jvBz85K7VsTIQDuY44s+hYJyppAhcsHsOsGisVtdhar6fajf2UOf2mEVEgh15ZSdA0zkCuheN8cbr1Q==", - "dev": true, - "requires": { - "@jest/console": "24.3.0", - "@jest/fake-timers": "24.5.0", - "@jest/source-map": "24.3.0", - "@jest/test-result": "24.5.0", - "@jest/types": "24.5.0", - "@types/node": "10.7.1", - "callsites": "3.0.0", - "chalk": "2.4.1", - "graceful-fs": "4.1.15", - "is-ci": "2.0.0", - "mkdirp": "0.5.1", - "slash": "2.0.0", - "source-map": "0.6.1" + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz", + "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/fake-timers": "^24.8.0", + "@jest/source-map": "^24.3.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" }, "dependencies": { "callsites": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", - "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", - "dev": true - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "source-map": { @@ -4549,58 +5188,42 @@ } }, "jest-validate": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.5.0.tgz", - "integrity": "sha512-gg0dYszxjgK2o11unSIJhkOFZqNRQbWOAB2/LOUdsd2LfD9oXiMeuee8XsT0iRy5EvSccBgB4h/9HRbIo3MHgQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.8.0.tgz", + "integrity": "sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA==", "dev": true, "requires": { - "@jest/types": "24.5.0", - "camelcase": "5.2.0", - "chalk": "2.4.1", - "jest-get-type": "24.3.0", - "leven": "2.1.0", - "pretty-format": "24.5.0" - }, - "dependencies": { - "camelcase": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", - "dev": true - }, - "jest-get-type": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz", - "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==", - "dev": true - } + "@jest/types": "^24.8.0", + "camelcase": "^5.0.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.8.0", + "leven": "^2.1.0", + "pretty-format": "^24.8.0" } }, "jest-watcher": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.5.0.tgz", - "integrity": "sha512-/hCpgR6bg0nKvD3nv4KasdTxuhwfViVMHUATJlnGCD0r1QrmIssimPbmc5KfAQblAVxkD8xrzuij9vfPUk1/rA==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.8.0.tgz", + "integrity": "sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw==", "dev": true, "requires": { - "@jest/test-result": "24.5.0", - "@jest/types": "24.5.0", - "@types/node": "10.7.1", - "@types/yargs": "12.0.10", - "ansi-escapes": "3.2.0", - "chalk": "2.4.1", - "jest-util": "24.5.0", - "string-length": "2.0.0" + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "@types/yargs": "^12.0.9", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.8.0", + "string-length": "^2.0.0" } }, "jest-worker": { - "version": "24.4.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.4.0.tgz", - "integrity": "sha512-BH9X/klG9vxwoO99ZBUbZFfV8qO0XNZ5SIiCyYK2zOuJBl6YJVAeNIQjcoOVNu4HGEHeYEKsUWws8kSlSbZ9YQ==", + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz", + "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==", "dev": true, "requires": { - "@types/node": "10.7.1", - "merge-stream": "1.0.1", - "supports-color": "6.1.0" + "merge-stream": "^1.0.1", + "supports-color": "^6.1.0" }, "dependencies": { "supports-color": { @@ -4609,32 +5232,31 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } }, "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "js-yaml": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.0.tgz", - "integrity": "sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==", - "dev": true, + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "requires": { - "argparse": "1.0.10", - "esprima": "4.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true + "dev": true }, "jsdom": { "version": "11.12.0", @@ -4642,32 +5264,45 @@ "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", "dev": true, "requires": { - "abab": "2.0.0", - "acorn": "5.7.3", - "acorn-globals": "4.3.0", - "array-equal": "1.0.0", - "cssom": "0.3.6", - "cssstyle": "1.2.1", - "data-urls": "1.1.0", - "domexception": "1.0.1", - "escodegen": "1.11.1", - "html-encoding-sniffer": "1.0.2", - "left-pad": "1.3.0", - "nwsapi": "2.1.1", + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", "parse5": "4.0.0", - "pn": "1.1.0", - "request": "2.88.0", - "request-promise-native": "1.0.7", - "sax": "1.2.4", - "symbol-tree": "3.2.2", - "tough-cookie": "2.4.3", - "w3c-hr-time": "1.0.1", - "webidl-conversions": "4.0.2", - "whatwg-encoding": "1.0.5", - "whatwg-mimetype": "2.3.0", - "whatwg-url": "6.5.0", - "ws": "5.2.2", - "xml-name-validator": "3.0.0" + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } } }, "jsesc": { @@ -4679,23 +5314,25 @@ "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "json5": { "version": "2.1.0", @@ -4703,7 +5340,7 @@ "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", "dev": true, "requires": { - "minimist": "1.2.0" + "minimist": "^1.2.0" } }, "jsonfile": { @@ -4712,7 +5349,7 @@ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.6" } }, "jsonparse": { @@ -4725,6 +5362,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -4735,22 +5373,35 @@ "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" }, "kleur": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.2.tgz", - "integrity": "sha512-3h7B2WRT5LNXOtQiAaWonilegHcPSf9nLVXlSTci8lu1dZUuui61+EsPEZqSVxY7rXYmB2DVKMQILxaO5WL61Q==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, + "ky": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/ky/-/ky-0.11.0.tgz", + "integrity": "sha512-8EHh1PfPKrERUf5XTSSUkuvfMygg6qyFmW7fqjjHxoGTySMQ5TfF006QenZmtcSSbJmd71wLYY04xxIS7vNpJg==" + }, + "ky-universal": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ky-universal/-/ky-universal-0.2.1.tgz", + "integrity": "sha512-6G7P8WrEcqTvdT+8f6hU1EBWib9mdW/n8S0M2Y0OC6WwlTMwYjQ06EYpijPwIMQlfeV22z7GP3NTVPBFn2RoBg==", + "requires": { + "abort-controller": "^3.0.0", + "node-fetch": "^2.3.0" + } + }, "lcid": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "dev": true, "requires": { - "invert-kv": "2.0.0" + "invert-kv": "^2.0.0" } }, "left-pad": { @@ -4759,6 +5410,218 @@ "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", "dev": true }, + "level-blobs": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/level-blobs/-/level-blobs-0.1.7.tgz", + "integrity": "sha1-mrm5e7mfHtv594o0M+Ie1WOGva8=", + "dev": true, + "requires": { + "level-peek": "1.0.6", + "once": "^1.3.0", + "readable-stream": "^1.0.26-4" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "level-filesystem": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/level-filesystem/-/level-filesystem-1.2.0.tgz", + "integrity": "sha1-oArKmRnEpN+v3KaoEI0iWq3/Y7M=", + "dev": true, + "requires": { + "concat-stream": "^1.4.4", + "errno": "^0.1.1", + "fwd-stream": "^1.0.4", + "level-blobs": "^0.1.7", + "level-peek": "^1.0.6", + "level-sublevel": "^5.2.0", + "octal": "^1.0.0", + "once": "^1.3.0", + "xtend": "^2.2.0" + } + }, + "level-fix-range": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/level-fix-range/-/level-fix-range-1.0.2.tgz", + "integrity": "sha1-vxW5Fa422EcMgh6IPd95zRZCCCg=", + "dev": true + }, + "level-hooks": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/level-hooks/-/level-hooks-4.5.0.tgz", + "integrity": "sha1-G5rmGSKTDzMF0aYfxNg8gQLA3ZM=", + "dev": true, + "requires": { + "string-range": "~1.2" + } + }, + "level-js": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/level-js/-/level-js-2.2.4.tgz", + "integrity": "sha1-vAVfQYBjXUSJtWHJSG+jcOjBFpc=", + "dev": true, + "requires": { + "abstract-leveldown": "~0.12.0", + "idb-wrapper": "^1.5.0", + "isbuffer": "~0.0.0", + "ltgt": "^2.1.2", + "typedarray-to-buffer": "~1.0.0", + "xtend": "~2.1.2" + }, + "dependencies": { + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "level-peek": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/level-peek/-/level-peek-1.0.6.tgz", + "integrity": "sha1-vsUccqgu5GTTNkNMfIdsP8vM538=", + "dev": true, + "requires": { + "level-fix-range": "~1.0.2" + } + }, + "level-sublevel": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/level-sublevel/-/level-sublevel-5.2.3.tgz", + "integrity": "sha1-dEwSxy0ucr543eO5tc2E1iGRQTo=", + "dev": true, + "requires": { + "level-fix-range": "2.0", + "level-hooks": ">=4.4.0 <5", + "string-range": "~1.2.1", + "xtend": "~2.0.4" + }, + "dependencies": { + "level-fix-range": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/level-fix-range/-/level-fix-range-2.0.0.tgz", + "integrity": "sha1-xBfWIVlEIVGhnZojZ4aPFyTC1Ug=", + "dev": true, + "requires": { + "clone": "~0.1.9" + } + }, + "object-keys": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.2.0.tgz", + "integrity": "sha1-zd7AKZiwkb5CvxA1rjLknxy26mc=", + "dev": true, + "requires": { + "foreach": "~2.0.1", + "indexof": "~0.0.1", + "is": "~0.2.6" + } + }, + "xtend": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.0.6.tgz", + "integrity": "sha1-XqZXptukRwacLlnFihE4ywxebO4=", + "dev": true, + "requires": { + "is-object": "~0.1.2", + "object-keys": "~0.2.0" + } + } + } + }, + "levelup": { + "version": "0.18.6", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-0.18.6.tgz", + "integrity": "sha1-5qAcsIlhbI7MApHCqb0/DETj5es=", + "dev": true, + "requires": { + "bl": "~0.8.1", + "deferred-leveldown": "~0.2.0", + "errno": "~0.1.1", + "prr": "~0.0.0", + "readable-stream": "~1.0.26", + "semver": "~2.3.1", + "xtend": "~3.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "semver": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", + "integrity": "sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "xtend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", + "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=", + "dev": true + } + } + }, "leven": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", @@ -4771,8 +5634,141 @@ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "li": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/li/-/li-1.3.0.tgz", + "integrity": "sha1-IsWbyu+qmo7zWc91l4TkvxBq6hs=" + }, + "lint-staged": { + "version": "8.1.7", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-8.1.7.tgz", + "integrity": "sha512-egT0goFhIFoOGk6rasPngTFh2qDqxZddM0PwI58oi66RxCDcn5uDwxmiasWIF0qGnchHSYVJ8HPRD5LrFo7TKA==", + "requires": { + "chalk": "^2.3.1", + "commander": "^2.14.1", + "cosmiconfig": "^5.2.0", + "debug": "^3.1.0", + "dedent": "^0.7.0", + "del": "^3.0.0", + "execa": "^1.0.0", + "find-parent-dir": "^0.3.0", + "g-status": "^2.0.2", + "is-glob": "^4.0.0", + "is-windows": "^1.0.2", + "listr": "^0.14.2", + "listr-update-renderer": "^0.5.0", + "lodash": "^4.17.11", + "log-symbols": "^2.2.0", + "micromatch": "^3.1.8", + "npm-which": "^3.0.1", + "p-map": "^1.1.1", + "path-is-inside": "^1.0.2", + "pify": "^3.0.0", + "please-upgrade-node": "^3.0.2", + "staged-git-files": "1.1.2", + "string-argv": "^0.0.2", + "stringify-object": "^3.2.2", + "yup": "^0.27.0" + } + }, + "listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + }, + "dependencies": { + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=" + }, + "listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "requires": { + "chalk": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "requires": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + }, + "dependencies": { + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "^1.0.5" + } + } } }, "load-json-file": { @@ -4781,10 +5777,10 @@ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "4.0.0", - "pify": "3.0.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" } }, "locate-path": { @@ -4793,8 +5789,8 @@ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "3.0.0", - "path-exists": "3.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, "lodash": { @@ -4847,8 +5843,7 @@ "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" }, "lodash.toarray": { "version": "4.4.0", @@ -4868,6 +5863,24 @@ "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=", "dev": true }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "requires": { + "chalk": "^2.0.1" + } + }, + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + } + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -4880,7 +5893,7 @@ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "requires": { - "js-tokens": "3.0.2" + "js-tokens": "^3.0.0 || ^4.0.0" } }, "loud-rejection": { @@ -4889,23 +5902,47 @@ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", "dev": true, "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" } }, + "ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=", + "dev": true + }, "macos-release": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.0.0.tgz", - "integrity": "sha512-iCM3ZGeqIzlrH7KxYK+fphlJpCCczyHXc+HhRVbEu9uNTCrzYJjvvtefzeKTCVHd5AP/aD/fzC80JZ4ZP+dQ/A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.2.0.tgz", + "integrity": "sha512-iV2IDxZaX8dIcM7fG6cI46uNmHUxHE4yN+Z8tKHAW1TBPMZDIKHf/3L+YnOuj/FK9il14UaVdHmiQ1tsi90ltA==", "dev": true }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { - "pify": "3.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } } }, "make-error": { @@ -4920,23 +5957,22 @@ "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", "dev": true, "requires": { - "tmpl": "1.0.4" + "tmpl": "1.0.x" } }, "map-age-cleaner": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz", - "integrity": "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", "dev": true, "requires": { - "p-defer": "1.0.0" + "p-defer": "^1.0.0" } }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, "map-obj": { "version": "2.0.0", @@ -4948,15 +5984,14 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, "requires": { - "object-visit": "1.0.1" + "object-visit": "^1.0.0" } }, "marked": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.6.1.tgz", - "integrity": "sha512-+H0L3ibcWhAZE02SKMqmvYsErLo4EAVJxu5h3bHBBDvvjeWXtl92rGUSBYHL2++5Y+RSNgl8dYOAXcYe7lp1fA==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.6.2.tgz", + "integrity": "sha512-LqxwVH3P/rqKX4EKGz7+c2G9r98WeM/SW34ybhgNGhUQNKtf1GmmSkJ6cDGJ/t6tiyae49qRkpyTw2B9HOrgUA==", "dev": true }, "marked-terminal": { @@ -4965,12 +6000,20 @@ "integrity": "sha512-Yr1yVS0BbDG55vx7be1D0mdv+jGs9AW563o/Tt/7FTsId2J0yqhrTeXAqq/Q0DyyXltIn6CSxzesQuFqXgafjQ==", "dev": true, "requires": { - "ansi-escapes": "3.2.0", - "cardinal": "2.1.1", - "chalk": "2.4.1", - "cli-table": "0.3.1", - "node-emoji": "1.10.0", - "supports-hyperlinks": "1.0.1" + "ansi-escapes": "^3.1.0", + "cardinal": "^2.1.1", + "chalk": "^2.4.1", + "cli-table": "^0.3.1", + "node-emoji": "^1.4.1", + "supports-hyperlinks": "^1.0.1" + } + }, + "matcher": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz", + "integrity": "sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==", + "requires": { + "escape-string-regexp": "^1.0.4" } }, "math-random": { @@ -4979,15 +6022,34 @@ "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", "dev": true }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", "dev": true, "requires": { - "map-age-cleaner": "0.1.2", - "mimic-fn": "1.2.0", - "p-is-promise": "2.0.0" + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + } } }, "meow": { @@ -4996,15 +6058,15 @@ "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", "dev": true, "requires": { - "camelcase-keys": "4.2.0", - "decamelize-keys": "1.1.0", - "loud-rejection": "1.6.0", - "minimist": "1.2.0", - "minimist-options": "3.0.2", - "normalize-package-data": "2.4.0", - "read-pkg-up": "3.0.0", - "redent": "2.0.0", - "trim-newlines": "2.0.0" + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" }, "dependencies": { "find-up": { @@ -5013,7 +6075,7 @@ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "locate-path": { @@ -5022,8 +6084,8 @@ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "p-limit": { @@ -5032,7 +6094,7 @@ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { - "p-try": "1.0.0" + "p-try": "^1.0.0" } }, "p-locate": { @@ -5041,7 +6103,7 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "1.3.0" + "p-limit": "^1.1.0" } }, "p-try": { @@ -5056,9 +6118,9 @@ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "load-json-file": "4.0.0", - "normalize-package-data": "2.4.0", - "path-type": "3.0.0" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" } }, "read-pkg-up": { @@ -5067,8 +6129,8 @@ "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", "dev": true, "requires": { - "find-up": "2.1.0", - "read-pkg": "3.0.0" + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" } } } @@ -5079,7 +6141,7 @@ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "dev": true, "requires": { - "readable-stream": "2.3.6" + "readable-stream": "^2.0.1" } }, "merge2": { @@ -5092,63 +6154,74 @@ "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" } }, "mime": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", - "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.2.tgz", + "integrity": "sha512-zJBfZDkwRu+j3Pdd2aHsR5GfH2jIWhmL1ZzBoc+X+3JEti2hbArWcyJ+1laC1D2/U/W1a/+Cegj0/OnEU2ybjg==", "dev": true }, "mime-db": { - "version": "1.35.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", - "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" }, "mime-types": { - "version": "2.1.19", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", - "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", "requires": { - "mime-db": "1.35.0" + "mime-db": "1.40.0" } }, "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", - "requires": { - "dom-walk": "0.1.1" - } + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -5163,27 +6236,25 @@ "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", "dev": true, "requires": { - "arrify": "1.0.1", - "is-plain-obj": "1.1.0" + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" } }, "mixin-deep": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -5214,26 +6285,31 @@ "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "nan": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", + "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==", + "dev": true, + "optional": true }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" } }, "natural-compare": { @@ -5242,6 +6318,12 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "neo-async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "dev": true + }, "nerf-dart": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", @@ -5251,8 +6333,7 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "node-emoji": { "version": "1.10.0", @@ -5260,14 +6341,13 @@ "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", "dev": true, "requires": { - "lodash.toarray": "4.4.0" + "lodash.toarray": "^4.4.0" } }, "node-fetch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz", - "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==", - "dev": true + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.5.0.tgz", + "integrity": "sha512-YuZKluhWGJwCcUu4RlZstdAxr8bFfOVHakc1mplwHkk8J+tqM1Y5yraYvIUpeX8aY7+crCwiELJq7Vl0o0LWXw==" }, "node-int64": { "version": "0.4.0", @@ -5287,23 +6367,23 @@ "integrity": "sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ==", "dev": true, "requires": { - "growly": "1.3.0", - "is-wsl": "1.1.0", - "semver": "5.5.0", - "shellwords": "0.1.1", - "which": "1.3.1" + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" } }, "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { - "hosted-git-info": "2.7.1", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.4" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { @@ -5312,637 +6392,785 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "normalize-url": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.2.0.tgz", - "integrity": "sha512-n69+KXI+kZApR+sPwSkoAXpGlNkaiYyoHHqKOFPjJWvwZpew/EjKvuPE4+tStNgb42z5yLtdakgZCQI+LalSPg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.3.0.tgz", + "integrity": "sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ==", "dev": true }, "npm": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-6.5.0.tgz", - "integrity": "sha512-SPq8zG2Kto+Xrq55E97O14Jla13PmQT5kSnvwBj88BmJZ5Nvw++OmlWfhjkB67pcgP5UEXljEtnGFKZtOgt6MQ==", - "dev": true, - "requires": { - "JSONStream": "1.3.4", - "abbrev": "1.1.1", - "ansicolors": "0.3.2", - "ansistyles": "0.1.3", - "aproba": "1.2.0", - "archy": "1.0.0", - "bin-links": "1.1.2", - "bluebird": "3.5.3", - "byte-size": "4.0.3", - "cacache": "11.2.0", - "call-limit": "1.1.0", - "chownr": "1.0.1", - "ci-info": "1.6.0", - "cli-columns": "3.1.2", - "cli-table3": "0.5.0", - "cmd-shim": "2.0.2", - "columnify": "1.5.4", - "config-chain": "1.1.12", - "debuglog": "1.0.1", - "detect-indent": "5.0.0", - "detect-newline": "2.1.0", - "dezalgo": "1.0.3", - "editor": "1.0.0", - "figgy-pudding": "3.5.1", - "find-npm-prefix": "1.0.2", - "fs-vacuum": "1.2.10", - "fs-write-stream-atomic": "1.0.10", - "gentle-fs": "2.0.1", - "glob": "7.1.3", - "graceful-fs": "4.1.15", - "has-unicode": "2.0.1", - "hosted-git-info": "2.7.1", - "iferr": "1.0.2", - "imurmurhash": "0.1.4", - "inflight": "1.0.6", - "inherits": "2.0.3", - "ini": "1.3.5", - "init-package-json": "1.10.3", - "is-cidr": "2.0.6", - "json-parse-better-errors": "1.0.2", - "lazy-property": "1.0.0", - "libcipm": "2.0.2", - "libnpmhook": "4.0.1", - "libnpx": "10.2.0", - "lock-verify": "2.0.2", - "lockfile": "1.0.4", - "lodash._baseindexof": "3.1.0", - "lodash._baseuniq": "4.6.0", - "lodash._bindcallback": "3.0.1", - "lodash._cacheindexof": "3.0.2", - "lodash._createcache": "3.1.2", - "lodash._getnative": "3.9.1", - "lodash.clonedeep": "4.5.0", - "lodash.restparam": "3.6.1", - "lodash.union": "4.6.0", - "lodash.uniq": "4.5.0", - "lodash.without": "4.4.0", - "lru-cache": "4.1.3", - "meant": "1.0.1", - "mississippi": "3.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "node-gyp": "3.8.0", - "nopt": "4.0.1", - "normalize-package-data": "2.4.0", - "npm-audit-report": "1.3.1", - "npm-cache-filename": "1.0.2", - "npm-install-checks": "3.0.0", - "npm-lifecycle": "2.1.0", - "npm-package-arg": "6.1.0", - "npm-packlist": "1.1.12", - "npm-pick-manifest": "2.1.0", - "npm-profile": "3.0.2", - "npm-registry-client": "8.6.0", - "npm-registry-fetch": "1.1.0", - "npm-user-validate": "1.0.0", - "npmlog": "4.1.2", - "once": "1.4.0", - "opener": "1.5.1", - "osenv": "0.1.5", - "pacote": "8.1.6", - "path-is-inside": "1.0.2", - "promise-inflight": "1.0.1", - "qrcode-terminal": "0.12.0", - "query-string": "6.1.0", - "qw": "1.0.1", - "read": "1.0.7", - "read-cmd-shim": "1.0.1", - "read-installed": "4.0.3", - "read-package-json": "2.0.13", - "read-package-tree": "5.2.1", - "readable-stream": "2.3.6", - "readdir-scoped-modules": "1.0.2", - "request": "2.88.0", - "retry": "0.12.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.2", - "semver": "5.5.1", - "sha": "2.0.1", - "slide": "1.1.6", - "sorted-object": "2.0.1", - "sorted-union-stream": "2.1.3", - "ssri": "6.0.1", - "stringify-package": "1.0.0", - "tar": "4.4.8", - "text-table": "0.2.0", - "tiny-relative-date": "1.3.0", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-6.9.0.tgz", + "integrity": "sha512-91V+zB5hDxO+Jyp2sUKS7juHlIM95dGQxTeQtmZI1nAI/7kjWXFipPrtwwKjhyKmV4GsS2LzJhrxRjGWsU9z/w==", + "dev": true, + "requires": { + "JSONStream": "^1.3.5", + "abbrev": "~1.1.1", + "ansicolors": "~0.3.2", + "ansistyles": "~0.1.3", + "aproba": "^2.0.0", + "archy": "~1.0.0", + "bin-links": "^1.1.2", + "bluebird": "^3.5.3", + "byte-size": "^5.0.1", + "cacache": "^11.3.2", + "call-limit": "~1.1.0", + "chownr": "^1.1.1", + "ci-info": "^2.0.0", + "cli-columns": "^3.1.2", + "cli-table3": "^0.5.1", + "cmd-shim": "~2.0.2", + "columnify": "~1.5.4", + "config-chain": "^1.1.12", + "debuglog": "*", + "detect-indent": "~5.0.0", + "detect-newline": "^2.1.0", + "dezalgo": "~1.0.3", + "editor": "~1.0.0", + "figgy-pudding": "^3.5.1", + "find-npm-prefix": "^1.0.2", + "fs-vacuum": "~1.2.10", + "fs-write-stream-atomic": "~1.0.10", + "gentle-fs": "^2.0.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "has-unicode": "~2.0.1", + "hosted-git-info": "^2.7.1", + "iferr": "^1.0.2", + "imurmurhash": "*", + "inflight": "~1.0.6", + "inherits": "~2.0.3", + "ini": "^1.3.5", + "init-package-json": "^1.10.3", + "is-cidr": "^3.0.0", + "json-parse-better-errors": "^1.0.2", + "lazy-property": "~1.0.0", + "libcipm": "^3.0.3", + "libnpm": "^2.0.1", + "libnpmaccess": "*", + "libnpmhook": "^5.0.2", + "libnpmorg": "*", + "libnpmsearch": "*", + "libnpmteam": "*", + "libnpx": "^10.2.0", + "lock-verify": "^2.1.0", + "lockfile": "^1.0.4", + "lodash._baseindexof": "*", + "lodash._baseuniq": "~4.6.0", + "lodash._bindcallback": "*", + "lodash._cacheindexof": "*", + "lodash._createcache": "*", + "lodash._getnative": "*", + "lodash.clonedeep": "~4.5.0", + "lodash.restparam": "*", + "lodash.union": "~4.6.0", + "lodash.uniq": "~4.5.0", + "lodash.without": "~4.4.0", + "lru-cache": "^4.1.5", + "meant": "~1.0.1", + "mississippi": "^3.0.0", + "mkdirp": "~0.5.1", + "move-concurrently": "^1.0.1", + "node-gyp": "^3.8.0", + "nopt": "~4.0.1", + "normalize-package-data": "^2.5.0", + "npm-audit-report": "^1.3.2", + "npm-cache-filename": "~1.0.2", + "npm-install-checks": "~3.0.0", + "npm-lifecycle": "^2.1.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.4.1", + "npm-pick-manifest": "^2.2.3", + "npm-profile": "*", + "npm-registry-fetch": "^3.9.0", + "npm-user-validate": "~1.0.0", + "npmlog": "~4.1.2", + "once": "~1.4.0", + "opener": "^1.5.1", + "osenv": "^0.1.5", + "pacote": "^9.5.0", + "path-is-inside": "~1.0.2", + "promise-inflight": "~1.0.1", + "qrcode-terminal": "^0.12.0", + "query-string": "^6.2.0", + "qw": "~1.0.1", + "read": "~1.0.7", + "read-cmd-shim": "~1.0.1", + "read-installed": "~4.0.3", + "read-package-json": "^2.0.13", + "read-package-tree": "^5.2.2", + "readable-stream": "^3.1.1", + "readdir-scoped-modules": "*", + "request": "^2.88.0", + "retry": "^0.12.0", + "rimraf": "^2.6.3", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "sha": "~2.0.1", + "slide": "~1.1.6", + "sorted-object": "~2.0.1", + "sorted-union-stream": "~2.1.3", + "ssri": "^6.0.1", + "stringify-package": "^1.0.0", + "tar": "^4.4.8", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", "uid-number": "0.0.6", - "umask": "1.1.0", - "unique-filename": "1.1.0", - "unpipe": "1.0.0", - "update-notifier": "2.5.0", - "uuid": "3.3.2", - "validate-npm-package-license": "3.0.4", - "validate-npm-package-name": "3.0.0", - "which": "1.3.1", - "worker-farm": "1.6.0", - "write-file-atomic": "2.3.0" + "umask": "~1.1.0", + "unique-filename": "^1.1.1", + "unpipe": "~1.0.0", + "update-notifier": "^2.5.0", + "uuid": "^3.3.2", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "~3.0.0", + "which": "^1.3.1", + "worker-farm": "^1.6.0", + "write-file-atomic": "^2.4.2" }, "dependencies": { "JSONStream": { - "version": "1.3.4", - "bundled": true, + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" } }, "abbrev": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, "agent-base": { - "version": "4.2.0", - "bundled": true, + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", "dev": true, "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" } }, "agentkeepalive": { "version": "3.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.4.1.tgz", + "integrity": "sha512-MPIwsZU9PP9kOrZpyu2042kYA8Fdt/AedQYkYXucHgF9QoD9dXVp0ypuGnHXSR0hTstBxdt85Xkh4JolYfK5wg==", "dev": true, "requires": { - "humanize-ms": "1.2.1" + "humanize-ms": "^1.2.1" } }, "ajv": { "version": "5.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "dev": true, "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "ansi-align": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "dev": true, "requires": { - "string-width": "2.1.1" + "string-width": "^2.0.0" } }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "3.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, "ansicolors": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", "dev": true }, "ansistyles": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansistyles/-/ansistyles-0.1.3.tgz", + "integrity": "sha1-XeYEFb2gcbs3EnhUyGT0GyMlRTk=", "dev": true }, "aproba": { - "version": "1.2.0", - "bundled": true, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", "dev": true }, "archy": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, "are-we-there-yet": { "version": "1.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "dev": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "asap": { "version": "2.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", "dev": true }, "asn1": { "version": "0.2.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "dev": true, "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": "~2.1.0" } }, "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, "asynckit": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, "aws-sign2": { "version": "0.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", "dev": true }, "aws4": { "version": "1.8.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "bin-links": { "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "bluebird": "3.5.3", - "cmd-shim": "2.0.2", - "gentle-fs": "2.0.1", - "graceful-fs": "4.1.15", - "write-file-atomic": "2.3.0" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-1.1.2.tgz", + "integrity": "sha512-8eEHVgYP03nILphilltWjeIjMbKyJo3wvp9K816pHbhP301ismzw15mxAAEVQ/USUwcP++1uNrbERbp8lOA6Fg==", "dev": true, "requires": { - "inherits": "2.0.3" + "bluebird": "^3.5.0", + "cmd-shim": "^2.0.2", + "gentle-fs": "^2.0.0", + "graceful-fs": "^4.1.11", + "write-file-atomic": "^2.3.0" } }, "bluebird": { "version": "3.5.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", "dev": true }, "boxen": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "dev": true, "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.4.1", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "2.0.0" + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" } }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "buffer-from": { "version": "1.0.0", - "bundled": true, - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", "dev": true }, "builtins": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", "dev": true }, "byline": { "version": "5.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", + "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=", "dev": true }, "byte-size": { - "version": "4.0.3", - "bundled": true, + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-5.0.1.tgz", + "integrity": "sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw==", "dev": true }, "cacache": { - "version": "11.2.0", - "bundled": true, - "dev": true, - "requires": { - "bluebird": "3.5.3", - "chownr": "1.0.1", - "figgy-pudding": "3.5.1", - "glob": "7.1.3", - "graceful-fs": "4.1.15", - "lru-cache": "4.1.3", - "mississippi": "3.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "6.0.1", - "unique-filename": "1.1.0", - "y18n": "4.0.0" + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } } }, "call-limit": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/call-limit/-/call-limit-1.1.0.tgz", + "integrity": "sha1-b9YbA/PaQqLNDsK2DwK9DnGZH+o=", "dev": true }, "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, "capture-stack-trace": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", "dev": true }, "caseless": { "version": "0.12.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, "chalk": { "version": "2.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "chownr": { - "version": "1.0.1", - "bundled": true, + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", "dev": true }, "ci-info": { - "version": "1.6.0", - "bundled": true, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, "cidr-regex": { - "version": "2.0.9", - "bundled": true, + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/cidr-regex/-/cidr-regex-2.0.10.tgz", + "integrity": "sha512-sB3ogMQXWvreNPbJUZMRApxuRYd+KoIo4RGQ81VatjmMW6WJPo+IJZ2846FGItr9VzKo5w7DXzijPLGtSd0N3Q==", "dev": true, "requires": { - "ip-regex": "2.1.0" + "ip-regex": "^2.1.0" } }, "cli-boxes": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", "dev": true }, "cli-columns": { "version": "3.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/cli-columns/-/cli-columns-3.1.2.tgz", + "integrity": "sha1-ZzLZcpee/CrkRKHwjgj6E5yWoY4=", "dev": true, "requires": { - "string-width": "2.1.1", - "strip-ansi": "3.0.1" + "string-width": "^2.0.0", + "strip-ansi": "^3.0.1" } }, "cli-table3": { - "version": "0.5.0", - "bundled": true, + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", "dev": true, "requires": { - "colors": "1.1.2", - "object-assign": "4.1.1", - "string-width": "2.1.1" + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" } }, "cliui": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" }, "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } }, "clone": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", "dev": true }, "cmd-shim": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-2.0.2.tgz", + "integrity": "sha1-b8vamUg6j9FdfTChlspp1oii79s=", "dev": true, "requires": { - "graceful-fs": "4.1.15", - "mkdirp": "0.5.1" + "graceful-fs": "^4.1.2", + "mkdirp": "~0.5.0" } }, "co": { "version": "4.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "color-convert": { "version": "1.9.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "colors": { - "version": "1.1.2", - "bundled": true, + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", "dev": true, "optional": true }, "columnify": { "version": "1.5.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", + "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", "dev": true, "requires": { - "strip-ansi": "3.0.1", - "wcwidth": "1.0.1" + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" } }, "combined-stream": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "concat-stream": { "version": "1.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "config-chain": { "version": "1.1.12", - "bundled": true, + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", "dev": true, "requires": { - "ini": "1.3.5", - "proto-list": "1.2.4" + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, "configstore": { "version": "3.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "dev": true, "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.15", - "make-dir": "1.3.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.3.0", - "xdg-basedir": "3.0.0" + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "console-control-strings": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, "copy-concurrently": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", "dev": true, "requires": { - "aproba": "1.2.0", - "fs-write-stream-atomic": "1.0.10", - "iferr": "0.1.5", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" }, "dependencies": { + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, "iferr": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", "dev": true } } }, "core-util-is": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, "create-error-class": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "dev": true, "requires": { - "capture-stack-trace": "1.0.0" + "capture-stack-trace": "^1.0.0" } }, "cross-spawn": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.3", - "shebang-command": "1.2.0", - "which": "1.3.1" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "crypto-random-string": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", "dev": true }, "cyclist": { "version": "0.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", "dev": true }, "dashdash": { "version": "1.14.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "debug": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { "ms": "2.0.0" @@ -5950,690 +7178,908 @@ "dependencies": { "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true } } }, "debuglog": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", "dev": true }, "decamelize": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "decode-uri-component": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, "deep-extend": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", "dev": true }, "defaults": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "dev": true, "requires": { - "clone": "1.0.4" + "clone": "^1.0.2" } }, "delayed-stream": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, "delegates": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true }, "detect-indent": { "version": "5.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", "dev": true }, "detect-newline": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", "dev": true }, "dezalgo": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", "dev": true, "requires": { - "asap": "2.0.6", - "wrappy": "1.0.2" + "asap": "^2.0.0", + "wrappy": "1" } }, "dot-prop": { "version": "4.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "dev": true, "requires": { - "is-obj": "1.0.1" + "is-obj": "^1.0.0" } }, "dotenv": { "version": "5.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", "dev": true }, "duplexer3": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, "duplexify": { "version": "3.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "ecc-jsbn": { "version": "0.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1", - "safer-buffer": "2.1.2" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "editor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/editor/-/editor-1.0.0.tgz", + "integrity": "sha1-YMf4e9YrzGqJT6jM1q+3gjok90I=", "dev": true }, "encoding": { "version": "0.1.12", - "bundled": true, + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "dev": true, "requires": { - "iconv-lite": "0.4.23" + "iconv-lite": "~0.4.13" } }, "end-of-stream": { "version": "1.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "err-code": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", "dev": true }, "errno": { "version": "0.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "dev": true, "requires": { - "prr": "1.0.1" + "prr": "~1.0.1" } }, "es6-promise": { - "version": "4.2.4", - "bundled": true, + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", + "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", "dev": true }, "es6-promisify": { "version": "5.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "dev": true, "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" } }, "escape-string-regexp": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "execa": { "version": "0.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + } } }, "extend": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, "extsprintf": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, "fast-deep-equal": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "dev": true }, "figgy-pudding": { "version": "3.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", "dev": true }, "find-npm-prefix": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz", + "integrity": "sha512-KEftzJ+H90x6pcKtdXZEPsQse8/y/UnvzRKrOSQFprnrGaFuJ62fVkP34Iu2IYuMvyauCyoLTNkJZgrrGA2wkA==", "dev": true }, "find-up": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "flush-write-stream": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "forever-agent": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true }, "form-data": { "version": "2.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "dev": true, "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.19" + "mime-types": "^2.1.12" } }, "from2": { "version": "2.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "fs-minipass": { "version": "1.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "dev": true, "requires": { - "minipass": "2.3.3" + "minipass": "^2.2.1" } }, "fs-vacuum": { "version": "1.2.10", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs-vacuum/-/fs-vacuum-1.2.10.tgz", + "integrity": "sha1-t2Kb7AekAxolSP35n17PHMizHjY=", "dev": true, "requires": { - "graceful-fs": "4.1.15", - "path-is-inside": "1.0.2", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.2", + "path-is-inside": "^1.0.1", + "rimraf": "^2.5.2" } }, "fs-write-stream-atomic": { "version": "1.0.10", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", "dev": true, "requires": { - "graceful-fs": "4.1.15", - "iferr": "0.1.5", - "imurmurhash": "0.1.4", - "readable-stream": "2.3.6" + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" }, "dependencies": { "iferr": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } } } }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.15", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" - } - }, "gauge": { "version": "2.7.4", - "bundled": true, - "dev": true, - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" }, "dependencies": { + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } }, "genfun": { - "version": "4.0.1", - "bundled": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", "dev": true }, "gentle-fs": { "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "aproba": "1.2.0", - "fs-vacuum": "1.2.10", - "graceful-fs": "4.1.15", - "iferr": "0.1.5", - "mkdirp": "0.5.1", - "path-is-inside": "1.0.2", - "read-cmd-shim": "1.0.1", - "slide": "1.1.6" + "resolved": "https://registry.npmjs.org/gentle-fs/-/gentle-fs-2.0.1.tgz", + "integrity": "sha512-cEng5+3fuARewXktTEGbwsktcldA+YsnUEaXZwcK/3pjSE1X9ObnTs+/8rYf8s+RnIcQm2D5x3rwpN7Zom8Bew==", + "dev": true, + "requires": { + "aproba": "^1.1.2", + "fs-vacuum": "^1.2.10", + "graceful-fs": "^4.1.11", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "path-is-inside": "^1.0.2", + "read-cmd-shim": "^1.0.1", + "slide": "^1.1.6" }, "dependencies": { + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, "iferr": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", "dev": true } } }, "get-caller-file": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, "get-stream": { - "version": "3.0.0", - "bundled": true, - "dev": true + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } }, "getpass": { "version": "0.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "glob": { "version": "7.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "global-dirs": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "dev": true, "requires": { - "ini": "1.3.5" + "ini": "^1.3.4" } }, "got": { "version": "6.7.1", - "bundled": true, - "dev": true, - "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.2", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "requires": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + } } }, "graceful-fs": { "version": "4.1.15", - "bundled": true, + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "dev": true }, "har-schema": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", "dev": true }, "har-validator": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", "dev": true, "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.3.0", + "har-schema": "^2.0.0" } }, "has-flag": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "has-unicode": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true }, "hosted-git-info": { "version": "2.7.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", "dev": true }, "http-cache-semantics": { "version": "3.8.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", "dev": true }, "http-proxy-agent": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", "dev": true, "requires": { - "agent-base": "4.2.0", + "agent-base": "4", "debug": "3.1.0" } }, "http-signature": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.2" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "https-proxy-agent": { "version": "2.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", + "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", "dev": true, "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" + "agent-base": "^4.1.0", + "debug": "^3.1.0" } }, "humanize-ms": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", "dev": true, "requires": { - "ms": "2.1.1" + "ms": "^2.0.0" } }, "iconv-lite": { "version": "0.4.23", - "bundled": true, + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "dev": true, "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3" } }, "iferr": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/iferr/-/iferr-1.0.2.tgz", + "integrity": "sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg==", "dev": true }, "ignore-walk": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "dev": true, "requires": { - "minimatch": "3.0.4" + "minimatch": "^3.0.4" } }, "import-lazy": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", "dev": true }, "imurmurhash": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "ini": { "version": "1.3.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, "init-package-json": { "version": "1.10.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-1.10.3.tgz", + "integrity": "sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw==", "dev": true, "requires": { - "glob": "7.1.3", - "npm-package-arg": "6.1.0", - "promzard": "0.3.0", - "read": "1.0.7", - "read-package-json": "2.0.13", - "semver": "5.5.1", - "validate-npm-package-license": "3.0.4", - "validate-npm-package-name": "3.0.0" + "glob": "^7.1.1", + "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "1 || 2", + "semver": "2.x || 3.x || 4 || 5", + "validate-npm-package-license": "^3.0.1", + "validate-npm-package-name": "^3.0.0" } }, "invert-kv": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "ip": { "version": "1.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "dev": true }, "ip-regex": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", "dev": true }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, "is-ci": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", + "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", "dev": true, "requires": { - "ci-info": "1.6.0" + "ci-info": "^1.0.0" + }, + "dependencies": { + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + } } }, "is-cidr": { - "version": "2.0.6", - "bundled": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-cidr/-/is-cidr-3.0.0.tgz", + "integrity": "sha512-8Xnnbjsb0x462VoYiGlhEi+drY8SFwrHiSYuzc/CEwco55vkehTaxAyIjEdpi3EMvLPPJAJi9FlzP+h+03gp0Q==", "dev": true, "requires": { - "cidr-regex": "2.0.9" + "cidr-regex": "^2.0.10" } }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-installed-globally": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "dev": true, "requires": { - "global-dirs": "0.1.1", - "is-path-inside": "1.0.1" + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" } }, "is-npm": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", "dev": true }, "is-obj": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, "is-path-inside": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-redirect": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", "dev": true }, "is-retry-allowed": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", "dev": true }, "is-stream": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "is-typedarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isstream": { "version": "0.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, "jsbn": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true, "optional": true }, "json-parse-better-errors": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, "json-schema": { "version": "0.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, "json-schema-traverse": { "version": "0.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", "dev": true }, "json-stringify-safe": { "version": "5.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, "jsonparse": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, "jsprim": { "version": "1.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, "requires": { "assert-plus": "1.0.0", @@ -6644,310 +8090,509 @@ }, "latest-version": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "dev": true, "requires": { - "package-json": "4.0.1" + "package-json": "^4.0.0" } }, "lazy-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lazy-property/-/lazy-property-1.0.0.tgz", + "integrity": "sha1-hN3Es3Bnm6i9TNz6TAa0PVcREUc=", "dev": true }, "lcid": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "libcipm": { - "version": "2.0.2", - "bundled": true, + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/libcipm/-/libcipm-3.0.3.tgz", + "integrity": "sha512-71V5CpTI+zFydTc5IjJ/tx8JHbXEJvmYF2zaSVW1V3X1rRnRjXqh44iuiyry1xgi3ProUQ1vX1uwFiWs00+2og==", + "dev": true, + "requires": { + "bin-links": "^1.1.2", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.5.1", + "find-npm-prefix": "^1.0.2", + "graceful-fs": "^4.1.11", + "ini": "^1.3.5", + "lock-verify": "^2.0.2", + "mkdirp": "^0.5.1", + "npm-lifecycle": "^2.0.3", + "npm-logical-tree": "^1.2.1", + "npm-package-arg": "^6.1.0", + "pacote": "^9.1.0", + "read-package-json": "^2.0.13", + "rimraf": "^2.6.2", + "worker-farm": "^1.6.0" + } + }, + "libnpm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/libnpm/-/libnpm-2.0.1.tgz", + "integrity": "sha512-qTKoxyJvpBxHZQB6k0AhSLajyXq9ZE/lUsZzuHAplr2Bpv9G+k4YuYlExYdUCeVRRGqcJt8hvkPh4tBwKoV98w==", + "dev": true, + "requires": { + "bin-links": "^1.1.2", + "bluebird": "^3.5.3", + "find-npm-prefix": "^1.0.2", + "libnpmaccess": "^3.0.1", + "libnpmconfig": "^1.2.1", + "libnpmhook": "^5.0.2", + "libnpmorg": "^1.0.0", + "libnpmpublish": "^1.1.0", + "libnpmsearch": "^2.0.0", + "libnpmteam": "^1.0.1", + "lock-verify": "^2.0.2", + "npm-lifecycle": "^2.1.0", + "npm-logical-tree": "^1.2.1", + "npm-package-arg": "^6.1.0", + "npm-profile": "^4.0.1", + "npm-registry-fetch": "^3.8.0", + "npmlog": "^4.1.2", + "pacote": "^9.2.3", + "read-package-json": "^2.0.13", + "stringify-package": "^1.0.0" + } + }, + "libnpmaccess": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-3.0.1.tgz", + "integrity": "sha512-RlZ7PNarCBt+XbnP7R6PoVgOq9t+kou5rvhaInoNibhPO7eMlRfS0B8yjatgn2yaHIwWNyoJDolC/6Lc5L/IQA==", "dev": true, "requires": { - "bin-links": "1.1.2", - "bluebird": "3.5.3", - "find-npm-prefix": "1.0.2", - "graceful-fs": "4.1.15", - "lock-verify": "2.0.2", - "mkdirp": "0.5.1", - "npm-lifecycle": "2.1.0", - "npm-logical-tree": "1.2.1", - "npm-package-arg": "6.1.0", - "pacote": "8.1.6", - "protoduck": "5.0.0", - "read-package-json": "2.0.13", - "rimraf": "2.6.2", - "worker-farm": "1.6.0" + "aproba": "^2.0.0", + "get-stream": "^4.0.0", + "npm-package-arg": "^6.1.0", + "npm-registry-fetch": "^3.8.0" + }, + "dependencies": { + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + } } }, - "libnpmhook": { - "version": "4.0.1", - "bundled": true, + "libnpmconfig": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/libnpmconfig/-/libnpmconfig-1.2.1.tgz", + "integrity": "sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==", "dev": true, "requires": { - "figgy-pudding": "3.5.1", - "npm-registry-fetch": "3.1.1" + "figgy-pudding": "^3.5.1", + "find-up": "^3.0.0", + "ini": "^1.3.5" }, "dependencies": { - "npm-registry-fetch": { - "version": "3.1.1", - "bundled": true, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "bluebird": "3.5.3", - "figgy-pudding": "3.5.1", - "lru-cache": "4.1.3", - "make-fetch-happen": "4.0.1", - "npm-package-arg": "6.1.0" + "p-limit": "^2.0.0" } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + } + } + }, + "libnpmhook": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/libnpmhook/-/libnpmhook-5.0.2.tgz", + "integrity": "sha512-vLenmdFWhRfnnZiNFPNMog6CK7Ujofy2TWiM2CrpZUjBRIhHkJeDaAbJdYCT6W4lcHtyrJR8yXW8KFyq6UAp1g==", + "dev": true, + "requires": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.4.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^3.8.0" + } + }, + "libnpmorg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/libnpmorg/-/libnpmorg-1.0.0.tgz", + "integrity": "sha512-o+4eVJBoDGMgRwh2lJY0a8pRV2c/tQM/SxlqXezjcAg26Qe9jigYVs+Xk0vvlYDWCDhP0g74J8UwWeAgsB7gGw==", + "dev": true, + "requires": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.4.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^3.8.0" + }, + "dependencies": { + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + } + } + }, + "libnpmpublish": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-1.1.1.tgz", + "integrity": "sha512-nefbvJd/wY38zdt+b9SHL6171vqBrMtZ56Gsgfd0duEKb/pB8rDT4/ObUQLrHz1tOfht1flt2zM+UGaemzAG5g==", + "dev": true, + "requires": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "lodash.clonedeep": "^4.5.0", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-registry-fetch": "^3.8.0", + "semver": "^5.5.1", + "ssri": "^6.0.1" + } + }, + "libnpmsearch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/libnpmsearch/-/libnpmsearch-2.0.0.tgz", + "integrity": "sha512-vd+JWbTGzOSfiOc+72MU6y7WqmBXn49egCCrIXp27iE/88bX8EpG64ST1blWQI1bSMUr9l1AKPMVsqa2tS5KWA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^3.8.0" + } + }, + "libnpmteam": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/libnpmteam/-/libnpmteam-1.0.1.tgz", + "integrity": "sha512-gDdrflKFCX7TNwOMX1snWojCoDE5LoRWcfOC0C/fqF7mBq8Uz9zWAX4B2RllYETNO7pBupBaSyBDkTAC15cAMg==", + "dev": true, + "requires": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.4.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^3.8.0" + }, + "dependencies": { + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true } } }, "libnpx": { "version": "10.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/libnpx/-/libnpx-10.2.0.tgz", + "integrity": "sha512-X28coei8/XRCt15cYStbLBph+KGhFra4VQhRBPuH/HHMkC5dxM8v24RVgUsvODKCrUZ0eTgiTqJp6zbl0sskQQ==", "dev": true, "requires": { - "dotenv": "5.0.1", - "npm-package-arg": "6.1.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.2", - "update-notifier": "2.5.0", - "which": "1.3.1", - "y18n": "4.0.0", - "yargs": "11.0.0" + "dotenv": "^5.0.1", + "npm-package-arg": "^6.0.0", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.0", + "update-notifier": "^2.3.0", + "which": "^1.3.0", + "y18n": "^4.0.0", + "yargs": "^11.0.0" } }, "locate-path": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "lock-verify": { - "version": "2.0.2", - "bundled": true, + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lock-verify/-/lock-verify-2.1.0.tgz", + "integrity": "sha512-vcLpxnGvrqisKvLQ2C2v0/u7LVly17ak2YSgoK4PrdsYBXQIax19vhKiLfvKNFx7FRrpTnitrpzF/uuCMuorIg==", "dev": true, "requires": { - "npm-package-arg": "6.1.0", - "semver": "5.5.1" + "npm-package-arg": "^6.1.0", + "semver": "^5.4.1" } }, "lockfile": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.4.tgz", + "integrity": "sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==", "dev": true, "requires": { - "signal-exit": "3.0.2" + "signal-exit": "^3.0.2" } }, "lodash._baseindexof": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz", + "integrity": "sha1-/lK1OhxnYeQmGNZU5KJXie1hgiw=", "dev": true }, "lodash._baseuniq": { "version": "4.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz", + "integrity": "sha1-DrtE5FaBSveQXGIS+iybLVG4Qeg=", "dev": true, "requires": { - "lodash._createset": "4.0.3", - "lodash._root": "3.0.1" + "lodash._createset": "~4.0.0", + "lodash._root": "~3.0.0" } }, "lodash._bindcallback": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", "dev": true }, "lodash._cacheindexof": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz", + "integrity": "sha1-PcaayCSY0u5ePOVgkbr9Ktx73pI=", "dev": true }, "lodash._createcache": { "version": "3.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash._createcache/-/lodash._createcache-3.1.2.tgz", + "integrity": "sha1-VtagZAF2JeeevKa4AY4XRAvc8JM=", "dev": true, "requires": { - "lodash._getnative": "3.9.1" + "lodash._getnative": "^3.0.0" } }, "lodash._createset": { "version": "4.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash._createset/-/lodash._createset-4.0.3.tgz", + "integrity": "sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY=", "dev": true }, "lodash._getnative": { "version": "3.9.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", "dev": true }, "lodash._root": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", "dev": true }, "lodash.clonedeep": { "version": "4.5.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, "lodash.restparam": { "version": "3.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", "dev": true }, "lodash.union": { "version": "4.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", "dev": true }, "lodash.uniq": { "version": "4.5.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", "dev": true }, "lodash.without": { "version": "4.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash.without/-/lodash.without-4.4.0.tgz", + "integrity": "sha1-PNRXSgC2e643OpS3SHcmQFB7eqw=", "dev": true }, "lowercase-keys": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", "dev": true }, "lru-cache": { - "version": "4.1.3", - "bundled": true, + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "make-dir": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "dev": true, "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" } }, "make-fetch-happen": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz", + "integrity": "sha512-7R5ivfy9ilRJ1EMKIOziwrns9fGeAD4bAha8EB7BIiBBLHm2KeTUGCrICFt2rbHfzheTLynv50GnNTK1zDTrcQ==", "dev": true, "requires": { - "agentkeepalive": "3.4.1", - "cacache": "11.2.0", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "lru-cache": "4.1.3", - "mississippi": "3.0.0", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "4.0.1", - "ssri": "6.0.1" + "agentkeepalive": "^3.4.1", + "cacache": "^11.0.1", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^4.1.2", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" } }, "meant": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/meant/-/meant-1.0.1.tgz", + "integrity": "sha512-UakVLFjKkbbUwNWJ2frVLnnAtbb7D7DsloxRd3s/gDpI8rdv8W5Hp3NaDb+POBI1fQdeussER6NB8vpcRURvlg==", "dev": true }, "mem": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "mime-db": { "version": "1.35.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", + "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==", "dev": true }, "mime-types": { "version": "2.1.19", - "bundled": true, + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", + "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", "dev": true, "requires": { - "mime-db": "1.35.0" + "mime-db": "~1.35.0" } }, "mimic-fn": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "minipass": { "version": "2.3.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.3.tgz", + "integrity": "sha512-/jAn9/tEX4gnpyRATxgHEOV6xbcyxgT7iUnxo9Y3+OB0zX00TgKIv/2FZCf5brBbICcwbLqVv2ImjvWWrQMSYw==", "dev": true, "requires": { - "safe-buffer": "5.1.2", - "yallist": "3.0.2" + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" }, "dependencies": { "yallist": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", + "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", "dev": true } } }, "minizlib": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.1.tgz", + "integrity": "sha512-TrfjCjk4jLhcJyGMYymBH6oTXcWjYbUAXTHDbtnWHjZC25h0cdajHuPE1zxb4DVmu8crfh+HwH/WMuyLG0nHBg==", "dev": true, "requires": { - "minipass": "2.3.3" + "minipass": "^2.2.1" } }, "mississippi": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", "dev": true, "requires": { - "concat-stream": "1.6.2", - "duplexify": "3.6.0", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "3.0.0", - "pumpify": "1.5.1", - "stream-each": "1.2.2", - "through2": "2.0.3" + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" } }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -6955,1542 +8600,1779 @@ }, "move-concurrently": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", "dev": true, "requires": { - "aproba": "1.2.0", - "copy-concurrently": "1.0.5", - "fs-write-stream-atomic": "1.0.10", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + } } }, "ms": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, "mute-stream": { "version": "0.0.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, "node-fetch-npm": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", + "integrity": "sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==", "dev": true, "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.2", - "safe-buffer": "5.1.2" + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" } }, "node-gyp": { "version": "3.8.0", - "bundled": true, - "dev": true, - "requires": { - "fstream": "1.0.11", - "glob": "7.1.3", - "graceful-fs": "4.1.15", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "npmlog": "4.1.2", - "osenv": "0.1.5", - "request": "2.88.0", - "rimraf": "2.6.2", - "semver": "5.3.0", - "tar": "2.2.1", - "which": "1.3.1" + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" }, "dependencies": { + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, "nopt": { "version": "3.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } }, "semver": { "version": "5.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "dev": true }, "tar": { - "version": "2.2.1", - "bundled": true, + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", "dev": true, "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + }, + "dependencies": { + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + } } } } }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" + "abbrev": "1", + "osenv": "^0.1.4" } }, "normalize-package-data": { - "version": "2.4.0", - "bundled": true, + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { - "hosted-git-info": "2.7.1", - "is-builtin-module": "1.0.0", - "semver": "5.5.1", - "validate-npm-package-license": "3.0.4" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } } }, "npm-audit-report": { - "version": "1.3.1", - "bundled": true, + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/npm-audit-report/-/npm-audit-report-1.3.2.tgz", + "integrity": "sha512-abeqS5ONyXNaZJPGAf6TOUMNdSe1Y6cpc9MLBRn+CuUoYbfdca6AxOyXVlfIv9OgKX+cacblbG5w7A6ccwoTPw==", "dev": true, "requires": { - "cli-table3": "0.5.0", - "console-control-strings": "1.1.0" + "cli-table3": "^0.5.0", + "console-control-strings": "^1.1.0" } }, "npm-bundled": { - "version": "1.0.5", - "bundled": true, + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", "dev": true }, "npm-cache-filename": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz", + "integrity": "sha1-3tMGxbC/yHCp6fr4I7xfKD4FrhE=", "dev": true }, "npm-install-checks": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-3.0.0.tgz", + "integrity": "sha1-1K7N/VGlPjcjt7L5Oy7ijjB7wNc=", "dev": true, "requires": { - "semver": "5.5.1" + "semver": "^2.3.0 || 3.x || 4 || 5" } }, "npm-lifecycle": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-lifecycle/-/npm-lifecycle-2.1.0.tgz", + "integrity": "sha512-QbBfLlGBKsktwBZLj6AviHC6Q9Y3R/AY4a2PYSIRhSKSS0/CxRyD/PfxEX6tPeOCXQgMSNdwGeECacstgptc+g==", "dev": true, "requires": { - "byline": "5.0.0", - "graceful-fs": "4.1.15", - "node-gyp": "3.8.0", - "resolve-from": "4.0.0", - "slide": "1.1.6", + "byline": "^5.0.0", + "graceful-fs": "^4.1.11", + "node-gyp": "^3.8.0", + "resolve-from": "^4.0.0", + "slide": "^1.1.6", "uid-number": "0.0.6", - "umask": "1.1.0", - "which": "1.3.1" + "umask": "^1.1.0", + "which": "^1.3.1" } }, "npm-logical-tree": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-logical-tree/-/npm-logical-tree-1.2.1.tgz", + "integrity": "sha512-AJI/qxDB2PWI4LG1CYN579AY1vCiNyWfkiquCsJWqntRu/WwimVrC8yXeILBFHDwxfOejxewlmnvW9XXjMlYIg==", "dev": true }, "npm-package-arg": { "version": "6.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", + "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", "dev": true, "requires": { - "hosted-git-info": "2.7.1", - "osenv": "0.1.5", - "semver": "5.5.1", - "validate-npm-package-name": "3.0.0" + "hosted-git-info": "^2.6.0", + "osenv": "^0.1.5", + "semver": "^5.5.0", + "validate-npm-package-name": "^3.0.0" } }, "npm-packlist": { - "version": "1.1.12", - "bundled": true, + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.1.tgz", + "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", "dev": true, "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.5" + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" } }, "npm-pick-manifest": { - "version": "2.1.0", - "bundled": true, + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz", + "integrity": "sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA==", "dev": true, "requires": { - "npm-package-arg": "6.1.0", - "semver": "5.5.1" + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" } }, "npm-profile": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "aproba": "1.2.0", - "make-fetch-happen": "4.0.1" - } - }, - "npm-registry-client": { - "version": "8.6.0", - "bundled": true, + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-profile/-/npm-profile-4.0.1.tgz", + "integrity": "sha512-NQ1I/1Q7YRtHZXkcuU1/IyHeLy6pd+ScKg4+DQHdfsm769TGq6HPrkbuNJVJS4zwE+0mvvmeULzQdWn2L2EsVA==", "dev": true, "requires": { - "concat-stream": "1.6.2", - "graceful-fs": "4.1.15", - "normalize-package-data": "2.4.0", - "npm-package-arg": "6.1.0", - "npmlog": "4.1.2", - "once": "1.4.0", - "request": "2.88.0", - "retry": "0.10.1", - "safe-buffer": "5.1.2", - "semver": "5.5.1", - "slide": "1.1.6", - "ssri": "5.3.0" - }, - "dependencies": { - "retry": { - "version": "0.10.1", - "bundled": true, - "dev": true - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - } + "aproba": "^1.1.2 || 2", + "figgy-pudding": "^3.4.1", + "npm-registry-fetch": "^3.8.0" } }, "npm-registry-fetch": { - "version": "1.1.0", - "bundled": true, + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-3.9.0.tgz", + "integrity": "sha512-srwmt8YhNajAoSAaDWndmZgx89lJwIZ1GWxOuckH4Coek4uHv5S+o/l9FLQe/awA+JwTnj4FJHldxhlXdZEBmw==", "dev": true, "requires": { - "bluebird": "3.5.3", - "figgy-pudding": "2.0.1", - "lru-cache": "4.1.3", - "make-fetch-happen": "3.0.0", - "npm-package-arg": "6.1.0", - "safe-buffer": "5.1.2" - }, - "dependencies": { - "cacache": { - "version": "10.0.4", - "bundled": true, - "dev": true, - "requires": { - "bluebird": "3.5.3", - "chownr": "1.0.1", - "glob": "7.1.3", - "graceful-fs": "4.1.15", - "lru-cache": "4.1.3", - "mississippi": "2.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "5.3.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" - }, - "dependencies": { - "mississippi": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "concat-stream": "1.6.2", - "duplexify": "3.6.0", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "2.0.1", - "pumpify": "1.5.1", - "stream-each": "1.2.2", - "through2": "2.0.3" - } - } - } - }, - "figgy-pudding": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "make-fetch-happen": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "agentkeepalive": "3.4.1", - "cacache": "10.0.4", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "lru-cache": "4.1.3", - "mississippi": "3.0.0", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "3.0.1", - "ssri": "5.3.0" - } - }, - "pump": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "smart-buffer": { - "version": "1.1.15", - "bundled": true, - "dev": true - }, - "socks": { - "version": "1.1.10", - "bundled": true, - "dev": true, - "requires": { - "ip": "1.1.5", - "smart-buffer": "1.1.15" - } - }, - "socks-proxy-agent": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "4.2.0", - "socks": "1.1.10" - } - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - } + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^4.1.3", + "make-fetch-happen": "^4.0.1", + "npm-package-arg": "^6.1.0" } }, "npm-run-path": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "npm-user-validate": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-user-validate/-/npm-user-validate-1.0.0.tgz", + "integrity": "sha1-jOyg9c6gTU6TUZ73LQVXp1Ei6VE=", "dev": true }, "npmlog": { "version": "4.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "oauth-sign": { "version": "0.9.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "opener": { "version": "1.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", + "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", "dev": true }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, "os-tmpdir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, "osenv": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "p-finally": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", "dev": true, "requires": { - "p-try": "1.0.0" + "p-try": "^1.0.0" } }, "p-locate": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "1.2.0" + "p-limit": "^1.1.0" } }, "p-try": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, "package-json": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "dev": true, "requires": { - "got": "6.7.1", - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0", - "semver": "5.5.1" + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" } }, "pacote": { - "version": "8.1.6", - "bundled": true, - "dev": true, - "requires": { - "bluebird": "3.5.3", - "cacache": "11.2.0", - "get-stream": "3.0.0", - "glob": "7.1.3", - "lru-cache": "4.1.3", - "make-fetch-happen": "4.0.1", - "minimatch": "3.0.4", - "minipass": "2.3.3", - "mississippi": "3.0.0", - "mkdirp": "0.5.1", - "normalize-package-data": "2.4.0", - "npm-package-arg": "6.1.0", - "npm-packlist": "1.1.12", - "npm-pick-manifest": "2.1.0", - "osenv": "0.1.5", - "promise-inflight": "1.0.1", - "promise-retry": "1.1.1", - "protoduck": "5.0.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.2", - "semver": "5.5.1", - "ssri": "6.0.1", - "tar": "4.4.8", - "unique-filename": "1.1.0", - "which": "1.3.1" + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.0.tgz", + "integrity": "sha512-aUplXozRbzhaJO48FaaeClmN+2Mwt741MC6M3bevIGZwdCaP7frXzbUOfOWa91FPHoLITzG0hYaKY363lxO3bg==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "cacache": "^11.3.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^4.0.1", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^2.2.3", + "npm-registry-fetch": "^3.8.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.8", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "minipass": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } } }, "parallel-transform": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", "dev": true, "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "path-exists": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-is-inside": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", "dev": true }, "path-key": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, "performance-now": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, "pify": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, "prepend-http": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true }, "process-nextick-args": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true }, "promise-inflight": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, "promise-retry": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", "dev": true, "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" + "err-code": "^1.0.0", + "retry": "^0.10.0" }, "dependencies": { "retry": { "version": "0.10.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", "dev": true } } }, "promzard": { "version": "0.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", + "integrity": "sha1-JqXW7ox97kyxIggwWs+5O6OCqe4=", "dev": true, "requires": { - "read": "1.0.7" + "read": "1" } }, "proto-list": { "version": "1.2.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", "dev": true }, "protoduck": { - "version": "5.0.0", - "bundled": true, + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", "dev": true, "requires": { - "genfun": "4.0.1" + "genfun": "^5.0.0" } }, "prr": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, "pseudomap": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "psl": { "version": "1.1.29", - "bundled": true, + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", "dev": true }, "pump": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "pumpify": { "version": "1.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", "dev": true, "requires": { - "duplexify": "3.6.0", - "inherits": "2.0.3", - "pump": "2.0.1" + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" }, "dependencies": { "pump": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } } } }, "punycode": { "version": "1.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, "qrcode-terminal": { "version": "0.12.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", + "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==", "dev": true }, "qs": { "version": "6.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, "query-string": { - "version": "6.1.0", - "bundled": true, + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.2.0.tgz", + "integrity": "sha512-5wupExkIt8RYL4h/FE+WTg3JHk62e6fFPWtAZA9J5IWK1PfTfKkMS93HBUHcFpeYi9KsY5pFbh+ldvEyaz5MyA==", "dev": true, "requires": { - "decode-uri-component": "0.2.0", - "strict-uri-encode": "2.0.0" + "decode-uri-component": "^0.2.0", + "strict-uri-encode": "^2.0.0" } }, "qw": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/qw/-/qw-1.0.1.tgz", + "integrity": "sha1-77/cdA+a0FQwRCassYNBLMi5ltQ=", "dev": true }, "rc": { "version": "1.2.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", + "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", "dev": true, "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true } } }, "read": { "version": "1.0.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", "dev": true, "requires": { - "mute-stream": "0.0.7" + "mute-stream": "~0.0.4" } }, "read-cmd-shim": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz", + "integrity": "sha1-LV0Vd4ajfAVdIgd8MsU/gynpHHs=", "dev": true, "requires": { - "graceful-fs": "4.1.15" + "graceful-fs": "^4.1.2" } }, "read-installed": { "version": "4.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz", + "integrity": "sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc=", "dev": true, "requires": { - "debuglog": "1.0.1", - "graceful-fs": "4.1.15", - "read-package-json": "2.0.13", - "readdir-scoped-modules": "1.0.2", - "semver": "5.5.1", - "slide": "1.1.6", - "util-extend": "1.0.3" + "debuglog": "^1.0.1", + "graceful-fs": "^4.1.2", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "slide": "~1.1.3", + "util-extend": "^1.0.1" } }, "read-package-json": { "version": "2.0.13", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.0.13.tgz", + "integrity": "sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg==", "dev": true, "requires": { - "glob": "7.1.3", - "graceful-fs": "4.1.15", - "json-parse-better-errors": "1.0.2", - "normalize-package-data": "2.4.0", - "slash": "1.0.0" + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "slash": "^1.0.0" } }, "read-package-tree": { - "version": "5.2.1", - "bundled": true, + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.2.2.tgz", + "integrity": "sha512-rW3XWUUkhdKmN2JKB4FL563YAgtINifso5KShykufR03nJ5loGFlkUMe1g/yxmqX073SoYYTsgXu7XdDinKZuA==", "dev": true, "requires": { - "debuglog": "1.0.1", - "dezalgo": "1.0.3", - "once": "1.4.0", - "read-package-json": "2.0.13", - "readdir-scoped-modules": "1.0.2" + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "once": "^1.3.0", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0" } }, "readable-stream": { - "version": "2.3.6", - "bundled": true, + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", + "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, "readdir-scoped-modules": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz", + "integrity": "sha1-n6+jfShr5dksuuve4DDcm19AZ0c=", "dev": true, "requires": { - "debuglog": "1.0.1", - "dezalgo": "1.0.3", - "graceful-fs": "4.1.15", - "once": "1.4.0" + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" } }, "registry-auth-token": { "version": "3.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { - "rc": "1.2.7", - "safe-buffer": "5.1.2" + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" } }, "registry-url": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.7" + "rc": "^1.0.1" } }, "request": { "version": "2.88.0", - "bundled": true, - "dev": true, - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.8.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.2", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.1.0", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.19", - "oauth-sign": "0.9.0", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", - "tough-cookie": "2.4.3", - "tunnel-agent": "0.6.0", - "uuid": "3.3.2" + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" } }, "require-directory": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, "resolve-from": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, "retry": { "version": "0.12.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", "dev": true }, "rimraf": { - "version": "2.6.2", - "bundled": true, + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "requires": { - "glob": "7.1.3" + "glob": "^7.1.3" } }, "run-queue": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", "dev": true, "requires": { - "aproba": "1.2.0" + "aproba": "^1.1.1" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + } } }, "safe-buffer": { "version": "5.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, "safer-buffer": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, "semver": { - "version": "5.5.1", - "bundled": true, + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", "dev": true }, "semver-diff": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { - "semver": "5.5.1" + "semver": "^5.0.3" } }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "sha": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/sha/-/sha-2.0.1.tgz", + "integrity": "sha1-YDCCL70smCOUn49y7WQR7lzyWq4=", "dev": true, "requires": { - "graceful-fs": "4.1.15", - "readable-stream": "2.3.6" + "graceful-fs": "^4.1.2", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "shebang-command": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "slash": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true }, "slide": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, "smart-buffer": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.1.tgz", + "integrity": "sha512-RFqinRVJVcCAL9Uh1oVqE6FZkqsyLiVOYEZ20TqIOjuX7iFVJ+zsbs4RIghnw/pTs7mZvt8ZHhvm1ZUrR4fykg==", "dev": true }, "socks": { "version": "2.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/socks/-/socks-2.2.0.tgz", + "integrity": "sha512-uRKV9uXQ9ytMbGm2+DilS1jB7N3AC0mmusmW5TVWjNuBZjxS8+lX38fasKVY9I4opv/bY/iqTbcpFFaTwpfwRg==", "dev": true, "requires": { - "ip": "1.1.5", - "smart-buffer": "4.0.1" + "ip": "^1.1.5", + "smart-buffer": "^4.0.1" } }, "socks-proxy-agent": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz", + "integrity": "sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw==", "dev": true, "requires": { - "agent-base": "4.2.0", - "socks": "2.2.0" + "agent-base": "~4.2.0", + "socks": "~2.2.0" } }, "sorted-object": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/sorted-object/-/sorted-object-2.0.1.tgz", + "integrity": "sha1-fWMfS9OnmKJK8d/8+/6DM3pd9fw=", "dev": true }, "sorted-union-stream": { "version": "2.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/sorted-union-stream/-/sorted-union-stream-2.1.3.tgz", + "integrity": "sha1-x3lMfgd4gAUv9xqNSi27Sppjisc=", "dev": true, "requires": { - "from2": "1.3.0", - "stream-iterate": "1.2.0" + "from2": "^1.3.0", + "stream-iterate": "^1.1.0" }, "dependencies": { "from2": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/from2/-/from2-1.3.0.tgz", + "integrity": "sha1-iEE7qqX5pZfP3pIh2GmGzTwGHf0=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "1.1.14" + "inherits": "~2.0.1", + "readable-stream": "~1.1.10" } }, "isarray": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, "readable-stream": { "version": "1.1.14", - "bundled": true, + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { "version": "0.10.31", - "bundled": true, + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true } } }, "spdx-correct": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", "dev": true }, "spdx-expression-parse": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { - "version": "3.0.0", - "bundled": true, + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", + "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", "dev": true }, "sshpk": { "version": "1.14.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", "dev": true, "requires": { - "asn1": "0.2.4", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.2", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.2", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "safer-buffer": "2.1.2", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, "ssri": { "version": "6.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", "dev": true, "requires": { - "figgy-pudding": "3.5.1" + "figgy-pudding": "^3.5.1" } }, "stream-each": { "version": "1.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" } }, "stream-iterate": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/stream-iterate/-/stream-iterate-1.2.0.tgz", + "integrity": "sha1-K9fHcpbBcCpGSIuK1B95hl7s1OE=", "dev": true, "requires": { - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" + "readable-stream": "^2.1.5", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "stream-shift": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true }, "strict-uri-encode": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", "dev": true }, "string-width": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } }, "string_decoder": { - "version": "1.1.1", - "bundled": true, + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", + "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } }, "stringify-package": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.0.tgz", + "integrity": "sha512-JIQqiWmLiEozOC0b0BtxZ/AOUtdUZHCBPgqIZ2kSJJqGwgb9neo44XdTHUC4HZSGqi03hOeB7W/E8rAlKnGe9g==", "dev": true }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-eof": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, "supports-color": { "version": "5.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } }, "tar": { "version": "4.4.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", "dev": true, "requires": { - "chownr": "1.1.1", - "fs-minipass": "1.2.5", - "minipass": "2.3.5", - "minizlib": "1.1.1", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.2", - "yallist": "3.0.3" + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" }, "dependencies": { "chownr": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", "dev": true }, "minipass": { "version": "2.3.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "dev": true, "requires": { - "safe-buffer": "5.1.2", - "yallist": "3.0.3" + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" } }, "yallist": { "version": "3.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", "dev": true } } }, "term-size": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "dev": true, "requires": { - "execa": "0.7.0" + "execa": "^0.7.0" } }, "text-table": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, "through": { "version": "2.3.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, "through2": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "timed-out": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", "dev": true }, "tiny-relative-date": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz", + "integrity": "sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A==", "dev": true }, "tough-cookie": { "version": "2.4.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "dev": true, "requires": { - "psl": "1.1.29", - "punycode": "1.4.1" + "psl": "^1.1.24", + "punycode": "^1.4.1" } }, "tunnel-agent": { "version": "0.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { "version": "0.14.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true, "optional": true }, "typedarray": { "version": "0.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, "uid-number": { "version": "0.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", "dev": true }, "umask": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz", + "integrity": "sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0=", "dev": true }, "unique-filename": { - "version": "1.1.0", - "bundled": true, + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, "requires": { - "unique-slug": "2.0.0" + "unique-slug": "^2.0.0" } }, "unique-slug": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", "dev": true, "requires": { - "imurmurhash": "0.1.4" + "imurmurhash": "^0.1.4" } }, "unique-string": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", "dev": true, "requires": { - "crypto-random-string": "1.0.0" + "crypto-random-string": "^1.0.0" } }, "unpipe": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, "unzip-response": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", "dev": true }, "update-notifier": { "version": "2.5.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", "dev": true, "requires": { - "boxen": "1.3.0", - "chalk": "2.4.1", - "configstore": "3.1.2", - "import-lazy": "2.1.0", - "is-ci": "1.1.0", - "is-installed-globally": "0.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "url-parse-lax": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { - "prepend-http": "1.0.4" + "prepend-http": "^1.0.1" } }, "util-deprecate": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, "util-extend": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz", + "integrity": "sha1-p8IW0mdUUWljeztu3GypEZ4v+T8=", "dev": true }, "uuid": { "version": "3.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", "dev": true }, "validate-npm-package-license": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "validate-npm-package-name": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", "dev": true, "requires": { - "builtins": "1.0.3" + "builtins": "^1.0.3" } }, "verror": { "version": "1.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "wcwidth": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", "dev": true, "requires": { - "defaults": "1.0.3" + "defaults": "^1.0.3" } }, "which": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "wide-align": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" }, "dependencies": { "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } }, "widest-line": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", "dev": true, "requires": { - "string-width": "2.1.1" + "string-width": "^2.1.1" } }, "worker-farm": { "version": "1.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", "dev": true, "requires": { - "errno": "0.1.7" + "errno": "~0.1.7" } }, "wrap-ansi": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { - "version": "2.3.0", - "bundled": true, + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", + "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", "dev": true, "requires": { - "graceful-fs": "4.1.15", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" } }, "xdg-basedir": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", "dev": true }, "xtend": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true }, "y18n": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { "version": "11.0.0", - "bundled": true, - "dev": true, - "requires": { - "cliui": "4.1.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "9.0.2" + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", + "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" }, "dependencies": { "y18n": { "version": "3.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true } } }, "yargs-parser": { "version": "9.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" } } } }, + "npm-path": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", + "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", + "requires": { + "which": "^1.2.10" + } + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" + } + }, + "npm-which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", + "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", + "requires": { + "commander": "^2.9.0", + "npm-path": "^2.0.2", + "which": "^1.2.10" } }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nwsapi": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.1.tgz", - "integrity": "sha512-T5GaA1J/d34AC8mkrFD2O0DR17kwJ702ZOtJOsS8RpbsQZVOC2/xYFb1i/cw+xdM54JIlMuojjDOYct8GIWtwg==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==", "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } }, "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.0" } }, "object.getownpropertydescriptors": { @@ -8499,8 +10381,8 @@ "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", "dev": true, "requires": { - "define-properties": "1.1.3", - "es-abstract": "1.12.0" + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" } }, "object.omit": { @@ -8509,19 +10391,24 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" } }, + "octal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/octal/-/octal-1.0.0.tgz", + "integrity": "sha1-Y+cWKmjvvrniE1iNWOmJ0eXEUws=", + "dev": true + }, "octokit-pagination-methods": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", @@ -8532,9 +10419,16 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "^1.0.0" } }, "optimist": { @@ -8543,8 +10437,8 @@ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { - "minimist": "0.0.10", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" }, "dependencies": { "minimist": { @@ -8561,12 +10455,12 @@ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" }, "dependencies": { "wordwrap": { @@ -8583,19 +10477,19 @@ "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", "dev": true, "requires": { - "execa": "1.0.0", - "lcid": "2.0.0", - "mem": "4.1.0" + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" } }, "os-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.0.0.tgz", - "integrity": "sha512-7c74tib2FsdFbQ3W+qj8Tyd1R3Z6tuVRNNxXjJcZ4NgjIEQU9N/prVMqcW29XZPXGACqaXN3jq58/6hoaoXH6g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", "dev": true, "requires": { - "macos-release": "2.0.0", - "windows-release": "3.1.0" + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" } }, "p-defer": { @@ -8610,7 +10504,7 @@ "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", "dev": true, "requires": { - "p-reduce": "1.0.0" + "p-reduce": "^1.0.0" } }, "p-filter": { @@ -8619,28 +10513,27 @@ "integrity": "sha1-Yp0xcVAgnI/VCLoTdxPvS7kg6ds=", "dev": true, "requires": { - "p-map": "1.2.0" + "p-map": "^1.0.0" } }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, "p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", "dev": true }, "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", "dev": true, "requires": { - "p-try": "2.0.0" + "p-try": "^2.0.0" } }, "p-locate": { @@ -8649,14 +10542,13 @@ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "2.0.0" + "p-limit": "^2.0.0" } }, "p-map": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", - "dev": true + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==" }, "p-reduce": { "version": "1.0.0", @@ -8670,15 +10562,29 @@ "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", "dev": true, "requires": { - "retry": "0.12.0" + "retry": "^0.12.0" } }, "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "parse-asn1": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, "parse-github-url": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", @@ -8691,10 +10597,10 @@ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" }, "dependencies": { "is-extglob": { @@ -8709,36 +10615,18 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } } } }, - "parse-headers": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.1.tgz", - "integrity": "sha1-aug6eqJanZtwCswoaYzR8e1+lTY=", - "requires": { - "for-each": "0.3.3", - "trim": "0.0.1" - } - }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "1.3.2", - "json-parse-better-errors": "1.0.2" - } - }, - "parse-link-header": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-link-header/-/parse-link-header-1.0.1.tgz", - "integrity": "sha1-vt/g0hGK64S+deewJUGeyKYRQKc=", "requires": { - "xtend": "4.0.1" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, "parse5": { @@ -8750,8 +10638,7 @@ "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, "path-dirname": { "version": "1.0.2", @@ -8768,14 +10655,17 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, "path-parse": { "version": "1.0.6", @@ -8789,19 +10679,45 @@ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } }, "pirates": { "version": "4.0.1", @@ -8809,7 +10725,7 @@ "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", "dev": true, "requires": { - "node-modules-regexp": "1.0.0" + "node-modules-regexp": "^1.0.0" } }, "pkg-conf": { @@ -8818,8 +10734,8 @@ "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", "dev": true, "requires": { - "find-up": "2.1.0", - "load-json-file": "4.0.0" + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" }, "dependencies": { "find-up": { @@ -8828,7 +10744,7 @@ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "locate-path": { @@ -8837,8 +10753,8 @@ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "p-limit": { @@ -8847,7 +10763,7 @@ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { - "p-try": "1.0.0" + "p-try": "^1.0.0" } }, "p-locate": { @@ -8856,7 +10772,7 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "1.3.0" + "p-limit": "^1.1.0" } }, "p-try": { @@ -8868,19 +10784,47 @@ } }, "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "find-up": "3.0.0" + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.0.0.tgz", + "integrity": "sha512-zoH7ZWPkRdgwYCDVoQTzqjG8JSPANhtvLhh4KVUHyKnaUJJrNeFmWIkTcNuJmR3GLMEmGYEf2S2bjgx26JTF+Q==", + "dev": true, + "requires": { + "locate-path": "^5.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } } }, "please-upgrade-node": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz", "integrity": "sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ==", - "dev": true, "requires": { "semver-compare": "^1.0.0" } @@ -8894,8 +10838,7 @@ "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "prelude-ls": { "version": "1.1.2", @@ -8909,16 +10852,22 @@ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, + "prettier": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.17.1.tgz", + "integrity": "sha512-TzGRNvuUSmPgwivDqkZ9tM/qTGW9hqDKWOE9YHiyQdixlKbv7kvEqsmDPrcHJTKwthU774TQwZXVtaQ/mMsvjg==", + "dev": true + }, "pretty-format": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.5.0.tgz", - "integrity": "sha512-/3RuSghukCf8Riu5Ncve0iI+BzVkbRU5EeUoArKARZobREycuH5O4waxvaNIloEXdb0qwgmEAed5vTpX1HNROQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.8.0.tgz", + "integrity": "sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw==", "dev": true, "requires": { - "@jest/types": "24.5.0", - "ansi-regex": "4.1.0", - "ansi-styles": "3.2.1", - "react-is": "16.8.4" + "@jest/types": "^24.8.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" }, "dependencies": { "ansi-regex": { @@ -8929,10 +10878,11 @@ } } }, - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" + "process-es6": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/process-es6/-/process-es6-0.11.6.tgz", + "integrity": "sha1-xrs4n5qVH4K9TrFpYAEFvS/5x3g=", + "dev": true }, "process-nextick-args": { "version": "2.0.0", @@ -8946,29 +10896,54 @@ "integrity": "sha512-HTzM3UWp/99A0gk51gAegwo1QRYA7xjcZufMNe33rCclFszUYAuHe1fIN/3ZmiHeGPkUsNaRyQm1hHOfM0PKxA==", "dev": true, "requires": { - "kleur": "3.0.2", - "sisteransi": "1.0.0" + "kleur": "^3.0.2", + "sisteransi": "^1.0.0" } }, + "property-expr": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-1.5.1.tgz", + "integrity": "sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==" + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, "psl": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", - "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "q": { "version": "1.5.1", @@ -8977,9 +10952,20 @@ "dev": true }, "qs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.6.0.tgz", - "integrity": "sha512-KIJqT9jQJDQx5h5uAVPimw6yVg2SekOKu959OCtktD3FjzbpvaPr8i4zzg07DOMz+igA4W/aNM7OV8H37pFYfA==" + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "query-string": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.5.0.tgz", + "integrity": "sha512-TYC4hDjZSvVxLMEucDMySkuAS9UIzSbAiYGyA9GWCjLKB8fQpviFbjd20fD7uejCDxZS+ftSdBKE6DS+xucJFg==", + "requires": { + "decode-uri-component": "^0.2.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } }, "quick-lru": { "version": "1.1.0", @@ -8993,9 +10979,9 @@ "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", "dev": true, "requires": { - "is-number": "4.0.0", - "kind-of": "6.0.2", - "math-random": "1.0.4" + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" }, "dependencies": { "is-number": { @@ -9006,33 +10992,68 @@ } } }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "randomstring": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.1.5.tgz", + "integrity": "sha1-bfBij3XL1ZMpMNn+OrTpVqGFGMM=", + "requires": { + "array-uniq": "1.0.2" + }, + "dependencies": { + "array-uniq": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz", + "integrity": "sha1-X8w3OSB3VyPP1k1lxkvvU7+eum0=" + } + } + }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "requires": { - "deep-extend": "0.6.0", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" } }, "react-is": { - "version": "16.8.4", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.4.tgz", - "integrity": "sha512-PVadd+WaUDOAciICm/J1waJaSvgq+4rHE/K70j0PFqKhkTBsPv/82UGQJNXAngz1fOQLLxI6z1sEDmJDQhCTAA==", + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", + "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==", "dev": true }, "read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.1.1.tgz", + "integrity": "sha512-dFcTLQi6BZ+aFUaICg7er+/usEoqFdQxiEBsEMNGoipenihtxxtdrQuBXvyANCEI8VuUIVYFgeHGx9sLLvim4w==", "dev": true, "requires": { - "normalize-package-data": "2.4.0", - "parse-json": "4.0.0", - "pify": "3.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^4.0.0", + "type-fest": "^0.4.1" } }, "read-pkg-up": { @@ -9041,8 +11062,8 @@ "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", "dev": true, "requires": { - "find-up": "3.0.0", - "read-pkg": "3.0.0" + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" }, "dependencies": { "read-pkg": { @@ -9051,9 +11072,9 @@ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "load-json-file": "4.0.0", - "normalize-package-data": "2.4.0", - "path-type": "3.0.0" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" } } } @@ -9064,13 +11085,13 @@ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "realpath-native": { @@ -9079,7 +11100,7 @@ "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", "dev": true, "requires": { - "util.promisify": "1.0.0" + "util.promisify": "^1.0.0" } }, "redent": { @@ -9088,8 +11109,8 @@ "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", "dev": true, "requires": { - "indent-string": "3.2.0", - "strip-indent": "2.0.0" + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" } }, "redeyed": { @@ -9098,7 +11119,7 @@ "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", "dev": true, "requires": { - "esprima": "4.0.1" + "esprima": "~4.0.0" } }, "reflect-metadata": { @@ -9107,23 +11128,27 @@ "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", "dev": true }, + "regenerator-runtime": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==" + }, "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" } }, "registry-auth-token": { @@ -9132,8 +11157,8 @@ "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", "dev": true, "requires": { - "rc": "1.2.8", - "safe-buffer": "5.1.2" + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" } }, "remove-trailing-separator": { @@ -9143,68 +11168,68 @@ "dev": true }, "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.8.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.2", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.1.0", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.19", - "oauth-sign": "0.9.0", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", - "tough-cookie": "2.4.3", - "tunnel-agent": "0.6.0", - "uuid": "3.3.2" + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" }, "dependencies": { - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } } } }, - "request-promise": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.4.tgz", - "integrity": "sha512-8wgMrvE546PzbR5WbYxUQogUnUDfM0S7QIFZMID+J73vdFARkFy+HElj4T+MWYhpXwlLp0EQ8Zoj8xUA0he4Vg==", - "requires": { - "bluebird": "3.5.3", - "request-promise-core": "1.1.2", - "stealthy-require": "1.1.1", - "tough-cookie": "2.4.3" - } - }, "request-promise-core": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, "requires": { - "lodash": "4.17.11" + "lodash": "^4.17.11" } }, "request-promise-native": { @@ -9214,8 +11239,8 @@ "dev": true, "requires": { "request-promise-core": "1.1.2", - "stealthy-require": "1.1.1", - "tough-cookie": "2.4.3" + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" } }, "require-directory": { @@ -9225,18 +11250,18 @@ "dev": true }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", + "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", "dev": true, "requires": { - "path-parse": "1.0.6" + "path-parse": "^1.0.6" } }, "resolve-cwd": { @@ -9245,26 +11270,32 @@ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "dev": true, "requires": { - "resolve-from": "3.0.0" + "resolve-from": "^3.0.0" } }, "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, "retry": { "version": "0.12.0", @@ -9282,9 +11313,179 @@ "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rollup": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.12.3.tgz", + "integrity": "sha512-ueWhPijWN+GaPgD3l77hXih/gcDXmYph6sWeQegwBYtaqAE834e8u+MC2wT6FKIUsz1DBOyOXAQXUZB+rjWDoQ==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "@types/node": "^12.0.2", + "acorn": "^6.1.1" + }, + "dependencies": { + "@types/node": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.2.tgz", + "integrity": "sha512-5tabW/i+9mhrfEOUcLDu2xBPsHJ+X5Orqy9FKpale3SjDA17j5AEpYq5vfy3oAeAHGcvANRCO3NV3d2D6q3NiA==", + "dev": true + }, + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "dev": true + } + } + }, + "rollup-plugin-commonjs": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.0.0.tgz", + "integrity": "sha512-B8MoX5GRpj3kW4+YaFO/di2JsZkBxNjVmZ9LWjUoTAjq8N9wc7HObMXPsrvolVV9JXVtYSscflXM14A19dXPNQ==", + "dev": true, + "requires": { + "estree-walker": "^0.6.0", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.10.1", + "rollup-pluginutils": "^2.7.0" + }, + "dependencies": { + "rollup-pluginutils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.7.1.tgz", + "integrity": "sha512-3nRf3buQGR9qz/IsSzhZAJyoK663kzseps8itkYHr+Z7ESuaffEPfgRinxbCRA0pf0gzLqkNKkSb8aNVTq75NA==", + "dev": true, + "requires": { + "estree-walker": "^0.6.0", + "micromatch": "^3.1.10" + } + } + } + }, + "rollup-plugin-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", + "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", + "dev": true, + "requires": { + "rollup-pluginutils": "^2.5.0" + } + }, + "rollup-plugin-node-builtins": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.1.2.tgz", + "integrity": "sha1-JKH+1KQyV7a2Q3HYq8bOGrFFl+k=", + "dev": true, + "requires": { + "browserify-fs": "^1.0.0", + "buffer-es6": "^4.9.2", + "crypto-browserify": "^3.11.0", + "process-es6": "^0.11.2" + } + }, + "rollup-plugin-node-globals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-globals/-/rollup-plugin-node-globals-1.4.0.tgz", + "integrity": "sha512-xRkB+W/m1KLIzPUmG0ofvR+CPNcvuCuNdjVBVS7ALKSxr3EDhnzNceGkGi1m8MToSli13AzKFYH4ie9w3I5L3g==", + "dev": true, + "requires": { + "acorn": "^5.7.3", + "buffer-es6": "^4.9.3", + "estree-walker": "^0.5.2", + "magic-string": "^0.22.5", + "process-es6": "^0.11.6", + "rollup-pluginutils": "^2.3.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", + "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", + "dev": true + }, + "magic-string": { + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "dev": true, + "requires": { + "vlq": "^0.2.2" + } + } + } + }, + "rollup-plugin-node-resolve": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.0.0.tgz", + "integrity": "sha512-JUFr7DkFps3div9DYwpSg0O+s8zuSSRASUZUVNx6h6zhw2m8vcpToeS68JDPsFbmisMVSMYK0IxftngCRv7M9Q==", + "dev": true, + "requires": { + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.10.1", + "rollup-pluginutils": "^2.7.0" + }, + "dependencies": { + "rollup-pluginutils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.7.1.tgz", + "integrity": "sha512-3nRf3buQGR9qz/IsSzhZAJyoK663kzseps8itkYHr+Z7ESuaffEPfgRinxbCRA0pf0gzLqkNKkSb8aNVTq75NA==", + "dev": true, + "requires": { + "estree-walker": "^0.6.0", + "micromatch": "^3.1.10" + } + } + } + }, + "rollup-plugin-terser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.0.0.tgz", + "integrity": "sha512-W+jJ4opYnlmNyVW0vtRufs+EGf68BIJ7bnOazgz8mgz8pA9lUyrEifAhPs5y9M16wFeAyBGaRjKip4dnFBtXaw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "jest-worker": "^24.6.0", + "serialize-javascript": "^1.7.0", + "terser": "^4.0.0" + } + }, + "rollup-plugin-typescript2": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.21.1.tgz", + "integrity": "sha512-jM2tn8/fUKDRmDtH++/6CHYHv2R9dxfXnuW0rxbOq1Zrxdsg4g6w+WwbK0X2ma21WQcT9l/U9bA3RO+2SBIJ/A==", + "dev": true, + "requires": { + "fs-extra": "7.0.1", + "resolve": "1.10.1", + "rollup-pluginutils": "2.6.0", + "tslib": "1.9.3" + } + }, + "rollup-pluginutils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.6.0.tgz", + "integrity": "sha512-aGQwspEF8oPKvg37u3p7h0cYNwmJR1sCBMZGZ5b9qy8HGtETknqjzcxrDRrcAnJNXN18lBH4Q9vZYth/p4n8jQ==", "dev": true, "requires": { - "glob": "7.1.3" + "estree-walker": "^0.6.0", + "micromatch": "^3.1.10" } }, "rsvp": { @@ -9299,24 +11500,33 @@ "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", "dev": true }, + "rxjs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", + "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "requires": { + "tslib": "^1.9.0" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, "requires": { - "ret": "0.1.15" + "ret": "~0.1.10" } }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "sane": { "version": "4.1.0", @@ -9324,15 +11534,15 @@ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "dev": true, "requires": { - "@cnakazawa/watch": "1.0.3", - "anymatch": "2.0.0", - "capture-exit": "2.0.0", - "exec-sh": "0.3.2", - "execa": "1.0.0", - "fb-watchman": "2.0.0", - "micromatch": "3.1.10", - "minimist": "1.2.0", - "walker": "1.0.7" + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" } }, "sax": { @@ -9342,162 +11552,191 @@ "dev": true }, "semantic-release": { - "version": "15.13.4", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-15.13.4.tgz", - "integrity": "sha512-z7NdRqW084HVlVFaso1aWJKwWly6ZhqtSmCuQNXo5XR2KHWSqQJrRrZiksCga+0lxQgsNaKp3R5xkcpVpC4ZKQ==", - "dev": true, - "requires": { - "@semantic-release/commit-analyzer": "6.1.0", - "@semantic-release/error": "2.2.0", - "@semantic-release/github": "5.2.10", - "@semantic-release/npm": "5.1.4", - "@semantic-release/release-notes-generator": "7.1.4", - "aggregate-error": "2.2.0", - "cosmiconfig": "5.0.6", - "debug": "4.1.0", - "env-ci": "3.2.0", - "execa": "1.0.0", - "figures": "2.0.0", - "find-versions": "3.0.0", - "get-stream": "4.1.0", - "git-log-parser": "1.2.0", - "hook-std": "1.2.0", - "hosted-git-info": "2.7.1", - "lodash": "4.17.11", - "marked": "0.6.1", - "marked-terminal": "3.2.0", - "p-locate": "3.0.0", - "p-reduce": "1.0.0", - "read-pkg-up": "4.0.0", - "resolve-from": "4.0.0", - "semver": "5.5.0", - "signale": "1.4.0", - "yargs": "13.2.2" + "version": "15.13.13", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-15.13.13.tgz", + "integrity": "sha512-KXFEj9CaeFsqSaS01wG9fiiyyYIRiTO2cxeF2pZub5+U7UE2c9qNxalZiYvZ/1sIbDFJ1FLDLa5x7XWU9+lJ8w==", + "dev": true, + "requires": { + "@semantic-release/commit-analyzer": "^6.1.0", + "@semantic-release/error": "^2.2.0", + "@semantic-release/github": "^5.1.0", + "@semantic-release/npm": "^5.0.5", + "@semantic-release/release-notes-generator": "^7.1.2", + "aggregate-error": "^3.0.0", + "cosmiconfig": "^5.0.1", + "debug": "^4.0.0", + "env-ci": "^3.0.0", + "execa": "^1.0.0", + "figures": "^3.0.0", + "find-versions": "^3.0.0", + "get-stream": "^5.0.0", + "git-log-parser": "^1.2.0", + "hook-std": "^2.0.0", + "hosted-git-info": "^2.7.1", + "lodash": "^4.17.4", + "marked": "^0.6.0", + "marked-terminal": "^3.2.0", + "p-locate": "^4.0.0", + "p-reduce": "^2.0.0", + "read-pkg-up": "^5.0.0", + "resolve-from": "^5.0.0", + "semver": "^6.0.0", + "signale": "^1.2.1", + "yargs": "^13.1.0" }, "dependencies": { "aggregate-error": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-2.2.0.tgz", - "integrity": "sha512-E5n+IZkhh22/pFdUvHUU/o9z752lc+7tgHt+FXS/g6BjlbE9249dGmuS/SxIWMPhTljZJkFN+7OXE0+O5+WT8w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.0.tgz", + "integrity": "sha512-yKD9kEoJIR+2IFqhMwayIBgheLYbB3PS2OBhWae1L/ODTd/JF/30cW0bc9TqzRL3k4U41Dieu3BF4I29p8xesA==", "dev": true, "requires": { - "clean-stack": "2.0.0", - "indent-string": "3.2.0" + "clean-stack": "^2.0.0", + "indent-string": "^3.2.0" } }, "ansi-regex": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", - "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "camelcase": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", - "dev": true + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } }, - "clean-stack": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.0.0.tgz", - "integrity": "sha512-VEoL9Qh7I8s8iHnV53DaeWSt8NJ0g3khMfK6NiCPB7H657juhro+cSw2O88uo3bo0c0X5usamtXk0/Of0wXa5A==", - "dev": true + "figures": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.0.0.tgz", + "integrity": "sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } }, "get-caller-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.1.tgz", - "integrity": "sha512-SpOZHfz845AH0wJYVuZk2jWDqFmu7Xubsx+ldIpwzy5pDUpu7OJHK7QYNSA2NPlDSKQwM1GFaAkciOWjjW92Sg==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", "dev": true, "requires": { - "pump": "3.0.0" + "pump": "^3.0.0" } }, - "require-main-filename": { + "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", "dev": true }, + "read-pkg-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-5.0.0.tgz", + "integrity": "sha512-XBQjqOBtTzyol2CpsQOw8LHV0XbDZVG7xMMjmXAJomlVY03WOBRmYgDJETlvcg0H63AJvPRwT7GFi5rvOzUOKg==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^5.0.0" + } + }, "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", "dev": true }, "string-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.0.0.tgz", - "integrity": "sha512-rr8CUxBbvOZDUvc5lNIJ+OC1nPVpz+Siw9VBtUjB9b6jZehZLFt0JMCZzShFHIsI8cbhm0EsNIfWJMFV3cu3Ew==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "emoji-regex": "7.0.3", - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "5.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, "strip-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", - "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "4.0.0" + "ansi-regex": "^4.1.0" } }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, "yargs": { "version": "13.2.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz", "integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==", "dev": true, "requires": { - "cliui": "4.1.0", - "find-up": "3.0.0", - "get-caller-file": "2.0.1", - "os-locale": "3.1.0", - "require-directory": "2.1.1", - "require-main-filename": "2.0.0", - "set-blocking": "2.0.0", - "string-width": "3.0.0", - "which-module": "2.0.0", - "y18n": "4.0.0", - "yargs-parser": "13.0.0" + "cliui": "^4.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.0.0" } }, "yargs-parser": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz", - "integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.0.tgz", + "integrity": "sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA==", "dev": true, "requires": { - "camelcase": "5.2.0", - "decamelize": "1.2.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } }, "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" }, "semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=" }, "semver-regex": { "version": "2.0.0", @@ -9505,6 +11744,12 @@ "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", "dev": true }, + "serialize-javascript": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", + "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", + "dev": true + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -9515,39 +11760,45 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" }, "dependencies": { "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, "shellwords": { "version": "0.1.1", @@ -9558,8 +11809,7 @@ "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "signale": { "version": "1.4.0", @@ -9567,9 +11817,38 @@ "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", "dev": true, "requires": { - "chalk": "2.4.1", - "figures": "2.0.0", - "pkg-conf": "2.1.0" + "chalk": "^2.3.2", + "figures": "^2.0.0", + "pkg-conf": "^2.1.0" + }, + "dependencies": { + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + } + } + }, + "simple-git": { + "version": "1.113.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.113.0.tgz", + "integrity": "sha512-i9WVsrK2u0G/cASI9nh7voxOk9mhanWY9eGtWBDSYql6m49Yk5/Fan6uZsDr/xmzv8n+eQ8ahKCoEr8cvU3h+g==", + "requires": { + "debug": "^4.0.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + } } }, "sisteransi": { @@ -9579,32 +11858,35 @@ "dev": true }, "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, "requires": { - "base": "0.11.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.2", - "use": "3.1.1" + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" }, "dependencies": { "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -9613,25 +11895,22 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -9639,49 +11918,44 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" }, "dependencies": { "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } @@ -9690,18 +11964,16 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.2.0" }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -9709,30 +11981,28 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-resolve": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, "requires": { - "atob": "2.1.2", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" } }, "source-map-support": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz", - "integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==", + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", "dev": true, "requires": { - "buffer-from": "1.1.1", - "source-map": "0.6.1" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" }, "dependencies": { "source-map": { @@ -9746,7 +12016,12 @@ "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "sourcemap-codec": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz", + "integrity": "sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==", "dev": true }, "spawn-error-forwarder": { @@ -9756,19 +12031,19 @@ "dev": true }, "spdx-correct": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", "dev": true, "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", "dev": true }, "spdx-expression-parse": { @@ -9777,14 +12052,14 @@ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", + "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", "dev": true }, "split": { @@ -9793,16 +12068,20 @@ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { - "through": "2.3.8" + "through": "2" } }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, "requires": { - "extend-shallow": "3.0.2" + "extend-shallow": "^3.0.0" } }, "split2": { @@ -9811,54 +12090,57 @@ "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", "dev": true, "requires": { - "through2": "2.0.5" + "through2": "^2.0.2" } }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "sshpk": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", - "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { - "asn1": "0.2.4", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.2", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.2", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "safer-buffer": "2.1.2", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, "stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", "dev": true }, + "staged-git-files": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.1.2.tgz", + "integrity": "sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA==" + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" + "define-property": "^0.2.5", + "object-copy": "^0.1.0" }, "dependencies": { "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -9866,7 +12148,8 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "stream-combiner2": { "version": "1.1.1", @@ -9874,28 +12157,61 @@ "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", "dev": true, "requires": { - "duplexer2": "0.1.4", - "readable-stream": "2.3.6" + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" } }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" + }, + "string-argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", + "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=" + }, "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", "dev": true, "requires": { - "astral-regex": "1.0.0", - "strip-ansi": "4.0.0" + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, + "string-range": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/string-range/-/string-range-1.2.2.tgz", + "integrity": "sha1-qJPtNH5yKZvIO++78qaSqNI51d0=", + "dev": true + }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string.prototype.padend": { @@ -9904,9 +12220,9 @@ "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", "dev": true, "requires": { - "define-properties": "1.1.3", - "es-abstract": "1.12.0", - "function-bind": "1.1.1" + "define-properties": "^1.1.2", + "es-abstract": "^1.4.3", + "function-bind": "^1.0.2" } }, "string.prototype.padstart": { @@ -9915,9 +12231,9 @@ "integrity": "sha1-W8+tOfRkm7LQMSkuGbzwtRDUskI=", "dev": true, "requires": { - "define-properties": "1.1.3", - "es-abstract": "1.12.0", - "function-bind": "1.1.1" + "define-properties": "^1.1.2", + "es-abstract": "^1.4.3", + "function-bind": "^1.0.2" } }, "string_decoder": { @@ -9926,24 +12242,25 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - } + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -9955,8 +12272,7 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "strip-indent": { "version": "2.0.0", @@ -9971,12 +12287,11 @@ "dev": true }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } }, "supports-hyperlinks": { @@ -9985,8 +12300,8 @@ "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==", "dev": true, "requires": { - "has-flag": "2.0.0", - "supports-color": "5.4.0" + "has-flag": "^2.0.0", + "supports-color": "^5.0.0" }, "dependencies": { "has-flag": { @@ -9997,33 +12312,62 @@ } } }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, "symbol-tree": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", "dev": true }, + "synchronous-promise": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.9.tgz", + "integrity": "sha512-LO95GIW16x69LuND1nuuwM4pjgFGupg7pZ/4lU86AmchPKrhk0o2tpMU2unXRrqo81iAFe1YJ0nAGEVwsrZAgg==" + }, "teeny-request": { "version": "3.11.3", "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-3.11.3.tgz", "integrity": "sha512-CKncqSF7sH6p4rzCgkb/z/Pcos5efl0DmolzvlqRQUNcpRIruOhY9+T1FsIlyEbfWd7MsFpodROOwHYh2BaXzw==", "dev": true, "requires": { - "https-proxy-agent": "2.2.1", - "node-fetch": "2.3.0", - "uuid": "3.3.2" + "https-proxy-agent": "^2.2.1", + "node-fetch": "^2.2.0", + "uuid": "^3.3.2" + } + }, + "terser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.0.0.tgz", + "integrity": "sha512-dOapGTU0hETFl1tCo4t56FN+2jffoKyER9qBGoUFyZ6y7WLoKT0bF+lAYi6B6YsILcGF3q1C2FBh8QcKSCgkgA==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "test-exclude": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.1.0.tgz", - "integrity": "sha512-gwf0S2fFsANC55fSeSqpb8BYk6w3FDvwZxfNjeF6FRgvFa43r+7wRiA/Q0IxoRU37wB/LE8IQ4221BsNucTaCA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", "dev": true, "requires": { - "arrify": "1.0.1", - "minimatch": "3.0.4", - "read-pkg-up": "4.0.0", - "require-main-filename": "1.0.1" + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" } }, "text-extensions": { @@ -10050,8 +12394,16 @@ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } } }, "tmpl": { @@ -10070,18 +12422,16 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -10090,48 +12440,43 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" } }, "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" } }, + "toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=" + }, "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { - "psl": "1.1.29", - "punycode": "1.4.1" + "psl": "^1.1.28", + "punycode": "^2.1.1" } }, "tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, "requires": { - "punycode": "2.1.1" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - } + "punycode": "^2.1.0" } }, "traverse": { @@ -10140,11 +12485,6 @@ "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", "dev": true }, - "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" - }, "trim-newlines": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", @@ -10164,29 +12504,35 @@ "dev": true }, "ts-jest": { - "version": "24.0.0", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.0.0.tgz", - "integrity": "sha512-o8BO3TkMREpAATaFTrXkovMsCpBl2z4NDBoLJuWZcJJj1ijI49UnvDMfVpj+iogn/Jl8Pbhuei5nc/Ti+frEHw==", - "dev": true, - "requires": { - "bs-logger": "0.2.6", - "buffer-from": "1.1.1", - "fast-json-stable-stringify": "2.0.0", - "json5": "2.1.0", - "make-error": "1.3.5", - "mkdirp": "0.5.1", - "resolve": "1.10.0", - "semver": "5.5.0", - "yargs-parser": "10.1.0" + "version": "24.0.2", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.0.2.tgz", + "integrity": "sha512-h6ZCZiA1EQgjczxq+uGLXQlNgeg02WWJBbeT8j6nyIBRQdglqbvzDoHahTEIiS6Eor6x8mK6PfZ7brQ9Q6tzHw==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "json5": "2.x", + "make-error": "1.x", + "mkdirp": "0.x", + "resolve": "1.x", + "semver": "^5.5", + "yargs-parser": "10.x" }, "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, "yargs-parser": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" } } } @@ -10194,28 +12540,35 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" }, "tslint": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", - "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "builtin-modules": "1.1.1", - "chalk": "2.4.1", - "commander": "2.17.1", - "diff": "3.5.0", - "glob": "7.1.3", - "js-yaml": "3.13.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "resolve": "1.10.0", - "semver": "5.5.0", - "tslib": "1.9.3", - "tsutils": "2.29.0" + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.16.0.tgz", + "integrity": "sha512-UxG2yNxJ5pgGwmMzPMYh/CCnCnh0HfPgtlVRDs1ykZklufFBL1ZoTlWFRz2NQjcoEiDoRp+JyT0lhBbbH/obyA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.13.0", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + } } }, "tslint-config-airbnb": { @@ -10224,20 +12577,26 @@ "integrity": "sha512-hkaittm2607vVMe8eotANGN1CimD5tor7uoY3ypg2VTtEcDB/KGWYbJOz58t8LI4cWSyWtgqYQ5F0HwKxxhlkQ==", "dev": true, "requires": { - "tslint-consistent-codestyle": "1.15.1", - "tslint-eslint-rules": "5.4.0", - "tslint-microsoft-contrib": "5.2.1" + "tslint-consistent-codestyle": "^1.14.1", + "tslint-eslint-rules": "^5.4.0", + "tslint-microsoft-contrib": "~5.2.1" } }, + "tslint-config-prettier": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz", + "integrity": "sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg==", + "dev": true + }, "tslint-consistent-codestyle": { "version": "1.15.1", "resolved": "https://registry.npmjs.org/tslint-consistent-codestyle/-/tslint-consistent-codestyle-1.15.1.tgz", "integrity": "sha512-38Y3Dz4zcABe/PlPAQSGNEWPGVq0OzcIQR7SEU6dNujp/SgvhxhJOhIhI9gY4r0I3/TNtvVQwARWor9O9LPZWg==", "dev": true, "requires": { - "@fimbul/bifrost": "0.17.0", - "tslib": "1.9.3", - "tsutils": "2.29.0" + "@fimbul/bifrost": "^0.17.0", + "tslib": "^1.7.1", + "tsutils": "^2.29.0" } }, "tslint-eslint-rules": { @@ -10248,7 +12607,7 @@ "requires": { "doctrine": "0.7.2", "tslib": "1.9.0", - "tsutils": "3.9.1" + "tsutils": "^3.0.0" }, "dependencies": { "tslib": { @@ -10258,12 +12617,12 @@ "dev": true }, "tsutils": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.9.1.tgz", - "integrity": "sha512-hrxVtLtPqQr//p8/msPT1X1UYXUjizqSit5d9AQ5k38TcV38NyecL5xODNxa73cLe/5sdiJ+w1FqzDhRBA/anA==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.10.0.tgz", + "integrity": "sha512-q20XSMq7jutbGB8luhKKsQldRKWvyBO2BGqni3p4yq8Ys9bEP/xQw3KepKmMRt9gJ4lvQSScrihJrcKdKoSU7Q==", "dev": true, "requires": { - "tslib": "1.9.0" + "tslib": "^1.8.1" } } } @@ -10274,7 +12633,7 @@ "integrity": "sha512-PDYjvpo0gN9IfMULwKk0KpVOPMhU6cNoT9VwCOLeDl/QS8v8W2yspRpFFuUS7/c5EIH/n8ApMi8TxJAz1tfFUA==", "dev": true, "requires": { - "tsutils": "2.28.0" + "tsutils": "^2.27.2 <2.29.0" }, "dependencies": { "tsutils": { @@ -10283,7 +12642,7 @@ "integrity": "sha512-bh5nAtW0tuhvOJnx1GLRn5ScraRLICGyJV5wJhtRWOLsxW70Kk5tZtpK3O/hW6LDnqKS9mlUMPZj9fEMJ0gxqA==", "dev": true, "requires": { - "tslib": "1.9.3" + "tslib": "^1.8.1" } } } @@ -10294,22 +12653,23 @@ "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", "dev": true, "requires": { - "tslib": "1.9.3" + "tslib": "^1.8.1" } }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true + "dev": true }, "type-check": { "version": "0.3.2", @@ -10317,7 +12677,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "1.1.2" + "prelude-ls": "~1.1.2" } }, "type-fest": { @@ -10326,21 +12686,33 @@ "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", "dev": true }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typedarray-to-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-1.0.4.tgz", + "integrity": "sha1-m7i6DoQfs/TPH+fCRenz+opf6Zw=", + "dev": true + }, "typescript": { - "version": "3.3.4000", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.4000.tgz", - "integrity": "sha512-jjOcCZvpkl2+z7JFn0yBOoLQyLoIkNZAs/fYJkUG6VKy6zLPHJGfQJYFHzibB6GJaF/8QrcECtlQ5cpvRHSMEA==", + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz", + "integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw==", "dev": true }, "uglify-js": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", - "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.11.tgz", + "integrity": "sha512-izPJg8RsSyqxbdnqX36ExpbH3K7tDBsAU/VfNv89VkMFy3z39zFjunQGsSHOlGlyIfGLGprGeosgQno3bo2/Kg==", "dev": true, "optional": true, "requires": { - "commander": "2.17.1", - "source-map": "0.6.1" + "commander": "~2.20.0", + "source-map": "~0.6.1" }, "dependencies": { "source-map": { @@ -10356,44 +12728,50 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "dev": true, "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" }, "dependencies": { "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "set-value": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" } } } }, + "universal-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universal-url/-/universal-url-2.0.0.tgz", + "integrity": "sha512-3DLtXdm/G1LQMCnPj+Aw7uDoleQttNHp2g5FnNQKR6cP6taNWS1b/Ehjjx4PVyvejKi3TJyu8iBraKM4q3JQPg==", + "requires": { + "hasurl": "^1.0.0", + "whatwg-url": "^7.0.0" + } + }, "universal-user-agent": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-2.0.3.tgz", - "integrity": "sha512-eRHEHhChCBHrZsA4WEhdgiOKgdvgrMIHwnwnqD0r5C6AO8kwKcG7qSku3iXdhvHL3YvsS9ZkSGN8h/hIpoFC8g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-2.1.0.tgz", + "integrity": "sha512-8itiX7G05Tu3mGDTdNY2fB4KJ8MgZLS54RdG6PkkfwMAavrXu1mV/lls/GABx9O3Rw4PnTtasxrvbMQoBYY92Q==", "dev": true, "requires": { - "os-name": "3.0.0" + "os-name": "^3.0.0" } }, "universalify": { @@ -10406,28 +12784,25 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" + "has-value": "^0.3.1", + "isobject": "^3.0.0" }, "dependencies": { "has-value": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" }, "dependencies": { "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, "requires": { "isarray": "1.0.0" } @@ -10437,21 +12812,29 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" } } }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" }, "url-join": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", - "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=" + "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", + "dev": true }, "url-template": { "version": "2.0.8", @@ -10468,8 +12851,7 @@ "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, "utf8-bar": { "version": "0.1.0", @@ -10489,14 +12871,15 @@ "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", "dev": true, "requires": { - "define-properties": "1.1.3", - "object.getownpropertydescriptors": "2.0.3" + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" } }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "validate-npm-package-license": { "version": "3.0.4", @@ -10504,27 +12887,34 @@ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + }, "w3c-hr-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", "dev": true, "requires": { - "browser-process-hrtime": "0.1.3" + "browser-process-hrtime": "^0.1.2" } }, "walker": { @@ -10533,14 +12923,13 @@ "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", "dev": true, "requires": { - "makeerror": "1.0.11" + "makeerror": "1.0.x" } }, "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" }, "whatwg-encoding": { "version": "1.0.5", @@ -10558,23 +12947,21 @@ "dev": true }, "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "dev": true, + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", "requires": { - "lodash.sortby": "4.7.0", - "tr46": "1.0.1", - "webidl-conversions": "4.0.2" + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -10584,29 +12971,12 @@ "dev": true }, "windows-release": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.1.0.tgz", - "integrity": "sha512-hBb7m7acFgQPQc222uEQTmdcGLeBmQLNLFIh0rDk3CwFOBrfjefLzEfEfmpMq8Af/n/GnFf3eYf203FY1PmudA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", + "integrity": "sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==", "dev": true, "requires": { - "execa": "0.10.0" - }, - "dependencies": { - "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "dev": true, - "requires": { - "cross-spawn": "6.0.5", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - } - } + "execa": "^1.0.0" } }, "word-wrap": { @@ -10622,42 +12992,39 @@ "dev": true }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^3.0.0" } } } @@ -10665,8 +13032,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { "version": "2.4.1", @@ -10674,9 +13040,9 @@ "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" } }, "ws": { @@ -10685,18 +13051,7 @@ "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", "dev": true, "requires": { - "async-limiter": "1.0.0" - } - }, - "xhr": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", - "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==", - "requires": { - "global": "4.3.2", - "is-function": "1.0.1", - "parse-headers": "2.0.1", - "xtend": "4.0.1" + "async-limiter": "~1.0.0" } }, "xml-name-validator": { @@ -10706,9 +13061,10 @@ "dev": true }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.2.0.tgz", + "integrity": "sha1-7vax8ZjByN6vrYsXZaBNrUoBxak=", + "dev": true }, "y18n": { "version": "4.0.0", @@ -10722,18 +13078,57 @@ "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", "dev": true, "requires": { - "cliui": "4.1.0", - "decamelize": "1.2.0", - "find-up": "3.0.0", - "get-caller-file": "1.0.3", - "os-locale": "3.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "4.0.0", - "yargs-parser": "11.1.1" + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "yargs-parser": { @@ -10742,16 +13137,21 @@ "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", "dev": true, "requires": { - "camelcase": "5.2.0", - "decamelize": "1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", - "dev": true - } + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yup": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.27.0.tgz", + "integrity": "sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ==", + "requires": { + "@babel/runtime": "^7.0.0", + "fn-name": "~2.0.1", + "lodash": "^4.17.11", + "property-expr": "^1.5.0", + "synchronous-promise": "^2.0.6", + "toposort": "^2.0.2" } } } diff --git a/package.json b/package.json index da9c87e0c..6d5ae7224 100644 --- a/package.json +++ b/package.json @@ -1,83 +1,94 @@ { "name": "gitlab", - "version": "4.5.1", + "version": "5.0.0-rc.17", "description": "Full NodeJS implementation of the GitLab API. Supports Promises, Async/Await.", - "main": "dist/latest/index.js", - "engines": { - "node": ">=8.9.0" - }, - "scripts": { - "prepush": "npm run lint", - "commit": "npx git-cz", - "build:clean": "rimraf -rf dist && mkdirp dist", - "build:es6": "tsc -p tsconfig.dist.json", - "build:es5": "tsc -p tsconfig-es5.dist.json", - "build": "npm run build:clean && npm run build:es6 && npm run build:es5", - "lint": "tslint 'src/**/*.{ts,tsx}' --format stylish --project tsconfig.json", - "test:bundles": "jest test/tests/bundles", - "test:infrastructure": "jest test/tests/infrastructure", - "test:services": "jest test/tests/services", - "test": "jest --debug --runInBand && codecov", - "test-with-token": "PERSONAL_ACCESS_TOKEN=$(docker exec -it gitlab bash -lc 'printf \"%q\" \"${PERSONAL_ACCESS_TOKEN}\"') GITLAB_URL=$(docker exec -it gitlab bash -lc 'printf \"%q\" \"${GITLAB_URL}\"') npm run test", - "prepublishOnly": "npm run build", - "semantic-release": "semantic-release" - }, - "repository": { - "type": "git", - "url": "https://github.com/jdalrymple/node-gitlab" - }, "keywords": [ - "gitlab", "api", - "es6", + "browser", "es5", - "request" + "es6", + "gitlab", + "ky" ], + "homepage": "https://github.com/jdalrymple/node-gitlab#readme", "bugs": { "url": "https://github.com/jdalrymple/node-gitlab/issues" }, - "author": "Justin Dalrymple ", + "repository": { + "type": "git", + "url": "https://github.com/jdalrymple/node-gitlab" + }, "license": "MIT", - "readmeFilename": "README.md", + "author": { + "name": "Justin Dalrymple", + "email": "justin.s.dalrymple@gmail.com" + }, + "files": [ + "dist", + "typings" + ], + "main": "dist/index.js", + "module": "dist/index.es.js", + "browser": "dist/index.browser.js", + "typings": "dist/index.d.ts", + "scripts": { + "build": "tsc && rollup -c", + "commit": "npx git-cz", + "coverage": "codecov", + "lint": "tslint -p . -t stylish", + "lint:doc:fix": "prettier --write './*.json' './*.yml' './*.md'", + "lint:fix": "npm run lint -- --fix", + "prepublishOnly": "npm run build", + "release": "semantic-release", + "test:integration": "jest test/integration -c=jest.config.json", + "test:unit": "jest test/unit --debug -c=jest.config.json" + }, "config": { "commitizen": { "path": "./node_modules/cz-conventional-changelog" } }, - "files": [ - "dist" - ], + "dependencies": { + "form-data": "^2.3.3", + "humps": "^2.0.1", + "ky": "^0.11.0", + "ky-universal": "^0.2.1", + "li": "^1.3.0", + "lint-staged": "^8.1.7", + "query-string": "^6.5.0", + "randomstring": "^1.1.5", + "universal-url": "^2.0.0" + }, "devDependencies": { "@semantic-release/changelog": "^3.0.2", "@semantic-release/git": "^7.0.8", - "@semantic-release/npm": "^5.1.4", + "@semantic-release/npm": "^5.1.7", + "@types/form-data": "^2.2.1", "@types/humps": "^1.1.2", - "@types/jest": "^24.0.11", - "@types/parse-link-header": "^1.0.0", - "@types/qs": "^6.5.2", - "@types/request-promise": "^4.1.42", - "@types/url-join": "^4.0.0", - "@types/util.promisify": "^1.0.0", - "codecov": "^3.2.0", + "@types/jest": "^24.0.13", + "codecov": "^3.5.0", "cz-conventional-changelog": "^2.1.0", - "husky": "^2.0.0", - "jest": "^24.5.0", + "husky": "^2.3.0", + "jest": "^24.8.0", "jest-extended": "^0.11.1", "jest-tap-reporter": "^1.9.0", - "semantic-release": "^15.13.3", - "ts-jest": "^24.0.0", - "tslint": "^5.14.0", + "prettier": "^1.17.1", + "rollup": "^1.12.3", + "rollup-plugin-commonjs": "^10.0.0", + "rollup-plugin-json": "^4.0.0", + "rollup-plugin-node-builtins": "^2.1.2", + "rollup-plugin-node-globals": "^1.4.0", + "rollup-plugin-node-resolve": "^5.0.0", + "rollup-plugin-terser": "^5.0.0", + "rollup-plugin-typescript2": "^0.21.1", + "semantic-release": "^15.13.13", + "ts-jest": "^24.0.2", + "tslint": "^5.16.0", "tslint-config-airbnb": "^5.11.1", - "typescript": "^3.3.4000" + "tslint-config-prettier": "^1.18.0", + "typescript": "^3.4.5" }, - "dependencies": { - "humps": "^2.0.1", - "parse-link-header": "^1.0.1", - "qs": "^6.6.0", - "request": "^2.88.0", - "request-promise": "^4.2.4", - "request-promise-core": "^1.1.2", - "url-join": "^4.0.0", - "xhr": "^2.5.0" + "engines": { + "node": ">=8.9.0" } } diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 000000000..97e2e6d76 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,71 @@ +import ts from 'rollup-plugin-typescript2'; +import resolve from 'rollup-plugin-node-resolve'; +import commonjs from 'rollup-plugin-commonjs'; +import json from 'rollup-plugin-json'; +import { terser } from "rollup-plugin-terser"; +import builtins from 'rollup-plugin-node-builtins'; +import globals from 'rollup-plugin-node-globals'; +import typescript from 'typescript'; +import pkg from './package.json'; + +export default [ + // Browser-friendly UMD build + { + input: 'src/index.ts', + output: { + file: pkg.browser, + name: 'node-gitlab', + format: 'umd', + exports: 'named', + globals: { + 'li': 'Li', + 'humps': 'Humps', + 'query-string': 'QueryString', + 'randomstring': 'RandomString', + 'ky-universal': 'Ky', + 'form-data': 'FormData', + 'universal-url':'universal-url' + } + }, + external: [...Object.keys(pkg.dependencies)], + plugins: [ + globals(), + builtins(), + resolve({ browser: true }), // so Rollup can find `ms` + commonjs(), // so Rollup can convert `ms` to an ES module + json(), + ts({ typescript }), + terser(), + ], + }, + + // CommonJS (for Node) (for bundlers) build. + { + input: 'src/index.ts', + output: { + file: pkg.main, + format: 'cjs', + }, + external: [...Object.keys(pkg.dependencies)], + plugins: [ + globals(), + builtins(), + ts({ typescript }), + terser(), + ], + }, + + // ES module (for bundlers) build. + { + input: 'src/index.ts', + output: { + file: pkg.module, + format: 'es', + }, + external: [...Object.keys(pkg.dependencies)], + plugins: [ + ts({ typescript }), + terser(), + ], + }, +]; diff --git a/src/index.ts b/src/index.ts index cdc591901..be140d2be 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,11 +1,16 @@ +import { shim } from 'universal-url'; + +// Add URL shim +shim(); + +import { bundler } from './infrastructure'; import * as APIServices from './services'; -import { Bundler } from './infrastructure'; -// All seperatly +// All separately export * from './services'; // Groups -export const GroupsBundle = Bundler({ +export const GroupsBundle = bundler({ Groups: APIServices.Groups, GroupAccessRequests: APIServices.GroupAccessRequests, GroupBadges: APIServices.GroupBadges, @@ -22,7 +27,7 @@ export const GroupsBundle = Bundler({ }); // Users -export const UsersBundle = Bundler({ +export const UsersBundle = bundler({ Users: APIServices.Users, UserCustomAttributes: APIServices.UserCustomAttributes, UserEmails: APIServices.UserEmails, @@ -32,7 +37,7 @@ export const UsersBundle = Bundler({ }); // Projects -export const ProjectsBundle = Bundler({ +export const ProjectsBundle = bundler({ Branches: APIServices.Branches, Commits: APIServices.Commits, CommitDiscussions: APIServices.CommitDiscussions, @@ -77,4 +82,4 @@ export const ProjectsBundle = Bundler({ }); // All initialized -export default Bundler(APIServices); +export const Gitlab = bundler(APIServices); diff --git a/src/infrastructure/BaseService.ts b/src/infrastructure/BaseService.ts index 1b918a56a..068bd8d64 100644 --- a/src/infrastructure/BaseService.ts +++ b/src/infrastructure/BaseService.ts @@ -1,45 +1,29 @@ -import URLJoin from 'url-join'; -import Request from 'request-promise'; -import XMLHttpRequester, { XhrStaticPromisified } from './XMLHttpRequester'; +import { KyRequester } from './KyRequester'; -interface BaseModelOptions { - url?: string; - token?: string; - jobToken?: string; - oauthToken?: string; - useXMLHttpRequest?: boolean; - version?: string; - sudo?: string | number; - rejectUnauthorized?: boolean; -} - -export type BaseModelContructorOptions = - | BaseModelOptions & Required> - | BaseModelOptions & Required> - | BaseModelOptions & Required>; -class BaseModel { - public url: string; - public readonly headers: { [header: string]: string | number}; +export class BaseService { + public readonly url: string; + public readonly requester: Requester; + public readonly headers: { [header: string]: string }; + public readonly camelize: boolean; public readonly rejectUnauthorized: boolean; - public readonly requester: XhrStaticPromisified; - public readonly useXMLHttpRequest: boolean; constructor({ token, jobToken, oauthToken, sudo, - url = 'https://gitlab.com', - useXMLHttpRequest = false, + host = 'https://gitlab.com', + url = '', version = 'v4', + camelize = false, rejectUnauthorized = true, - }: BaseModelContructorOptions) { - this.url = URLJoin(url, 'api', version); + requester = KyRequester, + }: BaseServiceOptions) { + this.url = [host, 'api', version, url].join('/'); this.headers = {}; - this.requester = useXMLHttpRequest - ? XMLHttpRequester : (Request as temporaryAny as XhrStaticPromisified); - this.useXMLHttpRequest = useXMLHttpRequest; this.rejectUnauthorized = rejectUnauthorized; + this.camelize = camelize; + this.requester = requester; // Handle auth tokens if (oauthToken) this.headers.authorization = `Bearer ${oauthToken}`; @@ -47,8 +31,6 @@ class BaseModel { else if (token) this.headers['private-token'] = token; // Set sudo - if (sudo) this.headers['Sudo'] = sudo; + if (sudo) this.headers['Sudo'] = `${sudo}`; } } - -export default BaseModel; diff --git a/src/infrastructure/Bundler.ts b/src/infrastructure/Bundler.ts deleted file mode 100644 index bc02bcb8d..000000000 --- a/src/infrastructure/Bundler.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { BaseService } from '.'; -import { BaseModelContructorOptions } from './BaseService'; - -function Bundler( - services: T, -): new (baseOptions: BaseModelContructorOptions) => { [K in keyof T]: InstanceType } { - const combined = { ...services as object } as T; - interface BundleClass { - [K: string]: BaseService; - } - return class Bundle implements BundleClass { - [K: string]: any; - constructor(baseOptions: BaseModelContructorOptions) { - Object.keys(combined).forEach((serviceName) => { - this[serviceName] = new combined[serviceName](baseOptions); - }); - } - } as temporaryAny; -} - -export default Bundler; diff --git a/src/infrastructure/KyRequester.ts b/src/infrastructure/KyRequester.ts new file mode 100644 index 000000000..d97431602 --- /dev/null +++ b/src/infrastructure/KyRequester.ts @@ -0,0 +1,61 @@ +import Ky from 'ky-universal'; +import { decamelizeKeys } from 'humps'; +import { stringify } from 'query-string'; +import { skipAllCaps } from './Utils'; + +const methods = ['get', 'post', 'put', 'delete']; +const KyRequester = {} as Requester; + +function responseHeadersAsObject(response) { + const headers = {} + const keyVals = [...response.headers.entries()] + + keyVals.forEach(([key, val]) => { + headers[key] = val + }) + + return headers +} + +function defaultRequest( + service: any, + endpoint: string, + { body, query, sudo }: DefaultRequestOptions, +) { + const headers = new Headers(service.headers); + + if (sudo) headers.append('sudo', `${sudo}`); + + return [ + endpoint, + { + timeout: 30000, + headers, + searchParams: stringify(decamelizeKeys(query || {}), { arrayFormat: 'bracket' }), + prefixUrl: service.url, + json: typeof body === 'object' ? decamelizeKeys(body, skipAllCaps) : body, + rejectUnauthorized: service.rejectUnauthorized, + }, + ]; +} + +methods.forEach(m => { + KyRequester[m] = async function(service, endpoint, options) { + try { + const response = await Ky[m](...defaultRequest(service, endpoint, options)); + const { status } = response; + const headers = responseHeadersAsObject(response); + let body = await response.json(); + + if (typeof body === 'object') body = body || {}; + + return { body, headers, status }; + } catch(e) { + console.error(e) + console.error(...defaultRequest(service, endpoint, options)) + throw(e) + } + }; +}); + +export { KyRequester }; diff --git a/src/infrastructure/RequestHelper.ts b/src/infrastructure/RequestHelper.ts index f3251f483..a1beaf75a 100644 --- a/src/infrastructure/RequestHelper.ts +++ b/src/infrastructure/RequestHelper.ts @@ -1,283 +1,100 @@ -import Humps from 'humps'; -import LinkParser from 'parse-link-header'; -import QS from 'qs'; -import URLJoin from 'url-join'; -import StreamableRequest from 'request'; -import { BaseService } from '.'; -import { CommitAction } from '../services/Commits'; +import Li from 'li'; +import { camelizeKeys } from 'humps'; +import { BaseService } from './BaseService'; -export interface RequestParametersInput { - url?: string; - headers: import('./BaseService').default['headers']; - json?: boolean; - body?: Object; - qs?: Object; - qsStringifyOptions? : Object; - formData?: temporaryAny; - resolveWithFullResponse?: boolean; - rejectUnauthorized?: boolean; -} - -interface GetPaginatedOptions { - showPagination?: boolean; - maxPages?: number; - perPage?: number; - page?: number; - position?: temporaryAny; -} - -type RequestParametersOutput = RequestParametersInput & - Required>; - -export async function wait(ms: number) { - return new Promise(resolve => setTimeout(resolve, ms)); -} - -function defaultRequest( - { url, useXMLHttpRequest, rejectUnauthorized }: BaseService, +export async function get( + service: BaseService, endpoint: string, - { headers, body, qs, formData, resolveWithFullResponse = false }: RequestParametersInput, -): RequestParametersOutput { - const params: RequestParametersOutput = { - url: URLJoin(url, endpoint), - headers, - json: true, + options: PaginatedRequestOptions = {}, +): Promise { + const { showPagination, maxPages, sudo, ...query } = options; + const response = await service.requester.get(service, endpoint, { + query, + sudo, + }); + const { headers } = response; + let { body } = response; + let pagination = { + total: headers['x-total'], + next: parseInt(headers['x-next-page'], 10) || null, + current: parseInt(headers['x-page'], 10) || 1, + previous: headers['x-prev-page'] || null, + perPage: headers['x-per-page'], + totalPages: headers['x-total-pages'], }; - if (body) params.body = Humps.decamelizeKeys(body); - - if (qs) { - if (useXMLHttpRequest) { - // The xhr package doesn't have a way of passing in a qs object until v3 - params.url = URLJoin(params.url, `?${QS.stringify(Humps.decamelizeKeys(qs), { arrayFormat: 'brackets' })}`); - } else { - params.qs = Humps.decamelizeKeys(qs); - params.qsStringifyOptions = { arrayFormat: 'brackets' }; - } - } + const underLimit = maxPages ? pagination.current < maxPages : true; - if (formData) params.formData = formData; + // Camelize response body if specified + if (service.camelize) body = camelizeKeys(body); - params.resolveWithFullResponse = resolveWithFullResponse; + // Rescurse through pagination results + if (!query.page && underLimit && pagination.next) { + const { next } = Li.parse(headers.link); + const more = await get(service, next.replace(/.+\/api\/v\d\//, ''), { + maxPages, + sudo, + showPagination: true + }) as PaginationResponse; - params.rejectUnauthorized = rejectUnauthorized; + pagination = more.pagination; + body = [...body, ...more.data]; + } - return params; + return (query.page || body.length > 0) && showPagination ? { data: body, pagination } : body; } -function getStream(service: BaseService, endpoint: string, options: RequestOptions = {}) { - if (service.useXMLHttpRequest) { - throw new Error( - `Cannot use streaming functionality with XMLHttpRequest. Please instantiate without this - option to use streaming`, - ); +export function stream( + service: BaseService, + endpoint: string, + options: BaseRequestOptions = {}, +) { + if (typeof service.requester.stream !== 'function') { + throw new Error('Stream method is not implementated in requester!'); } - const requestOptions = defaultRequest(service, endpoint, { - headers: service.headers, - qs: options, + return service.requester.stream(service, endpoint, { + query: options, }); - - return StreamableRequest.get(requestOptions); } -async function getPaginated( +export async function post( service: BaseService, endpoint: string, - options: GetPaginatedOptions = {}, -) { - const { showPagination, maxPages, ...queryOptions } = options; - const requestOptions = defaultRequest(service, endpoint, { - headers: service.headers, - qs: queryOptions, - resolveWithFullResponse: true, + options: BaseRequestOptions = {}, +): Promise { + const { sudo, ...body } = options; + const response = await service.requester.post(service, endpoint, { + body, + sudo, }); - const response = await service.requester.get(requestOptions); - const links = LinkParser(response.headers.link) || {}; - const page = response.headers['x-page']; - const underMaxPageLimit = maxPages ? page < maxPages : true; - let more = []; - let data: temporaryAny; - - // If not looking for a singular page and still under the max pages limit - // AND their is a next page, paginate - if (!queryOptions.page && underMaxPageLimit && links.next) { - // If redirected from http:// to https://, need to update service.url to avoid url inception - if (service.url.slice(0, 5) === 'http:' && links.next.url.slice(0, 5) === 'https') { - service.url = service.url.replace('http:', 'https:'); - } - more = await getPaginated(service, links.next.url.replace(service.url, ''), options); - data = [...response.body, ...more]; - } else { - data = response.body; - } - - if ((queryOptions.page || maxPages) && showPagination) { - return { - data, - pagination: { - total: response.headers['x-total'], - next: response.headers['x-next-page'] || null, - current: response.headers['x-page'] || null, - previous: response.headers['x-prev-page'] || null, - perPage: response.headers['x-per-page'], - totalPages: response.headers['x-total-pages'], - }, - }; - } - - return data; + return response.body; } -type RequestType = 'post' | 'get' | 'put' | 'delete'; +export async function put( + service: BaseService, + endpoint: string, + options: BaseRequestOptions = {}, +): Promise { + const { sudo, ...body } = options; + const response = await service.requester.put(service, endpoint, { + body, + }); -export interface RequestOptions { - targetIssueId?: string; - targetProjectId?: string; - content?: string; - id?: string; - sourceBranch?: string; - targetBranch?: string; - /** The duration in human format. e.g: 3h30m */ - duration?: string; - domain?: string; - cron?: temporaryAny; - description?: string; - file?: { - value: Buffer; - options: { - filename: string; - contentType: 'application/octet-stream'; - }; - }; - path?: string; - namespace?: string; - visibility?: string; - code?: string; - fileName?: string; - from?: string; - to?: string; - sha?: string; - runnerId?: string; - ref?: string; - scope?: string; - url?: string; - scopes?: temporaryAny; - expiresAt?: string; - note?: string; - actions?: CommitAction[]; - commitMessage?: string; - branch?: string; - body?: string | temporaryAny; - title?: string; - name?: string; - labelId?: temporaryAny; - accessLevel?: number; - userId?: UserId; - position?: temporaryAny; - value?: string; - linkUrl?: string; - imageUrl?: string; - key?: string; - action?: string; - targetType?: string; - email?: string; - password?: string; - search?: string; - public?: boolean; - text?: string; - token?: string; - maxPages?: number; + return response.body; } -class RequestHelper { - static async request( - type: RequestType, - service: BaseService, - endpoint: string, - options: RequestOptions = {}, - form = false, - stream = false, - ): Promise { - try { - switch (type) { - case 'get': - if (stream) return await getStream(service, endpoint, options); - return await getPaginated(service, endpoint, options); - - case 'post': { - const requestOptions = defaultRequest(service, endpoint, { - headers: service.headers, - [form ? 'formData' : 'body']: options, - }); - - return await service.requester.post(requestOptions); - } - - case 'put': { - const requestOptions = defaultRequest(service, endpoint, { - headers: service.headers, - body: options, - }); - - return await service.requester.put(requestOptions); - } - - case 'delete': { - const requestOptions = defaultRequest(service, endpoint, { - headers: service.headers, - qs: options, - }); - - return await service.requester.delete(requestOptions); - } - - default: - throw new Error(`Unknown request type ${type}`); - } - } catch (err) { - await RequestHelper.handleRequestError(err); - return RequestHelper.request(type, service, endpoint, options, form, stream); - } - } - - static async handleRequestError(err: temporaryAny) { - if ( - !err.response || - !err.response.headers || - !err.response.headers['retry-after'] || - parseInt(err.statusCode, 10) !== 429 - ) { - throw err; - } - - const sleepTime = parseInt(err.response.headers['retry-after'], 10); - - if (!sleepTime) throw err; - return wait(sleepTime * 1000); - } - - static get( - service: BaseService, - endpoint: string, - options: RequestOptions = {}, - { stream = false } = {}, - ) { - return RequestHelper.request('get', service, endpoint, options, false, stream); - } - - static post(service: BaseService, endpoint: string, options: RequestOptions = {}, form = false) { - return RequestHelper.request('post', service, endpoint, options, form); - } - - static put(service: BaseService, endpoint: string, options: RequestOptions = {}) { - return RequestHelper.request('put', service, endpoint, options); - } +export async function del( + service: BaseService, + endpoint: string, + options: BaseRequestOptions = {}, +): Promise { + const { sudo, ...query } = options; + const response = await service.requester.delete(service, endpoint, { + query, + sudo, + }); - static delete(service: BaseService, endpoint: string, options: RequestOptions = {}) { - return RequestHelper.request('delete', service, endpoint, options); - } + return response.body; } - -export default RequestHelper; diff --git a/src/infrastructure/Utils.ts b/src/infrastructure/Utils.ts new file mode 100644 index 000000000..fb69d3e92 --- /dev/null +++ b/src/infrastructure/Utils.ts @@ -0,0 +1,11 @@ +export function bundler(services: T) { + return (function Bundle(options?: any) { + Object.entries(services || {}).forEach(([name, ser]) => { + this[name] = new ser(options); + }); + } as any) as Bundle; +} + +export function skipAllCaps(key, convert, options) { + return /^[A-Z0-9_]+$/.test(key) ? key : convert(key, options); +} diff --git a/src/infrastructure/XMLHttpRequester.ts b/src/infrastructure/XMLHttpRequester.ts deleted file mode 100644 index 034979f4b..000000000 --- a/src/infrastructure/XMLHttpRequester.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { StatusCodeError } from 'request-promise-core/errors'; -import { promisify } from 'util'; -import XHR, { XhrUriConfig, XhrUrlConfig } from 'xhr'; -import { wait } from './RequestHelper'; - -export interface XhrInstancePromisified { - (options: XhrUriConfig | XhrUrlConfig): Promise; -} - -export interface XhrStaticPromisified extends XhrInstancePromisified { - del: XhrInstancePromisified; - delete: XhrInstancePromisified; - get: XhrInstancePromisified; - head: XhrInstancePromisified; - patch: XhrInstancePromisified; - post: XhrInstancePromisified; - put: XhrInstancePromisified; -} - -interface XhrConfgExtraParams { - resolveWithFullResponse?: boolean; -} - -function promisifyWithRetry(fn: F): XhrInstancePromisified { - const promisifiedFn = promisify(fn); - - return async function getResponse( - opts: XhrUriConfig & XhrConfgExtraParams | XhrUrlConfig & XhrConfgExtraParams, - ) { - const response = await promisifiedFn(opts); - const sleepTime = parseInt(response.headers['retry-after'], 10); - if (response.statusCode === 429 && sleepTime) { - await wait(sleepTime * 1000); - } else if (response.statusCode >= 400 && response.statusCode <= 599) { - throw new StatusCodeError(response.statusCode, response.body, {}, null); - } - - return opts.resolveWithFullResponse ? response : response.body; - } as XhrInstancePromisified; -} - -const promisifyWithRetryDelete = promisifyWithRetry(XHR.del); -const XMLHttpRequesterPromisifiedExtras = { - del: promisifyWithRetryDelete, - delete: promisifyWithRetryDelete, - get: promisifyWithRetry(XHR.get), - head: promisifyWithRetry(XHR.head), - patch: promisifyWithRetry(XHR.patch), - post: promisifyWithRetry(XHR.post), - put: promisifyWithRetry(XHR.put), -}; - -const XMLHttpRequester: XhrStaticPromisified = Object.assign( - promisifyWithRetry(XHR), - XMLHttpRequesterPromisifiedExtras, -); - -export default XMLHttpRequester; diff --git a/src/infrastructure/index.ts b/src/infrastructure/index.ts index 54c191e3e..f38b5fdeb 100644 --- a/src/infrastructure/index.ts +++ b/src/infrastructure/index.ts @@ -1,3 +1,6 @@ -export { default as BaseService } from './BaseService'; -export { default as RequestHelper } from './RequestHelper'; -export { default as Bundler } from './Bundler'; +import * as RequestHelper from './RequestHelper'; + +export { BaseService } from './BaseService'; +export { bundler } from './Utils'; +export { KyRequester } from './KyRequester'; +export { RequestHelper }; diff --git a/src/services/ApplicationSettings.ts b/src/services/ApplicationSettings.ts index 310b62cbf..be3202309 100644 --- a/src/services/ApplicationSettings.ts +++ b/src/services/ApplicationSettings.ts @@ -1,14 +1,13 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class ApplicationSettings extends BaseService { - all() { - return RequestHelper.get(this, 'application/settings'); + all(options?: Sudo) { + return RequestHelper.get(this, 'application/settings', options); } - edit(options: RequestOptions) { + edit(options?: BaseRequestOptions) { return RequestHelper.put(this, 'application/settings', options); } } -export default ApplicationSettings; +export default ApplicationSettings; \ No newline at end of file diff --git a/src/services/Branches.ts b/src/services/Branches.ts index 3c4de3cba..c593c52b2 100644 --- a/src/services/Branches.ts +++ b/src/services/Branches.ts @@ -1,44 +1,51 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class Branches extends BaseService { - all(projectId: ProjectId, options: RequestOptions) { + all(projectId: ProjectId, options?: { search?: string } & PaginatedRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/repository/branches`, options); } - create(projectId: ProjectId, branchName: string, ref: string) { + create(projectId: ProjectId, branchName: string, ref: string, options?: Sudo) { const pId = encodeURIComponent(projectId); return RequestHelper.post(this, `projects/${pId}/repository/branches`, { branch: branchName, ref, + ...options, }); } - protect(projectId: ProjectId, branchName: string, options: RequestOptions) { + protect(projectId: ProjectId, branchName: string, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); - return RequestHelper.post(this, `projects/${pId}/protected_branches`, { name: branchName, ...options }); + return RequestHelper.post(this, `projects/${pId}/protected_branches`, { + name: branchName, + ...options, + }); } - remove(projectId: ProjectId, branchName: string) { + remove(projectId: ProjectId, branchName: string, options?: Sudo) { const [pId, bName] = [projectId, branchName].map(encodeURIComponent); - return RequestHelper.delete(this, `projects/${pId}/repository/branches/${bName}`); + return RequestHelper.del(this, `projects/${pId}/repository/branches/${bName}`, options); } - show(projectId: ProjectId, branchName: string) { + show(projectId: ProjectId, branchName: string, options?: Sudo) { const [pId, bName] = [projectId, branchName].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/repository/branches/${bName}`); + return RequestHelper.get(this, `projects/${pId}/repository/branches/${bName}`, options); } - unprotect(projectId: ProjectId, branchName: string) { + unprotect(projectId: ProjectId, branchName: string, options?: Sudo) { const [pId, bName] = [projectId, branchName].map(encodeURIComponent); - return RequestHelper.put(this, `projects/${pId}/repository/branches/${bName}/unprotect`); + return RequestHelper.put( + this, + `projects/${pId}/repository/branches/${bName}/unprotect`, + options, + ); } } diff --git a/src/services/BroadcastMessages.ts b/src/services/BroadcastMessages.ts index 2073428a6..7cb4198b3 100644 --- a/src/services/BroadcastMessages.ts +++ b/src/services/BroadcastMessages.ts @@ -1,18 +1,15 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; - -export type BroadcastMessageId = string | number; class BroadcastMessages extends BaseService { - all(options: RequestOptions) { + all(options?: PaginatedRequestOptions) { return RequestHelper.get(this, 'broadcast_messages', options); } - create(options: RequestOptions) { + create(options?: BaseRequestOptions) { return RequestHelper.post(this, 'broadcast_messages', options); } - edit(broadcastMessageId: BroadcastMessageId, options: RequestOptions) { + edit(broadcastMessageId: BroadcastMessageId, options?: BaseRequestOptions) { const bId = encodeURIComponent(broadcastMessageId); return RequestHelper.put(this, `broadcast_messages/${bId}`, options); @@ -21,10 +18,10 @@ class BroadcastMessages extends BaseService { remove(broadcastMessageId: BroadcastMessageId) { const bId = encodeURIComponent(broadcastMessageId); - return RequestHelper.delete(this, `broadcast_messages/${bId}`); + return RequestHelper.del(this, `broadcast_messages/${bId}`); } - show(broadcastMessageId: BroadcastMessageId, options: RequestOptions) { + show(broadcastMessageId: BroadcastMessageId, options?: BaseRequestOptions) { const bId = encodeURIComponent(broadcastMessageId); return RequestHelper.get(this, `broadcast_messages/${bId}`, options); diff --git a/src/services/CommitDiscussions.ts b/src/services/CommitDiscussions.ts index 014bc92ab..6c5209c73 100644 --- a/src/services/CommitDiscussions.ts +++ b/src/services/CommitDiscussions.ts @@ -1,9 +1,8 @@ import { ResourceDiscussions } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class CommitDiscussions extends ResourceDiscussions { - constructor(baseParams: BaseModelContructorOptions) { - super('projects', 'commits', baseParams); + constructor(options: BaseServiceOptions) { + super('projects', 'commits', options); } } diff --git a/src/services/Commits.ts b/src/services/Commits.ts index 8a863761c..424b4e6bd 100644 --- a/src/services/Commits.ts +++ b/src/services/Commits.ts @@ -1,38 +1,25 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; - -export interface CommitAction { - /** The action to perform */ - action: 'create' | 'delete' | 'move' | 'update'; - /** Full path to the file. Ex. lib/class.rb */ - file_path: string; - /** Original full path to the file being moved.Ex.lib / class1.rb */ - previous_path?: string; - /** File content, required for all except delete. Optional for move */ - content?: string; - /** text or base64. text is default. */ - encoding?: string; - /** Last known file commit id. Will be only considered in update, move and delete actions. */ - last_commit_id?: string; -} class Commits extends BaseService { - all(projectId: ProjectId, options: RequestOptions) { + all(projectId: ProjectId, options?: PaginatedRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/repository/commits`, options); } - cherryPick(projectId: ProjectId, sha: string, branch: string) { + cherryPick(projectId: ProjectId, sha: string, branch: string, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.post(this, `projects/${pId}/repository/commits/${sha}/cherry_pick`, { branch }); + return RequestHelper.post(this, `projects/${pId}/repository/commits/${sha}/cherry_pick`, { + branch, + ...options, + }); } - comments(projectId: ProjectId, sha: string) { + comments(projectId: ProjectId, sha: string, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/repository/commits/${sha}/comments`); + return RequestHelper.get(this, `projects/${pId}/repository/commits/${sha}/comments`, options); } create( @@ -40,7 +27,7 @@ class Commits extends BaseService { branch: string, message: string, actions: CommitAction[] = [], - options: RequestOptions, + options?: BaseRequestOptions, ) { const pId = encodeURIComponent(projectId); @@ -52,7 +39,7 @@ class Commits extends BaseService { }); } - createComment(projectId: ProjectId, sha: string, note: string, options: RequestOptions) { + createComment(projectId: ProjectId, sha: string, note: string, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.post(this, `projects/${pId}/repository/commits/${sha}/comments`, { @@ -61,40 +48,40 @@ class Commits extends BaseService { }); } - diff(projectId: ProjectId, sha: string) { + diff(projectId: ProjectId, sha: string, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/repository/commits/${sha}/diff`); + return RequestHelper.get(this, `projects/${pId}/repository/commits/${sha}/diff`, options); } - editStatus(projectId: ProjectId, sha: string, options: RequestOptions) { + editStatus(projectId: ProjectId, sha: string, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.post(this, `projects/${pId}/statuses/${sha}`, options); } - references(projectId: ProjectId, sha: string) { + references(projectId: ProjectId, sha: string, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/repository/commits/${sha}/refs`); + return RequestHelper.get(this, `projects/${pId}/repository/commits/${sha}/refs`, options); } - show(projectId: ProjectId, sha: string, options: RequestOptions) { + show(projectId: ProjectId, sha: string, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/repository/commits/${sha}`, options); } - status(projectId: ProjectId, sha: string, options: RequestOptions) { + status(projectId: ProjectId, sha: string, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/repository/commits/${sha}/statuses`, options); } - mergeRequests(projectId: ProjectId, sha: string, options: RequestOptions) { + mergeRequests(projectId: ProjectId, sha: string) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/repository/commits/${sha}/merge_requests`, options); + return RequestHelper.get(this, `projects/${pId}/repository/commits/${sha}/merge_requests`); } } diff --git a/src/services/DeployKeys.ts b/src/services/DeployKeys.ts index 325566be1..9419e57ee 100644 --- a/src/services/DeployKeys.ts +++ b/src/services/DeployKeys.ts @@ -1,29 +1,28 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class DeployKeys extends BaseService { - add(projectId: ProjectId, options: RequestOptions) { + add(projectId: ProjectId, options?: Sudo) { const pId = encodeURIComponent(projectId); return RequestHelper.post(this, `projects/${pId}/deploy_keys`, options); } - all(projectId: ProjectId) { + all(projectId: ProjectId, options?: PaginatedRequestOptions) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/deploy_keys`); + return RequestHelper.get(this, `projects/${pId}/deploy_keys`, options); } - show(projectId: ProjectId, keyId: KeyId) { + show(projectId: ProjectId, keyId: KeyId, options?: Sudo) { const [pId, kId] = [projectId, keyId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/deploy_keys/${kId}`); + return RequestHelper.get(this, `projects/${pId}/deploy_keys/${kId}`, options); } - enable(projectId: ProjectId, keyId: KeyId) { + enable(projectId: ProjectId, keyId: KeyId, options?: Sudo) { const [pId, kId] = [projectId, keyId].map(encodeURIComponent); - return RequestHelper.post(this, `projects/${pId}/deploy_keys/${kId}/enable`); + return RequestHelper.post(this, `projects/${pId}/deploy_keys/${kId}/enable`, options); } } diff --git a/src/services/Deployments.ts b/src/services/Deployments.ts index d3913c7de..509f14b93 100644 --- a/src/services/Deployments.ts +++ b/src/services/Deployments.ts @@ -1,19 +1,16 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; - -type DeploymentId = string | number; class Deployments extends BaseService { - all(projectId: ProjectId, options: RequestOptions) { + all(projectId: ProjectId, options?: PaginatedRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/deployments`, options); } - show(projectId: ProjectId, deploymentId: DeploymentId) { + show(projectId: ProjectId, deploymentId: DeploymentId, options?: Sudo) { const [pId, dId] = [projectId, deploymentId].map(encodeURIComponent); - return RequestHelper.post(this, `projects/${pId}/deployments/${dId}`); + return RequestHelper.post(this, `projects/${pId}/deployments/${dId}`, options); } } diff --git a/src/services/Environments.ts b/src/services/Environments.ts index 3300c3e11..4a47598a5 100644 --- a/src/services/Environments.ts +++ b/src/services/Environments.ts @@ -1,37 +1,34 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; - -type EnvironmentId = string | number; class Environments extends BaseService { - all(projectId: ProjectId, options: RequestOptions) { + all(projectId: ProjectId, options?: PaginatedRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/environments`, options); } - create(projectId: ProjectId, options: RequestOptions) { + create(projectId: ProjectId, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.post(this, `projects/${pId}/environments`, options); } - edit(projectId: ProjectId, environmentId: EnvironmentId, options: RequestOptions) { + edit(projectId: ProjectId, environmentId: EnvironmentId, options?: BaseRequestOptions) { const [pId, eId] = [projectId, environmentId].map(encodeURIComponent); return RequestHelper.put(this, `projects/${pId}/environments/${eId}`, options); } - remove(projectId: ProjectId, environmentId: EnvironmentId) { + remove(projectId: ProjectId, environmentId: EnvironmentId, options?: Sudo) { const [pId, eId] = [projectId, environmentId].map(encodeURIComponent); - return RequestHelper.delete(this, `projects/${pId}/environments/${eId}`); + return RequestHelper.del(this, `projects/${pId}/environments/${eId}`, options); } - stop(projectId: ProjectId, environmentId: EnvironmentId) { + stop(projectId: ProjectId, environmentId: EnvironmentId, options?: Sudo) { const [pId, eId] = [projectId, environmentId].map(encodeURIComponent); - return RequestHelper.post(this, `projects/${pId}/environments/${eId}/stop`); + return RequestHelper.post(this, `projects/${pId}/environments/${eId}/stop`, options); } } diff --git a/src/services/EpicDiscussions.ts b/src/services/EpicDiscussions.ts index 7b69f314d..77db7e22c 100644 --- a/src/services/EpicDiscussions.ts +++ b/src/services/EpicDiscussions.ts @@ -1,8 +1,7 @@ import { ResourceDiscussions } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class EpicDiscussions extends ResourceDiscussions { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('groups', 'epics', options); } } diff --git a/src/services/EpicIssues.ts b/src/services/EpicIssues.ts index 02828ff73..74af35610 100644 --- a/src/services/EpicIssues.ts +++ b/src/services/EpicIssues.ts @@ -1,32 +1,28 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; - -export type EpicId = string | number; -export type IssueId = string | number; class EpicIssues extends BaseService { - all(groupId: GroupId, epicId: EpicId) { + all(groupId: GroupId, epicId: EpicId, options?: PaginatedRequestOptions) { const [gId, eId] = [groupId, epicId].map(encodeURIComponent); - return RequestHelper.get(this, `groups/${gId}/epics/${eId}/issues`); + return RequestHelper.get(this, `groups/${gId}/epics/${eId}/issues`, options); } - assign(groupId: GroupId, epicId: EpicId, issueId: IssueId) { + assign(groupId: GroupId, epicId: EpicId, issueId: IssueId, options?: Sudo) { const [gId, eId, iId] = [groupId, epicId, issueId].map(encodeURIComponent); - return RequestHelper.put(this, `groups/${gId}/epics/${eId}/issues/${iId}`); + return RequestHelper.put(this, `groups/${gId}/epics/${eId}/issues/${iId}`, options); } - edit(groupId: GroupId, epicId: EpicId, issueId: IssueId, options: RequestOptions) { + edit(groupId: GroupId, epicId: EpicId, issueId: IssueId, options?: BaseRequestOptions) { const [gId, eId, iId] = [groupId, epicId, issueId].map(encodeURIComponent); - return RequestHelper.delete(this, `groups/${gId}/epics/${eId}/issues/${iId}`, options); + return RequestHelper.del(this, `groups/${gId}/epics/${eId}/issues/${iId}`, options); } - remove(groupId: GroupId, epicId: EpicId, issueId: IssueId) { + remove(groupId: GroupId, epicId: EpicId, issueId: IssueId, options?: Sudo) { const [gId, eId, iId] = [groupId, epicId, issueId].map(encodeURIComponent); - return RequestHelper.delete(this, `groups/${gId}/epics/${eId}/issues/${iId}`); + return RequestHelper.del(this, `groups/${gId}/epics/${eId}/issues/${iId}`, options); } } diff --git a/src/services/EpicNotes.ts b/src/services/EpicNotes.ts index e3151ace8..0797d543d 100644 --- a/src/services/EpicNotes.ts +++ b/src/services/EpicNotes.ts @@ -1,8 +1,7 @@ import { ResourceNotes } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class EpicNotes extends ResourceNotes { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('groups', 'epics', options); } } diff --git a/src/services/Epics.ts b/src/services/Epics.ts index 7d5b80e97..c5d9bb4fd 100644 --- a/src/services/Epics.ts +++ b/src/services/Epics.ts @@ -1,37 +1,34 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; - -export type EpicId = string | number; class Epics extends BaseService { - all(groupId: GroupId) { + all(groupId: GroupId, options?: PaginatedRequestOptions) { const gId = encodeURIComponent(groupId); - return RequestHelper.get(this, `groups/${gId}/epics`); + return RequestHelper.get(this, `groups/${gId}/epics`, options); } - create(groupId: GroupId, title: string, options: RequestOptions) { + create(groupId: GroupId, title: string, options?: BaseRequestOptions) { const gId = encodeURIComponent(groupId); return RequestHelper.post(this, `groups/${gId}/epics`, { title, ...options }); } - edit(groupId: GroupId, epicId: EpicId, options: RequestOptions) { + edit(groupId: GroupId, epicId: EpicId, options?: BaseRequestOptions) { const [gId, eId] = [groupId, epicId].map(encodeURIComponent); return RequestHelper.put(this, `groups/${gId}/epics/${eId}`, options); } - remove(groupId: GroupId, epicId: EpicId) { + remove(groupId: GroupId, epicId: EpicId, options?: Sudo) { const [gId, eId] = [groupId, epicId].map(encodeURIComponent); - return RequestHelper.delete(this, `groups/${gId}/epics/${eId}`); + return RequestHelper.del(this, `groups/${gId}/epics/${eId}`, options); } - show(groupId: GroupId, epicId: EpicId) { + show(groupId: GroupId, epicId: EpicId, options?: Sudo) { const [gId, eId] = [groupId, epicId].map(encodeURIComponent); - return RequestHelper.get(this, `groups/${gId}/epics/${eId}`); + return RequestHelper.get(this, `groups/${gId}/epics/${eId}`, options); } } diff --git a/src/services/Events.ts b/src/services/Events.ts index c5a180f20..225827986 100644 --- a/src/services/Events.ts +++ b/src/services/Events.ts @@ -1,53 +1,9 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; -const ACTION_TYPES = { - created: 'created', - updated: 'updated', - closed: 'closed', - reopened: 'reopened', - pushed: 'pushed', - commented: 'commented', - merged: 'merged', - joined: 'joined', - left: 'left', - destroyed: 'destroyed', - expired: 'expired', -}; - -const TARGET_TYPES = { - issue: 'issue', - milestone: 'milestone', - merge_request: 'merge_request', - note: 'note', - project: 'project', - snippet: 'snippet', - user: 'user', -}; - -function assertEventOptions( - action: keyof typeof ACTION_TYPES, - target: keyof typeof TARGET_TYPES, -) { - if (action && !(action in ACTION_TYPES)) { - throw new Error(`This action is not supported. Pleased use one of following options: ${Object.keys(ACTION_TYPES)}`); - } - - if (target && !(target in TARGET_TYPES)) { - throw new Error(`This target is not supported. Pleased use one of following options: ${Object.keys(TARGET_TYPES)}`); - } -} -export interface EventOptions { - action: keyof typeof ACTION_TYPES; - targetType: keyof typeof TARGET_TYPES; -} class Events extends BaseService { - all(options: RequestOptions & EventOptions) { - assertEventOptions(options.action, options.targetType); - + all(options?: PaginatedRequestOptions & EventOptions) { return RequestHelper.get(this, 'events', options); } } export default Events; -export { assertEventOptions }; diff --git a/src/services/FeatureFlags.ts b/src/services/FeatureFlags.ts index 91a89cd92..ac3e62f5f 100644 --- a/src/services/FeatureFlags.ts +++ b/src/services/FeatureFlags.ts @@ -1,12 +1,11 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class FeatureFlags extends BaseService { - all(options: RequestOptions) { + all(options?: PaginatedRequestOptions) { return RequestHelper.get(this, 'features', options); } - set(name: string, options: RequestOptions) { + set(name: string, options?: BaseRequestOptions) { const encodedName = encodeURIComponent(name); return RequestHelper.post(this, `features/${encodedName}`, options); diff --git a/src/services/GeoNodes.ts b/src/services/GeoNodes.ts index 3a4c87ee7..28252aebd 100644 --- a/src/services/GeoNodes.ts +++ b/src/services/GeoNodes.ts @@ -1,48 +1,45 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; - -export type GeonodeId = string | number; class GeoNodes extends BaseService { - all(options: RequestOptions) { + all(options?: PaginatedRequestOptions) { return RequestHelper.get(this, 'geo_nodes', options); } - create(geonodeId: GeonodeId, options: RequestOptions) { + create(geonodeId: GeonodeId, options?: BaseRequestOptions) { const gId = encodeURIComponent(geonodeId); return RequestHelper.post(this, `geo_nodes/${gId}`, options); } - edit(geonodeId: GeonodeId, options: RequestOptions) { + edit(geonodeId: GeonodeId, options?: BaseRequestOptions) { const gId = encodeURIComponent(geonodeId); return RequestHelper.put(this, `geo_nodes/${gId}`, options); } - failures(options: RequestOptions) { + failures(options?: BaseRequestOptions) { return RequestHelper.post(this, 'geo_nodes/current/failures', options); } - repair(geonodeId: GeonodeId, options: RequestOptions) { + repair(geonodeId: GeonodeId, options?: Sudo) { const gId = encodeURIComponent(geonodeId); - return RequestHelper.delete(this, `geo_nodes/${gId}`, options); + return RequestHelper.del(this, `geo_nodes/${gId}`, options); } - show(geonodeId: GeonodeId, options: RequestOptions) { + show(geonodeId: GeonodeId, options?: Sudo) { const gId = encodeURIComponent(geonodeId); return RequestHelper.get(this, `geo_nodes/${gId}`, options); } - status(geonodeId: GeonodeId, options: RequestOptions) { + status(geonodeId: GeonodeId, options?: Sudo) { const gId = encodeURIComponent(geonodeId); return RequestHelper.get(this, `geo_nodes/${gId}/status`, options); } - statuses(options: RequestOptions) { + statuses(options?: PaginatedRequestOptions) { return RequestHelper.get(this, 'geo_nodes/statuses', options); } } diff --git a/src/services/GitLabCIYMLTemplates.ts b/src/services/GitLabCIYMLTemplates.ts index 7ce167eaa..ddbe4a6d0 100644 --- a/src/services/GitLabCIYMLTemplates.ts +++ b/src/services/GitLabCIYMLTemplates.ts @@ -1,8 +1,7 @@ import { ResourceTemplates } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class GitLabCIYMLTemplates extends ResourceTemplates { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('gitlab_ci_ymls', options); } } diff --git a/src/services/GitignoreTemplates.ts b/src/services/GitignoreTemplates.ts index bf0e1f5a7..61398e727 100644 --- a/src/services/GitignoreTemplates.ts +++ b/src/services/GitignoreTemplates.ts @@ -1,8 +1,7 @@ import { ResourceTemplates } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class GitignoreTemplates extends ResourceTemplates { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('gitignores', options); } } diff --git a/src/services/GroupAccessRequests.ts b/src/services/GroupAccessRequests.ts index cf07d6da4..25a0b1bc4 100644 --- a/src/services/GroupAccessRequests.ts +++ b/src/services/GroupAccessRequests.ts @@ -1,8 +1,7 @@ import { ResourceAccessRequests } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class GroupAccessRequests extends ResourceAccessRequests { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('groups', options); } } diff --git a/src/services/GroupBadges.ts b/src/services/GroupBadges.ts index 1121eb023..e9c9cc171 100644 --- a/src/services/GroupBadges.ts +++ b/src/services/GroupBadges.ts @@ -1,8 +1,7 @@ import { ResourceBadges } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class GroupBadges extends ResourceBadges { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('groups', options); } } diff --git a/src/services/GroupCustomAttributes.ts b/src/services/GroupCustomAttributes.ts index 2554c9106..579a84996 100644 --- a/src/services/GroupCustomAttributes.ts +++ b/src/services/GroupCustomAttributes.ts @@ -1,8 +1,7 @@ import { ResourceCustomAttributes } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class GroupCustomAttributes extends ResourceCustomAttributes { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('groups', options); } } diff --git a/src/services/GroupIssueBoards.ts b/src/services/GroupIssueBoards.ts index 2e861f7d8..79bbf0815 100644 --- a/src/services/GroupIssueBoards.ts +++ b/src/services/GroupIssueBoards.ts @@ -1,8 +1,7 @@ import { ResourceIssueBoards } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class GroupIssueBoards extends ResourceIssueBoards { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('groups', options); } } diff --git a/src/services/GroupMembers.ts b/src/services/GroupMembers.ts index 1e0b99ea7..c9d868f3a 100644 --- a/src/services/GroupMembers.ts +++ b/src/services/GroupMembers.ts @@ -1,8 +1,7 @@ import { ResourceMembers } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class GroupMembers extends ResourceMembers { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('groups', options); } } diff --git a/src/services/GroupMilestones.ts b/src/services/GroupMilestones.ts index 449bf0d34..d24c3f783 100644 --- a/src/services/GroupMilestones.ts +++ b/src/services/GroupMilestones.ts @@ -1,8 +1,7 @@ import { ResourceMilestones } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class GroupMilestones extends ResourceMilestones { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('groups', options); } } diff --git a/src/services/GroupProjects.ts b/src/services/GroupProjects.ts index 8dcb8b412..a2c3b1c8f 100644 --- a/src/services/GroupProjects.ts +++ b/src/services/GroupProjects.ts @@ -1,19 +1,16 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; - -type GroupProjectId = string | number; class GroupProjects extends BaseService { - all(groupId: GroupProjectId, options: RequestOptions) { + all(groupId: GroupProjectId, options?: PaginatedRequestOptions) { const gId = encodeURIComponent(groupId); return RequestHelper.get(this, `groups/${gId}/projects`, options); } - add(groupId: GroupProjectId, projectId: ProjectId) { + add(groupId: GroupProjectId, projectId: ProjectId, options?: BaseRequestOptions) { const [gId, pId] = [groupId, projectId].map(encodeURIComponent); - return RequestHelper.post(this, `groups/${gId}/projects/${pId}`); + return RequestHelper.post(this, `groups/${gId}/projects/${pId}`, options); } } diff --git a/src/services/GroupVariables.ts b/src/services/GroupVariables.ts index 65d5da585..eef035a45 100644 --- a/src/services/GroupVariables.ts +++ b/src/services/GroupVariables.ts @@ -1,9 +1,8 @@ import { ResourceVariables } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class GroupVariables extends ResourceVariables { - constructor(baseParams: BaseModelContructorOptions) { - super('groups', baseParams); + constructor(options: BaseServiceOptions) { + super('groups', options); } } diff --git a/src/services/Groups.ts b/src/services/Groups.ts index a7dd168ce..a04550d99 100644 --- a/src/services/Groups.ts +++ b/src/services/Groups.ts @@ -1,52 +1,73 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; - -type GroupId = string | number; class Groups extends BaseService { - all(options: RequestOptions) { + all(options?: PaginatedRequestOptions) { return RequestHelper.get(this, 'groups', options); } - create(options: RequestOptions) { + create(options?: BaseRequestOptions) { return RequestHelper.post(this, 'groups', options); } - createLDAPLink(groupId: GroupId, options: RequestOptions) { + createLDAPLink(groupId: GroupId, cn, groupAccess, provider: string, options?: Sudo) { const gId = encodeURIComponent(groupId); - return RequestHelper.post(this, `groups/${gId}/ldap_group_links`, options); + return RequestHelper.post(this, `groups/${gId}/ldap_group_links`, { + cn, + groupAccess, + provider, + ...options, + }); } - edit(groupId: GroupId, options: RequestOptions) { + edit(groupId: GroupId, options?: BaseRequestOptions) { const gId = encodeURIComponent(groupId); return RequestHelper.put(this, `groups/${gId}`, options); } - remove(groupId: GroupId) { + remove(groupId: GroupId, options?: Sudo) { const gId = encodeURIComponent(groupId); - return RequestHelper.delete(this, `groups/${gId}`); + return RequestHelper.del(this, `groups/${gId}`, options); } - search(nameOrPath: string) { + removeLDAPLink( + groupId: GroupId, + cn, + { provider, ...options }: Sudo & { provider?: string } = {}, + ) { + + const gId = encodeURIComponent(groupId); + const url = provider ? `${provider}/${cn}` : `${cn}`; + + return RequestHelper.del(this, `groups/${gId}/ldap_group_links/${url}`, options); + } + + search(nameOrPath: string, options?: Sudo) { return RequestHelper.get(this, 'groups', { search: nameOrPath, + ...options, }); } - show(groupId: GroupId) { + show(groupId: GroupId, options?: BaseRequestOptions) { const gId = encodeURIComponent(groupId); - return RequestHelper.get(this, `groups/${gId}`); + return RequestHelper.get(this, `groups/${gId}`, options); } - subgroups(groupId: GroupId, options: RequestOptions) { + subgroups(groupId: GroupId, options?: PaginatedRequestOptions) { const gId = encodeURIComponent(groupId); return RequestHelper.get(this, `groups/${gId}/subgroups`, options); } + + syncLDAP(groupId: GroupId, options?: Sudo) { + const gId = encodeURIComponent(groupId); + + return RequestHelper.post(this, `groups/${gId}/ldap_sync`, options); + } } export default Groups; diff --git a/src/services/IssueAwardEmojis.ts b/src/services/IssueAwardEmojis.ts index 31120e442..e024af552 100644 --- a/src/services/IssueAwardEmojis.ts +++ b/src/services/IssueAwardEmojis.ts @@ -1,8 +1,7 @@ import { ResourceAwardEmojis } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class IssueAwardEmojis extends ResourceAwardEmojis { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('issues', options); } } diff --git a/src/services/IssueDiscussions.ts b/src/services/IssueDiscussions.ts index 35a7c8e5e..ea18887d8 100644 --- a/src/services/IssueDiscussions.ts +++ b/src/services/IssueDiscussions.ts @@ -1,8 +1,7 @@ import { ResourceDiscussions } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class IssueDiscussions extends ResourceDiscussions { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('projects', 'issues', options); } } diff --git a/src/services/IssueNotes.ts b/src/services/IssueNotes.ts index cf1728bc8..0fbb4fc8d 100644 --- a/src/services/IssueNotes.ts +++ b/src/services/IssueNotes.ts @@ -1,7 +1,7 @@ import { ResourceNotes } from '../templates'; class IssueNotes extends ResourceNotes { - constructor(options: temporaryAny) { + constructor(options: BaseServiceOptions) { super('projects', 'issues', options); } } diff --git a/src/services/Issues.ts b/src/services/Issues.ts index 06925cece..6b1dce65c 100644 --- a/src/services/Issues.ts +++ b/src/services/Issues.ts @@ -1,38 +1,37 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { IssueId } from './EpicIssues'; -import { MergeRequestId } from './MergeRequests'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class Issues extends BaseService { - addSpentTime(projectId: ProjectId, issueId: IssueId, duration: Duration) { + addSpentTime(projectId: ProjectId, issueId: IssueId, duration: string, options?: Sudo) { const [pId, iId] = [projectId, issueId].map(encodeURIComponent); return RequestHelper.post(this, `projects/${pId}/issues/${iId}/add_spent_time`, { duration, + ...options, }); } - addTimeEstimate(projectId: ProjectId, issueId: IssueId, duration: Duration) { + addTimeEstimate(projectId: ProjectId, issueId: IssueId, duration: string, options?: Sudo) { const [pId, iId] = [projectId, issueId].map(encodeURIComponent); return RequestHelper.post(this, `projects/${pId}/issues/${iId}/time_estimate`, { duration, + ...options, }); } - all({ projectId, ...options }: { projectId: ProjectId } & RequestOptions) { + all({ projectId, ...options }: { projectId?: ProjectId } & PaginatedRequestOptions = {}) { const url = projectId ? `projects/${encodeURIComponent(projectId)}/issues` : 'issues'; return RequestHelper.get(this, url, options); } - create(projectId: ProjectId, options: RequestOptions) { + create(projectId: ProjectId, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.post(this, `projects/${pId}/issues`, options); } - edit(projectId: ProjectId, issueId: IssueId, options: RequestOptions) { + edit(projectId: ProjectId, issueId: IssueId, options?: BaseRequestOptions) { const [pId, iId] = [projectId, issueId].map(encodeURIComponent); return RequestHelper.put(this, `projects/${pId}/issues/${iId}`, options); @@ -43,7 +42,7 @@ class Issues extends BaseService { issueIId: IssueId, targetProjectId: ProjectId, targetIssueId: IssueId, - options = {}, + options?: BaseRequestOptions, ) { const [pId, iId] = [projectId, issueIId].map(encodeURIComponent); const [targetpId, targetIId] = [targetProjectId, targetIssueId].map(encodeURIComponent); @@ -55,52 +54,52 @@ class Issues extends BaseService { }); } - participants(projectId: ProjectId, issueId: IssueId) { + participants(projectId: ProjectId, issueId: IssueId, options?: Sudo) { const [pId, iId] = [projectId, issueId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/issues/${iId}/participants`); + return RequestHelper.get(this, `projects/${pId}/issues/${iId}/participants`, options); } - remove(projectId: ProjectId, issueId: IssueId) { + remove(projectId: ProjectId, issueId: IssueId, options?: Sudo) { const [pId, iId] = [projectId, issueId].map(encodeURIComponent); - return RequestHelper.delete(this, `projects/${pId}/issues/${iId}`); + return RequestHelper.del(this, `projects/${pId}/issues/${iId}`, options); } - resetSpentTime(projectId: ProjectId, mergerequestId: MergeRequestId) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + resetSpentTime(projectId: ProjectId, issueId: IssueId, options?: BaseRequestOptions) { + const [pId, iId] = [projectId, issueId].map(encodeURIComponent); - return RequestHelper.post(this, `projects/${pId}/issues/${mId}/reset_spent_time`); + return RequestHelper.post(this, `projects/${pId}/issues/${iId}/reset_spent_time`, options); } - resetTimeEstimate(projectId: ProjectId, mergerequestId: MergeRequestId) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + resetTimeEstimate(projectId: ProjectId, issueId: IssueId, options?: Sudo) { + const [pId, iId] = [projectId, issueId].map(encodeURIComponent); - return RequestHelper.post(this, `projects/${pId}/issues/${mId}/reset_time_estimate`); + return RequestHelper.post(this, `projects/${pId}/issues/${iId}/reset_time_estimate`, options); } - show(projectId: ProjectId, issueId: IssueId) { + show(projectId: ProjectId, issueId: IssueId, options?: Sudo) { const [pId, iId] = [projectId, issueId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/issues/${iId}`); + return RequestHelper.get(this, `projects/${pId}/issues/${iId}`, options); } - subscribe(projectId: ProjectId, issueId: IssueId, options: RequestOptions) { + subscribe(projectId: ProjectId, issueId: IssueId, options?: Sudo) { const [pId, iId] = [projectId, issueId].map(encodeURIComponent); return RequestHelper.post(this, `projects/${pId}/issues/${iId}/subscribe`, options); } - timeStats(projectId: ProjectId, mergerequestId: MergeRequestId) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + timeStats(projectId: ProjectId, issueId: IssueId, options?: Sudo) { + const [pId, iId] = [projectId, issueId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/issues/${mId}/time_stats`); + return RequestHelper.get(this, `projects/${pId}/issues/${iId}/time_stats`, options); } - unsubscribe(projectId: ProjectId, issueId: IssueId) { + unsubscribe(projectId: ProjectId, issueId: IssueId, options?: Sudo) { const [pId, iId] = [projectId, issueId].map(encodeURIComponent); - return RequestHelper.delete(this, `projects/${pId}/issues/${iId}/unsubscribe`); + return RequestHelper.del(this, `projects/${pId}/issues/${iId}/unsubscribe`, options); } } diff --git a/src/services/Jobs.ts b/src/services/Jobs.ts index 5ff4166b6..c090c2f85 100644 --- a/src/services/Jobs.ts +++ b/src/services/Jobs.ts @@ -1,35 +1,38 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { PipelineId } from './Pipelines'; -import { RequestOptions } from '../infrastructure/RequestHelper'; - -export type JobId = string | number; class Jobs extends BaseService { - all(projectId: ProjectId, options = {}) { + all(projectId: ProjectId, options?: PaginatedRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/jobs`, options); } - cancel(projectId: ProjectId, jobId: JobId) { + cancel(projectId: ProjectId, jobId: JobId, options?: Sudo) { const [pId, jId] = [projectId, jobId].map(encodeURIComponent); - return RequestHelper.post(this, `projects/${pId}/jobs/${jId}/cancel`); + return RequestHelper.post(this, `projects/${pId}/jobs/${jId}/cancel`, options); } downloadSingleArtifactFile( projectId: ProjectId, jobId: JobId, artifactPath: string, - options = { stream: false }, + { stream = false, ...options }: { stream?: boolean } & BaseRequestOptions, ) { const [pId, jId] = [projectId, jobId].map(encodeURIComponent); + if (stream) { + return RequestHelper.stream( + this, + `projects/${pId}/jobs/${jId}/artifacts/${artifactPath}`, + options, + ); + } + return RequestHelper.get( this, `projects/${pId}/jobs/${jId}/artifacts/${artifactPath}`, - options as temporaryAny, - { stream: options.stream }, + options, ); } @@ -37,68 +40,75 @@ class Jobs extends BaseService { projectId: ProjectId, ref: string, name: string, - options = { stream: false }, + { stream = false, ...options }: { stream?: boolean } & BaseRequestOptions, ) { const [pId, rId, jobName] = [projectId, ref, name].map(encodeURIComponent); + if (stream) { + return RequestHelper.stream( + this, + `projects/${pId}/jobs/artifacts/${rId}/download?job=${jobName}`, + options, + ); + } + return RequestHelper.get( this, `projects/${pId}/jobs/artifacts/${rId}/download?job=${jobName}`, - options as temporaryAny, - { stream: options.stream }, + options, ); } - downloadTraceFile(projectId: ProjectId, jobId: JobId) { + downloadTraceFile(projectId: ProjectId, jobId: JobId, options?: Sudo) { const [pId, jId] = [projectId, jobId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/jobs/${jId}/trace`); + return RequestHelper.get(this, `projects/${pId}/jobs/${jId}/trace`, options); } - erase(projectId: ProjectId, jobId: JobId) { + erase(projectId: ProjectId, jobId: JobId, options?: Sudo) { const [pId, jId] = [projectId, jobId].map(encodeURIComponent); - return RequestHelper.post(this, `projects/${pId}/jobs/${jId}/erase`); + return RequestHelper.post(this, `projects/${pId}/jobs/${jId}/erase`, options); } - eraseArtifacts(projectId: ProjectId, jobId: JobId) { + eraseArtifacts(projectId: ProjectId, jobId: JobId, options?: Sudo) { const [pId, jId] = [projectId, jobId].map(encodeURIComponent); - return RequestHelper.delete(this, `projects/${pId}/jobs/${jId}/artifacts`); + return RequestHelper.del(this, `projects/${pId}/jobs/${jId}/artifacts`, options); } - keepArtifacts(projectId: ProjectId, jobId: JobId) { + keepArtifacts(projectId: ProjectId, jobId: JobId, options?: Sudo) { const [pId, jId] = [projectId, jobId].map(encodeURIComponent); - return RequestHelper.post(this, `projects/${pId}/jobs/${jId}/artifacts/keep`); + return RequestHelper.post(this, `projects/${pId}/jobs/${jId}/artifacts/keep`, options); } - play(projectId: ProjectId, jobId: JobId) { + play(projectId: ProjectId, jobId: JobId, options?: Sudo) { const [pId, jId] = [projectId, jobId].map(encodeURIComponent); - return RequestHelper.post(this, `projects/${pId}/jobs/${jId}/play`); + return RequestHelper.post(this, `projects/${pId}/jobs/${jId}/play`, options); } - retry(projectId: ProjectId, jobId: JobId) { + retry(projectId: ProjectId, jobId: JobId, options?: Sudo) { const [pId, jId] = [projectId, jobId].map(encodeURIComponent); - return RequestHelper.post(this, `projects/${pId}/jobs/${jId}/retry`); + return RequestHelper.post(this, `projects/${pId}/jobs/${jId}/retry`, options); } - show(projectId: ProjectId, jobId: JobId) { + show(projectId: ProjectId, jobId: JobId, options?: Sudo) { const [pId, jId] = [projectId, jobId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/jobs/${jId}`); + return RequestHelper.get(this, `projects/${pId}/jobs/${jId}`, options); } - showPipelineJobs(projectId: ProjectId, pipelineId: PipelineId, options: RequestOptions) { + showPipelineJobs( + projectId: ProjectId, + pipelineId: PipelineId, + options: { scope: JobScope } & Sudo, + ) { const [pId, ppId] = [projectId, pipelineId].map(encodeURIComponent); - return RequestHelper.get( - this, - `projects/${pId}/pipelines/${ppId}/jobs`, - options, - ); + return RequestHelper.get(this, `projects/${pId}/pipelines/${ppId}/jobs`, options); } } diff --git a/src/services/Keys.ts b/src/services/Keys.ts index 5c79390c1..04efa8157 100644 --- a/src/services/Keys.ts +++ b/src/services/Keys.ts @@ -1,10 +1,10 @@ import { BaseService, RequestHelper } from '../infrastructure'; class Keys extends BaseService { - show(keyId: KeyId) { + show(keyId: KeyId, options?: Sudo) { const kId = encodeURIComponent(keyId); - return RequestHelper.get(this, `keys/${kId}`); + return RequestHelper.get(this, `keys/${kId}`, options); } } diff --git a/src/services/Labels.ts b/src/services/Labels.ts index 4ff56a577..e59927688 100644 --- a/src/services/Labels.ts +++ b/src/services/Labels.ts @@ -1,42 +1,40 @@ import { BaseService, RequestHelper } from '../infrastructure'; -type LabelId = string | number; - class Labels extends BaseService { - all(projectId: ProjectId, options = {}) { + all(projectId: ProjectId, options?: PaginatedRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/labels`, options); } - create(projectId: ProjectId, options = {}) { + create(projectId: ProjectId, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.post(this, `projects/${pId}/labels`, options); } - edit(projectId: ProjectId, labelName: string, options = {}) { + edit(projectId: ProjectId, labelName: string, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.put(this, `projects/${pId}/labels`, { name: labelName, ...options }); } - remove(projectId: ProjectId, labelName: string) { + remove(projectId: ProjectId, labelName: string, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.delete(this, `projects/${pId}/labels`, { name: labelName }); + return RequestHelper.del(this, `projects/${pId}/labels`, { name: labelName, ...options }); } - subscribe(projectId: ProjectId, labelId: LabelId, options = {}) { + subscribe(projectId: ProjectId, labelId: LabelId, options?: Sudo) { const [pId, lId] = [projectId, labelId].map(encodeURIComponent); return RequestHelper.post(this, `projects/${pId}/issues/${lId}/subscribe`, options); } - unsubscribe(projectId: ProjectId, labelId: LabelId) { + unsubscribe(projectId: ProjectId, labelId: LabelId, options?: Sudo) { const [pId, lId] = [projectId, labelId].map(encodeURIComponent); - return RequestHelper.delete(this, `projects/${pId}/issues/${lId}/unsubscribe`); + return RequestHelper.del(this, `projects/${pId}/issues/${lId}/unsubscribe`, options); } } diff --git a/src/services/Licence.ts b/src/services/Licence.ts index d002d8232..090f9f54e 100644 --- a/src/services/Licence.ts +++ b/src/services/Licence.ts @@ -1,12 +1,12 @@ import { BaseService, RequestHelper } from '../infrastructure'; class Licence extends BaseService { - all() { - return RequestHelper.get(this, 'licence'); + all(options?: Sudo) { + return RequestHelper.get(this, 'licence', options); } - create() { - return RequestHelper.post(this, 'licence'); + create(options?: Sudo) { + return RequestHelper.post(this, 'licence', options); } } diff --git a/src/services/LicenceTemplates.ts b/src/services/LicenceTemplates.ts index 99921012b..395675d1c 100644 --- a/src/services/LicenceTemplates.ts +++ b/src/services/LicenceTemplates.ts @@ -1,8 +1,7 @@ import { ResourceTemplates } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class LicenceTemplates extends ResourceTemplates { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('licences', options); } } diff --git a/src/services/Lint.ts b/src/services/Lint.ts index f628cc7af..75cdfc86b 100644 --- a/src/services/Lint.ts +++ b/src/services/Lint.ts @@ -1,8 +1,8 @@ import { BaseService, RequestHelper } from '../infrastructure'; class Lint extends BaseService { - lint(content: string) { - return RequestHelper.post(this, 'ci/lint', { content }); + lint(content: string, options?: Sudo) { + return RequestHelper.post(this, 'ci/lint', { content, ...options }); } } diff --git a/src/services/Markdown.ts b/src/services/Markdown.ts index 503614f58..bf5c6078e 100644 --- a/src/services/Markdown.ts +++ b/src/services/Markdown.ts @@ -1,8 +1,7 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class Markdown extends BaseService { - render(text: string, options: RequestOptions) { + render(text: string, options: { gfm?: string; project?: ProjectId } & Sudo) { return RequestHelper.post(this, 'markdown', { text, ...options }); } } diff --git a/src/services/MergeRequestAwardEmojis.ts b/src/services/MergeRequestAwardEmojis.ts index 8ed2f5f2d..b3e409428 100644 --- a/src/services/MergeRequestAwardEmojis.ts +++ b/src/services/MergeRequestAwardEmojis.ts @@ -1,8 +1,7 @@ import { ResourceAwardEmojis } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class MergeRequestAwardEmojis extends ResourceAwardEmojis { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('merge_requests', options); } } diff --git a/src/services/MergeRequestDiscussions.ts b/src/services/MergeRequestDiscussions.ts index 8528a0741..7a8c12e22 100644 --- a/src/services/MergeRequestDiscussions.ts +++ b/src/services/MergeRequestDiscussions.ts @@ -1,8 +1,7 @@ import { ResourceDiscussions } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class MergeRequestDiscussions extends ResourceDiscussions { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('projects', 'merge_requests', options); } } diff --git a/src/services/MergeRequestNotes.ts b/src/services/MergeRequestNotes.ts index 1913a3e53..be2fe119c 100644 --- a/src/services/MergeRequestNotes.ts +++ b/src/services/MergeRequestNotes.ts @@ -1,8 +1,7 @@ import { ResourceNotes } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class MergeRequestNotes extends ResourceNotes { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('projects', 'merge_requests', options); } } diff --git a/src/services/MergeRequests.ts b/src/services/MergeRequests.ts index a908d4f8e..6789b51bc 100644 --- a/src/services/MergeRequests.ts +++ b/src/services/MergeRequests.ts @@ -1,118 +1,134 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; - -export type MergeRequestId = string | number; - -export interface AcceptMergeRequestOptions { - merge_commit_message?: string; - squash_commit_message?: string; - squash?: boolean; - should_remove_source_branch?: boolean; - merge_when_pipeline_succeeds?: boolean; - sha?: string; -} - -export interface ShowMergeRequestOptions { - render_html?: boolean; - include_diverged_commits_count?: true; - include_rebase_in_progress?: boolean; -} - -export interface CreateMergeRequestOptions { - assignee_id?: number; - description?: string; - target_project_id?: number; - labels?: string; - milestone_id?: number; - remove_source_branch?: boolean; - allow_collaboration?: boolean; - allow_maintainer_to_push?: boolean; - squash?: boolean; -} - -export interface UpdateMergeRequestOptions { - target_branch?: number; - title?: string; - assignee_id?: number; - milestone_id?: number; - labels?: string; - description?: string; - state_event?: string; - remove_source_branch?: boolean; - squash?: boolean; - discussion_locked?: boolean; - allow_collaboration?: boolean; - allow_maintainer_to_push?: boolean; -} class MergeRequests extends BaseService { accept( - projectId: ProjectId, - mergerequestId: MergeRequestId, - options: AcceptMergeRequestOptions & RequestOptions, + projectId: ProjectId, + mergerequestIId: MergeRequestId, + options?: AcceptMergeRequestOptions & BaseRequestOptions, ) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.put(this, `projects/${pId}/merge_requests/${mId}/merge`, options); + return RequestHelper.put(this, `projects/${pId}/merge_requests/${mIId}/merge`, options); } - addSpentTime(projectId: ProjectId, mergerequestId: MergeRequestId, duration: Duration) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + addSpentTime( + projectId: ProjectId, + mergerequestIId: MergeRequestId, + duration: string, + options?: Sudo, + ) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.post(this, `projects/${pId}/issues/${mId}/add_spent_time`, { + return RequestHelper.post(this, `projects/${pId}/merge_requests/${mIId}/add_spent_time`, { duration, + ...options, }); } - addTimeEstimate(projectId: ProjectId, mergerequestId: MergeRequestId, duration: Duration) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + addTimeEstimate( + projectId: ProjectId, + mergerequestIId: MergeRequestId, + duration: string, + options?: Sudo, + ) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.post(this, `projects/${pId}/issues/${mId}/time_estimate`, { + return RequestHelper.post(this, `projects/${pId}/merge_requests/${mIId}/time_estimate`, { duration, + ...options, }); } - approve(projectId: ProjectId, mergerequestId: MergeRequestId, { sha }: { sha: string }) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + all({ + projectId, + groupId, + ...options + }: ({ projectId: ProjectId } | { groupId: GroupId } | {}) & PaginatedRequestOptions) { + let url; + + if (projectId) { + url = `projects/${encodeURIComponent(projectId)}/merge_requests`; + } else if (groupId) { + url = `groups/${encodeURIComponent(groupId)}/merge_requests`; + } else { + url = 'merge_requests'; + } - return RequestHelper.post(this, `projects/${pId}/merge_requests/${mId}/approve`, { sha }); + return RequestHelper.get(this, url, options); } - approvals(projectId: ProjectId, { mergerequestId }: { mergerequestId?: MergeRequestId } = {}) { - const pId = encodeURIComponent(projectId); - const mergeRequest = mergerequestId ? `merge_requests/${encodeURIComponent(mergerequestId)}` : ''; + approve( + projectId: ProjectId, + mergerequestIId: MergeRequestId, + options: { sha?: string } & BaseRequestOptions, + ) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/${mergeRequest}/approvals`); + return RequestHelper.post(this, `projects/${pId}/merge_requests/${mIId}/approve`, options); } - all({ projectId, ...options }: { projectId?: ProjectId } = {}) { - const url = projectId ? `projects/${encodeURIComponent(projectId)}/merge_requests` : 'merge_requests'; + approvals( + projectId: ProjectId, + { mergerequestIId, ...options }: { mergerequestIId?: MergeRequestId } & BaseRequestOptions, + ) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); + + let url; + + if (mergerequestIId) { + url = `projects/${pId}/merge_requests/${mIId}/approvals`; + } else { + url = `projects/${pId}/approvals`; + } return RequestHelper.get(this, url, options); } - cancelOnPipelineSucess(projectId: ProjectId, mergerequestId: MergeRequestId) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + approvers( + projectId: ProjectId, + approverIds: UserId[], + approverGroupIds: GroupId[], + { mergerequestIId, ...options }: { mergerequestIId?: MergeRequestId } & BaseRequestOptions, + ) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); + + let url; + + if (mergerequestIId) { + url = `projects/${pId}/merge_requests/${mIId}/approvers`; + } else { + url = `projects/${pId}/approvers`; + } + + return RequestHelper.put(this, url, { approverIds, approverGroupIds, ...options }); + } + + cancelOnPipelineSucess(projectId: ProjectId, mergerequestIId: MergeRequestId, options?: Sudo) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.put(this, `projects/${pId}/merge_requests/${mId}/cancel_merge_when_pipeline_succeeds`); + return RequestHelper.put( + this, + `projects/${pId}/merge_requests/${mIId}/cancel_merge_when_pipeline_succeeds`, + options, + ); } - changes(projectId: ProjectId, mergerequestId: MergeRequestId) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + changes(projectId: ProjectId, mergerequestIId: MergeRequestId, options?: Sudo) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/merge_requests/${mId}/changes`); + return RequestHelper.get(this, `projects/${pId}/merge_requests/${mIId}/changes`, options); } - closesIssues(projectId: ProjectId, mergerequestId: MergeRequestId) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + closesIssues(projectId: ProjectId, mergerequestIId: MergeRequestId, options?: Sudo) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/merge_requests/${mId}/closes_issues`); + return RequestHelper.get(this, `projects/${pId}/merge_requests/${mIId}/closes_issues`, options); } - commits(projectId: ProjectId, mergerequestId: MergeRequestId) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + commits(projectId: ProjectId, mergerequestIId: MergeRequestId, options?: Sudo) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/merge_requests/${mId}/commits`); + return RequestHelper.get(this, `projects/${pId}/merge_requests/${mIId}/commits`, options); } create( @@ -120,7 +136,7 @@ class MergeRequests extends BaseService { sourceBranch: string, targetBranch: string, title: string, - options: CreateMergeRequestOptions & RequestOptions, + options?: CreateMergeRequestOptions & BaseRequestOptions, ) { const pId = encodeURIComponent(projectId); @@ -134,98 +150,117 @@ class MergeRequests extends BaseService { } edit( - projectId: ProjectId, - mergerequestId: MergeRequestId, - options: UpdateMergeRequestOptions & RequestOptions, + projectId: ProjectId, + mergerequestIId: MergeRequestId, + options?: UpdateMergeRequestOptions & BaseRequestOptions, ) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.put(this, `projects/${pId}/merge_requests/${mId}`, options); + return RequestHelper.put(this, `projects/${pId}/merge_requests/${mIId}`, options); } - editApprovals(projectId: ProjectId, { mergerequestId, ...options }: temporaryAny) { - const pId = encodeURIComponent(projectId); - const mergeRequest = mergerequestId ? `merge_requests/${encodeURIComponent(mergerequestId)}/` : ''; + editApprovals( + projectId: ProjectId, + { mergerequestIId, ...options }: { mergerequestIId?: MergeRequestId } & BaseRequestOptions, + ) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.post(this, `projects/${pId}/${mergeRequest}approvals`, options); - } + let url; - editApprovers(projectId: ProjectId, { mergerequestId, ...options }: temporaryAny) { - const pId = encodeURIComponent(projectId); - const mergeRequest = mergerequestId ? `merge_requests/${encodeURIComponent(mergerequestId)}/` : ''; + if (mergerequestIId) { + url = `projects/${pId}/merge_requests/${mIId}/approvals`; + } else { + url = `projects/${pId}/approvals`; + } - return RequestHelper.put(this, `projects/${pId}/${mergeRequest}approvers`, options); + return RequestHelper.post(this, url, options); } - participants(projectId: ProjectId, mergerequestId: MergeRequestId) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + participants(projectId: ProjectId, mergerequestIId: MergeRequestId, options?: Sudo) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/merge_requests/${mId}/participants`); + return RequestHelper.get(this, `projects/${pId}/merge_requests/${mIId}/participants`, options); } - pipelines(projectId: ProjectId, { mergerequestId }: { mergerequestId?: string } = {}) { - const pId = encodeURIComponent(projectId); - const mergeRequest = mergerequestId ? `merge_requests/${encodeURIComponent(mergerequestId)}` : ''; + pipelines(projectId: ProjectId, mergerequestIId: MergeRequestId, options?: Sudo) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/${mergeRequest}/pipelines`); + return RequestHelper.get(this, `projects/${pId}/merge_requests/${mIId}/pipelines`, options); } - remove(projectId: ProjectId, mergerequestId: MergeRequestId) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + remove(projectId: ProjectId, mergerequestIId: MergeRequestId, options?: Sudo) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.delete(this, `projects/${pId}/merge_requests/${mId}`); + return RequestHelper.del(this, `projects/${pId}/merge_requests/${mIId}`, options); } - resetSpentTime(projectId: ProjectId, mergerequestId: MergeRequestId) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + resetSpentTime(projectId: ProjectId, mergerequestIId: MergeRequestId, options?: Sudo) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.post(this, `projects/${pId}/merge_requests/${mId}/reset_spent_time`); + return RequestHelper.post( + this, + `projects/${pId}/merge_requests/${mIId}/reset_spent_time`, + options, + ); } - resetTimeEstimate(projectId: ProjectId, mergerequestId: MergeRequestId) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + resetTimeEstimate(projectId: ProjectId, mergerequestIId: MergeRequestId, options?: Sudo) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.post(this, `projects/${pId}/merge_requests/${mId}/reset_time_estimate`); + return RequestHelper.post( + this, + `projects/${pId}/merge_requests/${mIId}/reset_time_estimate`, + options, + ); } show( - projectId: ProjectId, - mergerequestId: MergeRequestId, - options?: ShowMergeRequestOptions & RequestOptions, + projectId: ProjectId, + mergerequestIId: MergeRequestId, + options?: ShowMergeRequestOptions & BaseRequestOptions, ) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/merge_requests/${mId}`, options); + return RequestHelper.get(this, `projects/${pId}/merge_requests/${mIId}`, options); } - timeStats(projectId: ProjectId, mergerequestId: MergeRequestId) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + timeStats(projectId: ProjectId, mergerequestIId: MergeRequestId, options?: Sudo) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/merge_requests/${mId}/time_stats`); + return RequestHelper.get(this, `projects/${pId}/merge_requests/${mIId}/time_stats`, options); } - version(projectId: ProjectId, mergerequestId: MergeRequestId, versionId: string | number) { - const [pId, mId, vId] = [projectId, mergerequestId, versionId].map(encodeURIComponent); + version( + projectId: ProjectId, + mergerequestIId: MergeRequestId, + versionId: number, + options?: Sudo, + ) { + const [pId, mIId, vId] = [projectId, mergerequestIId, versionId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/merge_requests/${mId}/versions/${vId}`); + return RequestHelper.get( + this, + `projects/${pId}/merge_requests/${mIId}/versions/${vId}`, + options, + ); } - versions(projectId: ProjectId, mergerequestId: MergeRequestId) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + versions(projectId: ProjectId, mergerequestIId: MergeRequestId, options?: Sudo) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/merge_requests/${mId}/versions`); + return RequestHelper.get(this, `projects/${pId}/merge_requests/${mIId}/versions`, options); } - unapprove(projectId: ProjectId, mergerequestId: MergeRequestId) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + unapprove(projectId: ProjectId, mergerequestIId: MergeRequestId, options?: Sudo) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.post(this, `projects/${pId}/merge_requests/${mId}/approve`); + return RequestHelper.post(this, `projects/${pId}/merge_requests/${mIId}/approve`, options); } - unsubscribe(projectId: ProjectId, mergerequestId: MergeRequestId) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + unsubscribe(projectId: ProjectId, mergerequestIId: MergeRequestId, options?: Sudo) { + const [pId, mIId] = [projectId, mergerequestIId].map(encodeURIComponent); - return RequestHelper.delete(this, `projects/${pId}/merge_requests/${mId}/unsubscribe`); + return RequestHelper.del(this, `projects/${pId}/merge_requests/${mIId}/unsubscribe`, options); } } diff --git a/src/services/Namespaces.ts b/src/services/Namespaces.ts index 1dab99851..a592c7d82 100644 --- a/src/services/Namespaces.ts +++ b/src/services/Namespaces.ts @@ -1,15 +1,14 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class Namespaces extends BaseService { - all(options: RequestOptions) { + all(options?: PaginatedRequestOptions) { return RequestHelper.get(this, 'namespaces', options); } - show(namespaceId: string | number) { + show(namespaceId: NamespaceId, options: { search?: string } & Sudo) { const nId = encodeURIComponent(namespaceId); - return RequestHelper.get(this, `namespaces/${nId}`); + return RequestHelper.get(this, `namespaces/${nId}`, options); } } diff --git a/src/services/NotificationSettings.ts b/src/services/NotificationSettings.ts index 8bfb73d92..c69b45df6 100644 --- a/src/services/NotificationSettings.ts +++ b/src/services/NotificationSettings.ts @@ -1,46 +1,11 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; -import { RequestOptions } from '../infrastructure/RequestHelper'; -const LEVELS = { - DISABLED: 'disabled', - PARTICIPATING: 'participating', - WATCH: 'watch', - GLOBAL: 'global', - MENTION: 'mention', - CUSTOM: 'custom', -}; - -const EVENTS = { - NEW_NOTE: 'new_note', - NEW_ISSUE: 'new_issue', - REOPEM_ISSUE: 'reopen_issue', - CLOSE_ISSUE: 'close_issue', - REASSIGN_ISSUE: 'reassign_issue', - NEW_MERGE_REQUESTS: 'new_merge_request', - PUSH_TO_MERGE_REQUEST: 'push_to_merge_request', - REOPEN_MERGE_REQUESTS: 'reopen_merge_request', - CLOSE_MERGE_REQUEST: 'close_merge_request', - REASSIGN_MERGE_REQUEST: 'reassign_merge_request', - MERGE_MERGE_REQUEST: 'merge_merge_request', - FAILED_PIPELINE: 'failed_pipeline', - SUCCESS_PIPELINE: 'success_pipeline', -}; -interface NotificationSettingsOptions { - projectId?: ProjectId; - groupId?: string; -} class NotificationSettings extends BaseService { - protected LEVELS: typeof LEVELS; - protected EVENTS: typeof EVENTS; - constructor(baseParams: BaseModelContructorOptions) { - super(baseParams); - - this.LEVELS = LEVELS; - this.EVENTS = EVENTS; - } - - all({ projectId, groupId }: NotificationSettingsOptions = {}) { + all({ + projectId, + groupId, + ...options + }: ({ projectId: ProjectId } | { groupId: GroupId }) & PaginatedRequestOptions) { let url = ''; if (projectId) { @@ -49,10 +14,15 @@ class NotificationSettings extends BaseService { url += `groups/${encodeURIComponent(groupId)}/`; } - return RequestHelper.get(this, `${url}notification_settings`); + return RequestHelper.get(this, `${url}notification_settings`, options); } - edit(options: RequestOptions, { projectId, groupId }: NotificationSettingsOptions = {}) { + edit({ + projectId, + groupId, + ...options + }: { level?: NotificationSettingLevel } & ({ projectId: ProjectId } | { groupId: GroupId }) & + BaseRequestOptions) { let url = ''; if (projectId) { diff --git a/src/services/PagesDomains.ts b/src/services/PagesDomains.ts index 903549854..211d389d7 100644 --- a/src/services/PagesDomains.ts +++ b/src/services/PagesDomains.ts @@ -1,38 +1,34 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; -interface PagesDomainsOptions { - projectId?: ProjectId; -} class PagesDomains extends BaseService { - all({ projectId }: PagesDomainsOptions = {}) { + all({ projectId, ...options }: { projectId?: ProjectId } & PaginatedRequestOptions = {}) { const url = projectId ? `projects/${encodeURIComponent(projectId)}/` : ''; - return RequestHelper.get(this, `${url}pages/domains`); + return RequestHelper.get(this, `${url}pages/domains`, options); } - create(projectId: ProjectId, domain: string, options: RequestOptions) { + create(projectId: ProjectId, domain: string, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.post(this, `projects/${pId}/pages/domains`, { domain, ...options }); } - edit(projectId: ProjectId, domain: string, options: RequestOptions) { + edit(projectId: ProjectId, domain: string, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.put(this, `projects/${pId}/pages/domains/${domain}`, options); } - show(projectId: ProjectId, domain: string) { + show(projectId: ProjectId, domain: string, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/pages/domains/${domain}`); + return RequestHelper.get(this, `projects/${pId}/pages/domains/${domain}`, options); } - remove(projectId: ProjectId, domain: string) { + remove(projectId: ProjectId, domain: string, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.delete(this, `projects/${pId}/pages/domains/${domain}`); + return RequestHelper.del(this, `projects/${pId}/pages/domains/${domain}`, options); } } diff --git a/src/services/PipelineScheduleVariables.ts b/src/services/PipelineScheduleVariables.ts index f84d95877..2f3907201 100644 --- a/src/services/PipelineScheduleVariables.ts +++ b/src/services/PipelineScheduleVariables.ts @@ -1,15 +1,21 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class PipelineScheduleVariables extends BaseService { - all(projectId: ProjectId, pipelineScheduleId: PipelineScheduleId) { + all( + projectId: ProjectId, + pipelineScheduleId: PipelineScheduleId, + options?: PaginatedRequestOptions, + ) { const [pId, psId] = [projectId, pipelineScheduleId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/pipeline_schedules/${psId}/variables`); + return RequestHelper.get(this, `projects/${pId}/pipeline_schedules/${psId}/variables`, options); } - create(projectId: ProjectId, pipelineScheduleId: PipelineScheduleId, options: RequestOptions) { + create( + projectId: ProjectId, + pipelineScheduleId: PipelineScheduleId, + options?: BaseRequestOptions, + ) { const [pId, psId] = [projectId, pipelineScheduleId].map(encodeURIComponent); return RequestHelper.post( @@ -22,8 +28,8 @@ class PipelineScheduleVariables extends BaseService { edit( projectId: ProjectId, pipelineScheduleId: PipelineScheduleId, - keyId: string, - options: RequestOptions, + keyId: KeyId, + options?: BaseRequestOptions, ) { const [pId, psId, kId] = [projectId, pipelineScheduleId, keyId].map(encodeURIComponent); @@ -34,18 +40,33 @@ class PipelineScheduleVariables extends BaseService { ); } - show(projectId: ProjectId, pipelineScheduleId: PipelineScheduleId, keyId: string) { + show( + projectId: ProjectId, + pipelineScheduleId: PipelineScheduleId, + keyId: KeyId, + options?: BaseRequestOptions, + ) { const [pId, psId, kId] = [projectId, pipelineScheduleId, keyId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/pipeline_schedules/${psId}/variables/${kId}`); + return RequestHelper.get( + this, + `projects/${pId}/pipeline_schedules/${psId}/variables/${kId}`, + options, + ); } - remove(projectId: ProjectId, pipelineScheduleId: PipelineScheduleId, keyId: string) { + remove( + projectId: ProjectId, + pipelineScheduleId: PipelineScheduleId, + keyId: KeyId, + options?: BaseRequestOptions, + ) { const [pId, psId, kId] = [projectId, pipelineScheduleId, keyId].map(encodeURIComponent); - return RequestHelper.delete( + return RequestHelper.del( this, `projects/${pId}/pipeline_schedules/${psId}/variables/${kId}`, + options, ); } } diff --git a/src/services/PipelineSchedules.ts b/src/services/PipelineSchedules.ts index 0596d29e6..34522cedc 100644 --- a/src/services/PipelineSchedules.ts +++ b/src/services/PipelineSchedules.ts @@ -1,10 +1,7 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; - -type PipelineScheduleId = string | number; class PipelineSchedules extends BaseService { - all(projectId: ProjectId, options: RequestOptions) { + all(projectId: ProjectId, options?: PaginatedRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/pipeline_schedules`, options); @@ -14,8 +11,8 @@ class PipelineSchedules extends BaseService { projectId: ProjectId, description: string, ref: string, - cron: temporaryAny, - options: RequestOptions, + cron: string, + options?: BaseRequestOptions, ) { const pId = encodeURIComponent(projectId); @@ -27,28 +24,32 @@ class PipelineSchedules extends BaseService { }); } - edit(projectId: ProjectId, scheduleId: PipelineScheduleId, options: RequestOptions) { + edit(projectId: ProjectId, scheduleId: PipelineScheduleId, options?: BaseRequestOptions) { const [pId, sId] = [projectId, scheduleId].map(encodeURIComponent); return RequestHelper.put(this, `projects/${pId}/pipeline_schedules/${sId}`, options); } - remove(projectId: ProjectId, scheduleId: PipelineScheduleId) { + remove(projectId: ProjectId, scheduleId: PipelineScheduleId, options?: Sudo) { const [pId, sId] = [projectId, scheduleId].map(encodeURIComponent); - return RequestHelper.delete(this, `projects/${pId}/pipeline_schedules/${sId}`); + return RequestHelper.del(this, `projects/${pId}/pipeline_schedules/${sId}`, options); } - show(projectId: ProjectId, scheduleId: PipelineScheduleId) { + show(projectId: ProjectId, scheduleId: PipelineScheduleId, options?: Sudo) { const [pId, sId] = [projectId, scheduleId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/pipeline_schedules/${sId}`); + return RequestHelper.get(this, `projects/${pId}/pipeline_schedules/${sId}`, options); } - takeOwnership(projectId: ProjectId, scheduleId: PipelineScheduleId) { + takeOwnership(projectId: ProjectId, scheduleId: PipelineScheduleId, options?: Sudo) { const [pId, sId] = [projectId, scheduleId].map(encodeURIComponent); - return RequestHelper.post(this, `projects/${pId}/pipeline_schedules/${sId}/take_ownership`); + return RequestHelper.post( + this, + `projects/${pId}/pipeline_schedules/${sId}/take_ownership`, + options, + ); } } diff --git a/src/services/Pipelines.ts b/src/services/Pipelines.ts index 256ad02a7..c293c1094 100644 --- a/src/services/Pipelines.ts +++ b/src/services/Pipelines.ts @@ -1,40 +1,37 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; - -export type PipelineId = string | number; class Pipelines extends BaseService { - all(projectId: ProjectId, options = {}) { + all(projectId: ProjectId, options?: PaginatedRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/pipelines`, options); } - create(projectId: ProjectId, ref: string) { + create(projectId: ProjectId, ref: string, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); - return RequestHelper.post(this, `projects/${pId}/pipeline`, { ref }); + return RequestHelper.post(this, `projects/${pId}/pipeline`, { ref, ...options }); } - show(projectId: ProjectId, pipelineId: PipelineId) { + show(projectId: ProjectId, pipelineId: PipelineId, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/pipelines/${pipelineId}`); + return RequestHelper.get(this, `projects/${pId}/pipelines/${pipelineId}`, options); } - retry(projectId: ProjectId, pipelineId: PipelineId) { + retry(projectId: ProjectId, pipelineId: PipelineId, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.post(this, `projects/${pId}/pipelines/${pipelineId}/retry`); + return RequestHelper.post(this, `projects/${pId}/pipelines/${pipelineId}/retry`, options); } - cancel(projectId: ProjectId, pipelineId: PipelineId) { + cancel(projectId: ProjectId, pipelineId: PipelineId, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.post(this, `projects/${pId}/pipelines/${pipelineId}/cancel`); + return RequestHelper.post(this, `projects/${pId}/pipelines/${pipelineId}/cancel`, options); } - showJobs(projectId: ProjectId, pipelineId: PipelineId, options: RequestOptions) { + showJobs(projectId: ProjectId, pipelineId: PipelineId, options: { scope: JobScope } & Sudo) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/pipelines/${pipelineId}/jobs`, options); diff --git a/src/services/ProjectAccessRequests.ts b/src/services/ProjectAccessRequests.ts index 868818e7d..18df65ab8 100644 --- a/src/services/ProjectAccessRequests.ts +++ b/src/services/ProjectAccessRequests.ts @@ -1,8 +1,7 @@ import { ResourceAccessRequests } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class ProjectAccessRequests extends ResourceAccessRequests { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('projects', options); } } diff --git a/src/services/ProjectBadges.ts b/src/services/ProjectBadges.ts index 9392c23ee..0072c5980 100644 --- a/src/services/ProjectBadges.ts +++ b/src/services/ProjectBadges.ts @@ -1,8 +1,7 @@ import { ResourceBadges } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class ProjectBadges extends ResourceBadges { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('projects', options); } } diff --git a/src/services/ProjectCustomAttributes.ts b/src/services/ProjectCustomAttributes.ts index cb02775c6..925952449 100644 --- a/src/services/ProjectCustomAttributes.ts +++ b/src/services/ProjectCustomAttributes.ts @@ -1,8 +1,7 @@ import { ResourceCustomAttributes } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class ProjectCustomAttributes extends ResourceCustomAttributes { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('projects', options); } } diff --git a/src/services/ProjectHooks.ts b/src/services/ProjectHooks.ts index 45d96a2f4..365f38ee1 100644 --- a/src/services/ProjectHooks.ts +++ b/src/services/ProjectHooks.ts @@ -1,36 +1,34 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { HookId } from './SystemHooks'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class ProjectHooks extends BaseService { - all(projectId: ProjectId, options: RequestOptions) { + all(projectId: ProjectId, options?: PaginatedRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/hooks`, options); } - show(projectId: ProjectId, hookId: HookId) { + show(projectId: ProjectId, hookId: HookId, options?: Sudo) { const [pId, hId] = [projectId, hookId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/hooks/${hId}`); + return RequestHelper.get(this, `projects/${pId}/hooks/${hId}`, options); } - add(projectId: ProjectId, url: string, options: RequestOptions) { + add(projectId: ProjectId, url: string, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.post(this, `projects/${pId}/hooks`, { url, ...options }); } - edit(projectId: ProjectId, hookId: HookId, url: string, options: RequestOptions) { + edit(projectId: ProjectId, hookId: HookId, url: string, options?: BaseRequestOptions) { const [pId, hId] = [projectId, hookId].map(encodeURIComponent); return RequestHelper.put(this, `projects/${pId}/hooks/${hId}`, { url, ...options }); } - remove(projectId: ProjectId, hookId: HookId) { + remove(projectId: ProjectId, hookId: HookId, options?: Sudo) { const [pId, hId] = [projectId, hookId].map(encodeURIComponent); - return RequestHelper.delete(this, `projects/${pId}/hooks/${hId}`); + return RequestHelper.del(this, `projects/${pId}/hooks/${hId}`, options); } } diff --git a/src/services/ProjectImportExport.ts b/src/services/ProjectImportExport.ts index 513f4661c..8b75fe834 100644 --- a/src/services/ProjectImportExport.ts +++ b/src/services/ProjectImportExport.ts @@ -1,30 +1,37 @@ +import FormData from 'form-data'; import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class ProjectImportExport extends BaseService { - download(projectId: ProjectId) { + download(projectId: ProjectId, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/export/download`); + return RequestHelper.get(this, `projects/${pId}/export/download`, options); } - exportStatus(projectId: ProjectId) { + exportStatus(projectId: ProjectId, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/export`); + return RequestHelper.get(this, `projects/${pId}/export`, options); } - import(file: temporaryAny, path: string, options: RequestOptions) { - return RequestHelper.post(this, 'projects/import', { file, path, ...options }); + import(content: string, path: string, options?: Sudo) { + const form = new FormData(); + + form.append('file', content, { + filename: path, + contentType: 'application/octet-stream', + }); + + return RequestHelper.post(this, 'projects/import', { ...options, form }); } - importStatus(projectId: ProjectId) { + importStatus(projectId: ProjectId, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/import`); + return RequestHelper.get(this, `projects/${pId}/import`, options); } - schedule(projectId: ProjectId, options: RequestOptions) { + schedule(projectId: ProjectId, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.post(this, `projects/${pId}/export`, options); diff --git a/src/services/ProjectIssueBoards.ts b/src/services/ProjectIssueBoards.ts index a6699dddc..36b35e24c 100644 --- a/src/services/ProjectIssueBoards.ts +++ b/src/services/ProjectIssueBoards.ts @@ -1,8 +1,7 @@ import { ResourceIssueBoards } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class ProjectIssueBoards extends ResourceIssueBoards { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('projects', options); } } diff --git a/src/services/ProjectMembers.ts b/src/services/ProjectMembers.ts index d54644aa5..31a6c2a52 100644 --- a/src/services/ProjectMembers.ts +++ b/src/services/ProjectMembers.ts @@ -1,8 +1,7 @@ import { ResourceMembers } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class ProjectMembers extends ResourceMembers { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('projects', options); } } diff --git a/src/services/ProjectMilestones.ts b/src/services/ProjectMilestones.ts index 10d78b20a..83af3c0b2 100644 --- a/src/services/ProjectMilestones.ts +++ b/src/services/ProjectMilestones.ts @@ -1,8 +1,7 @@ import { ResourceMilestones } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class ProjectMilestones extends ResourceMilestones { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('projects', options); } } diff --git a/src/services/ProjectSnippetAwardEmojis.ts b/src/services/ProjectSnippetAwardEmojis.ts index e697a6400..ca1ccc183 100644 --- a/src/services/ProjectSnippetAwardEmojis.ts +++ b/src/services/ProjectSnippetAwardEmojis.ts @@ -1,8 +1,7 @@ import { ResourceAwardEmojis } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class ProjectSnippetAwardEmojis extends ResourceAwardEmojis { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('issues', options); } } diff --git a/src/services/ProjectSnippetDiscussions.ts b/src/services/ProjectSnippetDiscussions.ts index 966458cc6..282919b94 100644 --- a/src/services/ProjectSnippetDiscussions.ts +++ b/src/services/ProjectSnippetDiscussions.ts @@ -1,8 +1,7 @@ import { ResourceDiscussions } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class ProjectSnippetDiscussions extends ResourceDiscussions { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('projects', 'snippets', options); } } diff --git a/src/services/ProjectSnippetNotes.ts b/src/services/ProjectSnippetNotes.ts index d976f22e0..d6c56c393 100644 --- a/src/services/ProjectSnippetNotes.ts +++ b/src/services/ProjectSnippetNotes.ts @@ -1,8 +1,7 @@ import { ResourceNotes } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class ProjectSnippetNotes extends ResourceNotes { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('projects', 'snippets', options); } } diff --git a/src/services/ProjectSnippets.ts b/src/services/ProjectSnippets.ts index 9c6eba5b3..ff503747c 100644 --- a/src/services/ProjectSnippets.ts +++ b/src/services/ProjectSnippets.ts @@ -1,25 +1,16 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; -const VISIBILITY_LEVELS = { - PRIVATE: 'private', - INTERNAL: 'internal', - PUBLIC: 'public', -}; - -type SnippetId = string | number; -type VisibilityLevel = 'private' | 'public' | 'internal'; class ProjectSnippets extends BaseService { - all(projectId: ProjectId, options = {}) { + all(projectId: ProjectId, options?: PaginatedRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/snippets`, options); } - content(projectId: ProjectId, snippetId: SnippetId) { + content(projectId: ProjectId, snippetId: SnippetId, options?: Sudo) { const [pId, sId] = [projectId, snippetId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/snippets/${sId}/raw`); + return RequestHelper.get(this, `projects/${pId}/snippets/${sId}/raw`, options); } create( @@ -27,8 +18,8 @@ class ProjectSnippets extends BaseService { title: string, fileName: string, code: string, - visibility: VisibilityLevel, - options: RequestOptions = {}, + visibility: SnippetVisibility, + options?: BaseRequestOptions, ) { const pId = encodeURIComponent(projectId); @@ -41,30 +32,29 @@ class ProjectSnippets extends BaseService { }); } - edit(projectId: ProjectId, snippetId: SnippetId, options: RequestOptions) { + edit(projectId: ProjectId, snippetId: SnippetId, options?: BaseRequestOptions) { const [pId, sId] = [projectId, snippetId].map(encodeURIComponent); return RequestHelper.put(this, `projects/${pId}/snippets/${sId}`, options); } - remove(projectId: ProjectId, snippetId: SnippetId) { + remove(projectId: ProjectId, snippetId: SnippetId, options?: Sudo) { const [pId, sId] = [projectId, snippetId].map(encodeURIComponent); - return RequestHelper.delete(this, `projects/${pId}/snippets/${sId}`); + return RequestHelper.del(this, `projects/${pId}/snippets/${sId}`, options); } - show(projectId: ProjectId, snippetId: SnippetId) { + show(projectId: ProjectId, snippetId: SnippetId, options?: Sudo) { const [pId, sId] = [projectId, snippetId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/snippets/${sId}`); + return RequestHelper.get(this, `projects/${pId}/snippets/${sId}`, options); } - userAgentDetails(projectId: ProjectId, snippetId: SnippetId) { + userAgentDetails(projectId: ProjectId, snippetId: SnippetId, options?: Sudo) { const [pId, sId] = [projectId, snippetId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/snippets/${sId}/user_agent_detail`); + return RequestHelper.get(this, `projects/${pId}/snippets/${sId}/user_agent_detail`, options); } } export default ProjectSnippets; -export { VISIBILITY_LEVELS }; diff --git a/src/services/ProjectVariables.ts b/src/services/ProjectVariables.ts index ea309573d..3b25c53e7 100644 --- a/src/services/ProjectVariables.ts +++ b/src/services/ProjectVariables.ts @@ -1,8 +1,7 @@ import { ResourceVariables } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class ProjectVariables extends ResourceVariables { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('projects', options); } } diff --git a/src/services/Projects.ts b/src/services/Projects.ts index f8443b93a..6eb0f3a43 100644 --- a/src/services/Projects.ts +++ b/src/services/Projects.ts @@ -1,158 +1,141 @@ -import Fs from 'fs'; -import Path from 'path'; +import FormData from 'form-data'; +import randomstring from 'randomstring'; import { BaseService, RequestHelper } from '../infrastructure'; -import { assertEventOptions } from './Events'; -import { RequestOptions } from '../infrastructure/RequestHelper'; - -/** TODO annotate options */ -type ProjectOptions = temporaryAny; class Projects extends BaseService { - all(options?: RequestOptions) { + all(options?: PaginatedRequestOptions) { return RequestHelper.get(this, 'projects', options); } - archive(projectId: ProjectId) { + archive(projectId: ProjectId, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.post(this, `projects/${pId}/archive`); + return RequestHelper.post(this, `projects/${pId}/archive`, options); } - /** - * @see https://docs.gitlab.com/ee/api/projects.html#create-project-for-user - */ - create(options: temporaryAny) { - const url = options.userId ? `projects/user/${encodeURIComponent(options.userId)}` : 'projects'; + + create({ userId, ...options }: { userId?: UserId } & BaseRequestOptions) { + const url = userId ? `projects/user/${encodeURIComponent(userId)}` : 'projects'; return RequestHelper.post(this, url, options); } - edit(projectId: ProjectId, options: temporaryAny) { + edit(projectId: ProjectId, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.put(this, `projects/${pId}`, options); } - events(projectId: ProjectId, options: ProjectOptions) { - assertEventOptions(options.action, options.targetType); - + events(projectId: ProjectId, options?: BaseRequestOptions & EventOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/events`, options); } - fork(projectId: ProjectId, options: ProjectOptions) { + fork(projectId: ProjectId, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.post(this, `projects/${pId}/fork`, options); } - forks(projectId: ProjectId, options: ProjectOptions) { + forks(projectId: ProjectId, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/forks`, options); } - languages(projectId: ProjectId) { + languages(projectId: ProjectId, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/languages`); + return RequestHelper.get(this, `projects/${pId}/languages`, options); } - mirrorPull(projectId: ProjectId) { + mirrorPull(projectId: ProjectId, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.post(this, `projects/${pId}/mirror/pull`); + return RequestHelper.post(this, `projects/${pId}/mirror/pull`, options); } - remove(projectId: ProjectId) { + remove(projectId: ProjectId, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.delete(this, `projects/${pId}`); + return RequestHelper.del(this, `projects/${pId}`, options); } removeFork(projectId: ProjectId) { const pId = encodeURIComponent(projectId); - return RequestHelper.delete(this, `projects/${pId}/fork`); + return RequestHelper.del(this, `projects/${pId}/fork`); } search(projectName: string) { return RequestHelper.get(this, 'projects', { search: projectName }); } - share(projectId: ProjectId, groupId: GroupId, groupAccess: GroupAccess, options: ProjectOptions) { + share(projectId: ProjectId, groupId: GroupId, groupAccess: number, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); - if (!groupId || !groupAccess) throw new Error('Missing required arguments'); - return RequestHelper.post(this, `projects/${pId}/share`, { groupId, groupAccess, ...options }); } - show(projectId: ProjectId, options: ProjectOptions) { + show(projectId: ProjectId, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}`, options); } - star(projectId: ProjectId) { + star(projectId: ProjectId, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.post(this, `projects/${pId}/star`); + return RequestHelper.post(this, `projects/${pId}/star`, options); } - statuses(projectId: ProjectId, sha: string, state: string, options: ProjectOptions) { + statuses(projectId: ProjectId, sha: string, state: string, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.post(this, `projects/${pId}/statuses/${sha}`, { state, ...options }); } - transfer(projectId: ProjectId, namespace: string) { + transfer(projectId: ProjectId, namespaceId: NamespaceId) { const pId = encodeURIComponent(projectId); - return RequestHelper.put(this, `projects/${pId}/transfer`, { namespace }); + return RequestHelper.put(this, `projects/${pId}/transfer`, { namespace: namespaceId }); } - unarchive(projectId: ProjectId) { + unarchive(projectId: ProjectId, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.post(this, `projects/${pId}/unarchive`); + return RequestHelper.post(this, `projects/${pId}/unarchive`, options); } - unshare(projectId: ProjectId, groupId: GroupId) { + unshare(projectId: ProjectId, groupId: GroupId, options?: Sudo) { const [pId, gId] = [projectId, groupId].map(encodeURIComponent); - return RequestHelper.delete(this, `projects/${pId}/share/${gId}`); + return RequestHelper.del(this, `projects/${pId}/share/${gId}`, options); } - unstar(projectId: ProjectId) { + unstar(projectId: ProjectId, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.post(this, `projects/${pId}/unstar`); + return RequestHelper.post(this, `projects/${pId}/unstar`, options); } - updatePushRule(projectId: ProjectId, options: ProjectOptions) { + updatePushRule(projectId: ProjectId, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.put(this, `projects/${pId}/push_rule`, options); } - upload(projectId: ProjectId, filePath: string, { fileName = Path.basename(filePath) } = {}) { - const pId = encodeURIComponent(projectId); - const file = Fs.readFileSync(filePath); - - return RequestHelper.post( - this, - `projects/${pId}/uploads`, - { - file: { - value: file, - options: { - filename: fileName, - contentType: 'application/octet-stream', - }, - }, - }, - true, - ); + upload(projectId, content, metadata: ProjectUploadMetadata = {}, options?: Sudo) { + const pId = encodeURIComponent(projectId); + const form = new FormData(); + + const defaultMetadata: ProjectUploadMetadata = { + filename: randomstring.generate(8), + contentType: 'application/octet-stream', + }; + + form.append('file', content, Object.assign(defaultMetadata, metadata)); + + return RequestHelper.post(this, `projects/${pId}/uploads`, { ...options, form }); } } diff --git a/src/services/ProtectedBranches.ts b/src/services/ProtectedBranches.ts index 4ee9d0940..41448c08b 100644 --- a/src/services/ProtectedBranches.ts +++ b/src/services/ProtectedBranches.ts @@ -1,14 +1,13 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class ProtectedBranches extends BaseService { - all(projectId: ProjectId, options: RequestOptions) { + all(projectId: ProjectId, options?: PaginatedRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/protected_branches`, options); } - protect(projectId: ProjectId, branchName: string, options: RequestOptions) { + protect(projectId: ProjectId, branchName: string, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.post(this, `projects/${pId}/protected_branches`, { @@ -17,16 +16,16 @@ class ProtectedBranches extends BaseService { }); } - show(projectId: ProjectId, branchName: string) { + show(projectId: ProjectId, branchName: string, options?: Sudo) { const [pId, bName] = [projectId, branchName].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/protected_branches/${bName}`); + return RequestHelper.get(this, `projects/${pId}/protected_branches/${bName}`, options); } - unprotect(projectId: ProjectId, branchName: string) { + unprotect(projectId: ProjectId, branchName: string, options?: Sudo) { const [pId, bName] = [projectId, branchName].map(encodeURIComponent); - return RequestHelper.delete(this, `projects/${pId}/protected_branches/${bName}`); + return RequestHelper.del(this, `projects/${pId}/protected_branches/${bName}`, options); } } diff --git a/src/services/ProtectedTags.ts b/src/services/ProtectedTags.ts index 40b48907d..9564efa1d 100644 --- a/src/services/ProtectedTags.ts +++ b/src/services/ProtectedTags.ts @@ -1,14 +1,13 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class ProtectedTags extends BaseService { - all(projectId: ProjectId, options: RequestOptions) { + all(projectId: ProjectId, options: PaginatedRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/protected_tags`, options); } - protect(projectId: ProjectId, tagName: string, options: RequestOptions) { + protect(projectId: ProjectId, tagName: string, options: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.post(this, `projects/${pId}/protected_tags`, { @@ -17,16 +16,16 @@ class ProtectedTags extends BaseService { }); } - show(projectId: ProjectId, tagName: string) { + show(projectId: ProjectId, tagName: string, options: Sudo) { const [pId, tName] = [projectId, tagName].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/protected_tags/${tName}`); + return RequestHelper.get(this, `projects/${pId}/protected_tags/${tName}`, options); } - unprotect(projectId: ProjectId, tagName: string) { + unprotect(projectId: ProjectId, tagName: string, options: Sudo) { const [pId, tName] = [projectId, tagName].map(encodeURIComponent); - return RequestHelper.delete(this, `projects/${pId}/protected_tags/${tName}`); + return RequestHelper.del(this, `projects/${pId}/protected_tags/${tName}`, options); } } diff --git a/src/services/PushRule.ts b/src/services/PushRule.ts index 7ab12b764..8e13b0cae 100644 --- a/src/services/PushRule.ts +++ b/src/services/PushRule.ts @@ -1,35 +1,37 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class PushRule extends BaseService { - create(projectId: ProjectId, options: RequestOptions) { + create(projectId: ProjectId, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.post(this, `projects/${pId}/push_rule`, options); } - async edit(projectId: ProjectId, { upsert = false, ...options } = {}) { + edit( + projectId: ProjectId, + { upsert = false, ...options }: { upsert: boolean } & BaseRequestOptions, + ) { const pId = encodeURIComponent(projectId); - if (upsert) { - const pushRule = await this.show(projectId); + try { + return RequestHelper.put(this, `projects/${pId}/push_rule`, options); + } catch (e) { + if (e.message.includes('exist')) return this.create(projectId, options); - if (!pushRule) return this.create(projectId, options); + throw e; } - - return RequestHelper.put(this, `projects/${pId}/push_rule`, options); } - remove(projectId: ProjectId) { + remove(projectId: ProjectId, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.delete(this, `projects/${pId}/push_rule`); + return RequestHelper.del(this, `projects/${pId}/push_rule`, options); } - show(projectId: ProjectId) { + show(projectId: ProjectId, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/push_rule`); + return RequestHelper.get(this, `projects/${pId}/push_rule`, options); } } diff --git a/src/services/Repositories.ts b/src/services/Repositories.ts index 9ba8ae88e..1343deba8 100644 --- a/src/services/Repositories.ts +++ b/src/services/Repositories.ts @@ -1,43 +1,41 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class Repositories extends BaseService { - compare(projectId: ProjectId, from: string, to: string) { + compare(projectId: ProjectId, from: string, to: string, options?: Sudo) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/repository/compare`, { from, to, + ...options, }); } - contributors(projectId: ProjectId) { + contributors(projectId: ProjectId, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/repository/contributors`); + return RequestHelper.get(this, `projects/${pId}/repository/contributors`, options); } - showArchive(projectId: ProjectId, { sha }: { sha: string }) { + showArchive(projectId: ProjectId, options?: { sha: string } & Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/repository/archive`, { - sha, - }); + return RequestHelper.get(this, `projects/${pId}/repository/archive`, options); } - showBlob(projectId: ProjectId, sha: string) { + showBlob(projectId: ProjectId, sha: string, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/repository/blobs/${sha}`); + return RequestHelper.get(this, `projects/${pId}/repository/blobs/${sha}`, options); } - showBlobRaw(projectId: ProjectId, sha: string) { + showBlobRaw(projectId: ProjectId, sha: string, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/repository/blobs/${sha}/raw`); + return RequestHelper.get(this, `projects/${pId}/repository/blobs/${sha}/raw`, options); } - tree(projectId: ProjectId, options: RequestOptions) { + tree(projectId: ProjectId, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/repository/tree`, options); diff --git a/src/services/RepositoryFiles.ts b/src/services/RepositoryFiles.ts index ce0640675..29c140fa1 100644 --- a/src/services/RepositoryFiles.ts +++ b/src/services/RepositoryFiles.ts @@ -1,46 +1,63 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class RepositoryFiles extends BaseService { - create(projectId: ProjectId, filePath: string, branch: string, options: RequestOptions) { + create( + projectId: ProjectId, + filePath: string, + branch: string, + content: string, + options?: BaseRequestOptions, + ) { const [pId, path] = [projectId, filePath].map(encodeURIComponent); return RequestHelper.post(this, `projects/${pId}/repository/files/${path}`, { branch, + content, ...options, }); } - edit(projectId: ProjectId, filePath: string, branch: string, options: RequestOptions) { + edit( + projectId: ProjectId, + filePath: string, + branch: string, + content: string, + options?: BaseRequestOptions, + ) { const [pId, path] = [projectId, filePath].map(encodeURIComponent); return RequestHelper.put(this, `projects/${pId}/repository/files/${path}`, { branch, + content, ...options, }); } - remove(projectId: ProjectId, filePath: string, branch: string, options: RequestOptions) { + remove(projectId: ProjectId, filePath: string, branch: string, options?: BaseRequestOptions) { const [pId, path] = [projectId, filePath].map(encodeURIComponent); - return RequestHelper.delete(this, `projects/${pId}/repository/files/${path}`, { + return RequestHelper.del(this, `projects/${pId}/repository/files/${path}`, { branch, ...options, }); } - show(projectId: ProjectId, filePath: string, ref: string) { + show(projectId: ProjectId, filePath: string, ref: string, options?: Sudo) { const [pId, path] = [projectId, filePath].map(encodeURIComponent); return RequestHelper.get(this, `projects/${pId}/repository/files/${path}`, { ref, + ...options, }); } - showRaw(projectId: ProjectId, filePath: string, ref: string) { + showRaw(projectId: ProjectId, filePath: string, ref: string, options?: Sudo) { const [pId, path] = [projectId, filePath].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/repository/files/${path}/raw`, { ref }); + return RequestHelper.get(this, `projects/${pId}/repository/files/${path}/raw`, { + ref, + ...options, + }); } } diff --git a/src/services/Runners.ts b/src/services/Runners.ts index f063c09fc..bfac9ea9c 100644 --- a/src/services/Runners.ts +++ b/src/services/Runners.ts @@ -1,55 +1,50 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; -type RunnerId = string | number; -interface RunnersOptions { - projectId?: ProjectId; -} class Runners extends BaseService { - all({ projectId, ...options }: RunnersOptions = {}) { + all({ projectId, ...options }: { projectId: ProjectId } & PaginatedRequestOptions) { const url = projectId ? `projects/${encodeURIComponent(projectId)}/runners` : 'runners/all'; return RequestHelper.get(this, url, options); } - allOwned(options: RequestOptions) { + allOwned(options?: BaseRequestOptions) { return RequestHelper.get(this, 'runners', options); } - edit(runnerId: RunnerId, options: RequestOptions) { + edit(runnerId: RunnerId, options?: BaseRequestOptions) { const rId = encodeURIComponent(runnerId); return RequestHelper.put(this, `runners/${rId}`, options); } - enable(projectId: ProjectId, runnerId: RunnerId) { + enable(projectId: ProjectId, runnerId: RunnerId, options?: Sudo) { const [pId, rId] = [projectId, runnerId].map(encodeURIComponent); - return RequestHelper.post(this, `projects/${pId}/runners`, { runnerId: rId }); + return RequestHelper.post(this, `projects/${pId}/runners`, { runnerId: rId, ...options }); } - disable(projectId: ProjectId, runnerId: RunnerId) { + disable(projectId: ProjectId, runnerId: RunnerId, options?: Sudo) { const [pId, rId] = [projectId, runnerId].map(encodeURIComponent); - return RequestHelper.delete(this, `projects/${pId}/runners/${rId}`); + return RequestHelper.del(this, `projects/${pId}/runners/${rId}`, options); } - jobs(runnerId: RunnerId) { + jobs(runnerId: RunnerId, options?: Sudo) { const rId = encodeURIComponent(runnerId); - return RequestHelper.get(this, `runners/${rId}/jobs`); + return RequestHelper.get(this, `runners/${rId}/jobs`, options); } - remove(runnerId: RunnerId) { + remove(runnerId: RunnerId, options?: Sudo) { const rId = encodeURIComponent(runnerId); - return RequestHelper.delete(this, `runners/${rId}`); + return RequestHelper.del(this, `runners/${rId}`, options); } - show(runnerId: RunnerId) { + show(runnerId: RunnerId, options?: Sudo) { const rId = encodeURIComponent(runnerId); - return RequestHelper.get(this, `runners/${rId}`); + return RequestHelper.get(this, `runners/${rId}`, options); } } diff --git a/src/services/Search.ts b/src/services/Search.ts index af9985c82..54bc1d794 100644 --- a/src/services/Search.ts +++ b/src/services/Search.ts @@ -1,11 +1,15 @@ import { BaseService, RequestHelper } from '../infrastructure'; -interface SearchOptions { - projectId: ProjectId; - groupId: string | number; -} class Search extends BaseService { - all(scope: string, search: string, { projectId, groupId }: SearchOptions) { + all( + scope: string, + search: string, + { + projectId, + groupId, + ...options + }: { projectId?: ProjectId; groupId?: GroupId } & BaseRequestOptions, + ) { let url = ''; if (projectId) { @@ -14,7 +18,7 @@ class Search extends BaseService { url += `groups/${encodeURIComponent(groupId)}/`; } - return RequestHelper.get(this, `${url}search`, { scope, search }); + return RequestHelper.get(this, `${url}search`, { scope, search, ...options }); } } diff --git a/src/services/Services.ts b/src/services/Services.ts index 5f7aae95c..fb2f27de1 100644 --- a/src/services/Services.ts +++ b/src/services/Services.ts @@ -1,32 +1,22 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; -type ServiceName = 'asana' | 'assembla' | 'bamboo' | 'bugzilla' | 'buildkite' | 'campfire' - | 'custom-issue-tracker' | 'drone-ci' | 'emails-on-push' | 'external-wiki' | 'flowdock' - | 'hangouts_chat' | 'hipchat' | 'irker' | 'jira' | 'kubernetes' | 'slack-slash-commands' - | 'slack' | 'mattermost-slash-commands' | 'packagist' | 'pipelines-email' | 'pivotaltracker' - | 'prometheus' | 'pushover' | 'redmine' | 'microsoft-teams' | 'mattermost' - | 'mattermost-slash-commands' | 'teamcity' | 'jenkins' | 'jenkins-deprecated' | 'mock-ci'; -/** - * @see https://docs.gitlab.com/ee/api/services.html - */ class Services extends BaseService { - edit(projectId: ProjectId, serviceName: ServiceName, options: RequestOptions) { + edit(projectId: ProjectId, serviceName: SupportedService, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.put(this, `projects/${pId}/services/${serviceName}`, options); } - remove(projectId: ProjectId, serviceName: ServiceName) { + remove(projectId: ProjectId, serviceName: SupportedService, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.delete(this, `projects/${pId}/services/${serviceName}`); + return RequestHelper.del(this, `projects/${pId}/services/${serviceName}`, options); } - show(projectId: ProjectId, serviceName: ServiceName) { + show(projectId: ProjectId, serviceName: SupportedService, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/services/${serviceName}`); + return RequestHelper.get(this, `projects/${pId}/services/${serviceName}`, options); } } diff --git a/src/services/Snippets.ts b/src/services/Snippets.ts index 77d2693cf..a9d81944f 100644 --- a/src/services/Snippets.ts +++ b/src/services/Snippets.ts @@ -1,21 +1,25 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; - -type SnippetId = string | number; class Snippets extends BaseService { - all(options = { public: false }) { - const url = options.public ? 'snippets/public' : 'snippets'; + all({ public: p, ...options }: { public: boolean } & PaginatedRequestOptions) { + const url = p ? 'snippets/public' : 'snippets'; + return RequestHelper.get(this, url, options); } - content(snippetId: SnippetId) { + content(snippetId: SnippetId, options?: Sudo) { const sId = encodeURIComponent(snippetId); - return RequestHelper.get(this, `snippets/${sId}/raw`); + return RequestHelper.get(this, `snippets/${sId}/raw`, options); } - create(title: string, fileName: string, content: string, visibility: string, options = {}) { + create( + title: string, + fileName: string, + content: string, + visibility: SnippetVisibility, + options?: BaseRequestOptions, + ) { return RequestHelper.post(this, 'snippets', { title, fileName, @@ -25,28 +29,28 @@ class Snippets extends BaseService { }); } - edit(snippetId: SnippetId, options: RequestOptions) { + edit(snippetId: SnippetId, options?: BaseRequestOptions) { const sId = encodeURIComponent(snippetId); return RequestHelper.put(this, `snippets/${sId}`, options); } - remove(snippetId: SnippetId) { + remove(snippetId: SnippetId, options?: Sudo) { const sId = encodeURIComponent(snippetId); - return RequestHelper.delete(this, `snippets/${sId}`); + return RequestHelper.del(this, `snippets/${sId}`, options); } - show(snippetId: SnippetId) { + show(snippetId: SnippetId, options?: Sudo) { const sId = encodeURIComponent(snippetId); - return RequestHelper.get(this, `snippets/${sId}`); + return RequestHelper.get(this, `snippets/${sId}`, options); } - userAgentDetails(snippetId: SnippetId) { + userAgentDetails(snippetId: SnippetId, options?: Sudo) { const sId = encodeURIComponent(snippetId); - return RequestHelper.get(this, `snippets/${sId}/user_agent_detail`); + return RequestHelper.get(this, `snippets/${sId}/user_agent_detail`, options); } } diff --git a/src/services/SystemHooks.ts b/src/services/SystemHooks.ts index fd58c8b9c..80a22f6ca 100644 --- a/src/services/SystemHooks.ts +++ b/src/services/SystemHooks.ts @@ -1,30 +1,24 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; -export type HookId = string | number; class SystemHooks extends BaseService { - add(url: string, options: RequestOptions) { + add(url: string, options?: BaseRequestOptions) { return RequestHelper.post(this, 'hooks', { url, ...options }); } - all(options: RequestOptions) { + all(options?: PaginatedRequestOptions) { return RequestHelper.get(this, 'hooks', options); } - edit(hookId: HookId, url: string, options: RequestOptions) { + edit(hookId: HookId, url: string, options?: BaseRequestOptions) { const hId = encodeURIComponent(hookId); return RequestHelper.put(this, `hooks/${hId}`, { url, ...options }); } - remove( - // @ts-ignore 'projectId' is declared but its value is never read - projectId: ProjectId, - hookId: HookId, - ) { + remove(hookId: HookId, options?: Sudo) { const hId = encodeURIComponent(hookId); - return RequestHelper.delete(this, `hooks/${hId}`); + return RequestHelper.del(this, `hooks/${hId}`, options); } } diff --git a/src/services/Tags.ts b/src/services/Tags.ts index 381b4ade9..c34cbc1a6 100644 --- a/src/services/Tags.ts +++ b/src/services/Tags.ts @@ -1,29 +1,28 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class Tags extends BaseService { - all(projectId: ProjectId, options: RequestOptions) { + all(projectId: ProjectId, options?: PaginatedRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/repository/tags`, options); } - create(projectId: ProjectId, options: RequestOptions) { + create(projectId: ProjectId, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.post(this, `projects/${pId}/repository/tags`, options); } - remove(projectId: ProjectId, tagName: string) { + remove(projectId: ProjectId, tagName: string, options?: Sudo) { const [pId, tId] = [projectId, tagName].map(encodeURIComponent); - return RequestHelper.delete(this, `projects/${pId}/repository/tags/${tId}`); + return RequestHelper.del(this, `projects/${pId}/repository/tags/${tId}`, options); } - show(projectId: ProjectId, tagName: string) { + show(projectId: ProjectId, tagName: string, options?: Sudo) { const [pId, tId] = [projectId, tagName].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/repository/tags/${tId}`); + return RequestHelper.get(this, `projects/${pId}/repository/tags/${tId}`, options); } } diff --git a/src/services/Todos.ts b/src/services/Todos.ts index 4451264ef..ca2c89e39 100644 --- a/src/services/Todos.ts +++ b/src/services/Todos.ts @@ -1,26 +1,24 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; -import { MergeRequestId } from './MergeRequests'; -type TodoId = string | number; -interface TodosOptions { - todoId: TodoId; -} class Todos extends BaseService { - all(options: RequestOptions) { + all(options?: PaginatedRequestOptions) { return RequestHelper.get(this, 'todos', options); } - create(projectId: ProjectId, mergerequestId: MergeRequestId) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); - - return RequestHelper.post(this, `projects/${pId}/merge_requests/${mId}/todo`); + create(projectId: ProjectId, mergerequestId: MergeRequestId, options?: Sudo) { + return RequestHelper.post( + this, + `projects/${projectId}/merge_requests/${mergerequestId}/todo`, + options, + ); } - done({ todoId }: TodosOptions) { - const tId = encodeURIComponent(todoId); + done({ todoId, ...options }: { todoId?: TodoId } & Sudo) { + let url = 'mark_as_done'; + + if (todoId) url = `${todoId}/${url}`; - return RequestHelper.delete(this, `todos/${tId}/mark_as_done`); + return RequestHelper.del(this, `todos/${url}`, options); } } diff --git a/src/services/Triggers.ts b/src/services/Triggers.ts index 858600c25..30396e818 100644 --- a/src/services/Triggers.ts +++ b/src/services/Triggers.ts @@ -1,46 +1,40 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; - -type TriggerId = string | number; class Triggers extends BaseService { - add(projectId: ProjectId, options: RequestOptions) { + add(projectId: ProjectId, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.post(this, `projects/${pId}/triggers`, options); } - all(projectId: ProjectId) { + all(projectId: ProjectId, options?: PaginatedRequestOptions) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/triggers`); + return RequestHelper.get(this, `projects/${pId}/triggers`, options); } - edit(projectId: ProjectId, triggerId: TriggerId, options: RequestOptions) { + edit(projectId: ProjectId, triggerId: TriggerId, options?: BaseRequestOptions) { const [pId, tId] = [projectId, triggerId].map(encodeURIComponent); return RequestHelper.put(this, `projects/${pId}/triggers/${tId}`, options); } - remove(projectId: ProjectId, triggerId: TriggerId) { + remove(projectId: ProjectId, triggerId: TriggerId, options?: Sudo) { const [pId, tId] = [projectId, triggerId].map(encodeURIComponent); - return RequestHelper.delete(this, `projects/${pId}/triggers/${tId}`); + return RequestHelper.del(this, `projects/${pId}/triggers/${tId}`, options); } - show(projectId: ProjectId, triggerId: TriggerId) { + show(projectId: ProjectId, triggerId: TriggerId, options?: Sudo) { const [pId, tId] = [projectId, triggerId].map(encodeURIComponent); - return RequestHelper.get(this, `projects/${pId}/triggers/${tId}`); + return RequestHelper.get(this, `projects/${pId}/triggers/${tId}`, options); } - pipeline(projectId: ProjectId, options: RequestOptions) { - if (!options.ref) throw new Error('Missing required property: ref'); - if (!options.token) throw new Error('Missing required property: token'); - + pipeline(projectId: ProjectId, ref: string, token: string, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.post(this, `projects/${pId}/trigger/pipeline`, options); + return RequestHelper.post(this, `projects/${pId}/trigger/pipeline`, { ref, token, ...options }); } } diff --git a/src/services/UserCustomAttributes.ts b/src/services/UserCustomAttributes.ts index 93dea4e5f..6bbdc7fff 100644 --- a/src/services/UserCustomAttributes.ts +++ b/src/services/UserCustomAttributes.ts @@ -1,8 +1,7 @@ import { ResourceCustomAttributes } from '../templates'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; class UserCustomAttributes extends ResourceCustomAttributes { - constructor(options: BaseModelContructorOptions) { + constructor(options: BaseServiceOptions) { super('users', options); } } diff --git a/src/services/UserEmails.ts b/src/services/UserEmails.ts index 0193644cc..f2dfee0bf 100644 --- a/src/services/UserEmails.ts +++ b/src/services/UserEmails.ts @@ -1,28 +1,29 @@ import { BaseService, RequestHelper } from '../infrastructure'; -const url = (userId?: UserId) => (userId ? `users/${encodeURIComponent(userId)}/emails` : 'user/emails'); +const url = userId => (userId ? `users/${encodeURIComponent(userId)}/emails` : 'user/emails'); class UserEmails extends BaseService { - all({ userId }: UserIdOptions = {}) { - return RequestHelper.get(this, url(userId)); + all({ userId, ...options }: { userId?: UserId } & PaginatedRequestOptions = {}) { + return RequestHelper.get(this, url(userId), options); } - add(email: string, { userId }: UserIdOptions = {}) { + add(email, { userId, ...options }: { userId?: UserId } & BaseRequestOptions = {}) { return RequestHelper.post(this, url(userId), { email, + ...options, }); } - show(emailId: string) { + show(emailId, options?: BaseRequestOptions) { const eId = encodeURIComponent(emailId); - return RequestHelper.get(this, `user/emails/${eId}`); + return RequestHelper.get(this, `user/emails/${eId}`, options); } - remove(emailId: string, { userId }: UserIdOptions = {}) { + remove(emailId, { userId, ...options }: { userId?: UserId } & BaseRequestOptions = {}) { const eId = encodeURIComponent(emailId); - return RequestHelper.delete(this, `${url(userId)}/${eId}`); + return RequestHelper.del(this, `${url(userId)}/${eId}`, options); } } diff --git a/src/services/UserGPGKeys.ts b/src/services/UserGPGKeys.ts index f0b5af932..189122379 100644 --- a/src/services/UserGPGKeys.ts +++ b/src/services/UserGPGKeys.ts @@ -1,29 +1,30 @@ import { BaseService, RequestHelper } from '../infrastructure'; -const url = (userId?: UserId) => (userId ? `users/${encodeURIComponent(userId)}/gpg_keys` : 'users/gpg_keys'); +const url = userId => (userId ? `users/${encodeURIComponent(userId)}/gpg_keys` : 'users/gpg_keys'); class UserGPGKeys extends BaseService { - all({ userId }: UserIdOptions = {}) { - return RequestHelper.get(this, url(userId)); + all({ userId, ...options }: { userId?: UserId } & PaginatedRequestOptions = {}) { + return RequestHelper.get(this, url(userId), options); } - add(title: string, key: string, { userId }: UserIdOptions = {}) { + add(title, key, { userId, ...options }: { userId?: UserId } & BaseRequestOptions = {}) { return RequestHelper.post(this, url(userId), { title, key, + ...options, }); } - show(keyId: string, { userId }: UserIdOptions = {}) { + show(keyId, { userId, ...options }: { userId?: UserId } & BaseRequestOptions = {}) { const kId = encodeURIComponent(keyId); - return RequestHelper.get(this, `${url(userId)}/${kId}`); + return RequestHelper.get(this, `${url(userId)}/${kId}`, options); } - remove(keyId: string, { userId }: UserIdOptions = {}) { + remove(keyId, { userId, ...options }: { userId?: UserId } & BaseRequestOptions = {}) { const kId = encodeURIComponent(keyId); - return RequestHelper.delete(this, `${url(userId)}/${kId}`); + return RequestHelper.del(this, `${url(userId)}/${kId}`, options); } } diff --git a/src/services/UserImpersonationTokens.ts b/src/services/UserImpersonationTokens.ts index bb6cea5d8..bc18356d5 100644 --- a/src/services/UserImpersonationTokens.ts +++ b/src/services/UserImpersonationTokens.ts @@ -1,43 +1,39 @@ import { BaseService, RequestHelper } from '../infrastructure'; -type ImpersonationTokenId = string | number; - class UserImpersonationTokens extends BaseService { - all(userId: UserId) { + all(userId: UserId, options?: PaginatedRequestOptions) { const uId = encodeURIComponent(userId); - return RequestHelper.get(this, `users/${uId}/impersonation_tokens`); + return RequestHelper.get(this, `users/${uId}/impersonation_tokens`, options); } - /** - * It creates a new impersonation token. Note that only administrators can do this. - * You are only able to create impersonation tokens to impersonate the user and perform - * both API calls and Git reads and writes. The user will not see these tokens - * in their profile settings page. - * @param userId UserId - * @param name The name of the impersonation token - * @param scopes The array of scopes of the impersonation token (api, read_user) - * @param expiresAt The expiration date of the impersonation token in ISO format (YYYY-MM-DD) - */ - add(userId: UserId, name: string, scopes: temporaryAny, expiresAt: string) { + + add( + userId: UserId, + name: string, + scopes: ImpersonationTokenScope, + expiresAt: string, + options?: Sudo, + ) { const uId = encodeURIComponent(userId); return RequestHelper.post(this, `users/${uId}/impersonation_tokens`, { name, expiresAt, scopes, + ...options, }); } - show(userId: UserId, tokenId: ImpersonationTokenId) { + show(userId: UserId, tokenId: ImpersonationTokenId, options?: Sudo) { const [uId, tId] = [userId, tokenId].map(encodeURIComponent); - return RequestHelper.get(this, `users/${uId}/impersonation_tokens/${tId}`); + return RequestHelper.get(this, `users/${uId}/impersonation_tokens/${tId}`, options); } - revoke(userId: UserId, tokenId: ImpersonationTokenId) { + revoke(userId: UserId, tokenId: ImpersonationTokenId, options?: Sudo) { const [uId, tId] = [userId, tokenId].map(encodeURIComponent); - return RequestHelper.delete(this, `users/${uId}/impersonation_tokens/${tId}`); + return RequestHelper.del(this, `users/${uId}/impersonation_tokens/${tId}`, options); } } diff --git a/src/services/UserKeys.ts b/src/services/UserKeys.ts index 99a917b68..f5065d56f 100644 --- a/src/services/UserKeys.ts +++ b/src/services/UserKeys.ts @@ -1,31 +1,30 @@ import { BaseService, RequestHelper } from '../infrastructure'; -const url = (userId?: string) => (userId ? `users/${encodeURIComponent(userId)}/keys` : 'user/keys'); +const url = userId => (userId ? `users/${encodeURIComponent(userId)}/keys` : 'user/keys'); -/** SSH key ID */ -export type KeyId = string; class UserKeys extends BaseService { - all({ userId }: UserIdOptions) { - return RequestHelper.get(this, url(userId)); + all({ userId, ...options }: { userId?: UserId } & PaginatedRequestOptions = {}) { + return RequestHelper.get(this, url(userId), options); } - /** Add SSH key for user */ - create(title: string, key: KeyId, { userId }: UserIdOptions = {}) { + + create(title, key, { userId, ...options }: { userId?: UserId } & BaseRequestOptions = {}) { return RequestHelper.post(this, url(userId), { title, key, + ...options, }); } - show(keyId: KeyId) { + show(keyId, options?: BaseRequestOptions) { const kId = encodeURIComponent(keyId); - return RequestHelper.get(this, `user/keys/${kId}`); + return RequestHelper.get(this, `user/keys/${kId}`, options); } - remove(keyId: KeyId, { userId }: UserIdOptions = {}) { + remove(keyId, { userId, ...options }: { userId?: UserId } & BaseRequestOptions = {}) { const kId = encodeURIComponent(keyId); - return RequestHelper.delete(this, `${url(userId)}/${kId}`); + return RequestHelper.del(this, `${url(userId)}/${kId}`, options); } } diff --git a/src/services/Users.ts b/src/services/Users.ts index 26c227b06..8eb5d94cf 100644 --- a/src/services/Users.ts +++ b/src/services/Users.ts @@ -1,79 +1,77 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { assertEventOptions, EventOptions } from './Events'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class Users extends BaseService { - all(options: RequestOptions) { + all(options?: PaginatedRequestOptions) { return RequestHelper.get(this, 'users', options); } - activities() { - return RequestHelper.get(this, 'users/activities'); + activities(options?: Sudo) { + return RequestHelper.get(this, 'users/activities', options); } - projects(userId: UserId) { + projects(userId: UserId, options?: Sudo) { const uId = encodeURIComponent(userId); - return RequestHelper.get(this, `users/${uId}/projects`); + return RequestHelper.get(this, `users/${uId}/projects`, options); } - block(userId: UserId) { + block(userId: UserId, options?: Sudo) { const uId = encodeURIComponent(userId); - return RequestHelper.post(this, `users/${uId}/block`); + return RequestHelper.post(this, `users/${uId}/block`, options); } - create(options: RequestOptions) { + create(options?: BaseRequestOptions) { return RequestHelper.post(this, 'users', options); } - current() { - return RequestHelper.get(this, 'user'); + current(options?: Sudo) { + return RequestHelper.get(this, 'user', options); } - edit(userId: UserId, options: RequestOptions) { + edit(userId: UserId, options?: BaseRequestOptions) { const uId = encodeURIComponent(userId); return RequestHelper.put(this, `users/${uId}`, options); } - events(userId: UserId, options: RequestOptions & EventOptions) { - assertEventOptions(options.action, options.targetType); - + events(userId: UserId, options?: BaseRequestOptions & EventOptions) { const uId = encodeURIComponent(userId); return RequestHelper.get(this, `users/${uId}/events`, options); } - session(email: string, password: string) { + session(email: string, password: string, options?: Sudo) { return RequestHelper.post(this, 'session', { email, password, + ...options, }); } - search(emailOrUsername: string) { + search(emailOrUsername: string, options?: Sudo) { return RequestHelper.get(this, 'users', { search: emailOrUsername, + ...options, }); } - show(userId: UserId, options: RequestOptions) { + show(userId: UserId, options?: BaseRequestOptions) { const uId = encodeURIComponent(userId); return RequestHelper.get(this, `users/${uId}`, options); } - remove(userId: UserId) { + remove(userId: UserId, options?: Sudo) { const uId = encodeURIComponent(userId); - return RequestHelper.delete(this, `users/${uId}`); + return RequestHelper.del(this, `users/${uId}`, options); } - unblock(userId: UserId) { + unblock(userId: UserId, options?: Sudo) { const uId = encodeURIComponent(userId); - return RequestHelper.post(this, `users/${uId}/unblock`); + return RequestHelper.post(this, `users/${uId}/unblock`, options); } } diff --git a/src/services/Version.ts b/src/services/Version.ts index 92360ad76..f592716b9 100644 --- a/src/services/Version.ts +++ b/src/services/Version.ts @@ -1,8 +1,8 @@ import { BaseService, RequestHelper } from '../infrastructure'; class Version extends BaseService { - show() { - return RequestHelper.get(this, 'version'); + show(options?: Sudo) { + return RequestHelper.get(this, 'version', options); } } diff --git a/src/services/Wikis.ts b/src/services/Wikis.ts index c57eeaa25..00e0cdecc 100644 --- a/src/services/Wikis.ts +++ b/src/services/Wikis.ts @@ -1,35 +1,34 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class Wikis extends BaseService { - all(projectId: ProjectId, options: RequestOptions) { + all(projectId: ProjectId, options?: PaginatedRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.get(this, `projects/${pId}/wikis`, options); } - create(projectId: ProjectId, options: RequestOptions) { + create(projectId: ProjectId, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.post(this, `projects/${pId}/wikis`, options); } - edit(projectId: ProjectId, slug: string, options: RequestOptions) { + edit(projectId: ProjectId, slug: string, options?: BaseRequestOptions) { const pId = encodeURIComponent(projectId); return RequestHelper.put(this, `projects/${pId}/wikis/${slug}`, options); } - show(projectId: ProjectId, slug: string) { + show(projectId: ProjectId, slug: string, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.get(this, `projects/${pId}/wikis/${slug}`); + return RequestHelper.get(this, `projects/${pId}/wikis/${slug}`, options); } - remove(projectId: ProjectId, slug: string) { + remove(projectId: ProjectId, slug: string, options?: Sudo) { const pId = encodeURIComponent(projectId); - return RequestHelper.delete(this, `projects/${pId}/wikis/${slug}`); + return RequestHelper.del(this, `projects/${pId}/wikis/${slug}`, options); } } diff --git a/src/templates/ResourceAccessRequests.ts b/src/templates/ResourceAccessRequests.ts index 57266ccd3..0096e440b 100644 --- a/src/templates/ResourceAccessRequests.ts +++ b/src/templates/ResourceAccessRequests.ts @@ -1,23 +1,8 @@ -import URLJoin from 'url-join'; import { BaseService, RequestHelper } from '../infrastructure'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; - -export const ACCESS_LEVELS = { - GUEST: 10, - REPORTER: 20, - DEVELOPER: 30, - MASTER: 40, - OWNER: 50, -}; class ResourceAccessRequests extends BaseService { - protected ACCESS_LEVELS: typeof ACCESS_LEVELS; - - constructor(resourceType: string, baseParams: BaseModelContructorOptions) { - super(baseParams); - - this.url = URLJoin(this.url, resourceType); - this.ACCESS_LEVELS = ACCESS_LEVELS; + constructor(resourceType: string, options: BaseServiceOptions) { + super({ url: resourceType, ...options }); } all(resourceId: ResourceId) { @@ -32,7 +17,11 @@ class ResourceAccessRequests extends BaseService { return RequestHelper.post(this, `${rId}/access_requests`); } - approve(resourceId: ResourceId, userId: UserId, { accessLevel = 30 }) { + approve( + resourceId: ResourceId, + userId: UserId, + { accessLevel }: { accessLevel: AccessLevel } & Sudo, + ) { const [rId, uId] = [resourceId, userId].map(encodeURIComponent); return RequestHelper.post(this, `${rId}/access_requests/${uId}/approve`, { @@ -43,7 +32,7 @@ class ResourceAccessRequests extends BaseService { deny(resourceId: ResourceId, userId: UserId) { const [rId, uId] = [resourceId, userId].map(encodeURIComponent); - return RequestHelper.delete(this, `${rId}/access_requests/${uId}`); + return RequestHelper.del(this, `${rId}/access_requests/${uId}`); } } diff --git a/src/templates/ResourceAwardEmojis.ts b/src/templates/ResourceAwardEmojis.ts index d85aa203a..c15b457f0 100644 --- a/src/templates/ResourceAwardEmojis.ts +++ b/src/templates/ResourceAwardEmojis.ts @@ -1,64 +1,79 @@ -import URLJoin from 'url-join'; import { BaseService, RequestHelper } from '../infrastructure'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; -import { RequestOptions } from '../infrastructure/RequestHelper'; -function url( - projectId: ProjectId, - resourceType: ResourceType, - resourceId: ResourceId, - noteId: NoteId, -) { +function url(projectId, resourceType, resourceId, awardId, noteId) { const [pId, rId] = [projectId, resourceId].map(encodeURIComponent); - let output = `${pId}/${resourceType}/${rId}/`; + const output = [pId, resourceType, rId]; - if (noteId) { - output += `notes/${encodeURIComponent(noteId)}/`; - } + if (noteId) output.push('notes', encodeURIComponent(noteId)); + + output.push(encodeURIComponent('award_emoji')); - output += 'award_emoji'; + if (awardId) output.push(encodeURIComponent(awardId)); - return output; + return output.join('/'); } class ResourceAwardsEmojis extends BaseService { - protected resourceType: temporaryAny; + protected resourceType: string; - constructor(resourceType: string, baseParams: BaseModelContructorOptions) { - super(baseParams); + constructor(resourceType: string, options: BaseServiceOptions) { + super({ url: 'projects', ...options }); - this.url = URLJoin(this.url, 'projects'); this.resourceType = resourceType; } - all(projectId: ProjectId, resourceId: ResourceId, options: RequestOptions, noteId: NoteId) { - return RequestHelper.get(this, url(projectId, this.resourceType, resourceId, noteId), options); + all( + projectId: ProjectId, + resourceId: ResourceId, + noteId: NoteId, + options?: PaginatedRequestOptions, + ) { + return RequestHelper.get( + this, + url(projectId, this.resourceType, resourceId, null, noteId), + options, + ); } - award(projectId: ProjectId, resourceId: ResourceId, name: string, noteId: NoteId) { - return RequestHelper.post(this, url(projectId, this.resourceType, resourceId, noteId), { + award( + projectId: ProjectId, + resourceId: ResourceId, + name: string, + noteId: NoteId, + options?: Sudo, + ) { + return RequestHelper.post(this, url(projectId, this.resourceType, resourceId, null, noteId), { name, + ...options, }); } remove( projectId: ProjectId, resourceId: ResourceId, - // @ts-ignore 'awardId' is declared but its value is never read - awardId: string | number, + awardId: AwardId, noteId: NoteId, + options?: Sudo, ) { - return RequestHelper.delete(this, url(projectId, this.resourceType, resourceId, noteId)); + return RequestHelper.del( + this, + url(projectId, this.resourceType, resourceId, awardId, noteId), + options, + ); } show( projectId: ProjectId, resourceId: ResourceId, - // @ts-ignore 'awardId' is declared but its value is never read - awardId: string | number, + awardId: AwardId, noteId: NoteId, + options?: Sudo, ) { - return RequestHelper.get(this, url(projectId, this.resourceType, resourceId, noteId)); + return RequestHelper.get( + this, + url(projectId, this.resourceType, resourceId, awardId, noteId), + options, + ); } } diff --git a/src/templates/ResourceBadges.ts b/src/templates/ResourceBadges.ts index 421835280..430c58902 100644 --- a/src/templates/ResourceBadges.ts +++ b/src/templates/ResourceBadges.ts @@ -1,50 +1,44 @@ -import URLJoin from 'url-join'; import { BaseService, RequestHelper } from '../infrastructure'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; -import { RequestOptions } from '../infrastructure/RequestHelper'; -export type BadgeId = string | number; class ResourceBadges extends BaseService { - constructor(resourceType: string, baseParams: BaseModelContructorOptions) { - super(baseParams); - - this.url = URLJoin(this.url, resourceType); + constructor(resourceType: string, options: BaseServiceOptions) { + super({ url: resourceType, ...options }); } - add(resourceId: ResourceId, options: RequestOptions) { + add(resourceId: ResourceId, options?: BaseRequestOptions) { const rId = encodeURIComponent(resourceId); return RequestHelper.post(this, `${rId}/badges`, options); } - all(resourceId: ResourceId, options: RequestOptions) { + all(resourceId: ResourceId, options?: PaginatedRequestOptions) { const rId = encodeURIComponent(resourceId); return RequestHelper.get(this, `${rId}/badges`, options); } - edit(resourceId: ResourceId, badgeId: BadgeId, options: RequestOptions) { + edit(resourceId: ResourceId, badgeId: BadgeId, options?: BaseRequestOptions) { const [rId, bId] = [resourceId, badgeId].map(encodeURIComponent); return RequestHelper.put(this, `${rId}/badges/${bId}`, options); } - preview(resourceId: ResourceId, linkUrl: string, imageUrl: string) { + preview(resourceId: ResourceId, linkUrl: string, imageUrl: string, options?: Sudo) { const rId = encodeURIComponent(resourceId); - return RequestHelper.get(this, `${rId}/badges/render`, { linkUrl, imageUrl }); + return RequestHelper.get(this, `${rId}/badges/render`, { linkUrl, imageUrl, ...options }); } - remove(resourceId: ResourceId, badgeId: BadgeId) { + remove(resourceId: ResourceId, badgeId: BadgeId, options?: Sudo) { const [rId, bId] = [resourceId, badgeId].map(encodeURIComponent); - return RequestHelper.delete(this, `${rId}/badges/${bId}`); + return RequestHelper.del(this, `${rId}/badges/${bId}`, options); } - show(resourceId: ResourceId, badgeId: BadgeId) { + show(resourceId: ResourceId, badgeId: BadgeId, options?: Sudo) { const [rId, bId] = [resourceId, badgeId].map(encodeURIComponent); - return RequestHelper.get(this, `${rId}/badges/${bId}`); + return RequestHelper.get(this, `${rId}/badges/${bId}`, options); } } diff --git a/src/templates/ResourceCustomAttributes.ts b/src/templates/ResourceCustomAttributes.ts index eb58d6a0d..0090087cb 100644 --- a/src/templates/ResourceCustomAttributes.ts +++ b/src/templates/ResourceCustomAttributes.ts @@ -1,39 +1,35 @@ -import URLJoin from 'url-join'; import { BaseService, RequestHelper } from '../infrastructure'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; -export type CustomAttributeId = string | number; class ResourceCustomAttributes extends BaseService { - constructor(resourceType: string, baseParams: BaseModelContructorOptions) { - super(baseParams); - - this.url = URLJoin(this.url, resourceType); + constructor(resourceType: string, options: BaseServiceOptions) { + super({ url: resourceType, ...options }); } - all(resourceId: ResourceId) { + all(resourceId: ResourceId, options?: PaginatedRequestOptions) { const rId = encodeURIComponent(resourceId); - return RequestHelper.get(this, `${rId}/custom_attributes`); + return RequestHelper.get(this, `${rId}/custom_attributes`, options); } - set(resourceId: ResourceId, customAttributeId: CustomAttributeId, value: string) { + set(resourceId: ResourceId, customAttributeId: CustomAttributeId, value: string, options?: Sudo) { const [rId, cId] = [resourceId, customAttributeId].map(encodeURIComponent); return RequestHelper.put(this, `${rId}/custom_attributes/${cId}`, { value, + ...options, }); } - remove(resourceId: ResourceId, customAttributeId: CustomAttributeId) { + remove(resourceId: ResourceId, customAttributeId: CustomAttributeId, options?: Sudo) { const [rId, cId] = [resourceId, customAttributeId].map(encodeURIComponent); - return RequestHelper.delete(this, `${rId}/custom_attributes/${cId}`); + return RequestHelper.del(this, `${rId}/custom_attributes/${cId}`, options); } - show(resourceId: ResourceId, customAttributeId: CustomAttributeId) { + show(resourceId: ResourceId, customAttributeId: CustomAttributeId, options?: Sudo) { const [rId, cId] = [resourceId, customAttributeId].map(encodeURIComponent); - return RequestHelper.get(this, `${rId}/custom_attributes/${cId}`); + return RequestHelper.get(this, `${rId}/custom_attributes/${cId}`, options); } } diff --git a/src/templates/ResourceDiscussions.ts b/src/templates/ResourceDiscussions.ts index 00c4e22dd..a842e1d2b 100644 --- a/src/templates/ResourceDiscussions.ts +++ b/src/templates/ResourceDiscussions.ts @@ -1,77 +1,110 @@ -import URLJoin from 'url-join'; import { BaseService, RequestHelper } from '../infrastructure'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; -import { RequestOptions } from '../infrastructure/RequestHelper'; -export type DiscussiodId = string | number; class ResourceDiscussions extends BaseService { protected resource2Type: string; - constructor(resourceType: string, resource2Type: string, baseParams: BaseModelContructorOptions) { - super(baseParams); + constructor( + resourceType: string, + resource2Type: string, + options: BaseServiceOptions, + ) { + super({ url: resourceType, ...options }); - this.url = URLJoin(this.url, resourceType); this.resource2Type = resource2Type; } addNote( - resourceId: string, - resource2Id: string, - discussiodId: string, + resourceId: ResourceId, + resource2Id: ResourceId, + discussionId: DiscussionId, noteId: NoteId, - options: RequestOptions, + content: string, + options?: BaseRequestOptions, ) { - if (!options.body) throw new Error('Missing required property: body'); + if (!content) throw new Error('Missing required content argument'); - const [rId, r2Id, dId, nId] = [resourceId, resource2Id, discussiodId, noteId] - .map(encodeURIComponent); + const [rId, r2Id, dId, nId] = [resourceId, resource2Id, discussionId, noteId].map( + encodeURIComponent, + ); - return RequestHelper.put(this, `${rId}/${this.resource2Type}/${r2Id}/discussions/${dId}/notes/${nId}`, options); + return RequestHelper.put( + this, + `${rId}/${this.resource2Type}/${r2Id}/discussions/${dId}/notes/${nId}`, + { body: content, ...options }, + ); } - all(resourceId: ResourceId, resource2Id: Resource2Id, options: RequestOptions) { + all(resourceId: ResourceId, resource2Id: ResourceId, options?: PaginatedRequestOptions) { const [rId, r2Id] = [resourceId, resource2Id].map(encodeURIComponent); return RequestHelper.get(this, `${rId}/${this.resource2Type}/${r2Id}/discussions`, options); } - create(resourceId: ResourceId, resource2Id: Resource2Id, options: RequestOptions) { - if (!options.body) throw new Error('Missing required property: body'); + create( + resourceId: ResourceId, + resource2Id: ResourceId, + content: string, + options?: BaseRequestOptions, + ) { + if (!content) throw new Error('Missing required content argument'); const [rId, r2Id] = [resourceId, resource2Id].map(encodeURIComponent); - return RequestHelper.post(this, `${rId}/${this.resource2Type}/${r2Id}/discussions`, options); + return RequestHelper.post(this, `${rId}/${this.resource2Type}/${r2Id}/discussions`, { + body: content, + ...options, + }); } editNote( resourceId: ResourceId, - resource2Id: Resource2Id, - discussiodId: DiscussiodId, + resource2Id: ResourceId, + discussionId: DiscussionId, noteId: NoteId, - options: RequestOptions, + options?: BaseRequestOptions, ) { - const [rId, r2Id, dId, nId] = [resourceId, resource2Id, discussiodId, noteId] - .map(encodeURIComponent); - - return RequestHelper.put(this, `${rId}/${this.resource2Type}/${r2Id}/discussions/${dId}/notes/${nId}`, { body: options }); + const [rId, r2Id, dId, nId] = [resourceId, resource2Id, discussionId, noteId].map( + encodeURIComponent, + ); + + return RequestHelper.put( + this, + `${rId}/${this.resource2Type}/${r2Id}/discussions/${dId}/notes/${nId}`, + { body: options }, + ); } removeNote( resourceId: ResourceId, - resource2Id: Resource2Id, - discussiodId: DiscussiodId, + resource2Id: ResourceId, + discussionId: DiscussionId, noteId: NoteId, + options?: Sudo, ) { - const [rId, r2Id, dId, nId] = [resourceId, resource2Id, discussiodId, noteId] - .map(encodeURIComponent); - - return RequestHelper.delete(this, `${rId}/${this.resource2Type}/${r2Id}/discussions/${dId}/notes/${nId}`); + const [rId, r2Id, dId, nId] = [resourceId, resource2Id, discussionId, noteId].map( + encodeURIComponent, + ); + + return RequestHelper.del( + this, + `${rId}/${this.resource2Type}/${r2Id}/discussions/${dId}/notes/${nId}`, + options, + ); } - show(resourceId: ResourceId, resource2Id: Resource2Id, discussiodId: DiscussiodId) { - const [rId, r2Id, dId] = [resourceId, resource2Id, discussiodId].map(encodeURIComponent); + show( + resourceId: ResourceId, + resource2Id: ResourceId, + discussionId: DiscussionId, + options?: Sudo, + ) { + const [rId, r2Id, dId] = [resourceId, resource2Id, discussionId].map(encodeURIComponent); - return RequestHelper.get(this, `${rId}/${this.resource2Type}/${r2Id}/discussions/${dId}`); + return RequestHelper.get( + this, + `${rId}/${this.resource2Type}/${r2Id}/discussions/${dId}`, + options, + ); } } diff --git a/src/templates/ResourceIssueBoards.ts b/src/templates/ResourceIssueBoards.ts index 58d6e62cb..79152d4cb 100644 --- a/src/templates/ResourceIssueBoards.ts +++ b/src/templates/ResourceIssueBoards.ts @@ -1,78 +1,74 @@ -import URLJoin from 'url-join'; import { BaseService, RequestHelper } from '../infrastructure'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; -import { RequestOptions } from '../infrastructure/RequestHelper'; - -export type BoardId = string | number; -export type ListId = string | number; -export type LabelId = string | number; -/** The position of the list */ -export type Position = string | number; -class ResourceIssueBoards extends BaseService { - constructor(resourceType: string, baseParams: BaseModelContructorOptions) { - super(baseParams); - this.url = URLJoin(this.url, resourceType); +class ResourceIssueBoards extends BaseService { + constructor(resourceType: string, options) { + super({ url: resourceType, ...options }); } - all(resourceId: ResourceId, options: RequestOptions) { + all(resourceId: ResourceId, options?: PaginatedRequestOptions) { const rId = encodeURIComponent(resourceId); return RequestHelper.get(this, `${rId}/boards`, options); } - create(resourceId: ResourceId, name: string) { + create(resourceId: ResourceId, name: string, options?: Sudo) { const rId = encodeURIComponent(resourceId); - return RequestHelper.post(this, `${rId}/boards`, { name }); + return RequestHelper.post(this, `${rId}/boards`, { name, ...options }); } - createList(resourceId: ResourceId, boardId: BoardId, labelId: LabelId) { + createList(resourceId: ResourceId, boardId: number, labelId: LabelId, options?: Sudo) { const [rId, bId] = [resourceId, boardId].map(encodeURIComponent); - return RequestHelper.post(this, `${rId}/boards/${bId}/lists`, { labelId }); + return RequestHelper.post(this, `${rId}/boards/${bId}/lists`, { labelId, ...options }); } - edit(resourceId: ResourceId, boardId: BoardId, options: RequestOptions) { + edit(resourceId: ResourceId, boardId: number, options?: BaseRequestOptions) { const [rId, bId] = [resourceId, boardId].map(encodeURIComponent); return RequestHelper.put(this, `${rId}/boards/${bId}`, options); } - editList(resourceId: ResourceId, boardId: BoardId, listId: ListId, position: Position) { + editList( + resourceId: ResourceId, + boardId: number, + listId: number, + position: number, + options?: Sudo, + ) { const [rId, bId, lId] = [resourceId, boardId, listId].map(encodeURIComponent); - return RequestHelper.put(this, `${rId}/boards/${bId}/lists/${lId}`, { position }); + return RequestHelper.put(this, `${rId}/boards/${bId}/lists/${lId}`, { position, ...options }); } - lists(resourceId: ResourceId, boardId: BoardId) { + lists(resourceId: ResourceId, boardId: number, options?: Sudo) { const [rId, bId] = [resourceId, boardId].map(encodeURIComponent); - return RequestHelper.get(this, `${rId}/boards/${bId}/lists`); + return RequestHelper.get(this, `${rId}/boards/${bId}/lists`, options); } - remove(resourceId: ResourceId, boardId: BoardId) { + remove(resourceId: ResourceId, boardId: number, options?: Sudo) { const [rId, bId] = [resourceId, boardId].map(encodeURIComponent); - return RequestHelper.delete(this, `${rId}/boards/${bId}`); + return RequestHelper.del(this, `${rId}/boards/${bId}`, options); } - removeList(resourceId: ResourceId, boardId: BoardId, listId: ListId) { + removeList(resourceId: ResourceId, boardId: number, listId: number, options?: Sudo) { const [rId, bId, lId] = [resourceId, boardId, listId].map(encodeURIComponent); - return RequestHelper.delete(this, `${rId}/boards/${bId}/lists/${lId}`); + return RequestHelper.del(this, `${rId}/boards/${bId}/lists/${lId}`, options); } - show(resourceId: ResourceId, boardId: BoardId) { + show(resourceId: ResourceId, boardId: number, options?: Sudo) { const [rId, bId] = [resourceId, boardId].map(encodeURIComponent); - return RequestHelper.get(this, `${rId}/boards/${bId}`); + return RequestHelper.get(this, `${rId}/boards/${bId}`, options); } - showList(resourceId: ResourceId, boardId: BoardId, listId: ListId) { + showList(resourceId: ResourceId, boardId: number, listId: number, options?: Sudo) { const [rId, bId, lId] = [resourceId, boardId, listId].map(encodeURIComponent); - return RequestHelper.get(this, `${rId}/boards/${bId}/lists/${lId}`); + return RequestHelper.get(this, `${rId}/boards/${bId}/lists/${lId}`, options); } } diff --git a/src/templates/ResourceMembers.ts b/src/templates/ResourceMembers.ts index 6eb2f8ec6..561eb4ebe 100644 --- a/src/templates/ResourceMembers.ts +++ b/src/templates/ResourceMembers.ts @@ -1,26 +1,25 @@ -import URLJoin from 'url-join'; import { BaseService, RequestHelper } from '../infrastructure'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; -import { RequestOptions } from '../infrastructure/RequestHelper'; -/** A valid access level */ -export type AccessLevel = number; class ResourceMembers extends BaseService { - constructor(resourceType: string, baseParams: BaseModelContructorOptions) { - super(baseParams); - - this.url = URLJoin(this.url, resourceType); + constructor(resourceType: string, options: BaseServiceOptions) { + super({ url: resourceType, ...options }); } - all(resourceId: ResourceId, includeInherited = false, options = {}) { + all(resourceId: ResourceId, includeInherited = false, options?: PaginatedRequestOptions) { const rId = encodeURIComponent(resourceId); + const url = [rId, 'members']; - const url = includeInherited ? `${rId}/members/all` : `${rId}/members`; + if (includeInherited) url.push('all'); - return RequestHelper.get(this, url, options); + return RequestHelper.get(this, url.join('/'), { options }); } - add(resourceId: ResourceId, userId: UserId, accessLevel: AccessLevel, options: RequestOptions) { + add( + resourceId: ResourceId, + userId: UserId, + accessLevel: AccessLevel, + options?: BaseRequestOptions, + ) { const [rId, uId] = [resourceId, userId].map(encodeURIComponent); return RequestHelper.post(this, `${rId}/members`, { @@ -30,7 +29,12 @@ class ResourceMembers extends BaseService { }); } - edit(resourceId: ResourceId, userId: UserId, accessLevel: AccessLevel, options: RequestOptions) { + edit( + resourceId: ResourceId, + userId: UserId, + accessLevel: AccessLevel, + options?: BaseRequestOptions, + ) { const [rId, uId] = [resourceId, userId].map(encodeURIComponent); return RequestHelper.put(this, `${rId}/members/${uId}`, { @@ -39,16 +43,16 @@ class ResourceMembers extends BaseService { }); } - show(resourceId: ResourceId, userId: UserId) { + show(resourceId: ResourceId, userId: UserId, options?: Sudo) { const [rId, uId] = [resourceId, userId].map(encodeURIComponent); - return RequestHelper.get(this, `${rId}/members/${uId}`); + return RequestHelper.get(this, `${rId}/members/${uId}`, options); } - remove(resourceId: ResourceId, userId: UserId) { + remove(resourceId: ResourceId, userId: UserId, options?: Sudo) { const [rId, uId] = [resourceId, userId].map(encodeURIComponent); - return RequestHelper.delete(this, `${rId}/members/${uId}`); + return RequestHelper.del(this, `${rId}/members/${uId}`, options); } } diff --git a/src/templates/ResourceMilestones.ts b/src/templates/ResourceMilestones.ts index 8c92a853c..d4ec110fc 100644 --- a/src/templates/ResourceMilestones.ts +++ b/src/templates/ResourceMilestones.ts @@ -1,50 +1,44 @@ -import URLJoin from 'url-join'; import { BaseService, RequestHelper } from '../infrastructure'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; -import { RequestOptions } from '../infrastructure/RequestHelper'; -export type MilestoneId = string; class ResourceMilestones extends BaseService { - constructor(resourceType: string, baseParams: BaseModelContructorOptions) { - super(baseParams); - - this.url = URLJoin(this.url, resourceType); + constructor(resourceType: string, options: BaseServiceOptions) { + super({ url: resourceType, ...options }); } - all(resourceId: ResourceId, options: RequestOptions) { + all(resourceId: ResourceId, options?: PaginatedRequestOptions) { const rId = encodeURIComponent(resourceId); return RequestHelper.get(this, `${rId}/milestones`, options); } - create(resourceId: ResourceId, title: string, options: RequestOptions) { + create(resourceId: ResourceId, title: string, options?: BaseRequestOptions) { const rId = encodeURIComponent(resourceId); return RequestHelper.post(this, `${rId}/milestones`, { title, ...options }); } - edit(resourceId: ResourceId, milestoneId: MilestoneId, options: RequestOptions) { + edit(resourceId: ResourceId, milestoneId: MilestoneId, options?: BaseRequestOptions) { const [rId, mId] = [resourceId, milestoneId].map(encodeURIComponent); return RequestHelper.put(this, `${rId}/milestones/${mId}`, options); } - issues(resourceId: ResourceId, milestoneId: MilestoneId) { + issues(resourceId: ResourceId, milestoneId: MilestoneId, options?: Sudo) { const [rId, mId] = [resourceId, milestoneId].map(encodeURIComponent); - return RequestHelper.get(this, `${rId}/milestones/${mId}/issues`); + return RequestHelper.get(this, `${rId}/milestones/${mId}/issues`, options); } - mergeRequests(resourceId: ResourceId, milestoneId: MilestoneId) { + mergeRequests(resourceId: ResourceId, milestoneId: MilestoneId, options?: Sudo) { const [rId, mId] = [resourceId, milestoneId].map(encodeURIComponent); - return RequestHelper.get(this, `${rId}/milestones/${mId}/merge_requests`); + return RequestHelper.get(this, `${rId}/milestones/${mId}/merge_requests`, options); } - show(resourceId: ResourceId, milestoneId: MilestoneId) { + show(resourceId: ResourceId, milestoneId: MilestoneId, options?: Sudo) { const [rId, mId] = [resourceId, milestoneId].map(encodeURIComponent); - return RequestHelper.get(this, `${rId}/milestones/${mId}`); + return RequestHelper.get(this, `${rId}/milestones/${mId}`, options); } } diff --git a/src/templates/ResourceNotes.ts b/src/templates/ResourceNotes.ts index 5000bf405..7ed80857f 100644 --- a/src/templates/ResourceNotes.ts +++ b/src/templates/ResourceNotes.ts @@ -1,50 +1,63 @@ -import URLJoin from 'url-join'; import { BaseService, RequestHelper } from '../infrastructure'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class ResourceNotes extends BaseService { protected resource2Type: string; - constructor(resourceType: string, resource2Type: string, baseParams: BaseModelContructorOptions) { - super(baseParams); + constructor( + resourceType: string, + resource2Type: string, + options: BaseServiceOptions, + ) { + super({ url: resourceType, ...options }); - this.url = URLJoin(this.url, resourceType); this.resource2Type = resource2Type; } - all(resourceId: ResourceId, resource2Id: Resource2Id, options: RequestOptions) { + all(resourceId: ResourceId, resource2Id: ResourceId, options?: PaginatedRequestOptions) { const [rId, r2Id] = [resourceId, resource2Id].map(encodeURIComponent); return RequestHelper.get(this, `${rId}/${this.resource2Type}/${r2Id}/notes`, options); } - create(resourceId: ResourceId, resource2Id: Resource2Id, options: RequestOptions) { - if (!options.body) throw new Error('Missing required property: body'); - + create( + resourceId: ResourceId, + resource2Id: ResourceId, + body: string, + options?: BaseRequestOptions, + ) { const [rId, r2Id] = [resourceId, resource2Id].map(encodeURIComponent); - return RequestHelper.post(this, `${rId}/${this.resource2Type}/${r2Id}/notes`, options); + return RequestHelper.post(this, `${rId}/${this.resource2Type}/${r2Id}/notes`, { + body, + ...options, + }); } - edit(resourceId: ResourceId, resource2Id: Resource2Id, noteId: NoteId, options: RequestOptions) { - if (!options.body) throw new Error('Missing required property: body'); - + edit( + resourceId: ResourceId, + resource2Id: ResourceId, + noteId: NoteId, + body: string, + options?: BaseRequestOptions, + ) { const [rId, r2Id, nId] = [resourceId, resource2Id, noteId].map(encodeURIComponent); - return RequestHelper.put(this, `${rId}/${this.resource2Type}/${r2Id}/notes/${nId}`, options); + return RequestHelper.put(this, `${rId}/${this.resource2Type}/${r2Id}/notes/${nId}`, { + body, + ...options, + }); } - remove(resourceId: ResourceId, resource2Id: Resource2Id, noteId: NoteId) { + remove(resourceId: ResourceId, resource2Id: ResourceId, noteId: NoteId, options?: Sudo) { const [rId, r2Id, nId] = [resourceId, resource2Id, noteId].map(encodeURIComponent); - return RequestHelper.delete(this, `${rId}/${this.resource2Type}/${r2Id}/notes/${nId}`); + return RequestHelper.del(this, `${rId}/${this.resource2Type}/${r2Id}/notes/${nId}`, options); } - show(resourceId: ResourceId, resource2Id: Resource2Id, noteId: NoteId) { + show(resourceId: ResourceId, resource2Id: ResourceId, noteId: NoteId, options?: Sudo) { const [rId, r2Id, nId] = [resourceId, resource2Id, noteId].map(encodeURIComponent); - return RequestHelper.get(this, `${rId}/${this.resource2Type}/${r2Id}/notes/${nId}`); + return RequestHelper.get(this, `${rId}/${this.resource2Type}/${r2Id}/notes/${nId}`, options); } } diff --git a/src/templates/ResourceTemplates.ts b/src/templates/ResourceTemplates.ts index 07a710226..b5d785107 100644 --- a/src/templates/ResourceTemplates.ts +++ b/src/templates/ResourceTemplates.ts @@ -1,23 +1,18 @@ -import URLJoin from 'url-join'; import { BaseService, RequestHelper } from '../infrastructure'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class ResourceTemplates extends BaseService { - constructor(resourceType: string, baseParams: BaseModelContructorOptions) { - super(baseParams); - - this.url = URLJoin(this.url, 'templates', resourceType); + constructor(resourceType: string, options: BaseServiceOptions) { + super({ url: ['templates', resourceType].join('/'), ...options }); } - all(options: RequestOptions) { + all(options?: PaginatedRequestOptions) { return RequestHelper.get(this, '', options); } - show(resourceId: ResourceId) { + show(resourceId: ResourceId, options?: Sudo) { const rId = encodeURIComponent(resourceId); - return RequestHelper.post(this, `${rId}`); + return RequestHelper.post(this, `${rId}`, options); } } diff --git a/src/templates/ResourceVariables.ts b/src/templates/ResourceVariables.ts index b9012aa42..e58b97c8e 100644 --- a/src/templates/ResourceVariables.ts +++ b/src/templates/ResourceVariables.ts @@ -1,44 +1,38 @@ import { BaseService, RequestHelper } from '../infrastructure'; -import { BaseModelContructorOptions } from '../infrastructure/BaseService'; -import { RequestOptions } from '../infrastructure/RequestHelper'; class ResourceVariables extends BaseService { - protected resourceType: ResourceType; - - constructor(resourceType: ResourceType, baseParams: BaseModelContructorOptions) { - super(baseParams); - - this.resourceType = resourceType; + constructor(resourceType: string, options: BaseServiceOptions) { + super({ url: resourceType, ...options }); } - all(resourceId: ResourceId) { + all(resourceId: ResourceId, options?: PaginatedRequestOptions) { const rId = encodeURIComponent(resourceId); - return RequestHelper.get(this, `${this.resourceType}/${rId}/variables`); + return RequestHelper.get(this, `${rId}/variables`, options); } - create(resourceId: ResourceId, options: RequestOptions) { + create(resourceId: ResourceId, options?: BaseRequestOptions) { const rId = encodeURIComponent(resourceId); - return RequestHelper.post(this, `${this.resourceType}/${rId}/variables`, options); + return RequestHelper.post(this, `${rId}/variables`, options); } - edit(resourceId: ResourceId, keyId: string, options: RequestOptions) { + edit(resourceId: ResourceId, keyId: KeyId, options?: BaseRequestOptions) { const [rId, kId] = [resourceId, keyId].map(encodeURIComponent); - return RequestHelper.put(this, `${this.resourceType}/${rId}/variables/${kId}`, options); + return RequestHelper.put(this, `${rId}/variables/${kId}`, options); } - show(resourceId: ResourceId, keyId: string) { + show(resourceId: ResourceId, keyId: KeyId, options?: PaginatedRequestOptions) { const [rId, kId] = [resourceId, keyId].map(encodeURIComponent); - return RequestHelper.get(this, `${this.resourceType}/${rId}/variables/${kId}`); + return RequestHelper.get(this, `${rId}/variables/${kId}`, options); } - remove(resourceId: ResourceId, keyId: string) { + remove(resourceId: ResourceId, keyId: KeyId, options?: PaginatedRequestOptions) { const [rId, kId] = [resourceId, keyId].map(encodeURIComponent); - return RequestHelper.delete(this, `${this.resourceType}/${rId}/variables/${kId}`); + return RequestHelper.del(this, `${rId}/variables/${kId}`, options); } } diff --git a/src/types.d.ts b/src/types.d.ts deleted file mode 100644 index da6c054c7..000000000 --- a/src/types.d.ts +++ /dev/null @@ -1,68 +0,0 @@ -/// - -type temporaryAny = any; -type UserIdOptions = { userId?: string }; -type UserId = string; - -type ResourceType = string; // see if we can narrow the type to string literals -type ResourceId = string; // see if we can narrow the type to string literals -type Resource2Type = string; // see if we can narrow the type to string literals -type Resource2Id = string; // see if we can narrow the type to string literals - -type NoteId = string; // see if `| number` is a valid type -type ProjectId = string | number; -type KeyId = string; // see if `| number` is a valid type -type GroupId = string | number; -type PipelineScheduleId = string; - -type GroupAccess = temporaryAny; - -/** The duration in human format. e.g: 3h30m */ -type Duration = string; - -/** - * Encodes a text string as a valid component of a Uniform Resource Identifier (URI). - * @param uriComponent A value representing an encoded URI component. - */ -declare function encodeURIComponent(uriComponent: number | string): string; - -declare module 'request-promise-core/errors'; - -interface ObjectConstructor { - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param source The source object from which to copy properties. - */ - assign(target: T, source: U): T & U; - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param source1 The first source object from which to copy properties. - * @param source2 The second source object from which to copy properties. - */ - assign(target: T, source1: U, source2: V): T & U & V; - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param source1 The first source object from which to copy properties. - * @param source2 The second source object from which to copy properties. - * @param source3 The third source object from which to copy properties. - */ - assign( - target: T, - source1: U, - source2: V, - source3: W, - ): T & U & V & W; - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param sources One or more source objects from which to copy properties - */ - assign(target: any, ...sources: any[]): any; -} diff --git a/test/integration/bundles/ProjectsBundle.ts b/test/integration/bundles/ProjectsBundle.ts new file mode 100644 index 000000000..76e0aec3b --- /dev/null +++ b/test/integration/bundles/ProjectsBundle.ts @@ -0,0 +1,31 @@ +import { ProjectsBundle } from '../../../src'; + +const config = { + host: process.env.GITLAB_URL, + token: process.env.PERSONAL_ACCESS_TOKEN, +}; +let project; +let api; + +beforeAll(async () => { + api = new ProjectsBundle(config); + project = await api.Projects.create({ name: 'ProjectsBundle Integration test' }); +}); + +describe('ProjectsBundle.Issues.create', () => { + it('should create a valid issue on a project', async () => { + const issue = await api.Issues.create(project.id, { + title: 'ProjectsBundle Integration test', + description: 'A test issue ensuring a sucessfully create Issue in GitLab', + }); + + expect(issue).toBeInstanceOf(Object); + expect(issue.title).toBe('ProjectsBundle Integration test'); + }); + + it('should create a valid issue on a project', async () => { + const issue = await api.Issues.all(project.id); + + expect(issue).toBeInstanceOf(Array); + }); +}); diff --git a/test/tests/services/ApplicationSettings.ts b/test/integration/services/ApplicationSettings.ts similarity index 73% rename from test/tests/services/ApplicationSettings.ts rename to test/integration/services/ApplicationSettings.ts index 5264d85a8..03c2f39da 100644 --- a/test/tests/services/ApplicationSettings.ts +++ b/test/integration/services/ApplicationSettings.ts @@ -2,15 +2,17 @@ import { ApplicationSettings } from '../../../src'; describe('ApplicationSettings.all', () => { let settings: ReturnType; + beforeEach(async () => { const service = new ApplicationSettings({ - url: process.env.GITLAB_URL, + host: process.env.GITLAB_URL, token: process.env.PERSONAL_ACCESS_TOKEN, }); + settings = await service.all(); }); - it('should return an array', async () => { + it('Should return an object', async () => { expect(settings).toBeObject(); }); @@ -18,7 +20,6 @@ describe('ApplicationSettings.all', () => { * @see https://docs.gitlab.com/ee/api/settings.html#get-current-application-settings */ it('should contain all the required properties', async () => { - expect(Object.keys(settings)).toContain('id'); - expect(Object.keys(settings)).toContain('gravatar_enabled'); + expect(settings).toContainKeys(['id', 'gravatar_enabled']); }); }); diff --git a/test/integration/services/Issues.ts b/test/integration/services/Issues.ts new file mode 100644 index 000000000..085c8f336 --- /dev/null +++ b/test/integration/services/Issues.ts @@ -0,0 +1,65 @@ +import { Issues, Projects } from '../../../src'; + +const config = { + host: process.env.GITLAB_URL, + token: process.env.PERSONAL_ACCESS_TOKEN, +}; +let project; +let service: Issues; + +beforeAll(async () => { + const projectService = new Projects(config); + + project = await projectService.create({ name: 'Issue Integration test' }); +}); + +beforeEach(() => { + service = new Issues(config); +}); + +describe('Issues.create', () => { + it('should create a valid issue on a project', async () => { + const issue1 = await service.create(project.id, { + title: 'Issue Integration test1', + description: 'A test issue ensuring a sucessfully create Issue in GitLab', + }); + + const issue2 = await service.create(project.id, { + title: 'Issue Integration test2', + description: 'A test issue ensuring a sucessfully create Issue in GitLab', + }); + + expect(issue1).toBeInstanceOf(Object); + expect(issue1.title).toBe('Issue Integration test1'); + }); +}); + +describe('Issues.all', () => { + it('should return a list of issues on a project', async () => { + const issues = await service.all({ projectId: project.id }); + + expect(issues).toBeInstanceOf(Array); + expect(issues.length).toEqual(2); + }); + + it('should return a list of all issues', async () => { + const issues = await service.all(); + + expect(issues).toBeInstanceOf(Array); + expect(issues.length).toEqual(2); + }); + + it('should return a list filtered to a specfic page', async () => { + const issues1 = await service.all({projectId: project.id, perPage: 1, page: 1 }); + + expect(issues1).toBeInstanceOf(Array); + expect(issues1.length).toEqual(1); + expect(issues1[0].title).toBe('Issue Integration test2'); + + const issues2 = await service.all({ projectId: project.id, perPage: 1, page: 2 }); + + expect(issues2).toBeInstanceOf(Array); + expect(issues2.length).toEqual(1); + expect(issues2[0].title).toBe('Issue Integration test1'); + }); +}); diff --git a/test/integration/services/Projects.ts b/test/integration/services/Projects.ts new file mode 100644 index 000000000..8e81a7f2b --- /dev/null +++ b/test/integration/services/Projects.ts @@ -0,0 +1,18 @@ +import { Projects } from '../../../src'; + +let service: Projects; + +beforeEach(() => { + service = new Projects({ + host: process.env.GITLAB_URL, + token: process.env.PERSONAL_ACCESS_TOKEN, + }); +}); + +describe('Projects.create', () => { + it('should create a valid project', async () => { + const p = await service.create({ name: 'Project Integration test' }); + expect(p).toBeInstanceOf(Object); + expect(p.name).toEqual('Project Integration test'); + }); +}); diff --git a/test/tests/services/PushRule.ts b/test/integration/services/PushRule.ts similarity index 62% rename from test/tests/services/PushRule.ts rename to test/integration/services/PushRule.ts index 554852721..563ea058d 100644 --- a/test/tests/services/PushRule.ts +++ b/test/integration/services/PushRule.ts @@ -1,17 +1,17 @@ import { PushRule } from '../../../src'; -describe('PushRule', () => { +describe('PushRule.edit', () => { // the feature is not available for CE users https://gitlab.com/gitlab-org/gitlab-ee/issues/3825 xit('should create or edit push rule on upsert', async () => { const service = new PushRule({ - url: process.env.GITLAB_URL, - token: process.env.PERSONAL_ACCESS_TOKEN!, + host: process.env.GITLAB_URL, + token: process.env.PERSONAL_ACCESS_TOKEN, }); - const pushRules = { + + const result = await service.edit(1, { upsert: true, - member_check: true, - }; - const result = await service.edit(1, pushRules); + memberCheck: true, + }); expect(result).toBeInstanceOf(Object); expect(result.member_check).toBeTrue(); diff --git a/test/integration/services/Snippets.ts b/test/integration/services/Snippets.ts new file mode 100644 index 000000000..e4070b0f3 --- /dev/null +++ b/test/integration/services/Snippets.ts @@ -0,0 +1,25 @@ +import { Snippets } from '../../../src'; + +let service: Snippets; + +beforeEach(() => { + service = new Snippets({ + host: process.env.GITLAB_URL, + token: process.env.PERSONAL_ACCESS_TOKEN, + }); +}); + +describe('Snippets.create', () => { + it('should create a snippet', async () => { + const result = await service.create( + 'This is a snippet', + 'test.txt', + 'Hello world', + 'internal', + { description: 'Hello World snippet' }, + ); + + expect(result).toBeInstanceOf(Object); + expect(result.title).toEqual('This is a snippet'); + }); +}); diff --git a/test/tests/infrastructure/BaseService.ts b/test/tests/infrastructure/BaseService.ts deleted file mode 100644 index 09cef8ff0..000000000 --- a/test/tests/infrastructure/BaseService.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { BaseService } from '../../../src/infrastructure'; - -describe('Creation of BaseService instance', () => { - test('Url defaults to https://gitlab.com/api/v4', async () => { - const service = new BaseService({ token: 'test' }); - - expect(service.url).toBe('https://gitlab.com/api/v4'); - }); - - test('Use the Oauth Token when a user supplies both a Private Token and a Oauth Token', async () => { - const service = new BaseService({ token: 'test', oauthToken: '1234' }); - - expect(service.headers['private-token']).toBeUndefined(); - expect(service.headers.authorization).toBe('Bearer 1234'); - }); - - test('Custom url still appends api and version number to url', async () => { - const service = new BaseService({ url: 'https://testing.com', token: 'test' }); - - expect(service.url).toBe('https://testing.com/api/v4'); - }); - - test('Oauth token adds to authorization header as a bearer token', async () => { - const service = new BaseService({ url: 'https://testing.com', oauthToken: '1234' }); - - expect(service.headers.authorization).toBe('Bearer 1234'); - }); - - test('Private token adds to private-token header', async () => { - const service = new BaseService({ url: 'https://testing.com', token: '1234' }); - - expect(service.headers['private-token']).toBe('1234'); - }); - - test('API version should be modified', async () => { - const service = new BaseService({ url: 'https://testing.com', token: '1234', version: 'v3' }); - - expect(service.url).toBe('https://testing.com/api/v3'); - }); -}); diff --git a/test/tests/infrastructure/RequestHelper.ts b/test/tests/infrastructure/RequestHelper.ts deleted file mode 100644 index 639ce4b13..000000000 --- a/test/tests/infrastructure/RequestHelper.ts +++ /dev/null @@ -1,160 +0,0 @@ -import { RequestHelper } from '../../../src/infrastructure'; - -const mockService = { - url: 'testing', - headers: {}, - requester: { - get: () => ({ - body: { - prop1: 5, - prop2: 'test property', - }, - headers: { - 'X-Page': 1, - 'X-Total-Pages': 1, - }, - }), - }, -}; - -const mockService2 = { - url: 'testing', - headers: {}, - requester: { - get: ({ url, qs }) => { - let u = url; - - if (qs.page) u += `page=${qs.page}`; - - const page1 = { - body: [ - { - prop1: 1, - prop2: 'test property1', - }, - { - prop1: 2, - prop2: 'test property2', - }, - ], - headers: { - link: "<'https://www.test.com/api/v3/projects/8?page=2&per_page=2>; rel='next', <'https://www.test.com/api/v3/projects/8?page=1&per_page=2>; rel='first', <'https://www.test.com/api/v3/projects/8?page=2&per_page=2>; rel='last'", - 'x-next-page': 2, - 'x-page': 1, - 'x-per-page': 2, - 'x-prev-page': '', - 'x-total': 4, - 'x-total-pages': 2, - }, - }; - - const page2 = { - body: [ - { - prop1: 3, - prop2: 'test property3', - }, - { - prop1: 4, - prop2: 'test property4', - }, - ], - headers: { - link: "<'https://www.test.com/api/v3/projects/8?page=1&per_page=2>; rel='prev', <'https://www.test.com/api/v3/projects/8?page=1&per_page=2>; rel='first', <'https://www.test.com/api/v3/projects/8?page=2&per_page=2>; rel='last'", - 'x-next-page': '', - 'x-page': 2, - 'x-per-page': 2, - 'x-prev-page': 1, - 'x-total': 4, - 'x-total-pages': 2, - }, - }; - - if (u.includes('page=2')) return page2; - - return page1; - }, - }, -}; - -describe('RequestHelper.get()', () => { - it('Should respond with an object', async () => { - const response = await RequestHelper.get( - mockService, - 'https://www.test.com', - ); - - expect(response.prop1).toBe(5); - expect(response.prop2).toBe('test property'); - }); - - it('Should be paginated when links are present', async () => { - const response = await RequestHelper.get( - mockService2, - 'https://www.test.com', - ); - - response.forEach((l, index) => { - expect(l.prop1).toBe(1 + index); - expect(l.prop2).toBe(`test property${1 + index}`); - }); - }); - - it('Should be paginated but limited by the maxPages option', async () => { - const response = await RequestHelper.get( - mockService2, - 'https://www.test.com', - { maxPages: 1 }, - ); - - expect(response).toHaveLength(2); - expect(response[0].prop1).toBe(1); - - response.forEach((l, index) => { - expect(l.prop1).toBe(1 + index); - expect(l.prop2).toBe(`test property${1 + index}`); - }); - }); - - it('Should be paginated but limited by the page option', async () => { - const response = await RequestHelper.get( - mockService2, - 'https://www.test.com', - { page: 2 }, - ); - - expect(response).toHaveLength(2); - expect(response[0].prop1).toBe(3); - - response.forEach((l, index) => { - expect(l.prop1).toBe(3 + index); - expect(l.prop2).toBe(`test property${3 + index}`); - }); - }); - - it('Should show the pagination information when the page option is given', async () => { - const response = await RequestHelper.get( - mockService2, - 'https://www.test.com', - { page: 2, showPagination: true }, - ); - - expect(response.data).toBeDefined(); - expect(response.data).toHaveLength(2); - expect(response.data[0].prop1).toBe(3); - - response.data.forEach((l, index) => { - expect(l.prop1).toBe(3 + index); - expect(l.prop2).toBe(`test property${3 + index}`); - }); - - expect(response.pagination).toMatchObject({ - total: 4, - previous: 1, - current: 2, - next: null, - perPage: 2, - totalPages: 2, - }); - }); -}); diff --git a/test/tests/services/Projects.ts b/test/tests/services/Projects.ts deleted file mode 100644 index ed372de06..000000000 --- a/test/tests/services/Projects.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Projects } from '../../../src'; - -describe('Projects.all', () => { - it('should return an array', async () => { - const service = new Projects({ - url: process.env.GITLAB_URL, - token: process.env.PERSONAL_ACCESS_TOKEN!, - }); - const projects = await service.all(); - - expect(projects).toBeInstanceOf(Array); - }); -}); diff --git a/test/tests/services/Snippets.ts b/test/tests/services/Snippets.ts deleted file mode 100644 index 2847d4616..000000000 --- a/test/tests/services/Snippets.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Snippets } from '../../../src'; - -describe('Snippets', () => { - it('should create snippet', async () => { - const service = new Snippets({ - url: process.env.GITLAB_URL, - token: process.env.PERSONAL_ACCESS_TOKEN, - }); - - const result = await service.create('This is a snippet', 'test.txt', 'Hello world', 'internal', { 'description': 'Hello World snippet' }); - - expect(result).toBeInstanceOf(Object); - expect(result.title).toEqual('This is a snippet'); - }); -}); diff --git a/test/unit/bundles/Gitlab.ts b/test/unit/bundles/Gitlab.ts new file mode 100644 index 000000000..94cb79fcc --- /dev/null +++ b/test/unit/bundles/Gitlab.ts @@ -0,0 +1,22 @@ +import { Gitlab as GitlabModule } from '../../../src'; +import * as Services from '../../../src/services'; + +const { Gitlab: GitlabCommon } = require('../../../src'); + +describe('Instantiating All services', () => { + it('should create a valid gitlab service object using import', async () => { + const bundle = new GitlabModule({ + token: 'abcdefg', + }); + + expect(Object.keys(bundle)).toIncludeAllMembers(Object.keys(Services)); + }); + + it('should create a valid gitlab service object using require', async () => { + const bundle = new GitlabCommon({ + token: 'abcdefg', + }); + + expect(Object.keys(bundle)).toIncludeAllMembers(Object.keys(Services)); + }); +}); diff --git a/test/tests/bundles/GroupsBundle.ts b/test/unit/bundles/GroupsBundle.ts similarity index 83% rename from test/tests/bundles/GroupsBundle.ts rename to test/unit/bundles/GroupsBundle.ts index 4ec1cc43a..0635908b4 100644 --- a/test/tests/bundles/GroupsBundle.ts +++ b/test/unit/bundles/GroupsBundle.ts @@ -19,13 +19,13 @@ test('All the correct service keys are included in the groups bundle', async () 'EpicDiscussions', ]; - expect(Object.keys(bundle)).toEqual(expect.arrayContaining(services)); + expect(Object.keys(bundle)).toIncludeAllMembers(services); }); test('All the correct service instances are included in the groups bundle', async () => { const bundle = new GroupsBundle({ token: 'test' }); - (Object.keys(bundle) as (keyof typeof bundle)[]).forEach((key) => { + (Object.keys(bundle) as (keyof typeof bundle)[]).forEach(key => { expect(bundle[key]).toBeInstanceOf(Services[key]); }); }); diff --git a/test/tests/bundles/ProjectsBundle.ts b/test/unit/bundles/ProjectsBundle.ts similarity index 90% rename from test/tests/bundles/ProjectsBundle.ts rename to test/unit/bundles/ProjectsBundle.ts index f60352d15..44015c059 100644 --- a/test/tests/bundles/ProjectsBundle.ts +++ b/test/unit/bundles/ProjectsBundle.ts @@ -46,13 +46,13 @@ test('All the correct service keys are included in the projects bundle', async ( 'Triggers', ]; - expect(Object.keys(bundle)).toEqual(expect.arrayContaining(services)); + expect(Object.keys(bundle)).toIncludeAllMembers(services); }); test('All the correct service instances are included in the projects bundle', async () => { const bundle = new ProjectsBundle({ token: 'test' }); - (Object.keys(bundle) as (keyof typeof bundle)[]).forEach((key) => { + (Object.keys(bundle) as (keyof typeof bundle)[]).forEach(key => { expect(bundle[key]).toBeInstanceOf(Services[key]); }); }); diff --git a/test/tests/bundles/UsersBundle.ts b/test/unit/bundles/UsersBundle.ts similarity index 61% rename from test/tests/bundles/UsersBundle.ts rename to test/unit/bundles/UsersBundle.ts index 75b58658f..8c9fefedc 100644 --- a/test/tests/bundles/UsersBundle.ts +++ b/test/unit/bundles/UsersBundle.ts @@ -3,15 +3,22 @@ import * as Services from '../../../src/services'; test('All the correct service keys are included in the users bundle', async () => { const bundle = new UsersBundle({ token: 'test' }); - const services = ['Users', 'UserEmails', 'UserCustomAttributes', 'UserImpersonationTokens', 'UserKeys', 'UserGPGKeys']; + const services = [ + 'Users', + 'UserEmails', + 'UserCustomAttributes', + 'UserImpersonationTokens', + 'UserKeys', + 'UserGPGKeys', + ]; - expect(Object.keys(bundle)).toEqual(expect.arrayContaining(services)); + expect(Object.keys(bundle)).toIncludeAllMembers(services); }); test('All the correct service instances are included in the users bundle', async () => { const bundle = new UsersBundle({ token: 'test' }); - (Object.keys(bundle) as (keyof typeof bundle)[]).forEach((key) => { + (Object.keys(bundle) as (keyof typeof bundle)[]).forEach(key => { expect(bundle[key]).toBeInstanceOf(Services[key]); }); }); diff --git a/test/unit/infrastructure/BaseService.ts b/test/unit/infrastructure/BaseService.ts new file mode 100644 index 000000000..ee9cee7fc --- /dev/null +++ b/test/unit/infrastructure/BaseService.ts @@ -0,0 +1,79 @@ +import { RequestHelper, KyRequester, BaseService } from '../../../src/infrastructure'; + +describe('Creation of BaseService instance', () => { + test('host defaults to https://gitlab.com/api/v4/', async () => { + const service = new BaseService({ token: 'test' }); + + expect(service.url).toBe('https://gitlab.com/api/v4/'); + }); + + test('Use the Oauth Token when a given both a Private Token and a Oauth Token', async () => { + const service = new BaseService({ token: 'test', oauthToken: '1234' }); + + expect(service.headers['private-token']).toBeUndefined(); + expect(service.headers.authorization).toBe('Bearer 1234'); + }); + + test('Custom host still appends api and version number to host', async () => { + const service = new BaseService({ host: 'https://testing.com', token: 'test' }); + + expect(service.url).toBe('https://testing.com/api/v4/'); + }); + + test('Oauth token adds to authorization header as a bearer token', async () => { + const service = new BaseService({ host: 'https://testing.com', oauthToken: '1234' }); + + expect(service.headers.authorization).toBe('Bearer 1234'); + }); + + test('Private token adds to private-token header', async () => { + const service = new BaseService({ host: 'https://testing.com', token: '1234' }); + + expect(service.headers['private-token']).toBe('1234'); + }); + + test('API version should be modified', async () => { + const service = new BaseService({ host: 'https://testing.com', token: '1234', version: 'v3' }); + + expect(service.url).toBe('https://testing.com/api/v3/'); + }); + + test('Camelize option should return simple response with camelized keys', async () => { + const service = new BaseService({ host: 'https://testing.com', token: '1234', camelize: true}); + + service.show = jest.fn(() => RequestHelper.get(service, 'test')); + KyRequester.get = jest.fn(() => ({ body: { id: 3, gravatar_enable: true }, headers: {} })); + + const results = await service.show(); + + expect(results).toMatchObject({ id: 3, gravatarEnable: true }) + }); + + test('Camelize option should return simple response with camelized keys', async () => { + const service = new BaseService({ host: 'https://testing.com', token: '1234', camelize: true}); + + service.show = jest.fn(() => RequestHelper.get(service, 'test')); + KyRequester.get = jest.fn(() => ({ + body: [ + { id: 3, gravatar_enable: true }, + { id: 4, gravatar_enable: false }, + ], + headers: {} + })); + + const results = await service.show(); + + expect(results).toIncludeSameMembers([{ id: 3, gravatarEnable: true }, { id: 4, gravatarEnable: false }]) + }); + + test('Camelize option unset should return simple response with default keys', async () => { + const service = new BaseService({ host: 'https://testing.com', token: '1234'}); + + service.show = jest.fn(() => RequestHelper.get(service, 'test')); + KyRequester.get = jest.fn(() => ({ body: { id: 3, gravatar_enable: true }, headers: {} })); + + const results = await service.show(); + + expect(results).toMatchObject({ id: 3, gravatar_enable: true }) + }); +}); diff --git a/test/unit/infrastructure/RequestHelper.ts b/test/unit/infrastructure/RequestHelper.ts new file mode 100644 index 000000000..0717d8ecb --- /dev/null +++ b/test/unit/infrastructure/RequestHelper.ts @@ -0,0 +1,229 @@ +import { RequestHelper, KyRequester, BaseService } from '../../../src/infrastructure'; + +const mockedGetBasic = () => ({ + body: { + prop1: 5, + prop2: 'test property', + }, + headers: { + 'X-Page': 1, + 'X-Total-Pages': 1, + }, +}); + +const mockedGetExtended = (url, {query}) => { + const pages = [ + { + body: [ + { + prop1: 1, + prop2: 'test property1', + }, + { + prop1: 2, + prop2: 'test property2', + }, + ], + headers: { + link: `; rel="next", + ; rel="first", + ; rel="last"`, + 'x-next-page': 2, + 'x-page': 1, + 'x-per-page': 2, + 'x-prev-page': '', + 'x-total': 8, + 'x-total-pages': 4, + }, + }, + { + body: [ + { + prop1: 3, + prop2: 'test property3', + }, + { + prop1: 4, + prop2: 'test property4', + }, + ], + headers: { + link: `; rel="prev", + ; rel="next", + ; rel="first", + ; rel="last"`, + 'x-next-page': 3, + 'x-page': 2, + 'x-per-page': 2, + 'x-prev-page': 1, + 'x-total': 8, + 'x-total-pages': 4, + }, + }, + { + body: [ + { + prop1: 5, + prop2: 'test property5', + }, + { + prop1: 6, + prop2: 'test property6', + }, + ], + headers: { + link: `; rel="prev", + ; rel="next", + ; rel="first", + ; rel="last"`, + 'x-next-page': 4, + 'x-page': 3, + 'x-per-page': 2, + 'x-prev-page': 2, + 'x-total': 8, + 'x-total-pages': 4, + }, + }, + { + body: [ + { + prop1: 7, + prop2: 'test property7', + }, + { + prop1: 8, + prop2: 'test property8', + }, + ], + headers: { + link: `; rel="prev", + ; rel="first", + ; rel="last"`, + 'x-next-page': '', + 'x-page': 4, + 'x-per-page': 2, + 'x-prev-page': 3, + 'x-total': 8, + 'x-total-pages': 4, + }, + } + ]; + + const q = url.match(/page=([0-9]+)/); + let page = 1; + + if (q != null) page = q[1]; + else if (query.page) page = query.page; + + return pages[page - 1]; +}; + +const service = new BaseService({ + host: 'https://testing.com', + token: 'token', +}); + +describe('RequestHelper.get()', () => { + it('Should respond with the proper get url without pagination', async () => { + KyRequester.get = jest.fn(() => mockedGetBasic()); + + const response = await RequestHelper.get(service, 'test'); + + expect(KyRequester.get).toHaveBeenCalledWith(service, 'test', { + query: {}, + sudo: undefined + }); + }); + + it('Should respond with an object', async () => { + KyRequester.get = jest.fn(() => mockedGetBasic()); + + const response = await RequestHelper.get(service, 'test'); + + expect(response.prop1).toBe(5); + expect(response.prop2).toBe('test property'); + }); + + it('Should be paginated when links are present', async () => { + KyRequester.get = jest.fn((service, url, options) => mockedGetExtended(url, options)); + + const response = await RequestHelper.get(service, 'test'); + + response.forEach((l, index) => { + expect(l.prop1).toBe(1 + index); + expect(l.prop2).toBe(`test property${1 + index}`); + }); + + expect(response).toHaveLength(8); + }); + + it('Should be paginated but limited by the maxPages option', async () => { + KyRequester.get = jest.fn((service, url, options) => mockedGetExtended(url, options)); + + const response = await RequestHelper.get(service, 'test', { maxPages: 3 }); + + expect(response).toHaveLength(6); + + response.forEach((l, index) => { + expect(l.prop1).toBe(1 + index); + expect(l.prop2).toBe(`test property${1 + index}`); + }); + }); + + it('Should be paginated but limited by the page option', async () => { + KyRequester.get = jest.fn((service, url, options) => mockedGetExtended(url, options)); + + const response = await RequestHelper.get(service, 'test', { page: 2 }); + + expect(response).toHaveLength(2); + + response.forEach((l, index) => { + expect(l.prop1).toBe(3 + index); + expect(l.prop2).toBe(`test property${3 + index}`); + }); + }); + + it('Should show the pagination information when the page option is given', async () => { + KyRequester.get = jest.fn((service, url, options) => mockedGetExtended(url, options)); + + const response = await RequestHelper.get(service, 'test', { page: 2, showPagination: true }); + + expect(response.data).toHaveLength(2); + + response.data.forEach((l, index) => { + expect(l.prop1).toBe(3 + index); + expect(l.prop2).toBe(`test property${3 + index}`); + }); + + expect(response.pagination).toMatchObject({ + total: 8, + previous: 1, + current: 2, + next: 3, + perPage: 2, + totalPages: 4, + }); + }); + + it('Should show the pagination information when the maxPages option is given', async () => { + KyRequester.get = jest.fn((service, url, options) => mockedGetExtended(url, options)); + + const response = await RequestHelper.get(service, 'test', { maxPages: 3, showPagination: true }); + + expect(response.data).toHaveLength(6); + + response.data.forEach((l, index) => { + expect(l.prop1).toBe(1 + index); + expect(l.prop2).toBe(`test property${1 + index}`); + }); + + expect(response.pagination).toMatchObject({ + total: 8, + previous: 2, + current: 3, + next: 4, + perPage: 2, + totalPages: 4, + }); + }); +}); diff --git a/test/tests/infrastructure/Bundle.ts b/test/unit/infrastructure/Utils.ts similarity index 61% rename from test/tests/infrastructure/Bundle.ts rename to test/unit/infrastructure/Utils.ts index 36e735026..fce077d19 100644 --- a/test/tests/infrastructure/Bundle.ts +++ b/test/unit/infrastructure/Utils.ts @@ -1,4 +1,4 @@ -import { Bundler } from '../../../src/infrastructure'; +import { bundler } from '../../../src/infrastructure'; class Test1 { constructor(value: number) { @@ -12,15 +12,8 @@ class Test2 { } } -test('No classes passed to Bundler returns an empty Bundle', async () => { - const Bundle = Bundler(undefined as any); - const services = new Bundle(undefined as any); - - expect(services).toEqual({}); -}); - test('Classes passed to Bundler get merged', async () => { - const Bundle = Bundler({ Test1, Test2 }); + const Bundle = bundler({ Test1, Test2 }); const services = new Bundle(); expect(services.Test1).toBeInstanceOf(Test1); @@ -28,7 +21,7 @@ test('Classes passed to Bundler get merged', async () => { }); test('Classes passed to Bundler with options get initialized', async () => { - const Bundle = Bundler({ Test1, Test2 }); + const Bundle = bundler({ Test1, Test2 }); const services = new Bundle(2); expect(services.Test1.value).toBe(6); diff --git a/test/unit/services/Pipelines.ts b/test/unit/services/Pipelines.ts new file mode 100644 index 000000000..58fb697e9 --- /dev/null +++ b/test/unit/services/Pipelines.ts @@ -0,0 +1,52 @@ +import { Pipelines } from '../../../src'; +import { RequestHelper } from '../../../src/infrastructure'; + +jest.mock('../../../src/infrastructure/RequestHelper'); +jest.mock('../../../src/infrastructure/KyRequester', () => ({ + // This wont work for all cases, but for the tests currently outlined below, it should be fine + get: jest.fn(() => { + body: []; + }), + post: jest.fn(() => { + body: { + } + }), + put: jest.fn(() => { + body: { + } + }), +})); + +let service: Pipelines; + +beforeEach(() => { + service = new Pipelines({ + token: 'abcdefg', + }); +}); + +describe('Instantiating Pipelines service', () => { + it('should create a valid service object', async () => { + expect(service).toBeInstanceOf(Pipelines); + expect(service.url).toBeDefined(); + expect(service.rejectUnauthorized).toBeTruthy(); + expect(service.headers).toMatchObject({ 'private-token': 'abcdefg' }); + }); +}); + +describe('Projects.create', () => { + it('should request POST /projects/user/:id when userId defined', async () => { + await service.create(1, 'ci/cd', { + variables: { + PULL_REQUEST_NAME: 'TEST', + }, + }); + + expect(RequestHelper.post).toHaveBeenCalledWith(service, 'projects/1/pipeline', { + ref: 'ci/cd', + variables: { + PULL_REQUEST_NAME: 'TEST', + }, + }); + }); +}); diff --git a/test/unit/services/Projects.ts b/test/unit/services/Projects.ts new file mode 100644 index 000000000..1a453eef3 --- /dev/null +++ b/test/unit/services/Projects.ts @@ -0,0 +1,103 @@ +import { Projects } from '../../../src'; +import { RequestHelper } from '../../../src/infrastructure'; + +jest.mock('../../../src/infrastructure/RequestHelper'); +jest.mock('../../../src/infrastructure/KyRequester', () => ({ + // This wont work for all cases, but for the tests currently outlined below, it should be fine + get: jest.fn(() => { + body: []; + }), + post: jest.fn(() => { + body: { + } + }), + put: jest.fn(() => { + body: { + } + }), +})); + +let service: Projects; + +beforeEach(() => { + service = new Projects({ + token: 'abcdefg', + }); +}); + +describe('Instantiating Projects service', () => { + it('should create a valid service object', async () => { + expect(service).toBeInstanceOf(Projects); + expect(service.url).toBeDefined(); + expect(service.rejectUnauthorized).toBeTruthy(); + expect(service.headers).toMatchObject({ 'private-token': 'abcdefg' }); + }); +}); + +describe('Projects.all', () => { + it('should request GET /projects', async () => { + await service.all(); + + expect(RequestHelper.get).toHaveBeenCalledWith(service, 'projects', undefined); + }); +}); + +describe('Projects.archive', () => { + it('should request POST /projects/:id/archive', async () => { + await service.archive(12); + + expect(RequestHelper.post).toHaveBeenCalledWith(service, 'projects/12/archive', undefined); + }); + + it('should request POST /projects/:id/archive with sudo', async () => { + await service.archive(12, { sudo: 2 }); + + expect(RequestHelper.post).toHaveBeenCalledWith(service, 'projects/12/archive', { + sudo: 2, + }); + }); +}); + +describe('Projects.create', () => { + it('should request POST /projects when userId undefined', async () => { + await service.create({ title: 'test proj' }); + + expect(RequestHelper.post).toHaveBeenCalledWith(service, 'projects', { + title: 'test proj', + }); + }); + + it('should request POST /projects/user/:id when userId defined', async () => { + await service.create({ userId: 2, title: 'test proj' }); + + expect(RequestHelper.post).toHaveBeenCalledWith(service, 'projects/user/2', { + title: 'test proj', + }); + }); +}); + +describe('Projects.edit', () => { + it('should request PUT /projects', async () => { + await service.edit(12, { title: 'test proj 2' }); + + expect(RequestHelper.put).toHaveBeenCalledWith(service, 'projects/12', { + title: 'test proj 2', + }); + }); +}); + +describe('Projects.events', () => { + it('should request GET /projects/:id/events', async () => { + await service.events(12); + + expect(RequestHelper.get).toHaveBeenCalledWith(service, 'projects/12/events', undefined); + }); +}); + +describe('Projects.fork', () => { + it('should request POST /projects/:id/fork', async () => { + await service.fork(12); + + expect(RequestHelper.post).toHaveBeenCalledWith(service, 'projects/12/fork', undefined); + }); +}); diff --git a/tsconfig-es5.dist.json b/tsconfig-es5.dist.json deleted file mode 100644 index 1e5e4af5f..000000000 --- a/tsconfig-es5.dist.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "./tsconfig.dist.json", - "compilerOptions": { - "target": "es5", - "outDir": "dist/es5", - "lib": [ - "dom", - "es5", - "scripthost", - "es2015.promise" - ], - } -} diff --git a/tsconfig.dist.json b/tsconfig.dist.json deleted file mode 100644 index 96b5b2550..000000000 --- a/tsconfig.dist.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "declaration": true, - "target": "es6", - "strict": false, - "strictPropertyInitialization": false, - "strictNullChecks": false, - "noUnusedParameters": false, - "noUnusedLocals": false, - "skipLibCheck": true - }, - "include": [ - "src/**/*", - ] -} diff --git a/tsconfig.json b/tsconfig.json index 96161e465..c52cf46f1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,22 +1,32 @@ { "compilerOptions": { - "target": "es6", - "module": "commonjs", - "strict": true, + /* Basic Options */ + + "target": "es5", + "module": "es6", + "outDir": "dist", + "pretty": true, + "declaration": true, + "lib": ["ES2015", "ES2016", "ES2017", "DOM"], + + /* Module Resolution Options */ + + "moduleResolution": "node", + "esModuleInterop": true, + "baseUrl": "./", + + /* Strict Type-Checking Options */ + + "strictPropertyInitialization": true, + "strictNullChecks": true, + "noImplicitAny": false, + "downlevelIteration": true, + + /* Additional Checks */ + "noUnusedLocals": true, "noUnusedParameters": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "pretty": false, - "esModuleInterop": true, - "declaration": false, - "outDir": "dist/latest" + "noImplicitReturns": true }, - "include": [ - "src/**/*", - "test/tests/**/*" - ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "include": ["typings/*", "src/**/*"] +} diff --git a/tslint.yml b/tslint.yml index 030639f07..34b4d917a 100644 --- a/tslint.yml +++ b/tslint.yml @@ -1,8 +1,8 @@ ---- -extends: tslint-config-airbnb +extends: + - tslint-config-airbnb + - tslint-config-prettier rules: + variable-name: [true, 'ban-keywords', 'check-format', 'allow-pascal-case'] object-shorthand-properties-first: false - variable-name: [true, "ban-keywords", "check-format", "allow-pascal-case"] + max-line-length: [true, { 'limit': 100, 'ignore-pattern': '`[^`]+`' }] import-name: false - max-line-length: [true, { "limit": 100, "ignore-pattern": "`[^`]+`"}] - function-name: false diff --git a/typings/globals.d.ts b/typings/globals.d.ts new file mode 100644 index 000000000..099407b86 --- /dev/null +++ b/typings/globals.d.ts @@ -0,0 +1,7 @@ +declare function encodeURIComponent(uriComponent: string | number | boolean): string; + +declare interface Global { + URL: typeof URL, + URLSearchParams: typeof URLSearchParams, + encodeURIComponent: typeof encodeURIComponent +} diff --git a/typings/index.d.ts b/typings/index.d.ts new file mode 100644 index 000000000..ec22b05f1 --- /dev/null +++ b/typings/index.d.ts @@ -0,0 +1,3 @@ +/// +/// +/// \ No newline at end of file diff --git a/typings/infrastructure.d.ts b/typings/infrastructure.d.ts new file mode 100644 index 000000000..8e2d612b8 --- /dev/null +++ b/typings/infrastructure.d.ts @@ -0,0 +1,70 @@ +// Bundler +interface Constructor { + new (...args: any): any; +} + +type Mapper = { + [name in P]: InstanceType +}; + +interface Bundle { + new (options?: any): Mapper; +} + +// Base Service +interface Sudo { + sudo?: string | number; +} + +interface Requester { + get: Function; + post: Function; + put: Function; + delete: Function; + stream?: Function; +} + +interface BaseServiceOptions extends Sudo { + oauthToken?: string; + token?: string; + jobToken?: string; + host?: string; + url?: string; + version?: string; + rejectUnauthorized?: boolean; + camelize?: boolean; + requester?: Requester; +} + +// RequestHelper +interface PaginationOptions { + total: number; + next: number | null; + current: number; + previous: number | null; + perPage: number; + totalPages: number; +} + +interface DefaultRequestOptions extends Sudo { + body?: object | FormData; + query?: object; +} + +interface BaseRequestOptions extends Sudo { + [key: string]: any; +} + +interface PaginatedRequestOptions extends BaseRequestOptions { + showPagination?: boolean; + maxPages?: number; + page?: number; + perPage?: number; +} + +type PaginationResponse = { data: object[], pagination: PaginationOptions } +type GetResponse = PaginationResponse | object | object[]; +type PostResponse = object; +type PutResponse = object; +type DelResponse = object; + diff --git a/typings/services.d.ts b/typings/services.d.ts new file mode 100644 index 000000000..83be79d24 --- /dev/null +++ b/typings/services.d.ts @@ -0,0 +1,178 @@ +type AwardId = number; +type BroadcastMessageId = number; +type BadgeId = number; +type BoardId = number; +type CustomAttributeId = number; +type DeploymentId = number; +type DiscussionId = number; +type EnvironmentId = number; +type EpicId = number; +type GeonodeId = number; +type GroupId = string | number; +type GroupProjectId = string | number; +type HookId = number; +type ImpersonationTokenId = number; +type IssueId = number; +type JobId = number; +type LabelId = number; +type KeyId = string; +type NamespaceId = string | number; +type MergeRequestId = number; +type MilestoneId = number; +type NoteId = number; +type PipelineId = number; +type PipelineScheduleId = number; +type ProjectId = string | number; +type RunnerId = number; +type ResourceId = string | number; +type SnippetId = number; +type TodoId = number; +type TriggerId = number; +type VersionId = number; +type UserId = number; + +// Access Requests +type AccessLevel = 10 | 20 | 30 | 40 | 50; + +// Commits +interface CommitAction { + /** The action to perform */ + action: 'create' | 'delete' | 'move' | 'update'; + /** Full path to the file. Ex. lib/class.rb */ + filePath: string; + /** Original full path to the file being moved.Ex.lib / class1.rb */ + previousPath?: string; + /** File content, required for all except delete. Optional for move */ + content?: string; + /** text or base64. text is default. */ + encoding?: string; + /** Last known file commit id. Will be only considered in update, move and delete actions. */ + lastCommitId?: string; +} + +// Events +interface EventOptions { + action?: + | 'created' + | 'updated' + | 'closed' + | 'reopened' + | 'pushed' + | 'commented' + | 'merged' + | 'joined' + | 'left' + | 'destroyed' + | 'expired'; + targetType?: 'issue' | 'milestone' | 'merge_request' | 'note' | 'project' | 'snippet' | 'user'; +} + +// Jobs +type JobScope = + | 'created' + | 'pending' + | 'running' + | 'failed' + | 'success' + | 'canceled' + | 'skipped' + | 'manual'; + +// Merge Requests +interface AcceptMergeRequestOptions { + merge_commit_message?: string; + squash_commit_message?: string; + squash?: boolean; + should_remove_source_branch?: boolean; + merge_when_pipeline_succeeds?: boolean; + sha?: string; +} + +interface ShowMergeRequestOptions { + render_html?: boolean; + include_diverged_commits_count?: true; + include_rebase_in_progress?: boolean; +} + +interface CreateMergeRequestOptions { + assignee_id?: number; + description?: string; + target_project_id?: number; + labels?: string; + milestone_id?: number; + remove_source_branch?: boolean; + allow_collaboration?: boolean; + allow_maintainer_to_push?: boolean; + squash?: boolean; +} + +interface UpdateMergeRequestOptions { + target_branch?: number; + title?: string; + assignee_id?: number; + milestone_id?: number; + labels?: string; + description?: string; + state_event?: string; + remove_source_branch?: boolean; + squash?: boolean; + discussion_locked?: boolean; + allow_collaboration?: boolean; + allow_maintainer_to_push?: boolean; +} + +// Notification Settings Levels +type NotificationSettingLevel = + | 'disabled' + | 'participating' + | 'watch' + | 'global' + | 'mention' + | 'custom'; + +// Services +type SupportedService = + | 'asana' + | 'assembla' + | 'bamboo' + | 'bugzilla' + | 'buildkite' + | 'campfire' + | 'custom-issue-tracker' + | 'drone-ci' + | 'emails-on-push' + | 'external-wiki' + | 'flowdock' + | 'hangouts_chat' + | 'hipchat' + | 'irker' + | 'jira' + | 'kubernetes' + | 'slack-slash-commands' + | 'slack' + | 'mattermost-slash-commands' + | 'packagist' + | 'pipelines-email' + | 'pivotaltracker' + | 'prometheus' + | 'pushover' + | 'redmine' + | 'microsoft-teams' + | 'mattermost' + | 'mattermost-slash-commands' + | 'teamcity' + | 'jenkins' + | 'jenkins-deprecated' + | 'mock-ci'; + +// Snippets +type SnippetVisibility = 'private' | 'public' | 'internal'; + +// User Impersonation Tokens +type ImpersonationTokenScope = 'api' | 'read_user'; + +// Project upload metadata +interface ProjectUploadMetadata { + filename?: string; + contentType?: string; +}