From 2607333b3c490cfbdf6b4c54a0d221a77813319a Mon Sep 17 00:00:00 2001 From: Cason Kervis Date: Thu, 5 Jun 2025 11:17:35 +0800 Subject: [PATCH 1/3] fix(markdown): fix time was rendered as number and empty div - this was introduced by remark-directive dependence - and the kind of content rendered by remark-directive don't use frequency --- apps/desktop/vite.config.ts | 1 - packages/internal/components/package.json | 1 - .../components/src/utils/parse-markdown.tsx | 2 - pnpm-lock.yaml | 69 +++++-------------- 4 files changed, 16 insertions(+), 57 deletions(-) diff --git a/apps/desktop/vite.config.ts b/apps/desktop/vite.config.ts index b4ab761ca7..27209bef89 100644 --- a/apps/desktop/vite.config.ts +++ b/apps/desktop/vite.config.ts @@ -223,7 +223,6 @@ export default ({ mode }) => { ["zustand", "jotai", "use-context-selector", "immer", "dexie"], // Remark [ - "remark-directive", "remark-gfm", "remark-parse", "remark-stringify", diff --git a/packages/internal/components/package.json b/packages/internal/components/package.json index 7095c537d4..08c52753ea 100644 --- a/packages/internal/components/package.json +++ b/packages/internal/components/package.json @@ -67,7 +67,6 @@ "rehype-parse": "9.0.1", "rehype-sanitize": "6.0.0", "rehype-stringify": "10.0.1", - "remark-directive": "4.0.0", "remark-gfm": "4.0.1", "remark-gh-alerts": "0.0.3", "remark-rehype": "11.1.2", diff --git a/packages/internal/components/src/utils/parse-markdown.tsx b/packages/internal/components/src/utils/parse-markdown.tsx index 2c0fdff938..a8f8d657db 100644 --- a/packages/internal/components/src/utils/parse-markdown.tsx +++ b/packages/internal/components/src/utils/parse-markdown.tsx @@ -9,7 +9,6 @@ import type { Components } from "hast-util-to-jsx-runtime" import { toJsxRuntime } from "hast-util-to-jsx-runtime" import { Fragment, jsx, jsxs } from "react/jsx-runtime" import rehypeStringify from "rehype-stringify" -import remarkDirective from "remark-directive" import remarkGfm from "remark-gfm" import remarkGithubAlerts from "remark-gh-alerts" import remarkParse from "remark-parse" @@ -26,7 +25,6 @@ export const parseMarkdown = (content: string, options?: Partial) const { components, applyMiddleware } = options || {} let pipeline: Processor = unified() - .use(remarkDirective) .use(remarkParse) .use(remarkGfm) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ecae78a3c..964cf9280f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,12 +4,6 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -catalogs: - default: - typescript: - specifier: 5.8.3 - version: 5.8.3 - overrides: '@electron/node-gyp': 10.2.0-electron.2 is-core-module: npm:@nolyfill/is-core-module@1.0.39 @@ -1494,7 +1488,7 @@ importers: version: 7.56.4(react@19.0.0) react-i18next: specifier: 15.5.2 - version: 15.5.2(i18next@25.2.1(typescript@5.8.3))(react-dom@19.0.0(react@19.0.0))(react-native@0.79.1(@babel/core@7.27.3)(@types/react@19.1.6)(bufferutil@4.0.9)(react@19.0.0))(react@19.0.0)(typescript@5.8.3) + version: 15.5.2(i18next@25.2.1(typescript@5.8.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.3) rehype-infer-description-meta: specifier: 2.0.0 version: 2.0.0 @@ -1507,9 +1501,6 @@ importers: rehype-stringify: specifier: 10.0.1 version: 10.0.1 - remark-directive: - specifier: 4.0.0 - version: 4.0.0 remark-gfm: specifier: 4.0.1 version: 4.0.1 @@ -11113,9 +11104,6 @@ packages: md5@2.3.0: resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} - mdast-util-directive@3.1.0: - resolution: {integrity: sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==} - mdast-util-find-and-replace@3.0.2: resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} @@ -11252,9 +11240,6 @@ packages: micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} - micromark-extension-directive@4.0.0: - resolution: {integrity: sha512-/C2nqVmXXmiseSSuCdItCMho7ybwwop6RrrRPk0KbOHW21JKoCldC+8rFOaundDoRBUWBnJJcxeA/Kvi34WQXg==} - micromark-extension-gfm-autolink-literal@2.1.0: resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} @@ -13229,9 +13214,6 @@ packages: resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} engines: {node: '>= 0.10'} - remark-directive@4.0.0: - resolution: {integrity: sha512-7sxn4RfF1o3izevPV1DheyGDD6X4c9hrGpfdUpm7uC++dqrnJxIZVkk7CoKqcLm0VUMAuOol7Mno3m6g8cfMuA==} - remark-gfm@4.0.1: resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} @@ -24062,6 +24044,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.1: + dependencies: + ms: 2.1.3 + debug@4.4.1(supports-color@8.1.1): dependencies: ms: 2.1.3 @@ -27993,20 +27979,6 @@ snapshots: crypt: 0.0.2 is-buffer: 1.1.6 - mdast-util-directive@3.1.0: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - parse-entities: 4.0.2 - stringify-entities: 4.0.4 - unist-util-visit-parents: 6.0.1 - transitivePeerDependencies: - - supports-color - mdast-util-find-and-replace@3.0.2: dependencies: '@types/mdast': 4.0.4 @@ -28461,16 +28433,6 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-extension-directive@4.0.0: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-factory-whitespace: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - parse-entities: 4.0.2 - micromark-extension-gfm-autolink-literal@2.1.0: dependencies: micromark-util-character: 2.1.1 @@ -28624,7 +28586,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1 decode-named-character-reference: 1.1.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -29966,6 +29928,16 @@ snapshots: react-native: 0.79.1(@babel/core@7.27.3)(@types/react@19.1.6)(bufferutil@4.0.9)(react@19.0.0) typescript: 5.8.3 + react-i18next@15.5.2(i18next@25.2.1(typescript@5.8.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.3): + dependencies: + '@babel/runtime': 7.27.3 + html-parse-stringify: 3.0.1 + i18next: 25.2.1(typescript@5.8.3) + react: 19.0.0 + optionalDependencies: + react-dom: 19.0.0(react@19.0.0) + typescript: 5.8.3 + react-intersection-observer@9.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 @@ -30573,15 +30545,6 @@ snapshots: relateurl@0.2.7: {} - remark-directive@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-directive: 3.1.0 - micromark-extension-directive: 4.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - remark-gfm@4.0.1: dependencies: '@types/mdast': 4.0.4 From ddf96f6f1b15e2441a385ea588b9c16752641e67 Mon Sep 17 00:00:00 2001 From: Cason Kervis Date: Fri, 6 Jun 2025 17:44:45 +0800 Subject: [PATCH 2/3] Revert "fix(markdown): fix time was rendered as number and empty div" This reverts commit 2607333b3c490cfbdf6b4c54a0d221a77813319a. --- apps/desktop/vite.config.ts | 1 + packages/internal/components/package.json | 1 + .../components/src/utils/parse-markdown.tsx | 2 + pnpm-lock.yaml | 69 ++++++++++++++----- 4 files changed, 57 insertions(+), 16 deletions(-) diff --git a/apps/desktop/vite.config.ts b/apps/desktop/vite.config.ts index 27209bef89..b4ab761ca7 100644 --- a/apps/desktop/vite.config.ts +++ b/apps/desktop/vite.config.ts @@ -223,6 +223,7 @@ export default ({ mode }) => { ["zustand", "jotai", "use-context-selector", "immer", "dexie"], // Remark [ + "remark-directive", "remark-gfm", "remark-parse", "remark-stringify", diff --git a/packages/internal/components/package.json b/packages/internal/components/package.json index 08c52753ea..7095c537d4 100644 --- a/packages/internal/components/package.json +++ b/packages/internal/components/package.json @@ -67,6 +67,7 @@ "rehype-parse": "9.0.1", "rehype-sanitize": "6.0.0", "rehype-stringify": "10.0.1", + "remark-directive": "4.0.0", "remark-gfm": "4.0.1", "remark-gh-alerts": "0.0.3", "remark-rehype": "11.1.2", diff --git a/packages/internal/components/src/utils/parse-markdown.tsx b/packages/internal/components/src/utils/parse-markdown.tsx index a8f8d657db..2c0fdff938 100644 --- a/packages/internal/components/src/utils/parse-markdown.tsx +++ b/packages/internal/components/src/utils/parse-markdown.tsx @@ -9,6 +9,7 @@ import type { Components } from "hast-util-to-jsx-runtime" import { toJsxRuntime } from "hast-util-to-jsx-runtime" import { Fragment, jsx, jsxs } from "react/jsx-runtime" import rehypeStringify from "rehype-stringify" +import remarkDirective from "remark-directive" import remarkGfm from "remark-gfm" import remarkGithubAlerts from "remark-gh-alerts" import remarkParse from "remark-parse" @@ -25,6 +26,7 @@ export const parseMarkdown = (content: string, options?: Partial) const { components, applyMiddleware } = options || {} let pipeline: Processor = unified() + .use(remarkDirective) .use(remarkParse) .use(remarkGfm) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 964cf9280f..5ecae78a3c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,12 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +catalogs: + default: + typescript: + specifier: 5.8.3 + version: 5.8.3 + overrides: '@electron/node-gyp': 10.2.0-electron.2 is-core-module: npm:@nolyfill/is-core-module@1.0.39 @@ -1488,7 +1494,7 @@ importers: version: 7.56.4(react@19.0.0) react-i18next: specifier: 15.5.2 - version: 15.5.2(i18next@25.2.1(typescript@5.8.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.3) + version: 15.5.2(i18next@25.2.1(typescript@5.8.3))(react-dom@19.0.0(react@19.0.0))(react-native@0.79.1(@babel/core@7.27.3)(@types/react@19.1.6)(bufferutil@4.0.9)(react@19.0.0))(react@19.0.0)(typescript@5.8.3) rehype-infer-description-meta: specifier: 2.0.0 version: 2.0.0 @@ -1501,6 +1507,9 @@ importers: rehype-stringify: specifier: 10.0.1 version: 10.0.1 + remark-directive: + specifier: 4.0.0 + version: 4.0.0 remark-gfm: specifier: 4.0.1 version: 4.0.1 @@ -11104,6 +11113,9 @@ packages: md5@2.3.0: resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + mdast-util-directive@3.1.0: + resolution: {integrity: sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==} + mdast-util-find-and-replace@3.0.2: resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} @@ -11240,6 +11252,9 @@ packages: micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + micromark-extension-directive@4.0.0: + resolution: {integrity: sha512-/C2nqVmXXmiseSSuCdItCMho7ybwwop6RrrRPk0KbOHW21JKoCldC+8rFOaundDoRBUWBnJJcxeA/Kvi34WQXg==} + micromark-extension-gfm-autolink-literal@2.1.0: resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} @@ -13214,6 +13229,9 @@ packages: resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} engines: {node: '>= 0.10'} + remark-directive@4.0.0: + resolution: {integrity: sha512-7sxn4RfF1o3izevPV1DheyGDD6X4c9hrGpfdUpm7uC++dqrnJxIZVkk7CoKqcLm0VUMAuOol7Mno3m6g8cfMuA==} + remark-gfm@4.0.1: resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} @@ -24044,10 +24062,6 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.4.1: - dependencies: - ms: 2.1.3 - debug@4.4.1(supports-color@8.1.1): dependencies: ms: 2.1.3 @@ -27979,6 +27993,20 @@ snapshots: crypt: 0.0.2 is-buffer: 1.1.6 + mdast-util-directive@3.1.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-visit-parents: 6.0.1 + transitivePeerDependencies: + - supports-color + mdast-util-find-and-replace@3.0.2: dependencies: '@types/mdast': 4.0.4 @@ -28433,6 +28461,16 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 + micromark-extension-directive@4.0.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + parse-entities: 4.0.2 + micromark-extension-gfm-autolink-literal@2.1.0: dependencies: micromark-util-character: 2.1.1 @@ -28586,7 +28624,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) decode-named-character-reference: 1.1.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -29928,16 +29966,6 @@ snapshots: react-native: 0.79.1(@babel/core@7.27.3)(@types/react@19.1.6)(bufferutil@4.0.9)(react@19.0.0) typescript: 5.8.3 - react-i18next@15.5.2(i18next@25.2.1(typescript@5.8.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.3): - dependencies: - '@babel/runtime': 7.27.3 - html-parse-stringify: 3.0.1 - i18next: 25.2.1(typescript@5.8.3) - react: 19.0.0 - optionalDependencies: - react-dom: 19.0.0(react@19.0.0) - typescript: 5.8.3 - react-intersection-observer@9.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 @@ -30545,6 +30573,15 @@ snapshots: relateurl@0.2.7: {} + remark-directive@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-directive: 3.1.0 + micromark-extension-directive: 4.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + remark-gfm@4.0.1: dependencies: '@types/mdast': 4.0.4 From cb91a8e14284b590835c7fbd37c23123a96fc29c Mon Sep 17 00:00:00 2001 From: Cason Kervis Date: Fri, 6 Jun 2025 17:46:59 +0800 Subject: [PATCH 3/3] fix(markdown): add patch for remark-directive to prevent time broken --- package.json | 3 +- .../micromark-extension-directive@4.0.0.patch | 50 +++++++++++++++++++ pnpm-lock.yaml | 29 +++-------- 3 files changed, 59 insertions(+), 23 deletions(-) create mode 100644 patches/micromark-extension-directive@4.0.0.patch diff --git a/package.json b/package.json index 75b533d263..f6a5343fb7 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,8 @@ "react-native-sheet-transitions": "patches/react-native-sheet-transitions.patch", "react-native-screens": "patches/react-native-screens.patch", "expo-image": "patches/expo-image.patch", - "react-native-ios-utilities": "patches/react-native-ios-utilities.patch" + "react-native-ios-utilities": "patches/react-native-ios-utilities.patch", + "micromark-extension-directive@4.0.0": "patches/micromark-extension-directive@4.0.0.patch" }, "overrides": { "@electron/node-gyp": "10.2.0-electron.2", diff --git a/patches/micromark-extension-directive@4.0.0.patch b/patches/micromark-extension-directive@4.0.0.patch new file mode 100644 index 0000000000..923054d6a0 --- /dev/null +++ b/patches/micromark-extension-directive@4.0.0.patch @@ -0,0 +1,50 @@ +diff --git a/dev/lib/directive-text.js b/dev/lib/directive-text.js +index 38f926006bee77997610f13d7c628aca57810389..d658160aca9ed4e9078a3c0671e2123ce10d9b04 100644 +--- a/dev/lib/directive-text.js ++++ b/dev/lib/directive-text.js +@@ -4,6 +4,7 @@ + + import {ok as assert} from 'devlop' + import {codes, types} from 'micromark-util-symbol' ++import {asciiDigit} from 'micromark-util-character' + import {factoryAttributes} from './factory-attributes.js' + import {factoryLabel} from './factory-label.js' + import {factoryName} from './factory-name.js' +@@ -35,18 +36,36 @@ function previous(code) { + */ + function tokenizeDirectiveText(effects, ok, nok) { + const self = this ++ let colonCount = 0 + + return start + + /** @type {State} */ + function start(code) { + assert(code === codes.colon, 'expected `:`') ++ colonCount++ + assert(previous.call(self, self.previous), 'expected correct previous') + effects.enter('directiveText') + effects.enter('directiveTextMarker') + effects.consume(code) + effects.exit('directiveTextMarker') +- return factoryName.call(self, effects, afterName, nok, 'directiveTextName') ++ return beforeName ++ } ++ ++ /** @type {State} */ ++ function beforeName(code) { ++ // Only return false when like single colon and number :Number ++ if (colonCount === 1 && asciiDigit(code)) { ++ return nok(code) ++ } ++ ++ return factoryName.call( ++ self, ++ effects, ++ afterName, ++ nok, ++ 'directiveTextName' ++ )(code) + } + + /** @type {State} */ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ecae78a3c..9ece8b9513 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,6 +48,9 @@ patchedDependencies: jsonpointer: hash: ad796d54956ca5a7e9e5232503e5f22d4ffa732fc4552a7e53121ea5fa81d6c1 path: patches/jsonpointer.patch + micromark-extension-directive@4.0.0: + hash: 24b9015c9cc4dc7e5c61adb10801ad14287b81a19430e616af34e19652c3b57c + path: patches/micromark-extension-directive@4.0.0.patch re-resizable@6.11.2: hash: adb774d32dfdf0ef779d30a8e9e35ba7f3d07706cfe61907db2a53775ea09f23 path: patches/re-resizable@6.11.2.patch @@ -21043,7 +21046,7 @@ snapshots: debug: 2.6.9 invariant: 2.2.4 metro: 0.82.4(bufferutil@4.0.9) - metro-config: 0.82.4(bufferutil@4.0.9) + metro-config: 0.82.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) metro-core: 0.82.4 semver: 7.7.2 transitivePeerDependencies: @@ -28204,21 +28207,6 @@ snapshots: transitivePeerDependencies: - supports-color - metro-config@0.82.4(bufferutil@4.0.9): - dependencies: - connect: 3.7.0 - cosmiconfig: 5.2.1 - flow-enums-runtime: 0.0.6 - jest-validate: 29.7.0 - metro: 0.82.4(bufferutil@4.0.9) - metro-cache: 0.82.4 - metro-core: 0.82.4 - metro-runtime: 0.82.4 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - metro-config@0.82.4(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: connect: 3.7.0 @@ -28233,7 +28221,6 @@ snapshots: - bufferutil - supports-color - utf-8-validate - optional: true metro-core@0.82.4: dependencies: @@ -28345,7 +28332,6 @@ snapshots: - bufferutil - supports-color - utf-8-validate - optional: true metro@0.82.4(bufferutil@4.0.9): dependencies: @@ -28373,7 +28359,7 @@ snapshots: metro-babel-transformer: 0.82.4 metro-cache: 0.82.4 metro-cache-key: 0.82.4 - metro-config: 0.82.4(bufferutil@4.0.9) + metro-config: 0.82.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) metro-core: 0.82.4 metro-file-map: 0.82.4 metro-resolver: 0.82.4 @@ -28440,7 +28426,6 @@ snapshots: - bufferutil - supports-color - utf-8-validate - optional: true micromark-core-commonmark@2.0.3: dependencies: @@ -28461,7 +28446,7 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-extension-directive@4.0.0: + micromark-extension-directive@4.0.0(patch_hash=24b9015c9cc4dc7e5c61adb10801ad14287b81a19430e616af34e19652c3b57c): dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.1 @@ -30577,7 +30562,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 mdast-util-directive: 3.1.0 - micromark-extension-directive: 4.0.0 + micromark-extension-directive: 4.0.0(patch_hash=24b9015c9cc4dc7e5c61adb10801ad14287b81a19430e616af34e19652c3b57c) unified: 11.0.5 transitivePeerDependencies: - supports-color