Просмотр исходного кода

use ts-deepmerge for the options of sanitize

Yuki Takei 3 лет назад
Родитель
Сommit
da8237ea26
3 измененных файлов с 21 добавлено и 14 удалено
  1. 1 0
      package.json
  2. 15 14
      packages/app/src/services/renderer/renderer.ts
  3. 5 0
      yarn.lock

+ 1 - 0
package.json

@@ -48,6 +48,7 @@
     "cross-env": "^7.0.0",
     "cross-env": "^7.0.0",
     "dotenv-flow": "^3.2.0",
     "dotenv-flow": "^3.2.0",
     "npm-run-all": "^4.1.5",
     "npm-run-all": "^4.1.5",
+    "ts-deepmerge": "^3.0.0",
     "tslib": "^2.3.1"
     "tslib": "^2.3.1"
   },
   },
   "devDependencies": {
   "devDependencies": {

+ 15 - 14
packages/app/src/services/renderer/renderer.ts

@@ -9,6 +9,7 @@ import breaks from 'remark-breaks';
 import emoji from 'remark-emoji';
 import emoji from 'remark-emoji';
 import gfm from 'remark-gfm';
 import gfm from 'remark-gfm';
 import math from 'remark-math';
 import math from 'remark-math';
+import deepmerge from 'ts-deepmerge';
 
 
 
 
 import { CodeBlock } from '~/components/ReactMarkdownComponents/CodeBlock';
 import { CodeBlock } from '~/components/ReactMarkdownComponents/CodeBlock';
@@ -221,6 +222,19 @@ export type RendererOptions = Partial<ReactMarkdownOptions>;
 
 
 
 
 const generateCommonOptions = (pagePath: string|undefined, config: RendererConfig): RendererOptions => {
 const generateCommonOptions = (pagePath: string|undefined, config: RendererConfig): RendererOptions => {
+  const sanitizeOption = deepmerge(
+    sanitizeDefaultSchema,
+    {
+      tagNames: [
+        'ls',
+        'lsx',
+      ],
+      attributes: {
+        '*': ['class', 'className'],
+      },
+    },
+  );
+
   return {
   return {
     remarkPlugins: [
     remarkPlugins: [
       gfm,
       gfm,
@@ -232,20 +246,7 @@ const generateCommonOptions = (pagePath: string|undefined, config: RendererConfi
       [relativeLinksByPukiwikiLikeLinker, { pagePath }],
       [relativeLinksByPukiwikiLikeLinker, { pagePath }],
       [relativeLinks, { pagePath }],
       [relativeLinks, { pagePath }],
       raw,
       raw,
-      [sanitize, {
-        ...sanitizeDefaultSchema,
-        tagNames: [
-          ...(sanitizeDefaultSchema.tagNames ?? []),
-          'ls',
-          'lsx',
-        ],
-        attributes: {
-          ...sanitizeDefaultSchema.attributes,
-          '*': sanitizeDefaultSchema.attributes != null
-            ? sanitizeDefaultSchema.attributes['*'].concat('class', 'className')
-            : ['class', 'className'],
-        },
-      }],
+      [sanitize, sanitizeOption],
       [addClass, {
       [addClass, {
         table: 'table table-bordered',
         table: 'table table-bordered',
       }],
       }],

+ 5 - 0
yarn.lock

@@ -22991,6 +22991,11 @@ try-resolve@^1.0.1:
   resolved "https://registry.yarnpkg.com/try-resolve/-/try-resolve-1.0.1.tgz#cfde6fabd72d63e5797cfaab873abbe8e700e912"
   resolved "https://registry.yarnpkg.com/try-resolve/-/try-resolve-1.0.1.tgz#cfde6fabd72d63e5797cfaab873abbe8e700e912"
   integrity sha1-z95vq9ctY+V5fPqrhzq76OcA6RI=
   integrity sha1-z95vq9ctY+V5fPqrhzq76OcA6RI=
 
 
+ts-deepmerge@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/ts-deepmerge/-/ts-deepmerge-3.0.0.tgz#231c48901606eb104ab51a74cb447af0e9e669e4"
+  integrity sha512-gpjFrde/nE3jp7l5cJTDpyhdbGdAIO/AkNjaz4V9odnopdLd9NVrQcBDEBiE/ucMV9dmNOcdgzOVwS7U6SsBhA==
+
 ts-essentials@9.0.0:
 ts-essentials@9.0.0:
   version "9.0.0"
   version "9.0.0"
   resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-9.0.0.tgz#6196b7f390926429256c70951c8edd260e8e5097"
   resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-9.0.0.tgz#6196b7f390926429256c70951c8edd260e8e5097"