Преглед изворни кода

Omit appContainer from markdown-it configurers and preProcessors

Taichi Masuyama пре 3 година
родитељ
комит
d88b0dbc26

+ 0 - 23
packages/app/src/services/renderer/PreProcessor/XssFilter.js

@@ -1,23 +0,0 @@
-import Xss from '~/services/xss';
-import XssOption from '~/services/xss/xssOption';
-
-export default class XssFilter {
-
-  constructor(crowi) {
-    this.crowi = crowi;
-
-    if (crowi.config.isEnabledXssPrevention) {
-      this.xssOption = new XssOption(crowi.config);
-      this.xss = new Xss(this.xssOption);
-    }
-  }
-
-  process(markdown) {
-    if (this.crowi.config.isEnabledXssPrevention) {
-      return this.xss.process(markdown);
-    }
-
-    return markdown;
-  }
-
-}

+ 29 - 0
packages/app/src/services/renderer/PreProcessor/XssFilter.ts

@@ -0,0 +1,29 @@
+import Xss from '~/services/xss';
+import XssOption, { XssOptionConfig } from '~/services/xss/xssOption';
+
+export default class XssFilter {
+
+  xssOption: XssOption
+
+  xss
+
+  config: XssOptionConfig
+
+  constructor(config: XssOptionConfig) {
+    this.config = config;
+
+    if (config.isEnabledXssPrevention) {
+      this.xssOption = new XssOption(config);
+      this.xss = new Xss(this.xssOption);
+    }
+  }
+
+  process(markdown) {
+    if (this.config.isEnabledXssPrevention) {
+      return this.xss.process(markdown);
+    }
+
+    return markdown;
+  }
+
+}

+ 2 - 5
packages/app/src/services/renderer/markdown-it/blockdiag.js

@@ -1,10 +1,7 @@
 export default class BlockdiagConfigurer {
 
-  constructor(crowi) {
-    this.crowi = crowi;
-    const config = crowi.getConfig();
-
-    this.generateSourceUrl = config.env.BLOCKDIAG_URI || 'https://blockdiag-api.com/';
+  constructor(growiConfig) {
+    this.generateSourceUrl = growiConfig.env.BLOCKDIAG_URI || 'https://blockdiag-api.com/';
   }
 
   configure(md) {

+ 5 - 9
packages/app/src/services/renderer/markdown-it/link-by-relative-path.ts

@@ -5,18 +5,14 @@ const PATTERN_RELATIVE_PATH = new RegExp(/^(\.{1,2})(\/.*)?$/);
 
 export default class LinkerByRelativePathConfigurer {
 
-  // eslint-disable-next-line @typescript-eslint/no-explicit-any
-  appContainer: any;
+  pagePath: string
 
-  // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
-  constructor(appContainer) {
-    this.appContainer = appContainer;
+  constructor(pagePath: string) {
+    this.pagePath = pagePath;
   }
 
   // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
-  configure(md): void {
-    const pageContainer = this.appContainer.getContainer('PageContainer');
-
+  configure(md, pagePath: string): void {
     // Remember old renderer, if overridden, or proxy to default renderer
     const defaultRender = md.renderer.rules.link_open || function(tokens, idx, options, env, self) {
       return self.renderToken(tokens, idx, options);
@@ -32,7 +28,7 @@ export default class LinkerByRelativePathConfigurer {
 
       if (hrefIndex != null && hrefIndex >= 0) {
         const href: string = tokens[idx].attrs[hrefIndex][1];
-        const currentPath: string | null = pageContainer?.state.path;
+        const currentPath: string | null = pagePath;
 
         // resolve relative path and replace
         if (PATTERN_RELATIVE_PATH.test(href) && currentPath != null) {

+ 2 - 5
packages/app/src/services/renderer/markdown-it/mathjax.js

@@ -1,10 +1,7 @@
 export default class MathJaxConfigurer {
 
-  constructor(crowi) {
-    this.crowi = crowi;
-
-    const config = crowi.getConfig();
-    this.isEnabled = !!config.env.MATHJAX; // convert to boolean
+  constructor(growiConfig) {
+    this.isEnabled = !!growiConfig.env.MATHJAX; // convert to boolean
   }
 
   configure(md) {

+ 2 - 5
packages/app/src/services/renderer/markdown-it/plantuml.js

@@ -3,12 +3,9 @@ import urljoin from 'url-join';
 
 export default class PlantUMLConfigurer {
 
-  constructor(crowi) {
-    this.crowi = crowi;
-    const config = crowi.getConfig();
-
+  constructor(growiConfig) {
     // Do NOT use HTTPS URL because plantuml.com refuse request except from members
-    this.serverUrl = config.env.PLANTUML_URI || 'http://plantuml.com/plantuml';
+    this.serverUrl = growiConfig.env.PLANTUML_URI || 'http://plantuml.com/plantuml';
 
     this.generateSource = this.generateSource.bind(this);
   }

+ 0 - 4
packages/app/src/services/renderer/markdown-it/task-lists.js

@@ -1,9 +1,5 @@
 export default class TaskListsConfigurer {
 
-  constructor(crowi) {
-    this.crowi = crowi;
-  }
-
   configure(md) {
     md.use(require('markdown-it-task-checkbox'), {
       disabled: true,

+ 14 - 3
packages/app/src/services/xss/xssOption.js → packages/app/src/services/xss/xssOption.ts

@@ -1,6 +1,18 @@
-class XssOption {
+export type XssOptionConfig = {
+  isEnabledXssPrevention: boolean,
+  tagWhiteList: any[],
+  attrWhiteList: any[],
+}
+
+export default class XssOption {
+
+  isEnabledXssPrevention: boolean
+
+  tagWhiteList: any[]
+
+  attrWhiteList: any[]
 
-  constructor(config) {
+  constructor(config: XssOptionConfig) {
     const recommendedWhitelist = require('~/services/xss/recommended-whitelist');
     const initializedConfig = (config != null) ? config : {};
 
@@ -10,4 +22,3 @@ class XssOption {
   }
 
 }
-module.exports = XssOption;