Browse Source

Merge branch 'master' into imprv/test-code-delte-non-public

Yohei Shiina 4 years ago
parent
commit
edeb25a8ac

+ 2 - 2
.github/workflows/reusable-app-prod.yml

@@ -96,7 +96,7 @@ jobs:
         ports:
         - 27017/tcp
       elasticsearch:
-        image: docker.elastic.co/elasticsearch/elasticsearch:6.8.23
+        image: docker.elastic.co/elasticsearch/elasticsearch:7.17.1
         ports:
         - 9200/tcp
         env:
@@ -193,7 +193,7 @@ jobs:
         ports:
         - 27017/tcp
       elasticsearch:
-        image: docker.elastic.co/elasticsearch/elasticsearch:6.8.23
+        image: docker.elastic.co/elasticsearch/elasticsearch:7.17.1
         ports:
         - 9200/tcp
         env:

+ 1 - 1
lerna.json

@@ -1,7 +1,7 @@
 {
   "npmClient": "yarn",
   "useWorkspaces": true,
-  "version": "5.0.0-RC.9",
+  "version": "5.0.0-RC.10",
   "packages": [
     "packages/*"
   ]

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "growi",
-  "version": "5.0.0-RC.9",
+  "version": "5.0.0-RC.10",
   "description": "Team collaboration software using markdown",
   "tags": [
     "wiki",

+ 0 - 1
packages/app/.env.development

@@ -12,7 +12,6 @@ MATHJAX=1
 MONGO_URI="mongodb://mongo:27017/growi"
 # REDIS_URI="http://redis:6379"
 # NCHAN_URI="http://nchan"
-USE_ELASTICSEARCH_V6=false
 ELASTICSEARCH_URI="http://elasticsearch:9200/growi"
 ELASTICSEARCH_REQUEST_TIMEOUT=15000
 ELASTICSEARCH_REJECT_UNAUTHORIZED=true

+ 9 - 9
packages/app/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@growi/app",
-  "version": "5.0.0-RC.9",
+  "version": "5.0.0-RC.10",
   "license": "MIT",
   "scripts": {
     "//// for production": "",
@@ -58,15 +58,15 @@
   },
   "dependencies": {
     "@browser-bunyan/console-formatted-stream": "^1.6.2",
-    "@elastic/elasticsearch6": "npm:@elastic/elasticsearch@^6.8.7",
-    "@elastic/elasticsearch7": "npm:@elastic/elasticsearch@^7.16.0",
+    "@elastic/elasticsearch6": "npm:@elastic/elasticsearch@^6.8.8",
+    "@elastic/elasticsearch7": "npm:@elastic/elasticsearch@^7.17.0",
     "@godaddy/terminus": "^4.9.0",
     "@google-cloud/storage": "^5.8.5",
-    "@growi/codemirror-textlint": "^5.0.0-RC.9",
-    "@growi/plugin-attachment-refs": "^5.0.0-RC.9",
-    "@growi/plugin-lsx": "^5.0.0-RC.9",
-    "@growi/plugin-pukiwiki-like-linker": "^5.0.0-RC.9",
-    "@growi/slack": "^5.0.0-RC.9",
+    "@growi/codemirror-textlint": "^5.0.0-RC.10",
+    "@growi/plugin-attachment-refs": "^5.0.0-RC.10",
+    "@growi/plugin-lsx": "^5.0.0-RC.10",
+    "@growi/plugin-pukiwiki-like-linker": "^5.0.0-RC.10",
+    "@growi/slack": "^5.0.0-RC.10",
     "@promster/express": "^7.0.2",
     "@promster/server": "^7.0.4",
     "@slack/events-api": "^3.0.0",
@@ -167,7 +167,7 @@
   },
   "devDependencies": {
     "@alienfast/i18next-loader": "^1.1.4",
-    "@growi/ui": "^5.0.0-RC.9",
+    "@growi/ui": "^5.0.0-RC.10",
     "@handsontable/react": "=2.1.0",
     "@types/compression": "^1.7.0",
     "@types/express": "^4.17.11",

+ 0 - 123
packages/app/resource/search/mappings-es6-for-ci.json

@@ -1,123 +0,0 @@
-{
-  "settings": {
-    "analysis": {
-      "filter": {
-        "english_stop": {
-          "type":       "stop",
-          "stopwords":  "_english_"
-        }
-      },
-      "tokenizer": {
-        "edge_ngram_tokenizer": {
-          "type": "edge_ngram",
-          "min_gram": 2,
-          "max_gram": 20,
-          "token_chars": ["letter", "digit"]
-        }
-      },
-      "analyzer": {
-        "japanese": {
-          "tokenizer": "edge_ngram_tokenizer",
-          "filter": [
-            "lowercase",
-            "english_stop"
-          ]
-        },
-        "english_edge_ngram": {
-          "tokenizer": "edge_ngram_tokenizer",
-          "filter": [
-            "lowercase",
-            "english_stop"
-          ]
-        }
-      }
-    }
-  },
-  "mappings": {
-    "pages": {
-      "properties" : {
-        "path": {
-          "type": "text",
-          "fields": {
-            "raw": {
-              "type": "text",
-              "analyzer": "keyword"
-            },
-            "ja": {
-              "type": "text",
-              "analyzer": "japanese"
-            },
-            "en": {
-              "type": "text",
-              "analyzer": "english_edge_ngram",
-              "search_analyzer": "standard"
-            }
-          }
-        },
-        "body": {
-          "type": "text",
-          "fields": {
-            "ja": {
-              "type": "text",
-              "analyzer": "japanese"
-            },
-            "en": {
-              "type": "text",
-              "analyzer": "english_edge_ngram",
-              "search_analyzer": "standard"
-            }
-          }
-        },
-        "comments": {
-          "type": "text",
-          "fields": {
-            "ja": {
-              "type": "text",
-              "analyzer": "japanese"
-            },
-            "en": {
-              "type": "text",
-              "analyzer": "english_edge_ngram",
-              "search_analyzer": "standard"
-            }
-          }
-        },
-        "username": {
-          "type": "keyword"
-        },
-        "comment_count": {
-          "type": "integer"
-        },
-        "bookmark_count": {
-          "type": "integer"
-        },
-        "seenUsers_count":{
-          "type": "integer"
-        },
-        "like_count": {
-          "type": "integer"
-        },
-        "grant": {
-          "type": "integer"
-        },
-        "granted_users": {
-          "type": "keyword"
-        },
-        "granted_group": {
-          "type": "keyword"
-        },
-        "created_at": {
-          "type": "date",
-          "format": "dateOptionalTime"
-        },
-        "updated_at": {
-          "type": "date",
-          "format": "dateOptionalTime"
-        },
-        "tag_names": {
-          "type": "keyword"
-        }
-      }
-    }
-  }
-}

+ 118 - 0
packages/app/resource/search/mappings-es7-for-ci.json

@@ -0,0 +1,118 @@
+{
+  "settings": {
+    "analysis": {
+      "filter": {
+        "english_stop": {
+          "type":       "stop",
+          "stopwords":  "_english_"
+        }
+      },
+      "tokenizer": {
+        "edge_ngram_tokenizer": {
+          "type": "edge_ngram",
+          "min_gram": 2,
+          "max_gram": 20,
+          "token_chars": ["letter", "digit"]
+        }
+      },
+      "analyzer": {
+        "japanese": {
+          "tokenizer": "edge_ngram_tokenizer",
+          "filter": [
+            "lowercase",
+            "english_stop"
+          ]
+        },
+        "english_edge_ngram": {
+          "tokenizer": "edge_ngram_tokenizer",
+          "filter": [
+            "lowercase",
+            "english_stop"
+          ]
+        }
+      }
+    }
+  },
+  "mappings": {
+    "properties" : {
+      "path": {
+        "type": "text",
+        "fields": {
+          "raw": {
+            "type": "text",
+            "analyzer": "keyword"
+          },
+          "ja": {
+            "type": "text",
+            "analyzer": "japanese"
+          },
+          "en": {
+            "type": "text",
+            "analyzer": "english_edge_ngram",
+            "search_analyzer": "standard"
+          }
+        }
+      },
+      "body": {
+        "type": "text",
+        "fields": {
+          "ja": {
+            "type": "text",
+            "analyzer": "japanese"
+          },
+          "en": {
+            "type": "text",
+            "analyzer": "english_edge_ngram",
+            "search_analyzer": "standard"
+          }
+        }
+      },
+      "comments": {
+        "type": "text",
+        "fields": {
+          "ja": {
+            "type": "text",
+            "analyzer": "japanese"
+          },
+          "en": {
+            "type": "text",
+            "analyzer": "english_edge_ngram",
+            "search_analyzer": "standard"
+          }
+        }
+      },
+      "username": {
+        "type": "keyword"
+      },
+      "comment_count": {
+        "type": "integer"
+      },
+      "bookmark_count": {
+        "type": "integer"
+      },
+      "like_count": {
+        "type": "integer"
+      },
+      "grant": {
+        "type": "integer"
+      },
+      "granted_users": {
+        "type": "keyword"
+      },
+      "granted_group": {
+        "type": "keyword"
+      },
+      "created_at": {
+        "type": "date",
+        "format": "dateOptionalTime"
+      },
+      "updated_at": {
+        "type": "date",
+        "format": "dateOptionalTime"
+      },
+      "tag_names": {
+        "type": "keyword"
+      }
+    }
+  }
+}

+ 6 - 12
packages/app/src/server/service/config-loader.ts

@@ -295,6 +295,12 @@ const ENV_VAR_NAME_TO_CONFIG_INFO = {
     type:    ValueType.STRING,
     default: '/growi-internal/',
   },
+  ELASTICSEARCH_VERSION: {
+    ns:      'crowi',
+    key:     'app:elasticsearchVersion',
+    type:    ValueType.NUMBER,
+    default: 7,
+  },
   ELASTICSEARCH_URI: {
     ns:      'crowi',
     key:     'app:elasticsearchUri',
@@ -307,12 +313,6 @@ const ENV_VAR_NAME_TO_CONFIG_INFO = {
     type:    ValueType.NUMBER,
     default: 8000, // msec
   },
-  SEARCHBOX_SSL_URL: {
-    ns:      'crowi',
-    key:     'app:searchboxSslUrl',
-    type:    ValueType.STRING,
-    default: null,
-  },
   ELASTICSEARCH_REJECT_UNAUTHORIZED: {
     ns:      'crowi',
     key:     'app:elasticsearchRejectUnauthorized',
@@ -325,12 +325,6 @@ const ENV_VAR_NAME_TO_CONFIG_INFO = {
     type:    ValueType.BOOLEAN,
     default: false,
   },
-  USE_ELASTICSEARCH_V6: {
-    ns:      'crowi',
-    key:     'app:useElasticsearchV6',
-    type:    ValueType.BOOLEAN,
-    default: true,
-  },
   MONGO_GRIDFS_TOTAL_LIMIT: {
     ns:      'crowi',
     key:     'gridfs:totalLimit',

+ 8 - 2
packages/app/src/server/service/search-delegator/elasticsearch.ts

@@ -67,7 +67,13 @@ class ElasticsearchDelegator implements SearchDelegator<Data> {
     this.configManager = configManager;
     this.socketIoService = socketIoService;
 
-    this.isElasticsearchV6 = this.configManager.getConfig('crowi', 'app:useElasticsearchV6');
+    const elasticsearchVersion: number = this.configManager.getConfig('crowi', 'app:elasticsearchVersion');
+
+    if (elasticsearchVersion !== 6 && elasticsearchVersion !== 7) {
+      throw new Error('Unsupported Elasticsearch version. Please specify a valid number to \'ELASTICSEARCH_VERSION\'');
+    }
+
+    this.isElasticsearchV6 = elasticsearchVersion === 6;
 
     this.elasticsearch = this.isElasticsearchV6 ? elasticsearch6 : elasticsearch7;
     this.isElasticsearchReindexOnBoot = this.configManager.getConfig('crowi', 'app:elasticsearchReindexOnBoot');
@@ -338,7 +344,7 @@ class ElasticsearchDelegator implements SearchDelegator<Data> {
       : require('^/resource/search/mappings-es7.json');
 
     if (process.env.CI) {
-      mappings = require('^/resource/search/mappings-es6-for-ci.json');
+      mappings = require('^/resource/search/mappings-es7-for-ci.json');
     }
 
     return this.client.indices.create({

+ 27 - 20
packages/app/test/integration/service/v5.migration.test.js

@@ -247,15 +247,6 @@ describe('V5 page migration', () => {
 
   });
 
-  // https://github.com/jest-community/eslint-plugin-jest/blob/v24.3.5/docs/rules/expect-expect.md#assertfunctionnames
-  // pass unless the data is one of [false, 0, '', null, undefined, NaN]
-  const expectAllToBeTruthy = (dataList) => {
-    dataList.forEach((data, i) => {
-      if (data == null) { console.log(`index: ${i}`) }
-      expect(data).toBeTruthy();
-    });
-  };
-
   const normalizeParentRecursivelyByPages = async(pages, user) => {
     return crowi.pageService.normalizeParentRecursivelyByPages(pages, user);
   };
@@ -290,7 +281,9 @@ describe('V5 page migration', () => {
       const page9 = await Page.findOne({ path: '/normalize_7/normalize_8_gA/normalize_9_gB' });
       const page10 = await Page.findOne({ path: '/normalize_7/normalize_8_gC' });
       const page11 = await Page.findOne({ path: '/normalize_7' });
-      expectAllToBeTruthy([page8, page9, page10]);
+      expect(page8).toBeTruthy();
+      expect(page9).toBeTruthy();
+      expect(page10).toBeTruthy();
       expect(page11).toBeNull();
       await normalizeParentRecursivelyByPages([page8, page9, page10], testUser1);
 
@@ -299,7 +292,10 @@ describe('V5 page migration', () => {
       const page8AM = await Page.findOne({ path: '/normalize_7/normalize_8_gA' });
       const page9AM = await Page.findOne({ path: '/normalize_7/normalize_8_gA/normalize_9_gB' });
       const page10AM = await Page.findOne({ path: '/normalize_7/normalize_8_gC' });
-      expectAllToBeTruthy([page7, page8AM, page9AM, page10AM]);
+      expect(page7).toBeTruthy();
+      expect(page8AM).toBeTruthy();
+      expect(page9AM).toBeTruthy();
+      expect(page10AM).toBeTruthy();
 
       expect(page7.isEmpty).toBe(true);
 
@@ -317,8 +313,11 @@ describe('V5 page migration', () => {
       const page3 = await Page.findOne({ path: '/normalize_10/normalize_11_gA', _id: pageId9, parent: null }); // not v5
       const page4 = await Page.findOne({ path: '/normalize_10/normalize_11_gA/normalize_11_gB', parent: { $ne: null } });
       const page5 = await Page.findOne({ path: '/normalize_10/normalize_12_gC', parent: { $ne: null } });
-      expectAllToBeTruthy([page1, page2, page3, page4, page5]);
-
+      expect(page1).toBeTruthy();
+      expect(page2).toBeTruthy();
+      expect(page3).toBeTruthy();
+      expect(page4).toBeTruthy();
+      expect(page5).toBeTruthy();
       await normalizeParentRecursivelyByPages([page3], testUser1);
 
       // AM => After Migration
@@ -327,7 +326,10 @@ describe('V5 page migration', () => {
       const page3AM = await Page.findOne({ path: '/normalize_10/normalize_11_gA', _id: pageId9 });
       const page4AM = await Page.findOne({ path: '/normalize_10/normalize_11_gA/normalize_11_gB' });
       const page5AM = await Page.findOne({ path: '/normalize_10/normalize_12_gC' });
-      expectAllToBeTruthy([page1AM, page3AM, page4AM, page5AM]);
+      expect(page1AM).toBeTruthy();
+      expect(page3AM).toBeTruthy();
+      expect(page4AM).toBeTruthy();
+      expect(page5AM).toBeTruthy();
       expect(page2AM).toBeNull();
 
       expect(page1AM.isEmpty).toBeTruthy();
@@ -754,7 +756,9 @@ describe('V5 page migration', () => {
       const page1 = await Page.findOne({ _id: pageId1, path: '/normalize_1', isEmpty: true });
       const page2 = await Page.findOne({ _id: pageId2, path: '/normalize_1/normalize_2', parent: page1._id });
       const page3 = await Page.findOne({ _id: pageId3, path: '/normalize_1' }); // NOT v5
-      expectAllToBeTruthy([page1, page2, page3]);
+      expect(page1).toBeTruthy();
+      expect(page2).toBeTruthy();
+      expect(page3).toBeTruthy();
 
       await normalizeParentByPage(page3, testUser1);
 
@@ -762,7 +766,8 @@ describe('V5 page migration', () => {
       const page1AM = await Page.findOne({ _id: pageId1, path: '/normalize_1', isEmpty: true });
       const page2AM = await Page.findOne({ _id: pageId2, path: '/normalize_1/normalize_2' });
       const page3AM = await Page.findOne({ _id: pageId3, path: '/normalize_1' }); // v5 compatible
-      expectAllToBeTruthy([page2AM, page3AM]);
+      expect(page2AM).toBeTruthy();
+      expect(page3AM).toBeTruthy();
       expect(page1AM).toBeNull();
 
       expect(page2AM.parent).toStrictEqual(page3AM._id);
@@ -773,8 +778,9 @@ describe('V5 page migration', () => {
       const page4 = await Page.findOne({ _id: pageId4, path: '/normalize_4', isEmpty: true });
       const page5 = await Page.findOne({ _id: pageId5, path: '/normalize_4/normalize_5', parent: page4._id });
       const page6 = await Page.findOne({ _id: pageId6, path: '/normalize_4' }); // NOT v5
-
-      expectAllToBeTruthy([page4, page5, page6]);
+      expect(page4).toBeTruthy();
+      expect(page5).toBeTruthy();
+      expect(page6).toBeTruthy();
 
       let isThrown;
       try {
@@ -788,9 +794,10 @@ describe('V5 page migration', () => {
       const page4AM = await Page.findOne({ _id: pageId4, path: '/normalize_4', isEmpty: true });
       const page5AM = await Page.findOne({ _id: pageId5, path: '/normalize_4/normalize_5', parent: page4._id });
       const page6AM = await Page.findOne({ _id: pageId6, path: '/normalize_4' }); // NOT v5
-      expectAllToBeTruthy([page4AM, page5AM, page6AM]);
-
       expect(isThrown).toBe(true);
+      expect(page4AM).toBeTruthy();
+      expect(page5AM).toBeTruthy();
+      expect(page6AM).toBeTruthy();
       expect(page4AM).toStrictEqual(page4);
       expect(page5AM).toStrictEqual(page5);
       expect(page6AM).toStrictEqual(page6);

+ 123 - 62
packages/app/test/integration/service/v5.public-page.test.ts

@@ -24,15 +24,6 @@ describe('PageService page operations with only public pages', () => {
 
   let rootPage;
 
-
-  // pass unless the data is one of [false, 0, '', null, undefined, NaN]
-  const expectAllToBeTruthy = (dataList) => {
-    dataList.forEach((data, i) => {
-      if (data == null) { console.log(`index: ${i}`) }
-      expect(data).toBeTruthy();
-    });
-  };
-
   beforeAll(async() => {
     crowi = await getInstance();
     await crowi.configManager.updateConfigsInTheSameNamespace('crowi', { 'app:isV5Compatible': true });
@@ -918,7 +909,7 @@ describe('PageService page operations with only public pages', () => {
     };
 
     test('Should NOT rename top page', async() => {
-      expectAllToBeTruthy([rootPage]);
+      expect(rootPage).toBeTruthy();
       let isThrown = false;
       try {
         await crowi.pageService.renamePage(rootPage, '/new_root', dummyUser1, {});
@@ -933,7 +924,8 @@ describe('PageService page operations with only public pages', () => {
     test('Should rename/move to under non-empty page', async() => {
       const parentPage = await Page.findOne({ path: '/v5_ParentForRename1' });
       const childPage = await Page.findOne({ path: '/v5_ChildForRename1' });
-      expectAllToBeTruthy([childPage, parentPage]);
+      expect(childPage).toBeTruthy();
+      expect(parentPage).toBeTruthy();
 
       const newPath = '/v5_ParentForRename1/renamedChildForRename1';
       const renamedPage = await renamePage(childPage, newPath, dummyUser1, {});
@@ -949,7 +941,8 @@ describe('PageService page operations with only public pages', () => {
     test('Should rename/move to under empty page', async() => {
       const parentPage = await Page.findOne({ path: '/v5_ParentForRename2' });
       const childPage = await Page.findOne({ path: '/v5_ChildForRename2' });
-      expectAllToBeTruthy([childPage, parentPage]);
+      expect(childPage).toBeTruthy();
+      expect(parentPage).toBeTruthy();
       expect(parentPage.isEmpty).toBe(true);
 
       const newPath = '/v5_ParentForRename2/renamedChildForRename2';
@@ -966,7 +959,8 @@ describe('PageService page operations with only public pages', () => {
     test('Should rename/move with option updateMetadata: true', async() => {
       const parentPage = await Page.findOne({ path: '/v5_ParentForRename3' });
       const childPage = await Page.findOne({ path: '/v5_ChildForRename3' });
-      expectAllToBeTruthy([childPage, parentPage]);
+      expect(childPage).toBeTruthy();
+      expect(parentPage).toBeTruthy();
       expect(childPage.lastUpdateUser).toStrictEqual(dummyUser1._id);
 
       const newPath = '/v5_ParentForRename3/renamedChildForRename3';
@@ -983,7 +977,8 @@ describe('PageService page operations with only public pages', () => {
     test('Should move with option createRedirectPage: true', async() => {
       const parentPage = await Page.findOne({ path: '/v5_ParentForRename4' });
       const childPage = await Page.findOne({ path: '/v5_ChildForRename4' });
-      expectAllToBeTruthy([parentPage, childPage]);
+      expect(parentPage).toBeTruthy();
+      expect(childPage).toBeTruthy();
 
       const oldPath = childPage.path;
       const newPath = '/v5_ParentForRename4/renamedChildForRename4';
@@ -1001,7 +996,9 @@ describe('PageService page operations with only public pages', () => {
       const childPage = await Page.findOne({ path: '/v5_ChildForRename5' });
       const grandchild = await Page.findOne({ parent: childPage._id, path: '/v5_ChildForRename5/v5_GrandchildForRename5' });
 
-      expectAllToBeTruthy([parentPage, childPage, grandchild]);
+      expect(parentPage).toBeTruthy();
+      expect(childPage).toBeTruthy();
+      expect(grandchild).toBeTruthy();
 
       const newPath = '/v5_ParentForRename5/renamedChildForRename5';
       const renamedPage = await renamePage(childPage, newPath, dummyUser1, {});
@@ -1025,7 +1022,9 @@ describe('PageService page operations with only public pages', () => {
       const childPage = await Page.findOne({ path: '/v5_ChildForRename7', isEmpty: true });
       const grandchild = await Page.findOne({ parent: childPage._id, path: '/v5_ChildForRename7/v5_GrandchildForRename7' });
 
-      expectAllToBeTruthy([parentPage, childPage, grandchild]);
+      expect(parentPage).toBeTruthy();
+      expect(childPage).toBeTruthy();
+      expect(grandchild).toBeTruthy();
 
       const newPath = '/v5_ParentForRename7/renamedChildForRename7';
       const renamedPage = await renamePage(childPage, newPath, dummyUser1, {});
@@ -1043,7 +1042,7 @@ describe('PageService page operations with only public pages', () => {
     });
     test('Should NOT rename/move with existing path', async() => {
       const page = await Page.findOne({ path: '/v5_ParentForRename8' });
-      expectAllToBeTruthy([page]);
+      expect(page).toBeTruthy();
 
       const newPath = '/v5_ParentForRename9';
       let isThrown;
@@ -1062,7 +1061,8 @@ describe('PageService page operations with only public pages', () => {
       const page1 = await Page.findOne({ path: initialPathForPage1, isEmpty: false });
       const page2 = await Page.findOne({ path: initialPathForPage2, isEmpty: false, parent: page1._id });
 
-      expectAllToBeTruthy([page1, page2]);
+      expect(page1).toBeTruthy();
+      expect(page2).toBeTruthy();
 
       const newParentalPath = '/v5_pageForRename17/v5_pageForRename18';
       const newPath = newParentalPath + page1.path;
@@ -1073,7 +1073,10 @@ describe('PageService page operations with only public pages', () => {
       const newlyCreatedEmptyPage1 = await Page.findOne({ path: '/v5_pageForRename17' });
       const newlyCreatedEmptyPage2 = await Page.findOne({ path: '/v5_pageForRename17/v5_pageForRename18' });
 
-      expectAllToBeTruthy([renamedPage, renamedPageChild, newlyCreatedEmptyPage1, newlyCreatedEmptyPage2]);
+      expect(renamedPage).toBeTruthy();
+      expect(renamedPageChild).toBeTruthy();
+      expect(newlyCreatedEmptyPage1).toBeTruthy();
+      expect(newlyCreatedEmptyPage2).toBeTruthy();
 
       // check parent
       expect(newlyCreatedEmptyPage1.parent).toStrictEqual(rootPage._id);
@@ -1095,7 +1098,8 @@ describe('PageService page operations with only public pages', () => {
       const page1 = await Page.findOne({ path: initialPathForPage1, isEmpty: true });
       const page2 = await Page.findOne({ path: initialPathForPage2, isEmpty: false, parent: page1._id });
 
-      expectAllToBeTruthy([page1, page2]);
+      expect(page1).toBeTruthy();
+      expect(page2).toBeTruthy();
 
       const newParentalPath = '/v5_pageForRename19/v5_pageForRename20';
       const newPath = newParentalPath + page1.path;
@@ -1106,7 +1110,10 @@ describe('PageService page operations with only public pages', () => {
       const newlyCreatedEmptyPage1 = await Page.findOne({ path: '/v5_pageForRename19' });
       const newlyCreatedEmptyPage2 = await Page.findOne({ path: '/v5_pageForRename19/v5_pageForRename20' });
 
-      expectAllToBeTruthy([renamedPage, renamedPageChild, newlyCreatedEmptyPage1, newlyCreatedEmptyPage2]);
+      expect(renamedPage).toBeTruthy();
+      expect(renamedPageChild).toBeTruthy();
+      expect(newlyCreatedEmptyPage1).toBeTruthy();
+      expect(newlyCreatedEmptyPage2).toBeTruthy();
 
       // check parent
       expect(newlyCreatedEmptyPage1.parent).toStrictEqual(rootPage._id);
@@ -1130,7 +1137,9 @@ describe('PageService page operations with only public pages', () => {
       const page2 = await Page.findOne({ path: initialPathForPage2, isEmpty: true, parent: page1._id });
       const page3 = await Page.findOne({ path: initialPathForPage3, isEmpty: false, parent: page2._id });
 
-      expectAllToBeTruthy([page1, page2, page3]);
+      expect(page1).toBeTruthy();
+      expect(page2).toBeTruthy();
+      expect(page3).toBeTruthy();
 
       const newParentalPath = '/v5_pageForRename21/v5_pageForRename22/v5_pageForRename23';
       const newPath = newParentalPath + page1.path;
@@ -1145,7 +1154,12 @@ describe('PageService page operations with only public pages', () => {
       const newlyCreatedEmptyPage2 = await Page.findOne({ path: '/v5_pageForRename21/v5_pageForRename22' });
       const newlyCreatedEmptyPage3 = await Page.findOne({ path: '/v5_pageForRename21/v5_pageForRename22/v5_pageForRename23' });
 
-      expectAllToBeTruthy([renamedPage, renamedPageChild, renamedPageGrandchild, newlyCreatedEmptyPage1, newlyCreatedEmptyPage2, newlyCreatedEmptyPage3]);
+      expect(renamedPage).toBeTruthy();
+      expect(renamedPageChild).toBeTruthy();
+      expect(renamedPageGrandchild).toBeTruthy();
+      expect(newlyCreatedEmptyPage1).toBeTruthy();
+      expect(newlyCreatedEmptyPage2).toBeTruthy();
+      expect(newlyCreatedEmptyPage3).toBeTruthy();
 
       // check parent
       expect(newlyCreatedEmptyPage1.parent).toStrictEqual(rootPage._id);
@@ -1189,7 +1203,7 @@ describe('PageService page operations with only public pages', () => {
 
     test('Should duplicate single page', async() => {
       const page = await Page.findOne({ path: '/v5_PageForDuplicate1' });
-      expectAllToBeTruthy([page]);
+      expect(page).toBeTruthy();
 
       const newPagePath = '/duplicatedv5PageForDuplicate1';
       const duplicatedPage = await duplicate(page, newPagePath, dummyUser1, false);
@@ -1207,7 +1221,7 @@ describe('PageService page operations with only public pages', () => {
 
     test('Should NOT duplicate single empty page', async() => {
       const page = await Page.findOne({ path: '/v5_PageForDuplicate2' });
-      expectAllToBeTruthy([page]);
+      expect(page).toBeTruthy();
 
       let isThrown;
       let duplicatedPage;
@@ -1230,7 +1244,12 @@ describe('PageService page operations with only public pages', () => {
       const childPage2 = await Page.findOne({ path: '/v5_PageForDuplicate3/v5_Child_2_ForDuplicate3' }).populate({ path: 'revision', model: 'Revision' });
       const revisionForChild1 = childPage1.revision;
       const revisionForChild2 = childPage2.revision;
-      expectAllToBeTruthy([basePage, revision, childPage1, childPage2, revisionForChild1, revisionForChild2]);
+      expect(basePage).toBeTruthy();
+      expect(revision).toBeTruthy();
+      expect(childPage1).toBeTruthy();
+      expect(childPage2).toBeTruthy();
+      expect(revisionForChild1).toBeTruthy();
+      expect(revisionForChild2).toBeTruthy();
 
       const newPagePath = '/duplicatedv5PageForDuplicate3';
       const duplicatedPage = await duplicate(basePage, newPagePath, dummyUser1, true);
@@ -1242,8 +1261,13 @@ describe('PageService page operations with only public pages', () => {
       const revisionBodyForDupChild1 = duplicatedChildPage1.revision;
       const revisionBodyForDupChild2 = duplicatedChildPage2.revision;
 
-      expectAllToBeTruthy([duplicatedPage, duplicatedChildPage1, duplicatedChildPage2,
-                           revisionForDuplicatedPage, revisionBodyForDupChild1, revisionBodyForDupChild2]);
+      expect(duplicatedPage).toBeTruthy();
+      expect(duplicatedChildPage1).toBeTruthy();
+      expect(duplicatedChildPage2).toBeTruthy();
+      expect(revisionForDuplicatedPage).toBeTruthy();
+      expect(revisionBodyForDupChild1).toBeTruthy();
+      expect(revisionBodyForDupChild2).toBeTruthy();
+
       expect(xssSpy).toHaveBeenCalled();
       expect(duplicatedPage.path).toBe(newPagePath);
       expect(duplicatedChildPage1.path).toBe('/duplicatedv5PageForDuplicate3/v5_Child_1_ForDuplicate3');
@@ -1255,7 +1279,9 @@ describe('PageService page operations with only public pages', () => {
       const basePage = await Page.findOne({ path: '/v5_PageForDuplicate4' });
       const baseChild = await Page.findOne({ parent: basePage._id, isEmpty: true });
       const baseGrandchild = await Page.findOne({ parent: baseChild._id });
-      expectAllToBeTruthy([basePage, baseChild, baseGrandchild]);
+      expect(basePage).toBeTruthy();
+      expect(baseChild).toBeTruthy();
+      expect(baseGrandchild).toBeTruthy();
 
       const newPagePath = '/duplicatedv5PageForDuplicate4';
       const duplicatedPage = await duplicate(basePage, newPagePath, dummyUser1, true);
@@ -1263,7 +1289,8 @@ describe('PageService page operations with only public pages', () => {
       const duplicatedGrandchild = await Page.findOne({ parent: duplicatedChild._id });
 
       expect(xssSpy).toHaveBeenCalled();
-      expectAllToBeTruthy([duplicatedPage, duplicatedGrandchild]);
+      expect(duplicatedPage).toBeTruthy();
+      expect(duplicatedGrandchild).toBeTruthy();
       expect(duplicatedPage.path).toBe(newPagePath);
       expect(duplicatedChild.path).toBe('/duplicatedv5PageForDuplicate4/v5_empty_PageForDuplicate4');
       expect(duplicatedGrandchild.path).toBe('/duplicatedv5PageForDuplicate4/v5_empty_PageForDuplicate4/v5_grandchild_PageForDuplicate4');
@@ -1279,7 +1306,11 @@ describe('PageService page operations with only public pages', () => {
       const tag2 = await Tag.findOne({ name:  'duplicate_Tag2' });
       const basePageTagRelation1 = await PageTagRelation.findOne({ relatedTag: tag1._id });
       const basePageTagRelation2 = await PageTagRelation.findOne({ relatedTag: tag2._id });
-      expectAllToBeTruthy([basePage, tag1, tag2, basePageTagRelation1, basePageTagRelation2]);
+      expect(basePage).toBeTruthy();
+      expect(tag1).toBeTruthy();
+      expect(tag2).toBeTruthy();
+      expect(basePageTagRelation1).toBeTruthy();
+      expect(basePageTagRelation2).toBeTruthy();
 
       const newPagePath = '/duplicatedv5PageForDuplicate5';
       const duplicatedPage = await duplicate(basePage, newPagePath, dummyUser1, false);
@@ -1293,7 +1324,8 @@ describe('PageService page operations with only public pages', () => {
     test('Should NOT duplicate comments', async() => {
       const basePage = await Page.findOne({ path: '/v5_PageForDuplicate6' });
       const basePageComments = await Comment.find({ page: basePage._id });
-      expectAllToBeTruthy([basePage, ...basePageComments]);
+      expect(basePage).toBeTruthy();
+      expect(basePageComments.length).toBeGreaterThan(0); // length > 0
 
       const newPagePath = '/duplicatedv5PageForDuplicate6';
       const duplicatedPage = await duplicate(basePage, newPagePath, dummyUser1, false);
@@ -1308,14 +1340,21 @@ describe('PageService page operations with only public pages', () => {
       const basePage = await Page.findOne({ path: '/v5_empty_PageForDuplicate7' });
       const basePageChild = await Page.findOne({ parent: basePage._id }).populate({ path: 'revision', model: 'Revision' });
       const basePageGrandhild = await Page.findOne({ parent: basePageChild._id }).populate({ path: 'revision', model: 'Revision' });
-      expectAllToBeTruthy([basePage, basePageChild, basePageGrandhild, basePageChild.revision, basePageGrandhild.revision]);
-
+      expect(basePage).toBeTruthy();
+      expect(basePageChild).toBeTruthy();
+      expect(basePageGrandhild).toBeTruthy();
+      expect(basePageChild.revision).toBeTruthy();
+      expect(basePageGrandhild.revision).toBeTruthy();
       const newPagePath = '/duplicatedv5EmptyPageForDuplicate7';
       const duplicatedPage = await duplicate(basePage, newPagePath, dummyUser1, true);
       const duplicatedChild = await Page.findOne({ parent: duplicatedPage._id }).populate({ path: 'revision', model: 'Revision' });
       const duplicatedGrandchild = await Page.findOne({ parent: duplicatedChild._id }).populate({ path: 'revision', model: 'Revision' });
 
-      expectAllToBeTruthy([duplicatedPage, duplicatedChild, duplicatedGrandchild, duplicatedChild.revision, duplicatedGrandchild.revision]);
+      expect(duplicatedPage).toBeTruthy();
+      expect(duplicatedChild).toBeTruthy();
+      expect(duplicatedGrandchild).toBeTruthy();
+      expect(duplicatedChild.revision).toBeTruthy();
+      expect(duplicatedGrandchild.revision).toBeTruthy();
       expect(xssSpy).toHaveBeenCalled();
       expect(duplicatedPage.path).toBe(newPagePath);
       expect(duplicatedPage.isEmpty).toBe(true);
@@ -1348,8 +1387,7 @@ describe('PageService page operations with only public pages', () => {
 
     test('Should NOT delete root page', async() => {
       let isThrown;
-      expectAllToBeTruthy([rootPage]);
-
+      expect(rootPage).toBeTruthy();
       try { await deletePage(rootPage, dummyUser1, {}, false) }
       catch (err) { isThrown = true }
 
@@ -1361,7 +1399,7 @@ describe('PageService page operations with only public pages', () => {
 
     test('Should NOT delete trashed page', async() => {
       const trashedPage = await Page.findOne({ path: '/trash/v5_PageForDelete1' });
-      expectAllToBeTruthy([trashedPage]);
+      expect(trashedPage).toBeTruthy();
 
       let isThrown;
       try { await deletePage(trashedPage, dummyUser1, {}, false) }
@@ -1375,8 +1413,7 @@ describe('PageService page operations with only public pages', () => {
 
     test('Should NOT delete /user/hoge page', async() => {
       const dummyUser1Page = await Page.findOne({ path: '/user/v5DummyUser1' });
-      expectAllToBeTruthy([dummyUser1Page]);
-
+      expect(dummyUser1Page).toBeTruthy();
       let isThrown;
       try { await deletePage(dummyUser1Page, dummyUser1, {}, false) }
       catch (err) { isThrown = true }
@@ -1389,8 +1426,7 @@ describe('PageService page operations with only public pages', () => {
 
     test('Should delete single page', async() => {
       const pageToDelete = await Page.findOne({ path: '/v5_PageForDelete2' });
-      expectAllToBeTruthy([pageToDelete]);
-
+      expect(pageToDelete).toBeTruthy();
       const deletedPage = await deletePage(pageToDelete, dummyUser1, {}, false);
       const page = await Page.findOne({ path: '/v5_PageForDelete2' });
 
@@ -1404,8 +1440,9 @@ describe('PageService page operations with only public pages', () => {
       const parentPage = await Page.findOne({ path: '/v5_PageForDelete3' });
       const childPage = await Page.findOne({ path: '/v5_PageForDelete3/v5_PageForDelete4' });
       const grandchildPage = await Page.findOne({ path: '/v5_PageForDelete3/v5_PageForDelete4/v5_PageForDelete5' });
-      expectAllToBeTruthy([parentPage, childPage, grandchildPage]);
-
+      expect(parentPage).toBeTruthy();
+      expect(childPage).toBeTruthy();
+      expect(grandchildPage).toBeTruthy();
       const deletedParentPage = await deletePage(parentPage, dummyUser1, {}, true);
       const deletedChildPage = await Page.findOne({ path: '/trash/v5_PageForDelete3/v5_PageForDelete4' });
       const deletedGrandchildPage = await Page.findOne({ path: '/trash/v5_PageForDelete3/v5_PageForDelete4/v5_PageForDelete5' });
@@ -1428,8 +1465,11 @@ describe('PageService page operations with only public pages', () => {
       const tag2 = await Tag.findOne({ name: 'TagForDelete2' });
       const pageRelation1 = await PageTagRelation.findOne({ relatedTag: tag1._id });
       const pageRelation2 = await PageTagRelation.findOne({ relatedTag: tag2._id });
-      expectAllToBeTruthy([pageToDelete, tag1, tag2, pageRelation1, pageRelation2]);
-
+      expect(pageToDelete).toBeTruthy();
+      expect(tag1).toBeTruthy();
+      expect(tag2).toBeTruthy();
+      expect(pageRelation1).toBeTruthy();
+      expect(pageRelation2).toBeTruthy();
       const deletedPage = await deletePage(pageToDelete, dummyUser1, {}, false);
       const page = await Page.findOne({ path: '/v5_PageForDelete6' });
       const deletedTagRelation1 = await PageTagRelation.findOne({ _id: pageRelation1._id });
@@ -1461,7 +1501,7 @@ describe('PageService page operations with only public pages', () => {
     };
 
     test('Should NOT completely delete root page', async() => {
-      expectAllToBeTruthy([rootPage]);
+      expect(rootPage).toBeTruthy();
       let isThrown;
       try { await deleteCompletely(rootPage, dummyUser1, {}, false) }
       catch (err) { isThrown = true }
@@ -1471,7 +1511,7 @@ describe('PageService page operations with only public pages', () => {
     });
     test('Should completely delete single page', async() => {
       const page = await Page.findOne({ path: '/v5_PageForDeleteCompletely1' });
-      expectAllToBeTruthy([page]);
+      expect(page).toBeTruthy();
 
       await deleteCompletely(page, dummyUser1, {}, false);
       const deletedPage = await Page.findOne({ _id: page._id, path: '/v5_PageForDeleteCompletely1' });
@@ -1492,12 +1532,19 @@ describe('PageService page operations with only public pages', () => {
       const pageRedirect2 = await PageRedirect.findOne({ toPath: grandchildPage.path });
       const shareLink1 = await ShareLink.findOne({ relatedPage: parentPage._id });
       const shareLink2 = await ShareLink.findOne({ relatedPage: grandchildPage._id });
-
-      expectAllToBeTruthy(
-        [parentPage, childPage, grandchildPage, tag1, tag2,
-         pageTagRelation1, pageTagRelation2, bookmark, comment,
-         pageRedirect1, pageRedirect2, shareLink1, shareLink2],
-      );
+      expect(parentPage).toBeTruthy();
+      expect(childPage).toBeTruthy();
+      expect(grandchildPage).toBeTruthy();
+      expect(tag1).toBeTruthy();
+      expect(tag2).toBeTruthy();
+      expect(pageTagRelation1).toBeTruthy();
+      expect(pageTagRelation2).toBeTruthy();
+      expect(bookmark).toBeTruthy();
+      expect(comment).toBeTruthy();
+      expect(pageRedirect1).toBeTruthy();
+      expect(pageRedirect2).toBeTruthy();
+      expect(shareLink1).toBeTruthy();
+      expect(shareLink2).toBeTruthy();
 
       await deleteCompletely(parentPage, dummyUser1, {}, true);
       const deletedPages = await Page.find({ _id: { $in: [parentPage._id, childPage._id, grandchildPage._id] } });
@@ -1514,7 +1561,7 @@ describe('PageService page operations with only public pages', () => {
       // revision should be null
       expect(deletedRevisions.length).toBe(0);
       // tag should be Truthy
-      expectAllToBeTruthy(tags);
+      expect(tags).toBeTruthy();
       // pageTagRelation should be null
       expect(deletedPageTagRelations.length).toBe(0);
       // bookmark should be null
@@ -1529,8 +1576,8 @@ describe('PageService page operations with only public pages', () => {
     test('Should completely delete trashed page', async() => {
       const page = await Page.findOne({ path: '/trash/v5_PageForDeleteCompletely5' });
       const revision = await Revision.findOne({ pageId: page._id });
-      expectAllToBeTruthy([page, revision]);
-
+      expect(page).toBeTruthy();
+      expect(revision).toBeTruthy();
       await deleteCompletely(page, dummyUser1, {}, false);
       const deltedPage = await Page.findOne({ _id: page._id });
       const deltedRevision = await Revision.findOne({ _id: revision._id });
@@ -1542,7 +1589,9 @@ describe('PageService page operations with only public pages', () => {
       const parentPage = await Page.findOne({ path: '/v5_PageForDeleteCompletely6' });
       const childPage = await Page.findOne({ path: '/v5_PageForDeleteCompletely6/v5_PageForDeleteCompletely7' });
       const grandchildPage = await Page.findOne({ path: '/v5_PageForDeleteCompletely6/v5_PageForDeleteCompletely7/v5_PageForDeleteCompletely8' });
-      expectAllToBeTruthy([parentPage, childPage, grandchildPage]);
+      expect(parentPage).toBeTruthy();
+      expect(childPage).toBeTruthy();
+      expect(grandchildPage).toBeTruthy();
 
       await deleteCompletely(childPage, dummyUser1, {}, false);
       const parentPageAfterDelete = await Page.findOne({ path: '/v5_PageForDeleteCompletely6' });
@@ -1550,7 +1599,10 @@ describe('PageService page operations with only public pages', () => {
       const grandchildPageAfterDelete = await Page.findOne({ path: '/v5_PageForDeleteCompletely6/v5_PageForDeleteCompletely7/v5_PageForDeleteCompletely8' });
       const childOfDeletedPage = await Page.findOne({ parent: childPageAfterDelete._id });
 
-      expectAllToBeTruthy([parentPageAfterDelete, childPageAfterDelete, grandchildPageAfterDelete]);
+      expect(parentPageAfterDelete).toBeTruthy();
+      expect(childPageAfterDelete).toBeTruthy();
+      expect(grandchildPageAfterDelete).toBeTruthy();
+
       expect(childPageAfterDelete._id).not.toStrictEqual(childPage._id);
       expect(childPageAfterDelete.isEmpty).toBe(true);
       expect(childPageAfterDelete.parent).toStrictEqual(parentPage._id);
@@ -1581,7 +1633,10 @@ describe('PageService page operations with only public pages', () => {
       const revision = await Revision.findOne({ pageId: deletedPage._id });
       const tag = await Tag.findOne({ name: 'revertTag1' });
       const deletedPageTagRelation = await PageTagRelation.findOne({ relatedPage: deletedPage._id, relatedTag: tag._id, isPageTrashed: true });
-      expectAllToBeTruthy([deletedPage, revision, tag, deletedPageTagRelation]);
+      expect(deletedPage).toBeTruthy();
+      expect(revision).toBeTruthy();
+      expect(tag).toBeTruthy();
+      expect(deletedPageTagRelation).toBeTruthy();
 
       const revertedPage = await revertDeletedPage(deletedPage, dummyUser1, {}, false);
       const pageTagRelation = await PageTagRelation.findOne({ relatedPage: deletedPage._id, relatedTag: tag._id });
@@ -1598,13 +1653,19 @@ describe('PageService page operations with only public pages', () => {
       const deletedPage2 = await Page.findOne({ path: '/trash/v5_revert2/v5_revert3/v5_revert4', status: Page.STATUS_DELETED });
       const revision1 = await Revision.findOne({ pageId: deletedPage1._id });
       const revision2 = await Revision.findOne({ pageId: deletedPage2._id });
-      expectAllToBeTruthy([deletedPage1, deletedPage2, revision1, revision2]);
+      expect(deletedPage1).toBeTruthy();
+      expect(deletedPage2).toBeTruthy();
+      expect(revision1).toBeTruthy();
+      expect(revision2).toBeTruthy();
 
       const revertedPage1 = await revertDeletedPage(deletedPage1, dummyUser1, {}, true);
       const revertedPage2 = await Page.findOne({ _id: deletedPage2._id });
       const newlyCreatedPage = await Page.findOne({ path: '/v5_revert2/v5_revert3' });
 
-      expectAllToBeTruthy([revertedPage1, revertedPage2, newlyCreatedPage]);
+      expect(revertedPage1).toBeTruthy();
+      expect(revertedPage2).toBeTruthy();
+      expect(newlyCreatedPage).toBeTruthy();
+
       expect(revertedPage1.parent).toStrictEqual(rootPage._id);
       expect(revertedPage1.path).toBe('/v5_revert2');
       expect(revertedPage2.path).toBe('/v5_revert2/v5_revert3/v5_revert4');

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

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

+ 1 - 1
packages/core/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@growi/core",
-  "version": "5.0.0-RC.9",
+  "version": "5.0.0-RC.10",
   "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.0-RC.9",
+  "version": "5.0.0-RC.10",
   "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.0-RC.9",
+  "version": "5.0.0-RC.10",
   "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.0-RC.9",
+  "version": "5.0.0-RC.10",
   "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.0-RC.9",
+  "version": "5.0.0-RC.10",
   "license": "MIT",
   "main": "dist/index.js",
   "typings": "dist/index.d.ts",

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

@@ -25,7 +25,7 @@
   },
   "dependencies": {
     "@godaddy/terminus": "^4.9.0",
-    "@growi/slack": "^5.0.0-RC.9",
+    "@growi/slack": "^5.0.0-RC.10",
     "@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.0-RC.9",
+  "version": "5.0.0-RC.10",
   "description": "GROWI UI Libraries",
   "license": "MIT",
   "keywords": [

+ 5 - 5
yarn.lock

@@ -873,7 +873,7 @@
   resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz#d5e0706cf8c6acd8c6032f8d54070af261bbbb2f"
   integrity sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==
 
-"@elastic/elasticsearch6@npm:@elastic/elasticsearch@^6.8.7":
+"@elastic/elasticsearch6@npm:@elastic/elasticsearch@^6.8.8":
   version "6.8.8"
   resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-6.8.8.tgz#363d332d4de3a3ee5420ac0ced2eb4bfadf04548"
   integrity sha512-51Jp3ZZ0oPqYPNlPG58XJ773MqJBx91rGNWCgVvy2UtxjxHsExAJooesOyLcoADnW0Dhyxu6yB8tziHnmyl8Vw==
@@ -886,10 +886,10 @@
     pump "^3.0.0"
     secure-json-parse "^2.1.0"
 
-"@elastic/elasticsearch7@npm:@elastic/elasticsearch@^7.16.0":
-  version "7.16.0"
-  resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-7.16.0.tgz#c1c64b6f0343c0f5ca6893fb77ceecd763455024"
-  integrity sha512-lMY2MFZZFG3om7QNHninxZZOXYx3NdIUwEISZxqaI9dXPoL3DNhU31keqjvx1gN6T74lGXAzrRNP4ag8CJ/VXw==
+"@elastic/elasticsearch7@npm:@elastic/elasticsearch@^7.17.0":
+  version "7.17.0"
+  resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-7.17.0.tgz#589fb219234cf1b0da23744e82b1d25e2fe9a797"
+  integrity sha512-5QLPCjd0uLmLj1lSuKSThjNpq39f6NmlTy9ROLFwG5gjyTgpwSqufDeYG/Fm43Xs05uF7WcscoO7eguI3HuuYA==
   dependencies:
     debug "^4.3.1"
     hpagent "^0.1.1"