Kaynağa Gözat

Merge branch 'support/apply-nextjs-2' into imprv/fix-lint

yuken 3 yıl önce
ebeveyn
işleme
baeab8268f
36 değiştirilmiş dosya ile 111 ekleme ve 112 silme
  1. 6 10
      packages/app/src/client/services/ContextExtractor.tsx
  2. 3 10
      packages/app/src/components/Page/RevisionLoader.jsx
  3. 0 1
      packages/app/src/components/Page/RevisionRenderer.tsx
  4. 4 4
      packages/app/src/components/SearchPage/SearchResultContent.tsx
  5. 5 12
      packages/app/src/components/Sidebar/CustomSidebar.tsx
  6. 2 1
      packages/app/src/migrations/20180927102719-init-serverurl.js
  7. 2 1
      packages/app/src/migrations/20190618055300-abolish-crowi-classic-auth.js
  8. 2 1
      packages/app/src/migrations/20190618104011-add-config-app-installed.js
  9. 2 1
      packages/app/src/migrations/20200420160390-remove-crowi-layout.js
  10. 2 1
      packages/app/src/migrations/20200512005851-remove-behavior-type.js
  11. 2 1
      packages/app/src/migrations/20200514001356-update-theme-color-for-dark.js
  12. 2 1
      packages/app/src/migrations/20200620203632-normalize-locale-id.js
  13. 2 1
      packages/app/src/migrations/20200827045151-remove-layout-setting.js
  14. 2 1
      packages/app/src/migrations/20200828024025-copy-aws-setting.js
  15. 2 1
      packages/app/src/migrations/20200901034313-update-mail-transmission.js
  16. 3 1
      packages/app/src/migrations/20200903080025-remove-timeline-type.js.js
  17. 3 1
      packages/app/src/migrations/20200915035234-rename-s3-config.js
  18. 2 1
      packages/app/src/migrations/20210830074539-update-configs-for-slackbot.js
  19. 3 2
      packages/app/src/migrations/20211005131430-config-without-proxy-command-permission-for-renaming.js
  20. 3 2
      packages/app/src/migrations/20220131001218-convert-redirect-to-pages-to-page-redirect-documents.js
  21. 7 6
      packages/app/src/pages/[[...path]].page.tsx
  22. 0 1
      packages/app/src/server/crowi/index.js
  23. 3 2
      packages/app/src/server/models/page.ts
  24. 3 3
      packages/app/src/server/service/activity.ts
  25. 7 7
      packages/app/src/server/service/search.ts
  26. 3 3
      packages/app/src/services/renderer/PreProcessor/XssFilter.ts
  27. 4 4
      packages/app/src/services/renderer/markdown-it/blockdiag.ts
  28. 3 3
      packages/app/src/services/renderer/markdown-it/drawio-viewer.js
  29. 2 2
      packages/app/src/services/renderer/markdown-it/emoji.js
  30. 1 1
      packages/app/src/services/renderer/markdown-it/footernote.js
  31. 1 1
      packages/app/src/services/renderer/markdown-it/link-by-relative-path.ts
  32. 1 1
      packages/app/src/services/renderer/markdown-it/mathjax.js
  33. 3 3
      packages/app/src/services/renderer/markdown-it/plantuml.ts
  34. 8 8
      packages/app/src/services/renderer/markdown-it/task-lists.js
  35. 10 10
      packages/app/src/services/renderer/markdown-it/toc-and-anchor.js
  36. 3 3
      packages/app/src/services/xss/xssOption.ts

+ 6 - 10
packages/app/src/client/services/ContextExtractor.tsx

@@ -6,7 +6,6 @@ import { pagePathUtils } from '@growi/core';
 import { CustomWindow } from '~/interfaces/global';
 import { CustomWindow } from '~/interfaces/global';
 import { IUserUISettings } from '~/interfaces/user-ui-settings';
 import { IUserUISettings } from '~/interfaces/user-ui-settings';
 // import { generatePreviewRenderer } from '~/services/renderer/growi-renderer';
 // import { generatePreviewRenderer } from '~/services/renderer/growi-renderer';
