From a4f41d62e2b46078ec8e8e34440084a96ff5a113 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Wed, 31 Aug 2022 15:30:23 -0600 Subject: [PATCH] fix: use messages (#106) --- .eslintrc.js | 6 +- messages/dev.generate.command.md | 8 +- messages/dev.generate.hook.md | 4 +- messages/dev.hook.md | 7 ++ messages/plugin.generator.md | 35 +++++++ package.json | 5 +- src/commands/dev/generate/command.ts | 19 +++- src/commands/dev/generate/hook.ts | 13 ++- src/commands/dev/generate/library.ts | 6 +- src/commands/dev/generate/plugin.ts | 2 +- src/commands/dev/hook.ts | 11 ++- src/generators/plugin.ts | 33 +++++-- yarn.lock | 139 ++++++++++++++++----------- 13 files changed, 198 insertions(+), 90 deletions(-) create mode 100644 messages/dev.hook.md create mode 100644 messages/plugin.generator.md diff --git a/.eslintrc.js b/.eslintrc.js index 83ad149c..7739005e 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -5,5 +5,9 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ module.exports = { - extends: ['eslint-config-salesforce-typescript', 'eslint-config-salesforce-license'], + extends: [ + 'eslint-config-salesforce-typescript', + 'eslint-config-salesforce-license', + 'plugin:sf-plugin/recommended' + ], }; diff --git a/messages/dev.generate.command.md b/messages/dev.generate.command.md index 88d729fd..4ba3d543 100644 --- a/messages/dev.generate.command.md +++ b/messages/dev.generate.command.md @@ -6,19 +6,19 @@ Generate a new sf command. This will generate a basic hello world command, a .md file for messages, and test files. -# flags.force.description +# flags.force.summary Overwrite existing files. -# flags.nuts.description +# flags.nuts.summary Generate a NUT test file for the command. -# flags.unit.description +# flags.unit.summary Generate a unit test file for the command. -# flags.name.description +# flags.name.summary Name of the new command. Must be separated by colons. diff --git a/messages/dev.generate.hook.md b/messages/dev.generate.hook.md index 4abddf95..fbd63780 100644 --- a/messages/dev.generate.hook.md +++ b/messages/dev.generate.hook.md @@ -6,11 +6,11 @@ Generate a new sf hook. This will generate a basic hook, add the hook to the package.json, and a generate a test file. -# flags.force.description +# flags.force.summary Overwrite existing files. -# flags.event.description +# flags.event.summary Event to run hook on. diff --git a/messages/dev.hook.md b/messages/dev.hook.md new file mode 100644 index 00000000..382e8f4b --- /dev/null +++ b/messages/dev.hook.md @@ -0,0 +1,7 @@ +# summary + +Run a hook. For testing purposes only. + +# flags.plugin.summary + +Specific plugin from which to execute hook diff --git a/messages/plugin.generator.md b/messages/plugin.generator.md new file mode 100644 index 00000000..1e5928ee --- /dev/null +++ b/messages/plugin.generator.md @@ -0,0 +1,35 @@ +# info.start + +Time to build an sf plugin! Version %s + +# question.internal + +Are you building a plugin for an internal Salesforce team + +# question.internal.name + +Name (must start with plugin-) + +# question.external.name + +Name + +# error.InvalidName + +Name must start with plugin- and be lowercase + +# question.description + +Description + +# question.author + +Author + +# question.code-coverage + +What % code coverage do you want to enforce + +# question.hooks + +Which commands do you plan to extend diff --git a/package.json b/package.json index 642efd6b..05e98b11 100644 --- a/package.json +++ b/package.json @@ -30,8 +30,8 @@ "@types/shelljs": "^0.8.10", "@types/yeoman-generator": "^5.2.10", "@types/yosay": "^2.0.1", - "@typescript-eslint/eslint-plugin": "^4.2.0", - "@typescript-eslint/parser": "^4.33.0", + "@typescript-eslint/eslint-plugin": "^5.36.1", + "@typescript-eslint/parser": "^5.36.1", "chai": "^4.2.0", "cz-conventional-changelog": "^3.3.0", "eslint": "^7.32.0", @@ -43,6 +43,7 @@ "eslint-plugin-import": "2.26.0", "eslint-plugin-jsdoc": "^35.1.2", "eslint-plugin-prettier": "^3.4.1", + "eslint-plugin-sf-plugin": "^1.1.0", "husky": "^7.0.4", "lint-staged": "^11.2.6", "mocha": "^9.1.3", diff --git a/src/commands/dev/generate/command.ts b/src/commands/dev/generate/command.ts index e9ad0bb1..58382408 100644 --- a/src/commands/dev/generate/command.ts +++ b/src/commands/dev/generate/command.ts @@ -10,7 +10,16 @@ import { SfCommand } from '@salesforce/sf-plugins-core'; import { fileExists, generate } from '../../../util'; Messages.importMessagesDirectory(__dirname); -const messages = Messages.loadMessages('@salesforce/plugin-dev', 'dev.generate.command'); +const messages = Messages.load('@salesforce/plugin-dev', 'dev.generate.command', [ + 'summary', + 'description', + 'examples', + 'flags.name.summary', + 'flags.force.summary', + 'flags.nuts.summary', + 'flags.unit.summary', + 'errors.InvalidDir', +]); export default class GenerateCommand extends SfCommand { public static enableJsonFlag = false; @@ -21,18 +30,18 @@ export default class GenerateCommand extends SfCommand { public static flags = { name: Flags.string({ required: true, - description: messages.getMessage('flags.name.description'), + summary: messages.getMessage('flags.name.summary'), }), force: Flags.boolean({ - description: messages.getMessage('flags.force.description'), + summary: messages.getMessage('flags.force.summary'), }), nuts: Flags.boolean({ - description: messages.getMessage('flags.nuts.description'), + summary: messages.getMessage('flags.nuts.summary'), allowNo: true, default: true, }), unit: Flags.boolean({ - description: messages.getMessage('flags.unit.description'), + summary: messages.getMessage('flags.unit.summary'), allowNo: true, default: false, }), diff --git a/src/commands/dev/generate/hook.ts b/src/commands/dev/generate/hook.ts index b7cc2786..f755bf49 100644 --- a/src/commands/dev/generate/hook.ts +++ b/src/commands/dev/generate/hook.ts @@ -11,7 +11,14 @@ import { fileExists, generate } from '../../../util'; import { Hook } from '../../../types'; Messages.importMessagesDirectory(__dirname); -const messages = Messages.loadMessages('@salesforce/plugin-dev', 'dev.generate.hook'); +const messages = Messages.load('@salesforce/plugin-dev', 'dev.generate.hook', [ + 'summary', + 'description', + 'examples', + 'flags.force.summary', + 'flags.event.summary', + 'errors.InvalidDir', +]); export default class GenerateHook extends SfCommand { public static enableJsonFlag = false; @@ -21,10 +28,10 @@ export default class GenerateHook extends SfCommand { public static flags = { force: Flags.boolean({ - description: messages.getMessage('flags.force.description'), + summary: messages.getMessage('flags.force.summary'), }), event: Flags.string({ - description: messages.getMessage('flags.event.description'), + summary: messages.getMessage('flags.event.summary'), options: Object.keys(Hook), required: true, }), diff --git a/src/commands/dev/generate/library.ts b/src/commands/dev/generate/library.ts index 89f5023b..65f79c9e 100644 --- a/src/commands/dev/generate/library.ts +++ b/src/commands/dev/generate/library.ts @@ -9,7 +9,11 @@ import { SfCommand } from '@salesforce/sf-plugins-core'; import { generate } from '../../../util'; Messages.importMessagesDirectory(__dirname); -const messages = Messages.loadMessages('@salesforce/plugin-dev', 'dev.generate.library'); +const messages = Messages.load('@salesforce/plugin-dev', 'dev.generate.library', [ + 'summary', + 'description', + 'examples', +]); export default class GenerateLibrary extends SfCommand { public static enableJsonFlag = false; diff --git a/src/commands/dev/generate/plugin.ts b/src/commands/dev/generate/plugin.ts index 1524bdae..7daa771c 100644 --- a/src/commands/dev/generate/plugin.ts +++ b/src/commands/dev/generate/plugin.ts @@ -9,7 +9,7 @@ import { SfCommand } from '@salesforce/sf-plugins-core'; import { generate } from '../../../util'; Messages.importMessagesDirectory(__dirname); -const messages = Messages.loadMessages('@salesforce/plugin-dev', 'dev.generate.plugin'); +const messages = Messages.load('@salesforce/plugin-dev', 'dev.generate.plugin', ['summary', 'description', 'examples']); export default class GeneratePlugin extends SfCommand { public static enableJsonFlag = false; diff --git a/src/commands/dev/hook.ts b/src/commands/dev/hook.ts index fd55e0f3..8d7b99a9 100644 --- a/src/commands/dev/hook.ts +++ b/src/commands/dev/hook.ts @@ -6,11 +6,15 @@ */ import { Flags, Hook as OclifHook } from '@oclif/core'; +import { Messages } from '@salesforce/core'; import { SfCommand, SfHook } from '@salesforce/sf-plugins-core'; import { AnyJson } from '@salesforce/ts-types'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/plugin-dev', 'dev.hook', ['summary', 'flags.plugin.summary']); + export default class Hook extends SfCommand> { - public static readonly summary = 'Run a hook. For testing purposes only.'; + public static readonly summary = messages.getMessage('summary'); public static readonly examples = [ { description: 'Execute a hook by name:', @@ -24,10 +28,11 @@ export default class Hook extends SfCommand> { public static flags = { plugin: Flags.string({ - description: 'Specific plugin from which to execute hook', + summary: messages.getMessage('flags.plugin.summary'), char: 'p', }), }; + public static args = [ { name: 'hook', @@ -51,7 +56,7 @@ export default class Hook extends SfCommand> { if (!this.jsonEnabled()) { results.successes.forEach(({ result, plugin }) => { this.styledHeader(plugin.name); - this.styledJSON(result); + this.styledJSON(result as AnyJson); }); results.failures.forEach(({ error, plugin }) => { diff --git a/src/generators/plugin.ts b/src/generators/plugin.ts index b418c6fc..a9838979 100644 --- a/src/generators/plugin.ts +++ b/src/generators/plugin.ts @@ -12,9 +12,23 @@ import yosay = require('yosay'); import { exec } from 'shelljs'; import replace = require('replace-in-file'); import { camelCase } from 'change-case'; +import { Messages } from '@salesforce/core'; import { Hook, NYC, PackageJson } from '../types'; import { addHookToPackageJson, readJson } from '../util'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/plugin-dev', 'plugin.generator', [ + 'info.start', + 'question.internal', + 'question.internal.name', + 'question.external.name', + 'question.description', + 'question.author', + 'question.code-coverage', + 'question.hooks', + 'error.InvalidName', +]); + // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-assignment const { version } = require('../../package.json'); @@ -37,52 +51,51 @@ export default class Plugin extends Generator { } public async prompting(): Promise { - const msg = 'Time to build an sf plugin!'; + this.log(yosay(messages.getMessage('info.start', [version as string]))); - this.log(yosay(`${msg} Version: ${version as string}`)); this.githubUsername = await this.getGitUsername(); this.answers = await this.prompt([ { type: 'confirm', name: 'internal', - message: 'Are you building a plugin for an internal Salesforce team?', + message: messages.getMessage('question.internal'), }, { type: 'input', name: 'name', - message: 'Name (must start with plugin-)', + message: messages.getMessage('question.internal.name'), validate: (input: string): boolean | string => { const result = /plugin-[a-z]+$/.test(input); if (result) return true; - return 'Name must start with plugin- and be lowercase'; + return messages.getMessage('error.InvalidName'); }, when: (answers: { internal: boolean }): boolean => answers.internal, }, { type: 'input', name: 'name', - message: 'Name', + message: messages.getMessage('question.external.name'), validate: (input: string): boolean => Boolean(input), when: (answers: { internal: boolean }): boolean => !answers.internal, }, { type: 'input', name: 'description', - message: 'Description', + message: messages.getMessage('question.description'), }, { type: 'input', name: 'author', - message: 'author', + message: messages.getMessage('question.author'), default: this.githubUsername, when: (answers: { internal: boolean }): boolean => !answers.internal, }, { type: 'list', name: 'codeCoverage', - message: 'What % code coverage do you want to enforce', + message: messages.getMessage('question.code-coverage'), default: '50%', choices: ['0%', '25%', '50%', '75%', '90%', '100%'], when: (answers: { internal: boolean }): boolean => !answers.internal, @@ -90,7 +103,7 @@ export default class Plugin extends Generator { { type: 'checkbox', name: 'hooks', - message: 'Which commands do you plan to extend', + message: messages.getMessage('question.hooks'), choices: Object.values(Hook), when: (answers: { internal: boolean }): boolean => answers.internal, }, diff --git a/yarn.lock b/yarn.lock index c8a78454..710787b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1392,7 +1392,7 @@ resolved "https://registry.yarnpkg.com/@types/json-buffer/-/json-buffer-3.0.0.tgz#85c1ff0f0948fc159810d4b5be35bf8c20875f64" integrity sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ== -"@types/json-schema@*", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== @@ -1578,75 +1578,86 @@ resolved "https://registry.yarnpkg.com/@types/yosay/-/yosay-2.0.1.tgz#320ff6ea4ba5d464a7c8ba1011d64fbf5562a1b0" integrity sha512-MUFT7qfnt9f3yYAOLBupoChVUFmZkrLP6DlkruFJ560djzlgW5lX5JfqDwDfzuCzcyVdRQTNVr7dx/Up9PKTmw== -"@typescript-eslint/eslint-plugin@^4.2.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" - integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== +"@typescript-eslint/eslint-plugin@^5.36.1": + version "5.36.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.1.tgz#471f64dc53600025e470dad2ca4a9f2864139019" + integrity sha512-iC40UK8q1tMepSDwiLbTbMXKDxzNy+4TfPWgIL661Ym0sD42vRcQU93IsZIrmi+x292DBr60UI/gSwfdVYexCA== dependencies: - "@typescript-eslint/experimental-utils" "4.33.0" - "@typescript-eslint/scope-manager" "4.33.0" - debug "^4.3.1" + "@typescript-eslint/scope-manager" "5.36.1" + "@typescript-eslint/type-utils" "5.36.1" + "@typescript-eslint/utils" "5.36.1" + debug "^4.3.4" functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.1.0" - semver "^7.3.5" + ignore "^5.2.0" + regexpp "^3.2.0" + semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" - integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== +"@typescript-eslint/parser@^5.36.1": + version "5.36.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.36.1.tgz#931c22c7bacefd17e29734628cdec8b2acdcf1ce" + integrity sha512-/IsgNGOkBi7CuDfUbwt1eOqUXF9WGVBW9dwEe1pi+L32XrTsZIgmDFIi2RxjzsvB/8i+MIf5JIoTEH8LOZ368A== dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" + "@typescript-eslint/scope-manager" "5.36.1" + "@typescript-eslint/types" "5.36.1" + "@typescript-eslint/typescript-estree" "5.36.1" + debug "^4.3.4" -"@typescript-eslint/parser@^4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" - integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== +"@typescript-eslint/scope-manager@5.36.1": + version "5.36.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.36.1.tgz#23c49b7ddbcffbe09082e6694c2524950766513f" + integrity sha512-pGC2SH3/tXdu9IH3ItoqciD3f3RRGCh7hb9zPdN2Drsr341zgd6VbhP5OHQO/reUqihNltfPpMpTNihFMarP2w== dependencies: - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - debug "^4.3.1" + "@typescript-eslint/types" "5.36.1" + "@typescript-eslint/visitor-keys" "5.36.1" -"@typescript-eslint/scope-manager@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" - integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== +"@typescript-eslint/type-utils@5.36.1": + version "5.36.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.36.1.tgz#016fc2bff6679f54c0b2df848a493f0ca3d4f625" + integrity sha512-xfZhfmoQT6m3lmlqDvDzv9TiCYdw22cdj06xY0obSznBsT///GK5IEZQdGliXpAOaRL34o8phEvXzEo/VJx13Q== dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" + "@typescript-eslint/typescript-estree" "5.36.1" + "@typescript-eslint/utils" "5.36.1" + debug "^4.3.4" + tsutils "^3.21.0" -"@typescript-eslint/types@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" - integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== +"@typescript-eslint/types@5.36.1": + version "5.36.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.36.1.tgz#1cf0e28aed1cb3ee676917966eb23c2f8334ce2c" + integrity sha512-jd93ShpsIk1KgBTx9E+hCSEuLCUFwi9V/urhjOWnOaksGZFbTOxAT47OH2d4NLJnLhkVD+wDbB48BuaycZPLBg== -"@typescript-eslint/typescript-estree@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" - integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== +"@typescript-eslint/typescript-estree@5.36.1": + version "5.36.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.1.tgz#b857f38d6200f7f3f4c65cd0a5afd5ae723f2adb" + integrity sha512-ih7V52zvHdiX6WcPjsOdmADhYMDN15SylWRZrT2OMy80wzKbc79n8wFW0xpWpU0x3VpBz/oDgTm2xwDAnFTl+g== dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" + "@typescript-eslint/types" "5.36.1" + "@typescript-eslint/visitor-keys" "5.36.1" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/visitor-keys@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" - integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== +"@typescript-eslint/utils@5.36.1", "@typescript-eslint/utils@^5.27.1": + version "5.36.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.36.1.tgz#136d5208cc7a3314b11c646957f8f0b5c01e07ad" + integrity sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg== dependencies: - "@typescript-eslint/types" "4.33.0" - eslint-visitor-keys "^2.0.0" + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.36.1" + "@typescript-eslint/types" "5.36.1" + "@typescript-eslint/typescript-estree" "5.36.1" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/visitor-keys@5.36.1": + version "5.36.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.1.tgz#7731175312d65738e501780f923896d200ad1615" + integrity sha512-ojB9aRyRFzVMN3b5joSYni6FAS10BBSCAfKJhjJAV08t/a95aM6tAhz+O1jF+EtgxktuSO3wJysp2R+Def/IWQ== + dependencies: + "@typescript-eslint/types" "5.36.1" + eslint-visitor-keys "^3.3.0" "@ungap/promise-all-settled@1.1.2": version "1.1.2" @@ -3368,6 +3379,13 @@ eslint-plugin-prettier@^3.1.3, eslint-plugin-prettier@^3.4.1: dependencies: prettier-linter-helpers "^1.0.0" +eslint-plugin-sf-plugin@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-sf-plugin/-/eslint-plugin-sf-plugin-1.1.0.tgz#be6c5bdd8417c8ab2feb55401432349cab1fbc0d" + integrity sha512-YFftQF7GoOk6PWc7HfPRuFDZCLwXVdmuiiZ5g9R6njx5+UrFsX41Sb081+FVXPJ/OfEP6jxYDkC2V5fGDgPDjg== + dependencies: + "@typescript-eslint/utils" "^5.27.1" + eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -3400,6 +3418,11 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + eslint@^7.27.0, eslint@^7.32.0: version "7.32.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" @@ -4150,7 +4173,7 @@ globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" -globby@^11.0.1, globby@^11.0.3, globby@^11.1.0: +globby@^11.0.1, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -4450,7 +4473,7 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.8, ignore@^5.2.0: +ignore@^5.1.1, ignore@^5.1.4, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== @@ -6870,7 +6893,7 @@ regexp.prototype.flags@^1.4.3: define-properties "^1.1.3" functions-have-names "^1.2.2" -regexpp@^3.1.0: +regexpp@^3.1.0, regexpp@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==