* Build(deps-dev): bump @typescript-eslint/eslint-plugin Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.34.0 to 4.19.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/v4.19.0/packages/eslint-plugin) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * chore: update eslint camelcase rule * chore: eslint camelcase updates for wordpress * chore: fix eslint camelcase for misc other services * chore: fix eslint camelcase issue in github and gitlab * chore: run prettier * chore: account for JSX globals * deps: bump typescript-eslint-parser to v4 * chore: frontend lint changes * chore: update eslint config to only run @typescript-eslint/explicit-module-boundary-types on ts files Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Co-authored-by: Caleb Cartwright <caleb.cartwright@outlook.com>
172 lines
4.2 KiB
JavaScript
172 lines
4.2 KiB
JavaScript
'use strict'
|
|
|
|
const { NotFound } = require('..')
|
|
const { addv } = require('../text-formatters')
|
|
const { version: versionColor } = require('../color-formatters')
|
|
const BaseWordpress = require('./wordpress-base')
|
|
const { versionColorForWordpressVersion } = require('./wordpress-version-color')
|
|
|
|
const extensionData = {
|
|
plugin: {
|
|
capt: 'Plugin',
|
|
exampleSlug: 'bbpress',
|
|
},
|
|
theme: {
|
|
capt: 'Theme',
|
|
exampleSlug: 'twentytwenty',
|
|
},
|
|
}
|
|
|
|
function WordpressRequiresVersion(extensionType) {
|
|
const { capt, exampleSlug } = extensionData[extensionType]
|
|
|
|
return class WordpressRequiresVersion extends BaseWordpress {
|
|
static name = `Wordpress${capt}RequiresVersion`
|
|
|
|
static category = 'platform-support'
|
|
|
|
static route = {
|
|
base: `wordpress/${extensionType}/wp-version`,
|
|
pattern: ':slug',
|
|
}
|
|
|
|
static examples = [
|
|
{
|
|
title: `WordPress ${capt}: Required WP Version`,
|
|
namedParams: { slug: exampleSlug },
|
|
staticPreview: this.render({ wordpressVersion: '4.8' }),
|
|
},
|
|
]
|
|
|
|
static defaultBadgeData = { label: 'wordpress' }
|
|
|
|
static render({ wordpressVersion }) {
|
|
return {
|
|
message: addv(wordpressVersion),
|
|
color: versionColor(wordpressVersion),
|
|
}
|
|
}
|
|
|
|
async handle({ slug }) {
|
|
const { requires: wordpressVersion } = await this.fetch({
|
|
extensionType,
|
|
slug,
|
|
})
|
|
|
|
if (wordpressVersion === false) {
|
|
throw new NotFound({
|
|
prettyMessage: `not set for this ${extensionType}`,
|
|
})
|
|
}
|
|
|
|
return this.constructor.render({ wordpressVersion })
|
|
}
|
|
}
|
|
}
|
|
|
|
class WordpressPluginTestedVersion extends BaseWordpress {
|
|
static category = 'platform-support'
|
|
|
|
static route = {
|
|
base: `wordpress/plugin/tested`,
|
|
pattern: ':slug',
|
|
}
|
|
|
|
static examples = [
|
|
{
|
|
title: 'WordPress Plugin: Tested WP Version',
|
|
namedParams: { slug: 'bbpress' },
|
|
staticPreview: this.renderStaticPreview({
|
|
testedVersion: '4.9.8',
|
|
}),
|
|
},
|
|
]
|
|
|
|
static defaultBadgeData = { label: 'wordpress' }
|
|
|
|
static renderStaticPreview({ testedVersion }) {
|
|
// Since this badge has an async `render()` function, but `get examples()` has to
|
|
// be synchronous, this method exists. It should return the same value as the
|
|
// real `render()`.
|
|
return {
|
|
message: `${addv(testedVersion)} tested`,
|
|
color: 'brightgreen',
|
|
}
|
|
}
|
|
|
|
static async render({ testedVersion }) {
|
|
// Atypically, the `render()` function of this badge is `async` because it needs to pull
|
|
// data from the server.
|
|
return {
|
|
message: `${addv(testedVersion)} tested`,
|
|
color: await versionColorForWordpressVersion(testedVersion),
|
|
}
|
|
}
|
|
|
|
async handle({ slug }) {
|
|
const { tested: testedVersion } = await this.fetch({
|
|
extensionType: 'plugin',
|
|
slug,
|
|
})
|
|
return this.constructor.render({ testedVersion })
|
|
}
|
|
}
|
|
|
|
function RequiresPHPVersionForType(extensionType) {
|
|
const { capt, exampleSlug } = extensionData[extensionType]
|
|
|
|
return class WordpressRequiresPHPVersion extends BaseWordpress {
|
|
static name = `Wordpress${capt}RequiresPHPVersion`
|
|
|
|
static category = 'platform-support'
|
|
|
|
static route = {
|
|
base: `wordpress/${extensionType}/required-php`,
|
|
pattern: ':slug',
|
|
}
|
|
|
|
static examples = [
|
|
{
|
|
title: `WordPress ${capt} Required PHP Version`,
|
|
namedParams: { slug: exampleSlug },
|
|
staticPreview: this.render({ version: '5.5' }),
|
|
},
|
|
]
|
|
|
|
static defaultBadgeData = { label: 'php' }
|
|
|
|
static render({ version }) {
|
|
return {
|
|
label: 'php',
|
|
message: `>=${version}`,
|
|
color: versionColor(version),
|
|
}
|
|
}
|
|
|
|
async handle({ slug }) {
|
|
const { requires_php: requiresPhp } = await this.fetch({
|
|
extensionType,
|
|
slug,
|
|
})
|
|
|
|
if (requiresPhp === false) {
|
|
throw new NotFound({
|
|
prettyMessage: `not set for this ${extensionType}`,
|
|
})
|
|
}
|
|
|
|
return this.constructor.render({
|
|
version: requiresPhp,
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
const requiredPhp = ['plugin', 'theme'].map(RequiresPHPVersionForType)
|
|
const requiresVersion = ['plugin', 'theme'].map(WordpressRequiresVersion)
|
|
module.exports = [
|
|
...requiredPhp,
|
|
...requiresVersion,
|
|
WordpressPluginTestedVersion,
|
|
]
|