-import { useRendererSettings } from '~/stores/renderer';
 import {
 import {
   useIsDeviceSmallerThanMd, useIsDeviceSmallerThanLg,
   useIsDeviceSmallerThanMd, useIsDeviceSmallerThanLg,
   usePreferDrawerModeByUser, usePreferDrawerModeOnEditByUser, useSidebarCollapsed, useCurrentSidebarContents, useCurrentProductNavWidth,
   usePreferDrawerModeByUser, usePreferDrawerModeOnEditByUser, useSidebarCollapsed, useCurrentSidebarContents, useCurrentProductNavWidth,
@@ -23,7 +22,7 @@ import {
   useIsSearchPage, useIsForbidden, useIsIdenticalPath, useHasParent,
   useIsSearchPage, useIsForbidden, useIsIdenticalPath, useHasParent,
   useIsAclEnabled, useIsSearchServiceConfigured, useIsSearchServiceReachable, useIsEnabledAttachTitleHeader,
   useIsAclEnabled, useIsSearchServiceConfigured, useIsSearchServiceReachable, useIsEnabledAttachTitleHeader,
   useDefaultIndentSize, useIsIndentSizeForced, useCsrfToken, useGrowiVersion, useAuditLogEnabled,
   useDefaultIndentSize, useIsIndentSizeForced, useCsrfToken, useGrowiVersion, useAuditLogEnabled,
-  useActivityExpirationSeconds, useAuditLogAvailableActions, useGrowiRendererConfig,
+  useActivityExpirationSeconds, useAuditLogAvailableActions, useRendererConfig,
 } from '../../stores/context';
 } from '../../stores/context';
 
 
 const { isTrashPage: _isTrashPage } = pagePathUtils;
 const { isTrashPage: _isTrashPage } = pagePathUtils;
@@ -120,22 +119,19 @@ const ContextExtractorOnce: FC = () => {
   useActivityExpirationSeconds(configByContextHydrate.activityExpirationSeconds);
   useActivityExpirationSeconds(configByContextHydrate.activityExpirationSeconds);
   useAuditLogAvailableActions(configByContextHydrate.auditLogAvailableActions);
   useAuditLogAvailableActions(configByContextHydrate.auditLogAvailableActions);
   useGrowiVersion(configByContextHydrate.crowi.version);
   useGrowiVersion(configByContextHydrate.crowi.version);
-  useRendererSettings({
+  useRendererConfig({
     isEnabledLinebreaks: configByContextHydrate.isEnabledLinebreaks,
     isEnabledLinebreaks: configByContextHydrate.isEnabledLinebreaks,
     isEnabledLinebreaksInComments: configByContextHydrate.isEnabledLinebreaksInComments,
     isEnabledLinebreaksInComments: configByContextHydrate.isEnabledLinebreaksInComments,
     adminPreferredIndentSize: configByContextHydrate.adminPreferredIndentSize,
     adminPreferredIndentSize: configByContextHydrate.adminPreferredIndentSize,
     isIndentSizeForced: configByContextHydrate.isIndentSizeForced,
     isIndentSizeForced: configByContextHydrate.isIndentSizeForced,
-  });
-  useGrowiRendererConfig({
+
     isEnabledXssPrevention: configByContextHydrate.isEnabledXssPrevention,
     isEnabledXssPrevention: configByContextHydrate.isEnabledXssPrevention,
     attrWhiteList: configByContextHydrate.attrWhiteList,
     attrWhiteList: configByContextHydrate.attrWhiteList,
     tagWhiteList: configByContextHydrate.tagWhiteList,
     tagWhiteList: configByContextHydrate.tagWhiteList,
     highlightJsStyleBorder: configByContextHydrate.highlightJsStyleBorder,
     highlightJsStyleBorder: configByContextHydrate.highlightJsStyleBorder,
-    env: {
-      MATHJAX: configByContextHydrate.env.MATHJAX,
-      PLANTUML_URI: configByContextHydrate.env.PLANTUML_URI,
-      BLOCKDIAG_URI: configByContextHydrate.env.BLOCKDIAG_URI,
-    },
+
+    plantumlUri: configByContextHydrate.env.PLANTUML_URI,
+    blockdiagUri: configByContextHydrate.env.BLOCKDIAG_URI,
   });
   });
 
 
   // Page
   // Page

+ 3 - 10
packages/app/src/components/Page/RevisionLoader.jsx

@@ -5,8 +5,7 @@ import PropTypes from 'prop-types';
 import { Waypoint } from 'react-waypoint';
 import { Waypoint } from 'react-waypoint';
 
 
 import { apiv3Get } from '~/client/util/apiv3-client';
 import { apiv3Get } from '~/client/util/apiv3-client';
-// import GrowiRenderer from '~/services/renderer/growi-renderer';
-// import { useViewRenderer } from '~/stores/renderer';
+import { RendererOptions } from '~/services/renderer/renderer';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
 import RevisionRenderer from './RevisionRenderer';
 import RevisionRenderer from './RevisionRenderer';
@@ -110,7 +109,7 @@ class RevisionLoader extends React.Component {
 
 
     return (
     return (
       <RevisionRenderer
       <RevisionRenderer
-        growiRenderer={this.props.growiRenderer}
+        rendererOptions={this.props.rendererOptions}
         markdown={markdown}
         markdown={markdown}
         pagePath={this.props.pagePath}
         pagePath={this.props.pagePath}
         highlightKeywords={this.props.highlightKeywords}
         highlightKeywords={this.props.highlightKeywords}
@@ -124,7 +123,7 @@ class RevisionLoader extends React.Component {
 RevisionLoader.propTypes = {
 RevisionLoader.propTypes = {
   t: PropTypes.func.isRequired,
   t: PropTypes.func.isRequired,
 
 
-  // growiRenderer: PropTypes.instanceOf(GrowiRenderer).isRequired,
+  rendererOptions: PropTypes.instanceOf(RendererOptions).isRequired,
   pageId: PropTypes.string.isRequired,
   pageId: PropTypes.string.isRequired,
   pagePath: PropTypes.string.isRequired,
   pagePath: PropTypes.string.isRequired,
   revisionId: PropTypes.string.isRequired,
   revisionId: PropTypes.string.isRequired,
@@ -135,12 +134,6 @@ RevisionLoader.propTypes = {
 
 
 const RevisionLoaderWrapperFC = (props) => {
 const RevisionLoaderWrapperFC = (props) => {
   const { t } = useTranslation();
   const { t } = useTranslation();
-  // const { data: growiRenderer } = useViewRenderer();
-  // if (growiRenderer == null) {
-  //   return <></>;
-  // }
-
-  // return <RevisionLoader t={t} growiRenderer={growiRenderer} {...props} />;
   return <RevisionLoader t={t} {...props} />;
   return <RevisionLoader t={t} {...props} />;
 };
 };
 
 

+ 0 - 1
packages/app/src/components/Page/RevisionRenderer.tsx

@@ -5,7 +5,6 @@ import ReactMarkdown from 'react-markdown';
 import { blinkElem } from '~/client/util/blink-section-header';
 import { blinkElem } from '~/client/util/blink-section-header';
 import { addSmoothScrollEvent } from '~/client/util/smooth-scroll';
 import { addSmoothScrollEvent } from '~/client/util/smooth-scroll';
 import { CustomWindow } from '~/interfaces/global';
 import { CustomWindow } from '~/interfaces/global';
-// import GrowiRenderer from '~/services/renderer/growi-renderer';
 import { RendererOptions } from '~/services/renderer/renderer';
 import { RendererOptions } from '~/services/renderer/renderer';
 import { useCurrentPathname, useInterceptorManager } from '~/stores/context';
 import { useCurrentPathname, useInterceptorManager } from '~/stores/context';
 import { useEditorSettings } from '~/stores/editor';
 import { useEditorSettings } from '~/stores/editor';

+ 4 - 4
packages/app/src/components/SearchPage/SearchResultContent.tsx

@@ -15,7 +15,7 @@ import {
   usePageDuplicateModal, usePageRenameModal, usePageDeleteModal,
   usePageDuplicateModal, usePageRenameModal, usePageDeleteModal,
 } from '~/stores/modal';
 } from '~/stores/modal';
 import { useDescendantsPageListForCurrentPathTermManager, usePageTreeTermManager } from '~/stores/page-listing';
 import { useDescendantsPageListForCurrentPathTermManager, usePageTreeTermManager } from '~/stores/page-listing';
-import { useSearchResultRenderer } from '~/stores/renderer';
+import { useSearchResultOptions } from '~/stores/renderer';
 import { useFullTextSearchTermManager } from '~/stores/search';
 import { useFullTextSearchTermManager } from '~/stores/search';
 
 
 
 
@@ -120,7 +120,7 @@ export const SearchResultContent: FC<Props> = (props: Props) => {
   const { open: openRenameModal } = usePageRenameModal();
   const { open: openRenameModal } = usePageRenameModal();
   const { open: openDeleteModal } = usePageDeleteModal();
   const { open: openDeleteModal } = usePageDeleteModal();
 
 
-  const { data: growiRenderer } = useSearchResultRenderer();
+  const { data: rendererOptions } = useSearchResultOptions();
 
 
   const duplicateItemClickedHandler = useCallback(async(pageToDuplicate) => {
   const duplicateItemClickedHandler = useCallback(async(pageToDuplicate) => {
     // eslint-disable-next-line @typescript-eslint/no-unused-vars
     // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -194,7 +194,7 @@ export const SearchResultContent: FC<Props> = (props: Props) => {
   }, [page, showPageControlDropdown, forceHideMenuItems, duplicateItemClickedHandler, renameItemClickedHandler, deleteItemClickedHandler]);
   }, [page, showPageControlDropdown, forceHideMenuItems, duplicateItemClickedHandler, renameItemClickedHandler, deleteItemClickedHandler]);
 
 
   // return if page or growiRenderer is null
   // return if page or growiRenderer is null
-  if (page == null || growiRenderer == null) return <></>;
+  if (page == null || rendererOptions == null) return <></>;
 
 
   return (
   return (
     <div key={page._id} data-testid="search-result-content" className="search-result-content grw-page-path-text-muted-container d-flex flex-column">
     <div key={page._id} data-testid="search-result-content" className="search-result-content grw-page-path-text-muted-container d-flex flex-column">
@@ -208,7 +208,7 @@ export const SearchResultContent: FC<Props> = (props: Props) => {
       </div>
       </div>
       <div className="search-result-content-body-container" ref={scrollElementRef}>
       <div className="search-result-content-body-container" ref={scrollElementRef}>
         <RevisionLoader
         <RevisionLoader
-          growiRenderer={growiRenderer}
+          rendererOptions={rendererOptions}
           pageId={page._id}
           pageId={page._id}
           pagePath={page.path}
           pagePath={page.path}
           revisionId={page.revision}
           revisionId={page.revision}

+ 5 - 12
packages/app/src/components/Sidebar/CustomSidebar.tsx

@@ -7,7 +7,7 @@ import { useSWRxPageByPath } from '~/stores/page';
 import { withUnstatedContainers } from '../UnstatedUtils';
 import { withUnstatedContainers } from '../UnstatedUtils';
 import RevisionRenderer from '../Page/RevisionRenderer';
 import RevisionRenderer from '../Page/RevisionRenderer';
 import { IRevision } from '~/interfaces/revision';
 import { IRevision } from '~/interfaces/revision';
-import { useCustomSidebarRenderer } from '~/stores/renderer';
+import { useCustomSidebarOptions } from '~/stores/renderer';
 
 
 const logger = loggerFactory('growi:cli:CustomSidebar');
 const logger = loggerFactory('growi:cli:CustomSidebar');
 
 
@@ -28,13 +28,11 @@ type Props = {
 
 
 const CustomSidebar: FC<Props> = (props: Props) => {
 const CustomSidebar: FC<Props> = (props: Props) => {
 
 
-  const { appContainer } = props;
-
-  const { data: renderer } = useCustomSidebarRenderer();
+  const { data: rendererOptions } = useCustomSidebarOptions();
 
 
   const { data: page, error, mutate } = useSWRxPageByPath('/Sidebar');
   const { data: page, error, mutate } = useSWRxPageByPath('/Sidebar');
 
 
-  if (renderer == null) {
+  if (rendererOptions == null) {
     return <></>;
     return <></>;
   }
   }
 
 
@@ -65,7 +63,7 @@ const CustomSidebar: FC<Props> = (props: Props) => {
         (!isLoading && markdown != null) && (
         (!isLoading && markdown != null) && (
           <div className="p-3">
           <div className="p-3">
             <RevisionRenderer
             <RevisionRenderer
-              growiRenderer={renderer}
+              rendererOptions={rendererOptions}
               markdown={markdown}
               markdown={markdown}
               pagePath="/Sidebar"
               pagePath="/Sidebar"
               additionalClassName="grw-custom-sidebar-content"
               additionalClassName="grw-custom-sidebar-content"
@@ -83,9 +81,4 @@ const CustomSidebar: FC<Props> = (props: Props) => {
   );
   );
 };
 };
 
 
-/**
- * Wrapper component for using unstated
- */
-const CustomSidebarWrapper = withUnstatedContainers(CustomSidebar, [AppContainer]);
-
-export default CustomSidebarWrapper;
+export default CustomSidebar;

+ 2 - 1
packages/app/src/migrations/20180927102719-init-serverurl.js

@@ -1,6 +1,7 @@
+import { getMongoUri, mongoOptions } from '@growi/core';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
-import { getMongoUri, mongoOptions } from '@growi/core';
+// eslint-disable-next-line import/no-named-as-default
 import Config from '~/server/models/config';
 import Config from '~/server/models/config';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 

+ 2 - 1
packages/app/src/migrations/20190618055300-abolish-crowi-classic-auth.js

@@ -1,6 +1,7 @@
+import { getMongoUri, mongoOptions } from '@growi/core';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
-import { getMongoUri, mongoOptions } from '@growi/core';
+// eslint-disable-next-line import/no-named-as-default
 import Config from '~/server/models/config';
 import Config from '~/server/models/config';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 

+ 2 - 1
packages/app/src/migrations/20190618104011-add-config-app-installed.js

@@ -1,6 +1,7 @@
+import { getModelSafely, getMongoUri, mongoOptions } from '@growi/core';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
-import { getModelSafely, getMongoUri, mongoOptions } from '@growi/core';
+// eslint-disable-next-line import/no-named-as-default
 import Config from '~/server/models/config';
 import Config from '~/server/models/config';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 

+ 2 - 1
packages/app/src/migrations/20200420160390-remove-crowi-layout.js

@@ -1,6 +1,7 @@
+import { getMongoUri, mongoOptions } from '@growi/core';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
-import { getMongoUri, mongoOptions } from '@growi/core';
+// eslint-disable-next-line import/no-named-as-default
 import Config from '~/server/models/config';
 import Config from '~/server/models/config';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 

+ 2 - 1
packages/app/src/migrations/20200512005851-remove-behavior-type.js

@@ -1,6 +1,7 @@
+import { getMongoUri, mongoOptions } from '@growi/core';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
-import { getMongoUri, mongoOptions } from '@growi/core';
+// eslint-disable-next-line import/no-named-as-default
 import Config from '~/server/models/config';
 import Config from '~/server/models/config';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 

+ 2 - 1
packages/app/src/migrations/20200514001356-update-theme-color-for-dark.js

@@ -1,6 +1,7 @@
+import { getMongoUri, mongoOptions } from '@growi/core';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
-import { getMongoUri, mongoOptions } from '@growi/core';
+// eslint-disable-next-line import/no-named-as-default
 import Config from '~/server/models/config';
 import Config from '~/server/models/config';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 

+ 2 - 1
packages/app/src/migrations/20200620203632-normalize-locale-id.js

@@ -1,6 +1,7 @@
+import { getModelSafely, getMongoUri, mongoOptions } from '@growi/core';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
-import { getModelSafely, getMongoUri, mongoOptions } from '@growi/core';
+// eslint-disable-next-line import/no-named-as-default
 import Config from '~/server/models/config';
 import Config from '~/server/models/config';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 

+ 2 - 1
packages/app/src/migrations/20200827045151-remove-layout-setting.js

@@ -1,6 +1,7 @@
+import { getMongoUri, mongoOptions } from '@growi/core';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
-import { getMongoUri, mongoOptions } from '@growi/core';
+// eslint-disable-next-line import/no-named-as-default
 import Config from '~/server/models/config';
 import Config from '~/server/models/config';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 

+ 2 - 1
packages/app/src/migrations/20200828024025-copy-aws-setting.js

@@ -1,6 +1,7 @@
+import { getMongoUri, mongoOptions } from '@growi/core';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
-import { getMongoUri, mongoOptions } from '@growi/core';
+// eslint-disable-next-line import/no-named-as-default
 import Config from '~/server/models/config';
 import Config from '~/server/models/config';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 

+ 2 - 1
packages/app/src/migrations/20200901034313-update-mail-transmission.js

@@ -1,6 +1,7 @@
+import { getMongoUri, mongoOptions } from '@growi/core';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
-import { getMongoUri, mongoOptions } from '@growi/core';
+// eslint-disable-next-line import/no-named-as-default
 import Config from '~/server/models/config';
 import Config from '~/server/models/config';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 

+ 3 - 1
packages/app/src/migrations/20200903080025-remove-timeline-type.js.js

@@ -1,7 +1,9 @@
 import { getMongoUri, mongoOptions } from '@growi/core';
 import { getMongoUri, mongoOptions } from '@growi/core';
-import loggerFactory from '~/utils/logger';
 
 
+// eslint-disable-next-line import/no-named-as-default
 import Config from '~/server/models/config';
 import Config from '~/server/models/config';
+import loggerFactory from '~/utils/logger';
+
 
 
 const logger = loggerFactory('growi:migrate:remove-timeline-type');
 const logger = loggerFactory('growi:migrate:remove-timeline-type');
 
 

+ 3 - 1
packages/app/src/migrations/20200915035234-rename-s3-config.js

@@ -1,7 +1,9 @@
 import { getMongoUri, mongoOptions } from '@growi/core';
 import { getMongoUri, mongoOptions } from '@growi/core';
-import loggerFactory from '~/utils/logger';
 
 
+// eslint-disable-next-line import/no-named-as-default
 import Config from '~/server/models/config';
 import Config from '~/server/models/config';
+import loggerFactory from '~/utils/logger';
+
 
 
 const logger = loggerFactory('growi:migrate:remove-timeline-type');
 const logger = loggerFactory('growi:migrate:remove-timeline-type');
 
 

+ 2 - 1
packages/app/src/migrations/20210830074539-update-configs-for-slackbot.js

@@ -1,6 +1,7 @@
+import { getMongoUri, mongoOptions } from '@growi/core';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
-import { getMongoUri, mongoOptions } from '@growi/core';
+// eslint-disable-next-line import/no-named-as-default
 import Config from '~/server/models/config';
 import Config from '~/server/models/config';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 

+ 3 - 2
packages/app/src/migrations/20211005131430-config-without-proxy-command-permission-for-renaming.js

@@ -1,8 +1,9 @@
+import { getModelSafely, getMongoUri, mongoOptions } from '@growi/core';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
-import { getModelSafely, getMongoUri, mongoOptions } from '@growi/core';
-import loggerFactory from '~/utils/logger';
+// eslint-disable-next-line import/no-named-as-default
 import Config from '~/server/models/config';
 import Config from '~/server/models/config';
+import loggerFactory from '~/utils/logger';
 
 
 
 
 const logger = loggerFactory('growi:migrate:slack-app-integration-rename-keys');
 const logger = loggerFactory('growi:migrate:slack-app-integration-rename-keys');

+ 3 - 2
packages/app/src/migrations/20220131001218-convert-redirect-to-pages-to-page-redirect-documents.js

@@ -1,9 +1,10 @@
-import mongoose from 'mongoose';
 import { getModelSafely, getMongoUri, mongoOptions } from '@growi/core';
 import { getModelSafely, getMongoUri, mongoOptions } from '@growi/core';
+import mongoose from 'mongoose';
 
 
+// eslint-disable-next-line import/no-named-as-default
 import PageRedirectModel from '~/server/models/page-redirect';
 import PageRedirectModel from '~/server/models/page-redirect';
-import loggerFactory from '~/utils/logger';
 import { createBatchStream } from '~/server/util/batch-stream';
 import { createBatchStream } from '~/server/util/batch-stream';
+import loggerFactory from '~/utils/logger';
 
 
 const logger = loggerFactory('growi:migrate:convert-redirect-to-pages-to-page-redirect-documents');
 const logger = loggerFactory('growi:migrate:convert-redirect-to-pages-to-page-redirect-documents');
 
 

+ 7 - 6
packages/app/src/pages/[[...path]].page.tsx

@@ -48,13 +48,14 @@ import DisplaySwitcher from '../components/Page/DisplaySwitcher';
 
 
 import {
 import {
   useCurrentUser, useCurrentPagePath,
   useCurrentUser, useCurrentPagePath,
-  useOwnerOfCurrentPage, useIsLatestRevision,
-  useIsForbidden, useIsNotFound, useIsTrashPage, useShared, useShareLinkId, useIsSharedUser, useIsAbleToDeleteCompletely,
+  useIsLatestRevision,
+  useIsForbidden, useIsNotFound, useIsTrashPage, useIsSharedUser,
   useAppTitle, useSiteUrl, useConfidential, useIsEnabledStaleNotification, useIsIdenticalPath,
   useAppTitle, useSiteUrl, useConfidential, useIsEnabledStaleNotification, useIsIdenticalPath,
-  useIsSearchServiceConfigured, useIsSearchServiceReachable, useIsMailerSetup, useDisableLinkSharing,
-  useAclEnabled, useIsAclEnabled, useHasSlackConfig, useDrawioUri, useHackmdUri, useIsUserPage, useIsNotCreatable,
-  useNoCdn, useEditorConfig, useCsrfToken, useIsSearchScopeChildrenAsDefault, useCurrentPageId, useCurrentPathname,
-  useIsSlackConfigured, useGrowiRendererConfig, useIsBlinkedHeaderAtBoot, useRendererConfig,
+  useIsSearchServiceConfigured, useIsSearchServiceReachable, useDisableLinkSharing,
+  useHackmdUri,
+  useIsAclEnabled, useIsUserPage, useIsNotCreatable,
+  useCsrfToken, useIsSearchScopeChildrenAsDefault, useCurrentPageId, useCurrentPathname,
+  useIsSlackConfigured, useIsBlinkedHeaderAtBoot, useRendererConfig,
 } from '../stores/context';
 } from '../stores/context';
 import { useXss } from '../stores/xss';
 import { useXss } from '../stores/xss';
 
 

+ 0 - 1
packages/app/src/server/crowi/index.js

@@ -15,7 +15,6 @@ import loggerFactory from '~/utils/logger';
 import { projectRoot } from '~/utils/project-dir-utils';
 import { projectRoot } from '~/utils/project-dir-utils';
 
 
 import Activity from '../models/activity';
 import Activity from '../models/activity';
-import PageOperation, { PageActionType } from '../models/page-operation';
 import PageRedirect from '../models/page-redirect';
 import PageRedirect from '../models/page-redirect';
 import Tag from '../models/tag';
 import Tag from '../models/tag';
 import UserGroup from '../models/user-group';
 import UserGroup from '../models/user-group';

+ 3 - 2
packages/app/src/server/models/page.ts

@@ -15,7 +15,6 @@ import { IUserHasId } from '~/interfaces/user';
 import { ObjectIdLike } from '~/server/interfaces/mongoose-utils';
 import { ObjectIdLike } from '~/server/interfaces/mongoose-utils';
 
 
 import loggerFactory from '../../utils/logger';
 import loggerFactory from '../../utils/logger';
-import Crowi from '../crowi';
 
 
 import { getPageSchema, extractToAncestorsPaths, populateDataToShowRevision } from './obsolete-page';
 import { getPageSchema, extractToAncestorsPaths, populateDataToShowRevision } from './obsolete-page';
 
 
@@ -957,7 +956,9 @@ export type PageCreateOptions = {
 /*
 /*
  * Merge obsolete page model methods and define new methods which depend on crowi instance
  * Merge obsolete page model methods and define new methods which depend on crowi instance
  */
  */
-export default (crowi: Crowi): any => {
+// remove type for crowi to prevent 'import/no-cycle'
+// eslint-disable-next-line import/no-anonymous-default-export
+export default (crowi): any => {
   let pageEvent;
   let pageEvent;
   if (crowi != null) {
   if (crowi != null) {
     pageEvent = crowi.event('page');
     pageEvent = crowi.event('page');

+ 3 - 3
packages/app/src/server/service/activity.ts

@@ -1,7 +1,7 @@
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
 import {
 import {
-  IActivity, SupportedAction, SupportedActionType, AllSupportedActions, ActionGroupSize,
+  IActivity, SupportedActionType, AllSupportedActions, ActionGroupSize,
   AllEssentialActions, AllSmallGroupActions, AllMediumGroupActions, AllLargeGroupActions,
   AllEssentialActions, AllSmallGroupActions, AllMediumGroupActions, AllLargeGroupActions,
 } from '~/interfaces/activity';
 } from '~/interfaces/activity';
 import { IPage } from '~/interfaces/page';
 import { IPage } from '~/interfaces/page';
@@ -96,11 +96,11 @@ class ActivityService {
     }
     }
 
 
     return Array.from(availableActionsSet);
     return Array.from(availableActionsSet);
-  }
+  };
 
 
   shoudUpdateActivity = function(action: SupportedActionType): boolean {
   shoudUpdateActivity = function(action: SupportedActionType): boolean {
     return this.getAvailableActions().includes(action);
     return this.getAvailableActions().includes(action);
-  }
+  };
 
 
   // for GET request
   // for GET request
   createActivity = async function(parameters): Promise<void> {
   createActivity = async function(parameters): Promise<void> {

+ 7 - 7
packages/app/src/server/service/search.ts

@@ -1,24 +1,24 @@
-import xss from 'xss';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
+import xss from 'xss';
 
 
 import { SearchDelegatorName } from '~/interfaces/named-query';
 import { SearchDelegatorName } from '~/interfaces/named-query';
 import { IPageWithMeta } from '~/interfaces/page';
 import { IPageWithMeta } from '~/interfaces/page';
 import { IFormattedSearchResult, IPageSearchMeta, ISearchResult } from '~/interfaces/search';
 import { IFormattedSearchResult, IPageSearchMeta, ISearchResult } from '~/interfaces/search';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
-import NamedQuery from '../models/named-query';
+import { ObjectIdLike } from '../interfaces/mongoose-utils';
 import {
 import {
   SearchDelegator, SearchQueryParser, SearchResolver, ParsedQuery, SearchableData, QueryTerms,
   SearchDelegator, SearchQueryParser, SearchResolver, ParsedQuery, SearchableData, QueryTerms,
 } from '../interfaces/search';
 } from '../interfaces/search';
-import ElasticsearchDelegator from './search-delegator/elasticsearch';
-import PrivateLegacyPagesDelegator from './search-delegator/private-legacy-pages';
-
+import NamedQuery from '../models/named-query';
 import { PageModel } from '../models/page';
 import { PageModel } from '../models/page';
 import { serializeUserSecurely } from '../models/serializers/user-serializer';
 import { serializeUserSecurely } from '../models/serializers/user-serializer';
-
-import { ObjectIdLike } from '../interfaces/mongoose-utils';
 import { SearchError } from '../models/vo/search-error';
 import { SearchError } from '../models/vo/search-error';
 
 
+import ElasticsearchDelegator from './search-delegator/elasticsearch';
+import PrivateLegacyPagesDelegator from './search-delegator/private-legacy-pages';
+
+
 // eslint-disable-next-line no-unused-vars
 // eslint-disable-next-line no-unused-vars
 const logger = loggerFactory('growi:service:search');
 const logger = loggerFactory('growi:service:search');
 
 

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

@@ -3,11 +3,11 @@ import XssOption, { XssOptionConfig } from '~/services/xss/xssOption';
 
 
 export default class XssFilter {
 export default class XssFilter {
 
 
-  xssOption: XssOption
+  xssOption: XssOption;
 
 
-  xss
+  xss;
 
 
-  config: XssOptionConfig
+  config: XssOptionConfig;
 
 
   constructor(config: XssOptionConfig) {
   constructor(config: XssOptionConfig) {
     this.config = config;
     this.config = config;

+ 4 - 4
packages/app/src/services/renderer/markdown-it/blockdiag.ts

@@ -9,10 +9,10 @@ export default class BlockdiagConfigurer {
   }
   }
 
 
   configure(md) {
   configure(md) {
-    md.use(require('markdown-it-blockdiag'), {
-      generateSourceUrl: this.generateSourceUrl,
-      marker: ':::',
-    });
+    // md.use(require('markdown-it-blockdiag'), {
+    //   generateSourceUrl: this.generateSourceUrl,
+    //   marker: ':::',
+    // });
   }
   }
 
 
 }
 }

+ 3 - 3
packages/app/src/services/renderer/markdown-it/drawio-viewer.js

@@ -1,9 +1,9 @@
 export default class DrawioViewerConfigurer {
 export default class DrawioViewerConfigurer {
 
 
   configure(md) {
   configure(md) {
-    md.use(require('markdown-it-drawio-viewer'), {
-      marker: ':::',
-    });
+    // md.use(require('markdown-it-drawio-viewer'), {
+    //   marker: ':::',
+    // });
   }
   }
 
 
 }
 }

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

@@ -1,4 +1,4 @@
-import markdownItEmojiMart from 'markdown-it-emoji-mart';
+// import markdownItEmojiMart from 'markdown-it-emoji-mart';
 
 
 import { emojiMartData } from './emoji-mart-data';
 import { emojiMartData } from './emoji-mart-data';
 
 
@@ -6,7 +6,7 @@ import { emojiMartData } from './emoji-mart-data';
 export default class EmojiConfigurer {
 export default class EmojiConfigurer {
 
 
   configure(md) {
   configure(md) {
-    md.use(markdownItEmojiMart, { defs: emojiMartData });
+    // md.use(markdownItEmojiMart, { defs: emojiMartData });
   }
   }
 
 
 }
 }

+ 1 - 1
packages/app/src/services/renderer/markdown-it/footernote.js

@@ -1,7 +1,7 @@
 export default class FooternoteConfigurer {
 export default class FooternoteConfigurer {
 
 
   configure(md) {
   configure(md) {
-    md.use(require('markdown-it-footnote'));
+    // md.use(require('markdown-it-footnote'));
   }
   }
 
 
 }
 }

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

@@ -5,7 +5,7 @@ const PATTERN_RELATIVE_PATH = new RegExp(/^(\.{1,2})(\/.*)?$/);
 
 
 export default class LinkerByRelativePathConfigurer {
 export default class LinkerByRelativePathConfigurer {
 
 
-  pagePath: string
+  pagePath: string;
 
 
   constructor(pagePath: string) {
   constructor(pagePath: string) {
     this.pagePath = pagePath;
     this.pagePath = pagePath;

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

@@ -1,7 +1,7 @@
 export default class MathJaxConfigurer {
 export default class MathJaxConfigurer {
 
 
   configure(md) {
   configure(md) {
-    md.use(require('markdown-it-mathjax')());
+    // md.use(require('markdown-it-mathjax')());
   }
   }
 
 
 }
 }

+ 3 - 3
packages/app/src/services/renderer/markdown-it/plantuml.ts

@@ -15,9 +15,9 @@ export default class PlantUMLConfigurer {
   }
   }
 
 
   configure(md) {
   configure(md) {
-    md.use(require('markdown-it-plantuml'), {
-      generateSource: this.generateSource,
-    });
+    // md.use(require('markdown-it-plantuml'), {
+    //   generateSource: this.generateSource,
+    // });
   }
   }
 
 
   generateSource(umlCode) {
   generateSource(umlCode) {

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

@@ -1,14 +1,14 @@
 export default class TaskListsConfigurer {
 export default class TaskListsConfigurer {
 
 
   configure(md) {
   configure(md) {
-    md.use(require('markdown-it-task-checkbox'), {
-      disabled: true,
-      divWrap: true,
-      divClass: 'checkbox checkbox-primary',
-      idPrefix: 'cbx_',
-      ulClass: 'task-list',
-      liClass: 'task-list-item',
-    });
+    // md.use(require('markdown-it-task-checkbox'), {
+    //   disabled: true,
+    //   divWrap: true,
+    //   divClass: 'checkbox checkbox-primary',
+    //   idPrefix: 'cbx_',
+    //   ulClass: 'task-list',
+    //   liClass: 'task-list-item',
+    // });
   }
   }
 
 
 }
 }

+ 10 - 10
packages/app/src/services/renderer/markdown-it/toc-and-anchor.js

@@ -1,19 +1,19 @@
-import markdownItEmojiMart from 'markdown-it-emoji-mart';
-import markdownItToc from 'markdown-it-toc-and-anchor-with-slugid';
+// import markdownItEmojiMart from 'markdown-it-emoji-mart';
+// import markdownItToc from 'markdown-it-toc-and-anchor-with-slugid';
 
 
 import { emojiMartData } from './emoji-mart-data';
 import { emojiMartData } from './emoji-mart-data';
 
 
 export default class TocAndAnchorConfigurer {
 export default class TocAndAnchorConfigurer {
 
 
   configure(md) {
   configure(md) {
-    md.use(markdownItEmojiMart, { defs: emojiMartData })
-      .use(markdownItToc, {
-        tocLastLevel: 3,
-        anchorLinkBefore: false,
-        anchorLinkSymbol: '',
-        anchorLinkSymbolClassName: 'icon-link',
-        anchorClassName: 'revision-head-link',
-      });
+    // md.use(markdownItEmojiMart, { defs: emojiMartData })
+    //   .use(markdownItToc, {
+    //     tocLastLevel: 3,
+    //     anchorLinkBefore: false,
+    //     anchorLinkSymbol: '',
+    //     anchorLinkSymbolClassName: 'icon-link',
+    //     anchorClassName: 'revision-head-link',
+    //   });
 
 
     // set toc render function
     // set toc render function
     md.set({
     md.set({

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

@@ -6,11 +6,11 @@ export type XssOptionConfig = {
 
 
 export default class XssOption {
 export default class XssOption {
 
 
-  isEnabledXssPrevention: boolean
+  isEnabledXssPrevention: boolean;
 
 
-  tagWhiteList: any[]
+  tagWhiteList: any[];
 
 
-  attrWhiteList: any[]
+  attrWhiteList: any[];
 
 
   constructor(config: XssOptionConfig) {
   constructor(config: XssOptionConfig) {
     const recommendedWhitelist = require('~/services/xss/recommended-whitelist');
     const recommendedWhitelist = require('~/services/xss/recommended-whitelist');