markdownlint 0.34.0 → 0.35.0

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.
Files changed (76) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +25 -10
  3. package/demo/markdownlint-browser.js +1144 -1166
  4. package/doc/CustomRules.md +11 -6
  5. package/doc/Rules.md +66 -0
  6. package/doc/md034.md +5 -0
  7. package/doc/md044.md +10 -0
  8. package/doc/md058.md +48 -0
  9. package/helpers/README.md +3 -29
  10. package/helpers/helpers.js +56 -288
  11. package/helpers/micromark.cjs +111 -12
  12. package/helpers/package.json +1 -1
  13. package/lib/cache.js +62 -13
  14. package/lib/configuration-strict.d.ts +1185 -0
  15. package/lib/configuration.d.ts +3 -1173
  16. package/lib/constants.js +3 -2
  17. package/lib/markdownlint.d.ts +65 -56
  18. package/lib/markdownlint.js +59 -37
  19. package/lib/md001.js +15 -9
  20. package/lib/md003.js +14 -9
  21. package/lib/md004.js +55 -48
  22. package/lib/md005.js +4 -13
  23. package/lib/md007.js +5 -9
  24. package/lib/md009.js +50 -44
  25. package/lib/md010.js +48 -33
  26. package/lib/md011.js +16 -8
  27. package/lib/md012.js +17 -9
  28. package/lib/md013.js +44 -38
  29. package/lib/md014.js +35 -38
  30. package/lib/md018.js +17 -9
  31. package/lib/md019-md021.js +80 -0
  32. package/lib/md020.js +13 -7
  33. package/lib/md022.js +6 -16
  34. package/lib/md023.js +22 -23
  35. package/lib/md024.js +12 -9
  36. package/lib/md025.js +15 -10
  37. package/lib/md026.js +2 -7
  38. package/lib/md027.js +5 -10
  39. package/lib/md028.js +3 -8
  40. package/lib/md029.js +40 -34
  41. package/lib/md030.js +4 -10
  42. package/lib/md031.js +43 -23
  43. package/lib/md032.js +16 -26
  44. package/lib/md033.js +3 -8
  45. package/lib/md034.js +5 -10
  46. package/lib/md035.js +2 -7
  47. package/lib/md036.js +3 -2
  48. package/lib/md037.js +2 -7
  49. package/lib/md038.js +3 -9
  50. package/lib/md039.js +66 -54
  51. package/lib/md040.js +3 -8
  52. package/lib/md041.js +1 -1
  53. package/lib/md042.js +48 -38
  54. package/lib/md043.js +20 -14
  55. package/lib/md044.js +3 -8
  56. package/lib/md045.js +3 -8
  57. package/lib/md046.js +2 -8
  58. package/lib/md048.js +3 -7
  59. package/lib/md049-md050.js +2 -7
  60. package/lib/md051.js +6 -12
  61. package/lib/md052.js +2 -2
  62. package/lib/md053.js +2 -2
  63. package/lib/md054.js +8 -13
  64. package/lib/md055.js +7 -8
  65. package/lib/md056.js +15 -11
  66. package/lib/md058.js +43 -0
  67. package/lib/rules.js +11 -4
  68. package/package.json +19 -17
  69. package/schema/.markdownlint.jsonc +54 -51
  70. package/schema/.markdownlint.yaml +53 -50
  71. package/schema/ValidatingConfiguration.md +6 -8
  72. package/schema/markdownlint-config-schema-strict.json +1819 -0
  73. package/schema/markdownlint-config-schema.json +115 -105
  74. package/style/prettier.json +1 -0
  75. package/lib/md019.js +0 -42
  76. package/lib/md021.js +0 -65
package/lib/md046.js CHANGED
@@ -3,7 +3,7 @@
3
3
  "use strict";
4
4
 
5
5
  const { addErrorDetailIf } = require("../helpers");
6
- const { filterByTypes } = require("../helpers/micromark.cjs");
6
+ const { filterByTypesCached } = require("./cache");
7
7
 
