diff --git a/tools/spectral/ipa/rulesets/IPA-104.yaml b/tools/spectral/ipa/rulesets/IPA-104.yaml index 9053f87e66..ca137a82e9 100644 --- a/tools/spectral/ipa/rulesets/IPA-104.yaml +++ b/tools/spectral/ipa/rulesets/IPA-104.yaml @@ -112,7 +112,7 @@ rules: ##### Configuration This rule includes two configuration options: - `methodName`: The verb to be used in the OperationIds - - `ignorePluralizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") + - `ignoreSingularizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") message: '{{error}} https://mdb.link/mongodb-atlas-openapi-validation#xgen-IPA-104-valid-operation-id' severity: warn given: '#GetOperationObject' @@ -120,5 +120,5 @@ rules: function: 'IPA104ValidOperationID' functionOptions: methodName: 'get' - ignorePluralizationList: + ignoreSingularizationList: - 'Fts' diff --git a/tools/spectral/ipa/rulesets/IPA-105.yaml b/tools/spectral/ipa/rulesets/IPA-105.yaml index 4cd05a8d71..b8e2174e4f 100644 --- a/tools/spectral/ipa/rulesets/IPA-105.yaml +++ b/tools/spectral/ipa/rulesets/IPA-105.yaml @@ -92,7 +92,7 @@ rules: ##### Configuration This rule includes two configuration options: - `methodName`: The verb to be used in the OperationIds - - `ignorePluralizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") + - `ignoreSingularizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") message: '{{error}} https://mdb.link/mongodb-atlas-openapi-validation#xgen-IPA-105-valid-operation-id' severity: warn given: '#GetOperationObject' @@ -100,5 +100,5 @@ rules: function: 'IPA105ValidOperationID' functionOptions: methodName: 'list' - ignorePluralizationList: + ignoreSingularizationList: - 'Fts' diff --git a/tools/spectral/ipa/rulesets/IPA-106.yaml b/tools/spectral/ipa/rulesets/IPA-106.yaml index 2938c632ac..12cabe72a9 100644 --- a/tools/spectral/ipa/rulesets/IPA-106.yaml +++ b/tools/spectral/ipa/rulesets/IPA-106.yaml @@ -126,7 +126,7 @@ rules: ##### Configuration This rule includes two configuration options: - `methodName`: The verb to be used in the OperationIds - - `ignorePluralizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") + - `ignoreSingularizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") message: '{{error}} https://mdb.link/mongodb-atlas-openapi-validation#xgen-IPA-106-valid-operation-id' severity: warn given: '#CreateOperationObject' @@ -134,5 +134,5 @@ rules: function: 'IPA106ValidOperationID' functionOptions: methodName: 'create' - ignorePluralizationList: + ignoreSingularizationList: - 'Fts' diff --git a/tools/spectral/ipa/rulesets/IPA-107.yaml b/tools/spectral/ipa/rulesets/IPA-107.yaml index 0f4f377999..74f1850ec5 100644 --- a/tools/spectral/ipa/rulesets/IPA-107.yaml +++ b/tools/spectral/ipa/rulesets/IPA-107.yaml @@ -127,7 +127,7 @@ rules: ##### Configuration This rule includes two configuration options: - `methodName`: The verb to be used in the OperationIds - - `ignorePluralizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") + - `ignoreSingularizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") message: '{{error}} https://mdb.link/mongodb-atlas-openapi-validation#xgen-IPA-107-valid-operation-id' severity: warn given: '#UpdateOperationObject' @@ -135,5 +135,5 @@ rules: function: 'IPA107ValidOperationID' functionOptions: methodName: 'update' - ignorePluralizationList: + ignoreSingularizationList: - 'Fts' diff --git a/tools/spectral/ipa/rulesets/IPA-108.yaml b/tools/spectral/ipa/rulesets/IPA-108.yaml index 78f3977977..971194da6f 100644 --- a/tools/spectral/ipa/rulesets/IPA-108.yaml +++ b/tools/spectral/ipa/rulesets/IPA-108.yaml @@ -67,7 +67,7 @@ rules: ##### Configuration This rule includes two configuration options: - `methodName`: The verb to be used in the OperationIds - - `ignorePluralizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") + - `ignoreSingularizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") message: '{{error}} https://mdb.link/mongodb-atlas-openapi-validation#xgen-IPA-108-valid-operation-id' severity: warn given: '#DeleteOperationObject' @@ -75,7 +75,7 @@ rules: function: 'IPA108ValidOperationID' functionOptions: methodName: 'delete' - ignorePluralizationList: + ignoreSingularizationList: - 'Fts' functions: diff --git a/tools/spectral/ipa/rulesets/IPA-109.yaml b/tools/spectral/ipa/rulesets/IPA-109.yaml index fc71434144..e3eddcf141 100644 --- a/tools/spectral/ipa/rulesets/IPA-109.yaml +++ b/tools/spectral/ipa/rulesets/IPA-109.yaml @@ -77,12 +77,12 @@ rules: ##### Configuration This rule includes one configuration options: - - `ignorePluralizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") + - `ignoreSingularizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") message: '{{error}} https://mdb.link/mongodb-atlas-openapi-validation#xgen-IPA-109-valid-operation-id' severity: warn given: '#OperationObject' then: function: 'IPA109ValidOperationID' functionOptions: - ignorePluralizationList: + ignoreSingularizationList: - 'Fts' diff --git a/tools/spectral/ipa/rulesets/README.md b/tools/spectral/ipa/rulesets/README.md index eea19fa3dc..2cb7be2147 100644 --- a/tools/spectral/ipa/rulesets/README.md +++ b/tools/spectral/ipa/rulesets/README.md @@ -158,7 +158,7 @@ Rule checks for the following conditions: ##### Configuration This rule includes two configuration options: - `methodName`: The verb to be used in the OperationIds - - `ignorePluralizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") + - `ignoreSingularizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") @@ -229,7 +229,7 @@ Rule checks for the following conditions: ##### Configuration This rule includes two configuration options: - `methodName`: The verb to be used in the OperationIds - - `ignorePluralizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") + - `ignoreSingularizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") @@ -325,7 +325,7 @@ Rule checks for the following conditions: ##### Configuration This rule includes two configuration options: - `methodName`: The verb to be used in the OperationIds - - `ignorePluralizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") + - `ignoreSingularizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") @@ -413,7 +413,7 @@ Rule checks for the following conditions: ##### Configuration This rule includes two configuration options: - `methodName`: The verb to be used in the OperationIds - - `ignorePluralizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") + - `ignoreSingularizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") @@ -472,7 +472,7 @@ Rule checks for the following conditions: ##### Configuration This rule includes two configuration options: - `methodName`: The verb to be used in the OperationIds - - `ignorePluralizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") + - `ignoreSingularizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") @@ -536,7 +536,7 @@ Rule checks for the following conditions: ##### Configuration This rule includes one configuration options: - - `ignorePluralizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") + - `ignoreSingularizationList`: Words that are allowed to maintain their assumed plurality (e.g., "Fts") diff --git a/tools/spectral/ipa/rulesets/functions/IPA104ValidOperationID.js b/tools/spectral/ipa/rulesets/functions/IPA104ValidOperationID.js index 7202c6a929..08dda68753 100644 --- a/tools/spectral/ipa/rulesets/functions/IPA104ValidOperationID.js +++ b/tools/spectral/ipa/rulesets/functions/IPA104ValidOperationID.js @@ -4,7 +4,7 @@ import { hasCustomMethodOverride, hasMethodVerbOverride, VERB_OVERRIDE_EXTENSION import { isInvalidGetMethod } from './utils/methodLogic.js'; import { validateOperationIdAndReturnErrors } from './utils/validations/validateOperationIdAndReturnErrors.js'; -export default (input, { methodName, ignorePluralizationList }, { path, documentInventory, rule }) => { +export default (input, { methodName, ignoreSingularizationList }, { path, documentInventory, rule }) => { const ruleName = rule.name; const resourcePath = path[1]; const oas = documentInventory.resolved; @@ -22,7 +22,7 @@ export default (input, { methodName, ignorePluralizationList }, { path, document if (hasMethodVerbOverride(input, methodName)) { methodName = input[VERB_OVERRIDE_EXTENSION].verb; } - const errors = validateOperationIdAndReturnErrors(methodName, resourcePath, input, path, ignorePluralizationList); + const errors = validateOperationIdAndReturnErrors(methodName, resourcePath, input, path, ignoreSingularizationList); return evaluateAndCollectAdoptionStatus(errors, ruleName, input, path); } catch (e) { diff --git a/tools/spectral/ipa/rulesets/functions/IPA105ValidOperationID.js b/tools/spectral/ipa/rulesets/functions/IPA105ValidOperationID.js index 72766fd593..05b69c18b2 100644 --- a/tools/spectral/ipa/rulesets/functions/IPA105ValidOperationID.js +++ b/tools/spectral/ipa/rulesets/functions/IPA105ValidOperationID.js @@ -4,7 +4,7 @@ import { isInvalidListMethod } from './utils/methodLogic.js'; import { hasCustomMethodOverride, hasMethodVerbOverride, VERB_OVERRIDE_EXTENSION } from './utils/extensions.js'; import { validateOperationIdAndReturnErrors } from './utils/validations/validateOperationIdAndReturnErrors.js'; -export default (input, { methodName, ignorePluralizationList }, { path, documentInventory, rule }) => { +export default (input, { methodName, ignoreSingularizationList }, { path, documentInventory, rule }) => { const ruleName = rule.name; const resourcePath = path[1]; const oas = documentInventory.resolved; @@ -23,7 +23,7 @@ export default (input, { methodName, ignorePluralizationList }, { path, document } try { - const errors = validateOperationIdAndReturnErrors(methodName, resourcePath, input, path, ignorePluralizationList); + const errors = validateOperationIdAndReturnErrors(methodName, resourcePath, input, path, ignoreSingularizationList); return evaluateAndCollectAdoptionStatus(errors, ruleName, input, path); } catch (e) { return handleInternalError(ruleName, path, e); diff --git a/tools/spectral/ipa/rulesets/functions/IPA106ValidOperationID.js b/tools/spectral/ipa/rulesets/functions/IPA106ValidOperationID.js index 0f6ddf29eb..f4a57480e7 100644 --- a/tools/spectral/ipa/rulesets/functions/IPA106ValidOperationID.js +++ b/tools/spectral/ipa/rulesets/functions/IPA106ValidOperationID.js @@ -3,7 +3,7 @@ import { isCustomMethodIdentifier } from './utils/resourceEvaluation.js'; import { hasCustomMethodOverride, hasMethodVerbOverride, VERB_OVERRIDE_EXTENSION } from './utils/extensions.js'; import { validateOperationIdAndReturnErrors } from './utils/validations/validateOperationIdAndReturnErrors.js'; -export default (input, { methodName, ignorePluralizationList }, { path, rule }) => { +export default (input, { methodName, ignoreSingularizationList }, { path, rule }) => { const ruleName = rule.name; const resourcePath = path[1]; @@ -16,7 +16,7 @@ export default (input, { methodName, ignorePluralizationList }, { path, rule }) } try { - const errors = validateOperationIdAndReturnErrors(methodName, resourcePath, input, path, ignorePluralizationList); + const errors = validateOperationIdAndReturnErrors(methodName, resourcePath, input, path, ignoreSingularizationList); return evaluateAndCollectAdoptionStatus(errors, ruleName, input, path); } catch (e) { return handleInternalError(ruleName, path, e); diff --git a/tools/spectral/ipa/rulesets/functions/IPA107ValidOperationID.js b/tools/spectral/ipa/rulesets/functions/IPA107ValidOperationID.js index 0d61be9bdc..4a93f665a5 100644 --- a/tools/spectral/ipa/rulesets/functions/IPA107ValidOperationID.js +++ b/tools/spectral/ipa/rulesets/functions/IPA107ValidOperationID.js @@ -3,7 +3,7 @@ import { isCustomMethodIdentifier } from './utils/resourceEvaluation.js'; import { hasCustomMethodOverride, hasMethodVerbOverride, VERB_OVERRIDE_EXTENSION } from './utils/extensions.js'; import { validateOperationIdAndReturnErrors } from './utils/validations/validateOperationIdAndReturnErrors.js'; -export default (input, { methodName, ignorePluralizationList }, { path, rule }) => { +export default (input, { methodName, ignoreSingularizationList }, { path, rule }) => { const ruleName = rule.name; const resourcePath = path[1]; @@ -16,7 +16,7 @@ export default (input, { methodName, ignorePluralizationList }, { path, rule }) } try { - const errors = validateOperationIdAndReturnErrors(methodName, resourcePath, input, path, ignorePluralizationList); + const errors = validateOperationIdAndReturnErrors(methodName, resourcePath, input, path, ignoreSingularizationList); return evaluateAndCollectAdoptionStatus(errors, ruleName, input, path); } catch (e) { return handleInternalError(ruleName, path, e); diff --git a/tools/spectral/ipa/rulesets/functions/IPA108ValidOperationID.js b/tools/spectral/ipa/rulesets/functions/IPA108ValidOperationID.js index 0d61be9bdc..4a93f665a5 100644 --- a/tools/spectral/ipa/rulesets/functions/IPA108ValidOperationID.js +++ b/tools/spectral/ipa/rulesets/functions/IPA108ValidOperationID.js @@ -3,7 +3,7 @@ import { isCustomMethodIdentifier } from './utils/resourceEvaluation.js'; import { hasCustomMethodOverride, hasMethodVerbOverride, VERB_OVERRIDE_EXTENSION } from './utils/extensions.js'; import { validateOperationIdAndReturnErrors } from './utils/validations/validateOperationIdAndReturnErrors.js'; -export default (input, { methodName, ignorePluralizationList }, { path, rule }) => { +export default (input, { methodName, ignoreSingularizationList }, { path, rule }) => { const ruleName = rule.name; const resourcePath = path[1]; @@ -16,7 +16,7 @@ export default (input, { methodName, ignorePluralizationList }, { path, rule }) } try { - const errors = validateOperationIdAndReturnErrors(methodName, resourcePath, input, path, ignorePluralizationList); + const errors = validateOperationIdAndReturnErrors(methodName, resourcePath, input, path, ignoreSingularizationList); return evaluateAndCollectAdoptionStatus(errors, ruleName, input, path); } catch (e) { return handleInternalError(ruleName, path, e); diff --git a/tools/spectral/ipa/rulesets/functions/IPA109ValidOperationID.js b/tools/spectral/ipa/rulesets/functions/IPA109ValidOperationID.js index d92138a3f6..ca6ab45354 100644 --- a/tools/spectral/ipa/rulesets/functions/IPA109ValidOperationID.js +++ b/tools/spectral/ipa/rulesets/functions/IPA109ValidOperationID.js @@ -3,7 +3,7 @@ import { getCustomMethodName, isCustomMethodIdentifier, stripCustomMethodName } import { hasCustomMethodOverride, hasVerbOverride, VERB_OVERRIDE_EXTENSION } from './utils/extensions.js'; import { validateOperationIdAndReturnErrors } from './utils/validations/validateOperationIdAndReturnErrors.js'; -export default (input, { ignorePluralizationList }, { path, rule }) => { +export default (input, { ignoreSingularizationList }, { path, rule }) => { const ruleName = rule.name; const resourcePath = path[1]; @@ -27,7 +27,7 @@ export default (input, { ignorePluralizationList }, { path, rule }) => { return; } - const errors = validateOperationIdAndReturnErrors(methodName, endpointUrl, input, path, ignorePluralizationList); + const errors = validateOperationIdAndReturnErrors(methodName, endpointUrl, input, path, ignoreSingularizationList); return evaluateAndCollectAdoptionStatus(errors, ruleName, input, path); } catch (e) { return handleInternalError(ruleName, path, e); diff --git a/tools/spectral/ipa/rulesets/functions/utils/operationIdGeneration.js b/tools/spectral/ipa/rulesets/functions/utils/operationIdGeneration.js index 8c6a235418..d247caf5ff 100644 --- a/tools/spectral/ipa/rulesets/functions/utils/operationIdGeneration.js +++ b/tools/spectral/ipa/rulesets/functions/utils/operationIdGeneration.js @@ -9,8 +9,9 @@ export const CAMEL_CASE_WITH_ABBREVIATIONS = /[A-Z]+(?![a-z0-9])|[A-Z]*[a-z0-9]+ * * @param method the standard method name (create, update, get etc.), custom method name, or empty string (only for legacy custom methods) * @param path the path for the endpoint + * @param ignoreSingularizationList a list of nouns to ignore when singularizing resource names */ -export function generateOperationID(method, path, ignorePluralizationList = []) { +export function generateOperationID(method, path, ignoreSingularizationList = []) { if (!path) { return method; } @@ -40,7 +41,7 @@ export function generateOperationID(method, path, ignorePluralizationList = []) let opID = verb; for (let i = 0; i < nouns.length - 1; i++) { - opID += upperCamelCase(singularize(nouns[i], ignorePluralizationList)); + opID += upperCamelCase(singularize(nouns[i], ignoreSingularizationList)); } // singularize final noun, dependent on resource identifier - leave custom nouns alone @@ -49,7 +50,7 @@ export function generateOperationID(method, path, ignorePluralizationList = []) !camelCaseCustomMethod) || verb === 'create' ) { - nouns[nouns.length - 1] = singularize(nouns[nouns.length - 1], ignorePluralizationList); + nouns[nouns.length - 1] = singularize(nouns[nouns.length - 1], ignoreSingularizationList); } opID += upperCamelCase(nouns.pop()); @@ -93,8 +94,8 @@ function capitalize(val) { return String(val).charAt(0).toUpperCase() + String(val).slice(1); } -function singularize(noun, ignorePluralizationList = []) { - if (!ignorePluralizationList.includes(noun)) { +function singularize(noun, ignoreSingularizationList = []) { + if (!ignoreSingularizationList.includes(noun)) { return inflection.singularize(noun); } return noun; diff --git a/tools/spectral/ipa/rulesets/functions/utils/validations/validateOperationIdAndReturnErrors.js b/tools/spectral/ipa/rulesets/functions/utils/validations/validateOperationIdAndReturnErrors.js index e12037c5be..26be3fddcb 100644 --- a/tools/spectral/ipa/rulesets/functions/utils/validations/validateOperationIdAndReturnErrors.js +++ b/tools/spectral/ipa/rulesets/functions/utils/validations/validateOperationIdAndReturnErrors.js @@ -19,7 +19,7 @@ const TOO_LONG_OP_ID_ERROR_MESSAGE = * @param resourcePath the resource path for the endpoint (e.g. '/users', '/users/{userId}', etc.). For custom methods, this is the path without the custom method name. * @param operationObject the operation object to validate, which should contain the operationId and optionally the x-xgen-operation-id-override extension. * @param path the path to the operation object being evaluated, used for error reporting with Spectral. - * @param ignorePluralizationList an array of nouns to ignore when singularizing resource names. + * @param ignoreSingularizationList an array of nouns to ignore when singularizing resource names. * @returns {[{path: string[], message: string}]} an array of error objects, each containing a path and a message, or an empty array if no errors are found. */ export function validateOperationIdAndReturnErrors( @@ -27,10 +27,10 @@ export function validateOperationIdAndReturnErrors( resourcePath, operationObject, path, - ignorePluralizationList + ignoreSingularizationList ) { const operationId = operationObject.operationId; - const expectedOperationId = generateOperationID(methodName, resourcePath, ignorePluralizationList); + const expectedOperationId = generateOperationID(methodName, resourcePath, ignoreSingularizationList); const operationIdPath = path.concat(['operationId']);