@docusaurus/utils-validation 2.0.0-beta.16 → 2.0.0-beta.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,10 +6,11 @@
6
6
  */
7
7
  import Joi from './Joi';
8
8
  /**
9
- * Enhance the default Joi.string() type so that it can convert number to
9
+ * Enhance the default `Joi.string()` type so that it can convert number to
10
10
  * strings. If user use front matter "tag: 2021", we shouldn't need to ask her
11
11
  * to write "tag: '2021'". Also yaml tries to convert patterns like "2019-01-01"
12
12
  * to dates automatically.
13
+ *
13
14
  * @see https://github.com/facebook/docusaurus/issues/4642
14
15
  * @see https://github.com/sideway/joi/issues/1442#issuecomment-823997884
15
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"JoiFrontMatter.d.ts","sourceRoot":"","sources":["../src/JoiFrontMatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,GAAG,MAAM,OAAO,CAAC;AAaxB;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,GAAsC,CAAC"}
1
+ {"version":3,"file":"JoiFrontMatter.d.ts","sourceRoot":"","sources":["../src/JoiFrontMatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,GAAG,MAAM,OAAO,CAAC;AAcxB;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,GAAsC,CAAC"}
@@ -8,7 +8,7 @@
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.JoiFrontMatter = void 0;
10
10
  const tslib_1 = require("tslib");
11
- const Joi_1 = (0, tslib_1.__importDefault)(require("./Joi"));
11
+ const Joi_1 = tslib_1.__importDefault(require("./Joi"));
12
12
  const JoiFrontMatterString = {
13
13
  type: 'string',
14
14
  base: Joi_1.default.string(),
@@ -21,10 +21,11 @@ const JoiFrontMatterString = {
21
21
  },
22
22
  };
23
23
  /**
24
- * Enhance the default Joi.string() type so that it can convert number to
24
+ * Enhance the default `Joi.string()` type so that it can convert number to
25
25
  * strings. If user use front matter "tag: 2021", we shouldn't need to ask her
26
26
  * to write "tag: '2021'". Also yaml tries to convert patterns like "2019-01-01"
27
27
  * to dates automatically.
28
+ *
28
29
  * @see https://github.com/facebook/docusaurus/issues/4642
29
30
  * @see https://github.com/sideway/joi/issues/1442#issuecomment-823997884
30
31
  */
