From 1cd47578286b1f90e6ea955faf8d0f121989c47f Mon Sep 17 00:00:00 2001 From: Clement Demonchy <56511849+cdemonchy-pro@users.noreply.github.com> Date: Fri, 11 Feb 2022 04:57:58 +0100 Subject: [PATCH] feat: allow numbers in plugin ID (#6656) * fix example for id that didn't respect regex example for id don't work with version 2.0.0-beta.15: ValidationError: "id" with value "docs1" fails to match the required pattern: /^[a-zA-Z_-]+$/ Error: Process completed with exit code 1. * properly fix Co-authored-by: Joshua Chen --- .../__snapshots__/validationSchemas.test.ts.snap | 8 ++++---- .../src/__tests__/validationSchemas.test.ts | 1 + .../docusaurus-utils-validation/src/validationSchemas.ts | 5 ++++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/docusaurus-utils-validation/src/__tests__/__snapshots__/validationSchemas.test.ts.snap b/packages/docusaurus-utils-validation/src/__tests__/__snapshots__/validationSchemas.test.ts.snap index b7e3d9b455..0650b13f0a 100644 --- a/packages/docusaurus-utils-validation/src/__tests__/__snapshots__/validationSchemas.test.ts.snap +++ b/packages/docusaurus-utils-validation/src/__tests__/__snapshots__/validationSchemas.test.ts.snap @@ -12,13 +12,13 @@ exports[`validation schemas PathnameSchema: for value="foo" 1`] = `"\\"value\\" exports[`validation schemas PathnameSchema: for value="https://github.com/foo" 1`] = `"\\"value\\" is not a valid pathname. Pathname should start with slash and not contain any domain or query string."`; -exports[`validation schemas PluginIdSchema: for value="/docs" 1`] = `"\\"value\\" with value \\"/docs\\" fails to match the required pattern: /^[a-zA-Z_-]+$/"`; +exports[`validation schemas PluginIdSchema: for value="/docs" 1`] = `"Illegal plugin ID value \\"/docs\\": it should only contain alphanumerics, underscores, and dashes."`; -exports[`validation schemas PluginIdSchema: for value="do cs" 1`] = `"\\"value\\" with value \\"do cs\\" fails to match the required pattern: /^[a-zA-Z_-]+$/"`; +exports[`validation schemas PluginIdSchema: for value="do cs" 1`] = `"Illegal plugin ID value \\"do cs\\": it should only contain alphanumerics, underscores, and dashes."`; -exports[`validation schemas PluginIdSchema: for value="do/cs" 1`] = `"\\"value\\" with value \\"do/cs\\" fails to match the required pattern: /^[a-zA-Z_-]+$/"`; +exports[`validation schemas PluginIdSchema: for value="do/cs" 1`] = `"Illegal plugin ID value \\"do/cs\\": it should only contain alphanumerics, underscores, and dashes."`; -exports[`validation schemas PluginIdSchema: for value="docs/" 1`] = `"\\"value\\" with value \\"docs/\\" fails to match the required pattern: /^[a-zA-Z_-]+$/"`; +exports[`validation schemas PluginIdSchema: for value="docs/" 1`] = `"Illegal plugin ID value \\"docs/\\": it should only contain alphanumerics, underscores, and dashes."`; exports[`validation schemas PluginIdSchema: for value=[] 1`] = `"\\"value\\" must be a string"`; diff --git a/packages/docusaurus-utils-validation/src/__tests__/validationSchemas.test.ts b/packages/docusaurus-utils-validation/src/__tests__/validationSchemas.test.ts index 29f00f7f13..5273048857 100644 --- a/packages/docusaurus-utils-validation/src/__tests__/validationSchemas.test.ts +++ b/packages/docusaurus-utils-validation/src/__tests__/validationSchemas.test.ts @@ -69,6 +69,7 @@ describe('validation schemas', () => { testOK('docs'); testOK('default'); testOK('plugin-id_with-simple-special-chars'); + testOK('doc1'); testFail('/docs'); testFail('docs/'); diff --git a/packages/docusaurus-utils-validation/src/validationSchemas.ts b/packages/docusaurus-utils-validation/src/validationSchemas.ts index 23e50d44c1..d89f65da80 100644 --- a/packages/docusaurus-utils-validation/src/validationSchemas.ts +++ b/packages/docusaurus-utils-validation/src/validationSchemas.ts @@ -11,7 +11,10 @@ import type {Tag} from '@docusaurus/utils'; import {JoiFrontMatter} from './JoiFrontMatter'; export const PluginIdSchema = Joi.string() - .regex(/^[a-zA-Z_-]+$/) + .regex(/^[a-zA-Z0-9_-]+$/) + .message( + 'Illegal plugin ID value "{#value}": it should only contain alphanumerics, underscores, and dashes.', + ) .default(DEFAULT_PLUGIN_ID); const MarkdownPluginsSchema = Joi.array()