8
8
  const tokenTypeToStyle = {
9
9
  "codeFenced": "fenced",
@@ -19,13 +19,7 @@ module.exports = {
19
19
  "parser": "micromark",
20
20
  "function": function MD046(params, onError) {
21
21
  let expectedStyle = String(params.config.style || "consistent");
22
- // eslint-disable-next-line jsdoc/valid-types
23
- /** @type import("../helpers/micromark.cjs").Token[] */
24
- const micromarkTokens =
25
- // @ts-ignore
26
- params.parsers.micromark.tokens;
27
- const codeBlocksAndFences = filterByTypes(micromarkTokens, [ "codeFenced", "codeIndented" ]);
28
- for (const token of codeBlocksAndFences) {
22
+ for (const token of filterByTypesCached([ "codeFenced", "codeIndented" ])) {
29
23
  const { startLine, type } = token;
30
24
  if (expectedStyle === "consistent") {
31
25
  expectedStyle = tokenTypeToStyle[type];
package/lib/md048.js CHANGED
@@ -3,7 +3,8 @@
3
3
  "use strict";
4
4
 
5
5
  const { addErrorDetailIf, fencedCodeBlockStyleFor } = require("../helpers");
6
- const { filterByTypes, tokenIfType } = require("../helpers/micromark.cjs");
6
+ const { tokenIfType } = require("../helpers/micromark.cjs");
7
+ const { filterByTypesCached } = require("./cache");
7
8
 
8
9
  // eslint-disable-next-line jsdoc/valid-types
9
10
  /** @type import("./markdownlint").Rule */
@@ -14,13 +15,8 @@ module.exports = {
14
15
  "parser": "micromark",
15
16
  "function": function MD048(params, onError) {
16
17
  const style = String(params.config.style || "consistent");
17
- // eslint-disable-next-line jsdoc/valid-types
18
- /** @type import("../helpers/micromark.cjs").Token[] */
19
- const micromarkTokens =
20
- // @ts-ignore
21
- params.parsers.micromark.tokens;
22
18
  let expectedStyle = style;
23
- const codeFenceds = filterByTypes(micromarkTokens, [ "codeFenced" ]);
19
+ const codeFenceds = filterByTypesCached([ "codeFenced" ]);
24
20
  for (const codeFenced of codeFenceds) {
25
21
  const codeFencedFence = tokenIfType(codeFenced.children[0], "codeFencedFence");
26
22
  if (codeFencedFence) {
@@ -18,14 +18,9 @@ const intrawordRe = /^\w$/;
18
18
  */
19
19
  const impl =
20
20
  (params, onError, type, typeSequence, asterisk, underline, style = "consistent") => {
21
- // eslint-disable-next-line jsdoc/valid-types
22
- /** @type import("../helpers/micromark.cjs").Token[] */
23
- const micromarkTokens =
24
- // @ts-ignore
25
- params.parsers.micromark.tokens;
26
- const { lines } = params;
21
+ const { lines, parsers } = params;
27
22
  const emphasisTokens = filterByPredicate(
28
- micromarkTokens,
23
+ parsers.micromark.tokens,
29
24
  (token) => token.type === type,
30
25
  (token) => ((token.type === "htmlFlow") ? [] : token.children)
31
26
  );
package/lib/md051.js CHANGED
@@ -2,10 +2,9 @@
2
2
 
3
3
  "use strict";
4
4
 
5
- const { addError, addErrorDetailIf, getHtmlAttributeRe } =
6
- require("../helpers");
7
- const { filterByPredicate, filterByTypes, getHtmlTagInfo } =
8
- require("../helpers/micromark.cjs");
5
+ const { addError, addErrorDetailIf, getHtmlAttributeRe } = require("../helpers");
6
+ const { filterByPredicate, filterByTypes, getHtmlTagInfo } = require("../helpers/micromark.cjs");
7
+ const { filterByTypesCached } = require("./cache");
9
8
 
10
9
  // Regular expression for identifying HTML anchor names
11
10
  const idRe = getHtmlAttributeRe("id");
@@ -69,15 +68,10 @@ module.exports = {
69
68
  "tags": [ "links" ],
70
69
  "parser": "micromark",
71
70
  "function": function MD051(params, onError) {
72
- // eslint-disable-next-line jsdoc/valid-types
73
- /** @type import("../helpers/micromark.cjs").Token[] */
74
- const micromarkTokens =
75
- // @ts-ignore
76
- params.parsers.micromark.tokens;
77
71
  const fragments = new Map();
78
72
 
79
73
  // Process headings
80
- const headingTexts = filterByTypes(micromarkTokens, [ "atxHeadingText", "setextHeadingText" ]);
74
+ const headingTexts = filterByTypesCached([ "atxHeadingText", "setextHeadingText" ]);
81
75
  for (const headingText of headingTexts) {
82
76
  const fragment = convertHeadingToHTMLFragment(headingText);
83
77
  if (fragment !== "#") {
@@ -97,7 +91,7 @@ module.exports = {
97
91
  }
98
92
 
99
93
  // Process HTML anchors
100
- for (const token of filterByTypes(micromarkTokens, [ "htmlText" ])) {
94
+ for (const token of filterByTypesCached([ "htmlText" ], true)) {
101
95
  const htmlTagInfo = getHtmlTagInfo(token);
102
96
  if (htmlTagInfo && !htmlTagInfo.close) {
103
97
  const anchorMatch = idRe.exec(token.text) ||
@@ -116,7 +110,7 @@ module.exports = {
116
110
  [ "definition", "definitionDestinationString" ]
117
111
  ];
118
112
  for (const [ parentType, definitionType ] of parentChilds) {
119
- const links = filterByTypes(micromarkTokens, [ parentType ]);
113
+ const links = filterByTypesCached([ parentType ]);
120
114
  for (const link of links) {
121
115
  const definitions = filterByTypes(link.children, [ definitionType ]);
122
116
  for (const definition of definitions) {
package/lib/md052.js CHANGED
@@ -3,7 +3,7 @@
3
3
  "use strict";
4
4
 
5
5
  const { addError } = require("../helpers");
6
- const { referenceLinkImageData } = require("./cache");
6
+ const { getReferenceLinkImageData } = require("./cache");
7
7
 
8
8
  // eslint-disable-next-line jsdoc/valid-types
9
9
  /** @type import("./markdownlint").Rule */
@@ -16,7 +16,7 @@ module.exports = {
16
16
  "function": function MD052(params, onError) {
17
17
  const { config, lines } = params;
18
18
  const shortcutSyntax = config.shortcut_syntax || false;
19
- const { definitions, references, shortcuts } = referenceLinkImageData();
19
+ const { definitions, references, shortcuts } = getReferenceLinkImageData();
20
20
  const entries = shortcutSyntax ?
21
21
  [ ...references.entries(), ...shortcuts.entries() ] :
22
22
  references.entries();
package/lib/md053.js CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  const { addError, ellipsify, linkReferenceDefinitionRe } =
6
6
  require("../helpers");
7
- const { referenceLinkImageData } = require("./cache");
7
+ const { getReferenceLinkImageData } = require("./cache");
8
8
 
9
9
  // eslint-disable-next-line jsdoc/valid-types
10
10
  /** @type import("./markdownlint").Rule */
@@ -17,7 +17,7 @@ module.exports = {
17
17
  const ignored = new Set(params.config.ignored_definitions || [ "//" ]);
18
18
  const lines = params.lines;
19
19
  const { references, shortcuts, definitions, duplicateDefinitions } =
20
- referenceLinkImageData();
20
+ getReferenceLinkImageData();
21
21
  const singleLineDefinition = (line) => (
22
22
  line.replace(linkReferenceDefinitionRe, "").trim().length > 0
23
23
  );
package/lib/md054.js CHANGED
@@ -3,9 +3,8 @@
3
3
  "use strict";
4
4
 
5
5
  const { addErrorContext, nextLinesRe } = require("../helpers");
6
- const { filterByTypes, filterByPredicate, getTokenTextByType } =
7
- require("../helpers/micromark.cjs");
8
- const { referenceLinkImageData } = require("./cache");
6
+ const { filterByPredicate, getTokenTextByType } = require("../helpers/micromark.cjs");
7
+ const { getReferenceLinkImageData, filterByTypesCached } = require("./cache");
9
8
 
10
9
  const backslashEscapeRe = /\\([!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])/g;
11
10
  const removeBackslashEscapes = (text) => text.replace(backslashEscapeRe, "$1");
@@ -40,13 +39,8 @@ module.exports = {
40
39
  // Everything allowed, nothing to check
41
40
  return;
42
41
  }
43
- // eslint-disable-next-line jsdoc/valid-types
44
- /** @type import("../helpers/micromark.cjs").Token[] */
45
- const micromarkTokens =
46
- // @ts-ignore
47
- params.parsers.micromark.tokens;
48
- const { definitions } = referenceLinkImageData();
49
- const links = filterByTypes(micromarkTokens, [ "autolink", "image", "link" ]);
42
+ const { definitions } = getReferenceLinkImageData();
43
+ const links = filterByTypesCached([ "autolink", "image", "link" ]);
50
44
  for (const link of links) {
51
45
  let label = null;
52
46
  let destination = null;
@@ -89,7 +83,8 @@ module.exports = {
89
83
  }
90
84
  }
91
85
  if (isError) {
92
- let range = null;
86
+ // eslint-disable-next-line no-undef-init
87
+ let range = undefined;
93
88
  let fixInfo = null;
94
89
  if (startLine === endLine) {
95
90
  range = [ startColumn, endColumn - startColumn ];
@@ -119,8 +114,8 @@ module.exports = {
119
114
  onError,
120
115
  startLine,
121
116
  text.replace(nextLinesRe, ""),
122
- null,
123
- null,
117
+ undefined,
118
+ undefined,
124
119
  range,
125
120
  fixInfo
126
121
  );
package/lib/md055.js CHANGED
@@ -4,6 +4,7 @@
4
4
 
5
5
  const { addErrorDetailIf } = require("../helpers");
6
6
  const { filterByTypes } = require("../helpers/micromark.cjs");
7
+ const { filterByTypesCached } = require("./cache");
7
8
 
8
9
  const whitespaceTypes = new Set([ "linePrefix", "whitespace" ]);
9
10
  const ignoreWhitespace = (tokens) => tokens.filter(
@@ -27,14 +28,12 @@ module.exports = {
27
28
  ((expectedStyle !== "no_leading_or_trailing") && (expectedStyle !== "trailing_only"));
28
29
  let expectedTrailingPipe =
29
30
  ((expectedStyle !== "no_leading_or_trailing") && (expectedStyle !== "leading_only"));
30
- // eslint-disable-next-line jsdoc/valid-types
31
- /** @type import("../helpers/micromark.cjs").Token[] */
32
- const micromarkTokens =
33
- // @ts-ignore
34
- params.parsers.micromark.tokens;
35
- const tables = filterByTypes(micromarkTokens, [ "table" ]);
31
+ const tables = filterByTypesCached([ "table" ]);
36
32
  for (const table of tables) {
37
- const rows = filterByTypes(table.children, [ "tableDelimiterRow", "tableRow" ]);
33
+ const rows = filterByTypes(
34
+ table.children,
35
+ [ "tableDelimiterRow", "tableRow" ]
36
+ );
38
37
  for (const row of rows) {
39
38
  // The following uses of first/lastOrNothing lack fallback handling
40
39
  // because it seems not to be possible (i.e., 0% coverage)
@@ -77,4 +76,4 @@ module.exports = {
77
76
  }
78
77
  }
79
78
  }
80
- }
79
+ };
package/lib/md056.js CHANGED
@@ -4,6 +4,7 @@
4
4
 
5
5
  const { addErrorDetailIf } = require("../helpers");
6
6
  const { filterByTypes } = require("../helpers/micromark.cjs");
7
+ const { filterByTypesCached } = require("./cache");
7
8
 
8
9
  const makeRange = (start, end) => [ start, end - start + 1 ];
9
10
 
@@ -15,21 +16,24 @@ module.exports = {
15
16
  "tags": [ "table" ],
16
17
  "parser": "micromark",
17
18
  "function": function MD056(params, onError) {
18
- // eslint-disable-next-line jsdoc/valid-types
19
- /** @type import("../helpers/micromark.cjs").Token[] */
20
- const micromarkTokens =
21
- // @ts-ignore
22
- params.parsers.micromark.tokens;
23
- const tables = filterByTypes(micromarkTokens, [ "table" ]);
19
+ const tables = filterByTypesCached([ "table" ]);
24
20
  for (const table of tables) {
25
- const rows = filterByTypes(table.children, [ "tableDelimiterRow", "tableRow" ]);
21
+ const rows = filterByTypes(
22
+ table.children,
23
+ [ "tableDelimiterRow", "tableRow" ]
24
+ );
26
25
  let expectedCount = 0;
27
26
  for (const row of rows) {
28
- const cells = filterByTypes(row.children, [ "tableData", "tableDelimiter", "tableHeader" ]);
27
+ const cells = filterByTypes(
28
+ row.children,
29
+ [ "tableData", "tableDelimiter", "tableHeader" ]
30
+ );
29
31
  const actualCount = cells.length;
30
32
  expectedCount ||= actualCount;
31
- let detail = null;
32
- let range = null;
33
+ // eslint-disable-next-line no-undef-init
34
+ let detail = undefined;
35
+ // eslint-disable-next-line no-undef-init
36
+ let range = undefined;
33
37
  if (actualCount < expectedCount) {
34
38
  detail = "Too few cells, row will be missing data";
35
39
  range = [ row.endColumn - 1, 1 ];
@@ -43,7 +47,7 @@ module.exports = {
43
47
  expectedCount,
44
48
  actualCount,
45
49
  detail,
46
- null,
50
+ undefined,
47
51
  range
48
52
  );
49
53
  }
package/lib/md058.js ADDED
@@ -0,0 +1,43 @@
1
+ // @ts-check
2
+
3
+ "use strict";
4
+
5
+ const { addErrorContextForLine, isBlankLine } = require("../helpers");
6
+ const { filterByTypesCached } = require("./cache");
7
+
8
+ // eslint-disable-next-line jsdoc/valid-types
9
+ /** @type import("./markdownlint").Rule */
10
+ module.exports = {
11
+ "names": [ "MD058", "blanks-around-tables" ],
12
+ "description": "Tables should be surrounded by blank lines",
13
+ "tags": [ "table" ],
14
+ "parser": "micromark",
15
+ "function": function MD058(params, onError) {
16
+ const { lines } = params;
17
+ // For every table...
18
+ const tables = filterByTypesCached([ "table" ]);
19
+ for (const table of tables) {
20
+ // Look for a blank line above the table
21
+ const firstIndex = table.startLine - 1;
22
+ if (!isBlankLine(lines[firstIndex - 1])) {
23
+ addErrorContextForLine(
24
+ onError,
25
+ // @ts-ignore
26
+ lines,
27
+ firstIndex
28
+ );
29
+ }
30
+ // Look for a blank line below the table
31
+ const lastIndex = table.endLine - 1;
32
+ if (!isBlankLine(lines[lastIndex + 1])) {
33
+ addErrorContextForLine(
34
+ onError,
35
+ // @ts-ignore
36
+ lines,
37
+ lastIndex,
38
+ lastIndex + 2
39
+ );
40
+ }
41
+ }
42
+ }
43
+ };
package/lib/rules.js CHANGED
@@ -4,6 +4,11 @@
4
4
 
5
5
  const { homepage, version } = require("./constants");
6
6
 
7
+ // @ts-ignore
8
+ const [ md019, md021 ] = require("./md019-md021");
9
+ // @ts-ignore
10
+ const [ md049, md050 ] = require("./md049-md050");
11
+
7
12
  const rules = [
8
13
  require("./md001"),
9
14
  // md002: Deprecated and removed
@@ -19,9 +24,9 @@ const rules = [
19
24
  require("./md013"),
20
25
  require("./md014"),
21
26
  require("./md018"),
22
- require("./md019"),
27
+ md019,
23
28
  require("./md020"),
24
- require("./md021"),
29
+ md021,
25
30
  require("./md022"),
26
31
  require("./md023"),
27
32
  require("./md024"),
@@ -49,14 +54,16 @@ const rules = [
49
54
  require("./md046"),
50
55
  require("./md047"),
51
56
  require("./md048"),
52
- ...require("./md049-md050"),
57
+ md049,
58
+ md050,
53
59
  require("./md051"),
54
60
  require("./md052"),
55
61
  require("./md053"),
56
62
  require("./md054"),
57
63
  require("./md055"),
58
- require("./md056")
64
+ require("./md056"),
59
65
  // md057: See https://github.com/markdownlint/markdownlint
66
+ require("./md058")
60
67
  ];
61
68
  for (const rule of rules) {
62
69
  const name = rule.names[0].toLowerCase();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "markdownlint",
3
- "version": "0.34.0",
3
+ "version": "0.35.0",
4
4
  "description": "A Node.js style checker and lint tool for Markdown/CommonMark files.",
5
5
  "type": "commonjs",
6
6
  "main": "./lib/markdownlint.js",
@@ -49,13 +49,13 @@
49
49
  "docker-npm-install": "docker run --rm --tty --name npm-install --volume $PWD:/home/workdir --workdir /home/workdir --user node node:latest npm install",
50
50
  "docker-npm-run-upgrade": "docker run --rm --tty --name npm-run-upgrade --volume $PWD:/home/workdir --workdir /home/workdir --user node node:latest npm run upgrade",
51
51
  "install-micromark": "cd micromark && npm install",
52
- "lint": "eslint --ext .js,.cjs,.mjs --max-warnings 0 .",
52
+ "lint": "eslint --max-warnings 0",
53
53
  "lint-test-repos": "ava --timeout=10m test/markdownlint-test-repos-*.js",
54
54
  "serial-config-docs": "npm run build-config && npm run build-docs",
55
55
  "serial-declaration-demo": "npm run build-declaration && npm-run-all --continue-on-error --parallel build-demo test-declaration",
56
56
  "test": "ava --timeout=30s test/markdownlint-test.js test/markdownlint-test-config.js test/markdownlint-test-custom-rules.js test/markdownlint-test-helpers.js test/markdownlint-test-micromark.mjs test/markdownlint-test-result-object.js test/markdownlint-test-scenarios.js",
57
57
  "test-cover": "c8 --100 npm test",
58
- "test-declaration": "cd example/typescript && tsc && node type-check.js",
58
+ "test-declaration": "cd example/typescript && tsc --module nodenext && tsc --module commonjs && node type-check.js",
59
59
  "test-extra": "ava --timeout=10m test/markdownlint-test-extra-parse.js test/markdownlint-test-extra-type.js",
60
60
  "update-snapshots": "ava --update-snapshots test/markdownlint-test-micromark.mjs test/markdownlint-test-scenarios.js",
61
61
  "update-snapshots-test-repos": "ava --timeout=10m --update-snapshots test/markdownlint-test-repos-*.js",
@@ -66,31 +66,33 @@
66
66
  },
67
67
  "dependencies": {
68
68
  "markdown-it": "14.1.0",
69
- "markdownlint-micromark": "0.1.9"
69
+ "markdownlint-micromark": "0.1.10"
70
70
  },
71
71
  "devDependencies": {
72
- "ajv": "8.12.0",
73
- "ava": "6.1.2",
74
- "c8": "9.1.0",
72
+ "@eslint/js": "9.9.1",
73
+ "ajv": "8.17.1",
74
+ "ava": "6.1.3",
75
+ "c8": "10.1.2",
75
76
  "character-entities": "2.0.2",
76
- "eslint": "8.57.0",
77
- "eslint-plugin-jsdoc": "48.2.1",
78
- "eslint-plugin-n": "16.6.2",
79
- "eslint-plugin-regexp": "2.3.0",
80
- "eslint-plugin-unicorn": "51.0.1",
77
+ "eslint": "9.9.1",
78
+ "eslint-plugin-jsdoc": "50.2.2",
79
+ "eslint-plugin-n": "17.10.2",
80
+ "eslint-plugin-regexp": "2.6.0",
81
+ "eslint-plugin-unicorn": "55.0.0",
81
82
  "gemoji": "8.1.0",
82
- "globby": "14.0.1",
83
+ "globby": "14.0.2",
83
84
  "js-yaml": "4.1.0",
84
- "json-schema-to-typescript": "13.1.2",
85
- "jsonc-parser": "3.2.1",
85
+ "json-schema-to-typescript": "15.0.1",
86
+ "jsonc-parser": "3.3.1",
86
87
  "markdown-it-for-inline": "2.0.1",
87
88
  "markdown-it-sub": "2.0.0",
88
89
  "markdown-it-sup": "2.0.0",
90
+ "markdownlint-rule-extended-ascii": "0.1.0",
89
91
  "npm-run-all": "4.1.5",
90
92
  "terser-webpack-plugin": "5.3.10",
91
93
  "toml": "3.0.0",
92
- "typescript": "5.4.3",
93
- "webpack": "5.91.0",
94
+ "typescript": "5.5.4",
95
+ "webpack": "5.94.0",
94
96
  "webpack-cli": "5.1.4"
95
97
  },
96
98
  "keywords": [