@@ -1 +1 @@
1
- {"version":3,"file":"JoiFrontMatter.js","sourceRoot":"","sources":["../src/JoiFrontMatter.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAEH,6DAAwB;AAExB,MAAM,oBAAoB,GAAkB;IAC1C,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE;IAClB,2EAA2E;IAC3E,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACjB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,IAAI,EAAE;YACtD,OAAO,EAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAC,CAAC;SAClC;QACD,OAAO,EAAC,KAAK,EAAC,CAAC;IACjB,CAAC;CACF,CAAC;AACF;;;;;;;GAOG;AACU,QAAA,cAAc,GAAe,aAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"JoiFrontMatter.js","sourceRoot":"","sources":["../src/JoiFrontMatter.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAEH,wDAAwB;AAExB,MAAM,oBAAoB,GAAkB;IAC1C,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE;IAClB,2EAA2E;IAC3E,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACjB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,IAAI,EAAE;YACtD,OAAO,EAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAC,CAAC;SAClC;QACD,OAAO,EAAC,KAAK,EAAC,CAAC;IACjB,CAAC;CACF,CAAC;AAEF;;;;;;;;GAQG;AACU,QAAA,cAAc,GAAe,aAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validationSchemas.d.ts","sourceRoot":"","sources":["../src/validationSchemas.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,GAAG,MAAM,OAAO,CAAC;AAKxB,eAAO,MAAM,cAAc,kBAKE,CAAC;AAU9B,eAAO,MAAM,mBAAmB,iBAAwB,CAAC;AACzD,eAAO,MAAM,mBAAmB,iBAAwB,CAAC;AAEzD,eAAO,MAAM,iBAAiB,uBAA2B,CAAC;AAI1D,eAAO,MAAM,SAAS,wBAgBpB,CAAC;AAEH,eAAO,MAAM,cAAc,kBASxB,CAAC;AAeJ,eAAO,MAAM,qBAAqB,iBAK9B,CAAC;AAEL,eAAO,MAAM,2BAA2B;;;CASvC,CAAC"}
1
+ {"version":3,"file":"validationSchemas.d.ts","sourceRoot":"","sources":["../src/validationSchemas.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,GAAG,MAAM,OAAO,CAAC;AAIxB,eAAO,MAAM,cAAc,kBAKE,CAAC;AAe9B,eAAO,MAAM,mBAAmB,iBAAwB,CAAC;AACzD,eAAO,MAAM,mBAAmB,iBAAwB,CAAC;AAEzD,eAAO,MAAM,iBAAiB,uBAA2B,CAAC;AAI1D,eAAO,MAAM,SAAS,wBAgBpB,CAAC;AAEH,eAAO,MAAM,cAAc,kBASxB,CAAC;AAeJ,eAAO,MAAM,qBAAqB,iBAK9B,CAAC;AAEL,eAAO,MAAM,2BAA2B;;;CASvC,CAAC"}
@@ -8,15 +8,20 @@
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.FrontMatterTOCHeadingLevels = exports.FrontMatterTagsSchema = exports.PathnameSchema = exports.URISchema = exports.AdmonitionsSchema = exports.RehypePluginsSchema = exports.RemarkPluginsSchema = exports.PluginIdSchema = void 0;
10
10
  const tslib_1 = require("tslib");
11
- const Joi_1 = (0, tslib_1.__importDefault)(require("./Joi"));
11
+ const Joi_1 = tslib_1.__importDefault(require("./Joi"));
12
12
  const utils_1 = require("@docusaurus/utils");
13
13
  const JoiFrontMatter_1 = require("./JoiFrontMatter");
14
14
  exports.PluginIdSchema = Joi_1.default.string()
15
- .regex(/^[a-zA-Z0-9_-]+$/)
15
+ .regex(/^[\w-]+$/)
16
16
  .message('Illegal plugin ID value "{#value}": it should only contain alphanumerics, underscores, and dashes.')
17
17
  .default(utils_1.DEFAULT_PLUGIN_ID);
18
18
  const MarkdownPluginsSchema = Joi_1.default.array()
19
- .items(Joi_1.default.array().ordered(Joi_1.default.function().required(), Joi_1.default.object().required()), Joi_1.default.function(), Joi_1.default.object())
19
+ .items(Joi_1.default.array().ordered(Joi_1.default.function().required(), Joi_1.default.any().required()), Joi_1.default.function(), Joi_1.default.object())
20
+ .messages({
21
+ 'array.includes': `{#label} does not look like a valid MDX plugin config. A plugin config entry should be one of:
22
+ - A tuple, like \`[require("rehype-katex"), \\{ strict: false \\}]\`, or
23
+ - A simple module, like \`require("remark-math")\``,
24
+ })
20
25
  .default([]);
21
26
  exports.RemarkPluginsSchema = MarkdownPluginsSchema;
22
27
  exports.RehypePluginsSchema = MarkdownPluginsSchema;
@@ -58,7 +63,7 @@ const FrontMatterTagSchema = JoiFrontMatter_1.JoiFrontMatter.alternatives()
58
63
  exports.FrontMatterTagsSchema = JoiFrontMatter_1.JoiFrontMatter.array()
59
64
  .items(FrontMatterTagSchema)
60
65
  .messages({
61
- 'array.base': '{{#label}} does not look like a valid FrontMatter Yaml array.',
66
+ 'array.base': '{{#label}} does not look like a valid front matter Yaml array.',
62
67
  });
63
68
  exports.FrontMatterTOCHeadingLevels = {
64
69
  toc_min_heading_level: JoiFrontMatter_1.JoiFrontMatter.number().when('toc_max_heading_level', {
@@ -1 +1 @@
1
- {"version":3,"file":"validationSchemas.js","sourceRoot":"","sources":["../src/validationSchemas.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAEH,6DAAwB;AACxB,6CAAqE;AAErE,qDAAgD;AAEnC,QAAA,cAAc,GAAG,aAAG,CAAC,MAAM,EAAE;KACvC,KAAK,CAAC,kBAAkB,CAAC;KACzB,OAAO,CACN,oGAAoG,CACrG;KACA,OAAO,CAAC,yBAAiB,CAAC,CAAC;AAE9B,MAAM,qBAAqB,GAAG,aAAG,CAAC,KAAK,EAAE;KACtC,KAAK,CACJ,aAAG,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,aAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,EACvE,aAAG,CAAC,QAAQ,EAAE,EACd,aAAG,CAAC,MAAM,EAAE,CACb;KACA,OAAO,CAAC,EAAE,CAAC,CAAC;AAEF,QAAA,mBAAmB,GAAG,qBAAqB,CAAC;AAC5C,QAAA,mBAAmB,GAAG,qBAAqB,CAAC;AAE5C,QAAA,iBAAiB,GAAG,aAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAE1D,4DAA4D;AAC5D,oEAAoE;AACvD,QAAA,SAAS,GAAG,aAAG,CAAC,YAAY,CACvC,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC;AACvC,wEAAwE;AACxE,+BAA+B;AAC/B,aAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;IAC1B,IAAI;QACF,kCAAkC;QAClC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,GAAG,CAAC;KACZ;IAAC,MAAM;QACN,OAAO,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;KACrC;AACH,CAAC,CAAC,CACH,CAAC,QAAQ,CAAC;IACT,oBAAoB,EAClB,gEAAgE;CACnE,CAAC,CAAC;AAEU,QAAA,cAAc,GAAG,aAAG,CAAC,MAAM,EAAE;KACvC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;IACd,IAAI,CAAC,IAAA,uBAAe,EAAC,GAAG,CAAC,EAAE;QACzB,MAAM,IAAI,KAAK,EAAE,CAAC;KACnB;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;KACD,OAAO,CACN,kHAAkH,CACnH,CAAC;AAEJ,MAAM,oBAAoB,GAAG,+BAAc,CAAC,YAAY,EAAE;KACvD,GAAG,CACF,+BAAc,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAClC,+BAAc,CAAC,MAAM,CAAM;IACzB,KAAK,EAAE,+BAAc,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzC,SAAS,EAAE,+BAAc,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC,QAAQ,EAAE,CACd;KACA,QAAQ,CAAC;IACR,oBAAoB,EAAE,2CAA2C;IACjE,oBAAoB,EAAE,2CAA2C;CAClE,CAAC,CAAC;AAEQ,QAAA,qBAAqB,GAAG,+BAAc,CAAC,KAAK,EAAE;KACxD,KAAK,CAAC,oBAAoB,CAAC;KAC3B,QAAQ,CAAC;IACR,YAAY,EACV,+DAA+D;CAClE,CAAC,CAAC;AAEQ,QAAA,2BAA2B,GAAG;IACzC,qBAAqB,EAAE,+BAAc,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE;QAC3E,EAAE,EAAE,+BAAc,CAAC,KAAK,EAAE;QAC1B,IAAI,EAAE,+BAAc,CAAC,MAAM,EAAE;aAC1B,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,+BAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACnD,SAAS,EAAE,+BAAc,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KACjD,CAAC;IACF,qBAAqB,EAAE,+BAAc,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC7D,CAAC"}
1
+ {"version":3,"file":"validationSchemas.js","sourceRoot":"","sources":["../src/validationSchemas.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,25 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import type Joi from './Joi';
8
+ /** Print warnings returned from Joi validation. */
8
9
  export declare function printWarning(warning?: Joi.ValidationError): void;
10
+ /**
11
+ * The callback that should be used to validate plugin options. Handles plugin
12
+ * IDs on a generic level: no matter what the schema declares, this callback
13
+ * would require a string ID or default to "default".
14
+ */
9
15
  export declare function normalizePluginOptions<T extends {
10
16
  id?: string;
11
- }>(schema: Joi.ObjectSchema<T>, options: Partial<T>): T;
17
+ }>(schema: Joi.ObjectSchema<T>, options?: Partial<T>): T;
18
+ /**
19
+ * The callback that should be used to validate theme config. No matter what the
20
+ * schema declares, this callback would allow unknown attributes.
21
+ */
12
22
  export declare function normalizeThemeConfig<T>(schema: Joi.ObjectSchema<T>, themeConfig: Partial<T>): T;
13
- export declare function validateFrontMatter<T>(frontMatter: Record<string, unknown>, schema: Joi.ObjectSchema<T>): T;
23
+ /**
24
+ * Validate front matter with better error message
25
+ */
26
+ export declare function validateFrontMatter<T>(frontMatter: {
27
+ [key: string]: unknown;
28
+ }, schema: Joi.ObjectSchema<T>): T;
14
29
  //# sourceMappingURL=validationUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validationUtils.d.ts","sourceRoot":"","sources":["../src/validationUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAI7B,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,eAAe,GAAG,IAAI,CAOhE;AAED,wBAAgB,sBAAsB,CAAC,CAAC,SAAS;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAC,EAC5D,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAC3B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAClB,CAAC,CAiBH;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAC3B,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,GACtB,CAAC,CAgBH;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAC1B,CAAC,CAuBH"}
1
+ {"version":3,"file":"validationUtils.d.ts","sourceRoot":"","sources":["../src/validationUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAK7B,mDAAmD;AACnD,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,eAAe,GAAG,IAAI,CAOhE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAC,EAC5D,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAE3B,OAAO,GAAE,OAAO,CAAC,CAAC,CAAM,GACvB,CAAC,CAiBH;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAC3B,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,GACtB,CAAC,CAgBH;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,WAAW,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAC,EACrC,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAC1B,CAAC,CAuBH"}
@@ -8,8 +8,10 @@
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.validateFrontMatter = exports.normalizeThemeConfig = exports.normalizePluginOptions = exports.printWarning = void 0;
10
10
  const tslib_1 = require("tslib");
11
- const logger_1 = (0, tslib_1.__importDefault)(require("@docusaurus/logger"));
11
+ const logger_1 = tslib_1.__importDefault(require("@docusaurus/logger"));
12
+ const js_yaml_1 = tslib_1.__importDefault(require("js-yaml"));
12
13
  const validationSchemas_1 = require("./validationSchemas");
14
+ /** Print warnings returned from Joi validation. */
13
15
  function printWarning(warning) {
14
16
  if (warning) {
15
17
  const warningMessages = warning.details
@@ -19,7 +21,14 @@ function printWarning(warning) {
19
21
  }
20
22
  }
21
23
  exports.printWarning = printWarning;
22
- function normalizePluginOptions(schema, options) {
24
+ /**
25
+ * The callback that should be used to validate plugin options. Handles plugin
26
+ * IDs on a generic level: no matter what the schema declares, this callback
27
+ * would require a string ID or default to "default".
28
+ */
29
+ function normalizePluginOptions(schema,
30
+ // This allows us to automatically normalize undefined to { id: "default" }
31
+ options = {}) {
23
32
  // All plugins can be provided an "id" option (multi-instance support)
24
33
  // we add schema validation automatically
25
34
  const finalSchema = schema.append({
@@ -32,11 +41,15 @@ function normalizePluginOptions(schema, options) {
32
41
  if (error) {
33
42
  throw error;
34
43
  }
35
- return value; // TODO remove this ! in TS 4.6, see https://twitter.com/sebastienlorber/status/1481950042277793793
44
+ return value;
36
45
  }
37
46
  exports.normalizePluginOptions = normalizePluginOptions;
47
+ /**
48
+ * The callback that should be used to validate theme config. No matter what the
49
+ * schema declares, this callback would allow unknown attributes.
50
+ */
38
51
  function normalizeThemeConfig(schema, themeConfig) {
39
- // A theme should only validate his "slice" of the full themeConfig,
52
+ // A theme should only validate its "slice" of the full themeConfig,
40
53
  // not the whole object, so we allow unknown attributes
41
54
  // otherwise one theme would fail validating the data of another theme
42
55
  const finalSchema = schema.unknown();
@@ -47,9 +60,12 @@ function normalizeThemeConfig(schema, themeConfig) {
47
60
  if (error) {
48
61
  throw error;
49
62
  }
50
- return value; // TODO remove this ! in TS 4.6
63
+ return value;
51
64
  }
52
65
  exports.normalizeThemeConfig = normalizeThemeConfig;
66
+ /**
67
+ * Validate front matter with better error message
68
+ */
53
69
  function validateFrontMatter(frontMatter, schema) {
54
70
  const { value, error, warning } = schema.validate(frontMatter, {
55
71
  convert: true,
@@ -58,17 +74,17 @@ function validateFrontMatter(frontMatter, schema) {
58
74
  });
59
75
  printWarning(warning);
60
76
  if (error) {
61
- const frontMatterString = JSON.stringify(frontMatter, null, 2);
62
77
  const errorDetails = error.details;
63
78
  const invalidFields = errorDetails.map(({ path }) => path).join(', ');
64
79
  logger_1.default.error `The following front matter:
65
- ${logger_1.default.yellow(frontMatterString)}
66
- contains invalid values for field(s): ${logger_1.default.yellow(invalidFields)}.
80
+ ---
81
+ ${js_yaml_1.default.dump(frontMatter)}---
82
+ contains invalid values for field(s): code=${invalidFields}.
67
83
  ${errorDetails.map(({ message }) => message)}
68
84
  `;
69
85
  throw error;
70
86
  }
71
- return value; // TODO remove this ! in TS 4.6
87
+ return value;
72
88
  }
73
89
  exports.validateFrontMatter = validateFrontMatter;
74
90
  //# sourceMappingURL=validationUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validationUtils.js","sourceRoot":"","sources":["../src/validationUtils.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAGH,6EAAwC;AACxC,2DAAmD;AAEnD,SAAgB,YAAY,CAAC,OAA6B;IACxD,IAAI,OAAO,EAAE;QACX,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO;aACpC,GAAG,CAAC,CAAC,EAAC,OAAO,EAAC,EAAE,EAAE,CAAC,OAAO,CAAC;aAC3B,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,gBAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAC9B;AACH,CAAC;AAPD,oCAOC;AAED,SAAgB,sBAAsB,CACpC,MAA2B,EAC3B,OAAmB;IAEnB,sEAAsE;IACtE,yCAAyC;IACzC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,EAAE,EAAE,kCAAc;KACnB,CAAC,CAAC;IACH,MAAM,EAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE;QAC5D,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IAEH,YAAY,CAAC,OAAO,CAAC,CAAC;IAEtB,IAAI,KAAK,EAAE;QACT,MAAM,KAAK,CAAC;KACb;IAED,OAAO,KAAM,CAAC,CAAC,mGAAmG;AACpH,CAAC;AApBD,wDAoBC;AAED,SAAgB,oBAAoB,CAClC,MAA2B,EAC3B,WAAuB;IAEvB,oEAAoE;IACpE,uDAAuD;IACvD,sEAAsE;IACtE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAErC,MAAM,EAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE;QAChE,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IAEH,YAAY,CAAC,OAAO,CAAC,CAAC;IAEtB,IAAI,KAAK,EAAE;QACT,MAAM,KAAK,CAAC;KACb;IACD,OAAO,KAAM,CAAC,CAAC,+BAA+B;AAChD,CAAC;AAnBD,oDAmBC;AAED,SAAgB,mBAAmB,CACjC,WAAoC,EACpC,MAA2B;IAE3B,MAAM,EAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE;QAC3D,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,YAAY,CAAC,OAAO,CAAC,CAAC;IAEtB,IAAI,KAAK,EAAE;QACT,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;QACnC,MAAM,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpE,gBAAM,CAAC,KAAK,CAAA;EACd,gBAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;wCACM,gBAAM,CAAC,MAAM,CAAC,aAAa,CAAC;EAClE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAC,OAAO,EAAC,EAAE,EAAE,CAAC,OAAO,CAAC;CACzC,CAAC;QACE,MAAM,KAAK,CAAC;KACb;IAED,OAAO,KAAM,CAAC,CAAC,+BAA+B;AAChD,CAAC;AA1BD,kDA0BC"}
1
+ {"version":3,"file":"validationUtils.js","sourceRoot":"","sources":["../src/validationUtils.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAGH,wEAAwC;AACxC,8DAA2B;AAC3B,2DAAmD;AAEnD,mDAAmD;AACnD,SAAgB,YAAY,CAAC,OAA6B;IACxD,IAAI,OAAO,EAAE;QACX,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO;aACpC,GAAG,CAAC,CAAC,EAAC,OAAO,EAAC,EAAE,EAAE,CAAC,OAAO,CAAC;aAC3B,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,gBAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAC9B;AACH,CAAC;AAPD,oCAOC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CACpC,MAA2B;AAC3B,2EAA2E;AAC3E,UAAsB,EAAE;IAExB,sEAAsE;IACtE,yCAAyC;IACzC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,EAAE,EAAE,kCAAc;KACnB,CAAC,CAAC;IACH,MAAM,EAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE;QAC5D,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IAEH,YAAY,CAAC,OAAO,CAAC,CAAC;IAEtB,IAAI,KAAK,EAAE;QACT,MAAM,KAAK,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AArBD,wDAqBC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAClC,MAA2B,EAC3B,WAAuB;IAEvB,oEAAoE;IACpE,uDAAuD;IACvD,sEAAsE;IACtE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAErC,MAAM,EAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE;QAChE,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IAEH,YAAY,CAAC,OAAO,CAAC,CAAC;IAEtB,IAAI,KAAK,EAAE;QACT,MAAM,KAAK,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAnBD,oDAmBC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CACjC,WAAqC,EACrC,MAA2B;IAE3B,MAAM,EAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE;QAC3D,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,YAAY,CAAC,OAAO,CAAC,CAAC;IAEtB,IAAI,KAAK,EAAE;QACT,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;QACnC,MAAM,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpE,gBAAM,CAAC,KAAK,CAAA;;EAEd,iBAAI,CAAC,IAAI,CAAC,WAAW,CAAC;6CACqB,aAAa;EACxD,YAAY,CAAC,GAAG,CAAC,CAAC,EAAC,OAAO,EAAC,EAAE,EAAE,CAAC,OAAO,CAAC;CACzC,CAAC;QACE,MAAM,KAAK,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AA1BD,kDA0BC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@docusaurus/utils-validation",
3
- "version": "2.0.0-beta.16",
3
+ "version": "2.0.0-beta.19",
4
4
  "description": "Node validation utility functions for Docusaurus packages.",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -18,13 +18,14 @@
18
18
  },
19
19
  "license": "MIT",
20
20
  "dependencies": {
21
- "@docusaurus/logger": "2.0.0-beta.16",
22
- "@docusaurus/utils": "2.0.0-beta.16",
21
+ "@docusaurus/logger": "2.0.0-beta.19",
22
+ "@docusaurus/utils": "2.0.0-beta.19",
23
23
  "joi": "^17.6.0",
24
- "tslib": "^2.3.1"
24
+ "js-yaml": "^4.1.0",
25
+ "tslib": "^2.4.0"
25
26
  },
26
27
  "engines": {
27
28
  "node": ">=14"
28
29
  },
29
- "gitHead": "eb43c4d4f95a4fb97dc9bb9dc615413e0dc2e1e7"
30
+ "gitHead": "a71e60a49cce93c1006ef10c41ac03187f057102"
30
31
  }
@@ -18,11 +18,13 @@ const JoiFrontMatterString: Joi.Extension = {
18
18
  return {value};
19
19
  },
20
20
  };
21
+
21
22
  /**
22
- * Enhance the default Joi.string() type so that it can convert number to
23
+ * Enhance the default `Joi.string()` type so that it can convert number to
23
24
  * strings. If user use front matter "tag: 2021", we shouldn't need to ask her
24
25
  * to write "tag: '2021'". Also yaml tries to convert patterns like "2019-01-01"
25
26
  * to dates automatically.
27
+ *
26
28
  * @see https://github.com/facebook/docusaurus/issues/4642
27
29
  * @see https://github.com/sideway/joi/issues/1442#issuecomment-823997884
28
30
  */
@@ -6,12 +6,11 @@
6
6
  */
7
7
 
8
8
  import Joi from './Joi';
9
- import {isValidPathname, DEFAULT_PLUGIN_ID} from '@docusaurus/utils';
10
- import type {Tag} from '@docusaurus/utils';
9
+ import {isValidPathname, DEFAULT_PLUGIN_ID, type Tag} from '@docusaurus/utils';
11
10
  import {JoiFrontMatter} from './JoiFrontMatter';
12
11
 
13
12
  export const PluginIdSchema = Joi.string()
14
- .regex(/^[a-zA-Z0-9_-]+$/)
13
+ .regex(/^[\w-]+$/)
15
14
  .message(
16
15
  'Illegal plugin ID value "{#value}": it should only contain alphanumerics, underscores, and dashes.',
17
16
  )
@@ -19,10 +18,15 @@ export const PluginIdSchema = Joi.string()
19
18
 
20
19
  const MarkdownPluginsSchema = Joi.array()
21
20
  .items(
22
- Joi.array().ordered(Joi.function().required(), Joi.object().required()),
21
+ Joi.array().ordered(Joi.function().required(), Joi.any().required()),
23
22
  Joi.function(),
24
23
  Joi.object(),
25
24
  )
25
+ .messages({
26
+ 'array.includes': `{#label} does not look like a valid MDX plugin config. A plugin config entry should be one of:
27
+ - A tuple, like \`[require("rehype-katex"), \\{ strict: false \\}]\`, or
28
+ - A simple module, like \`require("remark-math")\``,
29
+ })
26
30
  .default([]);
27
31
 
28
32
  export const RemarkPluginsSchema = MarkdownPluginsSchema;
@@ -78,7 +82,7 @@ export const FrontMatterTagsSchema = JoiFrontMatter.array()
78
82
  .items(FrontMatterTagSchema)
79
83
  .messages({
80
84
  'array.base':
81
- '{{#label}} does not look like a valid FrontMatter Yaml array.',
85
+ '{{#label}} does not look like a valid front matter Yaml array.',
82
86
  });
83
87
 
84
88
  export const FrontMatterTOCHeadingLevels = {
@@ -7,8 +7,10 @@
7
7
 
8
8
  import type Joi from './Joi';
9
9
  import logger from '@docusaurus/logger';
10
+ import Yaml from 'js-yaml';
10
11
  import {PluginIdSchema} from './validationSchemas';
11
12
 
13
+ /** Print warnings returned from Joi validation. */
12
14
  export function printWarning(warning?: Joi.ValidationError): void {
13
15
  if (warning) {
14
16
  const warningMessages = warning.details
@@ -18,9 +20,15 @@ export function printWarning(warning?: Joi.ValidationError): void {
18
20
  }
19
21
  }
20
22
 
23
+ /**
24
+ * The callback that should be used to validate plugin options. Handles plugin
25
+ * IDs on a generic level: no matter what the schema declares, this callback
26
+ * would require a string ID or default to "default".
27
+ */
21
28
  export function normalizePluginOptions<T extends {id?: string}>(
22
29
  schema: Joi.ObjectSchema<T>,
23
- options: Partial<T>,
30
+ // This allows us to automatically normalize undefined to { id: "default" }
31
+ options: Partial<T> = {},
24
32
  ): T {
25
33
  // All plugins can be provided an "id" option (multi-instance support)
26
34
  // we add schema validation automatically
@@ -37,14 +45,18 @@ export function normalizePluginOptions<T extends {id?: string}>(
37
45
  throw error;
38
46
  }
39
47
 
40
- return value!; // TODO remove this ! in TS 4.6, see https://twitter.com/sebastienlorber/status/1481950042277793793
48
+ return value;
41
49
  }
42
50
 
51
+ /**
52
+ * The callback that should be used to validate theme config. No matter what the
53
+ * schema declares, this callback would allow unknown attributes.
54
+ */
43
55
  export function normalizeThemeConfig<T>(
44
56
  schema: Joi.ObjectSchema<T>,
45
57
  themeConfig: Partial<T>,
46
58
  ): T {
47
- // A theme should only validate his "slice" of the full themeConfig,
59
+ // A theme should only validate its "slice" of the full themeConfig,
48
60
  // not the whole object, so we allow unknown attributes
49
61
  // otherwise one theme would fail validating the data of another theme
50
62
  const finalSchema = schema.unknown();
@@ -58,11 +70,14 @@ export function normalizeThemeConfig<T>(
58
70
  if (error) {
59
71
  throw error;
60
72
  }
61
- return value!; // TODO remove this ! in TS 4.6
73
+ return value;
62
74
  }
63
75
 
76
+ /**
77
+ * Validate front matter with better error message
78
+ */
64
79
  export function validateFrontMatter<T>(
65
- frontMatter: Record<string, unknown>,
80
+ frontMatter: {[key: string]: unknown},
66
81
  schema: Joi.ObjectSchema<T>,
67
82
  ): T {
68
83
  const {value, error, warning} = schema.validate(frontMatter, {
@@ -74,17 +89,17 @@ export function validateFrontMatter<T>(
74
89
  printWarning(warning);
75
90
 
76
91
  if (error) {
77
- const frontMatterString = JSON.stringify(frontMatter, null, 2);
78
92
  const errorDetails = error.details;
79
93
  const invalidFields = errorDetails.map(({path}) => path).join(', ');
80
94
 
81
95
  logger.error`The following front matter:
82
- ${logger.yellow(frontMatterString)}
83
- contains invalid values for field(s): ${logger.yellow(invalidFields)}.
96
+ ---
97
+ ${Yaml.dump(frontMatter)}---
98
+ contains invalid values for field(s): code=${invalidFields}.
84
99
  ${errorDetails.map(({message}) => message)}
85
100
  `;
86
101
  throw error;
87
102
  }
88
103
 
89
- return value!; // TODO remove this ! in TS 4.6
104
+ return value;
90
105
  }