Procházet zdrojové kódy

Merge branch 'master' into support/apply-nextjs-2

Yuki Takei před 3 roky
rodič
revize
29d133ce6c

+ 1 - 1
lerna.json

@@ -1,7 +1,7 @@
 {
   "npmClient": "yarn",
   "useWorkspaces": true,
-  "version": "5.0.12-RC.0",
+  "version": "5.1.0-RC.1",
   "packages": [
     "packages/*"
   ]

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "growi",
-  "version": "5.0.12-RC.0",
+  "version": "5.1.0-RC.1",
   "description": "Team collaboration software using markdown",
   "tags": [
     "wiki",

+ 2 - 2
packages/app/bin/github-actions/update-readme.sh

@@ -2,5 +2,5 @@
 
 cd docker
 
-sed -i -e "s/^\([*] \[\`\)[^\`]\+\(\`, \`5\.0\`, .\+\]\)\(.\+\/blob\/v\).\+\(\/docker\/Dockerfile.\+\)$/\1${RELEASED_VERSION}\2\3${RELEASED_VERSION}\4/" README.md
-sed -i -e "s/^\([*] \[\`\)[^\`]\+\(\`, \`5\.0-nocdn\`, .\+\]\)\(.\+\/blob\/v\).\+\(\/docker\/Dockerfile.\+\)$/\1${RELEASED_VERSION}-nocdn\2\3${RELEASED_VERSION}\4/" README.md
+sed -i -e "s/^\([*] \[\`\)[^\`]\+\(\`, \`5\.1\`, .\+\]\)\(.\+\/blob\/v\).\+\(\/docker\/Dockerfile.\+\)$/\1${RELEASED_VERSION}\2\3${RELEASED_VERSION}\4/" README.md
+sed -i -e "s/^\([*] \[\`\)[^\`]\+\(\`, \`5\.1-nocdn\`, .\+\]\)\(.\+\/blob\/v\).\+\(\/docker\/Dockerfile.\+\)$/\1${RELEASED_VERSION}-nocdn\2\3${RELEASED_VERSION}\4/" README.md

+ 6 - 6
packages/app/docker/README.md

@@ -10,12 +10,12 @@ GROWI Official docker image
 Supported tags and respective Dockerfile links
 ------------------------------------------------
 
-* [`5.0.11`, `5.0`, `5`, `latest` (Dockerfile)](https://github.com/weseek/growi/blob/v5.0.11/docker/Dockerfile)
-* [`5.0.11-nocdn`, `5.0-nocdn`, `5-nocdn`, `latest-nocdn` (Dockerfile)](https://github.com/weseek/growi/blob/v5.0.11/docker/Dockerfile)
-* [`4.5.22`, `4.5`, `4`, `latest` (Dockerfile)](https://github.com/weseek/growi/blob/v4.5.22/docker/Dockerfile)
-* [`4.5.22-nocdn`, `4.5-nocdn`, `4-nocdn`, `latest-nocdn` (Dockerfile)](https://github.com/weseek/growi/blob/v4.5.22/docker/Dockerfile)
-* [`4.4.13`, `4.4` (Dockerfile)](https://github.com/weseek/growi/blob/v4.4.13/docker/Dockerfile)
-* [`4.4.13-nocdn`, `4.4-nocdn` (Dockerfile)](https://github.com/weseek/growi/blob/v4.4.13/docker/Dockerfile)
+* [`5.1.0`, `5.1`, `5`, `latest` (Dockerfile)](https://github.com/weseek/growi/blob/v5.1.0/packages/app/docker/Dockerfile)
+* [`5.1.0-nocdn`, `5.1-nocdn`, `5-nocdn`, `latest-nocdn` (Dockerfile)](https://github.com/weseek/growi/blob/v5.1.0/packages/app/docker/Dockerfile)
+* [`5.0.11`, `5.0` (Dockerfile)](https://github.com/weseek/growi/blob/v5.0.11/packages/app/docker/Dockerfile)
+* [`5.0.11-nocdn`, `5.0-nocdn` (Dockerfile)](https://github.com/weseek/growi/blob/v5.0.11/packages/app/docker/Dockerfile)
+* [`4.5.23`, `4.5`, `4`, `latest` (Dockerfile)](https://github.com/weseek/growi/blob/v4.5.23/packages/app/docker/Dockerfile)
+* [`4.5.23-nocdn`, `4.5-nocdn`, `4-nocdn`, `latest-nocdn` (Dockerfile)](https://github.com/weseek/growi/blob/v4.5.23/packages/app/docker/Dockerfile)
 
 
 What is GROWI?

+ 7 - 7
packages/app/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@growi/app",
-  "version": "5.0.12-RC.0",
+  "version": "5.1.0-RC.1",
   "license": "MIT",
   "scripts": {
     "//// for production": "",
@@ -63,11 +63,11 @@
     "@elastic/elasticsearch7": "npm:@elastic/elasticsearch@^7.17.0",
     "@godaddy/terminus": "^4.9.0",
     "@google-cloud/storage": "^5.8.5",
-    "@growi/codemirror-textlint": "^5.0.12-RC.0",
-    "@growi/plugin-attachment-refs": "^5.0.12-RC.0",
-    "@growi/plugin-lsx": "^5.0.12-RC.0",
-    "@growi/plugin-pukiwiki-like-linker": "^5.0.12-RC.0",
-    "@growi/slack": "^5.0.12-RC.0",
+    "@growi/codemirror-textlint": "^5.1.0-RC.1",
+    "@growi/plugin-attachment-refs": "^5.1.0-RC.1",
+    "@growi/plugin-lsx": "^5.1.0-RC.1",
+    "@growi/plugin-pukiwiki-like-linker": "^5.1.0-RC.1",
+    "@growi/slack": "^5.1.0-RC.1",
     "@promster/express": "^7.0.2",
     "@promster/server": "^7.0.4",
     "@slack/events-api": "^3.0.0",
@@ -171,7 +171,7 @@
     "handsontable": "v7.0.0 or above is no loger MIT lisence."
   },
   "devDependencies": {
-    "@growi/ui": "^5.0.12-RC.0",
+    "@growi/ui": "^5.1.0-RC.1",
     "@handsontable/react": "=2.1.0",
     "@types/compression": "^1.7.0",
     "@types/express": "^4.17.11",

+ 19 - 12
packages/app/src/services/renderer/growi-renderer.ts

@@ -35,19 +35,19 @@ type MarkdownSettings = {
 
 export default class GrowiRenderer {
 
-  preProcessors: any[]
+  preProcessors: any[];
 
-  postProcessors: any[]
+  postProcessors: any[];
 
-  md: any
+  md: any;
 
-  isMarkdownItConfigured: boolean
+  isMarkdownItConfigured: boolean;
 
-  markdownItConfigurers: any[]
+  markdownItConfigurers: any[];
 
-  growiRendererConfig: GrowiRendererConfig
+  growiRendererConfig: GrowiRendererConfig;
 
-  pagePath?: Nullable<string>
+  pagePath?: Nullable<string>;
 
   /**
    *
@@ -234,13 +234,14 @@ export const generatePreviewRenderer: RendererGenerator = (
     new TableConfigurer(),
   ]);
 
+  renderer.setMarkdownSettings({ breaks: rendererSettings?.isEnabledLinebreaks });
   renderer.configure();
 
   return renderer;
 };
 
-const generateRendererWithTableConfigurer: RendererGenerator = (
-    growiRendererConfig: GrowiRendererConfig, rendererSettings: RendererSettings | null, pagePath?: Nullable<string>,
+export const generateCommentPreviewRenderer: RendererGenerator = (
+    growiRendererConfig: GrowiRendererConfig, rendererSettings: RendererSettings, pagePath?: Nullable<string>,
 ): GrowiRenderer => {
   const renderer = new GrowiRenderer(growiRendererConfig, pagePath);
   renderer.init();
@@ -249,17 +250,23 @@ const generateRendererWithTableConfigurer: RendererGenerator = (
     new TableConfigurer(),
   ]);
 
+  renderer.setMarkdownSettings({ breaks: rendererSettings.isEnabledLinebreaksInComments });
   renderer.configure();
 
   return renderer;
 };
 
-export const generateCommentPreviewRenderer: RendererGenerator = (
+export const generateOthersRenderer: RendererGenerator = (
     growiRendererConfig: GrowiRendererConfig, rendererSettings: RendererSettings, pagePath?: Nullable<string>,
 ): GrowiRenderer => {
-  const renderer = generateRendererWithTableConfigurer(growiRendererConfig, null, pagePath);
+  const renderer = new GrowiRenderer(growiRendererConfig, pagePath);
+  renderer.init();
 
-  renderer.setMarkdownSettings({ breaks: rendererSettings.isEnabledLinebreaksInComments });
+  renderer.addConfigurers([
+    new TableConfigurer(),
+  ]);
+
+  renderer.setMarkdownSettings({ breaks: rendererSettings.isEnabledLinebreaks });
   renderer.configure();
 
   return renderer;

+ 27 - 33
packages/app/src/stores/renderer.tsx

@@ -1,76 +1,70 @@
 import { Key, SWRResponse } from 'swr';
+import useSWRImmutable from 'swr/immutable';
 
 import { RendererSettings } from '~/interfaces/services/renderer';
 import GrowiRenderer, {
-  generateCommentPreviewRenderer, generatePreviewRenderer, generateViewRenderer, RendererGenerator,
+  generateViewRenderer, generatePreviewRenderer, generateCommentPreviewRenderer, generateOthersRenderer, RendererGenerator,
 } from '~/services/renderer/growi-renderer';
 import { useStaticSWR } from '~/stores/use-static-swr';
 
 import { useCurrentPagePath, useGrowiRendererConfig } from './context';
 
-export const useRendererSettings = (initialData?: RendererSettings): SWRResponse<RendererSettings, any> => {
+export const useRendererSettings = (initialData?: RendererSettings): SWRResponse<RendererSettings, Error> => {
   return useStaticSWR('rendererSettings', initialData);
 };
 
 // The base hook with common processes
-const _useRendererBase = (key: Key, generator: RendererGenerator): SWRResponse<GrowiRenderer, any> => {
-  let _key = key;
-
-  const { data: renderer, mutate: mutateRenderer } = useStaticSWR(key);
+const _useRendererBase = (key: string, generator: RendererGenerator): SWRResponse<GrowiRenderer, Error> => {
   const { data: rendererSettings } = useRendererSettings();
   const { data: currentPath } = useCurrentPagePath();
   const { data: growiRendererConfig } = useGrowiRendererConfig();
 
-  if (rendererSettings == null || growiRendererConfig == null) {
-    _key = null;
-  }
-  // Initialize renderer
-  else if (renderer == null) {
-    const generated = generator(growiRendererConfig, rendererSettings, currentPath);
-    mutateRenderer(generated);
-  }
-
-  return useStaticSWR(_key);
+  return useSWRImmutable(
+    (rendererSettings == null || growiRendererConfig == null || currentPath == null)
+      ? null
+      : [key, rendererSettings, growiRendererConfig, currentPath],
+    (key, rendererSettings, growiRendererConfig, currentPath) => generator(growiRendererConfig, rendererSettings, currentPath),
+  );
 };
 
-export const useViewRenderer = (): SWRResponse<GrowiRenderer, any> => {
-  const key: Key = 'viewRenderer';
+export const useViewRenderer = (): SWRResponse<GrowiRenderer, Error> => {
+  const key = 'viewRenderer';
 
   return _useRendererBase(key, generateViewRenderer);
 };
 
-export const usePreviewRenderer = (): SWRResponse<GrowiRenderer, any> => {
-  const key: Key = 'previewRenderer';
+export const usePreviewRenderer = (): SWRResponse<GrowiRenderer, Error> => {
+  const key = 'previewRenderer';
 
   return _useRendererBase(key, generatePreviewRenderer);
 };
 
-export const useCommentPreviewRenderer = (): SWRResponse<GrowiRenderer, any> => {
-  const key: Key = 'commentPreviewRenderer';
+export const useCommentPreviewRenderer = (): SWRResponse<GrowiRenderer, Error> => {
+  const key = 'commentPreviewRenderer';
 
   return _useRendererBase(key, generateCommentPreviewRenderer);
 };
 
-export const useSearchResultRenderer = (): SWRResponse<GrowiRenderer, any> => {
-  const key: Key = 'searchResultRenderer';
+export const useSearchResultRenderer = (): SWRResponse<GrowiRenderer, Error> => {
+  const key = 'searchResultRenderer';
 
-  return _useRendererBase(key, generateViewRenderer);
+  return _useRendererBase(key, generateOthersRenderer);
 };
 
-export const useTimelineRenderer = (): SWRResponse<GrowiRenderer, any> => {
-  const key: Key = 'timelineRenderer';
+export const useTimelineRenderer = (): SWRResponse<GrowiRenderer, Error> => {
+  const key = 'timelineRenderer';
 
-  return _useRendererBase(key, generateViewRenderer);
+  return _useRendererBase(key, generateOthersRenderer);
 };
 
-export const useDraftRenderer = (): SWRResponse<GrowiRenderer, any> => {
-  const key: Key = 'draftRenderer';
+export const useDraftRenderer = (): SWRResponse<GrowiRenderer, Error> => {
+  const key = 'draftRenderer';
 
-  return _useRendererBase(key, generateViewRenderer);
+  return _useRendererBase(key, generateOthersRenderer);
 };
 
-export const useCustomSidebarRenderer = (): SWRResponse<GrowiRenderer, any> => {
+export const useCustomSidebarRenderer = (): SWRResponse<GrowiRenderer, Error> => {
   const key: Key = 'customSidebarRenderer';
 
-  return _useRendererBase(key, generateViewRenderer);
+  return _useRendererBase(key, generateOthersRenderer);
 };

+ 1 - 1
packages/codemirror-textlint/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@growi/codemirror-textlint",
-  "version": "5.0.12-RC.0",
+  "version": "5.1.0-RC.1",
   "license": "MIT",
   "main": "dist/index.js",
   "scripts": {

+ 1 - 1
packages/core/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@growi/core",
-  "version": "5.0.12-RC.0",
+  "version": "5.1.0-RC.1",
   "description": "GROWI Core Libraries",
   "license": "MIT",
   "keywords": [

+ 1 - 1
packages/plugin-attachment-refs/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@growi/plugin-attachment-refs",
-  "version": "5.0.12-RC.0",
+  "version": "5.1.0-RC.1",
   "description": "GROWI Plugin to add ref/refimg/refs/refsimg tags",
   "license": "MIT",
   "keywords": [

+ 1 - 1
packages/plugin-lsx/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@growi/plugin-lsx",
-  "version": "5.0.12-RC.0",
+  "version": "5.1.0-RC.1",
   "description": "GROWI plugin to list pages",
   "license": "MIT",
   "keywords": [

+ 1 - 1
packages/plugin-pukiwiki-like-linker/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@growi/plugin-pukiwiki-like-linker",
-  "version": "5.0.12-RC.0",
+  "version": "5.1.0-RC.1",
   "description": "GROWI plugin to add PukiwikiLikeLinker",
   "license": "MIT",
   "keywords": [

+ 1 - 1
packages/slack/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@growi/slack",
-  "version": "5.0.12-RC.0",
+  "version": "5.1.0-RC.1",
   "license": "MIT",
   "main": "dist/index.js",
   "typings": "dist/index.d.ts",

+ 2 - 2
packages/slackbot-proxy/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@growi/slackbot-proxy",
-  "version": "5.0.12-slackbot-proxy.0",
+  "version": "5.1.0-slackbot-proxy.0",
   "license": "MIT",
   "scripts": {
     "build": "yarn tsc && tsc-alias -p tsconfig.build.json",
@@ -25,7 +25,7 @@
   },
   "dependencies": {
     "@godaddy/terminus": "^4.9.0",
-    "@growi/slack": "^5.0.12-RC.0",
+    "@growi/slack": "^5.1.0-RC.1",
     "@slack/oauth": "^2.0.1",
     "@slack/web-api": "^6.2.4",
     "@tsed/common": "^6.43.0",

+ 1 - 1
packages/ui/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@growi/ui",
-  "version": "5.0.12-RC.0",
+  "version": "5.1.0-RC.1",
   "description": "GROWI UI Libraries",
   "license": "MIT",
   "keywords": [