Compare commits

..

426 Commits

Author SHA1 Message Date
Marcin Mielnicki
a39c7901b5 Require default values 2020-04-21 21:09:50 +02:00
Marcin Mielnicki
a1cdd620e9 Comment added plus small refactring 2020-04-21 20:42:13 +02:00
Marcin Mielnicki
d02c3f045a Unused code removed 2020-04-20 21:35:48 +02:00
Marcin Mielnicki
06eb88eb31 Fetch from new domain in tests 2020-04-20 21:31:53 +02:00
Marcin Mielnicki
85f65734a0 Merge remote-tracking branch 'badges/master' into custom-fetch-limit 2020-04-20 21:23:42 +02:00
Marcin Mielnicki
e66cfa3c21 📈 PaaS-friendly metrics (#4874)
* prom-client JSON to InfluxDB line protocol converter

* Converts a metric with separate names

* prom-client JSON to InfluxDB line protocol (version 2) converter

* Server has instance id

* Read the instance id from an environment variable

* More unit tests for instance-metadata

* Log instance id

* Push influx metrics

* INSTANCE_ID with dyno metadata

* Prepare influx metrics in one place

* Influx metrics endpoint should return metrics

* More readable tests

* Env added to instance metadata

* hostname as an instance label value

* HEROKU_DYNO_ID as an instance id for heroku

* Instance env can be set by env variable

* HEROKU_APP_NAME as an instance env

* Log instance metadata as a JSON

* Typo fix

* Code refactoring in tests

* wait-for-expect dev dependency added

* Test for pushing metrics

* Test for pushing metrics

* Use basic authentication for pushing metrics

* intervalSeconds=2 for development env

* Using existing methods

* TODOs removed

* Schema for influx credentials

* Influx config removed from config files

* Require username and password when influx metrics are enabled

* Unused args removed

* pushing component should log errors

* Speed up tests

* should log error responses

* InstanceMetadata class replaces by simple object

* Influx metrics can be configuredd by env variables

* Use application label name instead of service

* Unused code removed

* Integration test for prom-client and converter

* metrics.influx.enabled configuration option added

* Improved influx configuration schema

* instanceMetadata validation

* Typo fix

* Default value for env

* metrics.infux.hostnameAsAInstanceId added

* should add hostname as an instance label when hostnameAsAInstanceId is enabled

* Default values for influx configuration

* flatMap is not available in Node.js 9.4

* Env vars removed from Procfile

* Better instance metadata values in tests

* Typo fix

* lodash.groupby added to prod dependencies

* Allow other keys in private config

* Missing test - should allow other private keys when influx metrics are enabled

* Missing test - should require private metrics config when influx configuration is enabled

* log.error instead of console.log

* metrics.influx.uri -> metrics.influx.url

* Unused arguments removed

* async removed

* promisify sendMetrics

* Allow to disable prometheus metrics

* Create test server with custom config

* 'metrics-influx' resource removed

* 'metrics-influx' resource removed

* Private config schema flattened out

* Extra code removed in Prometheus tests

* promisify moved outside of the class

* Do not throw errors from got in a specific test

* hostnameAliases added

* instanceIdFrom added

* instanceIdEnvVarName added

* envLabel added to schema

* instanceMetadata is not used by InfluxMetrics

* Instance metadata removed

* hostnameAsAnInstanceId removed

* A comment added

* waitForExpect removed

* Unused code removed
2020-04-19 20:03:00 +02:00
dependabot-preview[bot]
1c48c2207f Build(deps-dev): bump @typescript-eslint/parser from 2.27.0 to 2.28.0 (#4918)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.27.0 to 2.28.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.28.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-19 16:02:29 +00:00
Pierre-Yves B
a2e0e11ead Fix [CodeclimateCoverage] tests (#4927) 2020-04-19 17:06:35 +02:00
chris48s
2c89a8c59f improve latest() fallback result if no stable versions available (#4901)
* ignore case if we fall back to string sorting versions

* if no latest MaybeSemVer, try latest pre-MaybeSemVer

* filter versions before we pass it to latestMaybeSemVer()
2020-04-18 18:40:39 +01:00
dependabot-preview[bot]
d11fa30f06 Build(deps-dev): bump @typescript-eslint/eslint-plugin (#4916)
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.27.0 to 2.28.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.28.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-17 23:38:29 +00:00
dependabot-preview[bot]
05b324093a Build(deps-dev): bump danger from 10.1.0 to 10.1.1 (#4914)
Bumps [danger](https://github.com/danger/danger-js) from 10.1.0 to 10.1.1.
- [Release notes](https://github.com/danger/danger-js/releases)
- [Changelog](https://github.com/danger/danger-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/danger/danger-js/compare/10.1.0...10.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-17 23:29:42 +00:00
dependabot-preview[bot]
42ed874112 Build(deps): bump ioredis from 4.16.1 to 4.16.2 (#4913)
Bumps [ioredis](https://github.com/luin/ioredis) from 4.16.1 to 4.16.2.
- [Release notes](https://github.com/luin/ioredis/releases)
- [Changelog](https://github.com/luin/ioredis/blob/master/Changelog.md)
- [Commits](https://github.com/luin/ioredis/compare/v4.16.1...v4.16.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-17 23:15:24 +00:00
dependabot-preview[bot]
e2d8c94dab Build(deps): bump query-string from 6.12.0 to 6.12.1 (#4922)
Bumps [query-string](https://github.com/sindresorhus/query-string) from 6.12.0 to 6.12.1.
- [Release notes](https://github.com/sindresorhus/query-string/releases)
- [Commits](https://github.com/sindresorhus/query-string/compare/v6.12.0...v6.12.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-17 20:30:50 +00:00
dependabot-preview[bot]
91577cb6e9 Build(deps): bump semver from 7.2.2 to 7.3.2 (#4915)
Bumps [semver](https://github.com/npm/node-semver) from 7.2.2 to 7.3.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/master/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.2.2...v7.3.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-17 20:22:01 +00:00
dependabot-preview[bot]
d578faab50 Build(deps): bump simple-icons from 2.8.0 to 2.9.0 (#4919)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 2.8.0 to 2.9.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/2.8.0...2.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-17 18:48:14 +00:00
dependabot-preview[bot]
b0f367cdfb Build(deps-dev): bump eslint-plugin-sort-class-members (#4921)
Bumps [eslint-plugin-sort-class-members](https://github.com/bryanrsmith/eslint-plugin-sort-class-members) from 1.6.0 to 1.7.0.
- [Release notes](https://github.com/bryanrsmith/eslint-plugin-sort-class-members/releases)
- [Commits](https://github.com/bryanrsmith/eslint-plugin-sort-class-members/compare/v1.6.0...v1.7.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-17 14:17:57 +00:00
dependabot-preview[bot]
430be7e7d1 Build(deps-dev): bump cypress from 4.3.0 to 4.4.0 (#4917)
Bumps [cypress](https://github.com/cypress-io/cypress) from 4.3.0 to 4.4.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v4.3.0...v4.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-17 14:00:16 +00:00
Pierre-Yves B
2df8289ec8 Fix failing Nexus tests (#4905)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-16 23:46:51 +00:00
dependabot-preview[bot]
478d14300c Build(deps-dev): bump eslint-plugin-import from 2.20.1 to 2.20.2 (#4859)
* Build(deps-dev): bump eslint-plugin-import from 2.20.1 to 2.20.2

Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.20.1 to 2.20.2.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.20.1...v2.20.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Fixes

* refactor: combine imports

* refactor: combine imports

* refactor: combine imports

* refactor: update import ordering

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
Co-authored-by: Paul Melnikow <email@paulmelnikow.com>
Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
Co-authored-by: Caleb Cartwright <caleb.cartwright@outlook.com>
2020-04-16 18:39:13 -05:00
Caleb Cartwright
23ceea1d72 fix: TypeError in DockerVersion badge (#4907) 2020-04-15 13:35:05 -05:00
ChrisCarini
2bf6dfdeea Adding badges for JetBrains Plugin Ratings, run [JetBrainsRating]. #4897 (#4898)
* Adding badges for JetBrains Plugin Ratings. Addresses feature request #4897

* Removing unnecessary undefined label and improving variable name in tests.
2020-04-12 17:05:49 +00:00
dependabot-preview[bot]
e4b1fd23b1 Build(deps-dev): bump @typescript-eslint/eslint-plugin (#4894)
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.26.0 to 2.27.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.27.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-11 00:07:53 -05:00
dependabot-preview[bot]
8df5eed088 Build(deps-dev): bump @typescript-eslint/parser from 2.26.0 to 2.27.0 (#4893)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.26.0 to 2.27.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.27.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-11 03:32:59 +00:00
dependabot-preview[bot]
4c1eee9218 Build(deps-dev): bump styled-components from 5.0.1 to 5.1.0 (#4891)
Bumps [styled-components](https://github.com/styled-components/styled-components) from 5.0.1 to 5.1.0.
- [Release notes](https://github.com/styled-components/styled-components/releases)
- [Changelog](https://github.com/styled-components/styled-components/blob/master/CHANGELOG.md)
- [Commits](https://github.com/styled-components/styled-components/compare/v5.0.1...v5.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-11 03:24:06 +00:00
dependabot-preview[bot]
1c2920ac31 Build(deps-dev): bump nyc from 15.0.0 to 15.0.1 (#4882)
Bumps [nyc](https://github.com/istanbuljs/nyc) from 15.0.0 to 15.0.1.
- [Release notes](https://github.com/istanbuljs/nyc/releases)
- [Changelog](https://github.com/istanbuljs/nyc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/istanbuljs/nyc/compare/v15.0.0...v15.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-10 23:53:44 +00:00
dependabot-preview[bot]
9df6aade11 Build(deps-dev): bump @types/node from 13.11.0 to 13.11.1 (#4883)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.11.0 to 13.11.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-10 20:30:38 +00:00
mondeja
01950a7852 [Conda] license badge added. (#4875)
* Conda license badge added.

* Added schema for Conda license badge.

* Remove comment in conda license service

Co-authored-by: Pierre-Yves B <PyvesDev@gmail.com>
2020-04-10 22:23:21 +02:00
chris48s
935dd25264 ignore camelcase 6, escape-string-regexp 3 updates (#4896)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-10 19:55:13 +00:00
dependabot-preview[bot]
c320a58a24 Build(deps): bump query-string from 6.11.1 to 6.12.0 (#4885)
Bumps [query-string](https://github.com/sindresorhus/query-string) from 6.11.1 to 6.12.0.
- [Release notes](https://github.com/sindresorhus/query-string/releases)
- [Commits](https://github.com/sindresorhus/query-string/compare/v6.11.1...v6.12.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-10 19:48:51 +00:00
dependabot-preview[bot]
10f06ff175 Build(deps): bump semver from 7.1.3 to 7.2.2 (#4895)
Bumps [semver](https://github.com/npm/node-semver) from 7.1.3 to 7.2.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/master/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.1.3...v7.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-10 19:38:35 +00:00
dependabot-preview[bot]
68b1a0cfe5 Build(deps-dev): bump nodemon from 2.0.2 to 2.0.3 (#4886)
Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v2.0.2...v2.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-10 19:18:05 +00:00
dependabot-preview[bot]
39b8ff0aa8 Build(deps): bump check-node-version from 4.0.2 to 4.0.3 (#4890)
Bumps [check-node-version](https://github.com/parshap/check-node-version) from 4.0.2 to 4.0.3.
- [Release notes](https://github.com/parshap/check-node-version/releases)
- [Changelog](https://github.com/parshap/check-node-version/blob/master/CHANGELOG.md)
- [Commits](https://github.com/parshap/check-node-version/compare/v4.0.2...v4.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-10 20:08:57 +01:00
dependabot-preview[bot]
6dc672a03d Build(deps-dev): bump jsdoc from 3.6.3 to 3.6.4 (#4892)
Bumps [jsdoc](https://github.com/jsdoc/jsdoc) from 3.6.3 to 3.6.4.
- [Release notes](https://github.com/jsdoc/jsdoc/releases)
- [Changelog](https://github.com/jsdoc/jsdoc/blob/3.6.4/CHANGES.md)
- [Commits](https://github.com/jsdoc/jsdoc/compare/3.6.3...3.6.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-10 18:57:57 +00:00
Caleb Cartwright
642aac6408 fix: SymfonyInsight transform (#4877)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-08 19:59:42 +00:00
Joschua Becker
b2bb50234f updating node js version (#4879)
Node.js 8.x LTS Carbon is no longer actively supported!

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-08 19:30:26 +00:00
Owen Voke
d16c8404d6 Add [OffsetEarth] badges (#4815)
* Add [OffsetEarth] trees service

* Add mocked tests for [OffsetEarth] tree service

* Update [OffsetEarth] trees name to be more unique

* Add [OffsetEarth] carbon offset service

* Update [OffsetEarth] services to use floorCount()

* Clean up [OffsetEarth] loops and unnecessary code

* Update [OffsetEarth] services to use proper APIs

* Fix order of imports in [OffsetEarth] services

* Update [OffsetEarth] tests to be more robust

* Update [OffsetEarth] tests to check colour

* Update to use unmocked [OffsetEarth] tests

* Update to use nonNegativeInteger in [OffsetEarth]

* Apply additional [OffsetEarth] review comments

* Update [OffsetEarth] references to username

Co-authored-by: Pierre-Yves B <PyvesDev@gmail.com>
2020-04-08 19:18:38 +00:00
dependabot-preview[bot]
b36de3dbf3 Build(deps-dev): bump danger from 10.0.0 to 10.1.0 (#4856)
Bumps [danger](https://github.com/danger/danger-js) from 10.0.0 to 10.1.0.
- [Release notes](https://github.com/danger/danger-js/releases)
- [Changelog](https://github.com/danger/danger-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/danger/danger-js/compare/10.0.0...10.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-08 01:28:16 +00:00
dependabot-preview[bot]
20d4143dfb Build(deps): bump ioredis from 4.16.0 to 4.16.1 (#4861)
Bumps [ioredis](https://github.com/luin/ioredis) from 4.16.0 to 4.16.1.
- [Release notes](https://github.com/luin/ioredis/releases)
- [Changelog](https://github.com/luin/ioredis/blob/master/Changelog.md)
- [Commits](https://github.com/luin/ioredis/compare/v4.16.0...v4.16.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: Paul Melnikow <github@paulmelnikow.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-07 01:54:03 +00:00
Caleb Cartwright
fbe865e149 feat: deprecate JitPackDownloads (#4873)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-06 18:33:52 +00:00
dependabot-preview[bot]
da29c92910 Build(deps-dev): bump @typescript-eslint/eslint-plugin (#4857)
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.25.0 to 2.26.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.26.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
Co-authored-by: Paul Melnikow <github@paulmelnikow.com>
2020-04-06 17:19:30 +00:00
Regev Brody
4ee26bfcdb node badges are missing descriptions #4871 (#4872)
* fix: node badges are missing descriptions #4871

* fix: node badges are missing descriptions #4871

* fix: node badges are missing descriptions #4871

* Update services/node/node-lts.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/node/node-current.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Update services/node/node-base.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2020-04-05 17:41:06 -05:00
Paul Melnikow
e57c1625d5 Document that logoColor does not apply to custom logos (#4870)
Closes #4749
2020-04-04 23:21:58 -04:00
Regev Brody
15cbbe828e fix: [node npm] service has bad colors #4809 (#4810)
* fix: node service has bad colors #4809

* fix: node service has bad colors #4809

* fix: node service has bad colors #4809

* fix: node service has bad colors #4809

* fix: node service has bad colors #4809

* fix: node service has bad colors #4809

* fix: node service has bad colors #4809

* fix: node service has bad colors #4809

* fix: node service has bad colors #4809

* fix: node service has bad colors #4809

* fix: node service has bad colors #4809

* fix: node service has bad colors #4809

* fix: node service has bad colors #4809

* fix: node service has bad colors #4809

* fix: node service has bad colors #4809

* chore: minor service test rename

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2020-04-04 21:21:08 -05:00
Caleb Cartwright
e92cb574a2 deps: update gatsby ignore version (#4866)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-05 01:10:08 +00:00
dependabot-preview[bot]
3ae94ee2d7 Build(deps-dev): bump @typescript-eslint/parser from 2.25.0 to 2.26.0 (#4852)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.25.0 to 2.26.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.26.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: Paul Melnikow <github@paulmelnikow.com>
2020-04-05 00:42:06 +00:00
chris48s
3a19a2f4e5 fix badge CLI debug script (#4865)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-04 18:57:27 +00:00
dependabot-preview[bot]
00be36660e Build(deps-dev): bump @types/node from 13.9.8 to 13.11.0 (#4850)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.9.8 to 13.11.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-04 02:32:23 +00:00
chris48s
557878edb6 don't upgrade to chalk 4 (#4863)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-03 18:10:24 +00:00
dependabot-preview[bot]
72515d0b7f Build(deps-dev): bump gatsby-plugin-page-creator from 2.1.45 to 2.1.46 (#4860)
Bumps [gatsby-plugin-page-creator](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-page-creator) from 2.1.45 to 2.1.46.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-page-creator/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-page-creator@2.1.46/packages/gatsby-plugin-page-creator)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-03 17:15:46 +00:00
dependabot-preview[bot]
0da5edf4ab Build(deps): bump simple-icons from 2.7.0 to 2.8.0 (#4854)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 2.7.0 to 2.8.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/2.7.0...2.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-03 17:03:20 +00:00
dependabot-preview[bot]
81b0e0455a Build(deps-dev): bump cypress from 4.2.0 to 4.3.0 (#4858)
Bumps [cypress](https://github.com/cypress-io/cypress) from 4.2.0 to 4.3.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v4.2.0...v4.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-03 15:39:07 +00:00
dependabot-preview[bot]
a8aefc8b2c Build(deps-dev): bump eslint-plugin-node from 11.0.0 to 11.1.0 (#4855)
Bumps [eslint-plugin-node](https://github.com/mysticatea/eslint-plugin-node) from 11.0.0 to 11.1.0.
- [Release notes](https://github.com/mysticatea/eslint-plugin-node/releases)
- [Commits](https://github.com/mysticatea/eslint-plugin-node/compare/v11.0.0...v11.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-03 15:22:45 +00:00
dependabot-preview[bot]
12b76d2a99 Build(deps-dev): bump danger from 9.4.0 to 10.0.0 (#4830)
Bumps [danger](https://github.com/danger/danger-js) from 9.4.0 to 10.0.0.
- [Release notes](https://github.com/danger/danger-js/releases)
- [Changelog](https://github.com/danger/danger-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/danger/danger-js/compare/9.4.0...10.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-02 19:49:30 +00:00
dependabot-preview[bot]
822edc50a8 Build(deps-dev): bump @typescript-eslint/eslint-plugin (#4839)
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.24.0 to 2.25.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.25.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-04-02 19:38:28 +00:00
Pierre-Yves B
8ef54f6f38 Refactor checkShouldSkip, affects [Twitch SymfonyInsight Wheelmap] (#4807) 2020-04-02 21:03:22 +02:00
dependabot-preview[bot]
52cea58f8a Build(deps-dev): bump @types/node from 13.9.2 to 13.9.8 (#4848)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.9.2 to 13.9.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-01 21:18:25 -05:00
dependabot-preview[bot]
d35e941f13 Build(deps): bump @sentry/node from 5.15.0 to 5.15.4 (#4820)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.15.0 to 5.15.4.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.15.0...5.15.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-29 21:11:51 +00:00
dependabot-preview[bot]
f4e60807c1 Build(deps-dev): bump @babel/core from 7.8.7 to 7.9.0 (#4819)
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.7 to 7.9.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.7...v7.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-29 21:02:05 +00:00
dependabot-preview[bot]
55e0a8ee75 Build(deps-dev): bump @babel/register from 7.8.6 to 7.9.0 (#4823)
Bumps [@babel/register](https://github.com/babel/babel) from 7.8.6 to 7.9.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.6...v7.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-29 20:55:21 +00:00
Lukas Planz
036c0eb166 fix: [Spiget] invalid response for external downloads #4840 (#4841)
* fix: spiget invalid response for external downloads #4840

* Changed the background color if resource is external and use proper Spiget API for the test

* Fix invalid mocked response for spiget service tests

Co-authored-by: Pierre-Yves B <PyvesDev@gmail.com>
2020-03-29 16:48:24 +02:00
chris48s
40bb861ef3 downgrade to mocha 6.2.3 (#4843) 2020-03-29 15:30:57 +01:00
dependabot-preview[bot]
eb38bb7562 Build(deps-dev): bump gatsby-plugin-remove-trailing-slashes (#4837)
Bumps [gatsby-plugin-remove-trailing-slashes](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-remove-trailing-slashes) from 2.1.23 to 2.1.24.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-remove-trailing-slashes/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-remove-trailing-slashes@2.1.24/packages/gatsby-plugin-remove-trailing-slashes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
Co-authored-by: Pierre-Yves B <PyvesDev@gmail.com>
2020-03-28 11:54:03 +00:00
dependabot-preview[bot]
00c851f9ab Build(deps-dev): bump gatsby-plugin-typescript from 2.2.3 to 2.2.5 (#4834)
Bumps [gatsby-plugin-typescript](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-typescript) from 2.2.3 to 2.2.5.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-typescript/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-typescript@2.2.5/packages/gatsby-plugin-typescript)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-28 11:45:00 +00:00
dependabot-preview[bot]
5754685cb5 Build(deps-dev): bump gatsby-plugin-styled-components (#4827)
Bumps [gatsby-plugin-styled-components](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-styled-components) from 3.1.20 to 3.1.21.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-styled-components/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-styled-components@3.1.21/packages/gatsby-plugin-styled-components)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-28 11:34:20 +00:00
dependabot-preview[bot]
9e3d770451 Build(deps-dev): bump @typescript-eslint/parser from 2.24.0 to 2.25.0 (#4818)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.24.0 to 2.25.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.25.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-27 19:42:44 -05:00
dependabot-preview[bot]
df77d512c0 Build(deps-dev): bump babel-preset-gatsby from 0.2.35 to 0.2.36 (#4831)
Bumps [babel-preset-gatsby](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/babel-preset-gatsby) from 0.2.35 to 0.2.36.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/babel-preset-gatsby/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/babel-preset-gatsby@0.2.36/packages/babel-preset-gatsby)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-27 18:33:03 -05:00
dependabot-preview[bot]
0e2a27bc72 Build(deps): bump config from 3.3.0 to 3.3.1 (#4833)
Bumps [config](https://github.com/lorenwest/node-config) from 3.3.0 to 3.3.1.
- [Release notes](https://github.com/lorenwest/node-config/releases)
- [Changelog](https://github.com/lorenwest/node-config/blob/master/History.md)
- [Commits](https://github.com/lorenwest/node-config/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: chris48s <chris48s@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-27 22:18:37 +00:00
dependabot-preview[bot]
4332221f58 Build(deps-dev): bump gatsby-plugin-catch-links from 2.1.27 to 2.1.28 (#4825)
Bumps [gatsby-plugin-catch-links](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-catch-links) from 2.1.27 to 2.1.28.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-catch-links/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-catch-links@2.1.28/packages/gatsby-plugin-catch-links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-27 22:07:36 +00:00
dependabot-preview[bot]
6c233571b7 Build(deps-dev): bump eslint-plugin-react-hooks from 1.7.0 to 2.5.1 (#4832)
Bumps [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/HEAD/packages/eslint-plugin-react-hooks) from 1.7.0 to 2.5.1.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/HEAD/packages/eslint-plugin-react-hooks)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-27 21:57:53 +00:00
Cimbali
78fd9502a9 [poeditor] Adding POEditor badge (#4812)
* Add POEditor badge for language translation progress

* Add example, tests, and documentation key for POEditor

* Remove redundant required() as indicated in PR review

* Throw errors instead of rendering red badge

* small wording tweak: mention read-only again

Co-authored-by: chris48s <chris.shaw480@gmail.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-27 21:35:36 +00:00
dependabot-preview[bot]
831251cf16 Build(deps-dev): bump gatsby-plugin-react-helmet from 3.1.23 to 3.1.24 (#4824)
Bumps [gatsby-plugin-react-helmet](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-react-helmet) from 3.1.23 to 3.1.24.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-react-helmet/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-react-helmet@3.1.24/packages/gatsby-plugin-react-helmet)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-27 21:23:41 +00:00
dependabot-preview[bot]
ac3aa36cd7 Build(deps-dev): bump react-select from 3.0.8 to 3.1.0 (#4828)
Bumps [react-select](https://github.com/JedWatson/react-select) from 3.0.8 to 3.1.0.
- [Release notes](https://github.com/JedWatson/react-select/releases)
- [Changelog](https://github.com/JedWatson/react-select/blob/master/.sweet-changelogs.js)
- [Commits](https://github.com/JedWatson/react-select/compare/react-select@3.0.8...react-select@3.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-27 21:12:13 +00:00
dependabot-preview[bot]
40b34ffd48 Build(deps-dev): bump mocha from 6.2.2 to 7.1.1 (#4822)
Bumps [mocha](https://github.com/mochajs/mocha) from 6.2.2 to 7.1.1.
- [Release notes](https://github.com/mochajs/mocha/releases)
- [Changelog](https://github.com/mochajs/mocha/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mochajs/mocha/compare/v6.2.2...v7.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-27 21:01:42 +00:00
dependabot-preview[bot]
8166e0563d Build(deps-dev): bump react-dom from 16.13.0 to 16.13.1 (#4829)
Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) from 16.13.0 to 16.13.1.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v16.13.1/packages/react-dom)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-27 20:53:37 +00:00
dependabot-preview[bot]
77a819cefe Build(deps-dev): bump eslint-config-standard from 14.1.0 to 14.1.1 (#4835)
Bumps [eslint-config-standard](https://github.com/standard/eslint-config-standard) from 14.1.0 to 14.1.1.
- [Release notes](https://github.com/standard/eslint-config-standard/releases)
- [Changelog](https://github.com/standard/eslint-config-standard/blob/master/CHANGELOG.md)
- [Commits](https://github.com/standard/eslint-config-standard/compare/v14.1.0...v14.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-27 15:12:41 +00:00
dependabot-preview[bot]
7098082b89 Build(deps-dev): bump eslint-config-prettier from 6.10.0 to 6.10.1 (#4826)
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 6.10.0 to 6.10.1.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v6.10.0...v6.10.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-27 14:27:06 +00:00
Owen Voke
671672590a Add [Treeware] badge (#4814)
* Add [Treeware] trees service

* Add tests for the [Treeware] tree service

* Update [Treeware] tree test to use package

* Update [Treeware] badge description

* Update [Treeware] test to remove timeout

* Update [Treeware] tree service to use queryParams

* Apply review comments to [Treeware] tests

* Update [Treeware] test to check colour
2020-03-26 20:19:44 +01:00
Pierre-Yves B
097bf87e41 Make it easier to benchmark and profile the code (#4780)
* Make it easier to benchmark and profile the code

* Remove unnecessary escape

* Clarify that the backend server is started without the frontend

* Add missing NODE_CONFIG_ENV environment variable

* Add error message when user has not included console.time statements

* Fix lint issue

* Handle multiple console.time statements

* Switch NODE_CONFIG_ENV to test

* Switch to const as variable never re-assigned
2020-03-22 20:45:53 +01:00
Caleb Cartwright
a2c35a69c0 deps: add babel-preset-gatsby to dependabot ignore (#4806)
Co-authored-by: Pierre-Yves B <PyvesDev@gmail.com>
2020-03-21 10:11:21 -05:00
dependabot-preview[bot]
190ee50505 Build(deps-dev): bump @typescript-eslint/parser from 2.23.0 to 2.24.0 (#4792)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.23.0 to 2.24.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.24.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-21 05:32:32 +00:00
dependabot-preview[bot]
fa2fa345b3 Build(deps-dev): bump danger from 9.2.10 to 9.4.0 (#4795)
Bumps [danger](https://github.com/danger/danger-js) from 9.2.10 to 9.4.0.
- [Release notes](https://github.com/danger/danger-js/releases)
- [Changelog](https://github.com/danger/danger-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/danger/danger-js/compare/9.2.10...9.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-21 05:25:03 +00:00
dependabot-preview[bot]
b0aa44f6f3 Build(deps-dev): bump @typescript-eslint/eslint-plugin (#4796)
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.23.0 to 2.24.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.24.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-21 05:15:40 +00:00
dependabot-preview[bot]
f0c8fc0bbc Build(deps-dev): bump @types/react-select from 3.0.10 to 3.0.11 (#4797)
Bumps [@types/react-select](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-select) from 3.0.10 to 3.0.11.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-select)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-21 00:05:10 -05:00
dependabot-preview[bot]
68f9dc5a5f Build(deps-dev): bump ts-mocha from 6.0.0 to 7.0.0 (#4800)
Bumps [ts-mocha](https://github.com/piotrwitek/ts-mocha) from 6.0.0 to 7.0.0.
- [Release notes](https://github.com/piotrwitek/ts-mocha/releases)
- [Changelog](https://github.com/piotrwitek/ts-mocha/blob/master/CHANGELOG.md)
- [Commits](https://github.com/piotrwitek/ts-mocha/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2020-03-20 23:58:33 -05:00
dependabot-preview[bot]
c23452c9a5 Build(deps): bump @sentry/node from 5.14.1 to 5.15.0 (#4802)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.14.1 to 5.15.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.14.1...5.15.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-20 23:48:53 -05:00
chris48s
f579c373f8 don't upgrade any gatsby libs (#4804)
all the gatsby stuff needs node 10+ now

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-20 23:41:08 -05:00
dependabot-preview[bot]
75e00b12f5 Build(deps-dev): bump @types/chai from 4.2.10 to 4.2.11 (#4790)
Bumps [@types/chai](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chai) from 4.2.10 to 4.2.11.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chai)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-20 22:02:12 +00:00
dependabot-preview[bot]
73ff4ea819 Build(deps-dev): bump @types/node from 13.9.1 to 13.9.2 (#4794)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.9.1 to 13.9.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-20 21:53:34 +00:00
dependabot-preview[bot]
9f662c5d7d Build(deps): bump simple-icons from 2.6.0 to 2.7.0 (#4787)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 2.6.0 to 2.7.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/2.6.0...2.7.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-20 20:16:19 +00:00
dependabot-preview[bot]
a8f5096b42 Build(deps-dev): bump react from 16.13.0 to 16.13.1 (#4789)
Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react) from 16.13.0 to 16.13.1.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v16.13.1/packages/react)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-20 20:01:13 +00:00
dependabot-preview[bot]
84f7496915 Build(deps-dev): bump cypress from 4.1.0 to 4.2.0 (#4798)
Bumps [cypress](https://github.com/cypress-io/cypress) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v4.1.0...v4.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-20 14:44:27 +00:00
Benjamin E. Coe
34324215f2 feat: add badge for .nycrc config based coverage, run [nycrc] (#4759)
* feat: add badge for .nycrc coverage

* chore: address code review

* chore: address additional review

* chore: address a tiny bit more of review

* chore: address edge case

* chore: address LGTM review
2020-03-17 20:39:58 -05:00
Pierre-Yves B
2de4c55706 Fix Twitch authorization (#4781) 2020-03-16 21:37:46 +00:00
Paul Melnikow
1ea6ab57af Document which secrets are set in production (#4779) 2020-03-15 17:55:52 -04:00
dependabot-preview[bot]
ed61324368 Build(deps-dev): bump gatsby-plugin-remove-trailing-slashes (#4777)
Bumps [gatsby-plugin-remove-trailing-slashes](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-remove-trailing-slashes) from 2.1.21 to 2.1.23.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-remove-trailing-slashes/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-remove-trailing-slashes@2.1.23/packages/gatsby-plugin-remove-trailing-slashes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-14 19:04:18 +00:00
dependabot-preview[bot]
f4f8754da6 Build(deps-dev): bump gatsby-plugin-typescript from 2.2.0 to 2.2.3 (#4776)
Bumps [gatsby-plugin-typescript](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-typescript) from 2.2.0 to 2.2.3.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-typescript/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-typescript@2.2.3/packages/gatsby-plugin-typescript)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-14 13:51:53 -05:00
dependabot-preview[bot]
b551177a1e Build(deps-dev): bump babel-preset-gatsby from 0.2.29 to 0.2.35 (#4774)
Bumps [babel-preset-gatsby](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/babel-preset-gatsby) from 0.2.29 to 0.2.35.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/babel-preset-gatsby/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/babel-preset-gatsby@0.2.35/packages/babel-preset-gatsby)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-14 13:37:57 -05:00
dependabot-preview[bot]
d4f43de1a6 Build(deps-dev): bump @typescript-eslint/eslint-plugin (#4773)
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.22.0 to 2.23.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.23.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-14 12:59:05 -05:00
dependabot-preview[bot]
800255e8af Build(deps-dev): bump gatsby-plugin-page-creator from 2.1.40 to 2.1.45 (#4771)
Bumps [gatsby-plugin-page-creator](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-page-creator) from 2.1.40 to 2.1.45.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-page-creator/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-page-creator@2.1.45/packages/gatsby-plugin-page-creator)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-14 12:28:45 -05:00
dependabot-preview[bot]
a1102db427 Build(deps-dev): bump gatsby-plugin-catch-links from 2.1.26 to 2.1.27 (#4770)
Bumps [gatsby-plugin-catch-links](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-catch-links) from 2.1.26 to 2.1.27.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-catch-links/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-catch-links@2.1.27/packages/gatsby-plugin-catch-links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-14 12:18:08 -05:00
dependabot-preview[bot]
a6cb14e035 Build(deps-dev): bump @types/node from 13.7.7 to 13.9.1 (#4768)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.7.7 to 13.9.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-13 19:44:23 -05:00
dependabot-preview[bot]
6dcfd8ec64 Build(deps-dev): bump gatsby-plugin-styled-components (#4766)
Bumps [gatsby-plugin-styled-components](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-styled-components) from 3.1.19 to 3.1.20.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-styled-components/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-styled-components@3.1.20/packages/gatsby-plugin-styled-components)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-13 22:23:49 +00:00
dependabot-preview[bot]
d1df645992 Build(deps-dev): bump @typescript-eslint/parser from 2.22.0 to 2.23.0 (#4767)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.22.0 to 2.23.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.23.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-13 22:15:30 +00:00
dependabot-preview[bot]
3efd592d03 Build(deps): bump @sentry/node from 5.13.2 to 5.14.1 (#4764)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.13.2 to 5.14.1.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.13.2...5.14.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-13 21:51:20 +00:00
dependabot-preview[bot]
daa4742e46 Build(deps-dev): bump gatsby from 2.19.32 to 2.19.41 (#4761)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.19.32 to 2.19.41.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.19.32...gatsby@2.19.41)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-13 21:39:53 +00:00
dependabot-preview[bot]
c0f6e31042 Build(deps-dev): bump gatsby-plugin-react-helmet from 3.1.22 to 3.1.23 (#4760)
Bumps [gatsby-plugin-react-helmet](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-react-helmet) from 3.1.22 to 3.1.23.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-react-helmet/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-react-helmet@3.1.23/packages/gatsby-plugin-react-helmet)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-13 16:31:16 -05:00
dependabot-preview[bot]
4ff45b218c Build(deps-dev): bump eslint-plugin-react from 7.18.3 to 7.19.0 (#4763)
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.18.3 to 7.19.0.
- [Release notes](https://github.com/yannickcr/eslint-plugin-react/releases)
- [Changelog](https://github.com/yannickcr/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yannickcr/eslint-plugin-react/compare/v7.18.3...v7.19.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2020-03-13 21:23:23 +00:00
dependabot-preview[bot]
9f178e5810 Build(deps-dev): bump minimist from 1.2.0 to 1.2.5 (#4765)
Bumps [minimist](https://github.com/substack/minimist) from 1.2.0 to 1.2.5.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.0...1.2.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-13 16:10:09 -05:00
dependabot-preview[bot]
8e7bae5dc5 Build(deps-dev): bump snap-shot-it from 7.9.2 to 7.9.3 (#4762)
Bumps [snap-shot-it](https://github.com/bahmutov/snap-shot-it) from 7.9.2 to 7.9.3.
- [Release notes](https://github.com/bahmutov/snap-shot-it/releases)
- [Commits](https://github.com/bahmutov/snap-shot-it/compare/v7.9.2...v7.9.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-13 12:51:50 +00:00
Jacob Colvin
792ecb7c01 Add [github] Milestone service (#4747)
* Add isMetricOverMetric test validator

* Add Github Milestone and Milestone-Detail

Co-authored-by: Pierre-Yves B <PyvesDev@gmail.com>
2020-03-09 21:10:12 +00:00
dependabot-preview[bot]
1d90e102ac Build(deps-dev): bump typescript from 3.7.5 to 3.8.3 (#4718)
* Build(deps-dev): bump typescript from 3.7.5 to 3.8.3

Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.7.5 to 3.8.3.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v3.7.5...v3.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Add generics to useState where necessary

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: PyvesB <PyvesDev@gmail.com>
2020-03-08 10:57:29 +00:00
Pierre-Yves B
3ecb7b2aa5 Trim user input when building path and query string (#4753) 2020-03-07 15:47:36 +00:00
Caleb Cartwright
6c2fba5310 deps: ignore xmldom >=0.3.0 (#4750) 2020-03-07 15:21:26 +00:00
dependabot-preview[bot]
b51b2c699d Build(deps): bump query-string from 6.11.0 to 6.11.1 (#4745)
Bumps [query-string](https://github.com/sindresorhus/query-string) from 6.11.0 to 6.11.1.
- [Release notes](https://github.com/sindresorhus/query-string/releases)
- [Commits](https://github.com/sindresorhus/query-string/compare/v6.11.0...v6.11.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-07 01:59:30 +00:00
dependabot-preview[bot]
10b3d849fc Build(deps-dev): bump gatsby from 2.19.22 to 2.19.32 (#4751)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.19.22 to 2.19.32.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.19.22...gatsby@2.19.32)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-06 19:51:26 -06:00
dependabot-preview[bot]
e1c865888b Build(deps-dev): bump gatsby-plugin-typescript from 2.1.27 to 2.2.0 (#4744)
Bumps [gatsby-plugin-typescript](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-typescript) from 2.1.27 to 2.2.0.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-typescript/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-typescript@2.2.0/packages/gatsby-plugin-typescript)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-06 19:25:57 -06:00
dependabot-preview[bot]
b2c4989542 Build(deps): bump @sentry/node from 5.13.0 to 5.13.2 (#4743)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.13.0 to 5.13.2.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.13.0...5.13.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-07 01:17:36 +00:00
Peter Gribanov
a082feec0c Allow resolve PHP version from jobs in [Travis] CI config (#4731)
* allow resolve PHP version from jobs in Travis CI config

* get version from jobs

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-07 01:03:23 +00:00
dependabot-preview[bot]
6b16939ccd Build(deps-dev): bump @typescript-eslint/eslint-plugin (#4742)
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.21.0 to 2.22.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.22.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-07 00:54:53 +00:00
dependabot-preview[bot]
de998fc136 Build(deps-dev): bump @babel/core from 7.8.4 to 7.8.7 (#4740)
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.4 to 7.8.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.4...v7.8.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-07 00:43:41 +00:00
dependabot-preview[bot]
f8e69bdcf3 Build(deps-dev): bump @types/chai from 4.2.9 to 4.2.10 (#4739)
Bumps [@types/chai](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chai) from 4.2.9 to 4.2.10.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chai)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-07 00:34:42 +00:00
dependabot-preview[bot]
6e0912a52c Build(deps-dev): bump @types/mocha from 7.0.1 to 7.0.2 (#4738)
Bumps [@types/mocha](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mocha) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/mocha)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-07 00:24:42 +00:00
dependabot-preview[bot]
b387d70b73 Build(deps-dev): bump @typescript-eslint/parser from 2.21.0 to 2.22.0 (#4737)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.21.0 to 2.22.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.22.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-06 23:25:55 +00:00
dependabot-preview[bot]
b091bb2fa5 Build(deps): bump simple-icons from 2.5.0 to 2.6.0 (#4736)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 2.5.0 to 2.6.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/2.5.0...2.6.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-06 23:15:32 +00:00
Pierre-Yves B
47692013f4 Delete deprecated package.json scripts (#4748) 2020-03-06 21:01:12 +00:00
dependabot-preview[bot]
fbf0a3dedf Build(deps-dev): bump cypress from 4.0.2 to 4.1.0 (#4741)
Bumps [cypress](https://github.com/cypress-io/cypress) from 4.0.2 to 4.1.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v4.0.2...v4.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-06 14:01:54 +00:00
dependabot-preview[bot]
ea8f244a85 Build(deps-dev): bump @babel/polyfill from 7.8.3 to 7.8.7 (#4732)
Bumps [@babel/polyfill](https://github.com/babel/babel) from 7.8.3 to 7.8.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.8.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-06 13:53:41 +00:00
dependabot-preview[bot]
5fd186f63b Build(deps-dev): bump eslint-config-standard-react from 9.0.0 to 9.2.0 (#4735)
Bumps [eslint-config-standard-react](https://github.com/feross/eslint-config-standard-react) from 9.0.0 to 9.2.0.
- [Release notes](https://github.com/feross/eslint-config-standard-react/releases)
- [Commits](https://github.com/feross/eslint-config-standard-react/compare/v9.0.0...v9.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-03-06 13:30:51 +00:00
dependabot-preview[bot]
4ccac9ebd2 Build(deps-dev): bump @types/node from 13.7.6 to 13.7.7 (#4733)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.7.6 to 13.7.7.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-06 07:05:40 -06:00
chris48s
d8831729cb Check request origin before sending credentials (#4729)
Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
Co-authored-by: Paul Melnikow <github@paulmelnikow.com>
Co-authored-by: chris48s <chris48s@users.noreply.github.com>

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
Co-authored-by: Paul Melnikow <github@paulmelnikow.com>
Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2020-03-04 20:42:27 +00:00
François Hodierne
c37cf7e1ee removed unused node_modules caching in CI (#4724)
Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2020-03-04 05:55:55 +00:00
Pierre-Yves B
488c432a95 Fix failing [JenkinsPluginInstalls] test (#4727) 2020-03-03 18:21:11 -06:00
Caleb Cartwright
b13116870f docs: add inline wercker ci docs (#4723) 2020-03-02 17:27:18 +00:00
François Hodierne
b45f123521 Remove a couple of unused dependencies (#4720)
* chore: remove a couple of unused dependencies

Removed in https://github.com/badges/shields/pull/2906/files
- @babel/plugin-proposal-class-properties
- @babel/plugin-proposal-object-rest-spread
- @babel/preset-env

Built in:
- url

No usage detected:
- mkdirp
- react-error-overlay
- walkdir

* chore: add react-error-overlay in version 3.0.0
2020-03-01 14:17:54 +00:00
dependabot-preview[bot]
1dcf05a494 Build(deps-dev): bump react-dom from 16.12.0 to 16.13.0 (#4709)
Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) from 16.12.0 to 16.13.0.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v16.13.0/packages/react-dom)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-29 12:51:42 -06:00
dependabot-preview[bot]
d5ed89729c Build(deps-dev): bump react-modal from 3.11.1 to 3.11.2 (#4708)
Bumps [react-modal](https://github.com/reactjs/react-modal) from 3.11.1 to 3.11.2.
- [Release notes](https://github.com/reactjs/react-modal/releases)
- [Changelog](https://github.com/reactjs/react-modal/blob/master/CHANGELOG.md)
- [Commits](https://github.com/reactjs/react-modal/compare/v3.11.1...v3.11.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-29 12:10:53 -06:00
François Hodierne
0d8a2d5ca0 Update to eslint 6.8.0 [appveyor githubissuedetail packagist] (#4489)
* update to eslint 6.8.0 and related packages

* Fixes for no-prototype-builtins

* Updates for explicit-function-return-type

* Add ignores for no-explicit-any

* update to eslint 6.8.0 and related packages

* Fixes for no-prototype-builtins

* Updates for explicit-function-return-type

* Add ignores for no-explicit-any

* package: activate eslint-config-standard

* apply updated eslint configuration

* lint: apply eslint feedback after rebase

* Update lockfile

* Update lockfile

* Restore missing deps

* Update lockfile

* Re-add eslint-plugin-node

* Add eslint-plugin-standard and eslint-plugin-react-hooks

* Clean lint

Co-authored-by: Paul Melnikow <github@paulmelnikow.com>
2020-02-29 11:06:36 -06:00
dependabot-preview[bot]
fe70e75f3e Build(deps-dev): bump @babel/register from 7.8.3 to 7.8.6 (#4707)
Bumps [@babel/register](https://github.com/babel/babel) from 7.8.3 to 7.8.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.8.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-29 01:48:30 +00:00
dependabot-preview[bot]
aded0f8a5b Build(deps): bump config from 3.2.6 to 3.3.0 (#4706)
Bumps [config](https://github.com/lorenwest/node-config) from 3.2.6 to 3.3.0.
- [Release notes](https://github.com/lorenwest/node-config/releases)
- [Changelog](https://github.com/lorenwest/node-config/blob/master/History.md)
- [Commits](https://github.com/lorenwest/node-config/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-29 01:35:36 +00:00
dependabot-preview[bot]
1d4f197cd6 Build(deps-dev): bump @types/node from 13.7.4 to 13.7.6 (#4704)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.7.4 to 13.7.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-29 01:23:12 +00:00
dependabot-preview[bot]
d331ade4fe Build(deps-dev): bump gatsby-plugin-catch-links from 2.1.25 to 2.1.26 (#4703)
Bumps [gatsby-plugin-catch-links](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-catch-links) from 2.1.25 to 2.1.26.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-catch-links/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-catch-links@2.1.26/packages/gatsby-plugin-catch-links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2020-02-29 01:13:41 +00:00
dependabot-preview[bot]
9a77436bb4 Build(deps): bump @sentry/node from 5.12.4 to 5.13.0 (#4699)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.12.4 to 5.13.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.12.4...5.13.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-28 19:04:55 -06:00
dependabot-preview[bot]
409ffe9a98 Build(deps-dev): bump react from 16.12.0 to 16.13.0 (#4698)
Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react) from 16.12.0 to 16.13.0.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v16.13.0/packages/react)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-28 18:44:22 -06:00
dependabot-preview[bot]
fe1cb55a9f Build(deps-dev): bump nock from 11.8.2 to 11.9.1 (#4705)
Bumps [nock](https://github.com/nock/nock) from 11.8.2 to 11.9.1.
- [Release notes](https://github.com/nock/nock/releases)
- [Changelog](https://github.com/nock/nock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nock/nock/compare/v11.8.2...v11.9.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-28 22:01:50 +00:00
chris48s
d47215949a don't upgrade to sinon 9 (#4714)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-28 21:42:22 +00:00
dependabot-preview[bot]
0fccaf3b55 Build(deps-dev): bump gatsby from 2.19.19 to 2.19.22 (#4701)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.19.19 to 2.19.22.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.19.19...gatsby@2.19.22)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-28 21:22:43 +00:00
dependabot-preview[bot]
bfaa808827 Build(deps-dev): bump eslint-plugin-react-hooks from 2.4.0 to 2.5.0 (#4702)
Bumps [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/HEAD/packages/eslint-plugin-react-hooks) from 2.4.0 to 2.5.0.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/HEAD/packages/eslint-plugin-react-hooks)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-28 13:46:15 +00:00
Caleb Cartwright
ba14c2fd9d tests: fix npm dep service test (#4697) 2020-02-27 17:49:04 -06:00
Caleb Cartwright
27f1f5b792 fix: private config schema (#4689) 2020-02-26 17:32:21 -06:00
Kumar Abhirup
ae4401ccb7 Add [pkgreview].dev service (#4660)
* Add pkgreview.dev services

* 🐛 FIX: Fix badges for pkgnames containing @ symbol

* 🐛 FIX: parseFloat the rating

* 🐛 FIX: Fix LGTM alerts

Alert: 2 for Incomplete string escaping or encoding

* Update services/pkgreview/package-rating.service.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* 🐛 FIX: Rollback to Joi.number() temporarily

* 👌 IMPROVE: Follow guidelines properly.

Not completely done, yet.

* 🐛 FIX: Handle response timed out error

* 👌 IMPROVE: Merge star and rating badge logic

* 🐛 FIX: Fix according to the maintainer's review

*  TEST: Write a test

*  TEST: Write one more dummy test

* 👌 IMPROVE: Improve message color scheme. Add logic to it. use color-formatters.

*  TEST: Complete Test Suitew

* 👌 IMPROVE: Make fixes according to the review

*  TEST: Write nice tests

*  TEST: Fix test regex

* 👌 IMPROVE: Do according to the review

*  TEST: Fix test regex and don't test Bad Requested Badge

*  TEST: Fix tests :)

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2020-02-22 11:11:20 -06:00
Caleb Cartwright
bb069b0492 deps: exclude nock >= 12x (#4680)
* deps: exclude nock >= 12x

* deps: exclude prom-client >= 12x
2020-02-22 01:02:45 +00:00
Pierre-Yves B
1d5adac4a9 Extend [Nexus] fallback logic to cover repository version badge (#4662)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-22 00:17:41 +00:00
dependabot-preview[bot]
024a2fda22 Build(deps): bump @sentry/node from 5.12.3 to 5.12.4 (#4675)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.12.3 to 5.12.4.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.12.3...5.12.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-22 00:05:08 +00:00
dependabot-preview[bot]
b412429c42 Build(deps-dev): bump gatsby from 2.19.17 to 2.19.19 (#4672)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.19.17 to 2.19.19.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.19.17...gatsby@2.19.19)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-21 23:50:06 +00:00
dependabot-preview[bot]
482cad117a Build(deps-dev): bump @types/react-modal from 3.10.4 to 3.10.5 (#4671)
Bumps [@types/react-modal](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-modal) from 3.10.4 to 3.10.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-modal)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-21 23:37:19 +00:00
dependabot-preview[bot]
0d69bcbbe7 Build(deps): bump config from 3.2.5 to 3.2.6 (#4669)
Bumps [config](https://github.com/lorenwest/node-config) from 3.2.5 to 3.2.6.
- [Release notes](https://github.com/lorenwest/node-config/releases)
- [Changelog](https://github.com/lorenwest/node-config/blob/master/History.md)
- [Commits](https://github.com/lorenwest/node-config/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-21 17:25:21 -06:00
dependabot-preview[bot]
033b5c95d5 Build(deps): bump ioredis from 4.14.1 to 4.16.0 (#4668)
Bumps [ioredis](https://github.com/luin/ioredis) from 4.14.1 to 4.16.0.
- [Release notes](https://github.com/luin/ioredis/releases)
- [Changelog](https://github.com/luin/ioredis/blob/master/Changelog.md)
- [Commits](https://github.com/luin/ioredis/compare/v4.14.1...v4.16.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-21 22:54:40 +00:00
dependabot-preview[bot]
520d1519dc Build(deps-dev): bump react-error-overlay from 6.0.5 to 6.0.6 (#4667)
Bumps [react-error-overlay](https://github.com/facebook/create-react-app/tree/HEAD/packages/react-error-overlay) from 6.0.5 to 6.0.6.
- [Release notes](https://github.com/facebook/create-react-app/releases)
- [Changelog](https://github.com/facebook/create-react-app/blob/master/CHANGELOG-1.x.md)
- [Commits](https://github.com/facebook/create-react-app/commits/react-error-overlay@6.0.6/packages/react-error-overlay)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-21 22:45:10 +00:00
dependabot-preview[bot]
1ab534572d Build(deps-dev): bump @types/node from 13.7.1 to 13.7.4 (#4664)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.7.1 to 13.7.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-21 22:29:37 +00:00
dependabot-preview[bot]
00754017b9 Build(deps-dev): bump eslint-plugin-mocha from 6.2.2 to 6.3.0 (#4676)
Bumps [eslint-plugin-mocha](https://github.com/lo1tuma/eslint-plugin-mocha) from 6.2.2 to 6.3.0.
- [Release notes](https://github.com/lo1tuma/eslint-plugin-mocha/releases)
- [Changelog](https://github.com/lo1tuma/eslint-plugin-mocha/blob/master/CHANGELOG.md)
- [Commits](https://github.com/lo1tuma/eslint-plugin-mocha/compare/6.2.2...6.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-21 14:30:13 +00:00
dependabot-preview[bot]
cc892b61c9 Build(deps): bump simple-icons from 2.4.0 to 2.5.0 (#4678)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 2.4.0 to 2.5.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/2.4.0...2.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-21 14:16:57 +00:00
dependabot-preview[bot]
d0b62b75d5 Build(deps-dev): bump eslint-plugin-react-hooks from 2.3.0 to 2.4.0 (#4679)
Bumps [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/HEAD/packages/eslint-plugin-react-hooks) from 2.3.0 to 2.4.0.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/HEAD/packages/eslint-plugin-react-hooks)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-21 13:55:25 +00:00
dependabot-preview[bot]
aaee83a49e Build(deps-dev): bump eslint-plugin-cypress from 2.9.0 to 2.10.3 (#4666)
Bumps [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) from 2.9.0 to 2.10.3.
- [Release notes](https://github.com/cypress-io/eslint-plugin-cypress/releases)
- [Commits](https://github.com/cypress-io/eslint-plugin-cypress/compare/v2.9.0...v2.10.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-21 13:12:25 +00:00
dependabot-preview[bot]
03bbfd24ef Build(deps-dev): bump sinon-chai from 3.4.0 to 3.5.0 (#4665)
Bumps [sinon-chai](https://github.com/domenic/sinon-chai) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/domenic/sinon-chai/releases)
- [Changelog](https://github.com/domenic/sinon-chai/blob/master/CHANGELOG.md)
- [Commits](https://github.com/domenic/sinon-chai/compare/3.4.0...3.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-21 12:45:34 +00:00
Wangchong Zhou
a7b7cc00b5 Added [OPM] version badge (#4615)
Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2020-02-17 12:08:04 -06:00
nigredo-tori
ddfcd80ddb [Nexus] 3: set prerelease=false for /r/* badges (#4659)
* Add a test for #4640

* Set prerelease=false for /r/* Nexus 3 badges

* Fix the test following PR discussion

Co-authored-by: Pierre-Yves B. <PyvesDev@gmail.com>
2020-02-16 12:44:40 +00:00
chris48s
8f094a760b use header for service test runner auth (#4658) 2020-02-16 12:32:26 +00:00
dependabot-preview[bot]
52880baf1a Build(deps-dev): bump cypress from 3.8.3 to 4.0.2 (#4657)
Bumps [cypress](https://github.com/cypress-io/cypress) from 3.8.3 to 4.0.2.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v3.8.3...v4.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-15 11:48:46 -06:00
dependabot-preview[bot]
ff01761cda Build(deps-dev): bump @types/node from 13.7.0 to 13.7.1 (#4653)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.7.0 to 13.7.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-15 15:08:58 +00:00
dependabot-preview[bot]
d488f5881b Build(deps): bump semver from 7.1.2 to 7.1.3 (#4650)
Bumps [semver](https://github.com/npm/node-semver) from 7.1.2 to 7.1.3.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/master/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.1.2...v7.1.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-14 22:41:04 +00:00
dependabot-preview[bot]
67d23e6bc8 Build(deps-dev): bump nock from 11.7.2 to 11.8.2 (#4649)
Bumps [nock](https://github.com/nock/nock) from 11.7.2 to 11.8.2.
- [Release notes](https://github.com/nock/nock/releases)
- [Changelog](https://github.com/nock/nock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nock/nock/compare/v11.7.2...v11.8.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-14 22:18:57 +00:00
dependabot-preview[bot]
8a5185826a Build(deps-dev): bump babel-preset-gatsby from 0.2.28 to 0.2.29 (#4651)
Bumps [babel-preset-gatsby](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/babel-preset-gatsby) from 0.2.28 to 0.2.29.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/babel-preset-gatsby/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/babel-preset-gatsby@0.2.29/packages/babel-preset-gatsby)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-14 22:08:38 +00:00
dependabot-preview[bot]
f97d89c01f Build(deps): bump query-string from 6.10.1 to 6.11.0 (#4645)
Bumps [query-string](https://github.com/sindresorhus/query-string) from 6.10.1 to 6.11.0.
- [Release notes](https://github.com/sindresorhus/query-string/releases)
- [Commits](https://github.com/sindresorhus/query-string/compare/v6.10.1...v6.11.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-14 20:04:21 +00:00
dependabot-preview[bot]
1bdca2a998 Build(deps-dev): bump rimraf from 3.0.1 to 3.0.2 (#4648)
Bumps [rimraf](https://github.com/isaacs/rimraf) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/isaacs/rimraf/releases)
- [Changelog](https://github.com/isaacs/rimraf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/isaacs/rimraf/compare/v3.0.1...v3.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-14 19:54:56 +00:00
dependabot-preview[bot]
fc28786e64 Build(deps-dev): bump @types/enzyme from 3.10.4 to 3.10.5 (#4654)
Bumps [@types/enzyme](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/enzyme) from 3.10.4 to 3.10.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/enzyme)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-14 19:37:34 +00:00
dependabot-preview[bot]
ede1441c00 Build(deps-dev): bump @types/chai from 4.2.8 to 4.2.9 (#4646)
Bumps [@types/chai](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chai) from 4.2.8 to 4.2.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chai)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-14 19:06:47 +00:00
dependabot-preview[bot]
a812e741cc Build(deps): bump request from 2.88.0 to 2.88.2 (#4644)
Bumps [request](https://github.com/request/request) from 2.88.0 to 2.88.2.
- [Release notes](https://github.com/request/request/releases)
- [Changelog](https://github.com/request/request/blob/master/CHANGELOG.md)
- [Commits](https://github.com/request/request/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-14 18:52:27 +00:00
dependabot-preview[bot]
122ef4f6f3 Build(deps-dev): bump gatsby from 2.19.12 to 2.19.17 (#4643)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.19.12 to 2.19.17.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.19.12...gatsby@2.19.17)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-14 12:35:26 -06:00
Anton Gilgur
7f7ecfd111 add sort and prerelease query params to [GitHubCommitsSince] (also refactors [GitHubRelease], [GitHubTag]) (#4395)
* move getLatestRelease logic from [GitHubRelease] to common-fetch

- so that the sorting and prerelease logic can be used for other
  services too, like commits-since

* add sort and prerelease query params to [GitHubCommitsSince]

- they only work when using the 'latest' version of course

- uses same logic as release service

* reuse queryParamSchema from common-fetch for [GitHubTag]

- as they were the exact same schema

* refactor [GitHubCommitsSince] tests to use withRegex

- and the same variable everywhere

* split out release/tag logic from common-fetch to common-release (affects [GitHubCommitsSince], [GitHubRelease], [GitHubTag])

- this logic is only used for code related to releases & tags, so made
  sense as a split point

Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2020-02-13 22:18:29 -06:00
Amir Zarrinkafsh
0e3b521ac7 Add [Docker] image size and version badges (#4562)
* Add [Docker] image size badge

* Add [Docker] version/tag badge

* [Docker] allow version badge to retrieve results from multiple pages

* [Docker] allow size badge to retrieve results from multiple pages

* [Docker] clean up size and version badges before squash

* [Docker] Size badge change API call to explicit tag

* [Docker] Conditionally include tag route param for badges

* [Docker] Implement feedback for size and version badges

* [Docker] Implement feedback round 2 for size and version badges

* [Docker] Optimise API lookups and remove date sorting on tag badge

* [Docker] Implement feedback round 3 for version badge

* [Docker] Implement feedback round 4 for version badge

* [Docker] Adjust unit and service tests for version badge

* [Docker] Move unit test data into fixtures

* [Docker] Fix Docker version badge route prefix

* [Docker] Add date and semver lookup for size badge

* [Docker] Implement feedback round 5 for version badge

* [Docker] Implement feedback round 6

* [Docker] Tweak error messaging for consistent wording

* [Docker] Adjust badge titles

* [Docker] Guard and treat images with missing digest

* [Docker] Guard and treat images with missing digest
2020-02-13 15:17:55 -06:00
Caleb Cartwright
98a12c9717 deps: update dependabot ignore list (#4638) 2020-02-10 13:04:56 -05:00
dependabot-preview[bot]
96e5f8701c Build(deps-dev): bump gatsby-plugin-styled-components (#4634)
Bumps [gatsby-plugin-styled-components](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-styled-components) from 3.1.18 to 3.1.19.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-styled-components/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-styled-components@3.1.19/packages/gatsby-plugin-styled-components)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-08 07:25:30 +00:00
dependabot-preview[bot]
893ddfc3df Build(deps): bump @sentry/node from 5.11.2 to 5.12.3 (#4628)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.11.2 to 5.12.3.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.11.2...5.12.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-08 07:15:31 +00:00
dependabot-preview[bot]
bb99006f62 Build(deps-dev): bump gatsby-plugin-typescript from 2.1.26 to 2.1.27 (#4633)
Bumps [gatsby-plugin-typescript](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-typescript) from 2.1.26 to 2.1.27.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-typescript/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-typescript@2.1.27/packages/gatsby-plugin-typescript)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-08 01:05:59 -06:00
dependabot-preview[bot]
e32a504894 Build(deps-dev): bump gatsby-plugin-react-helmet from 3.1.21 to 3.1.22 (#4635)
Bumps [gatsby-plugin-react-helmet](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-react-helmet) from 3.1.21 to 3.1.22.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-react-helmet/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-react-helmet@3.1.22/packages/gatsby-plugin-react-helmet)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-08 02:00:12 +00:00
dependabot-preview[bot]
09ea13e6d9 Build(deps-dev): bump styled-components from 5.0.0 to 5.0.1 (#4630)
Bumps [styled-components](https://github.com/styled-components/styled-components) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/styled-components/styled-components/releases)
- [Changelog](https://github.com/styled-components/styled-components/blob/master/CHANGELOG.md)
- [Commits](https://github.com/styled-components/styled-components/compare/v5.0.0...v5.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-08 01:46:43 +00:00
dependabot-preview[bot]
2c422ed744 Build(deps-dev): bump babel-preset-gatsby from 0.2.27 to 0.2.28 (#4631)
Bumps [babel-preset-gatsby](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/babel-preset-gatsby) from 0.2.27 to 0.2.28.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/babel-preset-gatsby/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/babel-preset-gatsby@0.2.28/packages/babel-preset-gatsby)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-08 01:30:32 +00:00
dependabot-preview[bot]
153cc861b4 Build(deps-dev): bump gatsby-plugin-page-creator from 2.1.39 to 2.1.40 (#4624)
Bumps [gatsby-plugin-page-creator](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-page-creator) from 2.1.39 to 2.1.40.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-page-creator/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-page-creator@2.1.40/packages/gatsby-plugin-page-creator)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-07 19:06:44 -06:00
dependabot-preview[bot]
49d197c437 Build(deps): bump graphql-tag from 2.10.1 to 2.10.3 (#4627)
Bumps [graphql-tag](https://github.com/apollographql/graphql-tag) from 2.10.1 to 2.10.3.
- [Release notes](https://github.com/apollographql/graphql-tag/releases)
- [Changelog](https://github.com/apollographql/graphql-tag/blob/master/CHANGELOG.md)
- [Commits](https://github.com/apollographql/graphql-tag/compare/v2.10.1...v2.10.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-07 22:25:23 +00:00
dependabot-preview[bot]
02a38e5f37 Build(deps-dev): bump gatsby-plugin-catch-links from 2.1.24 to 2.1.25 (#4622)
Bumps [gatsby-plugin-catch-links](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-catch-links) from 2.1.24 to 2.1.25.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-catch-links/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-catch-links@2.1.25/packages/gatsby-plugin-catch-links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-07 21:57:04 +00:00
dependabot-preview[bot]
85d2354a38 Build(deps-dev): bump gatsby-plugin-remove-trailing-slashes (#4625)
Bumps [gatsby-plugin-remove-trailing-slashes](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-remove-trailing-slashes) from 2.1.20 to 2.1.21.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-remove-trailing-slashes/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-remove-trailing-slashes@2.1.21/packages/gatsby-plugin-remove-trailing-slashes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-07 21:35:47 +00:00
dependabot-preview[bot]
50438bd7fa Build(deps-dev): bump snap-shot-it from 7.9.1 to 7.9.2 (#4629)
Bumps [snap-shot-it](https://github.com/bahmutov/snap-shot-it) from 7.9.1 to 7.9.2.
- [Release notes](https://github.com/bahmutov/snap-shot-it/releases)
- [Commits](https://github.com/bahmutov/snap-shot-it/compare/v7.9.1...v7.9.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-07 21:23:48 +00:00
dependabot-preview[bot]
6f75abe1e1 Build(deps): bump simple-icons from 2.3.0 to 2.4.0 (#4623)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 2.3.0 to 2.4.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/2.3.0...2.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-07 21:01:21 +00:00
dependabot-preview[bot]
aa3a9b4388 Build(deps-dev): bump eslint-plugin-cypress from 2.8.1 to 2.9.0 (#4626)
Bumps [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) from 2.8.1 to 2.9.0.
- [Release notes](https://github.com/cypress-io/eslint-plugin-cypress/releases)
- [Commits](https://github.com/cypress-io/eslint-plugin-cypress/compare/v2.8.1...v2.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-07 14:20:17 +00:00
dependabot-preview[bot]
30f3cf491e Build(deps-dev): bump eslint-plugin-react from 7.18.0 to 7.18.3 (#4621)
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.18.0 to 7.18.3.
- [Release notes](https://github.com/yannickcr/eslint-plugin-react/releases)
- [Changelog](https://github.com/yannickcr/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yannickcr/eslint-plugin-react/compare/v7.18.0...v7.18.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-07 13:29:34 +00:00
dependabot-preview[bot]
97757b3ac1 Build(deps-dev): bump eslint-plugin-import from 2.20.0 to 2.20.1 (#4620)
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.20.0 to 2.20.1.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.20.0...v2.20.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-07 13:03:11 +00:00
dependabot-preview[bot]
9d38c1be7d Build(deps-dev): bump @types/node from 13.5.0 to 13.7.0 (#4612)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.5.0 to 13.7.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-05 18:29:50 -06:00
dependabot-preview[bot]
1fec8d95b1 Build(deps-dev): bump @types/mocha from 5.2.7 to 7.0.1 (#4602)
Bumps [@types/mocha](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mocha) from 5.2.7 to 7.0.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/mocha)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-05 18:17:52 -06:00
Pierre-Yves B
0040e3665a Add mkdirp to Dependabot exclusion list (#4618) 2020-02-05 23:13:08 +00:00
dependabot-preview[bot]
c8204d6bd0 Build(deps-dev): bump @types/chai from 4.2.7 to 4.2.8 (#4606)
Bumps [@types/chai](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chai) from 4.2.7 to 4.2.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chai)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-05 22:04:20 +00:00
dependabot-preview[bot]
704399f4b3 Build(deps-dev): bump mkdirp from 0.5.1 to 1.0.3 (#4608)
Bumps [mkdirp](https://github.com/isaacs/node-mkdirp) from 0.5.1 to 1.0.3.
- [Release notes](https://github.com/isaacs/node-mkdirp/releases)
- [Changelog](https://github.com/isaacs/node-mkdirp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-mkdirp/commits/v1.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-05 21:41:20 +00:00
Pierre-Yves B
8e1ce633fa Add version 3 support for [Nexus] badges (#4557) 2020-02-05 07:55:03 +00:00
James Cahill
9868025154 Added [VisualStudioAppCenter] badges 🎉 (#4108)
* VisualStudioAppCenterBuilds

* [vsacb] Add schema, documentation and use buildStatus for rendering

* Add VSACReleasesVersion badge and test

* Make tests green again, add another nock test and fix category

* Add VSAC Releases Size badge and test

* Add VSAC Base class

* [vsacb] use base fetch function

* Add VSACR OSVersion service and tests

* Finishing touches

* Change slug from VSAC to Visual-Studio-App-Center

* Use prettyBytes for rendering

* CQ

* Use bytes response directly

* Remove superfluous required statement

* Improve os version badge format

* Switch to nock for build test

Co-authored-by: Pierre-Yves B. <PyvesDev@gmail.com>
Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2020-02-04 19:43:15 +00:00
Pedro Fracassi
d80636b101 Add [GithubLerna] badge (#4265)
* Add GitHub Lerna badge

* Add tests, rename class, rework base path, support independent tag

* Switch label to be 'lerna' in all cases

* Run Prettier

Co-authored-by: Pierre-Yves B. <PyvesDev@gmail.com>
2020-02-03 22:34:09 +00:00
chris48s
e9092bc93b tell dependabot not to offer incompatible upgrades (#4617)
* tell dependabot not to offer incompatible upgrades

* add start-server-and-test
2020-02-03 22:15:33 +00:00
dependabot-preview[bot]
93026326d9 Build(deps-dev): bump @babel/preset-env from 7.8.3 to 7.8.4 (#4609)
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.3 to 7.8.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.8.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-03 21:54:50 +00:00
dependabot-preview[bot]
0ec29c75c0 Build(deps-dev): bump @babel/core from 7.8.3 to 7.8.4 (#4610)
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.3 to 7.8.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.8.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-03 21:29:17 +00:00
dependabot-preview[bot]
b0dddab4c8 Build(deps): bump semver from 7.1.1 to 7.1.2 (#4611)
Bumps [semver](https://github.com/npm/node-semver) from 7.1.1 to 7.1.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/master/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.1.1...v7.1.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2020-02-03 21:15:49 +00:00
chris48s
7d2089e315 skip flakey test (#4616) 2020-02-03 20:59:52 +00:00
dependabot-preview[bot]
d5af9f884b Build(deps-dev): bump gatsby from 2.19.5 to 2.19.12 (#4613)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.19.5 to 2.19.12.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.19.5...gatsby@2.19.12)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-02 15:50:09 -06:00
Caleb Cartwright
64cd25fa7f deps: pin start-server-and-test to 1.10.7 (#4614) 2020-02-02 15:21:33 -06:00
dependabot-preview[bot]
e4ca19e6e1 Build(deps-dev): bump start-server-and-test from 1.10.7 to 1.10.8 (#4600)
Bumps [start-server-and-test](https://github.com/bahmutov/start-server-and-test) from 1.10.7 to 1.10.8.
- [Release notes](https://github.com/bahmutov/start-server-and-test/releases)
- [Commits](https://github.com/bahmutov/start-server-and-test/compare/v1.10.7...v1.10.8)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-01 12:56:19 -06:00
dependabot-preview[bot]
ff7550b2a1 Build(deps): bump @sentry/node from 5.11.1 to 5.11.2 (#4597)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.11.1 to 5.11.2.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.11.1...5.11.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-01 12:43:55 -06:00
dependabot-preview[bot]
d67a3a2e45 Build(deps-dev): bump gatsby-plugin-page-creator from 2.1.38 to 2.1.39 (#4596)
Bumps [gatsby-plugin-page-creator](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-page-creator) from 2.1.38 to 2.1.39.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-page-creator/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-page-creator@2.1.39/packages/gatsby-plugin-page-creator)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-01 11:41:32 -06:00
dependabot-preview[bot]
4fe78edbd3 Build(deps): bump graphql from 14.5.8 to 14.6.0 (#4598)
Bumps [graphql](https://github.com/graphql/graphql-js) from 14.5.8 to 14.6.0.
- [Release notes](https://github.com/graphql/graphql-js/releases)
- [Commits](https://github.com/graphql/graphql-js/compare/v14.5.8...v14.6.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-02-01 01:35:02 +00:00
dependabot-preview[bot]
db63004275 Build(deps-dev): bump rimraf from 3.0.0 to 3.0.1 (#4599)
Bumps [rimraf](https://github.com/isaacs/rimraf) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/isaacs/rimraf/releases)
- [Changelog](https://github.com/isaacs/rimraf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/isaacs/rimraf/compare/v3.0.0...v3.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2020-02-01 01:17:57 +00:00
dependabot-preview[bot]
4fb7478571 Build(deps-dev): bump concurrently from 5.0.2 to 5.1.0 (#4595)
Bumps [concurrently](https://github.com/kimmobrunfeldt/concurrently) from 5.0.2 to 5.1.0.
- [Release notes](https://github.com/kimmobrunfeldt/concurrently/releases)
- [Commits](https://github.com/kimmobrunfeldt/concurrently/compare/v5.0.2...v5.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-31 19:06:03 -06:00
dependabot-preview[bot]
7428b5acd8 Build(deps-dev): bump react-error-overlay from 6.0.4 to 6.0.5 (#4591)
Bumps [react-error-overlay](https://github.com/facebook/create-react-app/tree/HEAD/packages/react-error-overlay) from 6.0.4 to 6.0.5.
- [Release notes](https://github.com/facebook/create-react-app/releases)
- [Changelog](https://github.com/facebook/create-react-app/blob/master/CHANGELOG-1.x.md)
- [Commits](https://github.com/facebook/create-react-app/commits/react-error-overlay@6.0.5/packages/react-error-overlay)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-31 18:56:06 -06:00
Marcin Mielnicki
aa185ea07c typo fix 2020-01-31 16:48:44 +01:00
dependabot-preview[bot]
febf162db3 Build(deps-dev): bump cypress from 3.8.2 to 3.8.3 (#4607)
Bumps [cypress](https://github.com/cypress-io/cypress) from 3.8.2 to 3.8.3.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v3.8.2...v3.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-31 13:57:44 +00:00
dependabot-preview[bot]
8fe4683cf9 Build(deps-dev): bump eslint-config-prettier from 6.9.0 to 6.10.0 (#4594)
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 6.9.0 to 6.10.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v6.9.0...v6.10.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-31 13:14:11 +00:00
chris48s
010a1b2d0a auto-merge minor bumps to test/lint deps if build passes (#4584) 2020-01-30 18:01:03 +00:00
Caleb Cartwright
c6e5b744fa tests: fix MavenMetadata service tests (#4589) 2020-01-28 18:18:42 -06:00
chris48s
a8fbc5a179 always strip build metadata from nuget versions (#4582)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-26 20:17:06 +00:00
Thomas Démoulins
1edd15457a Support never deployed env in Azure DevOps Release (#4585)
Co-authored-by: Pierre-Yves B. <PyvesDev@gmail.com>
2020-01-26 11:04:33 +00:00
Thomas Démoulins
201c282605 [AzureDevOpsBuild] Support badge on a specific stage or job (#4583)
* Support Azure DevOps badge on a specific stage or job

* Add samples

* Fix tests

* Restart CI

* Changes per @PyvesB review

Co-authored-by: Pierre-Yves B. <PyvesDev@gmail.com>
2020-01-26 10:55:17 +00:00
dependabot-preview[bot]
62fa0d2177 Build(deps-dev): bump @babel/core from 7.7.7 to 7.8.3 (#4576)
Bumps [@babel/core](https://github.com/babel/babel) from 7.7.7 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.7...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-25 15:41:08 +00:00
dependabot-preview[bot]
52031c6372 Build(deps-dev): bump gatsby from 2.18.24 to 2.19.5 (#4580)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.18.24 to 2.19.5.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.18.24...gatsby@2.19.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-25 15:28:35 +00:00
dependabot-preview[bot]
834555c08c Build(deps-dev): bump sinon from 8.1.0 to 8.1.1 (#4579)
Bumps [sinon](https://github.com/sinonjs/sinon) from 8.1.0 to 8.1.1.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v8.1.0...v8.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-25 15:19:36 +00:00
dependabot-preview[bot]
d538e85893 Build(deps-dev): bump is-svg from 4.2.0 to 4.2.1 (#4578)
Bumps [is-svg](https://github.com/sindresorhus/is-svg) from 4.2.0 to 4.2.1.
- [Release notes](https://github.com/sindresorhus/is-svg/releases)
- [Commits](https://github.com/sindresorhus/is-svg/compare/v4.2.0...v4.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-25 14:55:04 +00:00
Marcin Mielnicki
b3b772d95c typo fix 2020-01-24 20:50:03 +01:00
Marcin Mielnicki
670dc2bf77 Removed empty line added 2020-01-24 20:45:39 +01:00
dependabot-preview[bot]
00e51600c3 Build(deps-dev): bump babel-plugin-inline-react-svg from 1.1.0 to 1.1.1 (#4573)
Bumps [babel-plugin-inline-react-svg](https://github.com/kesne/babel-plugin-inline-react-svg) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/kesne/babel-plugin-inline-react-svg/releases)
- [Commits](https://github.com/kesne/babel-plugin-inline-react-svg/compare/v1.1.0...v1.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-24 19:45:26 +00:00
dependabot-preview[bot]
e98e228b49 Build(deps-dev): bump gatsby-plugin-styled-components (#4570)
Bumps [gatsby-plugin-styled-components](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-styled-components) from 3.1.17 to 3.1.18.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-styled-components/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-styled-components@3.1.18/packages/gatsby-plugin-styled-components)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-24 19:24:59 +00:00
dependabot-preview[bot]
86ab3fd25d Build(deps-dev): bump start-server-and-test from 1.10.6 to 1.10.7 (#4571)
Bumps [start-server-and-test](https://github.com/bahmutov/start-server-and-test) from 1.10.6 to 1.10.7.
- [Release notes](https://github.com/bahmutov/start-server-and-test/releases)
- [Commits](https://github.com/bahmutov/start-server-and-test/compare/v1.10.6...v1.10.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-24 19:15:58 +00:00
dependabot-preview[bot]
05330f5f98 Build(deps-dev): bump eslint-plugin-jsdoc from 20.3.1 to 20.4.0 (#4569)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 20.3.1 to 20.4.0.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v20.3.1...v20.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-24 18:58:56 +00:00
dependabot-preview[bot]
cb858c8756 Build(deps-dev): bump @types/node from 13.1.7 to 13.5.0 (#4568)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.1.7 to 13.5.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-24 18:48:09 +00:00
dependabot-preview[bot]
29c5edd1ab Build(deps-dev): bump mocha-junit-reporter from 1.23.1 to 1.23.3 (#4567)
Bumps [mocha-junit-reporter](https://github.com/michaelleeallen/mocha-junit-reporter) from 1.23.1 to 1.23.3.
- [Release notes](https://github.com/michaelleeallen/mocha-junit-reporter/releases)
- [Commits](https://github.com/michaelleeallen/mocha-junit-reporter/compare/v1.23.1...v1.23.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-24 12:39:03 -06:00
dependabot-preview[bot]
a775052adf Build(deps): bump simple-icons from 2.2.0 to 2.3.0 (#4566)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 2.2.0 to 2.3.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/2.2.0...2.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-24 12:01:49 -06:00
Marcin Mielnicki
0dce98b022 Typo fix (#4563) 2020-01-20 22:27:43 +01:00
Marcin Mielnicki
4b53ffbd3b Bytes type definition 2020-01-20 20:28:42 +01:00
Marcin Mielnicki
18ff7db947 checkCustomIntegrationConfiguration moved to config.js + tests 2020-01-20 20:15:38 +01:00
Marcin Mielnicki
cce0104ea1 Check there is no extra config 2020-01-19 20:33:04 +01:00
dependabot-preview[bot]
89982c737b Build(deps-dev): bump @types/react-modal from 3.10.2 to 3.10.4 (#4554)
Bumps [@types/react-modal](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-modal) from 3.10.2 to 3.10.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-modal)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-19 11:26:45 -06:00
dependabot-preview[bot]
8b7f83a7b4 Build(deps): bump @sentry/node from 5.11.0 to 5.11.1 (#4550)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.11.0 to 5.11.1.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.11.0...5.11.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-19 10:52:43 -06:00
dependabot-preview[bot]
fc3408ca47 Build(deps-dev): bump cypress from 3.8.1 to 3.8.2 (#4549)
Bumps [cypress](https://github.com/cypress-io/cypress) from 3.8.1 to 3.8.2.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v3.8.1...v3.8.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-19 10:41:16 -06:00
dependabot-preview[bot]
a793d036f8 Build(deps-dev): bump @babel/plugin-proposal-object-rest-spread (#4548)
Bumps [@babel/plugin-proposal-object-rest-spread](https://github.com/babel/babel) from 7.7.7 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.7...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-19 10:30:57 -06:00
dependabot-preview[bot]
9b074e026f Build(deps-dev): bump @babel/register from 7.7.7 to 7.8.3 (#4545)
Bumps [@babel/register](https://github.com/babel/babel) from 7.7.7 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.7...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-19 10:11:56 -06:00
chris48s
ad834b0aba match upstream [codefactor] badge if no grade yet (#4558) 2020-01-19 15:43:56 +00:00
chris48s
814399d936 [sourceforge] support folder hierarchy (#4555)
closes #4499
2020-01-19 15:37:41 +00:00
dependabot-preview[bot]
cc5d75230a Build(deps): bump query-string from 6.9.0 to 6.10.1 (#4541)
Bumps [query-string](https://github.com/sindresorhus/query-string) from 6.9.0 to 6.10.1.
- [Release notes](https://github.com/sindresorhus/query-string/releases)
- [Commits](https://github.com/sindresorhus/query-string/compare/v6.9.0...v6.10.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2020-01-19 15:24:49 +00:00
dependabot-preview[bot]
6bf851f0dc Build(deps-dev): bump gatsby from 2.18.21 to 2.18.24 (#4552)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.18.21 to 2.18.24.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.18.21...gatsby@2.18.24)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-19 15:14:19 +00:00
dependabot-preview[bot]
586a7da5ce Build(deps-dev): bump styled-components from 4.4.1 to 5.0.0 (#4534)
Bumps [styled-components](https://github.com/styled-components/styled-components) from 4.4.1 to 5.0.0.
- [Release notes](https://github.com/styled-components/styled-components/releases)
- [Changelog](https://github.com/styled-components/styled-components/blob/master/CHANGELOG.md)
- [Commits](https://github.com/styled-components/styled-components/compare/v4.4.1...v5.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-18 19:11:12 +00:00
Marcin Mielnicki
56a30ef139 Typo fix 2020-01-18 19:58:12 +01:00
dependabot-preview[bot]
e38b2b52c2 Build(deps-dev): bump @babel/preset-env from 7.7.7 to 7.8.3 (#4539)
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.7.7 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.7...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-18 18:56:35 +00:00
dependabot-preview[bot]
829c086c2f Build(deps-dev): bump @babel/polyfill from 7.7.0 to 7.8.3 (#4538)
Bumps [@babel/polyfill](https://github.com/babel/babel) from 7.7.0 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.0...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-18 10:47:40 -06:00
dependabot-preview[bot]
2996404bdf Build(deps-dev): bump @babel/plugin-proposal-class-properties (#4537)
Bumps [@babel/plugin-proposal-class-properties](https://github.com/babel/babel) from 7.7.4 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.4...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-18 10:37:08 -06:00
dependabot-preview[bot]
557978106d Build(deps): bump config from 3.2.4 to 3.2.5 (#4532)
Bumps [config](https://github.com/lorenwest/node-config) from 3.2.4 to 3.2.5.
- [Release notes](https://github.com/lorenwest/node-config/releases)
- [Changelog](https://github.com/lorenwest/node-config/blob/master/History.md)
- [Commits](https://github.com/lorenwest/node-config/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-17 20:06:29 -06:00
dependabot-preview[bot]
92fa0720e3 Build(deps): bump fast-xml-parser from 3.15.1 to 3.16.0 (#4540)
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 3.15.1 to 3.16.0.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/commits/3.16.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-18 01:50:12 +00:00
dependabot-preview[bot]
9c78ceafae Build(deps-dev): bump eslint-plugin-react from 7.17.0 to 7.18.0 (#4531)
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.17.0 to 7.18.0.
- [Release notes](https://github.com/yannickcr/eslint-plugin-react/releases)
- [Changelog](https://github.com/yannickcr/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yannickcr/eslint-plugin-react/compare/v7.17.0...v7.18.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-17 19:35:20 -06:00
dependabot-preview[bot]
25c77d8c9f Build(deps-dev): bump sinon from 8.0.4 to 8.1.0 (#4535)
Bumps [sinon](https://github.com/sinonjs/sinon) from 8.0.4 to 8.1.0.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v8.0.4...v8.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
Co-authored-by: Pierre-Yves B. <PyvesDev@gmail.com>
2020-01-18 01:09:34 +00:00
dependabot-preview[bot]
adab966dab Build(deps-dev): bump typescript from 3.7.4 to 3.7.5 (#4547)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.7.4 to 3.7.5.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v3.7.4...v3.7.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-18 00:03:44 +00:00
dependabot-preview[bot]
a4c92e93e6 Build(deps-dev): bump @types/react-select from 3.0.9 to 3.0.10 (#4543)
Bumps [@types/react-select](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-select) from 3.0.9 to 3.0.10.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-select)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-17 22:47:06 +00:00
dependabot-preview[bot]
eb3d25122e Build(deps-dev): bump @types/node from 13.1.6 to 13.1.7 (#4542)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.1.6 to 13.1.7.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-17 21:51:01 +00:00
dependabot-preview[bot]
8bdcb63c23 Build(deps-dev): bump gatsby-plugin-remove-trailing-slashes (#4536)
Bumps [gatsby-plugin-remove-trailing-slashes](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-remove-trailing-slashes) from 2.1.17 to 2.1.20.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-remove-trailing-slashes/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-remove-trailing-slashes@2.1.20/packages/gatsby-plugin-remove-trailing-slashes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-17 21:28:50 +00:00
dependabot-preview[bot]
30c46194ac Build(deps-dev): bump eslint-plugin-import from 2.19.1 to 2.20.0 (#4551)
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.19.1 to 2.20.0.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.19.1...v2.20.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-17 16:47:53 +00:00
dependabot-preview[bot]
d1c0947cf2 Build(deps-dev): bump eslint-plugin-jsdoc from 20.0.5 to 20.3.1 (#4546)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 20.0.5 to 20.3.1.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v20.0.5...v20.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-17 16:32:09 +00:00
Matan Kushner
95a54e8d35 Add [Repology] repositories badge (#4529)
* Add [Repology] repositories badge

Partly addresses #929

* Replace JSON API with SVG scrape

* Fix failing tests

* Replace Joi.number with nonNegativeInteger

* Replace integer with string in failing test

* Update title to specify that the badge is for num of repositories

* Remove repology-repositories.spec.js

* Remove keywords

* Use the metric text formatter

* Remove mocked svg test

* Remove the "in" preposition
2020-01-14 22:33:09 -06:00
Caleb Cartwright
b1c069c826 tests: fix failing puppet forge service test (#4526) 2020-01-14 16:16:03 -06:00
dependabot-preview[bot]
0e6d2c43f3 Build(deps-dev): bump @types/node from 13.1.2 to 13.1.6 (#4520)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.1.2 to 13.1.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-12 17:27:50 +00:00
dependabot-preview[bot]
dcdf181319 Build(deps-dev): bump @types/react-modal from 3.10.1 to 3.10.2 (#4519)
Bumps [@types/react-modal](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-modal) from 3.10.1 to 3.10.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-modal)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-12 17:18:40 +00:00
dependabot-preview[bot]
2e4f771bcb Build(deps-dev): bump gatsby-plugin-styled-components (#4518)
Bumps [gatsby-plugin-styled-components](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-styled-components) from 3.1.16 to 3.1.17.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-styled-components/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-styled-components@3.1.17/packages/gatsby-plugin-styled-components)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-12 11:11:13 -06:00
dependabot-preview[bot]
7e265e40aa Build(deps-dev): bump sinon from 8.0.2 to 8.0.4 (#4517)
Bumps [sinon](https://github.com/sinonjs/sinon) from 8.0.2 to 8.0.4.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v8.0.2...v8.0.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-12 10:59:38 -06:00
Marcin Mielnicki
46fa8adeb9 Use sazerac in config.spec.js 2020-01-12 17:34:58 +01:00
Marcin Mielnicki
f73f828aaf Merge the default configuration with a custom one 2020-01-12 17:20:15 +01:00
Marcin Mielnicki
9e7dfea103 function for configuration 2020-01-12 17:11:19 +01:00
dependabot-preview[bot]
7bcfd4613a Build(deps-dev): bump danger from 9.2.9 to 9.2.10 (#4515)
Bumps [danger](https://github.com/danger/danger-js) from 9.2.9 to 9.2.10.
- [Release notes](https://github.com/danger/danger-js/releases)
- [Changelog](https://github.com/danger/danger-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/danger/danger-js/compare/9.2.9...9.2.10)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-11 20:26:08 +00:00
dependabot-preview[bot]
f804db62c8 Build(deps-dev): bump gatsby-plugin-page-creator from 2.1.37 to 2.1.38 (#4516)
Bumps [gatsby-plugin-page-creator](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-page-creator) from 2.1.37 to 2.1.38.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-page-creator/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-page-creator@2.1.38/packages/gatsby-plugin-page-creator)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-11 14:13:16 -06:00
dependabot-preview[bot]
77bcbc52bc Build(deps-dev): bump gatsby-plugin-catch-links from 2.1.21 to 2.1.24 (#4514)
Bumps [gatsby-plugin-catch-links](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-catch-links) from 2.1.21 to 2.1.24.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-catch-links/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-catch-links@2.1.24/packages/gatsby-plugin-catch-links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-11 13:58:07 -06:00
dependabot-preview[bot]
7b7a033bb4 Build(deps-dev): bump gatsby from 2.18.17 to 2.18.21 (#4510)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.18.17 to 2.18.21.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.18.17...gatsby@2.18.21)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-11 19:04:36 +00:00
dependabot-preview[bot]
09dac6ca2b Build(deps-dev): bump nock from 11.7.1 to 11.7.2 (#4512)
Bumps [nock](https://github.com/nock/nock) from 11.7.1 to 11.7.2.
- [Release notes](https://github.com/nock/nock/releases)
- [Changelog](https://github.com/nock/nock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nock/nock/compare/v11.7.1...v11.7.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-11 12:24:18 -06:00
Marcin Mielnicki
9f6f064193 Default values at the top 2020-01-11 18:23:16 +01:00
dependabot-preview[bot]
3858b6ed1a Build(deps-dev): bump eslint-plugin-jsdoc from 20.0.0 to 20.0.5 (#4511)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 20.0.0 to 20.0.5.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v20.0.0...v20.0.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-11 01:38:48 +00:00
dependabot-preview[bot]
2e608e25b3 Build(deps): bump simple-icons from 2.1.0 to 2.2.0 (#4509)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/2.1.0...2.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-11 01:18:34 +00:00
dependabot-preview[bot]
59680d4f80 Build(deps-dev): bump @types/react-select from 3.0.8 to 3.0.9 (#4508)
Bumps [@types/react-select](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-select) from 3.0.8 to 3.0.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-select)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-11 01:07:33 +00:00
dependabot-preview[bot]
ccbc7b3291 Build(deps-dev): bump gatsby-plugin-react-helmet from 3.1.18 to 3.1.21 (#4504)
Bumps [gatsby-plugin-react-helmet](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-react-helmet) from 3.1.18 to 3.1.21.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-react-helmet/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-react-helmet@3.1.21/packages/gatsby-plugin-react-helmet)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-11 00:29:40 +00:00
Marcin Mielnicki
d5812cbce8 Config for custom fetch limit 2020-01-10 21:10:46 +01:00
dependabot-preview[bot]
2381d89e3e Build(deps-dev): bump babel-preset-gatsby from 0.2.26 to 0.2.27 (#4507)
Bumps [babel-preset-gatsby](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/babel-preset-gatsby) from 0.2.26 to 0.2.27.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/babel-preset-gatsby/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/babel-preset-gatsby@0.2.27/packages/babel-preset-gatsby)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-10 17:42:09 +00:00
dependabot-preview[bot]
1641cf023d Build(deps): bump @sentry/node from 5.10.2 to 5.11.0 (#4506)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.10.2 to 5.11.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.10.2...5.11.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-10 11:02:26 -06:00
dependabot-preview[bot]
13d98a4729 Build(deps-dev): bump @types/react-helmet from 5.0.14 to 5.0.15 (#4505)
Bumps [@types/react-helmet](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-helmet) from 5.0.14 to 5.0.15.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-helmet)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-10 10:31:25 -06:00
dependabot-preview[bot]
2798b43262 Build(deps-dev): bump gatsby-plugin-typescript from 2.1.23 to 2.1.26 (#4503)
Bumps [gatsby-plugin-typescript](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-typescript) from 2.1.23 to 2.1.26.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-typescript/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-typescript@2.1.26/packages/gatsby-plugin-typescript)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-10 09:47:09 -06:00
Caleb Cartwright
fe02ac723f add [AppVeyorJobBuild] status badge (#4409)
* feat(service): add AppVeyor Job status badge

* refactor: sync file/class/route names for appveyor job

* tests: update # of build services in frontend test

Co-authored-by: Pierre-Yves B. <PyvesDev@gmail.com>
2020-01-08 22:22:04 +00:00
chris48s
347e0a81f3 set followRedirect: false by default in tests (#4491)
* set followRedirect: false by default in tests

* update tests implicitly relying on redirects

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-07 21:13:48 +00:00
Aleksandr Razumov
d8863805d0 Fix [TeamCity] build status text schema (#4495)
Build status is currently used as a pass through, so remove
regex, because it causes unnecessary failures.

Fix #4486
2020-01-07 12:49:22 -06:00
Marcin Mielnicki
88e2cac0f8 Exclude 'get' logo in load-simple-icons/fixes: logos: TypeError: Cannot read property '1' of null (#4488)
* Exclude 'get' key from simple icons

* Improved assertion readability

* A comment added in test
2020-01-05 21:30:57 +01:00
dependabot-preview[bot]
7806b71746 Build(deps-dev): bump eslint-plugin-jsdoc from 18.6.0 to 20.0.0 (#4483)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 18.6.0 to 20.0.0.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v18.6.0...v20.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: Marcin Mielnicki <marcin.mielnicki@gmail.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-05 15:32:26 +00:00
François Hodierne
477af22e60 package: remove lodash.throttle from dependencies (#4490)
it stopped being used in https://github.com/badges/shields/pull/3764

Co-authored-by: Paul Melnikow <github@paulmelnikow.com>
2020-01-04 16:23:08 -07:00
Marcin Mielnicki
22a85bfbcd A response size metric of an upstream service for dynamic badges like [dynamicyaml], (but not [jetbrains]) (#4434)
* Response size metric for all services

* Unused code removed

* Test for service response size metric

* All buckes of the service_response_bytes in a comment

* Register parameter in PrometheusMetrics is optional

* service response size metric enabled for dynamic badges

* Better test name

* JSDoc removed

* One import from one file

* Gather metrics in the background

* Revert saving response time metrics in the background
2020-01-04 17:48:24 +01:00
dependabot-preview[bot]
3352e8e565 Build(deps-dev): bump sinon from 7.5.0 to 8.0.2 (#4482)
Bumps [sinon](https://github.com/sinonjs/sinon) from 7.5.0 to 8.0.2.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v7.5.0...v8.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-03 22:37:12 +00:00
chris48s
9a6b96effc Use expectRedirect helper in redirect tests; affects [circleci codeclimate codecov discourse endpoint github jenkins jira jitpack lgtm maven nexus scrutinizer sonar swagger symfony teamcity travis twitter vso waffle website wordpress] (#4481)
* Convert remaining tests to use expectRedirect() helper

* convert last few redirect tests to use svg not json

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-01-03 21:39:58 +00:00
dependabot-preview[bot]
7a12dc2865 Build(deps-dev): bump nock from 11.7.0 to 11.7.1 (#4484)
Bumps [nock](https://github.com/nock/nock) from 11.7.0 to 11.7.1.
- [Release notes](https://github.com/nock/nock/releases)
- [Changelog](https://github.com/nock/nock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nock/nock/compare/v11.7.0...v11.7.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-03 15:17:08 -06:00
Drew McMurry
02681cfe27 fixes small typo (#4487) 2020-01-03 11:58:01 -06:00
dependabot-preview[bot]
f072f815a7 Build(deps-dev): bump @types/node from 13.1.1 to 13.1.2 (#4485)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.1.1 to 13.1.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-03 08:38:41 -06:00
Patric Stout
453821c40e Add [GithubDeployments] badge (#4477) (#4478)
* Add GitHub Deployments badge (#4477)

* require a message

Co-authored-by: chris48s <chris48s@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-31 18:13:16 +00:00
Caleb Cartwright
e01712da76 feat: deprecate leanpub badges (#4479) 2019-12-30 10:07:36 -06:00
dependabot-preview[bot]
e908a31f5e Build(deps-dev): bump @types/node from 12.12.21 to 13.1.1 (#4469)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 12.12.21 to 13.1.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-28 22:36:31 -06:00
dependabot-preview[bot]
ac11757574 Build(deps-dev): bump nyc from 14.1.1 to 15.0.0 (#4467)
Bumps [nyc](https://github.com/istanbuljs/nyc) from 14.1.1 to 15.0.0.
- [Release notes](https://github.com/istanbuljs/nyc/releases)
- [Changelog](https://github.com/istanbuljs/nyc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/istanbuljs/nyc/compare/v14.1.1...v15.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-28 22:19:16 -06:00
Zack
f90e58e623 Updates [Discord] badge for API changes (#4475)
* Updates Discord badge for API changes

* Update discord.service.js

* Update discord.service.js

* cr fix
2019-12-28 11:29:53 -05:00
dependabot-preview[bot]
c0b18bdc2e Build(deps-dev): bump gatsby-plugin-page-creator from 2.1.36 to 2.1.37 (#4470)
Bumps [gatsby-plugin-page-creator](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-page-creator) from 2.1.36 to 2.1.37.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-page-creator/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-page-creator@2.1.37/packages/gatsby-plugin-page-creator)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-27 20:34:02 +00:00
dependabot-preview[bot]
30c0a88978 Build(deps-dev): bump eslint-plugin-jsdoc from 18.4.3 to 18.6.0 (#4473)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 18.4.3 to 18.6.0.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v18.4.3...v18.6.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-27 20:25:05 +00:00
dependabot-preview[bot]
f81de8db4e Build(deps-dev): bump eslint-plugin-node from 10.0.0 to 11.0.0 (#4471)
Bumps [eslint-plugin-node](https://github.com/mysticatea/eslint-plugin-node) from 10.0.0 to 11.0.0.
- [Release notes](https://github.com/mysticatea/eslint-plugin-node/releases)
- [Commits](https://github.com/mysticatea/eslint-plugin-node/compare/v10.0.0...v11.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-27 15:16:40 -05:00
dependabot-preview[bot]
5057044d31 Build(deps-dev): bump eslint-config-prettier from 6.7.0 to 6.9.0 (#4472)
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 6.7.0 to 6.9.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/commits/v6.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-27 15:07:08 -05:00
dependabot-preview[bot]
b617812ad0 Build(deps): bump simple-icons from 2.0.0 to 2.1.0 (#4466)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/2.0.0...2.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-27 16:14:08 +00:00
dependabot-preview[bot]
97551dd621 Build(deps-dev): bump sinon-chai from 3.3.0 to 3.4.0 (#4464)
Bumps [sinon-chai](https://github.com/domenic/sinon-chai) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/domenic/sinon-chai/releases)
- [Changelog](https://github.com/domenic/sinon-chai/blob/master/CHANGELOG.md)
- [Commits](https://github.com/domenic/sinon-chai/compare/3.3.0...3.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-27 13:39:10 +00:00
dependabot-preview[bot]
1051b49147 Build(deps-dev): bump babel-plugin-istanbul from 5.2.0 to 6.0.0 (#4463)
Bumps [babel-plugin-istanbul](https://github.com/istanbuljs/babel-plugin-istanbul) from 5.2.0 to 6.0.0.
- [Release notes](https://github.com/istanbuljs/babel-plugin-istanbul/releases)
- [Changelog](https://github.com/istanbuljs/babel-plugin-istanbul/blob/master/CHANGELOG.md)
- [Commits](https://github.com/istanbuljs/babel-plugin-istanbul/compare/v5.2.0...v6.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-27 13:29:05 +00:00
dependabot-preview[bot]
d19812a85a Build(deps-dev): bump cypress from 3.8.0 to 3.8.1 (#4468)
Bumps [cypress](https://github.com/cypress-io/cypress) from 3.8.0 to 3.8.1.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v3.8.0...v3.8.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-27 08:17:12 -05:00
dependabot-preview[bot]
3bb2100c96 Build(deps-dev): bump typescript from 3.7.3 to 3.7.4 (#4465)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.7.3 to 3.7.4.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-27 08:10:12 -05:00
dependabot-preview[bot]
cd5e76f7b8 Build(deps): [security] bump handlebars from 4.1.2 to 4.5.3 (#4462)
Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.1.2 to 4.5.3. **This update includes a security fix.**
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/wycats/handlebars.js/blob/master/release-notes.md)
- [Commits](https://github.com/wycats/handlebars.js/compare/v4.1.2...v4.5.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-26 17:46:23 -05:00
chris48s
1a98b6bc31 Convert vpre routes to include_prereleases param in [bower chocolatey clojars packagist powershellgallery pub resharper] (#4436)
* Convert vpre routes to include_prereleases param
* add .expectRedirect() helper
* test redirects on SVG endpoint
2019-12-23 20:47:35 +00:00
dependabot-preview[bot]
8056706316 Build(deps-dev): bump gatsby-plugin-typescript from 2.1.20 to 2.1.23 (#4423)
Bumps [gatsby-plugin-typescript](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-typescript) from 2.1.20 to 2.1.23.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-typescript/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-typescript@2.1.23/packages/gatsby-plugin-typescript)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 20:39:27 +00:00
dependabot-preview[bot]
a53f9dfba4 Build(deps-dev): bump gatsby from 2.18.11 to 2.18.17 (#4458)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.18.11 to 2.18.17.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.18.11...gatsby@2.18.17)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-23 20:23:26 +00:00
dependabot-preview[bot]
8f2da0b75e Build(deps-dev): bump @babel/register from 7.7.4 to 7.7.7 (#4453)
Bumps [@babel/register](https://github.com/babel/babel) from 7.7.4 to 7.7.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.4...v7.7.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-23 18:23:46 +00:00
dependabot-preview[bot]
d85283e33f Build(deps-dev): bump @types/enzyme from 3.10.3 to 3.10.4 (#4449)
Bumps [@types/enzyme](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/enzyme) from 3.10.3 to 3.10.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/enzyme)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-23 17:59:58 +00:00
dependabot-preview[bot]
6408ce92b0 Build(deps-dev): bump gatsby-plugin-styled-components (#4447)
Bumps [gatsby-plugin-styled-components](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-styled-components) from 3.1.14 to 3.1.16.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-styled-components/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-styled-components@3.1.16/packages/gatsby-plugin-styled-components)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-23 17:51:34 +00:00
dependabot-preview[bot]
8333fdaa0b Build(deps-dev): bump @babel/core from 7.7.5 to 7.7.7 (#4445)
Bumps [@babel/core](https://github.com/babel/babel) from 7.7.5 to 7.7.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.5...v7.7.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-22 22:48:05 -05:00
dependabot-preview[bot]
1a67e882af Build(deps-dev): bump @babel/preset-env from 7.7.4 to 7.7.7 (#4443)
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.7.4 to 7.7.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.4...v7.7.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-23 02:01:30 +00:00
chris48s
e879682e29 Add documentation for designing badge URLs (#4435)
* Add documentation for designing badge URLs
Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
2019-12-22 17:05:00 +00:00
dependabot-preview[bot]
0dd5a8be9a Build(deps-dev): bump @babel/plugin-proposal-object-rest-spread (#4441)
Bumps [@babel/plugin-proposal-object-rest-spread](https://github.com/babel/babel) from 7.7.4 to 7.7.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.4...v7.7.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-22 09:24:19 -05:00
dependabot-preview[bot]
219436854b Build(deps-dev): bump @types/react-modal from 3.10.0 to 3.10.1 (#4427)
Bumps [@types/react-modal](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-modal) from 3.10.0 to 3.10.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-modal)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-22 13:30:57 +00:00
dependabot-preview[bot]
54fcfc9c35 Build(deps-dev): bump gatsby-plugin-remove-trailing-slashes (#4428)
Bumps [gatsby-plugin-remove-trailing-slashes](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-remove-trailing-slashes) from 2.1.15 to 2.1.17.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-remove-trailing-slashes/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-remove-trailing-slashes@2.1.17/packages/gatsby-plugin-remove-trailing-slashes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-22 13:22:40 +00:00
dependabot-preview[bot]
284797dffe Build(deps): bump xmldom from 0.1.27 to 0.2.1 (#4444)
Bumps [xmldom](https://github.com/xmldom/xmldom) from 0.1.27 to 0.2.1.
- [Release notes](https://github.com/xmldom/xmldom/releases)
- [Changelog](https://github.com/xmldom/xmldom/blob/master/changelog)
- [Commits](https://github.com/xmldom/xmldom/compare/v0.1.27...0.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-21 22:23:10 -05:00
dependabot-preview[bot]
29d48d9b6d Build(deps-dev): bump @types/node from 12.12.14 to 12.12.21 (#4442)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 12.12.14 to 12.12.21.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-22 00:59:13 +00:00
dependabot-preview[bot]
439ebd65a9 Build(deps): bump semver from 6.3.0 to 7.1.1 (#4450)
Bumps [semver](https://github.com/npm/node-semver) from 6.3.0 to 7.1.1.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/master/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v6.3.0...v7.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-21 17:37:07 +00:00
dependabot-preview[bot]
5767d534c9 Build(deps-dev): bump enzyme-adapter-react-16 from 1.15.1 to 1.15.2 (#4440)
Bumps [enzyme-adapter-react-16](https://github.com/airbnb/enzyme/tree/HEAD/packages/enzyme-adapter-react-16) from 1.15.1 to 1.15.2.
- [Release notes](https://github.com/airbnb/enzyme/releases)
- [Changelog](https://github.com/airbnb/enzyme/blob/master/CHANGELOG.md)
- [Commits](https://github.com/airbnb/enzyme/commits/enzyme-adapter-react-16@1.15.2/packages/enzyme-adapter-react-16)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-21 17:17:56 +00:00
dependabot-preview[bot]
8b49436748 Build(deps-dev): bump concurrently from 5.0.1 to 5.0.2 (#4448)
Bumps [concurrently](https://github.com/kimmobrunfeldt/concurrently) from 5.0.1 to 5.0.2.
- [Release notes](https://github.com/kimmobrunfeldt/concurrently/releases)
- [Commits](https://github.com/kimmobrunfeldt/concurrently/compare/v5.0.1...v5.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-21 17:03:07 +00:00
dependabot-preview[bot]
9161c6108f Build(deps-dev): bump eslint-plugin-cypress from 2.7.0 to 2.8.1 (#4451)
Bumps [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) from 2.7.0 to 2.8.1.
- [Release notes](https://github.com/cypress-io/eslint-plugin-cypress/releases)
- [Commits](https://github.com/cypress-io/eslint-plugin-cypress/compare/v2.7.0...v2.8.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2019-12-21 16:38:21 +00:00
dependabot-preview[bot]
c2f746bb17 Build(deps-dev): bump enzyme from 3.10.0 to 3.11.0 (#4452)
Bumps [enzyme](https://github.com/airbnb/enzyme/tree/HEAD/packages/enzyme) from 3.10.0 to 3.11.0.
- [Release notes](https://github.com/airbnb/enzyme/releases)
- [Changelog](https://github.com/airbnb/enzyme/blob/master/CHANGELOG.md)
- [Commits](https://github.com/airbnb/enzyme/commits/enzyme@3.11.0/packages/enzyme)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-21 16:30:43 +00:00
dependabot-preview[bot]
5ecc489707 Build(deps-dev): bump gatsby-plugin-page-creator from 2.1.33 to 2.1.36 (#4416)
Bumps [gatsby-plugin-page-creator](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-page-creator) from 2.1.33 to 2.1.36.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-page-creator/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-page-creator@2.1.36/packages/gatsby-plugin-page-creator)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-16 08:03:39 +00:00
dependabot-preview[bot]
947770608b Build(deps-dev): bump @types/chai from 4.2.6 to 4.2.7 (#4426)
Bumps [@types/chai](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chai) from 4.2.6 to 4.2.7.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chai)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-15 20:09:44 +00:00
dependabot-preview[bot]
357bea3f3e Build(deps-dev): bump babel-preset-gatsby from 0.2.23 to 0.2.26 (#4418)
Bumps [babel-preset-gatsby](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/babel-preset-gatsby) from 0.2.23 to 0.2.26.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/babel-preset-gatsby/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/babel-preset-gatsby@0.2.26/packages/babel-preset-gatsby)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-15 19:31:04 +00:00
dependabot-preview[bot]
ff161c0985 Build(deps-dev): bump gatsby-plugin-react-helmet from 3.1.16 to 3.1.18 (#4425)
Bumps [gatsby-plugin-react-helmet](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-react-helmet) from 3.1.16 to 3.1.18.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-react-helmet/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-react-helmet@3.1.18/packages/gatsby-plugin-react-helmet)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-15 18:59:27 +00:00
dependabot-preview[bot]
4a98aa5324 Build(deps-dev): bump gatsby-plugin-catch-links from 2.1.19 to 2.1.21 (#4417)
Bumps [gatsby-plugin-catch-links](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-catch-links) from 2.1.19 to 2.1.21.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-catch-links/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-catch-links@2.1.21/packages/gatsby-plugin-catch-links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-15 18:51:20 +00:00
dependabot-preview[bot]
3e2a1f14e6 Build(deps): bump @sentry/node from 5.10.1 to 5.10.2 (#4431)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.10.1 to 5.10.2.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.10.1...5.10.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-14 11:21:05 +00:00
dependabot-preview[bot]
ff202dce3d Build(deps-dev): bump node-mocks-http from 1.8.0 to 1.8.1 (#4419)
Bumps [node-mocks-http](https://github.com/howardabrams/node-mocks-http) from 1.8.0 to 1.8.1.
- [Release notes](https://github.com/howardabrams/node-mocks-http/releases)
- [Changelog](https://github.com/howardabrams/node-mocks-http/blob/master/HISTORY.md)
- [Commits](https://github.com/howardabrams/node-mocks-http/compare/v1.8.0...v1.8.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-14 11:11:29 +00:00
dependabot-preview[bot]
933a90936e Build(deps-dev): bump concurrently from 5.0.0 to 5.0.1 (#4413)
Bumps [concurrently](https://github.com/kimmobrunfeldt/concurrently) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/kimmobrunfeldt/concurrently/releases)
- [Commits](https://github.com/kimmobrunfeldt/concurrently/compare/v5.0.0...v5.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-14 11:00:46 +00:00
dependabot-preview[bot]
23db26d0e5 Build(deps-dev): bump danger from 9.2.8 to 9.2.9 (#4430)
Bumps [danger](https://github.com/danger/danger-js) from 9.2.8 to 9.2.9.
- [Release notes](https://github.com/danger/danger-js/releases)
- [Changelog](https://github.com/danger/danger-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/danger/danger-js/compare/9.2.8...9.2.9)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-14 10:47:18 +00:00
dependabot-preview[bot]
785714c666 Build(deps-dev): bump nodemon from 2.0.1 to 2.0.2 (#4432)
Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.1 to 2.0.2.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v2.0.1...v2.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-14 10:32:57 +00:00
dependabot-preview[bot]
b9c34e1a8d Build(deps-dev): bump @babel/core from 7.7.4 to 7.7.5 (#4415)
Bumps [@babel/core](https://github.com/babel/babel) from 7.7.4 to 7.7.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.4...v7.7.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-13 12:44:19 -06:00
dependabot-preview[bot]
c37cb90511 Build(deps-dev): bump gatsby from 2.18.7 to 2.18.11 (#4411)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.18.7 to 2.18.11.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.18.7...gatsby@2.18.11)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-13 17:13:28 +00:00
dependabot-preview[bot]
230fcf7772 Build(deps): bump fast-xml-parser from 3.15.0 to 3.15.1 (#4420)
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 3.15.0 to 3.15.1.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-13 16:19:03 +00:00
dependabot-preview[bot]
aaead7d527 Build(deps): bump simple-icons from 1.20.0 to 2.0.0 (#4429)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 1.20.0 to 2.0.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/1.20.0...2.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-13 16:05:30 +00:00
dependabot-preview[bot]
b84900eec2 Build(deps-dev): bump eslint-plugin-import from 2.18.2 to 2.19.1 (#4421)
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.18.2 to 2.19.1.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.18.2...v2.19.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-13 15:43:29 +00:00
dependabot-preview[bot]
8edf4d2e44 Build(deps-dev): bump cypress from 3.7.0 to 3.8.0 (#4412)
Bumps [cypress](https://github.com/cypress-io/cypress) from 3.7.0 to 3.8.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v3.7.0...v3.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-13 15:33:46 +00:00
Hannes Nel
a583fa86c3 Changed configuration validation to allow using a named pipe for port. (#4392)
* Changed configuration validation to allow using a named pipe for port.

* Update core/server/server.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Applied prettier.

* Update core/server/server.spec.js

Co-Authored-By: Caleb Cartwright <calebcartwright@users.noreply.github.com>

* Updated spec for port setting to allow only numbers or formatted named pipes.
2019-12-12 08:42:59 +00:00
Pierre-Yves B
38e80e39b4 Remove blank space for examples with no named parameters (#4398) 2019-12-11 19:26:44 +00:00
dependabot-preview[bot]
05a0881670 Build(deps-dev): bump @types/chai from 4.2.5 to 4.2.6 (#4406)
Bumps [@types/chai](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chai) from 4.2.5 to 4.2.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chai)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-06 15:54:38 -06:00
dependabot-preview[bot]
447610b85d Build(deps-dev): bump typescript from 3.7.2 to 3.7.3 (#4404)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.7.2 to 3.7.3.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v3.7.2...v3.7.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-06 21:24:07 +00:00
dependabot-preview[bot]
f87c1697c3 Build(deps-dev): bump gatsby-plugin-page-creator from 2.1.32 to 2.1.33 (#4407)
Bumps [gatsby-plugin-page-creator](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-page-creator) from 2.1.32 to 2.1.33.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-page-creator/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-page-creator@2.1.33/packages/gatsby-plugin-page-creator)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-06 19:45:32 +00:00
dependabot-preview[bot]
bd47c0b7e7 Build(deps-dev): bump eslint-plugin-jsdoc from 18.1.5 to 18.4.3 (#4402)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 18.1.5 to 18.4.3.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v18.1.5...v18.4.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-06 17:46:33 +00:00
dependabot-preview[bot]
ee7218ef70 Build(deps): bump check-node-version from 4.0.1 to 4.0.2 (#4401)
Bumps [check-node-version](https://github.com/parshap/check-node-version) from 4.0.1 to 4.0.2.
- [Release notes](https://github.com/parshap/check-node-version/releases)
- [Changelog](https://github.com/parshap/check-node-version/blob/master/CHANGELOG.md)
- [Commits](https://github.com/parshap/check-node-version/compare/v4.0.1...v4.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-06 17:15:13 +00:00
dependabot-preview[bot]
e4e5d110ce Build(deps): bump @sentry/node from 5.9.0 to 5.10.1 (#4403)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.9.0 to 5.10.1.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.9.0...5.10.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-06 16:58:32 +00:00
dependabot-preview[bot]
5df56c1a18 Build(deps-dev): bump gatsby from 2.18.5 to 2.18.7 (#4400)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.18.5 to 2.18.7.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.18.5...gatsby@2.18.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-06 16:38:16 +00:00
dependabot-preview[bot]
17d5f55506 Build(deps-dev): bump react-error-overlay from 6.0.3 to 6.0.4 (#4399)
Bumps [react-error-overlay](https://github.com/facebook/create-react-app/tree/HEAD/packages/react-error-overlay) from 6.0.3 to 6.0.4.
- [Release notes](https://github.com/facebook/create-react-app/releases)
- [Changelog](https://github.com/facebook/create-react-app/blob/master/CHANGELOG-1.x.md)
- [Commits](https://github.com/facebook/create-react-app/commits/react-error-overlay@6.0.4/packages/react-error-overlay)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-06 08:29:32 -06:00
Marcin Mielnicki
dfcb6defc8 Refactor JSONPath based services, run [DynamicJson DynamicYaml] (#4272)
* Subclass factory for JSON path services

* Common methods moved to JSON path class

* should throw error if _getData is not overridden

* Test JSON path factory using chai-as-promised

* Using chai-as-promised in more tests

* JSDoc for json-path

* Error message adopted to JSON and YAML

* Dynamic YAML badge handles YAML with a string

* 'fetch' naming covention

* Strict string validation in error message
2019-12-05 01:03:05 +01:00
Caleb Cartwright
436d2ba3a0 fix [nuget] version build metadata handling (#4222)
* fix: nuget version build metadata handling

* chore: manual formatting update
2019-12-03 16:15:55 -06:00
Pierre-Yves B
92b1380db0 Move [Jenkins] job url to query parameter (#4390) 2019-11-30 18:33:35 +00:00
dependabot-preview[bot]
c2876e8d16 Build(deps-dev): bump @types/node from 12.12.11 to 12.12.14 (#4388)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 12.12.11 to 12.12.14.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-30 15:59:38 +00:00
dependabot-preview[bot]
ae4f77b2fb Build(deps-dev): bump @babel/plugin-proposal-object-rest-spread (#4387)
Bumps [@babel/plugin-proposal-object-rest-spread](https://github.com/babel/babel) from 7.6.2 to 7.7.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.6.2...v7.7.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-30 15:49:27 +00:00
dependabot-preview[bot]
3c309db469 Build(deps-dev): bump babel-preset-gatsby from 0.2.22 to 0.2.23 (#4384)
Bumps [babel-preset-gatsby](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/babel-preset-gatsby) from 0.2.22 to 0.2.23.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/babel-preset-gatsby/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/babel-preset-gatsby@0.2.23/packages/babel-preset-gatsby)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-30 15:40:10 +00:00
dependabot-preview[bot]
fd5279e40d Build(deps-dev): bump gatsby-plugin-typescript from 2.1.19 to 2.1.20 (#4385)
Bumps [gatsby-plugin-typescript](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-typescript) from 2.1.19 to 2.1.20.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-typescript/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-typescript@2.1.20/packages/gatsby-plugin-typescript)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-30 15:31:42 +00:00
Greg Bowler
578a1438bf [Packagist] user/repo must be lowercase (#4367)
* Packagist user/repo must be lowercase

An issue has developed recently where the package name and repo name of the packagist packages have an added requirement of being lowercase. This has broken the Shields.io badge for some of my projects where their repo name has capital letters, and the badges have been automatically added by a script.

* Prettier

* Lowercase user and repo in getPackageName function instead

* Lowercase user/repo in fetch function
2019-11-30 10:21:25 -05:00
dependabot-preview[bot]
3812b0f752 Build(deps-dev): bump @babel/plugin-proposal-class-properties (#4382)
Bumps [@babel/plugin-proposal-class-properties](https://github.com/babel/babel) from 7.7.0 to 7.7.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.0...v7.7.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-30 15:13:08 +00:00
dependabot-preview[bot]
db4401e1b8 Build(deps-dev): bump gatsby-plugin-styled-components (#4383)
Bumps [gatsby-plugin-styled-components](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-styled-components) from 3.1.13 to 3.1.14.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-styled-components/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-styled-components@3.1.14/packages/gatsby-plugin-styled-components)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-29 21:57:10 +00:00
dependabot-preview[bot]
27152a2205 Build(deps-dev): bump @babel/core from 7.7.2 to 7.7.4 (#4380)
Bumps [@babel/core](https://github.com/babel/babel) from 7.7.2 to 7.7.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.2...v7.7.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-29 21:48:02 +00:00
dependabot-preview[bot]
72088184e8 Build(deps-dev): bump gatsby-plugin-page-creator from 2.1.31 to 2.1.32 (#4379)
Bumps [gatsby-plugin-page-creator](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-page-creator) from 2.1.31 to 2.1.32.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-page-creator/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-page-creator@2.1.32/packages/gatsby-plugin-page-creator)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-29 21:38:34 +00:00
dependabot-preview[bot]
87d89fe62f Build(deps): bump simple-icons from 1.19.1 to 1.20.0 (#4378)
Bumps [simple-icons](https://github.com/simple-icons/simple-icons) from 1.19.1 to 1.20.0.
- [Release notes](https://github.com/simple-icons/simple-icons/releases)
- [Commits](https://github.com/simple-icons/simple-icons/compare/1.19.1...1.20.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-29 21:28:54 +00:00
dependabot-preview[bot]
34341808e6 Build(deps): bump fast-xml-parser from 3.14.0 to 3.15.0 (#4389)
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 3.14.0 to 3.15.0.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/3.14.0...v3.15.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-29 21:09:26 +00:00
dependabot-preview[bot]
85e42fe833 Build(deps-dev): bump lint-staged from 9.4.3 to 9.5.0 (#4376)
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 9.4.3 to 9.5.0.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v9.4.3...v9.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-29 20:52:55 +00:00
dependabot-preview[bot]
dc3da163d8 Build(deps-dev): bump @babel/preset-env from 7.7.1 to 7.7.4 (#4375)
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.7.1 to 7.7.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.1...v7.7.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-29 20:33:25 +00:00
dependabot-preview[bot]
fbac19563d Build(deps-dev): bump gatsby from 2.18.2 to 2.18.5 (#4374)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.18.2 to 2.18.5.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.18.2...gatsby@2.18.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-29 20:24:32 +00:00
dependabot-preview[bot]
5bb609edfa Build(deps): bump @hapi/joi from 16.1.7 to 16.1.8 (#4386)
Bumps [@hapi/joi](https://github.com/hapijs/joi) from 16.1.7 to 16.1.8.
- [Release notes](https://github.com/hapijs/joi/releases)
- [Changelog](https://github.com/hapijs/joi/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hapijs/joi/compare/v16.1.7...v16.1.8)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-29 20:07:02 +00:00
dependabot-preview[bot]
147e2bca2e Build(deps-dev): bump gatsby-plugin-remove-trailing-slashes (#4372)
Bumps [gatsby-plugin-remove-trailing-slashes](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-remove-trailing-slashes) from 2.1.14 to 2.1.15.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-remove-trailing-slashes/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-remove-trailing-slashes@2.1.15/packages/gatsby-plugin-remove-trailing-slashes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-29 14:40:41 -05:00
dependabot-preview[bot]
2892860a82 Build(deps-dev): bump eslint-plugin-jsdoc from 18.1.4 to 18.1.5 (#4373)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 18.1.4 to 18.1.5.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v18.1.4...v18.1.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-29 19:04:51 +00:00
dependabot-preview[bot]
603b9ada7a Build(deps-dev): bump gatsby-plugin-catch-links from 2.1.17 to 2.1.19 (#4371)
Bumps [gatsby-plugin-catch-links](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-catch-links) from 2.1.17 to 2.1.19.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-catch-links/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-catch-links@2.1.19/packages/gatsby-plugin-catch-links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-29 18:44:36 +00:00
dependabot-preview[bot]
bbbe838fee Build(deps-dev): bump gatsby-plugin-react-helmet from 3.1.15 to 3.1.16 (#4381)
Bumps [gatsby-plugin-react-helmet](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-react-helmet) from 3.1.15 to 3.1.16.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-react-helmet/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-react-helmet@3.1.16/packages/gatsby-plugin-react-helmet)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-29 18:28:01 +00:00
dependabot-preview[bot]
2b5875f95e Build(deps-dev): bump cypress from 3.6.1 to 3.7.0 (#4377)
Bumps [cypress](https://github.com/cypress-io/cypress) from 3.6.1 to 3.7.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v3.6.1...v3.7.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-29 18:08:16 +00:00
dependabot-preview[bot]
35f0ac33ec Build(deps-dev): bump @babel/register from 7.7.0 to 7.7.4 (#4370)
Bumps [@babel/register](https://github.com/babel/babel) from 7.7.0 to 7.7.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.0...v7.7.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-29 10:20:10 -05:00
dependabot-preview[bot]
fbf9b56c22 Build(deps-dev): bump eslint-plugin-react from 7.16.0 to 7.17.0 (#4369)
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.16.0 to 7.17.0.
- [Release notes](https://github.com/yannickcr/eslint-plugin-react/releases)
- [Changelog](https://github.com/yannickcr/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yannickcr/eslint-plugin-react/compare/v7.16.0...v7.17.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-29 09:55:40 -05:00
Caleb Cartwright
c455993a4d add support for [GitHubWorkflowStatus] (Actions) using BaseSvgScraping service implementation (#3898)
* feat: add BaseSvgScraping service impl for GH Actions

* chore: fix GH Actions service test name

* feat: add branch support to GH Actions/Workflows

* chore: fix schema for GH actions

* refactor: update route path per PR discussion
2019-11-27 07:36:37 -06:00
dependabot-preview[bot]
6c89276f7e Build(deps-dev): bump gatsby-plugin-page-creator from 2.1.30 to 2.1.31 (#4359)
Bumps [gatsby-plugin-page-creator](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-page-creator) from 2.1.30 to 2.1.31.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-page-creator/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-page-creator@2.1.31/packages/gatsby-plugin-page-creator)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-24 22:43:17 +00:00
James Cahill
d42492f419 Add [SourceForgeOpenTickets] badge (#4112) 2019-11-24 13:13:10 +00:00
dependabot-preview[bot]
fb414b9adf Build(deps-dev): bump gatsby from 2.17.15 to 2.18.2 (#4358)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.17.15 to 2.18.2.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.17.15...gatsby@2.18.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-23 10:10:48 -06:00
dependabot-preview[bot]
f58ba5a83a Build(deps-dev): bump eslint-config-prettier from 6.5.0 to 6.7.0 (#4361)
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 6.5.0 to 6.7.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-23 09:43:06 +00:00
dependabot-preview[bot]
fc19fbd50d Build(deps-dev): bump eslint-plugin-react-hooks from 2.2.0 to 2.3.0 (#4362)
Bumps [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/HEAD/packages/eslint-plugin-react-hooks) from 2.2.0 to 2.3.0.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/HEAD/packages/eslint-plugin-react-hooks)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-23 09:28:32 +00:00
dependabot-preview[bot]
c7972ebd1d Build(deps-dev): bump @types/node from 12.12.8 to 12.12.11 (#4360)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 12.12.8 to 12.12.11.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-22 21:08:32 +00:00
dependabot-preview[bot]
7987666e28 Build(deps-dev): bump snap-shot-it from 7.9.0 to 7.9.1 (#4357)
Bumps [snap-shot-it](https://github.com/bahmutov/snap-shot-it) from 7.9.0 to 7.9.1.
- [Release notes](https://github.com/bahmutov/snap-shot-it/releases)
- [Commits](https://github.com/bahmutov/snap-shot-it/compare/v7.9.0...v7.9.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-22 15:00:27 -06:00
dependabot-preview[bot]
a5bfa4dea2 Build(deps-dev): bump eslint-plugin-jsdoc from 18.0.1 to 18.1.4 (#4356)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 18.0.1 to 18.1.4.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v18.0.1...v18.1.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-22 14:04:57 -06:00
dependabot-preview[bot]
9defbdf20c Build(deps-dev): bump gatsby-plugin-typescript from 2.1.18 to 2.1.19 (#4353)
Bumps [gatsby-plugin-typescript](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-typescript) from 2.1.18 to 2.1.19.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-typescript/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-typescript@2.1.19/packages/gatsby-plugin-typescript)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-22 13:47:06 -06:00
dependabot-preview[bot]
01a55a45e9 Build(deps-dev): bump nodemon from 1.19.4 to 2.0.1 (#4363)
Bumps [nodemon](https://github.com/remy/nodemon) from 1.19.4 to 2.0.1.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v1.19.4...v2.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-22 12:40:53 -06:00
dependabot-preview[bot]
6b815037bc Build(deps-dev): bump @types/chai from 4.2.4 to 4.2.5 (#4351)
Bumps [@types/chai](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chai) from 4.2.4 to 4.2.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chai)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-22 11:39:56 -06:00
dependabot-preview[bot]
028a0f7233 Build(deps-dev): bump husky from 3.0.9 to 3.1.0 (#4354)
Bumps [husky](https://github.com/typicode/husky) from 3.0.9 to 3.1.0.
- [Release notes](https://github.com/typicode/husky/releases)
- [Changelog](https://github.com/typicode/husky/blob/master/CHANGELOG.md)
- [Commits](https://github.com/typicode/husky/compare/v3.0.9...v3.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-22 10:24:37 -06:00
dependabot-preview[bot]
94c48c15c3 Build(deps-dev): bump eslint-plugin-mocha from 6.2.1 to 6.2.2 (#4352)
Bumps [eslint-plugin-mocha](https://github.com/lo1tuma/eslint-plugin-mocha) from 6.2.1 to 6.2.2.
- [Release notes](https://github.com/lo1tuma/eslint-plugin-mocha/releases)
- [Changelog](https://github.com/lo1tuma/eslint-plugin-mocha/blob/master/CHANGELOG.md)
- [Commits](https://github.com/lo1tuma/eslint-plugin-mocha/compare/6.2.1...6.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-22 10:07:14 -06:00
dependabot-preview[bot]
340fbf18a2 Build(deps-dev): bump typescript from 3.6.4 to 3.7.2 (#4313)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.6.4 to 3.7.2.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v3.6.4...v3.7.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-17 10:37:03 -06:00
dependabot-preview[bot]
9213f36a7a Build(deps-dev): bump gatsby-plugin-styled-components (#4341)
Bumps [gatsby-plugin-styled-components](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-styled-components) from 3.1.11 to 3.1.13.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-styled-components/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-styled-components@3.1.13/packages/gatsby-plugin-styled-components)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-17 07:34:10 +00:00
dependabot-preview[bot]
3a9b55a81e [chromewebstore] Build(deps): bump chrome-web-store-item-property from 1.1.2 to 1.2.0 (#4324)
* Build(deps): bump chrome-web-store-item-property from 1.1.2 to 1.2.0

Bumps [chrome-web-store-item-property](https://github.com/pandawing/node-chrome-web-store-item-property) from 1.1.2 to 1.2.0.
- [Release notes](https://github.com/pandawing/node-chrome-web-store-item-property/releases)
- [Changelog](https://github.com/pandawing/node-chrome-web-store-item-property/blob/master/changelog.md)
- [Commits](https://github.com/pandawing/node-chrome-web-store-item-property/compare/v1.1.2...v1.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* explicitly install peer dependencies
2019-11-16 23:09:02 +00:00
dependabot-preview[bot]
6d5a23b889 Build(deps): bump path-to-regexp from 3.1.0 to 5.0.0 (#4330)
* Build(deps): bump path-to-regexp from 3.1.0 to 5.0.0

Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) from 3.1.0 to 5.0.0.
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v3.1.0...v5.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* chore: apply path-to-regexp v5.x changes
2019-11-16 16:27:58 -06:00
dependabot-preview[bot]
bd3a133d56 Build(deps-dev): bump gatsby from 2.17.10 to 2.17.15 (#4346)
Bumps [gatsby](https://github.com/gatsbyjs/gatsby) from 2.17.10 to 2.17.15.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.17.10...gatsby@2.17.15)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-16 21:38:29 +00:00
Caleb Cartwright
5de4334ea7 tests: update npm type definition tests (#4322) 2019-11-16 20:40:55 +00:00
dependabot-preview[bot]
6e84010095 Build(deps-dev): bump gatsby-plugin-catch-links from 2.1.15 to 2.1.17 (#4345)
Bumps [gatsby-plugin-catch-links](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-catch-links) from 2.1.15 to 2.1.17.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-catch-links/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-catch-links@2.1.17/packages/gatsby-plugin-catch-links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-16 19:58:01 +00:00
dependabot-preview[bot]
088fd39684 Build(deps-dev): bump gatsby-plugin-remove-trailing-slashes (#4340)
Bumps [gatsby-plugin-remove-trailing-slashes](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-remove-trailing-slashes) from 2.1.12 to 2.1.14.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-remove-trailing-slashes/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-remove-trailing-slashes@2.1.14/packages/gatsby-plugin-remove-trailing-slashes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-16 13:44:01 -06:00
dependabot-preview[bot]
1bc2c3c886 Build(deps-dev): bump babel-preset-gatsby from 0.2.20 to 0.2.22 (#4338)
Bumps [babel-preset-gatsby](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/babel-preset-gatsby) from 0.2.20 to 0.2.22.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/babel-preset-gatsby/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/babel-preset-gatsby@0.2.22/packages/babel-preset-gatsby)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-16 06:49:43 +00:00
dependabot-preview[bot]
94a9b56358 Build(deps-dev): bump react-pose from 4.0.9 to 4.0.10 (#4334)
Bumps [react-pose](https://github.com/Popmotion/popmotion) from 4.0.9 to 4.0.10.
- [Release notes](https://github.com/Popmotion/popmotion/releases)
- [Commits](https://github.com/Popmotion/popmotion/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-16 00:42:11 -06:00
dependabot-preview[bot]
1566904b3a Build(deps-dev): bump @types/node from 12.12.6 to 12.12.8 (#4347)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 12.12.6 to 12.12.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-16 00:32:11 -06:00
dependabot-preview[bot]
25b3305444 Build(deps-dev): bump react-dom from 16.11.0 to 16.12.0 (#4343)
Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) from 16.11.0 to 16.12.0.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v16.12.0/packages/react-dom)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-16 00:15:04 -06:00
dependabot-preview[bot]
e229a3ebc8 Build(deps-dev): bump react from 16.11.0 to 16.12.0 (#4336)
Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react) from 16.11.0 to 16.12.0.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v16.12.0/packages/react)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-16 05:48:19 +00:00
dependabot-preview[bot]
ac0dc95714 Build(deps): bump @sentry/node from 5.7.1 to 5.9.0 (#4335)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 5.7.1 to 5.9.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/5.7.1...5.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-16 05:29:12 +00:00
dependabot-preview[bot]
139bab2030 Build(deps-dev): bump gatsby-plugin-typescript from 2.1.15 to 2.1.18 (#4329)
Bumps [gatsby-plugin-typescript](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-typescript) from 2.1.15 to 2.1.18.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-typescript/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-typescript@2.1.18/packages/gatsby-plugin-typescript)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-15 20:51:36 -06:00
dependabot-preview[bot]
0f332413df Build(deps-dev): bump prettier from 1.18.2 to 1.19.1 (#4328)
* Build(deps-dev): bump prettier from 1.18.2 to 1.19.1

Bumps [prettier](https://github.com/prettier/prettier) from 1.18.2 to 1.19.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/1.18.2...1.19.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Build(deps-dev): bump prettier from 1.18.2 to 1.19.1

Bumps [prettier](https://github.com/prettier/prettier) from 1.18.2 to 1.19.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/1.18.2...1.19.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* chore: apply new prettier formatting

* chore: try prettier, again
2019-11-15 19:33:40 -06:00
dependabot-preview[bot]
3028608f4c Build(deps): bump chalk from 2.4.2 to 3.0.0 (#4339)
Bumps [chalk](https://github.com/chalk/chalk) from 2.4.2 to 3.0.0.
- [Release notes](https://github.com/chalk/chalk/releases)
- [Commits](https://github.com/chalk/chalk/compare/v2.4.2...v3.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-15 22:45:28 +00:00
dependabot-preview[bot]
3db17bcd20 Build(deps-dev): bump eslint-plugin-jsdoc from 17.1.1 to 18.0.1 (#4332)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 17.1.1 to 18.0.1.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v17.1.1...v18.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-15 22:10:31 +00:00
dependabot-preview[bot]
bc1c5b9045 Build(deps-dev): bump gatsby-plugin-react-helmet from 3.1.13 to 3.1.15 (#4333)
Bumps [gatsby-plugin-react-helmet](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-react-helmet) from 3.1.13 to 3.1.15.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-react-helmet/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-react-helmet@3.1.15/packages/gatsby-plugin-react-helmet)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-15 21:55:41 +00:00
dependabot-preview[bot]
ef69881219 Build(deps-dev): bump cypress from 3.6.0 to 3.6.1 (#4344)
Bumps [cypress](https://github.com/cypress-io/cypress) from 3.6.0 to 3.6.1.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v3.6.0...v3.6.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-15 21:42:46 +00:00
dependabot-preview[bot]
cc0b1b674a Build(deps-dev): bump lint-staged from 9.4.2 to 9.4.3 (#4327)
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 9.4.2 to 9.4.3.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v9.4.2...v9.4.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-15 20:53:39 +00:00
dependabot-preview[bot]
5884186c97 Build(deps): bump query-string from 6.8.3 to 6.9.0 (#4326)
Bumps [query-string](https://github.com/sindresorhus/query-string) from 6.8.3 to 6.9.0.
- [Release notes](https://github.com/sindresorhus/query-string/releases)
- [Commits](https://github.com/sindresorhus/query-string/compare/v6.8.3...v6.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-15 20:44:34 +00:00
dependabot-preview[bot]
94cab7089c Build(deps-dev): bump gatsby-plugin-page-creator from 2.1.28 to 2.1.30 (#4323)
Bumps [gatsby-plugin-page-creator](https://github.com/gatsbyjs/gatsby/tree/HEAD/packages/gatsby-plugin-page-creator) from 2.1.28 to 2.1.30.
- [Release notes](https://github.com/gatsbyjs/gatsby/releases)
- [Changelog](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-page-creator/CHANGELOG.md)
- [Commits](https://github.com/gatsbyjs/gatsby/commits/gatsby-plugin-page-creator@2.1.30/packages/gatsby-plugin-page-creator)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-15 12:25:54 -06:00
dependabot-preview[bot]
dcb1476028 Build(deps-dev): bump danger from 9.2.4 to 9.2.8 (#4325)
Bumps [danger](https://github.com/danger/danger-js) from 9.2.4 to 9.2.8.
- [Release notes](https://github.com/danger/danger-js/releases)
- [Changelog](https://github.com/danger/danger-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/danger/danger-js/compare/9.2.4...9.2.8)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-15 11:24:20 -06:00
386 changed files with 23422 additions and 11073 deletions

View File

@@ -4,12 +4,6 @@ main_steps: &main_steps
steps:
- checkout
- restore_cache:
keys:
- v2-dependencies-{{ checksum "package-lock.json" }}
# https://github.com/badges/shields/issues/1937
- v2-dependencies-
- run:
name: Install dependencies
command: npm ci
@@ -18,11 +12,6 @@ main_steps: &main_steps
# We don't need to install the Cypress binary in jobs that aren't actually running Cypress.
CYPRESS_INSTALL_BINARY: 0
- save_cache:
paths:
- node_modules
key: v2-dependencies-{{ checksum "package-lock.json" }}
- run:
name: Linter
when: always
@@ -56,12 +45,6 @@ integration_steps: &integration_steps
steps:
- checkout
- restore_cache:
keys:
- v2-dependencies-{{ checksum "package-lock.json" }}
# https://github.com/badges/shields/issues/1937
- v2-dependencies-
- run:
name: Install dependencies
command: npm ci
@@ -83,12 +66,6 @@ services_steps: &services_steps
steps:
- checkout
- restore_cache:
keys:
- v2-dependencies-{{ checksum "package-lock.json" }}
# https://github.com/badges/shields/issues/1937
- v2-dependencies-
- run:
name: Install dependencies
command: npm ci
@@ -125,12 +102,6 @@ package_steps: &package_steps
steps:
- checkout
- restore_cache:
keys:
- v2-dependencies-{{ checksum "package-lock.json" }}
# https://github.com/badges/shields/issues/1937
- v2-dependencies-
- run:
name: Install dependencies
command: |
@@ -181,23 +152,12 @@ jobs:
steps:
- checkout
- restore_cache:
keys:
- v2-dependencies-{{ checksum "package-lock.json" }}
# fallback to using the latest cache if no exact match is found
- v2-dependencies-
- run:
name: Install dependencies
command: npm ci
environment:
CYPRESS_INSTALL_BINARY: 0
- save_cache:
paths:
- node_modules
key: v2-dependencies-{{ checksum "package-lock.json" }}
main:
docker:
- image: circleci/node:8
@@ -230,12 +190,6 @@ jobs:
steps:
- checkout
- restore_cache:
keys:
- v2-dependencies-{{ checksum "package-lock.json" }}
# https://github.com/badges/shields/issues/1937
- v2-dependencies-
- run:
name: Install dependencies
command: npm ci
@@ -256,12 +210,6 @@ jobs:
steps:
- checkout
- restore_cache:
keys:
- v2-dependencies-{{ checksum "package-lock.json" }}
# https://github.com/badges/shields/issues/1937
- v2-dependencies-
- run:
name: Install dependencies
command: npm ci
@@ -315,13 +263,6 @@ jobs:
steps:
- checkout
- restore_cache:
name: Restore node_modules
keys:
- v2-dependencies-{{ checksum "package-lock.json" }}
# https://github.com/badges/shields/issues/1937
- v2-dependencies-
- restore_cache:
name: Restore Cypress binary
keys:

View File

@@ -4,6 +4,104 @@ update_configs:
- package_manager: 'javascript'
directory: '/'
update_schedule: 'weekly'
automerged_updates:
- match:
dependency_name: 'chai*'
update_type: 'semver:minor'
- match:
dependency_name: 'cypress'
update_type: 'semver:minor'
- match:
dependency_name: 'eslint*'
update_type: 'semver:minor'
- match:
dependency_name: 'enzyme*'
update_type: 'semver:minor'
- match:
dependency_name: 'mocha*'
update_type: 'semver:minor'
- match:
dependency_name: 'sazerac'
update_type: 'semver:minor'
- match:
dependency_name: 'sinon*'
update_type: 'semver:minor'
- match:
dependency_name: 'snap-shot-it'
update_type: 'semver:minor'
ignored_updates:
- match:
dependency_name: babel-preset-gatsby
version_requirement: '>=0.3.0'
- match:
dependency_name: camelcase
version_requirement: '>=6.0.0'
- match:
dependency_name: chalk
version_requirement: '>=4.0.0'
- match:
dependency_name: cross-env
version_requirement: '>=7.0.0'
- match:
dependency_name: decamelize
version_requirement: '>=4.0.0'
- match:
dependency_name: escape-string-regexp
version_requirement: '>=3.0.0'
- match:
dependency_name: eslint-plugin-jsdoc
version_requirement: '>=21.0.0'
- match:
dependency_name: gatsby
version_requirement: '>=2.19.50'
- match:
dependency_name: gatsby-plugin-catch-links
version_requirement: '>=2.2.0'
- match:
dependency_name: gatsby-plugin-page-creator
version_requirement: '>=2.2.0'
- match:
dependency_name: gatsby-plugin-react-helmet
version_requirement: '>=3.2.0'
- match:
dependency_name: gatsby-plugin-remove-trailing-slashes
version_requirement: '>=2.2.0'
- match:
dependency_name: gatsby-plugin-styled-components
version_requirement: '>=3.2.0'
- match:
dependency_name: gatsby-plugin-typescript
version_requirement: '>=2.3.0'
- match:
dependency_name: got
version_requirement: '>=10.0.0'
- match:
dependency_name: '@hapi/joi'
version_requirement: '>=17.0.0'
- match:
dependency_name: husky
version_requirement: '>=4.0.0'
- match:
dependency_name: lint-staged
version_requirement: '>=10.0.0'
- match:
dependency_name: nock
version_requirement: '>=12.0.0'
- match:
dependency_name: prom-client
version_requirement: '>=12.0.0'
- match:
dependency_name: react-error-overlay
version_requirement: '>=3.0.0'
- match:
dependency_name: sinon
version_requirement: '>=9.0.0'
- match:
dependency_name: start-server-and-test
version_requirement: '>=1.10.8'
- match:
dependency_name: xmldom
version_requirement: '>=0.3.0'
# gh-badges package dependencies
- package_manager: 'javascript'

View File

@@ -1,7 +1,8 @@
extends:
- standard-jsx
- standard
- standard-react
- plugin:@typescript-eslint/recommended
- prettier
- prettier/@typescript-eslint
- prettier/standard
- prettier/react
@@ -39,7 +40,6 @@ overrides:
es6: true
rules:
no-console: 'off'
'@typescript-eslint/no-var-requires': off
- files:
- '**/*.@(ts|tsx)'
@@ -48,8 +48,13 @@ overrides:
parser: '@typescript-eslint/parser'
rules:
# Argh.
'@typescript-eslint/explicit-function-return-type': 'off'
'@typescript-eslint/explicit-function-return-type':
['error', { 'allowExpressions': true }]
'@typescript-eslint/no-empty-function': 'error'
'@typescript-eslint/no-var-requires': 'error'
'@typescript-eslint/no-object-literal-type-assertion': 'off'
'@typescript-eslint/no-explicit-any': 'error'
'@typescript-eslint/ban-ts-ignore': 'off'
- files:
- core/**/*.ts
@@ -113,9 +118,9 @@ rules:
# Allow unused parameters. In callbacks, removing them seems to obscure
# what the functions are doing.
'@typescript-eslint/no-unused-vars': ['error', { 'args': 'none' }]
no-unused-vars: off
no-unused-vars: 'off'
'@typescript-eslint/no-var-requires': error
'@typescript-eslint/no-var-requires': 'off'
# These should be disabled by eslint-config-prettier, but are not.
no-extra-semi: 'off'
@@ -163,6 +168,8 @@ rules:
# Disable some from TypeScript.
'@typescript-eslint/camelcase': off
'@typescript-eslint/explicit-function-return-type': 'off'
'@typescript-eslint/no-empty-function': 'off'
react/jsx-sort-props: 'error'
react-hooks/rules-of-hooks: 'error'

10
.github/workflows/auto-approve.yml vendored Normal file
View File

@@ -0,0 +1,10 @@
name: Auto approve
on: pull_request
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: chris48s/approve-bot@1.0.0
with:
github-token: '${{ secrets.GITHUB_TOKEN }}'

3
.gitignore vendored
View File

@@ -113,3 +113,6 @@ service-definitions.yml
# Rendered API docs
/api-docs/
# Flamebearer
flamegraph.html

View File

@@ -104,12 +104,8 @@ There are three places to get help:
## Badge URLs
- The format of new badges should be of the form
`/SERVICE/NOUN/PARAMETERS/QUALIFIERS`. For instance,
`/gitter/room/nwjs/nw.js`. The vendor is gitter, the
badge is for rooms, and the parameter is nwjs/nw.js.
- Services which require a url/hostname parameter should use a query parameter to accept that value. For instance,
`/discourse/topics?server=https://meta.discourse.org`.
- The format of new badges should be of the form `/SERVICE/NOUN/PARAMETERS`.
- There is further documentation on this in [badge-urls](https://github.com/badges/shields/blob/master/doc/badge-urls.md)
## Coding guidelines

View File

@@ -6,6 +6,15 @@ public:
metrics:
prometheus:
enabled: 'METRICS_PROMETHEUS_ENABLED'
endpointEnabled: 'METRICS_PROMETHEUS_ENDPOINT_ENABLED'
influx:
enabled: 'METRICS_INFLUX_ENABLED'
url: 'METRICS_INFLUX_URL'
timeoutMilliseconds: 'METRICS_INFLUX_TIMEOUT_MILLISECONDS'
intervalSeconds: 'METRICS_INFLUX_INTERVAL_SECONDS'
instanceIdFrom: 'METRICS_INFLUX_INSTANCE_ID_FROM'
instanceIdEnvVarName: 'METRICS_INFLUX_INSTANCE_ID_ENV_VAR_NAME'
envLabel: 'METRICS_INFLUX_ENV_LABEL'
ssl:
isSecure: 'HTTPS'
@@ -25,27 +34,46 @@ public:
dir: 'PERSISTENCE_DIR'
services:
bitbucketServer:
authorizedOrigins: 'BITBUCKET_SERVER_ORIGINS'
drone:
authorizedOrigins: 'DRONE_ORIGINS'
github:
baseUri: 'GITHUB_URL'
debug:
enabled: 'GITHUB_DEBUG_ENABLED'
intervalSeconds: 'GITHUB_DEBUG_INTERVAL_SECONDS'
jenkins:
authorizedOrigins: 'JENKINS_ORIGINS'
jira:
authorizedOrigins: 'JIRA_ORIGINS'
nexus:
authorizedOrigins: 'NEXUS_ORIGINS'
npm:
authorizedOrigins: 'NPM_ORIGINS'
sonar:
authorizedOrigins: 'SONAR_ORIGINS'
teamcity:
authorizedOrigins: 'TEAMCITY_ORIGINS'
trace: 'TRACE_SERVICES'
profiling:
makeBadge: 'PROFILE_MAKE_BADGE'
cacheHeaders:
defaultCacheLengthSeconds: 'BADGE_MAX_AGE_SECONDS'
rateLimit: 'RATE_LIMIT'
fetchLimit: 'FETCH_LIMIT'
integrations:
default:
fetchLimit: 'FETCH_LIMIT'
private:
azure_devops_token: 'AZURE_DEVOPS_TOKEN'
bintray_user: 'BINTRAY_USER'
bintray_apikey: 'BINTRAY_API_KEY'
bitbucket_username: 'BITBUCKET_USER'
bitbucket_password: 'BITBUCKET_PASS'
bitbucket_server_username: 'BITBUCKET_SERVER_USER'
bitbucket_server_password: 'BITBUCKET_SERVER_PASS'
drone_token: 'DRONE_TOKEN'
gh_client_id: 'GH_CLIENT_ID'
gh_client_secret: 'GH_CLIENT_SECRET'
@@ -63,6 +91,10 @@ private:
sl_insight_userUuid: 'SL_INSIGHT_USER_UUID'
sl_insight_apiToken: 'SL_INSIGHT_API_TOKEN'
sonarqube_token: 'SONARQUBE_TOKEN'
teamcity_user: 'TEAMCITY_USER'
teamcity_pass: 'TEAMCITY_PASS'
twitch_client_id: 'TWITCH_CLIENT_ID'
twitch_client_secret: 'TWITCH_CLIENT_SECRET'
wheelmap_token: 'WHEELMAP_TOKEN'
influx_username: 'INFLUX_USERNAME'
influx_password: 'INFLUX_PASSWORD'

View File

@@ -5,7 +5,11 @@ public:
metrics:
prometheus:
enabled: false
endpointEnabled: false
influx:
enabled: false
timeoutMilliseconds: 1000
intervalSeconds: 15
ssl:
isSecure: false
@@ -23,9 +27,6 @@ public:
intervalSeconds: 200
trace: false
profiling:
makeBadge: false
cacheHeaders:
defaultCacheLengthSeconds: 120
@@ -33,6 +34,17 @@ public:
handleInternalErrors: true
fetchLimit: '10MB'
integrations:
default:
fetchLimit: '10MB'
DynamicJson:
fetchLimit: '2MB'
DynamicXml:
fetchLimit: '128KB'
DynamicYaml:
fetchLimit: '64KB'
private: {}

View File

@@ -1,8 +1,8 @@
private:
bintray_user: ...
bintray_apikey: ...
# These are the keys which are set on the production servers.
gh_client_id: ...
gh_client_secret: ...
redis_url: ...
sentry_dsn: ...
shields_secret: ...
sl_insight_userUuid: ...

View File

@@ -2,6 +2,7 @@ public:
metrics:
prometheus:
enabled: true
endpointEnabled: true
ssl:
isSecure: true

View File

@@ -2,7 +2,7 @@
const { URL } = require('url')
const queryString = require('query-string')
const pathToRegexp = require('path-to-regexp')
const { compile } = require('path-to-regexp')
function badgeUrlFromPath({
baseUrl = '',
@@ -33,9 +33,10 @@ function badgeUrlFromPattern({
format = '',
longCache = false,
}) {
const toPath = pathToRegexp.compile(pattern, {
const toPath = compile(pattern, {
strict: true,
sensitive: true,
encode: encodeURIComponent,
})
const path = toPath(namedParams)

View File

@@ -1,34 +1,68 @@
'use strict'
const { URL } = require('url')
const { InvalidParameter } = require('./errors')
class AuthHelper {
constructor(
{
userKey,
passKey,
authorizedOrigins,
serviceKey,
isRequired = false,
defaultToEmptyStringForUser = false,
},
privateConfig
config
) {
if (!userKey && !passKey) {
throw Error('Expected userKey or passKey to be set')
}
if (!authorizedOrigins && !serviceKey) {
throw Error('Expected authorizedOrigins or serviceKey to be set')
}
this._userKey = userKey
this._passKey = passKey
if (userKey) {
this.user = privateConfig[userKey]
this._user = config.private[userKey]
} else {
this.user = defaultToEmptyStringForUser ? '' : undefined
this._user = defaultToEmptyStringForUser ? '' : undefined
}
this.pass = passKey ? privateConfig[passKey] : undefined
this._pass = passKey ? config.private[passKey] : undefined
this.isRequired = isRequired
if (serviceKey !== undefined && !(serviceKey in config.public.services)) {
// Keep this as its own error, as it's useful to the programmer as they're
// getting auth set up.
throw Error(`Service key ${serviceKey} was missing from config schema`)
}
let requireStrictSsl, requireStrictSslToAuthenticate
if (serviceKey === undefined) {
requireStrictSsl = true
requireStrictSslToAuthenticate = true
} else {
;({
authorizedOrigins,
requireStrictSsl = true,
requireStrictSslToAuthenticate = true,
} = config.public.services[serviceKey])
}
if (!Array.isArray(authorizedOrigins)) {
throw Error('Expected authorizedOrigins to be an array of origins')
}
this._authorizedOrigins = authorizedOrigins
this._requireStrictSsl = requireStrictSsl
this._requireStrictSslToAuthenticate = requireStrictSslToAuthenticate
}
get isConfigured() {
return (
(this._userKey ? Boolean(this.user) : true) &&
(this._passKey ? Boolean(this.pass) : true)
this._authorizedOrigins.length > 0 &&
(this._userKey ? Boolean(this._user) : true) &&
(this._passKey ? Boolean(this._pass) : true)
)
}
@@ -36,20 +70,135 @@ class AuthHelper {
if (this.isRequired) {
return this.isConfigured
} else {
const configIsEmpty = !this.user && !this.pass
const configIsEmpty = !this._user && !this._pass
return this.isConfigured || configIsEmpty
}
}
get basicAuth() {
const { user, pass } = this
static _isInsecureSslRequest({ options = {} }) {
const { strictSSL = true } = options
return strictSSL !== true
}
enforceStrictSsl({ options = {} }) {
if (
this._requireStrictSsl &&
this.constructor._isInsecureSslRequest({ options })
) {
throw new InvalidParameter({ prettyMessage: 'strict ssl is required' })
}
}
shouldAuthenticateRequest({ url, options = {} }) {
let parsed
try {
parsed = new URL(url)
} catch (e) {
throw new InvalidParameter({ prettyMessage: 'invalid url parameter' })
}
const { protocol, host } = parsed
const origin = `${protocol}//${host}`
const originViolation = !this._authorizedOrigins.includes(origin)
const strictSslCheckViolation =
this._requireStrictSslToAuthenticate &&
this.constructor._isInsecureSslRequest({ options })
return this.isConfigured && !originViolation && !strictSslCheckViolation
}
get _basicAuth() {
const { _user: user, _pass: pass } = this
return this.isConfigured ? { user, pass } : undefined
}
get bearerAuthHeader() {
const { pass } = this
/*
* Helper function for `withBasicAuth()` and friends.
*/
_withAnyAuth(requestParams, mergeAuthFn) {
this.enforceStrictSsl(requestParams)
const shouldAuthenticate = this.shouldAuthenticateRequest(requestParams)
if (this.isRequired && !shouldAuthenticate) {
throw new InvalidParameter({
prettyMessage: 'requested origin not authorized',
})
}
return shouldAuthenticate ? mergeAuthFn(requestParams) : requestParams
}
static _mergeAuth(requestParams, auth) {
const { options, ...rest } = requestParams
return {
options: {
auth,
...options,
},
...rest,
}
}
withBasicAuth(requestParams) {
return this._withAnyAuth(requestParams, requestParams =>
this.constructor._mergeAuth(requestParams, this._basicAuth)
)
}
get _bearerAuthHeader() {
const { _pass: pass } = this
return this.isConfigured ? { Authorization: `Bearer ${pass}` } : undefined
}
static _mergeHeaders(requestParams, headers) {
const {
options: { headers: existingHeaders, ...restOptions } = {},
...rest
} = requestParams
return {
options: {
headers: {
...existingHeaders,
...headers,
},
...restOptions,
},
...rest,
}
}
withBearerAuthHeader(requestParams) {
return this._withAnyAuth(requestParams, requestParams =>
this.constructor._mergeHeaders(requestParams, this._bearerAuthHeader)
)
}
static _mergeQueryParams(requestParams, query) {
const {
options: { qs: existingQuery, ...restOptions } = {},
...rest
} = requestParams
return {
options: {
qs: {
...existingQuery,
...query,
},
...restOptions,
},
...rest,
}
}
withQueryStringAuth({ userKey, passKey }, requestParams) {
return this._withAnyAuth(requestParams, requestParams =>
this.constructor._mergeQueryParams(requestParams, {
...(userKey ? { [userKey]: this._user } : undefined),
...(passKey ? { [passKey]: this._pass } : undefined),
})
)
}
}
module.exports = { AuthHelper }

View File

@@ -3,18 +3,42 @@
const { expect } = require('chai')
const { test, given, forCases } = require('sazerac')
const { AuthHelper } = require('./auth-helper')
const { InvalidParameter } = require('./errors')
describe('AuthHelper', function() {
it('throws without userKey or passKey', function() {
expect(() => new AuthHelper({}, {})).to.throw(
Error,
'Expected userKey or passKey to be set'
)
describe('constructor checks', function() {
it('throws without userKey or passKey', function() {
expect(() => new AuthHelper({}, {})).to.throw(
Error,
'Expected userKey or passKey to be set'
)
})
it('throws without serviceKey or authorizedOrigins', function() {
expect(
() => new AuthHelper({ userKey: 'myci_user', passKey: 'myci_pass' }, {})
).to.throw(Error, 'Expected authorizedOrigins or serviceKey to be set')
})
it('throws when authorizedOrigins is not an array', function() {
expect(
() =>
new AuthHelper(
{
userKey: 'myci_user',
passKey: 'myci_pass',
authorizedOrigins: true,
},
{ private: {} }
)
).to.throw(Error, 'Expected authorizedOrigins to be an array of origins')
})
})
describe('isValid', function() {
function validate(config, privateConfig) {
return new AuthHelper(config, privateConfig).isValid
return new AuthHelper(
{ authorizedOrigins: ['https://example.test'], ...config },
{ private: privateConfig }
).isValid
}
test(validate, () => {
forCases([
@@ -65,9 +89,12 @@ describe('AuthHelper', function() {
})
})
describe('basicAuth', function() {
describe('_basicAuth', function() {
function validate(config, privateConfig) {
return new AuthHelper(config, privateConfig).basicAuth
return new AuthHelper(
{ authorizedOrigins: ['https://example.test'], ...config },
{ private: privateConfig }
)._basicAuth
}
test(validate, () => {
forCases([
@@ -100,4 +127,250 @@ describe('AuthHelper', function() {
})
})
})
describe('_isInsecureSslRequest', function() {
test(AuthHelper._isInsecureSslRequest, () => {
forCases([
given({ url: 'http://example.test' }),
given({ url: 'http://example.test', options: {} }),
given({ url: 'http://example.test', options: { strictSSL: true } }),
given({
url: 'http://example.test',
options: { strictSSL: undefined },
}),
]).expect(false)
given({
url: 'http://example.test',
options: { strictSSL: false },
}).expect(true)
})
})
describe('enforceStrictSsl', function() {
const authConfig = {
userKey: 'myci_user',
passKey: 'myci_pass',
serviceKey: 'myci',
}
context('by default', function() {
const authHelper = new AuthHelper(authConfig, {
public: {
services: { myci: { authorizedOrigins: ['http://myci.test'] } },
},
private: { myci_user: 'admin', myci_pass: 'abc123' },
})
it('does not throw for secure requests', function() {
expect(() => authHelper.enforceStrictSsl({})).not.to.throw()
})
it('throws for insecure requests', function() {
expect(() =>
authHelper.enforceStrictSsl({ options: { strictSSL: false } })
).to.throw(InvalidParameter)
})
})
context("when strict SSL isn't required", function() {
const authHelper = new AuthHelper(authConfig, {
public: {
services: {
myci: {
authorizedOrigins: ['http://myci.test'],
requireStrictSsl: false,
},
},
},
private: { myci_user: 'admin', myci_pass: 'abc123' },
})
it('does not throw for secure requests', function() {
expect(() => authHelper.enforceStrictSsl({})).not.to.throw()
})
it('does not throw for insecure requests', function() {
expect(() =>
authHelper.enforceStrictSsl({ options: { strictSSL: false } })
).not.to.throw()
})
})
})
describe('shouldAuthenticateRequest', function() {
const authConfig = {
userKey: 'myci_user',
passKey: 'myci_pass',
serviceKey: 'myci',
}
context('by default', function() {
const authHelper = new AuthHelper(authConfig, {
public: {
services: {
myci: {
authorizedOrigins: ['https://myci.test'],
},
},
},
private: { myci_user: 'admin', myci_pass: 'abc123' },
})
const shouldAuthenticateRequest = requestOptions =>
authHelper.shouldAuthenticateRequest(requestOptions)
describe('a secure request to an authorized origin', function() {
test(shouldAuthenticateRequest, () => {
given({ url: 'https://myci.test/api' }).expect(true)
})
})
describe('an insecure request', function() {
test(shouldAuthenticateRequest, () => {
given({
url: 'https://myci.test/api',
options: { strictSSL: false },
}).expect(false)
})
})
describe('a request to an unauthorized origin', function() {
test(shouldAuthenticateRequest, () => {
forCases([
given({ url: 'http://myci.test/api' }),
given({ url: 'https://myci.test:12345/api' }),
given({ url: 'https://other.test/api' }),
]).expect(false)
})
})
})
context('when auth over insecure SSL is allowed', function() {
const authHelper = new AuthHelper(authConfig, {
public: {
services: {
myci: {
authorizedOrigins: ['https://myci.test'],
requireStrictSslToAuthenticate: false,
},
},
},
private: { myci_user: 'admin', myci_pass: 'abc123' },
})
const shouldAuthenticateRequest = requestOptions =>
authHelper.shouldAuthenticateRequest(requestOptions)
describe('a secure request to an authorized origin', function() {
test(shouldAuthenticateRequest, () => {
given({ url: 'https://myci.test' }).expect(true)
})
})
describe('an insecure request', function() {
test(shouldAuthenticateRequest, () => {
given({
url: 'https://myci.test',
options: { strictSSL: false },
}).expect(true)
})
})
describe('a request to an unauthorized origin', function() {
test(shouldAuthenticateRequest, () => {
forCases([
given({ url: 'http://myci.test' }),
given({ url: 'https://myci.test:12345/' }),
given({ url: 'https://other.test' }),
]).expect(false)
})
})
})
context('when the service is partly configured', function() {
const authHelper = new AuthHelper(authConfig, {
public: {
services: {
myci: {
authorizedOrigins: ['https://myci.test'],
requireStrictSslToAuthenticate: false,
},
},
},
private: { myci_user: 'admin' },
})
const shouldAuthenticateRequest = requestOptions =>
authHelper.shouldAuthenticateRequest(requestOptions)
describe('a secure request to an authorized origin', function() {
test(shouldAuthenticateRequest, () => {
given({ url: 'https://myci.test' }).expect(false)
})
})
})
})
describe('withBasicAuth', function() {
const authHelper = new AuthHelper(
{
userKey: 'myci_user',
passKey: 'myci_pass',
serviceKey: 'myci',
},
{
public: {
services: {
myci: {
authorizedOrigins: ['https://myci.test'],
},
},
},
private: { myci_user: 'admin', myci_pass: 'abc123' },
}
)
const withBasicAuth = requestOptions =>
authHelper.withBasicAuth(requestOptions)
describe('authenticates a secure request to an authorized origin', function() {
test(withBasicAuth, () => {
given({
url: 'https://myci.test/api',
}).expect({
url: 'https://myci.test/api',
options: {
auth: { user: 'admin', pass: 'abc123' },
},
})
given({
url: 'https://myci.test/api',
options: {
headers: { Accept: 'application/json' },
},
}).expect({
url: 'https://myci.test/api',
options: {
headers: { Accept: 'application/json' },
auth: { user: 'admin', pass: 'abc123' },
},
})
})
})
describe('does not authenticate a request to an unauthorized origin', function() {
test(withBasicAuth, () => {
given({
url: 'https://other.test/api',
}).expect({
url: 'https://other.test/api',
})
given({
url: 'https://other.test/api',
options: {
headers: { Accept: 'application/json' },
},
}).expect({
url: 'https://other.test/api',
options: {
headers: { Accept: 'application/json' },
},
})
})
})
describe('throws on an insecure SSL request', function() {
expect(() =>
withBasicAuth({
url: 'https://myci.test/api',
options: { strictSSL: false },
})
).to.throw(InvalidParameter)
})
})
})

View File

@@ -49,7 +49,9 @@ describe('BaseJsonService', function() {
expect(sendAndCacheRequest).to.have.been.calledOnceWith(
'http://example.com/foo.json',
{ headers: { Accept: 'application/json' } }
{
headers: { Accept: 'application/json' },
}
)
})

View File

@@ -13,9 +13,6 @@ const { prepareRoute, namedParamsForMatch } = require('./route')
module.exports = class BaseStaticService extends BaseService {
static register({ camp, metricInstance }, serviceConfig) {
const {
profiling: { makeBadge: shouldProfileMakeBadge },
} = serviceConfig
const { regex, captureNames } = prepareRoute(this.route)
const metricHelper = MetricHelper.create({
@@ -52,16 +49,9 @@ module.exports = class BaseStaticService extends BaseService {
const format = (match.slice(-1)[0] || '.svg').replace(/^\./, '')
badgeData.format = format
if (shouldProfileMakeBadge) {
console.time('makeBadge total')
}
const svg = makeBadge(badgeData)
if (shouldProfileMakeBadge) {
console.timeEnd('makeBadge total')
}
setCacheHeadersForStaticResource(ask.res)
const svg = makeBadge(badgeData)
makeSend(format, ask.res, end)(svg)
metricHandle.noteResponseSent()

View File

@@ -68,7 +68,9 @@ describe('BaseSvgScrapingService', function() {
expect(sendAndCacheRequest).to.have.been.calledOnceWith(
'http://example.com/foo.svg',
{ headers: { Accept: 'image/svg+xml' } }
{
headers: { Accept: 'image/svg+xml' },
}
)
})

View File

@@ -49,7 +49,9 @@ describe('BaseXmlService', function() {
expect(sendAndCacheRequest).to.have.been.calledOnceWith(
'http://example.com/foo.xml',
{ headers: { Accept: 'application/xml, text/xml' } }
{
headers: { Accept: 'application/xml, text/xml' },
}
)
})

View File

@@ -3,12 +3,13 @@
* @module
*/
const bytes = require('bytes')
// See available emoji at http://emoji.muan.co/
const emojic = require('emojic')
const Joi = require('@hapi/joi')
const log = require('../server/log')
const { AuthHelper } = require('./auth-helper')
const { MetricHelper } = require('./metric-helper')
const { MetricHelper, MetricNames } = require('./metric-helper')
const { assertValidCategory } = require('./categories')
const checkErrorResponse = require('./check-error-response')
const coalesceBadge = require('./coalesce-badge')
@@ -214,20 +215,43 @@ class BaseService {
return result
}
constructor({ sendAndCacheRequest, authHelper }, { handleInternalErrors }) {
constructor(
{ sendAndCacheRequest, authHelper, metricHelper },
{ handleInternalErrors }
) {
this._requestFetcher = sendAndCacheRequest
this.authHelper = authHelper
this._handleInternalErrors = handleInternalErrors
this._metricHelper = metricHelper
}
async _request({ url, options = {}, errorMessages = {} }) {
const logTrace = (...args) => trace.logTrace('fetch', ...args)
logTrace(emojic.bowAndArrow, 'Request', url, '\n', options)
const { res, buffer } = await this._requestFetcher(url, options)
await this._meterResponse(res, buffer)
logTrace(emojic.dart, 'Response status code', res.statusCode)
return checkErrorResponse(errorMessages)({ buffer, res })
}
static get enabledMetrics() {
return []
}
static isMetricEnabled(metricName) {
return this.enabledMetrics.includes(metricName)
}
async _meterResponse(res, buffer) {
if (
this._metricHelper &&
this.constructor.isMetricEnabled(MetricNames.SERVICE_RESPONSE_SIZE) &&
res.statusCode === 200
) {
this._metricHelper.noteServiceResponseSize(buffer.length)
}
}
static _validate(
data,
schema,
@@ -336,9 +360,7 @@ class BaseService {
// Like the service instance, the auth helper could be reused for each request.
// However, moving its instantiation to `register()` makes `invoke()` harder
// to test.
const authHelper = this.auth
? new AuthHelper(this.auth, config.private)
: undefined
const authHelper = this.auth ? new AuthHelper(this.auth, config) : undefined
const serviceInstance = new this({ ...context, authHelper }, config)
@@ -404,7 +426,8 @@ class BaseService {
{ camp, handleRequest, githubApiProvider, metricInstance },
serviceConfig
) {
const { cacheHeaders: cacheHeaderConfig, fetchLimitBytes } = serviceConfig
const { cacheHeaders: cacheHeaderConfig, fetchLimit } = serviceConfig
const fetchLimitBytes = bytes.parse(fetchLimit)
const { regex, captureNames } = prepareRoute(this.route)
const queryParams = getQueryParamNames(this.route)
@@ -426,6 +449,7 @@ class BaseService {
sendAndCacheRequest: request.asPromise,
sendAndCacheRequestWithCallbacks: request,
githubApiProvider,
metricHelper,
},
serviceConfig,
namedParams,

View File

@@ -1,8 +1,11 @@
'use strict'
const Joi = require('@hapi/joi')
const { expect } = require('chai')
const chai = require('chai')
const { expect } = chai
const sinon = require('sinon')
const prometheus = require('prom-client')
const PrometheusMetrics = require('../server/prometheus-metrics')
const trace = require('./trace')
const {
NotFound,
@@ -12,8 +15,9 @@ const {
Deprecated,
} = require('./errors')
const BaseService = require('./base')
const { MetricHelper, MetricNames } = require('./metric-helper')
require('../register-chai-plugins.spec')
chai.use(require('chai-as-promised'))
const queryParamSchema = Joi.object({
queryParamA: Joi.string(),
@@ -63,8 +67,20 @@ class DummyService extends BaseService {
}
}
class DummyServiceWithServiceResponseSizeMetricEnabled extends DummyService {
static get enabledMetrics() {
return [MetricNames.SERVICE_RESPONSE_SIZE]
}
}
describe('BaseService', function() {
const defaultConfig = { handleInternalErrors: false, private: {} }
const defaultConfig = {
public: {
handleInternalErrors: false,
services: {},
},
private: {},
}
it('Invokes the handler as expected', async function() {
expect(
@@ -97,17 +113,14 @@ describe('BaseService', function() {
describe('Required overrides', function() {
it('Should throw if render() is not overridden', function() {
expect(() => BaseService.render()).to.throw(
'render() function not implemented for BaseService'
/^render\(\) function not implemented for BaseService$/
)
})
it('Should throw if route is not overridden', async function() {
try {
await BaseService.invoke({}, {}, {})
expect.fail('Expected to throw')
} catch (e) {
expect(e.message).to.equal('Route not defined for BaseService')
}
it('Should throw if route is not overridden', function() {
return expect(BaseService.invoke({}, {}, {})).to.be.rejectedWith(
/^Route not defined for BaseService$/
)
})
class WithRoute extends BaseService {
@@ -115,18 +128,15 @@ describe('BaseService', function() {
return {}
}
}
it('Should throw if handle() is not overridden', async function() {
try {
await WithRoute.invoke({}, {}, {})
expect.fail('Expected to throw')
} catch (e) {
expect(e.message).to.equal('Handler not implemented for WithRoute')
}
it('Should throw if handle() is not overridden', function() {
return expect(WithRoute.invoke({}, {}, {})).to.be.rejectedWith(
/^Handler not implemented for WithRoute$/
)
})
it('Should throw if category is not overridden', function() {
expect(() => BaseService.category).to.throw(
'Category not set for BaseService'
/^Category not set for BaseService$/
)
})
})
@@ -427,16 +437,15 @@ describe('BaseService', function() {
requiredString: Joi.string().required(),
}).required()
it('throws error for invalid responses', async function() {
try {
it('throws error for invalid responses', function() {
expect(() =>
DummyService._validate(
{ requiredString: ['this', "shouldn't", 'work'] },
dummySchema
)
expect.fail('Expected to throw')
} catch (e) {
expect(e).to.be.an.instanceof(InvalidResponse)
}
)
.to.throw()
.instanceof(InvalidResponse)
})
})
@@ -503,18 +512,72 @@ describe('BaseService', function() {
})
})
describe('Metrics', function() {
let register
beforeEach(function() {
register = new prometheus.Registry()
})
const url = 'some-url'
it('service response size metric is optional', async function() {
const metricHelper = MetricHelper.create({
metricInstance: new PrometheusMetrics({ register }),
ServiceClass: DummyServiceWithServiceResponseSizeMetricEnabled,
})
const sendAndCacheRequest = async () => ({
buffer: 'x'.repeat(65536 + 1),
res: { statusCode: 200 },
})
const serviceInstance = new DummyServiceWithServiceResponseSizeMetricEnabled(
{ sendAndCacheRequest, metricHelper },
defaultConfig
)
await serviceInstance._request({ url })
expect(register.getSingleMetricAsString('service_response_bytes'))
.to.contain(
'service_response_bytes_bucket{le="65536",category="other",family="undefined",service="dummy_service_with_service_response_size_metric_enabled"} 0\n'
)
.and.to.contain(
'service_response_bytes_bucket{le="131072",category="other",family="undefined",service="dummy_service_with_service_response_size_metric_enabled"} 1\n'
)
})
it('service response size metric is disabled by default', async function() {
const metricHelper = MetricHelper.create({
metricInstance: new PrometheusMetrics({ register }),
ServiceClass: DummyService,
})
const sendAndCacheRequest = async () => ({
buffer: 'x',
res: { statusCode: 200 },
})
const serviceInstance = new DummyService(
{ sendAndCacheRequest, metricHelper },
defaultConfig
)
await serviceInstance._request({ url })
expect(
register.getSingleMetricAsString('service_response_bytes')
).to.not.contain('service_response_bytes_bucket')
})
})
describe('auth', function() {
class AuthService extends DummyService {
static get auth() {
return {
passKey: 'myci_pass',
serviceKey: 'myci',
isRequired: true,
}
}
async handle() {
return {
message: `The CI password is ${this.authHelper.pass}`,
message: `The CI password is ${this.authHelper._pass}`,
}
}
}
@@ -523,7 +586,13 @@ describe('BaseService', function() {
expect(
await AuthService.invoke(
{},
{ defaultConfig, private: { myci_pass: 'abc123' } },
{
public: {
...defaultConfig.public,
services: { myci: { authorizedOrigins: ['https://myci.test'] } },
},
private: { myci_pass: 'abc123' },
},
{ namedParamA: 'bar.bar.bar' }
)
).to.deep.equal({ message: 'The CI password is abc123' })
@@ -531,9 +600,19 @@ describe('BaseService', function() {
it('when auth is not configured properly, invoke() returns inacessible', async function() {
expect(
await AuthService.invoke({}, defaultConfig, {
namedParamA: 'bar.bar.bar',
})
await AuthService.invoke(
{},
{
public: {
...defaultConfig.public,
services: { myci: { authorizedOrigins: ['https://myci.test'] } },
},
private: {},
},
{
namedParamA: 'bar.bar.bar',
}
)
).to.deep.equal({
color: 'lightgray',
isError: true,

View File

@@ -15,9 +15,9 @@ describe('coalesceBadge', function() {
// This behavior isn't great and we might want to remove it.
it('uses the category as a default label', function() {
expect(coalesceBadge({}, {}, {}, { category: 'cat' }).text).to.deep.equal(
['cat', 'n/a']
)
expect(
coalesceBadge({}, {}, {}, { category: 'cat' }).text
).to.deep.equal(['cat', 'n/a'])
})
it('preserves an empty label', function() {

View File

@@ -14,9 +14,9 @@ describe('coalesce', function() {
given(null, [], {}).expect([])
given(null, undefined, 0, {}).expect(0)
const a = null,
c = 0,
d = 1
const a = null
const c = 0
const d = 1
let b
given(a, b, c, d).expect(0)
})

View File

@@ -56,6 +56,7 @@ class NotFound extends ShieldsRuntimeError {
get name() {
return 'NotFound'
}
get defaultPrettyMessage() {
return defaultNotFoundError
}
@@ -82,6 +83,7 @@ class InvalidResponse extends ShieldsRuntimeError {
get name() {
return 'InvalidResponse'
}
get defaultPrettyMessage() {
return 'invalid'
}
@@ -107,6 +109,7 @@ class Inaccessible extends ShieldsRuntimeError {
get name() {
return 'Inaccessible'
}
get defaultPrettyMessage() {
return 'inaccessible'
}
@@ -131,6 +134,7 @@ class ImproperlyConfigured extends ShieldsRuntimeError {
get name() {
return 'ImproperlyConfigured'
}
get defaultPrettyMessage() {
return 'improperly configured'
}
@@ -156,6 +160,7 @@ class InvalidParameter extends ShieldsRuntimeError {
get name() {
return 'InvalidParameter'
}
get defaultPrettyMessage() {
return 'invalid parameter'
}
@@ -180,6 +185,7 @@ class Deprecated extends ShieldsRuntimeError {
get name() {
return 'Deprecated'
}
get defaultPrettyMessage() {
return 'no longer available'
}

View File

@@ -1,7 +1,7 @@
'use strict'
const Joi = require('@hapi/joi')
const pathToRegexp = require('path-to-regexp')
const { pathToRegexp, compile } = require('path-to-regexp')
const categories = require('../../services/categories')
const coalesceBadge = require('./coalesce-badge')
const { makeFullUrl } = require('./route')
@@ -59,7 +59,9 @@ function validateExample(example, index, ServiceClass) {
// Make sure we can build the full URL using these patterns.
try {
pathToRegexp.compile(pattern || ServiceClass.route.pattern)(namedParams)
compile(pattern || ServiceClass.route.pattern, {
encode: encodeURIComponent,
})(namedParams)
} catch (e) {
throw Error(
`In example for ${
@@ -69,7 +71,10 @@ function validateExample(example, index, ServiceClass) {
}
// Make sure there are no extra keys.
let keys = []
pathToRegexp(pattern || ServiceClass.route.pattern, keys)
pathToRegexp(pattern || ServiceClass.route.pattern, keys, {
strict: true,
sensitive: true,
})
keys = keys.map(({ name }) => name)
const extraKeys = Object.keys(namedParams).filter(k => !keys.includes(k))
if (extraKeys.length) {

View File

@@ -13,6 +13,8 @@ const { makeSend } = require('./legacy-result-sender')
const LruCache = require('./lru-cache')
const coalesceBadge = require('./coalesce-badge')
const userAgent = 'Shields.io/2003a'
// We avoid calling the vendor's server for computation of the information in a
// number of badges.
const minAccuracy = 0.75
@@ -204,8 +206,7 @@ function handleRequest(cacheHeaderConfig, handlerOptions) {
options = uri
}
options.headers = options.headers || {}
options.headers['User-Agent'] =
options.headers['User-Agent'] || 'Shields.io'
options.headers['User-Agent'] = userAgent
let bufferLength = 0
const r = request(options, (err, res, body) => {
@@ -294,4 +295,5 @@ module.exports = {
clearRequestCache,
// Expose for testing.
_requestCache: requestCache,
userAgent,
}

View File

@@ -82,9 +82,12 @@ function assertNamesUnique(names, { message }) {
function checkNames() {
const services = loadServiceClasses()
assertNamesUnique(services.map(({ name }) => name), {
message: 'Duplicate service names found',
})
assertNamesUnique(
services.map(({ name }) => name),
{
message: 'Duplicate service names found',
}
)
}
function collectDefinitions() {

View File

@@ -11,9 +11,17 @@ class MetricHelper {
serviceFamily,
name,
})
this.serviceResponseSizeHistogram = metricInstance.createServiceResponseSizeHistogram(
{
category,
serviceFamily,
name,
}
)
} else {
this.metricInstance = undefined
this.serviceRequestCounter = undefined
this.serviceResponseSizeHistogram = undefined
}
}
@@ -40,6 +48,16 @@ class MetricHelper {
},
}
}
noteServiceResponseSize(size) {
if (this.serviceResponseSizeHistogram) {
return this.serviceResponseSizeHistogram.observe(size)
}
}
}
module.exports = { MetricHelper }
const MetricNames = Object.freeze({
SERVICE_RESPONSE_SIZE: Symbol('service-response-size'),
})
module.exports = { MetricHelper, MetricNames }

View File

@@ -2,7 +2,7 @@
const escapeStringRegexp = require('escape-string-regexp')
const Joi = require('@hapi/joi')
const pathToRegexp = require('path-to-regexp')
const { pathToRegexp } = require('path-to-regexp')
function makeFullUrl(base, partialUrl) {
return `/${[base, partialUrl].filter(Boolean).join('/')}`

View File

@@ -21,8 +21,8 @@ function validate(
}
const options = { abortEarly: false }
if (allowAndStripUnknownKeys) {
options['allowUnknown'] = true
options['stripUnknown'] = true
options.allowUnknown = true
options.stripUnknown = true
}
const { error, value } = schema.validate(data, options)
if (error) {

38
core/server/config.js Normal file
View File

@@ -0,0 +1,38 @@
'use strict'
const deepmerge = require('deepmerge')
class RedundantCustomConfiguration extends Error {
constructor(message) {
super(message)
this.name = 'RedundantCustomConfiguration'
}
}
function merge(_default, custom) {
// Overwrites the existing array values completely rather than concatenating them
// recipe from https://github.com/TehShrike/deepmerge#arraymerge
const overwriteMerge = (destinationArray, sourceArray, options) => sourceArray
return deepmerge(_default, custom, {
arrayMerge: overwriteMerge,
})
}
function checkCustomIntegrationConfiguration(config, serviceClasses) {
const serviceNames = new Set(
serviceClasses.map(serviceClass => serviceClass.name)
)
const redundantConfigurations = Object.keys(config.public.integrations)
.filter(configName => configName !== 'default')
.filter(configName => !serviceNames.has(configName))
if (redundantConfigurations.length) {
throw new RedundantCustomConfiguration(
`Custom configurations found without a corresponding service: ${redundantConfigurations}`
)
}
}
module.exports = {
RedundantCustomConfiguration,
merge,
checkCustomIntegrationConfiguration,
}

View File

@@ -0,0 +1,61 @@
'use strict'
const { test, given } = require('sazerac')
const { expect } = require('chai')
const {
RedundantCustomConfiguration,
merge,
checkCustomIntegrationConfiguration,
} = require('./config')
describe('configuration', function() {
test(merge, function() {
given({ a: 2 }, {})
.describe('copies the default value')
.expect({ a: 2 })
given({ a: 2 }, { a: 3 })
.describe('overrides a primitive value')
.expect({ a: 3 })
given({ a: { a1: 1, a2: 2 } }, { a: { a1: 2 } })
.describe('merges objects')
.expect({ a: { a1: 2, a2: 2 } })
given({ a: { a1: 1, a2: 2 } }, { a: 3 })
.describe('overrides an object with a primitive')
.expect({ a: 3 })
given({ a: { a1: 1, a2: 2 } }, { a: {} })
.describe('does not override an object with an empty object')
.expect({ a: { a1: 1, a2: 2 } })
given({ a: [2, 3, 4] }, { a: [5, 6] })
.describe('overrides array')
.expect({ a: [5, 6] })
})
describe('checkCustomIntegrationConfiguration function', function() {
it('accepts the default configuration', function() {
const config = { public: { integrations: { default: {} } } }
const serviceClasses = [{ name: 'SomeService' }]
expect(() =>
checkCustomIntegrationConfiguration(config, serviceClasses)
).not.throw()
})
it('accepts a configuration for an existing service', function() {
const config = { public: { integrations: { SomeService: {} } } }
const serviceClasses = [{ name: 'SomeService' }]
expect(() =>
checkCustomIntegrationConfiguration(config, serviceClasses)
).not.throw()
})
it('throws an error if a custom config does not have a corresponding service', function() {
const config = { public: { integrations: { UnknownService: {} } } }
const serviceClasses = [{ name: 'KnownService' }]
expect(() =>
checkCustomIntegrationConfiguration(config, serviceClasses)
).to.throw(RedundantCustomConfiguration)
})
})
})

View File

@@ -1,21 +1,16 @@
'use strict'
const merge = require('deepmerge')
const config = require('config').util.toObject()
const portfinder = require('portfinder')
const Server = require('./server')
function createTestServer({ port }) {
const serverConfig = {
...config,
public: {
...config.public,
bind: {
...config.public.bind,
port,
},
},
async function createTestServer(customConfig = {}) {
const mergedConfig = merge(config, customConfig)
if (!mergedConfig.public.bind.port) {
mergedConfig.public.bind.port = await portfinder.getPortPromise()
}
return new Server(serverConfig)
return new Server(mergedConfig)
}
module.exports = {

View File

@@ -0,0 +1,86 @@
'use strict'
const os = require('os')
const { promisify } = require('util')
const { post } = require('request')
const postAsync = promisify(post)
const generateInstanceId = require('./instance-id-generator')
const { promClientJsonToInfluxV2 } = require('./metrics/format-converters')
const log = require('./log')
module.exports = class InfluxMetrics {
constructor(metricInstance, config) {
this._metricInstance = metricInstance
this._config = config
this._instanceId = this.getInstanceId()
}
async sendMetrics() {
const auth = {
user: this._config.username,
pass: this._config.password,
}
const request = {
uri: this._config.url,
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: this.metrics(),
timeout: this._config.timeoutMillseconds,
auth,
}
let response
try {
response = await postAsync(request)
} catch (error) {
log.error(
new Error(`Cannot push metrics. Cause: ${error.name}: ${error.message}`)
)
}
if (response && response.statusCode >= 300) {
log.error(
new Error(
`Cannot push metrics. ${response.request.href} responded with status code ${response.statusCode}`
)
)
}
}
startPushingMetrics() {
this._intervalId = setInterval(
() => this.sendMetrics(),
this._config.intervalSeconds * 1000
)
}
metrics() {
return promClientJsonToInfluxV2(this._metricInstance.metrics(), {
env: this._config.envLabel,
application: 'shields',
instance: this._instanceId,
})
}
getInstanceId() {
const {
hostnameAliases = {},
instanceIdFrom,
instanceIdEnvVarName,
} = this._config
let instance
if (instanceIdFrom === 'env-var') {
instance = process.env[instanceIdEnvVarName]
} else if (instanceIdFrom === 'hostname') {
const hostname = os.hostname()
instance = hostnameAliases[hostname] || hostname
} else if (instanceIdFrom === 'random') {
instance = generateInstanceId()
}
return instance
}
stopPushingMetrics() {
if (this._intervalId) {
clearInterval(this._intervalId)
this._intervalId = undefined
}
}
}

View File

@@ -0,0 +1,177 @@
'use strict'
const os = require('os')
const nock = require('nock')
const sinon = require('sinon')
const { expect } = require('chai')
const log = require('./log')
const InfluxMetrics = require('./influx-metrics')
require('../register-chai-plugins.spec')
describe('Influx metrics', function() {
const metricInstance = {
metrics() {
return [
{
help: 'counter 1 help',
name: 'counter1',
type: 'counter',
values: [{ value: 11, labels: {} }],
aggregator: 'sum',
},
]
},
}
describe('"metrics" function', function() {
let osHostnameStub
afterEach(function() {
nock.enableNetConnect()
delete process.env.INSTANCE_ID
if (osHostnameStub) {
osHostnameStub.restore()
}
})
it('should use an environment variable value as an instance label', async function() {
process.env.INSTANCE_ID = 'instance3'
const influxMetrics = new InfluxMetrics(metricInstance, {
instanceIdFrom: 'env-var',
instanceIdEnvVarName: 'INSTANCE_ID',
})
expect(influxMetrics.metrics()).to.contain('instance=instance3')
})
it('should use a hostname as an instance label', async function() {
osHostnameStub = sinon.stub(os, 'hostname').returns('test-hostname')
const customConfig = {
instanceIdFrom: 'hostname',
}
const influxMetrics = new InfluxMetrics(metricInstance, customConfig)
expect(influxMetrics.metrics()).to.be.contain('instance=test-hostname')
})
it('should use a random string as an instance label', async function() {
const customConfig = {
instanceIdFrom: 'random',
}
const influxMetrics = new InfluxMetrics(metricInstance, customConfig)
expect(influxMetrics.metrics()).to.be.match(/instance=\w+ /)
})
it('should use a hostname alias as an instance label', async function() {
osHostnameStub = sinon.stub(os, 'hostname').returns('test-hostname')
const customConfig = {
instanceIdFrom: 'hostname',
hostnameAliases: { 'test-hostname': 'test-hostname-alias' },
}
const influxMetrics = new InfluxMetrics(metricInstance, customConfig)
expect(influxMetrics.metrics()).to.be.contain(
'instance=test-hostname-alias'
)
})
})
describe('startPushingMetrics', function() {
let influxMetrics, clock
beforeEach(function() {
clock = sinon.useFakeTimers()
})
afterEach(function() {
influxMetrics.stopPushingMetrics()
nock.cleanAll()
nock.enableNetConnect()
delete process.env.INSTANCE_ID
clock.restore()
})
it('should send metrics', async function() {
const scope = nock('http://shields-metrics.io/', {
reqheaders: {
'Content-Type': 'application/x-www-form-urlencoded',
},
})
.persist()
.post(
'/metrics',
'prometheus,application=shields,env=test-env,instance=instance2 counter1=11'
)
.basicAuth({ user: 'metrics-username', pass: 'metrics-password' })
.reply(200)
process.env.INSTANCE_ID = 'instance2'
influxMetrics = new InfluxMetrics(metricInstance, {
url: 'http://shields-metrics.io/metrics',
timeoutMillseconds: 100,
intervalSeconds: 0.001,
username: 'metrics-username',
password: 'metrics-password',
instanceIdFrom: 'env-var',
instanceIdEnvVarName: 'INSTANCE_ID',
envLabel: 'test-env',
})
influxMetrics.startPushingMetrics()
await clock.tickAsync(10)
expect(scope.isDone()).to.be.equal(
true,
`pending mocks: ${scope.pendingMocks()}`
)
})
})
describe('sendMetrics', function() {
beforeEach(function() {
sinon.spy(log, 'error')
})
afterEach(function() {
log.error.restore()
nock.cleanAll()
nock.enableNetConnect()
})
const influxMetrics = new InfluxMetrics(metricInstance, {
url: 'http://shields-metrics.io/metrics',
timeoutMillseconds: 50,
intervalSeconds: 0,
username: 'metrics-username',
password: 'metrics-password',
})
it('should log errors', async function() {
nock.disableNetConnect()
await influxMetrics.sendMetrics()
expect(log.error).to.be.calledWith(
sinon.match
.instanceOf(Error)
.and(
sinon.match.has(
'message',
'Cannot push metrics. Cause: NetConnectNotAllowedError: Nock: Disallowed net connect for "shields-metrics.io:80/metrics"'
)
)
)
})
it('should log error responses', async function() {
nock('http://shields-metrics.io/')
.persist()
.post('/metrics')
.reply(400)
await influxMetrics.sendMetrics()
expect(log.error).to.be.calledWith(
sinon.match
.instanceOf(Error)
.and(
sinon.match.has(
'message',
'Cannot push metrics. http://shields-metrics.io/metrics responded with status code 400'
)
)
)
})
})
})

View File

@@ -0,0 +1,10 @@
'use strict'
function generateInstanceId() {
// from https://gist.github.com/gordonbrander/2230317
return Math.random()
.toString(36)
.substr(2, 9)
}
module.exports = generateInstanceId

View File

@@ -0,0 +1,27 @@
'use strict'
const groupBy = require('lodash.groupby')
function promClientJsonToInfluxV2(metrics, extraLabels = {}) {
// TODO Replace with Array.prototype.flatMap() after migrating to Node.js >= 11
const flatMap = (f, arr) => arr.reduce((acc, x) => acc.concat(f(x)), [])
return flatMap(metric => {
const valuesByLabels = groupBy(metric.values, value =>
JSON.stringify(Object.entries(value.labels).sort())
)
return Object.values(valuesByLabels).map(metricsWithSameLabel => {
const labels = Object.entries(metricsWithSameLabel[0].labels)
.concat(Object.entries(extraLabels))
.sort((a, b) => a[0].localeCompare(b[0]))
.map(labelEntry => `${labelEntry[0]}=${labelEntry[1]}`)
.join(',')
const labelsFormatted = labels ? `,${labels}` : ''
const values = metricsWithSameLabel
.sort((a, b) => a.metricName.localeCompare(b.metricName))
.map(value => `${value.metricName || metric.name}=${value.value}`)
.join(',')
return `prometheus${labelsFormatted} ${values}`
})
}, metrics).join('\n')
}
module.exports = { promClientJsonToInfluxV2 }

View File

@@ -0,0 +1,217 @@
'use strict'
const { expect } = require('chai')
const prometheus = require('prom-client')
const { promClientJsonToInfluxV2 } = require('./format-converters')
describe('Metric format converters', function() {
describe('prom-client JSON to InfluxDB line protocol (version 2)', function() {
it('converts a counter', function() {
const json = [
{
help: 'counter 1 help',
name: 'counter1',
type: 'counter',
values: [{ value: 11, labels: {} }],
aggregator: 'sum',
},
]
const influx = promClientJsonToInfluxV2(json)
expect(influx).to.be.equal('prometheus counter1=11')
})
it('converts a counter (from prometheus registry)', function() {
const register = new prometheus.Registry()
const counter = new prometheus.Counter({
name: 'counter1',
help: 'counter 1 help',
registers: [register],
})
counter.inc(11)
const influx = promClientJsonToInfluxV2(register.getMetricsAsJSON())
expect(influx).to.be.equal('prometheus counter1=11')
})
it('converts a gauge', function() {
const json = [
{
help: 'gause 1 help',
name: 'gauge1',
type: 'gauge',
values: [{ value: 20, labels: {} }],
aggregator: 'sum',
},
]
const influx = promClientJsonToInfluxV2(json)
expect(influx).to.be.equal('prometheus gauge1=20')
})
it('converts a gauge (from prometheus registry)', function() {
const register = new prometheus.Registry()
const gauge = new prometheus.Gauge({
name: 'gauge1',
help: 'gauge 1 help',
registers: [register],
})
gauge.inc(20)
const influx = promClientJsonToInfluxV2(register.getMetricsAsJSON())
expect(influx).to.be.equal('prometheus gauge1=20')
})
const sortLines = text =>
text
.split('\n')
.sort()
.join('\n')
it('converts a histogram', function() {
const json = [
{
name: 'histogram1',
help: 'histogram 1 help',
type: 'histogram',
values: [
{ labels: { le: 5 }, value: 1, metricName: 'histogram1_bucket' },
{ labels: { le: 15 }, value: 2, metricName: 'histogram1_bucket' },
{ labels: { le: 50 }, value: 2, metricName: 'histogram1_bucket' },
{
labels: { le: '+Inf' },
value: 3,
metricName: 'histogram1_bucket',
},
{ labels: {}, value: 111, metricName: 'histogram1_sum' },
{ labels: {}, value: 3, metricName: 'histogram1_count' },
],
aggregator: 'sum',
},
]
const influx = promClientJsonToInfluxV2(json)
expect(sortLines(influx)).to.be.equal(
sortLines(`prometheus,le=+Inf histogram1_bucket=3
prometheus,le=50 histogram1_bucket=2
prometheus,le=15 histogram1_bucket=2
prometheus,le=5 histogram1_bucket=1
prometheus histogram1_count=3,histogram1_sum=111`)
)
})
it('converts a histogram (from prometheus registry)', function() {
const register = new prometheus.Registry()
const histogram = new prometheus.Histogram({
name: 'histogram1',
help: 'histogram 1 help',
buckets: [5, 15, 50],
registers: [register],
})
histogram.observe(100)
histogram.observe(10)
histogram.observe(1)
const influx = promClientJsonToInfluxV2(register.getMetricsAsJSON())
expect(sortLines(influx)).to.be.equal(
sortLines(`prometheus,le=+Inf histogram1_bucket=3
prometheus,le=50 histogram1_bucket=2
prometheus,le=15 histogram1_bucket=2
prometheus,le=5 histogram1_bucket=1
prometheus histogram1_count=3,histogram1_sum=111`)
)
})
it('converts a summary', function() {
const json = [
{
name: 'summary1',
help: 'summary 1 help',
type: 'summary',
values: [
{ labels: { quantile: 0.1 }, value: 1 },
{ labels: { quantile: 0.9 }, value: 100 },
{ labels: { quantile: 0.99 }, value: 100 },
{ metricName: 'summary1_sum', labels: {}, value: 111 },
{ metricName: 'summary1_count', labels: {}, value: 3 },
],
aggregator: 'sum',
},
]
const influx = promClientJsonToInfluxV2(json)
expect(sortLines(influx)).to.be.equal(
sortLines(`prometheus,quantile=0.99 summary1=100
prometheus,quantile=0.9 summary1=100
prometheus,quantile=0.1 summary1=1
prometheus summary1_count=3,summary1_sum=111`)
)
})
it('converts a summary (from prometheus registry)', function() {
const register = new prometheus.Registry()
const summary = new prometheus.Summary({
name: 'summary1',
help: 'summary 1 help',
percentiles: [0.1, 0.9, 0.99],
registers: [register],
})
summary.observe(100)
summary.observe(10)
summary.observe(1)
const influx = promClientJsonToInfluxV2(register.getMetricsAsJSON())
expect(sortLines(influx)).to.be.equal(
sortLines(`prometheus,quantile=0.99 summary1=100
prometheus,quantile=0.9 summary1=100
prometheus,quantile=0.1 summary1=1
prometheus summary1_count=3,summary1_sum=111`)
)
})
it('converts a counter and skip a timestamp', function() {
const json = [
{
help: 'counter 4 help',
name: 'counter4',
type: 'counter',
values: [{ value: 11, labels: {}, timestamp: 1581850552292 }],
aggregator: 'sum',
},
]
const influx = promClientJsonToInfluxV2(json)
expect(influx).to.be.equal('prometheus counter4=11')
})
it('converts a counter and adds extra labels', function() {
const json = [
{
help: 'counter 1 help',
name: 'counter1',
type: 'counter',
values: [{ value: 11, labels: {} }],
aggregator: 'sum',
},
]
const influx = promClientJsonToInfluxV2(json, {
instance: 'instance1',
env: 'production',
})
expect(influx).to.be.equal(
'prometheus,env=production,instance=instance1 counter1=11'
)
})
})
})

View File

@@ -43,7 +43,7 @@ function setRoutes({ rateLimit }, { server, metricInstance }) {
.split(/[/-]/)
.slice(0, 3)
.join('')
const referer = req.headers['referer']
const referer = req.headers.referer
if (ipRateLimit.isBanned(ip, req, res)) {
metricInstance.noteRateLimitExceeded('ip')

View File

@@ -4,8 +4,8 @@ const decamelize = require('decamelize')
const prometheus = require('prom-client')
module.exports = class PrometheusMetrics {
constructor() {
this.register = new prometheus.Registry()
constructor({ register } = {}) {
this.register = register || new prometheus.Registry()
this.counters = {
numRequests: new prometheus.Counter({
name: 'service_requests_total',
@@ -59,12 +59,22 @@ module.exports = class PrometheusMetrics {
labelNames: ['rate_limit_type'],
registers: [this.register],
}),
serviceResponseSize: new prometheus.Histogram({
name: 'service_response_bytes',
help: 'Service response size in bytes',
labelNames: ['category', 'family', 'service'],
// buckets: 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB
buckets: prometheus.exponentialBuckets(64 * 1024, 2, 8),
registers: [this.register],
}),
}
this.interval = prometheus.collectDefaultMetrics({
register: this.register,
})
}
async initialize(server) {
async registerMetricsEndpoint(server) {
const { register } = this
this.interval = prometheus.collectDefaultMetrics({ register })
server.route(/^\/metrics$/, (data, match, end, ask) => {
ask.res.setHeader('Content-Type', register.contentType)
@@ -80,6 +90,10 @@ module.exports = class PrometheusMetrics {
}
}
metrics() {
return this.register.getMetricsAsJSON()
}
/**
* @returns {object} `{ inc() {} }`.
*/
@@ -95,4 +109,13 @@ module.exports = class PrometheusMetrics {
noteRateLimitExceeded(rateLimitType) {
return this.counters.rateLimitExceeded.labels(rateLimitType).inc()
}
createServiceResponseSizeHistogram({ category, serviceFamily, name }) {
const service = decamelize(name)
return this.counters.serviceResponseSize.labels(
category,
serviceFamily,
service
)
}
}

View File

@@ -7,26 +7,26 @@ const got = require('../got-test-client')
const Metrics = require('./prometheus-metrics')
describe('Prometheus metrics route', function() {
let port, baseUrl
let port, baseUrl, camp, metrics
beforeEach(async function() {
port = await portfinder.getPortPromise()
baseUrl = `http://127.0.0.1:${port}`
})
let camp
beforeEach(async function() {
camp = Camp.start({ port, hostname: '::' })
await new Promise(resolve => camp.on('listening', () => resolve()))
})
afterEach(async function() {
if (metrics) {
metrics.stop()
}
if (camp) {
await new Promise(resolve => camp.close(resolve))
camp = undefined
}
})
it('returns metrics', async function() {
new Metrics({ enabled: true }).initialize(camp)
it('returns default metrics', async function() {
metrics = new Metrics()
metrics.registerMetricsEndpoint(camp)
const { statusCode, body } = await got(`${baseUrl}/metrics`)

View File

@@ -5,9 +5,9 @@
const path = require('path')
const url = require('url')
const bytes = require('bytes')
const Joi = require('@hapi/joi')
const { URL } = url
const Camp = require('camp')
const originalJoi = require('@hapi/joi')
const makeBadge = require('../../gh-badges/lib/make-badge')
const GithubConstellation = require('../../services/github/github-constellation')
const suggest = require('../../services/suggest')
@@ -19,16 +19,64 @@ const {
} = require('../base-service/legacy-request-handler')
const { clearRegularUpdateCache } = require('../legacy/regular-update')
const { rasterRedirectUrl } = require('../badge-urls/make-badge-url')
const { merge, checkCustomIntegrationConfiguration } = require('./config')
const log = require('./log')
const sysMonitor = require('./monitor')
const PrometheusMetrics = require('./prometheus-metrics')
const InfluxMetrics = require('./influx-metrics')
const Joi = originalJoi
.extend(base => ({
type: 'arrayFromString',
base: base.array(),
coerce: (value, state, options) => ({
value: typeof value === 'string' ? value.split(' ') : value,
}),
}))
.extend(base => ({
type: 'string',
base: base.string(),
messages: {
'string.origin':
'needs to be an origin string, e.g. https://host.domain with optional port and no trailing slash',
},
rules: {
origin: {
validate(value, helpers) {
let origin
try {
;({ origin } = new URL(value))
} catch (e) {}
if (origin !== undefined && origin === value) {
return value
} else {
return helpers.error('string.origin')
}
},
},
},
}))
const optionalUrl = Joi.string().uri({ scheme: ['http', 'https'] })
const requiredUrl = optionalUrl.required()
const bytes = Joi.string().regex(/^[0-9]+(b|kb|mb|gb|tb)$/i)
const requireFields = {
required: schema => schema.required(),
}
const integrationSchema = Joi.object({
fetchLimit: bytes.alter(requireFields),
})
const origins = Joi.arrayFromString().items(Joi.string().origin())
const defaultService = Joi.object({ authorizedOrigins: origins }).default({
authorizedOrigins: [],
})
const publicConfigSchema = Joi.object({
bind: {
port: Joi.number().port(),
port: Joi.alternatives().try(
Joi.number().port(),
Joi.string().pattern(/^\\\\\.\\pipe\\.+$/)
),
address: Joi.alternatives().try(
Joi.string()
.ip()
@@ -41,6 +89,33 @@ const publicConfigSchema = Joi.object({
metrics: {
prometheus: {
enabled: Joi.boolean().required(),
endpointEnabled: Joi.boolean().required(),
},
influx: {
enabled: Joi.boolean().required(),
url: Joi.string()
.uri()
.when('enabled', { is: true, then: Joi.required() }),
timeoutMilliseconds: Joi.number()
.integer()
.min(1)
.when('enabled', { is: true, then: Joi.required() }),
intervalSeconds: Joi.number()
.integer()
.min(1)
.when('enabled', { is: true, then: Joi.required() }),
instanceIdFrom: Joi.string()
.equal('hostname', 'env-var', 'random')
.when('enabled', { is: true, then: Joi.required() }),
instanceIdEnvVarName: Joi.string().when('instanceIdFrom', {
is: 'env-var',
then: Joi.required(),
}),
envLabel: Joi.string().when('enabled', {
is: true,
then: Joi.required(),
}),
hostnameAliases: Joi.object(),
},
},
ssl: {
@@ -58,7 +133,9 @@ const publicConfigSchema = Joi.object({
persistence: {
dir: Joi.string().required(),
},
services: {
services: Joi.object({
bitbucketServer: defaultService,
drone: defaultService,
github: {
baseUri: requiredUrl,
debug: {
@@ -69,11 +146,18 @@ const publicConfigSchema = Joi.object({
.required(),
},
},
jira: defaultService,
jenkins: Joi.object({
authorizedOrigins: origins,
requireStrictSsl: Joi.boolean(),
requireStrictSslToAuthenticate: Joi.boolean(),
}).default({ authorizedOrigins: [] }),
nexus: defaultService,
npm: defaultService,
sonar: defaultService,
teamcity: defaultService,
trace: Joi.boolean().required(),
},
profiling: {
makeBadge: Joi.boolean().required(),
},
}).required(),
cacheHeaders: {
defaultCacheLengthSeconds: Joi.number()
.integer()
@@ -81,13 +165,16 @@ const publicConfigSchema = Joi.object({
},
rateLimit: Joi.boolean().required(),
handleInternalErrors: Joi.boolean().required(),
fetchLimit: Joi.string().regex(/^[0-9]+(b|kb|mb|gb|tb)$/i),
integrations: Joi.object({
default: integrationSchema.tailor('required').required(),
}).pattern(Joi.string(), integrationSchema),
}).required()
const privateConfigSchema = Joi.object({
azure_devops_token: Joi.string(),
bintray_user: Joi.string(),
bintray_apikey: Joi.string(),
drone_token: Joi.string(),
gh_client_id: Joi.string(),
gh_client_secret: Joi.string(),
gh_token: Joi.string(),
@@ -105,11 +192,18 @@ const privateConfigSchema = Joi.object({
sl_insight_userUuid: Joi.string(),
sl_insight_apiToken: Joi.string(),
sonarqube_token: Joi.string(),
teamcity_user: Joi.string(),
teamcity_pass: Joi.string(),
twitch_client_id: Joi.string(),
twitch_client_secret: Joi.string(),
wheelmap_token: Joi.string(),
influx_username: Joi.string(),
influx_password: Joi.string(),
}).required()
const privateMetricsInfluxConfigSchema = privateConfigSchema.append({
influx_username: Joi.string().required(),
influx_password: Joi.string().required(),
})
/**
* The Server is based on the web framework Scoutcamp. It creates
* an http server, sets up helpers for token persistence and monitoring.
@@ -121,22 +215,25 @@ class Server {
* Badge Server Constructor
*
* @param {object} config Configuration object read from config yaml files
* by https://www.npmjs.com/package/config and validated against
* publicConfigSchema and privateConfigSchema
* by https://www.npmjs.com/package/config and validated against
* publicConfigSchema and privateConfigSchema
* @see https://github.com/badges/shields/blob/master/doc/production-hosting.md#configuration
* @see https://github.com/badges/shields/blob/master/doc/server-secrets.md
*/
constructor(config) {
const publicConfig = Joi.attempt(config.public, publicConfigSchema)
let privateConfig
try {
privateConfig = Joi.attempt(config.private, privateConfigSchema)
} catch (e) {
const badPaths = e.details.map(({ path }) => path)
throw Error(
`Private configuration is invalid. Check these paths: ${badPaths.join(
','
)}`
const privateConfig = this.validatePrivateConfig(
config.private,
privateConfigSchema
)
// We want to require an username and a password for the influx metrics
// only if the influx metrics are enabled. The private config schema
// and the public config schema are two separate schemas so we have to run
// validation manually.
if (publicConfig.metrics.influx && publicConfig.metrics.influx.enabled) {
this.validatePrivateConfig(
config.private,
privateMetricsInfluxConfigSchema
)
}
this.config = {
@@ -149,8 +246,31 @@ class Server {
service: publicConfig.services.github,
private: privateConfig,
})
if (publicConfig.metrics.prometheus.enabled) {
this.metricInstance = new PrometheusMetrics()
if (publicConfig.metrics.influx.enabled) {
this.influxMetrics = new InfluxMetrics(
this.metricInstance,
Object.assign({}, publicConfig.metrics.influx, {
username: privateConfig.influx_username,
password: privateConfig.influx_password,
})
)
}
}
}
validatePrivateConfig(privateConfig, privateConfigSchema) {
try {
return Joi.attempt(privateConfig, privateConfigSchema)
} catch (e) {
const badPaths = e.details.map(({ path }) => path)
throw Error(
`Private configuration is invalid. Check these paths: ${badPaths.join(
','
)}`
)
}
}
@@ -187,7 +307,11 @@ class Server {
camp.route(/\.(gif|jpg)$/, (query, match, end, request) => {
const [, format] = match
makeSend('svg', request.res, end)(
makeSend(
'svg',
request.res,
end
)(
makeBadge({
text: ['410', `${format} no longer available`],
color: 'lightgray',
@@ -198,7 +322,11 @@ class Server {
if (!rasterUrl) {
camp.route(/\.png$/, (query, match, end, request) => {
makeSend('svg', request.res, end)(
makeSend(
'svg',
request.res,
end
)(
makeBadge({
text: ['404', 'raster badges not available'],
color: 'lightgray',
@@ -212,7 +340,11 @@ class Server {
const [, extension] = match
const format = (extension || '.svg').replace(/^\./, '')
makeSend(format, request.res, end)(
makeSend(
format,
request.res,
end
)(
makeBadge({
text: ['404', 'badge not found'],
color: 'red',
@@ -268,19 +400,25 @@ class Server {
const { config, camp, metricInstance } = this
const { apiProvider: githubApiProvider } = this.githubConstellation
loadServiceClasses().forEach(serviceClass =>
const serviceClasses = loadServiceClasses()
checkCustomIntegrationConfiguration(config, serviceClasses)
serviceClasses.forEach(serviceClass => {
const serviceConfig = merge(
config.public.integrations.default,
config.public.integrations[serviceClass.name] || {}
)
serviceClass.register(
{ camp, handleRequest, githubApiProvider, metricInstance },
{
handleInternalErrors: config.public.handleInternalErrors,
cacheHeaders: config.public.cacheHeaders,
profiling: config.public.profiling,
fetchLimitBytes: bytes(config.public.fetchLimit),
rasterUrl: config.public.rasterUrl,
private: config.private,
public: config.public,
...serviceConfig,
}
)
)
})
}
/**
@@ -317,7 +455,12 @@ class Server {
const { githubConstellation } = this
githubConstellation.initialize(camp)
if (metricInstance) {
metricInstance.initialize(camp)
if (this.config.public.metrics.prometheus.endpointEnabled) {
metricInstance.registerMetricsEndpoint(camp)
}
if (this.influxMetrics) {
this.influxMetrics.startPushingMetrics()
}
}
const { apiProvider: githubApiProvider } = this.githubConstellation
@@ -361,6 +504,9 @@ class Server {
}
if (this.metricInstance) {
if (this.influxMetrics) {
this.influxMetrics.stopPushingMetrics()
}
this.metricInstance.stop()
}
}

View File

@@ -2,153 +2,333 @@
const { expect } = require('chai')
const isSvg = require('is-svg')
const portfinder = require('portfinder')
const config = require('config')
const got = require('../got-test-client')
const Server = require('./server')
const { createTestServer } = require('./in-process-server-test-helpers')
describe('The server', function() {
let server, baseUrl
before('Start the server', async function() {
// Fixes https://github.com/badges/shields/issues/2611
this.timeout(10000)
const port = await portfinder.getPortPromise()
server = createTestServer({ port })
baseUrl = server.baseUrl
await server.start()
})
after('Shut down the server', async function() {
if (server) {
await server.stop()
}
server = undefined
})
it('should produce colorscheme badges', async function() {
const { statusCode, body } = await got(`${baseUrl}:fruit-apple-green.svg`)
expect(statusCode).to.equal(200)
expect(body)
.to.satisfy(isSvg)
.and.to.include('fruit')
.and.to.include('apple')
})
it('should redirect colorscheme PNG badges as configured', async function() {
const { statusCode, headers } = await got(
`${baseUrl}:fruit-apple-green.png`,
{
followRedirect: false,
describe('running', function() {
let server, baseUrl
before('Start the server', async function() {
// Fixes https://github.com/badges/shields/issues/2611
this.timeout(10000)
server = await createTestServer()
baseUrl = server.baseUrl
await server.start()
})
after('Shut down the server', async function() {
if (server) {
await server.stop()
}
)
expect(statusCode).to.equal(301)
expect(headers.location).to.equal(
'http://raster.example.test/:fruit-apple-green.png'
)
})
it('should redirect modern PNG badges as configured', async function() {
const { statusCode, headers } = await got(`${baseUrl}npm/v/express.png`, {
followRedirect: false,
})
expect(statusCode).to.equal(301)
expect(headers.location).to.equal(
'http://raster.example.test/npm/v/express.png'
)
})
it('should produce json badges', async function() {
const { statusCode, body, headers } = await got(
`${baseUrl}npm/v/express.json`
)
expect(statusCode).to.equal(200)
expect(headers['content-type']).to.equal('application/json')
expect(() => JSON.parse(body)).not.to.throw()
})
it('should preserve label case', async function() {
const { statusCode, body } = await got(`${baseUrl}:fRuiT-apple-green.svg`)
expect(statusCode).to.equal(200)
expect(body)
.to.satisfy(isSvg)
.and.to.include('fRuiT')
})
// https://github.com/badges/shields/pull/1319
it('should not crash with a numeric logo', async function() {
const { statusCode, body } = await got(
`${baseUrl}:fruit-apple-green.svg?logo=1`
)
expect(statusCode).to.equal(200)
expect(body)
.to.satisfy(isSvg)
.and.to.include('fruit')
.and.to.include('apple')
})
it('should not crash with a numeric link', async function() {
const { statusCode, body } = await got(
`${baseUrl}:fruit-apple-green.svg?link=1`
)
expect(statusCode).to.equal(200)
expect(body)
.to.satisfy(isSvg)
.and.to.include('fruit')
.and.to.include('apple')
})
it('should not crash with a boolean link', async function() {
const { statusCode, body } = await got(
`${baseUrl}:fruit-apple-green.svg?link=true`
)
expect(statusCode).to.equal(200)
expect(body)
.to.satisfy(isSvg)
.and.to.include('fruit')
.and.to.include('apple')
})
it('should return the 404 badge for unknown badges', async function() {
const { statusCode, body } = await got(
`${baseUrl}this/is/not/a/badge.svg`,
{ throwHttpErrors: false }
)
expect(statusCode).to.equal(404)
expect(body)
.to.satisfy(isSvg)
.and.to.include('404')
.and.to.include('badge not found')
})
it('should return the 404 badge page for rando links', async function() {
const { statusCode, body } = await got(
`${baseUrl}this/is/most/definitely/not/a/badge.js`,
{ throwHttpErrors: false }
)
expect(statusCode).to.equal(404)
expect(body)
.to.satisfy(isSvg)
.and.to.include('404')
.and.to.include('badge not found')
})
it('should redirect the root as configured', async function() {
const { statusCode, headers } = await got(baseUrl, {
followRedirect: false,
server = undefined
})
expect(statusCode).to.equal(302)
// This value is set in `config/test.yml`
expect(headers.location).to.equal('http://frontend.example.test')
it('should allow strings for port', async function() {
// fixes #4391 - This allows the app to be run using iisnode, which uses a named pipe for the port.
const pipeServer = await createTestServer({
public: {
bind: {
port: '\\\\.\\pipe\\9c137306-7c4d-461e-b7cf-5213a3939ad6',
},
},
})
expect(pipeServer).to.not.be.undefined
})
it('should produce colorscheme badges', async function() {
const { statusCode, body } = await got(`${baseUrl}:fruit-apple-green.svg`)
expect(statusCode).to.equal(200)
expect(body)
.to.satisfy(isSvg)
.and.to.include('fruit')
.and.to.include('apple')
})
it('should redirect colorscheme PNG badges as configured', async function() {
const { statusCode, headers } = await got(
`${baseUrl}:fruit-apple-green.png`,
{
followRedirect: false,
}
)
expect(statusCode).to.equal(301)
expect(headers.location).to.equal(
'http://raster.example.test/:fruit-apple-green.png'
)
})
it('should redirect modern PNG badges as configured', async function() {
const { statusCode, headers } = await got(`${baseUrl}npm/v/express.png`, {
followRedirect: false,
})
expect(statusCode).to.equal(301)
expect(headers.location).to.equal(
'http://raster.example.test/npm/v/express.png'
)
})
it('should produce json badges', async function() {
const { statusCode, body, headers } = await got(
`${baseUrl}twitter/follow/_Pyves.json`
)
expect(statusCode).to.equal(200)
expect(headers['content-type']).to.equal('application/json')
expect(() => JSON.parse(body)).not.to.throw()
})
it('should preserve label case', async function() {
const { statusCode, body } = await got(`${baseUrl}:fRuiT-apple-green.svg`)
expect(statusCode).to.equal(200)
expect(body)
.to.satisfy(isSvg)
.and.to.include('fRuiT')
})
// https://github.com/badges/shields/pull/1319
it('should not crash with a numeric logo', async function() {
const { statusCode, body } = await got(
`${baseUrl}:fruit-apple-green.svg?logo=1`
)
expect(statusCode).to.equal(200)
expect(body)
.to.satisfy(isSvg)
.and.to.include('fruit')
.and.to.include('apple')
})
it('should not crash with a numeric link', async function() {
const { statusCode, body } = await got(
`${baseUrl}:fruit-apple-green.svg?link=1`
)
expect(statusCode).to.equal(200)
expect(body)
.to.satisfy(isSvg)
.and.to.include('fruit')
.and.to.include('apple')
})
it('should not crash with a boolean link', async function() {
const { statusCode, body } = await got(
`${baseUrl}:fruit-apple-green.svg?link=true`
)
expect(statusCode).to.equal(200)
expect(body)
.to.satisfy(isSvg)
.and.to.include('fruit')
.and.to.include('apple')
})
it('should return the 404 badge for unknown badges', async function() {
const { statusCode, body } = await got(
`${baseUrl}this/is/not/a/badge.svg`,
{
throwHttpErrors: false,
}
)
expect(statusCode).to.equal(404)
expect(body)
.to.satisfy(isSvg)
.and.to.include('404')
.and.to.include('badge not found')
})
it('should return the 404 badge page for rando links', async function() {
const { statusCode, body } = await got(
`${baseUrl}this/is/most/definitely/not/a/badge.js`,
{
throwHttpErrors: false,
}
)
expect(statusCode).to.equal(404)
expect(body)
.to.satisfy(isSvg)
.and.to.include('404')
.and.to.include('badge not found')
})
it('should redirect the root as configured', async function() {
const { statusCode, headers } = await got(baseUrl, {
followRedirect: false,
})
expect(statusCode).to.equal(302)
// This value is set in `config/test.yml`
expect(headers.location).to.equal('http://frontend.example.test')
})
it('should return the 410 badge for obsolete formats', async function() {
const { statusCode, body } = await got(`${baseUrl}npm/v/express.jpg`, {
throwHttpErrors: false,
})
// TODO It would be nice if this were 404 or 410.
expect(statusCode).to.equal(200)
expect(body)
.to.satisfy(isSvg)
.and.to.include('410')
.and.to.include('jpg no longer available')
})
})
it('should return the 410 badge for obsolete formats', async function() {
const { statusCode, body } = await got(`${baseUrl}npm/v/express.jpg`, {
throwHttpErrors: false,
describe('configuration', function() {
let server
afterEach(async function() {
if (server) {
server.stop()
}
})
it('should allow to enable prometheus metrics', async function() {
// Fixes https://github.com/badges/shields/issues/2611
this.timeout(10000)
server = await createTestServer({
public: {
metrics: { prometheus: { enabled: true, endpointEnabled: true } },
},
})
await server.start()
const { statusCode } = await got(`${server.baseUrl}metrics`)
expect(statusCode).to.be.equal(200)
})
it('should allow to disable prometheus metrics', async function() {
// Fixes https://github.com/badges/shields/issues/2611
this.timeout(10000)
server = await createTestServer({
public: {
metrics: { prometheus: { enabled: true, endpointEnabled: false } },
},
})
await server.start()
const { statusCode } = await got(`${server.baseUrl}metrics`, {
throwHttpErrors: false,
})
expect(statusCode).to.be.equal(404)
})
})
describe('configuration validation', function() {
describe('influx', function() {
let customConfig
beforeEach(function() {
customConfig = config.util.toObject()
customConfig.public.metrics.influx = {
enabled: true,
url: 'http://localhost:8081/telegraf',
timeoutMilliseconds: 1000,
intervalSeconds: 2,
instanceIdFrom: 'random',
instanceIdEnvVarName: 'INSTANCE_ID',
hostnameAliases: { 'metrics-hostname': 'metrics-hostname-alias' },
envLabel: 'test-env',
}
customConfig.private = {
influx_username: 'telegraf',
influx_password: 'telegrafpass',
}
})
it('should not require influx configuration', function() {
delete customConfig.public.metrics.influx
expect(() => new Server(config.util.toObject())).to.not.throw()
})
it('should require url when influx configuration is enabled', function() {
delete customConfig.public.metrics.influx.url
expect(() => new Server(customConfig)).to.throw(
'"metrics.influx.url" is required'
)
})
it('should not require url when influx configuration is disabled', function() {
customConfig.public.metrics.influx.enabled = false
delete customConfig.public.metrics.influx.url
expect(() => new Server(customConfig)).to.not.throw()
})
it('should require timeoutMilliseconds when influx configuration is enabled', function() {
delete customConfig.public.metrics.influx.timeoutMilliseconds
expect(() => new Server(customConfig)).to.throw(
'"metrics.influx.timeoutMilliseconds" is required'
)
})
it('should require intervalSeconds when influx configuration is enabled', function() {
delete customConfig.public.metrics.influx.intervalSeconds
expect(() => new Server(customConfig)).to.throw(
'"metrics.influx.intervalSeconds" is required'
)
})
it('should require instanceIdFrom when influx configuration is enabled', function() {
delete customConfig.public.metrics.influx.instanceIdFrom
expect(() => new Server(customConfig)).to.throw(
'"metrics.influx.instanceIdFrom" is required'
)
})
it('should require instanceIdEnvVarName when instanceIdFrom is env-var', function() {
customConfig.public.metrics.influx.instanceIdFrom = 'env-var'
delete customConfig.public.metrics.influx.instanceIdEnvVarName
expect(() => new Server(customConfig)).to.throw(
'"metrics.influx.instanceIdEnvVarName" is required'
)
})
it('should allow instanceIdFrom = hostname', function() {
customConfig.public.metrics.influx.instanceIdFrom = 'hostname'
expect(() => new Server(customConfig)).to.not.throw()
})
it('should allow instanceIdFrom = env-var', function() {
customConfig.public.metrics.influx.instanceIdFrom = 'env-var'
expect(() => new Server(customConfig)).to.not.throw()
})
it('should allow instanceIdFrom = random', function() {
customConfig.public.metrics.influx.instanceIdFrom = 'random'
expect(() => new Server(customConfig)).to.not.throw()
})
it('should require envLabel when influx configuration is enabled', function() {
delete customConfig.public.metrics.influx.envLabel
expect(() => new Server(customConfig)).to.throw(
'"metrics.influx.envLabel" is required'
)
})
it('should not require hostnameAliases', function() {
delete customConfig.public.metrics.influx.hostnameAliases
expect(() => new Server(customConfig)).to.not.throw()
})
it('should allow empty hostnameAliases', function() {
customConfig.public.metrics.influx.hostnameAliases = {}
expect(() => new Server(customConfig)).to.not.throw()
})
it('should require username when influx configuration is enabled', function() {
delete customConfig.private.influx_username
expect(() => new Server(customConfig)).to.throw(
'Private configuration is invalid. Check these paths: influx_username'
)
})
it('should require password when influx configuration is enabled', function() {
delete customConfig.private.influx_password
expect(() => new Server(customConfig)).to.throw(
'Private configuration is invalid. Check these paths: influx_password'
)
})
it('should allow other private keys', function() {
customConfig.private.gh_token = 'my-token'
expect(() => new Server(customConfig)).to.not.throw()
})
})
// TODO It would be nice if this were 404 or 410.
expect(statusCode).to.equal(200)
expect(body)
.to.satisfy(isSvg)
.and.to.include('410')
.and.to.include('jpg no longer available')
})
})

View File

@@ -73,8 +73,14 @@ if (process.env.TESTED_SERVER_URL) {
} else {
const port = 1111
baseUrl = 'http://localhost:1111'
before('Start running the server', function() {
server = createTestServer({ port })
before('Start running the server', async function() {
server = await createTestServer({
public: {
bind: {
port,
},
},
})
server.start()
})
after('Shut down the server', async function() {

View File

@@ -22,6 +22,14 @@ const factory = superclass =>
this.intercepted = false
}
get(uri, options = { followRedirect: false }) {
if (!options.followRedirect) {
options.followRedirect = false
}
super.get(uri, options)
return this
}
intercept(setup) {
super.intercept(setup)
this.intercepted = true
@@ -51,6 +59,10 @@ const factory = superclass =>
})
}
expectRedirect(location) {
return this.expectStatus(301).expectHeader('Location', location)
}
static _expectField(json, name, expected) {
if (typeof expected === 'undefined') return
if (typeof expected === 'string' || typeof expected === 'number') {

View File

@@ -25,8 +25,10 @@ async function getTitle(owner, repo, pullRequest) {
} = await got(
`https://api.github.com/repos/${owner}/${repo}/pulls/${pullRequest}`,
{
headers: { 'User-Agent': 'badges/shields' },
query: { access_token: process.env.GITHUB_TOKEN },
headers: {
'User-Agent': 'badges/shields',
Authorization: `token ${process.env.GITHUB_TOKEN}`,
},
json: true,
}
)

View File

@@ -55,18 +55,23 @@ class Token {
get id() {
return this._id
}
get data() {
return this._data
}
get usesRemaining() {
return this._usesRemaining
}
get nextReset() {
return this._nextReset
}
get isValid() {
return this._isValid
}
get isFrozen() {
return this._isFrozen
}

View File

@@ -151,6 +151,7 @@ Description of the code:
number of named parameters. These are converted into
regular expressions by [`path-to-regexp`][path-to-regexp].
Because a service instance won't be created until it's time to handle a request, the route and other metadata must be obtained by examining the classes themselves. [That's why they're marked `static`.][static]
- There is additional documentation on conventions for [designing badge URLs](badge-urls)
6. All badges must implement the `async handle()` function that receives parameters to render the badge. Parameters of `handle()` will match the name defined in `route()` Because we're capturing a single variable called `text` our function signature is `async handle({ text })`. `async` is needed to let JavaScript do other things while we are waiting for result from external API. Although in this simple case, we don't make any external calls. Our `handle()` function should return an object with 3 properties:
- `label`: the text on the left side of the badge
- `message`: the text on the right side of the badge - here we are passing through the parameter we captured in the route regex

26
doc/badge-urls.md Normal file
View File

@@ -0,0 +1,26 @@
# Badge URL Conventions
- The format of new badges should be of the form `/SERVICE/NOUN/PARAMETERS?QUERYSTRING` e.g:
`/github/issues/:user/:repo`. The service is github, the
badge is for issues, and the parameters are `:user/:repo`.
- Parameters should always be part of the route if they are required to display a badge e.g: `:packageName`.
- Common optional params like, `:branch` or `:tag` should also be passed as part of the route.
- Query string parameters should be used when:
- The parameter is related to formatting. e.g: `/appveyor/tests/:user/:repo?compact_message`.
- The parameter is for an uncommon optional attribute, like an alternate registry URL.
- The parameter triggers application of alternative logic, like version semantics. e.g: `/github/v/tag/:user/:repo?sort=semver`.
- Services which require a url/hostname parameter always should use a query string parameter to accept that value. e.g: `/discourse/topics?server=https://meta.discourse.org`.
It is convention to use the following standard routes and abbreviations across services:
- Coverage: `/coverage`
- Downloads or Installs:
- Total: `/dt` - Use this even for services that only provide the total download/install data
- Per month: `/dm`
- Per week: `/dw`
- Per day: `/dd`
- Rating:
- Numeric: `/rating`
- Stars: `/stars`
- License: `/l`
- Version or Release: `/v`

BIN
doc/flamegraph.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -0,0 +1,45 @@
# Performance testing
Shields has some basic tooling available to help you get started with
performance testing.
## Benchmarking the badge generation
Want to micro-benchmark a section of the code responsible for generating the
static badges? Follow these two simple steps:
1. Surround the code you want to time with `console.time` and `console.timeEnd`
statements. For example:
```
console.time('makeBadge')
const svg = makeBadge(badgeData)
console.timeEnd('makeBadge')
```
2. Run `npm run benchmark:badge` in your terminal. An average timing will
be displayed!
If you want to change the number of iterations in the benchmark, you can modify
the values specified by the `benchmark:badge` script in _package.json_. If
you want to benchmark a specific code path not covered by the static badge, you
can modify the badge URL in _scripts/benchmark-performance.js_.
## Profiling the full code
Want to have an overview of how the entire application is performing? Simply
run `npm run profile:server` in your terminal. This will start the
backend server (i.e. without the frontend) in profiling mode and any requests
you make on `localhost:8080` will generate data in a file with a name
similar to _isolate-00000244AB6ED3B0-11920-v8.log_.
You can then make use of this profiling data in various tools, for example
[flamebearer](https://github.com/mapbox/flamebearer):
```
npm install -g flamebearer
node --prof-process --preprocess -j isolate-00000244AB6ED3B0-11920-v8.log | flamebearer
```
An example output is the following:
![](https://raw.github.com/badges/shields/master/doc/flamegraph.png)

View File

@@ -8,7 +8,7 @@ You will need Node 8 or later, which you can install using a
On Ubuntu / Debian:
```sh
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -; sudo apt-get install -y nodejs
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -; sudo apt-get install -y nodejs
```
```sh

View File

@@ -10,14 +10,19 @@ There are two ways of setting secrets:
environment.
```sh
GH_TOKEN=...
DRONE_TOKEN=...
DRONE_ORIGINS="https://drone.example.com"
```
2. Via checked-in `config/local.yml`:
```yml
public:
services:
drone:
authorizedOrigins: ['https://drone.example.com']
private:
gh_token: '...'
drone_token: '...'
```
For more complex scenarios, configuration files can cascade. See the [node-config documentation][]
@@ -25,9 +30,43 @@ for details.
[node-config documentation]: https://github.com/lorenwest/node-config/wiki/Configuration-Files
## Azure DevOps
## Authorized origins
- `AZURE_DEVOPS_TOKEN` (yml: `azure_devops_token`)
Several of the badges provided by Shields allow users to specify the target
URL/server of the upstream instance to use via a query parameter in the badge URL
(e.g. https://img.shields.io/nexus/s/com.google.guava/guava?server=https%3A%2F%2Foss.sonatype.org).
This supports scenarios where your users may need badges from multiple upstream
targets, for example if you have more than one Nexus server.
Accordingly, if you configure credentials for one of these services with your
self-hosted Shields instance, you must also specifically authorize the hosts
to which the credentials are allowed to be sent. If your self-hosted Shields
instance then receives a badge request for a target that does not match any
of the authorized origins, one of two things will happen:
- if credentials are required for the targeted service, Shields will render
an error badge.
- if credentials are optional for the targeted service, Shields will attempt
the request, but without sending any credentials.
When setting authorized origins through an environment variable, use a space
to separate multiple origins. Note that failing to define authorized origins
for a service will default to an empty list, i.e. no authorized origins.
It is highly recommended to use `https` origins with valid SSL, to avoid the
possibility of exposing your credentials, for example through DNS-based attacks.
It is also recommended to use tokens for a service account having
[the fewest privileges needed][polp] for fetching the relevant status
information.
[polp]: https://en.wikipedia.org/wiki/Principle_of_least_privilege
## Services
### Azure DevOps
- `AZURE_DEVOPS_TOKEN` (yml: `private.azure_devops_token`)
An Azure DevOps Token (PAT) is required for accessing [private Azure DevOps projects][ado project visibility].
@@ -41,24 +80,45 @@ An Azure DevOps Token (PAT) is required for accessing [private Azure DevOps proj
[ado personal access tokens]: https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=vsts#create-personal-access-tokens-to-authenticate-access
[ado token scopes]: https://docs.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/oauth?view=vsts#scopes
## Bintray
### Bintray
- `BINTRAY_USER` (yml: `bintray_user`)
- `BINTRAY_API_KEY` (yml: `bintray_apikey`)
- `BINTRAY_USER` (yml: `private.bintray_user`)
- `BINTRAY_API_KEY` (yml: `private.bintray_apikey`)
The bintray API [requires authentication](https://bintray.com/docs/api/#_authentication)
Create an account and obtain a token from the user profile page.
## Drone
### Bitbucket (Cloud)
- `DRONE_TOKEN` (yml: `drone_token`)
- `BITBUCKET_USER` (yml: `private.bitbucket_username`)
- `BITBUCKET_PASS` (yml: `private.bitbucket_password`)
The self-hosted Drone API [requires authentication](https://0-8-0.docs.drone.io/api-authentication/)
Login to your Drone instance and obtain a token from the user profile page.
Bitbucket badges use basic auth. Provide a username and password to give your
self-hosted Shields installation access to private repositories hosted on bitbucket.org.
## GitHub
### Bitbucket Server
- `GH_TOKEN` (yml: `gh_token`)
- `BITBUCKET_SERVER_ORIGINS` (yml: `public.services.bitbucketServer.authorizedOrigins`)
- `BITBUCKET_SERVER_USER` (yml: `private.bitbucket_server_username`)
- `BITBUCKET_SERVER_PASS` (yml: `private.bitbucket_server_password`)
Bitbucket badges use basic auth. Provide a username and password to give your
self-hosted Shields installation access to a private Bitbucket Server instance.
### Drone
- `DRONE_ORIGINS` (yml: `public.services.drone.authorizedOrigins`)
- `DRONE_TOKEN` (yml: `private.drone_token`)
The self-hosted Drone API [requires authentication][drone auth]. Log in to your
Drone instance and obtain a token from the user profile page.
[drone auth]: https://0-8-0.docs.drone.io/api-authentication/
### GitHub
- `GITHUB_URL` (yml: `public.services.github.baseUri`)
- `GH_TOKEN` (yml: `private.gh_token`)
Because of Github rate limits, you will need to provide a token, or else badges
will stop working once you hit 60 requests per hour, the
@@ -72,76 +132,85 @@ will have access to your private repositories.
When a `gh_token` is specified, it is used in place of the Shields token
rotation logic.
`GITHUB_URL` can be used to optionally send all the GitHub requests to a
GitHub Enterprise server. This can be done in conjunction with setting a
token, though it's not required.
[github rate limit]: https://developer.github.com/v3/#rate-limiting
[personal access tokens]: https://github.com/settings/tokens
- `GH_CLIENT_ID` (yml: `gh_client_id`)
- `GH_CLIENT_SECRET` (yml: `gh_client_secret`)
- `GH_CLIENT_ID` (yml: `private.gh_client_id`)
- `GH_CLIENT_SECRET` (yml: `private.gh_client_secret`)
These settings are used by shields.io for GitHub OAuth app authorization
but will not be necessary for most self-hosted installations. See
[production-hosting.md](./production-hosting.md).
## Jenkins CI
### Jenkins CI
- `JENKINS_USER` (yml: `jenkins_user`)
- `JENKINS_PASS` (yml: `jenkins_pass`)
- `JENKINS_ORIGINS` (yml: `public.services.jenkins.authorizedOrigins`)
- `JENKINS_USER` (yml: `private.jenkins_user`)
- `JENKINS_PASS` (yml: `private.jenkins_pass`)
Provide a username and password to give your self-hosted Shields installation
access to a private Jenkins CI instance.
## JIRA
### Jira
- `JIRA_USER` (yml: `jira_user`)
- `JIRA_PASS` (yml: `jira_pass`)
- `JIRA_ORIGINS` (yml: `public.services.jira.authorizedOrigins`)
- `JIRA_USER` (yml: `private.jira_user`)
- `JIRA_PASS` (yml: `private.jira_pass`)
Provide a username and password to give your self-hosted Shields installation
access to a private JIRA instance.
## Nexus
### Nexus
- `NEXUS_USER` (yml: `nexus_user`)
- `NEXUS_PASS` (yml: `nexus_pass`)
- `NEXUS_ORIGINS` (yml: `public.services.nexus.authorizedOrigins`)
- `NEXUS_USER` (yml: `private.nexus_user`)
- `NEXUS_PASS` (yml: `private.nexus_pass`)
Provide a username and password to give your self-hosted Shields installation
access to your private nexus repositories.
## NPM
### npm
- `NPM_TOKEN` (yml: `npm_token`)
- `NPM_ORIGINS` (yml: `public.services.npm.authorizedOrigins`)
- `NPM_TOKEN` (yml: `private.npm_token`)
[Generate an npm token][npm token] to give your self-hosted Shields
installation access to private npm packages
[npm token]: https://docs.npmjs.com/getting-started/working_with_tokens
## Sentry
### SymfonyInsight (formerly Sensiolabs)
- `SENTRY_DSN` (yml: `sentry_dsn`)
A [Sentry DSN](https://docs.sentry.io/error-reporting/quickstart/?platform=javascript#configure-the-dsn)
may be used to send error reports from your installation to
[Sentry.io](http://sentry.io/). For more info, see the
[self hosting docs](https://github.com/badges/shields/blob/master/doc/self-hosting.md#sentry).
## SymfonyInsight (formerly Sensiolabs)
- `SL_INSIGHT_USER_UUID` (yml: `sl_insight_userUuid`)
- `SL_INSIGHT_API_TOKEN` (yml: `sl_insight_apiToken`)
- `SL_INSIGHT_USER_UUID` (yml: `private.sl_insight_userUuid`)
- `SL_INSIGHT_API_TOKEN` (yml: `private.sl_insight_apiToken`)
The SymfonyInsight API requires authentication. To obtain a token,
Create an account, sign in and obtain a uuid and token from your
[account page](https://insight.sensiolabs.com/account).
## SonarQube
### SonarQube
- `SONARQUBE_TOKEN` (yml: `sonarqube_token`)
- `SONAR_ORIGINS` (yml: `public.services.sonar.authorizedOrigins`)
- `SONARQUBE_TOKEN` (yml: `private.sonarqube_token`)
[Generate a token](https://docs.sonarqube.org/latest/user-guide/user-token/)
to give your self-hosted Shields installation access to a
private SonarQube instance or private project on a public instance.
## Twitch
### TeamCity
- `TEAMCITY_ORIGINS` (yml: `public.services.teamcity.authorizedOrigins`)
- `TEAMCITY_USER` (yml: `private.teamcity_user`)
- `TEAMCITY_PASS` (yml: `private.teamcity_pass`)
Provide a username and password to give your self-hosted Shields installation
access to your private nexus repositories.
### Twitch
- `TWITCH_CLIENT_ID` (yml: `twitch_client_id`)
- `TWITCH_CLIENT_SECRET` (yml: `twitch_client_secret`)
@@ -149,12 +218,23 @@ private SonarQube instance or private project on a public instance.
Register an application in the [Twitch developer console](https://dev.twitch.tv/console)
in order to obtain a client id and a client secret for making Twitch API calls.
## Wheelmap
### Wheelmap
- `WHEELMAP_TOKEN` (yml: `wheelmap_token`)
- `WHEELMAP_TOKEN` (yml: `private.wheelmap_token`)
The wheelmap API requires authentication. To obtain a token,
Create an account, [sign in][wheelmap token] and use the _Authentication Token_
displayed on your profile page.
[wheelmap token]: http://classic.wheelmap.org/en/users/sign_in
## Error reporting
- `SENTRY_DSN` (yml: `private.sentry_dsn`)
A [Sentry DSN][] may be used to send error reports from your installation to
[Sentry.io][]. For more info, see the [self hosting docs][].
[sentry dsn]: https://docs.sentry.io/error-reporting/quickstart/?platform=javascript#configure-the-dsn
[sentry.io]: http://sentry.io/
[self hosting docs]: https://github.com/badges/shields/blob/master/doc/self-hosting.md#sentry

View File

@@ -148,7 +148,7 @@ Once we have multiple tests, sometimes it is useful to run only one test. We can
npm run test:services -- --only="wercker" --fgrep="Build status (with branch)"
```
Having covered the typical and custom cases, we'll move on to errors. We should include a test for the 'not found' response and also tests for any other cusom error handling. The Wercker integration defines a custom error condition for 401 as well as a custom 404 message:
Having covered the typical and custom cases, we'll move on to errors. We should include a test for the 'not found' response and also tests for any other custom error handling. The Wercker integration defines a custom error condition for 401 as well as a custom 404 message:
```js
errorMessages: {

View File

@@ -42,8 +42,8 @@ function Example({
onClick: (example: RenderableExample, isSuggestion: boolean) => void
exampleData: RenderableExample
isBadgeSuggestion: boolean
}) {
function handleClick() {
}): JSX.Element {
function handleClick(): void {
onClick(exampleData, isBadgeSuggestion)
}
@@ -106,7 +106,7 @@ export function BadgeExamples({
areBadgeSuggestions: boolean
baseUrl?: string
onClick: (exampleData: RenderableExample, isSuggestion: boolean) => void
}) {
}): JSX.Element {
return (
<ExampleTable>
<tbody>

View File

@@ -12,7 +12,7 @@ export function CategoryHeading({
category: { id, name },
}: {
category: Category
}) {
}): JSX.Element {
return (
<Link to={`/category/${id}`}>
<H3 id={id}>{name}</H3>
@@ -20,7 +20,11 @@ export function CategoryHeading({
)
}
export function CategoryHeadings({ categories }: { categories: Category[] }) {
export function CategoryHeadings({
categories,
}: {
categories: Category[]
}): JSX.Element {
return (
<div>
{categories.map(category => (
@@ -61,7 +65,11 @@ const StyledNav = styled.nav`
}
`
export function CategoryNav({ categories }: { categories: Category[] }) {
export function CategoryNav({
categories,
}: {
categories: Category[]
}): JSX.Element {
return (
<StyledNav>
<ul>

View File

@@ -74,7 +74,7 @@ export function Badge({
height = '20px',
clickable = false,
...rest
}: BadgeProps) {
}: BadgeProps): JSX.Element {
return (
<BadgeWrapper clickable={clickable} display={display} height={height}>
{src ? <img alt={alt} src={src} {...rest} /> : nonBreakingSpace}

View File

@@ -20,7 +20,7 @@ export function BuilderContainer({
children,
}: {
children: JSX.Element[] | JSX.Element
}) {
}): JSX.Element {
return (
<BuilderOuterContainer>
<BuilderInnerContainer>{children}</BuilderInnerContainer>

View File

@@ -41,7 +41,7 @@ function _CopiedContentIndicator(
children: JSX.Element | JSX.Element[]
},
ref: React.Ref<CopiedContentIndicatorHandle>
) {
): JSX.Element {
const [pose, setPose] = useState('hidden')
useImperativeHandle(ref, () => ({
@@ -50,7 +50,7 @@ function _CopiedContentIndicator(
},
}))
function handlePoseComplete() {
function handlePoseComplete(): void {
if (pose === 'effectStart') {
setPose('effectEnd')
} else {

View File

@@ -36,24 +36,24 @@ export default function Customizer({
initialStyle?: string
isPrefilled: boolean
link?: string
}) {
}): JSX.Element {
// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/35572
// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/28884#issuecomment-471341041
const indicatorRef = useRef<
CopiedContentIndicatorHandle
>() as React.MutableRefObject<CopiedContentIndicatorHandle>
const [path, setPath] = useState('')
const [queryString, setQueryString] = useState()
const [pathIsComplete, setPathIsComplete] = useState()
const [markup, setMarkup] = useState()
const [message, setMessage] = useState()
const [queryString, setQueryString] = useState<string>()
const [pathIsComplete, setPathIsComplete] = useState<boolean>()
const [markup, setMarkup] = useState<string>()
const [message, setMessage] = useState<string>()
function generateBuiltBadgeUrl() {
function generateBuiltBadgeUrl(): string {
const suffix = queryString ? `?${queryString}` : ''
return `${baseUrl || getBaseUrlFromWindowLocation()}${path}${suffix}`
}
function renderLivePreview() {
function renderLivePreview(): JSX.Element {
// There are some usability issues here. It would be better if the message
// changed from a validation error to a loading message once the
// parameters were filled in, and also switched back to loading when the
@@ -75,7 +75,7 @@ export default function Customizer({
)
}
async function copyMarkup(markupFormat: MarkupFormat) {
async function copyMarkup(markupFormat: MarkupFormat): Promise<void> {
const builtBadgeUrl = generateBuiltBadgeUrl()
const markup = generateMarkup({
badgeUrl: builtBadgeUrl,
@@ -98,7 +98,7 @@ export default function Customizer({
}
}
function renderMarkupAndLivePreview() {
function renderMarkupAndLivePreview(): JSX.Element {
return (
<div>
{renderLivePreview()}
@@ -124,7 +124,7 @@ export default function Customizer({
}: {
path: string
isComplete: boolean
}) {
}): void {
setPath(path)
setPathIsComplete(isComplete)
}
@@ -135,7 +135,7 @@ export default function Customizer({
}: {
queryString: string
isComplete: boolean
}) {
}): void {
setQueryString(queryString)
}

View File

@@ -1,6 +1,6 @@
import React, { useState, useEffect, ChangeEvent } from 'react'
import styled, { css } from 'styled-components'
import pathToRegexp, { Token, Key } from 'path-to-regexp'
import { Token, Key, parse } from 'path-to-regexp'
import humanizeString from 'humanize-string'
import { patternToOptions } from '../../lib/pattern-helpers'
import { noAutocorrect, StyledInput } from '../common'
@@ -11,11 +11,13 @@ import {
} from './builder-common'
interface PathBuilderColumnProps {
pathContainsOnlyLiterals: boolean
withHorizPadding?: boolean
}
const PathBuilderColumn = styled.span<PathBuilderColumnProps>`
height: 78px;
height: ${({ pathContainsOnlyLiterals }) =>
pathContainsOnlyLiterals ? '18px' : '78px'};
float: left;
display: flex;
@@ -32,10 +34,12 @@ const PathBuilderColumn = styled.span<PathBuilderColumnProps>`
interface PathLiteralProps {
isFirstToken: boolean
pathContainsOnlyLiterals: boolean
}
const PathLiteral = styled.div<PathLiteralProps>`
margin-top: 39px;
margin-top: ${({ pathContainsOnlyLiterals }) =>
pathContainsOnlyLiterals ? '0px' : '39px'};
${({ isFirstToken }) =>
isFirstToken &&
css`
@@ -80,17 +84,17 @@ export function constructPath({
}: {
tokens: Token[]
namedParams: { [k: string]: string }
}) {
}): { path: string; isComplete: boolean } {
let isComplete = true
const path = tokens
.map(token => {
if (typeof token === 'string') {
return token
return token.trim()
} else {
const { delimiter, name, optional } = token
const value = namedParams[name]
if (value) {
return `${delimiter}${value}`
return `${delimiter}${value.trim()}`
} else if (optional) {
return ''
} else {
@@ -119,8 +123,8 @@ export default function PathBuilder({
isComplete: boolean
}) => void
isPrefilled: boolean
}) {
const [tokens] = useState(() => pathToRegexp.parse(pattern))
}): JSX.Element {
const [tokens] = useState(() => parse(pattern))
const [namedParams, setNamedParams] = useState(() =>
isPrefilled
? exampleParams
@@ -130,13 +134,10 @@ export default function PathBuilder({
tokens
.filter(t => typeof t !== 'string')
.map(t => t as Key)
.reduce(
(accum, { name }) => {
accum[name] = ''
return accum
},
{} as { [k: string]: string }
)
.reduce((accum, { name }) => {
accum[name] = ''
return accum
}, {} as { [k: string]: string })
)
useEffect(() => {
@@ -149,22 +150,34 @@ export default function PathBuilder({
function handleTokenChange({
target: { name, value },
}: ChangeEvent<HTMLInputElement | HTMLSelectElement>) {
}: ChangeEvent<HTMLInputElement | HTMLSelectElement>): void {
setNamedParams({
...namedParams,
[name]: value,
})
}
function renderLiteral(literal: string, tokenIndex: number) {
function renderLiteral(
literal: string,
tokenIndex: number,
pathContainsOnlyLiterals: boolean
): JSX.Element {
return (
<PathBuilderColumn key={`${tokenIndex}-${literal}`}>
<PathLiteral isFirstToken={tokenIndex === 0}>{literal}</PathLiteral>
<PathBuilderColumn
key={`${tokenIndex}-${literal}`}
pathContainsOnlyLiterals={pathContainsOnlyLiterals}
>
<PathLiteral
isFirstToken={tokenIndex === 0}
pathContainsOnlyLiterals={pathContainsOnlyLiterals}
>
{literal}
</PathLiteral>
</PathBuilderColumn>
)
}
function renderNamedParamInput(token: Key) {
function renderNamedParamInput(token: Key): JSX.Element {
const { pattern } = token
const name = `${token.name}`
const options = patternToOptions(pattern)
@@ -206,7 +219,7 @@ export default function PathBuilder({
token: Key,
tokenIndex: number,
namedParamIndex: number
) {
): JSX.Element {
const { delimiter, optional } = token
const name = `${token.name}`
@@ -214,8 +227,8 @@ export default function PathBuilder({
return (
<React.Fragment key={token.name}>
{renderLiteral(delimiter, tokenIndex)}
<PathBuilderColumn withHorizPadding>
{renderLiteral(delimiter, tokenIndex, false)}
<PathBuilderColumn pathContainsOnlyLiterals={false} withHorizPadding>
<NamedParamLabelContainer>
<BuilderLabel htmlFor={name}>{humanizeString(name)}</BuilderLabel>
{optional ? <BuilderLabel>(optional)</BuilderLabel> : null}
@@ -232,11 +245,14 @@ export default function PathBuilder({
}
let namedParamIndex = 0
const pathContainsOnlyLiterals = tokens.every(
token => typeof token === 'string'
)
return (
<BuilderContainer>
{tokens.map((token, tokenIndex) =>
typeof token === 'string'
? renderLiteral(token, tokenIndex)
? renderLiteral(token, tokenIndex, pathContainsOnlyLiterals)
: renderNamedParam(token, tokenIndex, namedParamIndex++)
)}
</BuilderContainer>

View File

@@ -72,7 +72,7 @@ function getQueryString({
// booleans.
if (typeof value === 'string') {
if (value) {
outQuery[name] = value
outQuery[name] = value.trim()
} else {
// Skip empty params.
isComplete = false
@@ -113,7 +113,7 @@ function ServiceQueryParam({
isStringParam: boolean
stringParamCount?: number
handleServiceQueryParamChange: ChangeEventHandler<HTMLInputElement>
}) {
}): JSX.Element {
return (
<tr>
<td>
@@ -160,7 +160,7 @@ function BadgeOptionInput({
handleBadgeOptionChange: ChangeEventHandler<
HTMLSelectElement | HTMLInputElement
>
}) {
}): JSX.Element {
if (name === 'style') {
return (
<select name="style" onChange={handleBadgeOptionChange} value={value}>
@@ -192,7 +192,7 @@ function BadgeOption({
name: BadgeOptionName
value: string
handleBadgeOptionChange: ChangeEventHandler<HTMLInputElement>
}) {
}): JSX.Element {
const {
label = humanizeString(name),
shieldsDefaultValue: hasShieldsDefaultValue,
@@ -237,49 +237,43 @@ export default function QueryStringBuilder({
queryString: string
isComplete: boolean
}) => void
}) {
}): JSX.Element {
const [queryParams, setQueryParams] = useState(() =>
// For each of the custom query params defined in `exampleParams`,
// create empty values in `queryParams`.
Object.entries(exampleParams).reduce(
(accum, [name, value]) => {
// Custom query params are either string or boolean. Inspect the example
// value to infer which one, and set empty values accordingly.
// Throughout the component, these two types are supported in the same
// manner: by inspecting this value type.
const isStringParam = typeof value === 'string'
accum[name] = isStringParam ? '' : true
return accum
},
{} as { [k: string]: string | boolean }
)
Object.entries(exampleParams).reduce((accum, [name, value]) => {
// Custom query params are either string or boolean. Inspect the example
// value to infer which one, and set empty values accordingly.
// Throughout the component, these two types are supported in the same
// manner: by inspecting this value type.
const isStringParam = typeof value === 'string'
accum[name] = isStringParam ? '' : true
return accum
}, {} as { [k: string]: string | boolean })
)
// For each of the standard badge options, create empty values in
// `badgeOptions`. When `initialStyle` has been provided, use it.
const [badgeOptions, setBadgeOptions] = useState(() =>
supportedBadgeOptions.reduce(
(accum, { name }) => {
if (name === 'style') {
accum[name] = initialStyle
} else {
accum[name] = ''
}
return accum
},
{} as Record<BadgeOptionName, string>
)
supportedBadgeOptions.reduce((accum, { name }) => {
if (name === 'style') {
accum[name] = initialStyle
} else {
accum[name] = ''
}
return accum
}, {} as Record<BadgeOptionName, string>)
)
function handleServiceQueryParamChange({
target: { name, type: targetType, checked, value },
}: ChangeEvent<HTMLInputElement>) {
}: ChangeEvent<HTMLInputElement>): void {
const outValue = targetType === 'checkbox' ? checked : value
setQueryParams({ ...queryParams, [name]: outValue })
}
function handleBadgeOptionChange({
target: { name, value },
}: ChangeEvent<HTMLInputElement>) {
}: ChangeEvent<HTMLInputElement>): void {
setBadgeOptions({ ...badgeOptions, [name]: value })
}

View File

@@ -3,14 +3,17 @@ import styled from 'styled-components'
import Select, { components } from 'react-select'
import { MarkupFormat } from '../../lib/generate-image-markup'
const ClickableControl = (props: any) => (
<components.Control
{...props}
innerProps={{
onMouseDown: props.selectProps.onControlMouseDown,
}}
/>
)
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function ClickableControl(props: any): JSX.Element {
return (
<components.Control
{...props}
innerProps={{
onMouseDown: props.selectProps.onControlMouseDown,
}}
/>
)
}
interface Option {
value: MarkupFormat
@@ -76,14 +79,14 @@ export default function GetMarkupButton({
}: {
onMarkupRequested: (markupFormat: MarkupFormat) => Promise<void>
isDisabled: boolean
}) {
}): JSX.Element {
// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/35572
// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/28884#issuecomment-471341041
const selectRef = useRef<Select<Option>>() as React.MutableRefObject<
Select<Option>
>
async function onControlMouseDown(event: MouseEvent) {
async function onControlMouseDown(event: MouseEvent): Promise<void> {
if (onMarkupRequested) {
await onMarkupRequested('link')
}

View File

@@ -18,7 +18,7 @@ const StyledTable = styled.table`
}
`
function NamedLogoTable({ logoNames }: { logoNames: string[] }) {
function NamedLogoTable({ logoNames }: { logoNames: string[] }): JSX.Element {
return (
<StyledTable>
<thead>
@@ -62,7 +62,7 @@ function NamedLogoTable({ logoNames }: { logoNames: string[] }) {
)
}
export default function LogoPage() {
export default function LogoPage(): JSX.Element {
return (
<div>
<Meta />

View File

@@ -5,7 +5,7 @@ const Donate = styled.div`
padding: 25px 50px;
`
export default function DonateBox() {
export default function DonateBox(): JSX.Element {
return (
<Donate>
Love Shields? Please consider{' '}

View File

@@ -28,7 +28,7 @@ const inputs = [
export default function DynamicBadgeMaker({
baseUrl = document.location.href,
}) {
}): JSX.Element {
const [values, setValues] = useState<State>({
datatype: '',
label: '',
@@ -44,14 +44,14 @@ export default function DynamicBadgeMaker({
function onChange({
target: { name, value },
}: ChangeEvent<HTMLInputElement | HTMLSelectElement>) {
}: ChangeEvent<HTMLInputElement | HTMLSelectElement>): void {
setValues({
...values,
[name]: value,
})
}
function onSubmit(e: React.FormEvent) {
function onSubmit(e: React.FormEvent): void {
e.preventDefault()
const { datatype, label, dataUrl, query, color, prefix, suffix } = values

View File

@@ -8,7 +8,7 @@ const SpacedA = styled.a`
margin-right: 10px;
`
export default function Footer({ baseUrl }: { baseUrl: string }) {
export default function Footer({ baseUrl }: { baseUrl: string }): JSX.Element {
return (
<section>
<H2 id="like-this">Like This?</H2>

View File

@@ -8,7 +8,7 @@ const Highlights = styled.p`
font-style: italic;
`
export default function Header() {
export default function Header(): JSX.Element {
return (
<section>
<Link to="/">

View File

@@ -38,7 +38,11 @@ interface PageContext {
category?: Category
}
export default function Main({ pageContext }: { pageContext: PageContext }) {
export default function Main({
pageContext,
}: {
pageContext: PageContext
}): JSX.Element {
const [searchIsInProgress, setSearchIsInProgress] = useState(false)
const [queryIsTooShort, setQueryIsTooShort] = useState(false)
const [searchResults, setSearchResults] = useState<{
@@ -51,7 +55,7 @@ export default function Main({ pageContext }: { pageContext: PageContext }) {
] = useState(false)
const searchTimeout = useRef(0)
function performSearch(query: string) {
function performSearch(query: string): void {
setSearchIsInProgress(false)
setQueryIsTooShort(query.length === 1)
@@ -67,7 +71,7 @@ export default function Main({ pageContext }: { pageContext: PageContext }) {
}
}
function searchQueryChanged(query: string) {
function searchQueryChanged(query: string): void {
/*
Add a small delay before showing search results
so that we wait until the user has stopped typing
@@ -83,12 +87,15 @@ export default function Main({ pageContext }: { pageContext: PageContext }) {
searchTimeout.current = window.setTimeout(() => performSearch(query), 500)
}
function exampleClicked(example: RenderableExample, isSuggestion: boolean) {
function exampleClicked(
example: RenderableExample,
isSuggestion: boolean
): void {
setSelectedExample(example)
setSelectedExampleIsSuggestion(isSuggestion)
}
function dismissMarkupModal() {
function dismissMarkupModal(): void {
setSelectedExample(undefined)
}
@@ -98,14 +105,11 @@ export default function Main({ pageContext }: { pageContext: PageContext }) {
}: {
category: Category
definitions: ServiceDefinition[]
}) {
const flattened = definitions.reduce(
(accum, current) => {
const { examples } = current
return accum.concat(examples)
},
[] as Example[]
)
}): JSX.Element {
const flattened = definitions.reduce((accum, current) => {
const { examples } = current
return accum.concat(examples)
}, [] as Example[])
return (
<div>
@@ -120,7 +124,7 @@ export default function Main({ pageContext }: { pageContext: PageContext }) {
)
}
function renderMain() {
function renderMain(): JSX.Element | JSX.Element[] {
const { category } = pageContext
if (searchIsInProgress) {

View File

@@ -19,7 +19,7 @@ export function MarkupModal({
isBadgeSuggestion: boolean
baseUrl: string
onRequestClose: () => void
}) {
}): JSX.Element {
return (
<Modal
ariaHideApp={false}

View File

@@ -22,7 +22,7 @@ export function MarkupModalContent({
example: RenderableExample
isBadgeSuggestion: boolean
baseUrl: string
}) {
}): JSX.Element {
let documentation: { __html: string } | undefined
let link: string | undefined
if (isBadgeSuggestion) {

View File

@@ -7,7 +7,7 @@ const description = `We serve fast and scalable informational images as badges
for GitHub, Travis CI, Jenkins, WordPress and many more services. Use them to
track the state of your projects, or for promotional purposes.`
export default function Meta() {
export default function Meta(): JSX.Element {
return (
<Helmet>
<title>

View File

@@ -50,7 +50,7 @@ export function Snippet({
snippet: string
truncate?: boolean
fontSize?: string
}) {
}): JSX.Element {
return (
<CodeContainer truncate={truncate}>
<ClickToSelect>

View File

@@ -5,7 +5,9 @@ import { InlineInput } from './common'
type StateKey = 'label' | 'message' | 'color'
type State = Record<StateKey, string>
export default function StaticBadgeMaker({ baseUrl = document.location.href }) {
export default function StaticBadgeMaker({
baseUrl = document.location.href,
}): JSX.Element {
const [values, setValues] = useState<State>({
label: '',
message: '',
@@ -16,14 +18,14 @@ export default function StaticBadgeMaker({ baseUrl = document.location.href }) {
function onChange({
target: { name, value },
}: ChangeEvent<HTMLInputElement | HTMLSelectElement>) {
}: ChangeEvent<HTMLInputElement | HTMLSelectElement>): void {
setValues({
...values,
[name]: value,
})
}
function onSubmit(e: React.FormEvent) {
function onSubmit(e: React.FormEvent): void {
e.preventDefault()
const { label, message, color } = values

View File

@@ -32,7 +32,7 @@ export default function SuggestionAndSearch({
queryChanged: (query: string) => void
onBadgeClick: (example: RenderableExample, isSuggestion: boolean) => void
baseUrl: string
}) {
}): JSX.Element {
const queryChangedDebounced = useRef(
debounce(queryChanged, 50, { leading: true })
)
@@ -43,7 +43,7 @@ export default function SuggestionAndSearch({
function onQueryChanged({
target: { value: query },
}: ChangeEvent<HTMLInputElement>) {
}: ChangeEvent<HTMLInputElement>): void {
const isUrl = query.startsWith('https://') || query.startsWith('http://')
setIsUrl(isUrl)
setProjectUrl(isUrl ? query : undefined)
@@ -51,7 +51,7 @@ export default function SuggestionAndSearch({
queryChangedDebounced.current(query)
}
async function getSuggestions() {
async function getSuggestions(): Promise<void> {
if (!projectUrl) {
setSuggestions([])
return
@@ -77,7 +77,7 @@ export default function SuggestionAndSearch({
setSuggestions(suggestions)
}
function renderSuggestions() {
function renderSuggestions(): JSX.Element | null {
if (suggestions.length === 0) {
return null
}

View File

@@ -44,7 +44,7 @@ function QueryParam({
}: {
snippet: string
documentation: JSX.Element | JSX.Element[]
}) {
}): JSX.Element {
return (
<tr>
<QueryParamSyntax>
@@ -61,7 +61,7 @@ function EscapingConversion({
}: {
lhs: JSX.Element
rhs: JSX.Element
}) {
}): JSX.Element {
return (
<tr>
<Lhs>{lhs}</Lhs>
@@ -77,7 +77,7 @@ function ColorExamples({
}: {
baseUrl: string
colors: string[]
}) {
}): JSX.Element {
return (
<span>
{colors.map((color, i) => (
@@ -91,7 +91,7 @@ function ColorExamples({
)
}
function StyleExamples({ baseUrl }: { baseUrl: string }) {
function StyleExamples({ baseUrl }: { baseUrl: string }): JSX.Element {
return (
<QueryParamTable>
<tbody>
@@ -118,7 +118,7 @@ function StyleExamples({ baseUrl }: { baseUrl: string }) {
)
}
function NamedLogos() {
function NamedLogos(): JSX.Element {
const renderLogo = (logo: string): JSX.Element => (
<LogoName key={logo}>{logo}</LogoName>
)
@@ -132,7 +132,7 @@ function NamedLogos() {
return <>{result}</>
}
function StaticBadgeEscapingRules() {
function StaticBadgeEscapingRules(): JSX.Element {
return (
<EscapingRuleTable>
<tbody>
@@ -180,7 +180,7 @@ function StaticBadgeEscapingRules() {
)
}
export default function Usage({ baseUrl }: { baseUrl: string }) {
export default function Usage({ baseUrl }: { baseUrl: string }): JSX.Element {
return (
<section>
<H2 id="your-badge">Your Badge</H2>
@@ -353,7 +353,8 @@ export default function Usage({ baseUrl }: { baseUrl: string }) {
documentation={
<span>
Set the color of the logo (hex, rgb, rgba, hsl, hsla and css
named colors supported)
named colors supported). Supported for named logos but not for
custom logos.
</span>
}
key="logoColor"

View File

@@ -1,8 +1,8 @@
export function bareLink(badgeUrl: string, link?: string, title = '') {
export function bareLink(badgeUrl: string, link?: string, title = ''): string {
return badgeUrl
}
export function html(badgeUrl: string, link?: string, title?: string) {
export function html(badgeUrl: string, link?: string, title?: string): string {
// To be more robust, this should escape the title.
const alt = title ? ` alt="${title}"` : ''
const img = `<img${alt} src="${badgeUrl}">`
@@ -13,7 +13,11 @@ export function html(badgeUrl: string, link?: string, title?: string) {
}
}
export function markdown(badgeUrl: string, link?: string, title?: string) {
export function markdown(
badgeUrl: string,
link?: string,
title?: string
): string {
const withoutLink = `![${title || ''}](${badgeUrl})`
if (link) {
return `[${withoutLink}](${link})`
@@ -26,7 +30,7 @@ export function reStructuredText(
badgeUrl: string,
link?: string,
title?: string
) {
): string {
let result = `.. image:: ${badgeUrl}`
if (title) {
result += ` :alt: ${title}`
@@ -37,7 +41,7 @@ export function reStructuredText(
return result
}
function quoteAsciiDocAttribute(attr: string | null) {
function quoteAsciiDocAttribute(attr: string | null): string {
if (attr == null) {
return 'None'
} else {
@@ -61,7 +65,7 @@ function mapValues(
export function renderAsciiDocAttributes(
positional: string[],
named: { [k: string]: string | null }
) {
): string {
// http://asciidoc.org/userguide.html#X21
const needsQuoting =
positional.some(attr => attr && attr.includes(',')) ||
@@ -83,7 +87,11 @@ export function renderAsciiDocAttributes(
}
}
export function asciiDoc(badgeUrl: string, link?: string, title?: string) {
export function asciiDoc(
badgeUrl: string,
link?: string,
title?: string
): string {
const positional = title ? [title] : []
const named = link ? { link } : ({} as { [k: string]: string })
const attrs = renderAsciiDocAttributes(positional, named)
@@ -102,7 +110,7 @@ export function generateMarkup({
link?: string
title?: string
markupFormat: MarkupFormat
}) {
}): string {
const generatorFn = {
markdown,
rst: reStructuredText,

View File

@@ -1,4 +1,4 @@
import pathToRegexp from 'path-to-regexp'
import { parse } from 'path-to-regexp'
// Given a patternToRegex `pattern` with multiple-choice options like
// `foo|bar|baz`, return an array with the options. If it can't be described
@@ -15,7 +15,7 @@ export function patternToOptions(pattern: string): string[] | undefined {
// Removes regexp for named parameters.
export function removeRegexpFromPattern(pattern: string): string {
const tokens = pathToRegexp.parse(pattern)
const tokens = parse(pattern)
const simplePattern = tokens
.map(token => {
if (typeof token === 'string') {

View File

@@ -1,6 +1,6 @@
import { navigate } from 'gatsby'
export default function redirectLegacyRoutes() {
export default function redirectLegacyRoutes(): void {
const { hash } = window.location
if (hash && hash.startsWith('#/examples/')) {
const category = hash.replace('#/examples/', '')

View File

@@ -11,6 +11,6 @@ describe('Service definition helpers', function() {
it('getDefinitionsForCategory', function() {
expect(getDefinitionsForCategory('build'))
.to.have.length.greaterThan(10)
.and.lessThan(50)
.and.lessThan(75)
})
})

View File

@@ -53,13 +53,15 @@ export interface ServiceDefinition {
export const services = definitions.services as ServiceDefinition[]
export const categories = definitions.categories as Category[]
export function findCategory(category: string) {
export function findCategory(category: string): Category | undefined {
return categories.find(({ id }) => id === category)
}
const byCategory = groupBy(services, 'category')
export function getDefinitionsForCategory(category: string) {
return byCategory[category]
export function getDefinitionsForCategory(
category: string
): ServiceDefinition[] {
return byCategory[category] || []
}
export interface Suggestion {

View File

@@ -3,10 +3,12 @@ import { predicateFromQuery } from './service-definition-set-helper'
import { Example } from '.'
describe('Badge example functions', function() {
const exampleMatchesQuery = (
function exampleMatchesQuery(
{ examples }: { examples: Example[] },
query: string
) => predicateFromQuery(query)({ examples })
): boolean {
return predicateFromQuery(query)({ examples })
}
test(exampleMatchesQuery, () => {
forCases([given({ examples: [{ title: 'node version' }] }, 'npm')]).expect(

View File

@@ -1,13 +1,15 @@
import escapeStringRegexp from 'escape-string-regexp'
import { Example, ServiceDefinition } from '.'
export function exampleMatchesRegex(example: Example, regex: RegExp) {
export function exampleMatchesRegex(example: Example, regex: RegExp): boolean {
const { title, keywords } = example
const haystack = [title].concat(keywords).join(' ')
return regex.test(haystack)
}
export function predicateFromQuery(query: string) {
export function predicateFromQuery(
query: string
): ({ examples }: { examples: Example[] }) => boolean {
const escaped = escapeStringRegexp(query)
const regex = new RegExp(escaped, 'i') // Case-insensitive.
return ({ examples }: { examples: Example[] }) =>
@@ -21,30 +23,32 @@ export default class ServiceDefinitionSetHelper {
this.definitionData = definitionData
}
public static create(definitionData: ServiceDefinition[]) {
public static create(
definitionData: ServiceDefinition[]
): ServiceDefinitionSetHelper {
return new ServiceDefinitionSetHelper(definitionData)
}
public getCategory(wantedCategory: string) {
public getCategory(wantedCategory: string): ServiceDefinitionSetHelper {
return ServiceDefinitionSetHelper.create(
this.definitionData.filter(({ category }) => category === wantedCategory)
)
}
public search(query: string) {
public search(query: string): ServiceDefinitionSetHelper {
const predicate = predicateFromQuery(query)
return ServiceDefinitionSetHelper.create(
this.definitionData.filter(predicate)
)
}
public notDeprecated() {
public notDeprecated(): ServiceDefinitionSetHelper {
return ServiceDefinitionSetHelper.create(
this.definitionData.filter(({ isDeprecated }) => !isDeprecated)
)
}
public toArray() {
public toArray(): ServiceDefinition[] {
return this.definitionData
}
}

View File

@@ -1,5 +1,4 @@
import React from 'react'
import PropTypes from 'prop-types'
import styled, { css } from 'styled-components'
import { staticBadgeUrl } from '../../core/badge-urls/make-badge-url'
import { baseUrl } from '../constants'
@@ -44,11 +43,11 @@ const JsonExampleBlock = styled.code<JsonExampleBlockProps>`
white-space: pre;
`
const JsonExample = ({ data }: { [k: string]: any }) => (
<JsonExampleBlock>{JSON.stringify(data, undefined, 2)}</JsonExampleBlock>
)
JsonExample.propTypes = {
data: PropTypes.object.isRequired,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function JsonExample({ data }: { [k: string]: any }): JSX.Element {
return (
<JsonExampleBlock>{JSON.stringify(data, undefined, 2)}</JsonExampleBlock>
)
}
const Schema = styled.dl`
@@ -89,161 +88,166 @@ const Schema = styled.dl`
}
`
const EndpointPage = () => (
<MainContainer>
<GlobalStyle />
<Meta />
<Header />
<H3>Endpoint</H3>
<Snippet snippet={`${baseUrl}/endpoint?url=...&style=...`} />
<p>Endpoint response:</p>
<JsonExample
data={{
schemaVersion: 1,
label: 'hello',
message: 'sweet world',
color: 'orange',
}}
/>
<p>Shields response:</p>
<Badge
alt="hello | sweet world"
src={staticBadgeUrl({
baseUrl,
label: 'hello',
message: 'sweet world',
color: 'orange',
})}
/>
<Explanation>
<p>
Developers rely on Shields for visual consistency and powerful
customization options. As a service provider or data provider, you can
use the endpoint badge to provide content while giving users the full
power of Shields' badge customization.
</p>
<p>
Using the endpoint badge, you can provide content for a badge through a
JSON endpoint. The content can be prerendered, or generated on the fly.
To strike a balance between responsiveness and bandwidth utilization on
one hand, and freshness on the other, cache behavior is configurable,
subject to the Shields minimum. The endpoint URL is provided to Shields
through the query string. Shields fetches it and formats the badge.
</p>
<p>
The endpoint badge is a better alternative than redirecting to the
static badge enpoint or generating SVG on your server:
</p>
<ol>
<li>
<a href="https://en.wikipedia.org/wiki/Separation_of_content_and_presentation">
Content and presentation are separate.
</a>{' '}
The service provider authors the badge, and Shields takes input from
the user to format it. As a service provider you author the badge but
don't have to concern yourself with styling. You don't even have to
pass the formatting options through to Shields.
</li>
<li>
Badge formatting is always 100% up to date. There's no need to track
updates to the npm package, badge templates, or options.
</li>
<li>
A JSON response is easy to implement; easier than an HTTP redirect. It
is trivial in almost any framework, and is more compatible with
hosting environments such as{' '}
<a href="https://runkit.com/docs/endpoint">RunKit endpoints</a>.
</li>
<li>
As a service provider you can rely on the Shields CDN. There's no need
to study the HTTP headers. Adjusting cache behavior is as simple as
setting a property in the JSON response.
</li>
</ol>
</Explanation>
<h4>Schema</h4>
<Explanation>
<p>
Breaking changes to the schema will trigger an increment to the
`schemaVersion`.
</p>
</Explanation>
<Schema>
<dt>schemaVersion</dt>
<dd>
Required. Always the number <code>1</code>.
</dd>
<dt>label</dt>
<dd>
Required. The left text, or the empty string to omit the left side of
the badge. This can be overridden by the query string.
</dd>
<dt>message</dt>
<dd>Required. Can't be empty. The right text.</dd>
<dt>color</dt>
<dd>
Default: <code>lightgrey</code>. The right color. Supports the eight
named colors above, as well as hex, rgb, rgba, hsl, hsla and css named
colors. This can be overridden by the query string.
</dd>
<dt>labelColor</dt>
<dd>
Default: <code>grey</code>. The left color. This can be overridden by
the query string.
</dd>
<dt>isError</dt>
<dd>
Default: <code>false</code>. <code>true</code> to treat this as an error
badge. This prevents the user from overriding the color. In the future
it may affect cache behavior.
</dd>
<dt>namedLogo</dt>
<dd>
Default: none. One of the named logos supported by Shields or {}
<a href="https://simpleicons.org/">simple-icons</a>. Can be overridden
by the query string.
</dd>
<dt>logoSvg</dt>
<dd>Default: none. An SVG string containing a custom logo.</dd>
<dt>logoColor</dt>
<dd>
Default: none. Same meaning as the query string. Can be overridden by
the query string.
</dd>
<dt>logoWidth</dt>
<dd>
Default: none. Same meaning as the query string. Can be overridden by
the query string.
</dd>
<dt>logoPosition</dt>
<dd>
Default: none. Same meaning as the query string. Can be overridden by
the query string.
</dd>
<dt>style</dt>
<dd>
Default: <code>flat</code>. The default template to use. Can be
overridden by the query string.
</dd>
<dt>cacheSeconds</dt>
<dd>
Default: <code>300</code>, min <code>300</code>. Set the HTTP cache
lifetime in seconds, which should respected by the Shields' CDN and
downstream users. Values below 300 will be ignored. This lets you tune
performance and traffic vs. responsiveness. The value you specify can be
overridden by the user via the query string, but only to a longer value.
</dd>
</Schema>
<h4>Customize and test</h4>
<Customizer
baseUrl={baseUrl}
exampleNamedParams={{}}
exampleQueryParams={{ url: 'https://shields.redsparr0w.com/2473/monday' }}
isPrefilled={false}
pattern="/endpoint"
title="Custom badge"
/>
<Footer baseUrl={baseUrl} />
</MainContainer>
)
export default EndpointPage
export default function EndpointPage(): JSX.Element {
return (
<MainContainer>
<GlobalStyle />
<Meta />
<Header />
<H3>Endpoint</H3>
<Snippet snippet={`${baseUrl}/endpoint?url=...&style=...`} />
<p>Endpoint response:</p>
<JsonExample
data={{
schemaVersion: 1,
label: 'hello',
message: 'sweet world',
color: 'orange',
}}
/>
<p>Shields response:</p>
<Badge
alt="hello | sweet world"
src={staticBadgeUrl({
baseUrl,
label: 'hello',
message: 'sweet world',
color: 'orange',
})}
/>
<Explanation>
<p>
Developers rely on Shields for visual consistency and powerful
customization options. As a service provider or data provider, you can
use the endpoint badge to provide content while giving users the full
power of Shields' badge customization.
</p>
<p>
Using the endpoint badge, you can provide content for a badge through
a JSON endpoint. The content can be prerendered, or generated on the
fly. To strike a balance between responsiveness and bandwidth
utilization on one hand, and freshness on the other, cache behavior is
configurable, subject to the Shields minimum. The endpoint URL is
provided to Shields through the query string. Shields fetches it and
formats the badge.
</p>
<p>
The endpoint badge is a better alternative than redirecting to the
static badge enpoint or generating SVG on your server:
</p>
<ol>
<li>
<a href="https://en.wikipedia.org/wiki/Separation_of_content_and_presentation">
Content and presentation are separate.
</a>{' '}
The service provider authors the badge, and Shields takes input from
the user to format it. As a service provider you author the badge
but don't have to concern yourself with styling. You don't even have
to pass the formatting options through to Shields.
</li>
<li>
Badge formatting is always 100% up to date. There's no need to track
updates to the npm package, badge templates, or options.
</li>
<li>
A JSON response is easy to implement; easier than an HTTP redirect.
It is trivial in almost any framework, and is more compatible with
hosting environments such as{' '}
<a href="https://runkit.com/docs/endpoint">RunKit endpoints</a>.
</li>
<li>
As a service provider you can rely on the Shields CDN. There's no
need to study the HTTP headers. Adjusting cache behavior is as
simple as setting a property in the JSON response.
</li>
</ol>
</Explanation>
<h4>Schema</h4>
<Explanation>
<p>
Breaking changes to the schema will trigger an increment to the
`schemaVersion`.
</p>
</Explanation>
<Schema>
<dt>schemaVersion</dt>
<dd>
Required. Always the number <code>1</code>.
</dd>
<dt>label</dt>
<dd>
Required. The left text, or the empty string to omit the left side of
the badge. This can be overridden by the query string.
</dd>
<dt>message</dt>
<dd>Required. Can't be empty. The right text.</dd>
<dt>color</dt>
<dd>
Default: <code>lightgrey</code>. The right color. Supports the eight
named colors above, as well as hex, rgb, rgba, hsl, hsla and css named
colors. This can be overridden by the query string.
</dd>
<dt>labelColor</dt>
<dd>
Default: <code>grey</code>. The left color. This can be overridden by
the query string.
</dd>
<dt>isError</dt>
<dd>
Default: <code>false</code>. <code>true</code> to treat this as an
error badge. This prevents the user from overriding the color. In the
future it may affect cache behavior.
</dd>
<dt>namedLogo</dt>
<dd>
Default: none. One of the named logos supported by Shields or {}
<a href="https://simpleicons.org/">simple-icons</a>. Can be overridden
by the query string.
</dd>
<dt>logoSvg</dt>
<dd>Default: none. An SVG string containing a custom logo.</dd>
<dt>logoColor</dt>
<dd>
Default: none. Same meaning as the query string. Can be overridden by
the query string.
</dd>
<dt>logoWidth</dt>
<dd>
Default: none. Same meaning as the query string. Can be overridden by
the query string.
</dd>
<dt>logoPosition</dt>
<dd>
Default: none. Same meaning as the query string. Can be overridden by
the query string.
</dd>
<dt>style</dt>
<dd>
Default: <code>flat</code>. The default template to use. Can be
overridden by the query string.
</dd>
<dt>cacheSeconds</dt>
<dd>
Default: <code>300</code>, min <code>300</code>. Set the HTTP cache
lifetime in seconds, which should be respected by the Shields' CDN and
downstream users. Values below 300 will be ignored. This lets you tune
performance and traffic vs. responsiveness. The value you specify can
be overridden by the user via the query string, but only to a longer
value.
</dd>
</Schema>
<h4>Customize and test</h4>
<Customizer
baseUrl={baseUrl}
exampleNamedParams={{}}
exampleQueryParams={{
url: 'https://shields.redsparr0w.com/2473/monday',
}}
isPrefilled={false}
pattern="/endpoint"
title="Custom badge"
/>
<Footer baseUrl={baseUrl} />
</MainContainer>
)
}

View File

@@ -1,15 +1,13 @@
'use strict'
const simpleIcons = require('simple-icons')
const originalSimpleIcons = require('simple-icons')
const { svg2base64 } = require('./svg-helpers')
function loadSimpleIcons() {
Object.keys(simpleIcons).forEach(key => {
const simpleIcons = {}
Object.keys(originalSimpleIcons).forEach(key => {
const k = key.toLowerCase().replace(/ /g, '-')
if (k !== key) {
simpleIcons[k] = simpleIcons[key]
delete simpleIcons[key]
}
simpleIcons[k] = originalSimpleIcons[key]
simpleIcons[k].base64 = {
default: svg2base64(
simpleIcons[k].svg.replace('<svg', `<svg fill="#${simpleIcons[k].hex}"`)

View File

@@ -0,0 +1,29 @@
'use strict'
const { expect } = require('chai')
const loadSimpleIcons = require('./load-simple-icons')
describe('loadSimpleIcons', function() {
let simpleIcons
before(function() {
simpleIcons = loadSimpleIcons()
})
it('prepares three color themes', function() {
expect(simpleIcons.sentry.base64).to.have.all.keys(
'default',
'light',
'dark'
)
})
it('normalizes icon keys', function() {
// original key in the simple-icons is 'Linux Foundation'
expect(simpleIcons).to.include.key('linux-foundation')
})
// https://github.com/badges/shields/issues/4016
it('excludes "get" function provided by the simple-icons', function() {
expect(simpleIcons).to.not.have.property('get')
})
})

View File

@@ -19,7 +19,7 @@ describe('Logo helpers', function() {
})
test(isDataUrl, () => {
//valid input
// valid input
given('data:image/svg+xml;base64,PHN2ZyB4bWxu').expect(true)
// invalid inputs

19611
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -22,49 +22,50 @@
"url": "https://github.com/badges/shields"
},
"dependencies": {
"@hapi/joi": "^16.1.7",
"@sentry/node": "^5.7.1",
"@hapi/joi": "^16.1.8",
"@sentry/node": "^5.15.4",
"bytes": "^3.1.0",
"camelcase": "^5.3.1",
"camp": "~17.2.4",
"chalk": "^2.4.2",
"check-node-version": "^4.0.1",
"chrome-web-store-item-property": "~1.1.2",
"config": "^3.2.4",
"chai-as-promised": "^7.1.1",
"chalk": "^3.0.0",
"check-node-version": "^4.0.3",
"chrome-web-store-item-property": "~1.2.0",
"config": "^3.3.1",
"cross-env": "^6.0.3",
"decamelize": "^3.2.0",
"deepmerge": "^4.2.2",
"dotenv": "^8.2.0",
"emojic": "^1.1.15",
"escape-string-regexp": "^2.0.0",
"fast-xml-parser": "^3.14.0",
"fast-xml-parser": "^3.16.0",
"fsos": "^1.1.6",
"gh-badges": "file:gh-badges",
"glob": "^7.1.6",
"graphql": "^14.5.8",
"graphql-tag": "^2.10.1",
"ioredis": "4.14.1",
"graphql": "^14.6.0",
"graphql-tag": "^2.10.3",
"ioredis": "4.16.2",
"joi-extension-semver": "4.0.0",
"js-yaml": "^3.13.1",
"jsonpath": "~1.0.2",
"lodash.countby": "^4.6.0",
"lodash.throttle": "^4.1.1",
"lodash.groupby": "^4.6.0",
"lodash.times": "^4.3.2",
"moment": "^2.24.0",
"node-env-flag": "^0.1.0",
"parse-link-header": "^1.0.1",
"path-to-regexp": "^3.1.0",
"path-to-regexp": "^5.0.0",
"pretty-bytes": "^5.3.0",
"priorityqueuejs": "^1.0.0",
"prom-client": "^11.5.3",
"query-string": "^6.8.3",
"request": "~2.88.0",
"semver": "~6.3.0",
"simple-icons": "1.19.1",
"xmldom": "~0.1.27",
"query-string": "^6.12.1",
"request": "~2.88.2",
"semver": "~7.3.2",
"simple-icons": "2.9.0",
"xmldom": "~0.2.1",
"xpath": "~0.0.27"
},
"scripts": {
"coverage:test:server": "echo \"Deprecated; run `npm run coverage:test:core` instead.\" && npm run coverage:test:core",
"coverage:test:core": "nyc npm run test:core",
"coverage:test:frontend": "nyc --nycrc-path .nycrc-frontend.json npm run test:frontend",
"coverage:test:package": "nyc npm run test:package",
@@ -73,7 +74,7 @@
"coverage:test:services": "nyc npm run test:services",
"coverage:clean": "rimraf .nyc_output coverage",
"precoverage:test": "run-s --silent coverage:clean defs features",
"coverage:test": "run-s --silent --continue-on-error coverage:test:server coverage:test:package coverage:test:entrypoint coverage:test:frontend coverage:test:integration",
"coverage:test": "run-s --silent --continue-on-error coverage:test:core coverage:test:package coverage:test:entrypoint coverage:test:frontend coverage:test:integration",
"coverage:report:generate": "nyc report",
"coverage:report:open": "open-cli coverage/lcov-report/index.html",
"coverage:report": "run-s --silent coverage:report:generate coverage:report:open",
@@ -81,10 +82,6 @@
"prettier": "prettier --write \"**/*.@(js|ts|tsx|md|json|yml)\"",
"prettier:check": "prettier --check \"**/*.@(js|ts|tsx|md|json|yml)\"",
"danger": "danger",
"test:server": "echo \"Deprecated; run `npm run test:core` instead.\" && npm run test:core",
"test:js:server": "echo \"Deprecated; run `npm run test:core` instead.\" && npm run test:core",
"test:js:frontend": "echo \"Deprecated; run `npm run test:frontend` instead.\" && npm run test:frontend",
"test:js:package": "echo \"Deprecated; run `npm run test:package` instead.\" && npm run test:package",
"test:frontend": "cross-env NODE_ENV=test ts-mocha --config .mocharc-frontend.yml \"frontend/**/*.spec.@(js|ts|tsx)\"",
"test:e2e": "cypress run",
"test:core": "cross-env NODE_CONFIG_ENV=test mocha \"core/**/*.spec.js\" \"lib/**/*.spec.js\" \"services/**/*.spec.js\"",
@@ -97,7 +94,7 @@
"test:services:pr:run": "cross-env NODE_CONFIG_ENV=test mocha --delay core/service-test-runner/cli.js --stdin < pull-request-services.log",
"test:services:pr": "run-s --silent test:services:pr:prepare test:services:pr:run",
"pretest": "run-s --silent defs features",
"test": "run-s --silent --continue-on-error lint test:frontend test:package test:server test:entrypoint prettier:check",
"test": "run-s --silent --continue-on-error lint test:frontend test:package test:core test:entrypoint prettier:check",
"check-types:frontend": "tsc --noEmit --project .",
"depcheck": "check-node-version --node \">= 8.0\"",
"postinstall": "run-s --silent depcheck",
@@ -111,6 +108,8 @@
"start:server:e2e-on-build": "node server 8080",
"start:server": "cross-env NODE_CONFIG_ENV=development nodemon server 8080",
"debug:server": "cross-env NODE_CONFIG_ENV=development nodemon --inspect server.js 8080",
"profile:server": "cross-env NODE_CONFIG_ENV=development node --prof server 8080",
"benchmark:badge": "cross-env NODE_CONFIG_ENV=test node scripts/benchmark-performance.js --iterations 10100 | node scripts/capture-timings.js --warmup-iterations 100",
"prestart": "run-s --silent depcheck defs features",
"start": "concurrently --names server,frontend \"npm run start:server\" \"cross-env GATSBY_BASE_URL=http://localhost:8080 gatsby develop --port 3000\"",
"e2e": "start-server-and-test start http://localhost:3000 test:e2e",
@@ -144,117 +143,111 @@
]
},
"devDependencies": {
"@babel/core": "^7.7.2",
"@babel/plugin-proposal-class-properties": "^7.7.0",
"@babel/plugin-proposal-object-rest-spread": "^7.6.2",
"@babel/polyfill": "^7.7.0",
"@babel/preset-env": "^7.7.1",
"@babel/register": "7.7.0",
"@babel/core": "^7.9.0",
"@babel/polyfill": "^7.8.7",
"@babel/register": "7.9.0",
"@mapbox/react-click-to-select": "^2.2.0",
"@types/chai": "^4.2.4",
"@types/chai": "^4.2.11",
"@types/chai-enzyme": "^0.6.7",
"@types/enzyme": "^3.10.3",
"@types/enzyme": "^3.10.5",
"@types/lodash.debounce": "^4.0.6",
"@types/lodash.groupby": "^4.6.6",
"@types/mocha": "^5.2.7",
"@types/node": "^12.12.6",
"@types/react-helmet": "^5.0.14",
"@types/react-modal": "^3.10.0",
"@types/react-select": "^3.0.8",
"@types/mocha": "^7.0.2",
"@types/node": "^13.11.1",
"@types/react-helmet": "^5.0.15",
"@types/react-modal": "^3.10.5",
"@types/react-select": "^3.0.11",
"@types/styled-components": "4.1.8",
"@typescript-eslint/eslint-plugin": "^1.13.0",
"@typescript-eslint/parser": "^1.13.0",
"babel-plugin-inline-react-svg": "^1.1.0",
"babel-plugin-istanbul": "^5.2.0",
"babel-preset-gatsby": "^0.2.20",
"@typescript-eslint/eslint-plugin": "^2.28.0",
"@typescript-eslint/parser": "^2.28.0",
"babel-plugin-inline-react-svg": "^1.1.1",
"babel-plugin-istanbul": "^6.0.0",
"babel-preset-gatsby": "^0.2.36",
"caller": "^1.0.1",
"chai": "^4.1.2",
"chai-datetime": "^1.5.0",
"chai-enzyme": "^1.0.0-beta.1",
"chai-string": "^1.4.0",
"cheerio": "^1.0.0-rc.3",
"child-process-promise": "^2.2.1",
"clipboard-copy": "^3.1.0",
"concurrently": "^5.0.0",
"cypress": "^3.6.0",
"danger": "^9.2.4",
"concurrently": "^5.1.0",
"cypress": "^4.4.0",
"danger": "^10.1.1",
"danger-plugin-no-test-shortcuts": "^2.0.0",
"enzyme": "^3.10.0",
"enzyme-adapter-react-16": "^1.15.1",
"eslint": "^5.16.0",
"eslint-config-prettier": "^6.5.0",
"eslint-config-standard": "^12.0.0",
"eslint-config-standard-jsx": "^8.1.0",
"eslint-config-standard-react": "^9.0.0",
"deepmerge": "^4.2.2",
"enzyme": "^3.11.0",
"enzyme-adapter-react-16": "^1.15.2",
"eslint": "^6.8.0",
"eslint-config-prettier": "^6.10.1",
"eslint-config-standard": "^14.1.1",
"eslint-config-standard-react": "^9.2.0",
"eslint-plugin-chai-friendly": "^0.5.0",
"eslint-plugin-cypress": "^2.7.0",
"eslint-plugin-import": "^2.18.2",
"eslint-plugin-jsdoc": "^17.1.1",
"eslint-plugin-mocha": "^6.2.1",
"eslint-plugin-cypress": "^2.10.3",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-jsdoc": "^20.4.0",
"eslint-plugin-mocha": "^6.3.0",
"eslint-plugin-no-extension-in-require": "^0.2.0",
"eslint-plugin-node": "^10.0.0",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-react": "^7.16.0",
"eslint-plugin-react-hooks": "^2.2.0",
"eslint-plugin-sort-class-members": "^1.6.0",
"eslint-plugin-react": "^7.19.0",
"eslint-plugin-react-hooks": "^2.5.1",
"eslint-plugin-sort-class-members": "^1.7.0",
"eslint-plugin-standard": "^4.0.1",
"fetch-ponyfill": "^6.1.0",
"fs-readfile-promise": "^3.0.1",
"gatsby": "2.17.10",
"gatsby-plugin-catch-links": "^2.1.15",
"gatsby-plugin-page-creator": "^2.1.28",
"gatsby-plugin-react-helmet": "^3.1.13",
"gatsby-plugin-remove-trailing-slashes": "^2.1.12",
"gatsby-plugin-styled-components": "^3.1.11",
"gatsby-plugin-typescript": "^2.1.15",
"gatsby": "2.19.41",
"gatsby-plugin-catch-links": "^2.1.28",
"gatsby-plugin-page-creator": "^2.1.46",
"gatsby-plugin-react-helmet": "^3.1.24",
"gatsby-plugin-remove-trailing-slashes": "^2.1.24",
"gatsby-plugin-styled-components": "^3.1.21",
"gatsby-plugin-typescript": "^2.2.5",
"got": "^9.6.0",
"humanize-string": "^2.1.0",
"husky": "^3.0.9",
"husky": "^3.1.0",
"icedfrisby": "3.0.0",
"icedfrisby-nock": "^2.0.0",
"is-png": "^2.0.0",
"is-svg": "^4.2.0",
"is-svg": "^4.2.1",
"js-yaml-loader": "^1.2.2",
"jsdoc": "^3.6.3",
"lint-staged": "^9.4.2",
"jsdoc": "^3.6.4",
"lint-staged": "^9.5.0",
"lodash.debounce": "^4.0.8",
"lodash.difference": "^4.5.0",
"lodash.groupby": "^4.6.0",
"minimist": "^1.2.0",
"mkdirp": "^0.5.1",
"mocha": "^6.2.2",
"minimist": "^1.2.5",
"mocha": "^6.2.3",
"mocha-env-reporter": "^4.0.0",
"mocha-junit-reporter": "^1.23.1",
"mocha-junit-reporter": "^1.23.3",
"mocha-yaml-loader": "^1.0.3",
"nock": "11.7.0",
"node-mocks-http": "^1.8.0",
"nodemon": "^1.19.4",
"nock": "11.9.1",
"node-mocks-http": "^1.8.1",
"nodemon": "^2.0.3",
"npm-run-all": "^4.1.5",
"nyc": "^14.1.1",
"nyc": "^15.0.1",
"opn-cli": "^5.0.0",
"portfinder": "^1.0.25",
"prettier": "1.18.2",
"react": "^16.11.0",
"react-dom": "^16.11.0",
"react-error-overlay": "^6.0.3",
"prettier": "1.19.1",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-error-overlay": "^3.0.0",
"react-helmet": "^5.2.1",
"react-modal": "^3.11.1",
"react-pose": "^4.0.9",
"react-select": "^3.0.8",
"react-modal": "^3.11.2",
"react-pose": "^4.0.10",
"react-select": "^3.1.0",
"read-all-stdin-sync": "^1.0.5",
"redis-server": "^1.2.2",
"require-hacker": "^3.0.1",
"rimraf": "^3.0.0",
"rimraf": "^3.0.2",
"sazerac": "^1.1.0",
"sinon": "^7.5.0",
"sinon-chai": "^3.3.0",
"snap-shot-it": "^7.9.0",
"start-server-and-test": "^1.10.6",
"styled-components": "^4.4.1",
"sinon": "^8.1.1",
"sinon-chai": "^3.5.0",
"snap-shot-it": "^7.9.3",
"start-server-and-test": "1.10.7",
"styled-components": "^5.1.0",
"tmp": "0.1.0",
"ts-mocha": "^6.0.0",
"typescript": "^3.6.4",
"url": "^0.11.0",
"walkdir": "0.4.1"
"ts-mocha": "^7.0.0",
"typescript": "^3.8.3"
},
"engines": {
"node": "^10.16.3",

View File

@@ -10,7 +10,10 @@ const trace = require('../core/base-service/trace')
function normalizeBadgeUrl(url) {
// Provide a base URL in order to accept fragments.
const { pathname, searchParams } = new URL(url, 'http://example.com')
const newPath = pathname.replace('.svg', '.json')
let newPath = pathname.replace('.svg', '')
if (!newPath.endsWith('.json')) {
newPath = `${newPath}.json`
}
return `${newPath}?${searchParams.toString()}`
}

View File

@@ -0,0 +1,26 @@
'use strict'
const config = require('config').util.toObject()
const got = require('got')
const minimist = require('minimist')
const Server = require('../core/server/server')
async function main() {
const server = new Server(config)
await server.start()
const args = minimist(process.argv)
const iterations = parseInt(args.iterations) || 10000
for (let i = 0; i < iterations; ++i) {
await got(`${server.baseUrl}badge/coverage-${i}-green.svg`)
}
await server.stop()
}
;(async () => {
try {
await main()
} catch (e) {
console.error(e)
process.exit(1)
}
})()

View File

@@ -1,11 +0,0 @@
#!/bin/sh
PROFILE_MAKE_BADGE=1 node server 1111 >perftest.log &
sleep 2
for ((i=0;i<10000;i++)); do
curl -s http://localhost:1111/badge/coverage-"$i"%-green.svg >/dev/null
done
kill $(jobs -p)
<perftest.log grep 'makeBadge total' | \
grep -Eo '[0-9\.]+' | \
awk '{s+=$1;n++} END {print s/n}'

View File

@@ -0,0 +1,61 @@
'use strict'
const readline = require('readline')
const minimist = require('minimist')
async function captureTimings(warmupIterations) {
const rl = readline.createInterface({
input: process.stdin,
})
const times = {}
let timingsCount = 0
let labelsCount = 0
const timing = /^(.+): ([0-9.]+)ms$/i
for await (const line of rl) {
const match = timing.exec(line)
if (match) {
labelsCount = Object.keys(times).length
if (timingsCount > warmupIterations * labelsCount) {
const label = match[1]
const time = parseFloat(match[2])
times[label] = time + (times[label] || 0)
}
++timingsCount
}
}
return { times, iterations: timingsCount / labelsCount }
}
function logResults({ times, iterations, warmupIterations }) {
if (isNaN(iterations)) {
console.log(
`No timings captured. Have you included console.time statements in the badge creation code path?`
)
} else {
const timedIterations = iterations - warmupIterations
for (const [label, time] of Object.entries(times)) {
const averageTime = time / timedIterations
console.log(
`Average '${label}' time over ${timedIterations} iterations: ${averageTime}ms`
)
}
}
}
async function main() {
const args = minimist(process.argv)
const warmupIterations = parseInt(args['warmup-iterations']) || 100
const { times, iterations } = await captureTimings(warmupIterations)
logResults({ times, iterations, warmupIterations })
}
;(async () => {
try {
await main()
} catch (e) {
console.error(e)
process.exit(1)
}
})()

View File

@@ -16,7 +16,7 @@ Sentry.init({
const filtered = integrations.filter(
integration => !disabledIntegrations.includes(integration.name)
)
if (filtered.length != integrations.length - disabledIntegrations.length) {
if (filtered.length !== integrations.length - disabledIntegrations.length) {
throw Error(
`An error occurred while filtering integrations. The following inetgrations were found: ${integrations.map(
({ name }) => name

View File

@@ -2,8 +2,8 @@
const { metric } = require('../text-formatters')
const { downloadCount } = require('../color-formatters')
const { BaseAmoService, keywords } = require('./amo-base')
const { redirector } = require('..')
const { BaseAmoService, keywords } = require('./amo-base')
const documentation = `
<p>

View File

@@ -17,5 +17,5 @@ t.create('Weekly Downloads (not found)')
.expectBadge({ label: 'downloads', message: 'not found' })
t.create('/d URL should redirect to /dw')
.get('/d/dustman.json')
.expectBadge({ label: 'downloads', message: isMetricOverTimePeriod })
.get('/d/dustman.svg')
.expectRedirect('/amo/dw/dustman.svg')

View File

@@ -10,6 +10,10 @@ const schema = Joi.object({
status: isBuildStatus,
jobs: Joi.array()
.items({
name: Joi.string()
.allow('')
.required(),
status: isBuildStatus,
testsCount: nonNegativeInteger,
passedTestsCount: nonNegativeInteger,
failedTestsCount: nonNegativeInteger,

View File

@@ -0,0 +1,16 @@
'use strict'
const { redirector } = require('..')
module.exports = [
redirector({
category: 'build',
route: {
base: 'appveyor/ci',
pattern: ':user/:repo/:branch*',
},
transformPath: ({ user, repo, branch }) =>
`/appveyor/build/${user}/${repo}${branch ? `/${branch}` : ''}`,
dateAdded: new Date('2019-12-10'),
}),
]

View File

@@ -0,0 +1,23 @@
'use strict'
const { ServiceTester } = require('../tester')
const t = (module.exports = new ServiceTester({
id: 'AppveyorBuildRedirect',
title: 'AppveyorBuildRedirect',
pathPrefix: '/appveyor/ci',
}))
t.create('Appveyor CI')
.get('/gruntjs/grunt', {
followRedirect: false,
})
.expectStatus(301)
.expectHeader('Location', '/appveyor/build/gruntjs/grunt.svg')
t.create('Appveyor CI (branch)')
.get('/gruntjs/grunt/develop', {
followRedirect: false,
})
.expectStatus(301)
.expectHeader('Location', '/appveyor/build/gruntjs/grunt/develop.svg')

View File

@@ -3,9 +3,9 @@
const { renderBuildStatusBadge } = require('../build-status')
const AppVeyorBase = require('./appveyor-base')
module.exports = class AppVeyorCi extends AppVeyorBase {
module.exports = class AppVeyorBuild extends AppVeyorBase {
static get route() {
return this.buildRoute('appveyor/ci')
return this.buildRoute('appveyor/build')
}
static get examples() {
@@ -31,7 +31,7 @@ module.exports = class AppVeyorCi extends AppVeyorBase {
async handle({ user, repo, branch }) {
const data = await this.fetch({ user, repo, branch })
if (!data.hasOwnProperty('build')) {
if (!('build' in data)) {
// this project exists but no builds have been run on it yet
return this.constructor.render({ status: 'no builds found' })
}

View File

@@ -0,0 +1,68 @@
'use strict'
const { renderBuildStatusBadge } = require('../build-status')
const { NotFound } = require('..')
const AppVeyorBase = require('./appveyor-base')
module.exports = class AppVeyorJobBuild extends AppVeyorBase {
static get route() {
return {
base: 'appveyor/job/build',
pattern: ':user/:repo/:job/:branch*',
}
}
static get examples() {
return [
{
title: 'AppVeyor Job',
pattern: ':user/:repo/:job',
namedParams: {
user: 'wpmgprostotema',
repo: 'voicetranscoder',
job: 'Linux',
},
staticPreview: renderBuildStatusBadge({ status: 'success' }),
},
{
title: 'AppVeyor Job branch',
pattern: ':user/:repo/:job/:branch',
namedParams: {
user: 'wpmgprostotema',
repo: 'voicetranscoder',
job: 'Windows',
branch: 'master',
},
staticPreview: renderBuildStatusBadge({ status: 'success' }),
},
]
}
transform({ data, jobName }) {
if (!('build' in data)) {
// this project exists but no builds have been run on it yet
return { status: 'no builds found' }
}
const {
build: { jobs },
} = data
if (!jobs) {
throw new NotFound({ prettyMessage: 'no jobs found' })
}
const job = jobs.find(j => j.name === jobName)
if (!job) {
throw new NotFound({ prettyMessage: 'job not found' })
}
return { status: job.status }
}
async handle({ user, repo, job, branch }) {
const data = await this.fetch({ user, repo, branch })
const { status } = this.transform({ data, jobName: job })
return renderBuildStatusBadge({ status })
}
}

Some files were not shown because too many files have changed in this diff Show More