From 8fc33a0e9a0dfa1bf8b917ba04f69e3422e24491 Mon Sep 17 00:00:00 2001 From: Yuki Takei Date: Mon, 9 Sep 2024 13:25:38 +0000 Subject: [PATCH 01/60] improve grant data fetching --- apps/app/src/stores/page.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/app/src/stores/page.tsx b/apps/app/src/stores/page.tsx index 084d6033979..2181ecd5cf4 100644 --- a/apps/app/src/stores/page.tsx +++ b/apps/app/src/stores/page.tsx @@ -285,7 +285,7 @@ export const useSWRxCurrentGrantData = ( ? ['/page/grant-data', pageId] : null; - return useSWRImmutable( + return useSWR( key, ([endpoint, pageId]) => apiv3Get(endpoint, { pageId }).then(response => response.data), ); @@ -295,7 +295,7 @@ export const useSWRxApplicableGrant = ( pageId: string | null | undefined, ): SWRResponse => { - return useSWRImmutable( + return useSWR( pageId != null ? ['/page/applicable-grant', pageId] : null, ([endpoint, pageId]) => apiv3Get(endpoint, { pageId }).then(response => response.data), ); From c035c466b19217843ee7d835a8181ac41d736024 Mon Sep 17 00:00:00 2001 From: Shun Miyazawa Date: Tue, 10 Sep 2024 03:54:49 +0000 Subject: [PATCH 02/60] bugFix --- apps/app/src/components/PageView/PageView.tsx | 2 ++ apps/app/src/pages/[[...path]].page.tsx | 5 ++++- apps/app/src/stores/page.tsx | 17 ++++++++++------- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/apps/app/src/components/PageView/PageView.tsx b/apps/app/src/components/PageView/PageView.tsx index b3e88d7759c..e9e77bc35ce 100644 --- a/apps/app/src/components/PageView/PageView.tsx +++ b/apps/app/src/components/PageView/PageView.tsx @@ -128,6 +128,8 @@ export const PageView = (props: Props): JSX.Element => { const markdown = page.revision.body; const rendererOptions = viewOptions ?? generateSSRViewOptions(rendererConfig, pagePath); + console.log('markdown', markdown); + return ( <> diff --git a/apps/app/src/pages/[[...path]].page.tsx b/apps/app/src/pages/[[...path]].page.tsx index 4dd4124783e..6fa37906512 100644 --- a/apps/app/src/pages/[[...path]].page.tsx +++ b/apps/app/src/pages/[[...path]].page.tsx @@ -190,6 +190,7 @@ type Props = CommonProps & { yjsData: CurrentPageYjsData, rendererConfig: RendererConfig, + isPastRevisionSelected: boolean, }; const Page: NextPageWithLayout = (props: Props) => { @@ -250,7 +251,7 @@ const Page: NextPageWithLayout = (props: Props) => { useCurrentPathname(props.currentPathname); - const { data: currentPage } = useSWRxCurrentPage(pageWithMeta?.data ?? null); // store initial data + const { data: currentPage } = useSWRxCurrentPage(pageWithMeta?.data ?? null, props.isPastRevisionSelected); // store initial data const { trigger: mutateCurrentPage } = useSWRMUTxCurrentPage(); const { trigger: mutateCurrentPageYjsDataFromApi } = useSWRMUTxCurrentPageYjsData(); @@ -432,6 +433,8 @@ async function injectPageData(context: GetServerSidePropsContext, props: Props): const { crowi } = req; const { revisionId } = req.query; + props.isPastRevisionSelected = revisionId != null; + const Page = crowi.model('Page') as PageModel; const PageRedirect = mongooseModel('PageRedirect') as PageRedirectModel; const { pageService, configManager } = crowi; diff --git a/apps/app/src/stores/page.tsx b/apps/app/src/stores/page.tsx index 084d6033979..47931d3c7a6 100644 --- a/apps/app/src/stores/page.tsx +++ b/apps/app/src/stores/page.tsx @@ -54,7 +54,9 @@ export const useTemplateBodyData = (initialData?: string): SWRResponse => { +export const useSWRxCurrentPage = ( + initialData?: IPagePopulatedToShowRevision|null, isPastRevisionSelected = false, +): SWRResponse => { const key = 'currentPage'; const { cache } = useSWRConfig(); @@ -81,23 +83,24 @@ export const useSWRxCurrentPage = (initialData?: IPagePopulatedToShowRevision|nu return true; } - // mutate When a different revision is opened - if (cachedData.revision?._id != null && initialData.revision?._id != null && cachedData.revision._id !== initialData.revision._id) { - return true; - } + // // mutate When a different revision is opened + // if (cachedData.revision?._id != null && initialData.revision?._id != null && cachedData.revision._id !== initialData.revision._id) { + // console.log('initialData', initialData); + // return true; + // } return false; })(); useEffect(() => { - if (shouldMutate) { + if (shouldMutate || isPastRevisionSelected) { mutate(key, initialData, { optimisticData: initialData, populateCache: true, revalidate: false, }); } - }, [initialData, key, shouldMutate]); + }, [initialData, isPastRevisionSelected, key, shouldMutate]); return useSWR(key, null, { keepPreviousData: true, From 9fb90c17d28472238d80ef63fa66a4caf3caa67f Mon Sep 17 00:00:00 2001 From: Shun Miyazawa Date: Tue, 10 Sep 2024 05:04:18 +0000 Subject: [PATCH 03/60] Use useIsLatestRevision() --- apps/app/src/components/PageView/PageView.tsx | 2 -- apps/app/src/pages/[[...path]].page.tsx | 5 +---- apps/app/src/stores/page.tsx | 22 ++++++++++--------- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/apps/app/src/components/PageView/PageView.tsx b/apps/app/src/components/PageView/PageView.tsx index e9e77bc35ce..b3e88d7759c 100644 --- a/apps/app/src/components/PageView/PageView.tsx +++ b/apps/app/src/components/PageView/PageView.tsx @@ -128,8 +128,6 @@ export const PageView = (props: Props): JSX.Element => { const markdown = page.revision.body; const rendererOptions = viewOptions ?? generateSSRViewOptions(rendererConfig, pagePath); - console.log('markdown', markdown); - return ( <> diff --git a/apps/app/src/pages/[[...path]].page.tsx b/apps/app/src/pages/[[...path]].page.tsx index 6fa37906512..4dd4124783e 100644 --- a/apps/app/src/pages/[[...path]].page.tsx +++ b/apps/app/src/pages/[[...path]].page.tsx @@ -190,7 +190,6 @@ type Props = CommonProps & { yjsData: CurrentPageYjsData, rendererConfig: RendererConfig, - isPastRevisionSelected: boolean, }; const Page: NextPageWithLayout = (props: Props) => { @@ -251,7 +250,7 @@ const Page: NextPageWithLayout = (props: Props) => { useCurrentPathname(props.currentPathname); - const { data: currentPage } = useSWRxCurrentPage(pageWithMeta?.data ?? null, props.isPastRevisionSelected); // store initial data + const { data: currentPage } = useSWRxCurrentPage(pageWithMeta?.data ?? null); // store initial data const { trigger: mutateCurrentPage } = useSWRMUTxCurrentPage(); const { trigger: mutateCurrentPageYjsDataFromApi } = useSWRMUTxCurrentPageYjsData(); @@ -433,8 +432,6 @@ async function injectPageData(context: GetServerSidePropsContext, props: Props): const { crowi } = req; const { revisionId } = req.query; - props.isPastRevisionSelected = revisionId != null; - const Page = crowi.model('Page') as PageModel; const PageRedirect = mongooseModel('PageRedirect') as PageRedirectModel; const { pageService, configManager } = crowi; diff --git a/apps/app/src/stores/page.tsx b/apps/app/src/stores/page.tsx index 47931d3c7a6..957e99e3fb3 100644 --- a/apps/app/src/stores/page.tsx +++ b/apps/app/src/stores/page.tsx @@ -54,11 +54,11 @@ export const useTemplateBodyData = (initialData?: string): SWRResponse => { +export const useSWRxCurrentPage = (initialData?: IPagePopulatedToShowRevision|null): SWRResponse => { const key = 'currentPage'; + const { data: isLatestRevision } = useIsLatestRevision(); + const { cache } = useSWRConfig(); // Problem 1: https://github.com/weseek/growi/pull/7772/files#diff-4c1708c4f959974166c15435c6b35950ba01bbf35e7e4b8e99efeb125a8000a7 @@ -83,24 +83,26 @@ export const useSWRxCurrentPage = ( return true; } - // // mutate When a different revision is opened - // if (cachedData.revision?._id != null && initialData.revision?._id != null && cachedData.revision._id !== initialData.revision._id) { - // console.log('initialData', initialData); - // return true; - // } + // mutate When a different revision is opened + if (!isLatestRevision + && cachedData.revision?._id != null && initialData.revision?._id != null + && cachedData.revision._id !== initialData.revision._id + ) { + return true; + } return false; })(); useEffect(() => { - if (shouldMutate || isPastRevisionSelected) { + if (shouldMutate) { mutate(key, initialData, { optimisticData: initialData, populateCache: true, revalidate: false, }); } - }, [initialData, isPastRevisionSelected, key, shouldMutate]); + }, [initialData, key, shouldMutate]); return useSWR(key, null, { keepPreviousData: true, From 2fd6c1956a669f347e9dca9cea5370dbc8b2ef55 Mon Sep 17 00:00:00 2001 From: WNomunomu Date: Tue, 10 Sep 2024 05:08:42 +0000 Subject: [PATCH 04/60] add the new error code to PageUpdateErrorCode --- apps/app/src/interfaces/apiv3/page.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/app/src/interfaces/apiv3/page.ts b/apps/app/src/interfaces/apiv3/page.ts index 57e292a2775..bca4f78a059 100644 --- a/apps/app/src/interfaces/apiv3/page.ts +++ b/apps/app/src/interfaces/apiv3/page.ts @@ -42,4 +42,5 @@ export type IApiv3PageUpdateResponse = { export const PageUpdateErrorCode = { CONFLICT: 'conflict', + FORBIDDEN: 'forbidden', } as const; From 445ad7207b9821795e818c02e3c99d3cba792719 Mon Sep 17 00:00:00 2001 From: WNomunomu Date: Tue, 10 Sep 2024 05:09:38 +0000 Subject: [PATCH 05/60] change to return error when the restricted grant is tried to change via api --- .../src/server/routes/apiv3/page/update-page.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/apps/app/src/server/routes/apiv3/page/update-page.ts b/apps/app/src/server/routes/apiv3/page/update-page.ts index bf3db74c782..9e768065133 100644 --- a/apps/app/src/server/routes/apiv3/page/update-page.ts +++ b/apps/app/src/server/routes/apiv3/page/update-page.ts @@ -27,6 +27,8 @@ import { apiV3FormValidator } from '../../../middlewares/apiv3-form-validator'; import { excludeReadOnlyUser } from '../../../middlewares/exclude-read-only-user'; import type { ApiV3Response } from '../interfaces/apiv3-response'; +import { isTopPage, isUsersProtectedPages } from '@growi/core/dist/utils/page-path-utils'; + const logger = loggerFactory('growi:routes:apiv3:page:update-page'); @@ -119,7 +121,7 @@ export const updatePageHandlersFactory: UpdatePageHandlersFactory = (crowi) => { return [ accessTokenParser, loginRequiredStrictly, excludeReadOnlyUser, addActivity, validator, apiV3FormValidator, - async(req: UpdatePageRequest, res: ApiV3Response) => { + async (req: UpdatePageRequest, res: ApiV3Response) => { const { pageId, revisionId, body, origin, } = req.body; @@ -160,6 +162,8 @@ export const updatePageHandlersFactory: UpdatePageHandlersFactory = (crowi) => { return res.apiv3Err(new ErrorV3('Posted param "revisionId" is outdated.', PageUpdateErrorCode.CONFLICT, undefined, { returnLatestRevision }), 409); } + const isGrantImmutable = isTopPage(currentPage.path) || isUsersProtectedPages(currentPage.path); + let updatedPage: PageDocument; let previousRevision: IRevisionHasId | null; try { @@ -168,8 +172,13 @@ export const updatePageHandlersFactory: UpdatePageHandlersFactory = (crowi) => { } = req.body; const options: IOptionsForUpdate = { overwriteScopesOfDescendants, origin, wip }; if (grant != null) { - options.grant = grant; - options.userRelatedGrantUserGroupIds = userRelatedGrantUserGroupIds; + if (isGrantImmutable) { + return res.apiv3Err(new ErrorV3('The grant settings for the specified page cannot be modified.', PageUpdateErrorCode.FORBIDDEN), 403); + } + else { + options.grant = grant; + options.userRelatedGrantUserGroupIds = userRelatedGrantUserGroupIds; + } } previousRevision = await Revision.findById(sanitizeRevisionId); updatedPage = await crowi.pageService.updatePage(currentPage, body, previousRevision?.body ?? null, req.user, options); From 0b8b57af81a1a9505b2a32d17946fc80f01c8a16 Mon Sep 17 00:00:00 2001 From: WNomunomu Date: Tue, 10 Sep 2024 05:18:26 +0000 Subject: [PATCH 06/60] fix for lint --- apps/app/src/server/routes/apiv3/page/update-page.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/apps/app/src/server/routes/apiv3/page/update-page.ts b/apps/app/src/server/routes/apiv3/page/update-page.ts index 9e768065133..d9ee1e4fa57 100644 --- a/apps/app/src/server/routes/apiv3/page/update-page.ts +++ b/apps/app/src/server/routes/apiv3/page/update-page.ts @@ -175,10 +175,7 @@ export const updatePageHandlersFactory: UpdatePageHandlersFactory = (crowi) => { if (isGrantImmutable) { return res.apiv3Err(new ErrorV3('The grant settings for the specified page cannot be modified.', PageUpdateErrorCode.FORBIDDEN), 403); } - else { - options.grant = grant; - options.userRelatedGrantUserGroupIds = userRelatedGrantUserGroupIds; - } + options.userRelatedGrantUserGroupIds = userRelatedGrantUserGroupIds; } previousRevision = await Revision.findById(sanitizeRevisionId); updatedPage = await crowi.pageService.updatePage(currentPage, body, previousRevision?.body ?? null, req.user, options); From 9c469ff08f49c511dc40b442ca154ea0672160ea Mon Sep 17 00:00:00 2001 From: WNomunomu Date: Tue, 10 Sep 2024 05:34:11 +0000 Subject: [PATCH 07/60] fix for lint --- apps/app/src/server/routes/apiv3/page/update-page.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/app/src/server/routes/apiv3/page/update-page.ts b/apps/app/src/server/routes/apiv3/page/update-page.ts index d9ee1e4fa57..d14a018bce7 100644 --- a/apps/app/src/server/routes/apiv3/page/update-page.ts +++ b/apps/app/src/server/routes/apiv3/page/update-page.ts @@ -4,6 +4,7 @@ import type { } from '@growi/core'; import { ErrorV3 } from '@growi/core/dist/models'; import { serializeUserSecurely } from '@growi/core/dist/models/serializers'; +import { isTopPage, isUsersProtectedPages } from '@growi/core/dist/utils/page-path-utils'; import type { Request, RequestHandler } from 'express'; import type { ValidationChain } from 'express-validator'; import { body } from 'express-validator'; @@ -27,7 +28,6 @@ import { apiV3FormValidator } from '../../../middlewares/apiv3-form-validator'; import { excludeReadOnlyUser } from '../../../middlewares/exclude-read-only-user'; import type { ApiV3Response } from '../interfaces/apiv3-response'; -import { isTopPage, isUsersProtectedPages } from '@growi/core/dist/utils/page-path-utils'; const logger = loggerFactory('growi:routes:apiv3:page:update-page'); @@ -121,7 +121,7 @@ export const updatePageHandlersFactory: UpdatePageHandlersFactory = (crowi) => { return [ accessTokenParser, loginRequiredStrictly, excludeReadOnlyUser, addActivity, validator, apiV3FormValidator, - async (req: UpdatePageRequest, res: ApiV3Response) => { + async(req: UpdatePageRequest, res: ApiV3Response) => { const { pageId, revisionId, body, origin, } = req.body; From 35c38c9e294fc156ed08230c9bdf1455a776816f Mon Sep 17 00:00:00 2001 From: Shun Miyazawa Date: Tue, 10 Sep 2024 06:41:03 +0000 Subject: [PATCH 08/60] fix commet --- apps/app/src/stores/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/app/src/stores/page.tsx b/apps/app/src/stores/page.tsx index 957e99e3fb3..22d57c5174a 100644 --- a/apps/app/src/stores/page.tsx +++ b/apps/app/src/stores/page.tsx @@ -83,7 +83,7 @@ export const useSWRxCurrentPage = (initialData?: IPagePopulatedToShowRevision|nu return true; } - // mutate When a different revision is opened + // mutate when opening a previous revision. if (!isLatestRevision && cachedData.revision?._id != null && initialData.revision?._id != null && cachedData.revision._id !== initialData.revision._id From f22c5670b4271292dcda9691724a9bb5767ede16 Mon Sep 17 00:00:00 2001 From: WNomunomu Date: Tue, 10 Sep 2024 07:36:49 +0000 Subject: [PATCH 09/60] change to check for grant at an earlier stage --- .../src/server/routes/apiv3/page/update-page.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/apps/app/src/server/routes/apiv3/page/update-page.ts b/apps/app/src/server/routes/apiv3/page/update-page.ts index d14a018bce7..2ab919159a3 100644 --- a/apps/app/src/server/routes/apiv3/page/update-page.ts +++ b/apps/app/src/server/routes/apiv3/page/update-page.ts @@ -123,7 +123,7 @@ export const updatePageHandlersFactory: UpdatePageHandlersFactory = (crowi) => { validator, apiV3FormValidator, async(req: UpdatePageRequest, res: ApiV3Response) => { const { - pageId, revisionId, body, origin, + pageId, revisionId, body, origin, grant, } = req.body; const sanitizeRevisionId = revisionId == null ? undefined : generalXssFilter.process(revisionId); @@ -141,6 +141,12 @@ export const updatePageHandlersFactory: UpdatePageHandlersFactory = (crowi) => { return res.apiv3Err(new ErrorV3(`Page('${pageId}' is not found or forbidden`, 'notfound_or_forbidden'), 400); } + const isGrantImmutable = isTopPage(currentPage.path) || isUsersProtectedPages(currentPage.path); + + if (grant && isGrantImmutable) { + return res.apiv3Err(new ErrorV3('The grant settings for the specified page cannot be modified.', PageUpdateErrorCode.FORBIDDEN), 403); + } + if (currentPage != null) { // Normalize the latest revision which was borken by the migration script '20211227060705-revision-path-to-page-id-schema-migration--fixed-7549.js' try { @@ -162,19 +168,15 @@ export const updatePageHandlersFactory: UpdatePageHandlersFactory = (crowi) => { return res.apiv3Err(new ErrorV3('Posted param "revisionId" is outdated.', PageUpdateErrorCode.CONFLICT, undefined, { returnLatestRevision }), 409); } - const isGrantImmutable = isTopPage(currentPage.path) || isUsersProtectedPages(currentPage.path); - let updatedPage: PageDocument; let previousRevision: IRevisionHasId | null; try { const { - grant, userRelatedGrantUserGroupIds, overwriteScopesOfDescendants, wip, + userRelatedGrantUserGroupIds, overwriteScopesOfDescendants, wip, } = req.body; const options: IOptionsForUpdate = { overwriteScopesOfDescendants, origin, wip }; if (grant != null) { - if (isGrantImmutable) { - return res.apiv3Err(new ErrorV3('The grant settings for the specified page cannot be modified.', PageUpdateErrorCode.FORBIDDEN), 403); - } + options.grant = grant; options.userRelatedGrantUserGroupIds = userRelatedGrantUserGroupIds; } previousRevision = await Revision.findById(sanitizeRevisionId); From 33d314bce7cf62655674cd071bbcc23c2ec58071 Mon Sep 17 00:00:00 2001 From: WNomunomu Date: Tue, 10 Sep 2024 08:07:48 +0000 Subject: [PATCH 10/60] fix the conditional branch --- apps/app/src/server/routes/apiv3/page/update-page.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/app/src/server/routes/apiv3/page/update-page.ts b/apps/app/src/server/routes/apiv3/page/update-page.ts index 2ab919159a3..b13a29a69e8 100644 --- a/apps/app/src/server/routes/apiv3/page/update-page.ts +++ b/apps/app/src/server/routes/apiv3/page/update-page.ts @@ -143,7 +143,7 @@ export const updatePageHandlersFactory: UpdatePageHandlersFactory = (crowi) => { const isGrantImmutable = isTopPage(currentPage.path) || isUsersProtectedPages(currentPage.path); - if (grant && isGrantImmutable) { + if (grant && grant !== currentPage.grant && isGrantImmutable) { return res.apiv3Err(new ErrorV3('The grant settings for the specified page cannot be modified.', PageUpdateErrorCode.FORBIDDEN), 403); } From d8052367f1a6b1352b7f41d74bf40b4ce3956424 Mon Sep 17 00:00:00 2001 From: reiji-h Date: Tue, 10 Sep 2024 09:22:08 +0000 Subject: [PATCH 11/60] when hoverd page path, hide copy button --- .../Common/PagePathNav/PagePathNavLayout.tsx | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/apps/app/src/components/Common/PagePathNav/PagePathNavLayout.tsx b/apps/app/src/components/Common/PagePathNav/PagePathNavLayout.tsx index 22e2549a0e5..85a567e8870 100644 --- a/apps/app/src/components/Common/PagePathNav/PagePathNavLayout.tsx +++ b/apps/app/src/components/Common/PagePathNav/PagePathNavLayout.tsx @@ -1,8 +1,10 @@ import type { ReactNode } from 'react'; +import { useState } from 'react'; import dynamic from 'next/dynamic'; import { useIsNotFound } from '~/stores/page'; +import { useIsDeviceLargerThanMd } from '~/stores/ui'; import styles from './PagePathNav.module.scss'; @@ -36,11 +38,18 @@ export const PagePathNavLayout = (props: Props): JSX.Element => { } = props; const { data: isNotFound } = useIsNotFound(); + const { data: isDeviceLargerThanMd } = useIsDeviceLargerThanMd(); + const [isHovered, setIsHovered] = useState(false); const copyDropdownId = `copydropdown-${pageId}`; return ( -
+
setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)} + > {formerLink}

@@ -51,9 +60,13 @@ export const PagePathNavLayout = (props: Props): JSX.Element => { { isWipPage && ( WIP )} - - content_paste - + { + (!isDeviceLargerThanMd || isHovered) && ( + + content_paste + + ) + }

) }
From 2457c2980dee911aad379f0ef6e9978d7f0d7ff1 Mon Sep 17 00:00:00 2001 From: WNomunomu Date: Tue, 10 Sep 2024 09:44:51 +0000 Subject: [PATCH 12/60] add null check to the conditional branch --- apps/app/src/server/routes/apiv3/page/update-page.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/app/src/server/routes/apiv3/page/update-page.ts b/apps/app/src/server/routes/apiv3/page/update-page.ts index b13a29a69e8..1c3dbb40974 100644 --- a/apps/app/src/server/routes/apiv3/page/update-page.ts +++ b/apps/app/src/server/routes/apiv3/page/update-page.ts @@ -143,7 +143,7 @@ export const updatePageHandlersFactory: UpdatePageHandlersFactory = (crowi) => { const isGrantImmutable = isTopPage(currentPage.path) || isUsersProtectedPages(currentPage.path); - if (grant && grant !== currentPage.grant && isGrantImmutable) { + if (grant != null && grant !== currentPage.grant && isGrantImmutable) { return res.apiv3Err(new ErrorV3('The grant settings for the specified page cannot be modified.', PageUpdateErrorCode.FORBIDDEN), 403); } From 2c0cf9cff4c995b3d53fe31720baf7053f3feeeb Mon Sep 17 00:00:00 2001 From: Shun Miyazawa Date: Tue, 10 Sep 2024 10:35:45 +0000 Subject: [PATCH 13/60] Enabled to return sharedPage in GET /_api/v3/page --- apps/app/src/server/models/page.ts | 1 + apps/app/src/server/routes/apiv3/page/index.ts | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/apps/app/src/server/models/page.ts b/apps/app/src/server/models/page.ts index 98fb82559ad..071e8622b5d 100644 --- a/apps/app/src/server/models/page.ts +++ b/apps/app/src/server/models/page.ts @@ -50,6 +50,7 @@ export interface PageDocument extends IPage, Document { [x:string]: any // for obsolete methods getLatestRevisionBodyLength(): Promise calculateAndUpdateLatestRevisionBodyLength(this: PageDocument): Promise + populateDataToShowRevision(shouldExcludeBody: boolean): Promise } diff --git a/apps/app/src/server/routes/apiv3/page/index.ts b/apps/app/src/server/routes/apiv3/page/index.ts index a20a3a08274..5f1cf800d90 100644 --- a/apps/app/src/server/routes/apiv3/page/index.ts +++ b/apps/app/src/server/routes/apiv3/page/index.ts @@ -20,6 +20,7 @@ import { excludeReadOnlyUser } from '~/server/middlewares/exclude-read-only-user import { GlobalNotificationSettingEvent } from '~/server/models/GlobalNotificationSetting'; import type { PageDocument, PageModel } from '~/server/models/page'; import { Revision } from '~/server/models/revision'; +import ShareLink from '~/server/models/share-link'; import Subscription from '~/server/models/subscription'; import { configManager } from '~/server/service/config-manager'; import type { IPageGrantService } from '~/server/service/page-grant'; @@ -202,6 +203,7 @@ module.exports = (crowi) => { query('pageId').optional().isString(), query('path').optional().isString(), query('findAll').optional().isBoolean(), + query('shareLinkId').optional().isMongoId(), ], likes: [ body('pageId').isString(), @@ -284,15 +286,26 @@ module.exports = (crowi) => { * $ref: '#/components/schemas/Page' */ router.get('/', certifySharedPage, accessTokenParser, loginRequired, validator.getPage, apiV3FormValidator, async(req, res) => { - const { user } = req; + const { user, isSharedPage } = req; const { - pageId, path, findAll, revisionId, + pageId, path, findAll, revisionId, shareLinkId, } = req.query; if (pageId == null && path == null) { return res.apiv3Err(new ErrorV3('Either parameter of path or pageId is required.', 'invalid-request')); } + if (isSharedPage) { + const shareLink = await ShareLink.findOne({ _id: shareLinkId }).populate('relatedPage'); + if (shareLink == null) { + return res.apiv3Err(new ErrorV3('ShareLink is not found'), 404); + } + + const relatedPage = await Page.findOne({ _id: getIdForRef(shareLink.relatedPage) }); + const pagePopulateDataToShowRevision = await relatedPage?.populateDataToShowRevision(false); + return res.apiv3({ page: pagePopulateDataToShowRevision }); + } + let page; let pages; try { From b4b6d45c8b929ef35fdfd6e98cb021749e6862be Mon Sep 17 00:00:00 2001 From: Shun Miyazawa Date: Tue, 10 Sep 2024 10:52:33 +0000 Subject: [PATCH 14/60] Make shouldExcludeBody optional --- apps/app/src/server/models/page.ts | 2 +- apps/app/src/server/routes/apiv3/page/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/app/src/server/models/page.ts b/apps/app/src/server/models/page.ts index 071e8622b5d..84e5f6f9296 100644 --- a/apps/app/src/server/models/page.ts +++ b/apps/app/src/server/models/page.ts @@ -50,7 +50,7 @@ export interface PageDocument extends IPage, Document { [x:string]: any // for obsolete methods getLatestRevisionBodyLength(): Promise calculateAndUpdateLatestRevisionBodyLength(this: PageDocument): Promise - populateDataToShowRevision(shouldExcludeBody: boolean): Promise + populateDataToShowRevision(shouldExcludeBody?: boolean): Promise } diff --git a/apps/app/src/server/routes/apiv3/page/index.ts b/apps/app/src/server/routes/apiv3/page/index.ts index 5f1cf800d90..75c305e9898 100644 --- a/apps/app/src/server/routes/apiv3/page/index.ts +++ b/apps/app/src/server/routes/apiv3/page/index.ts @@ -302,7 +302,7 @@ module.exports = (crowi) => { } const relatedPage = await Page.findOne({ _id: getIdForRef(shareLink.relatedPage) }); - const pagePopulateDataToShowRevision = await relatedPage?.populateDataToShowRevision(false); + const pagePopulateDataToShowRevision = await relatedPage?.populateDataToShowRevision(); return res.apiv3({ page: pagePopulateDataToShowRevision }); } From aa2a3437fdd2721a02b7bf2ca94d860f6fedda1f Mon Sep 17 00:00:00 2001 From: Shun Miyazawa Date: Wed, 11 Sep 2024 02:25:26 +0000 Subject: [PATCH 15/60] Add problems --- apps/app/src/stores/page.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/app/src/stores/page.tsx b/apps/app/src/stores/page.tsx index 22d57c5174a..906534bec74 100644 --- a/apps/app/src/stores/page.tsx +++ b/apps/app/src/stores/page.tsx @@ -63,6 +63,8 @@ export const useSWRxCurrentPage = (initialData?: IPagePopulatedToShowRevision|nu // Problem 1: https://github.com/weseek/growi/pull/7772/files#diff-4c1708c4f959974166c15435c6b35950ba01bbf35e7e4b8e99efeb125a8000a7 // Problem 2: https://redmine.weseek.co.jp/issues/141027 + // Problem 3: https://redmine.weseek.co.jp/issues/153618 + // Problem 4: https://redmine.weseek.co.jp/issues/153759 const shouldMutate = (() => { if (initialData === undefined) { return false; From 12f7061d7c6d61263b5448ca1449819fca493dd9 Mon Sep 17 00:00:00 2001 From: Shun Miyazawa Date: Wed, 11 Sep 2024 04:59:53 +0000 Subject: [PATCH 16/60] fix validation --- .../app/src/server/routes/apiv3/page/index.ts | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/apps/app/src/server/routes/apiv3/page/index.ts b/apps/app/src/server/routes/apiv3/page/index.ts index 75c305e9898..0a3fa3e190a 100644 --- a/apps/app/src/server/routes/apiv3/page/index.ts +++ b/apps/app/src/server/routes/apiv3/page/index.ts @@ -291,25 +291,25 @@ module.exports = (crowi) => { pageId, path, findAll, revisionId, shareLinkId, } = req.query; - if (pageId == null && path == null) { - return res.apiv3Err(new ErrorV3('Either parameter of path or pageId is required.', 'invalid-request')); + if (isSharedPage && path != null) { + return res.apiv3Err(new ErrorV3('Either parameter of (pageId or path) or (pageId and shareLinkId) is required.', 'invalid-request')); } - if (isSharedPage) { - const shareLink = await ShareLink.findOne({ _id: shareLinkId }).populate('relatedPage'); - if (shareLink == null) { - return res.apiv3Err(new ErrorV3('ShareLink is not found'), 404); - } - - const relatedPage = await Page.findOne({ _id: getIdForRef(shareLink.relatedPage) }); - const pagePopulateDataToShowRevision = await relatedPage?.populateDataToShowRevision(); - return res.apiv3({ page: pagePopulateDataToShowRevision }); + if (!isSharedPage && (pageId == null && path == null)) { + return res.apiv3Err(new ErrorV3('Either parameter of (pageId or path) or (pageId and shareLinkId) is required.', 'invalid-request')); } let page; let pages; try { - if (pageId != null) { // prioritized + if (isSharedPage) { + const shareLink = await ShareLink.findOne({ _id: shareLinkId }).populate('relatedPage'); + if (shareLink == null) { + throw new Error('ShareLink is not found'); + } + page = await Page.findOne({ _id: getIdForRef(shareLink.relatedPage) }); + } + else if (pageId != null) { // prioritized page = await Page.findByIdAndViewer(pageId, user); } else if (!findAll) { From e7a94cb9902c556852144935d5a80a9631dd0b2f Mon Sep 17 00:00:00 2001 From: Shun Miyazawa Date: Wed, 11 Sep 2024 07:16:45 +0000 Subject: [PATCH 17/60] fix validation --- apps/app/src/server/routes/apiv3/page/index.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/apps/app/src/server/routes/apiv3/page/index.ts b/apps/app/src/server/routes/apiv3/page/index.ts index 0a3fa3e190a..90668306e4e 100644 --- a/apps/app/src/server/routes/apiv3/page/index.ts +++ b/apps/app/src/server/routes/apiv3/page/index.ts @@ -291,12 +291,9 @@ module.exports = (crowi) => { pageId, path, findAll, revisionId, shareLinkId, } = req.query; - if (isSharedPage && path != null) { - return res.apiv3Err(new ErrorV3('Either parameter of (pageId or path) or (pageId and shareLinkId) is required.', 'invalid-request')); - } - - if (!isSharedPage && (pageId == null && path == null)) { - return res.apiv3Err(new ErrorV3('Either parameter of (pageId or path) or (pageId and shareLinkId) is required.', 'invalid-request')); + const isValid = (shareLinkId != null && pageId != null && path == null) || (shareLinkId == null && (pageId != null || path != null)); + if (!isValid) { + return res.apiv3Err(new Error('Either parameter of (pageId or path) or (pageId and shareLinkId) is required.'), 400); } let page; From d281014a67f14083da14ec0ebfbaadc7bc271903 Mon Sep 17 00:00:00 2001 From: shironegi39 Date: Wed, 11 Sep 2024 08:36:19 +0000 Subject: [PATCH 18/60] JP language support --- apps/app/public/static/locales/ja_JP/commons.json | 2 +- .../src/client/components/Admin/G2GDataTransfer.tsx | 10 +++++++++- apps/app/src/client/components/DataTransferForm.tsx | 9 ++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/apps/app/public/static/locales/ja_JP/commons.json b/apps/app/public/static/locales/ja_JP/commons.json index f85a86db4f9..1ef59c46ddc 100644 --- a/apps/app/public/static/locales/ja_JP/commons.json +++ b/apps/app/public/static/locales/ja_JP/commons.json @@ -159,6 +159,6 @@ "publish_transfer_key": "移行キーを発行する", "transfer_key_limit": "※ 移行キーの有効期限は発行から1時間となります。", "once_transfer_key_used": "※ 移行キーは一度移行に利用するとそれ以降はご利用いただけなくなります。", - "transfer_to_growi_cloud": "※ GROWI.cloud への移行を実施する場合はこちらをご確認ください。" + "transfer_to_growi_cloud": "※ 詳しくは こちら" } } diff --git a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx index a61650af4a8..1722ffaa594 100644 --- a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx +++ b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx @@ -8,6 +8,7 @@ import { useGenerateTransferKey } from '~/client/services/g2g-transfer'; import { apiv3Get, apiv3Post } from '~/client/util/apiv3-client'; import { toastError, toastSuccess } from '~/client/util/toastr'; import { G2G_PROGRESS_STATUS, type G2GProgress } from '~/interfaces/g2g-transfer'; +import { useGrowiCloudUri, useGrowiAppIdForGrowiCloud } from '~/stores-universal/context'; import { useAdminSocket } from '~/stores/socket-io'; import CustomCopyToClipBoard from '../Common/CustomCopyToClipBoard'; @@ -34,6 +35,8 @@ const G2GDataTransfer = (): JSX.Element => { mongo: G2G_PROGRESS_STATUS.PENDING, attachments: G2G_PROGRESS_STATUS.PENDING, }); + const { data: growiCloudUri } = useGrowiCloudUri(); + const { data: growiAppIdForGrowiCloud } = useGrowiAppIdForGrowiCloud(); // File upload settings // const [fileUploadType, setFileUploadType] = useState('aws'); @@ -123,6 +126,10 @@ const G2GDataTransfer = (): JSX.Element => { } }, [setTransferring, startTransferKey, selectedCollections, optionsMap]); + const growiDataTransferHelpPage = growiCloudUri != null && growiAppIdForGrowiCloud != null + ? 'https://growi.cloud/help/ja/admin-guide/management-cookbook/g2g-transfer.html' + : 'https://docs.growi.org/ja/admin-guide/management-cookbook/g2g-transfer.html'; + // File upload // const onChangeFileUploadTypeHandler = useCallback((e: ChangeEvent, type: string) => { // setFileUploadType(type); @@ -275,7 +282,8 @@ const G2GDataTransfer = (): JSX.Element => {

{t('commons:g2g_data_transfer.transfer_key_limit')}

{t('commons:g2g_data_transfer.once_transfer_key_used')}

-

{t('commons:g2g_data_transfer.transfer_to_growi_cloud')}

+ {/* eslint-disable-next-line react/no-danger */} +

); diff --git a/apps/app/src/client/components/DataTransferForm.tsx b/apps/app/src/client/components/DataTransferForm.tsx index a5f7c18ed26..8d2362499d8 100644 --- a/apps/app/src/client/components/DataTransferForm.tsx +++ b/apps/app/src/client/components/DataTransferForm.tsx @@ -3,12 +3,18 @@ import React from 'react'; import { useTranslation } from 'next-i18next'; import { useGenerateTransferKey } from '~/client/services/g2g-transfer'; +import { useGrowiCloudUri, useGrowiAppIdForGrowiCloud } from '~/stores-universal/context'; import CustomCopyToClipBoard from './Common/CustomCopyToClipBoard'; const DataTransferForm = (): JSX.Element => { const { t } = useTranslation('commons'); const { transferKey, generateTransferKey } = useGenerateTransferKey(); + const { data: growiCloudUri } = useGrowiCloudUri(); + const { data: growiAppIdForGrowiCloud } = useGrowiAppIdForGrowiCloud(); + const growiDataTransferHelpPage = growiCloudUri != null && growiAppIdForGrowiCloud != null + ? 'https://growi.cloud/help/ja/admin-guide/management-cookbook/g2g-transfer.html' + : 'https://docs.growi.org/ja/admin-guide/management-cookbook/g2g-transfer.html'; return (
@@ -33,7 +39,8 @@ const DataTransferForm = (): JSX.Element => {

{t('g2g_data_transfer.transfer_key_limit')}

{t('g2g_data_transfer.once_transfer_key_used')}

-

{t('g2g_data_transfer.transfer_to_growi_cloud')}

+ {/* eslint-disable-next-line react/no-danger */} +

); From 6a66a81851cdc4c5ba25b30fdb3b68745483f45f Mon Sep 17 00:00:00 2001 From: Shun Miyazawa Date: Wed, 11 Sep 2024 09:21:54 +0000 Subject: [PATCH 19/60] Add playwright test for data-transfer --- apps/app/playwright/40-admin/access-to-admin-page.spec.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apps/app/playwright/40-admin/access-to-admin-page.spec.ts b/apps/app/playwright/40-admin/access-to-admin-page.spec.ts index b7a05ce2ebb..854fd70d405 100644 --- a/apps/app/playwright/40-admin/access-to-admin-page.spec.ts +++ b/apps/app/playwright/40-admin/access-to-admin-page.spec.ts @@ -50,6 +50,12 @@ test('admin/export is successfully loaded', async({ page }) => { await expect(page.getByTestId('admin-export-archive-data')).toBeVisible(); }); +test('admin/data-transfer is successfully loaded', async({ page }) => { + await page.goto('/admin/data-transfer'); + + await expect(page.getByTestId('admin-export-archive-data')).toBeVisible(); +}); + test('admin/notification is successfully loaded', async({ page }) => { await page.goto('/admin/notification'); From 5670c27001548480341642356357ecde10139c09 Mon Sep 17 00:00:00 2001 From: shironegi39 Date: Wed, 11 Sep 2024 11:56:26 +0000 Subject: [PATCH 20/60] Change Variables --- apps/app/src/client/components/Admin/G2GDataTransfer.tsx | 4 +--- apps/app/src/client/components/DataTransferForm.tsx | 5 +---- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx index 1722ffaa594..8c06906782f 100644 --- a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx +++ b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx @@ -126,9 +126,7 @@ const G2GDataTransfer = (): JSX.Element => { } }, [setTransferring, startTransferKey, selectedCollections, optionsMap]); - const growiDataTransferHelpPage = growiCloudUri != null && growiAppIdForGrowiCloud != null - ? 'https://growi.cloud/help/ja/admin-guide/management-cookbook/g2g-transfer.html' - : 'https://docs.growi.org/ja/admin-guide/management-cookbook/g2g-transfer.html'; + const growiDataTransferHelpPage = growiCloudUri != null && growiAppIdForGrowiCloud != null ? 'growi.cloud' : 'docs.growi.org'; // File upload // const onChangeFileUploadTypeHandler = useCallback((e: ChangeEvent, type: string) => { diff --git a/apps/app/src/client/components/DataTransferForm.tsx b/apps/app/src/client/components/DataTransferForm.tsx index 8d2362499d8..8bbb96cb64a 100644 --- a/apps/app/src/client/components/DataTransferForm.tsx +++ b/apps/app/src/client/components/DataTransferForm.tsx @@ -12,10 +12,7 @@ const DataTransferForm = (): JSX.Element => { const { transferKey, generateTransferKey } = useGenerateTransferKey(); const { data: growiCloudUri } = useGrowiCloudUri(); const { data: growiAppIdForGrowiCloud } = useGrowiAppIdForGrowiCloud(); - const growiDataTransferHelpPage = growiCloudUri != null && growiAppIdForGrowiCloud != null - ? 'https://growi.cloud/help/ja/admin-guide/management-cookbook/g2g-transfer.html' - : 'https://docs.growi.org/ja/admin-guide/management-cookbook/g2g-transfer.html'; - + const growiDataTransferHelpPage = growiCloudUri != null && growiAppIdForGrowiCloud != null ? 'growi.cloud' : 'docs.growi.org'; return (

From e30356cded6d5ba369f60aa4568519594abb4977 Mon Sep 17 00:00:00 2001 From: shironegi39 Date: Wed, 11 Sep 2024 12:06:41 +0000 Subject: [PATCH 21/60] EN language support --- apps/app/public/static/locales/en_US/commons.json | 2 +- apps/app/src/client/components/Admin/G2GDataTransfer.tsx | 2 +- apps/app/src/client/components/DataTransferForm.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/app/public/static/locales/en_US/commons.json b/apps/app/public/static/locales/en_US/commons.json index eb6c0c50080..61b5f07335c 100644 --- a/apps/app/public/static/locales/en_US/commons.json +++ b/apps/app/public/static/locales/en_US/commons.json @@ -157,6 +157,6 @@ "publish_transfer_key": "Publish transfer key", "transfer_key_limit": "Transfer keys are valid for 1 hour after issuance.", "once_transfer_key_used": "Once the transfer key is used for transfer, it cannot be used for any other transfer.", - "transfer_to_growi_cloud": "If you wish to transfer to GROWI.cloud, please click here." + "transfer_to_growi_cloud": "For more details, please click here." } } diff --git a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx index 8c06906782f..8599300d5d9 100644 --- a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx +++ b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx @@ -126,7 +126,7 @@ const G2GDataTransfer = (): JSX.Element => { } }, [setTransferring, startTransferKey, selectedCollections, optionsMap]); - const growiDataTransferHelpPage = growiCloudUri != null && growiAppIdForGrowiCloud != null ? 'growi.cloud' : 'docs.growi.org'; + const growiDataTransferHelpPage = growiCloudUri != null && growiAppIdForGrowiCloud != null ? 'growi.cloud/help' : 'docs.growi.org'; // File upload // const onChangeFileUploadTypeHandler = useCallback((e: ChangeEvent, type: string) => { diff --git a/apps/app/src/client/components/DataTransferForm.tsx b/apps/app/src/client/components/DataTransferForm.tsx index 8bbb96cb64a..6fba545604c 100644 --- a/apps/app/src/client/components/DataTransferForm.tsx +++ b/apps/app/src/client/components/DataTransferForm.tsx @@ -12,7 +12,7 @@ const DataTransferForm = (): JSX.Element => { const { transferKey, generateTransferKey } = useGenerateTransferKey(); const { data: growiCloudUri } = useGrowiCloudUri(); const { data: growiAppIdForGrowiCloud } = useGrowiAppIdForGrowiCloud(); - const growiDataTransferHelpPage = growiCloudUri != null && growiAppIdForGrowiCloud != null ? 'growi.cloud' : 'docs.growi.org'; + const growiDataTransferHelpPage = growiCloudUri != null && growiAppIdForGrowiCloud != null ? 'growi.cloud/help' : 'docs.growi.org'; return (

From 7292c562b281ca25dae29afc87b84bf0b55d9f15 Mon Sep 17 00:00:00 2001 From: shironegi39 Date: Thu, 12 Sep 2024 05:34:09 +0000 Subject: [PATCH 22/60] Languages Support --- apps/app/public/static/locales/fr_FR/commons.json | 2 +- apps/app/public/static/locales/ja_JP/commons.json | 2 +- apps/app/public/static/locales/zh_CN/commons.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/app/public/static/locales/fr_FR/commons.json b/apps/app/public/static/locales/fr_FR/commons.json index 3771c037ee5..365feb89978 100644 --- a/apps/app/public/static/locales/fr_FR/commons.json +++ b/apps/app/public/static/locales/fr_FR/commons.json @@ -157,6 +157,6 @@ "publish_transfer_key": "Publier la clé de transfert", "transfer_key_limit": "Les clés de transfert sont valides durant une heure.", "once_transfer_key_used": "Les clés de transfert sont à usage unique.", - "transfer_to_growi_cloud": "Si vous souhaitez transférer depuis GROWI.cloud, cliquez ici." + "transfer_to_growi_cloud": "Pour plus de détails, veuillez cliquer ici." } } diff --git a/apps/app/public/static/locales/ja_JP/commons.json b/apps/app/public/static/locales/ja_JP/commons.json index 1ef59c46ddc..2c2a25c7521 100644 --- a/apps/app/public/static/locales/ja_JP/commons.json +++ b/apps/app/public/static/locales/ja_JP/commons.json @@ -159,6 +159,6 @@ "publish_transfer_key": "移行キーを発行する", "transfer_key_limit": "※ 移行キーの有効期限は発行から1時間となります。", "once_transfer_key_used": "※ 移行キーは一度移行に利用するとそれ以降はご利用いただけなくなります。", - "transfer_to_growi_cloud": "※ 詳しくは こちら" + "transfer_to_growi_cloud": "※ 詳しくは こちら" } } diff --git a/apps/app/public/static/locales/zh_CN/commons.json b/apps/app/public/static/locales/zh_CN/commons.json index 9108400f2d3..9711cf12c74 100644 --- a/apps/app/public/static/locales/zh_CN/commons.json +++ b/apps/app/public/static/locales/zh_CN/commons.json @@ -160,6 +160,6 @@ "publish_transfer_key": "发布迁移密钥", "transfer_key_limit": "迁移密钥在签发后一小时内有效。", "once_transfer_key_used": "一旦迁移密钥被用于迁移,它将不再可用于进一步的迁移。", - "transfer_to_growi_cloud": "如果您希望迁移到GROWI.cloud,请点击这里。" + "transfer_to_growi_cloud": "有关更多详情,请点击此处。" } } From f02b84c46f64c6529ca1fbf76fcd05cd2e1de3f3 Mon Sep 17 00:00:00 2001 From: shironegi39 Date: Thu, 12 Sep 2024 06:46:49 +0000 Subject: [PATCH 23/60] Variable Change --- apps/app/public/static/locales/en_US/commons.json | 2 +- apps/app/public/static/locales/fr_FR/commons.json | 2 +- apps/app/public/static/locales/ja_JP/commons.json | 2 +- apps/app/public/static/locales/zh_CN/commons.json | 2 +- apps/app/src/client/components/Admin/G2GDataTransfer.tsx | 4 ++-- apps/app/src/client/components/DataTransferForm.tsx | 4 ++-- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/app/public/static/locales/en_US/commons.json b/apps/app/public/static/locales/en_US/commons.json index 61b5f07335c..4aad37987e1 100644 --- a/apps/app/public/static/locales/en_US/commons.json +++ b/apps/app/public/static/locales/en_US/commons.json @@ -157,6 +157,6 @@ "publish_transfer_key": "Publish transfer key", "transfer_key_limit": "Transfer keys are valid for 1 hour after issuance.", "once_transfer_key_used": "Once the transfer key is used for transfer, it cannot be used for any other transfer.", - "transfer_to_growi_cloud": "For more details, please click here." + "transfer_to_growi_cloud": "For more details, please click here." } } diff --git a/apps/app/public/static/locales/fr_FR/commons.json b/apps/app/public/static/locales/fr_FR/commons.json index 365feb89978..7328b4e9725 100644 --- a/apps/app/public/static/locales/fr_FR/commons.json +++ b/apps/app/public/static/locales/fr_FR/commons.json @@ -157,6 +157,6 @@ "publish_transfer_key": "Publier la clé de transfert", "transfer_key_limit": "Les clés de transfert sont valides durant une heure.", "once_transfer_key_used": "Les clés de transfert sont à usage unique.", - "transfer_to_growi_cloud": "Pour plus de détails, veuillez cliquer ici." + "transfer_to_growi_cloud": "Pour plus de détails, veuillez cliquer ici." } } diff --git a/apps/app/public/static/locales/ja_JP/commons.json b/apps/app/public/static/locales/ja_JP/commons.json index 2c2a25c7521..6077adc75bc 100644 --- a/apps/app/public/static/locales/ja_JP/commons.json +++ b/apps/app/public/static/locales/ja_JP/commons.json @@ -159,6 +159,6 @@ "publish_transfer_key": "移行キーを発行する", "transfer_key_limit": "※ 移行キーの有効期限は発行から1時間となります。", "once_transfer_key_used": "※ 移行キーは一度移行に利用するとそれ以降はご利用いただけなくなります。", - "transfer_to_growi_cloud": "※ 詳しくは こちら" + "transfer_to_growi_cloud": "※ 詳しくは こちら" } } diff --git a/apps/app/public/static/locales/zh_CN/commons.json b/apps/app/public/static/locales/zh_CN/commons.json index 9711cf12c74..5fb67e84a61 100644 --- a/apps/app/public/static/locales/zh_CN/commons.json +++ b/apps/app/public/static/locales/zh_CN/commons.json @@ -160,6 +160,6 @@ "publish_transfer_key": "发布迁移密钥", "transfer_key_limit": "迁移密钥在签发后一小时内有效。", "once_transfer_key_used": "一旦迁移密钥被用于迁移,它将不再可用于进一步的迁移。", - "transfer_to_growi_cloud": "有关更多详情,请点击此处。" + "transfer_to_growi_cloud": "有关更多详情,请点击此处。" } } diff --git a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx index 8599300d5d9..59f6c0a6d23 100644 --- a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx +++ b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx @@ -126,7 +126,7 @@ const G2GDataTransfer = (): JSX.Element => { } }, [setTransferring, startTransferKey, selectedCollections, optionsMap]); - const growiDataTransferHelpPage = growiCloudUri != null && growiAppIdForGrowiCloud != null ? 'growi.cloud/help' : 'docs.growi.org'; + const growiHelpUrl = growiCloudUri != null && growiAppIdForGrowiCloud != null ? 'growi.cloud/help' : 'docs.growi.org'; // File upload // const onChangeFileUploadTypeHandler = useCallback((e: ChangeEvent, type: string) => { @@ -281,7 +281,7 @@ const G2GDataTransfer = (): JSX.Element => {

{t('commons:g2g_data_transfer.transfer_key_limit')}

{t('commons:g2g_data_transfer.once_transfer_key_used')}

{/* eslint-disable-next-line react/no-danger */} -

+

); diff --git a/apps/app/src/client/components/DataTransferForm.tsx b/apps/app/src/client/components/DataTransferForm.tsx index 6fba545604c..5aa84e8a831 100644 --- a/apps/app/src/client/components/DataTransferForm.tsx +++ b/apps/app/src/client/components/DataTransferForm.tsx @@ -12,7 +12,7 @@ const DataTransferForm = (): JSX.Element => { const { transferKey, generateTransferKey } = useGenerateTransferKey(); const { data: growiCloudUri } = useGrowiCloudUri(); const { data: growiAppIdForGrowiCloud } = useGrowiAppIdForGrowiCloud(); - const growiDataTransferHelpPage = growiCloudUri != null && growiAppIdForGrowiCloud != null ? 'growi.cloud/help' : 'docs.growi.org'; + const growiHelpUrl = growiCloudUri != null && growiAppIdForGrowiCloud != null ? 'growi.cloud/help' : 'docs.growi.org'; return (

@@ -37,7 +37,7 @@ const DataTransferForm = (): JSX.Element => {

{t('g2g_data_transfer.transfer_key_limit')}

{t('g2g_data_transfer.once_transfer_key_used')}

{/* eslint-disable-next-line react/no-danger */} -

+

); From 37c6ae602afd8d276ce93e1d6ba376d6747e7c5a Mon Sep 17 00:00:00 2001 From: shironegi39 Date: Thu, 12 Sep 2024 08:07:26 +0000 Subject: [PATCH 24/60] Change method to SWRHook --- .../client/components/Admin/G2GDataTransfer.tsx | 6 ++---- .../src/client/components/DataTransferForm.tsx | 7 +++---- apps/app/src/stores-universal/context.tsx | 15 +++++++++++++++ 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx index 59f6c0a6d23..bc81750c711 100644 --- a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx +++ b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx @@ -8,7 +8,7 @@ import { useGenerateTransferKey } from '~/client/services/g2g-transfer'; import { apiv3Get, apiv3Post } from '~/client/util/apiv3-client'; import { toastError, toastSuccess } from '~/client/util/toastr'; import { G2G_PROGRESS_STATUS, type G2GProgress } from '~/interfaces/g2g-transfer'; -import { useGrowiCloudUri, useGrowiAppIdForGrowiCloud } from '~/stores-universal/context'; +import { useIsGrowiHelpUrl } from '~/stores-universal/context'; import { useAdminSocket } from '~/stores/socket-io'; import CustomCopyToClipBoard from '../Common/CustomCopyToClipBoard'; @@ -35,8 +35,6 @@ const G2GDataTransfer = (): JSX.Element => { mongo: G2G_PROGRESS_STATUS.PENDING, attachments: G2G_PROGRESS_STATUS.PENDING, }); - const { data: growiCloudUri } = useGrowiCloudUri(); - const { data: growiAppIdForGrowiCloud } = useGrowiAppIdForGrowiCloud(); // File upload settings // const [fileUploadType, setFileUploadType] = useState('aws'); @@ -126,7 +124,7 @@ const G2GDataTransfer = (): JSX.Element => { } }, [setTransferring, startTransferKey, selectedCollections, optionsMap]); - const growiHelpUrl = growiCloudUri != null && growiAppIdForGrowiCloud != null ? 'growi.cloud/help' : 'docs.growi.org'; + const { data: growiHelpUrl } = useIsGrowiHelpUrl(); // File upload // const onChangeFileUploadTypeHandler = useCallback((e: ChangeEvent, type: string) => { diff --git a/apps/app/src/client/components/DataTransferForm.tsx b/apps/app/src/client/components/DataTransferForm.tsx index 5aa84e8a831..ea2f72f5e40 100644 --- a/apps/app/src/client/components/DataTransferForm.tsx +++ b/apps/app/src/client/components/DataTransferForm.tsx @@ -3,16 +3,15 @@ import React from 'react'; import { useTranslation } from 'next-i18next'; import { useGenerateTransferKey } from '~/client/services/g2g-transfer'; -import { useGrowiCloudUri, useGrowiAppIdForGrowiCloud } from '~/stores-universal/context'; +import { useIsGrowiHelpUrl } from '~/stores-universal/context'; import CustomCopyToClipBoard from './Common/CustomCopyToClipBoard'; const DataTransferForm = (): JSX.Element => { const { t } = useTranslation('commons'); const { transferKey, generateTransferKey } = useGenerateTransferKey(); - const { data: growiCloudUri } = useGrowiCloudUri(); - const { data: growiAppIdForGrowiCloud } = useGrowiAppIdForGrowiCloud(); - const growiHelpUrl = growiCloudUri != null && growiAppIdForGrowiCloud != null ? 'growi.cloud/help' : 'docs.growi.org'; + const { data: growiHelpUrl } = useIsGrowiHelpUrl(); + return (

diff --git a/apps/app/src/stores-universal/context.tsx b/apps/app/src/stores-universal/context.tsx index c020cb75720..d1064013895 100644 --- a/apps/app/src/stores-universal/context.tsx +++ b/apps/app/src/stores-universal/context.tsx @@ -285,3 +285,18 @@ export const useAcceptedUploadFileType = (): SWRResponse => { + const { data: growiCloudUri } = useGrowiCloudUri(); + const { data: growiAppIdForGrowiCloud } = useGrowiAppIdForGrowiCloud(); + + return useSWRImmutable( + [growiCloudUri, growiAppIdForGrowiCloud], + ([growiCloudUri, growiAppIdForGrowiCloud]) => { + if (growiCloudUri != null && growiAppIdForGrowiCloud != null) { + return 'growi.cloud/help'; + } + return 'docs.growi.org'; + }, + ); +}; From 41ff64ea4e352f86c169e5aef5840969e8c038f8 Mon Sep 17 00:00:00 2001 From: shironegi39 Date: Thu, 12 Sep 2024 08:18:35 +0000 Subject: [PATCH 25/60] Change custom hook name --- apps/app/src/client/components/Admin/G2GDataTransfer.tsx | 4 ++-- apps/app/src/client/components/DataTransferForm.tsx | 4 ++-- apps/app/src/stores-universal/context.tsx | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx index bc81750c711..82ffaf7c25a 100644 --- a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx +++ b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx @@ -8,7 +8,7 @@ import { useGenerateTransferKey } from '~/client/services/g2g-transfer'; import { apiv3Get, apiv3Post } from '~/client/util/apiv3-client'; import { toastError, toastSuccess } from '~/client/util/toastr'; import { G2G_PROGRESS_STATUS, type G2GProgress } from '~/interfaces/g2g-transfer'; -import { useIsGrowiHelpUrl } from '~/stores-universal/context'; +import { useGrowiHelpUrl } from '~/stores-universal/context'; import { useAdminSocket } from '~/stores/socket-io'; import CustomCopyToClipBoard from '../Common/CustomCopyToClipBoard'; @@ -124,7 +124,7 @@ const G2GDataTransfer = (): JSX.Element => { } }, [setTransferring, startTransferKey, selectedCollections, optionsMap]); - const { data: growiHelpUrl } = useIsGrowiHelpUrl(); + const { data: growiHelpUrl } = useGrowiHelpUrl(); // File upload // const onChangeFileUploadTypeHandler = useCallback((e: ChangeEvent, type: string) => { diff --git a/apps/app/src/client/components/DataTransferForm.tsx b/apps/app/src/client/components/DataTransferForm.tsx index ea2f72f5e40..74d598ada35 100644 --- a/apps/app/src/client/components/DataTransferForm.tsx +++ b/apps/app/src/client/components/DataTransferForm.tsx @@ -3,14 +3,14 @@ import React from 'react'; import { useTranslation } from 'next-i18next'; import { useGenerateTransferKey } from '~/client/services/g2g-transfer'; -import { useIsGrowiHelpUrl } from '~/stores-universal/context'; +import { useGrowiHelpUrl } from '~/stores-universal/context'; import CustomCopyToClipBoard from './Common/CustomCopyToClipBoard'; const DataTransferForm = (): JSX.Element => { const { t } = useTranslation('commons'); const { transferKey, generateTransferKey } = useGenerateTransferKey(); - const { data: growiHelpUrl } = useIsGrowiHelpUrl(); + const { data: growiHelpUrl } = useGrowiHelpUrl(); return (

diff --git a/apps/app/src/stores-universal/context.tsx b/apps/app/src/stores-universal/context.tsx index d1064013895..78c5a30b099 100644 --- a/apps/app/src/stores-universal/context.tsx +++ b/apps/app/src/stores-universal/context.tsx @@ -286,7 +286,7 @@ export const useAcceptedUploadFileType = (): SWRResponse => { +export const useGrowiHelpUrl = (): SWRResponse<'growi.cloud/help' | 'docs.growi.org', Error> => { const { data: growiCloudUri } = useGrowiCloudUri(); const { data: growiAppIdForGrowiCloud } = useGrowiAppIdForGrowiCloud(); From 7795fd538c7fc2cbaffab8d44e02842ff5a68a4a Mon Sep 17 00:00:00 2001 From: shironegi39 Date: Thu, 12 Sep 2024 08:29:29 +0000 Subject: [PATCH 26/60] Variable Change --- apps/app/public/static/locales/en_US/commons.json | 2 +- apps/app/public/static/locales/fr_FR/commons.json | 2 +- apps/app/public/static/locales/ja_JP/commons.json | 2 +- apps/app/public/static/locales/zh_CN/commons.json | 2 +- apps/app/src/client/components/Admin/G2GDataTransfer.tsx | 4 ++-- apps/app/src/client/components/DataTransferForm.tsx | 4 ++-- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/app/public/static/locales/en_US/commons.json b/apps/app/public/static/locales/en_US/commons.json index 4aad37987e1..3e9e92d8e9c 100644 --- a/apps/app/public/static/locales/en_US/commons.json +++ b/apps/app/public/static/locales/en_US/commons.json @@ -157,6 +157,6 @@ "publish_transfer_key": "Publish transfer key", "transfer_key_limit": "Transfer keys are valid for 1 hour after issuance.", "once_transfer_key_used": "Once the transfer key is used for transfer, it cannot be used for any other transfer.", - "transfer_to_growi_cloud": "For more details, please click here." + "transfer_to_growi_cloud": "For more details, please click here." } } diff --git a/apps/app/public/static/locales/fr_FR/commons.json b/apps/app/public/static/locales/fr_FR/commons.json index 7328b4e9725..205f1532148 100644 --- a/apps/app/public/static/locales/fr_FR/commons.json +++ b/apps/app/public/static/locales/fr_FR/commons.json @@ -157,6 +157,6 @@ "publish_transfer_key": "Publier la clé de transfert", "transfer_key_limit": "Les clés de transfert sont valides durant une heure.", "once_transfer_key_used": "Les clés de transfert sont à usage unique.", - "transfer_to_growi_cloud": "Pour plus de détails, veuillez cliquer ici." + "transfer_to_growi_cloud": "Pour plus de détails, veuillez cliquer ici." } } diff --git a/apps/app/public/static/locales/ja_JP/commons.json b/apps/app/public/static/locales/ja_JP/commons.json index 6077adc75bc..cd201e5ec03 100644 --- a/apps/app/public/static/locales/ja_JP/commons.json +++ b/apps/app/public/static/locales/ja_JP/commons.json @@ -159,6 +159,6 @@ "publish_transfer_key": "移行キーを発行する", "transfer_key_limit": "※ 移行キーの有効期限は発行から1時間となります。", "once_transfer_key_used": "※ 移行キーは一度移行に利用するとそれ以降はご利用いただけなくなります。", - "transfer_to_growi_cloud": "※ 詳しくは こちら" + "transfer_to_growi_cloud": "※ 詳しくは こちら" } } diff --git a/apps/app/public/static/locales/zh_CN/commons.json b/apps/app/public/static/locales/zh_CN/commons.json index 5fb67e84a61..677f7c63bca 100644 --- a/apps/app/public/static/locales/zh_CN/commons.json +++ b/apps/app/public/static/locales/zh_CN/commons.json @@ -160,6 +160,6 @@ "publish_transfer_key": "发布迁移密钥", "transfer_key_limit": "迁移密钥在签发后一小时内有效。", "once_transfer_key_used": "一旦迁移密钥被用于迁移,它将不再可用于进一步的迁移。", - "transfer_to_growi_cloud": "有关更多详情,请点击此处。" + "transfer_to_growi_cloud": "有关更多详情,请点击此处。" } } diff --git a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx index 82ffaf7c25a..48ab8d88c5e 100644 --- a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx +++ b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx @@ -124,7 +124,7 @@ const G2GDataTransfer = (): JSX.Element => { } }, [setTransferring, startTransferKey, selectedCollections, optionsMap]); - const { data: growiHelpUrl } = useGrowiHelpUrl(); + const { data: growiHelpDomain } = useGrowiHelpUrl(); // File upload // const onChangeFileUploadTypeHandler = useCallback((e: ChangeEvent, type: string) => { @@ -279,7 +279,7 @@ const G2GDataTransfer = (): JSX.Element => {

{t('commons:g2g_data_transfer.transfer_key_limit')}

{t('commons:g2g_data_transfer.once_transfer_key_used')}

{/* eslint-disable-next-line react/no-danger */} -

+

); diff --git a/apps/app/src/client/components/DataTransferForm.tsx b/apps/app/src/client/components/DataTransferForm.tsx index 74d598ada35..f5c576a21b7 100644 --- a/apps/app/src/client/components/DataTransferForm.tsx +++ b/apps/app/src/client/components/DataTransferForm.tsx @@ -10,7 +10,7 @@ import CustomCopyToClipBoard from './Common/CustomCopyToClipBoard'; const DataTransferForm = (): JSX.Element => { const { t } = useTranslation('commons'); const { transferKey, generateTransferKey } = useGenerateTransferKey(); - const { data: growiHelpUrl } = useGrowiHelpUrl(); + const { data: growiHelpDomain } = useGrowiHelpUrl(); return (
@@ -36,7 +36,7 @@ const DataTransferForm = (): JSX.Element => {

{t('g2g_data_transfer.transfer_key_limit')}

{t('g2g_data_transfer.once_transfer_key_used')}

{/* eslint-disable-next-line react/no-danger */} -

+

); From ada4bba4120f4694adb13e37c0781d9187a9a630 Mon Sep 17 00:00:00 2001 From: shironegi39 Date: Thu, 12 Sep 2024 08:31:03 +0000 Subject: [PATCH 27/60] Change custom hook name --- apps/app/src/client/components/Admin/G2GDataTransfer.tsx | 4 ++-- apps/app/src/client/components/DataTransferForm.tsx | 4 ++-- apps/app/src/stores-universal/context.tsx | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx index 48ab8d88c5e..515d1b6d0bc 100644 --- a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx +++ b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx @@ -8,7 +8,7 @@ import { useGenerateTransferKey } from '~/client/services/g2g-transfer'; import { apiv3Get, apiv3Post } from '~/client/util/apiv3-client'; import { toastError, toastSuccess } from '~/client/util/toastr'; import { G2G_PROGRESS_STATUS, type G2GProgress } from '~/interfaces/g2g-transfer'; -import { useGrowiHelpUrl } from '~/stores-universal/context'; +import { useGrowiHelpDomain } from '~/stores-universal/context'; import { useAdminSocket } from '~/stores/socket-io'; import CustomCopyToClipBoard from '../Common/CustomCopyToClipBoard'; @@ -124,7 +124,7 @@ const G2GDataTransfer = (): JSX.Element => { } }, [setTransferring, startTransferKey, selectedCollections, optionsMap]); - const { data: growiHelpDomain } = useGrowiHelpUrl(); + const { data: growiHelpDomain } = useGrowiHelpDomain(); // File upload // const onChangeFileUploadTypeHandler = useCallback((e: ChangeEvent, type: string) => { diff --git a/apps/app/src/client/components/DataTransferForm.tsx b/apps/app/src/client/components/DataTransferForm.tsx index f5c576a21b7..e52a0609f98 100644 --- a/apps/app/src/client/components/DataTransferForm.tsx +++ b/apps/app/src/client/components/DataTransferForm.tsx @@ -3,14 +3,14 @@ import React from 'react'; import { useTranslation } from 'next-i18next'; import { useGenerateTransferKey } from '~/client/services/g2g-transfer'; -import { useGrowiHelpUrl } from '~/stores-universal/context'; +import { useGrowiHelpDomain } from '~/stores-universal/context'; import CustomCopyToClipBoard from './Common/CustomCopyToClipBoard'; const DataTransferForm = (): JSX.Element => { const { t } = useTranslation('commons'); const { transferKey, generateTransferKey } = useGenerateTransferKey(); - const { data: growiHelpDomain } = useGrowiHelpUrl(); + const { data: growiHelpDomain } = useGrowiHelpDomain(); return (
diff --git a/apps/app/src/stores-universal/context.tsx b/apps/app/src/stores-universal/context.tsx index 78c5a30b099..c0c3046bede 100644 --- a/apps/app/src/stores-universal/context.tsx +++ b/apps/app/src/stores-universal/context.tsx @@ -286,7 +286,7 @@ export const useAcceptedUploadFileType = (): SWRResponse => { +export const useGrowiHelpDomain = (): SWRResponse<'growi.cloud/help' | 'docs.growi.org', Error> => { const { data: growiCloudUri } = useGrowiCloudUri(); const { data: growiAppIdForGrowiCloud } = useGrowiAppIdForGrowiCloud(); From 48ce1f6fa625c3caab45fc12cb6f90b06c4c48ab Mon Sep 17 00:00:00 2001 From: Shun Miyazawa Date: Thu, 12 Sep 2024 09:24:08 +0000 Subject: [PATCH 28/60] rm unnecessary populate --- apps/app/src/server/routes/apiv3/page/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/app/src/server/routes/apiv3/page/index.ts b/apps/app/src/server/routes/apiv3/page/index.ts index 90668306e4e..c0f4b363e2a 100644 --- a/apps/app/src/server/routes/apiv3/page/index.ts +++ b/apps/app/src/server/routes/apiv3/page/index.ts @@ -300,7 +300,7 @@ module.exports = (crowi) => { let pages; try { if (isSharedPage) { - const shareLink = await ShareLink.findOne({ _id: shareLinkId }).populate('relatedPage'); + const shareLink = await ShareLink.findOne({ _id: shareLinkId }); if (shareLink == null) { throw new Error('ShareLink is not found'); } From 5511beb789e5152090f5563bcacee3366acea281 Mon Sep 17 00:00:00 2001 From: Shun Miyazawa Date: Thu, 12 Sep 2024 10:16:49 +0000 Subject: [PATCH 29/60] Revert "Merge pull request #9098 from weseek/imprv/144244-153642-corrected-wording-on-management-screeen" This reverts commit 26b62047636ec4041005b8445fb4fd3a514db21d, reversing changes made to 42a65bde4cd76dfbbb7aba97df180dcff1241c01. --- apps/app/public/static/locales/en_US/commons.json | 2 +- apps/app/public/static/locales/fr_FR/commons.json | 2 +- apps/app/public/static/locales/ja_JP/commons.json | 2 +- apps/app/public/static/locales/zh_CN/commons.json | 2 +- .../client/components/Admin/G2GDataTransfer.tsx | 6 +----- .../src/client/components/DataTransferForm.tsx | 5 +---- apps/app/src/stores-universal/context.tsx | 15 --------------- 7 files changed, 6 insertions(+), 28 deletions(-) diff --git a/apps/app/public/static/locales/en_US/commons.json b/apps/app/public/static/locales/en_US/commons.json index 3e9e92d8e9c..eb6c0c50080 100644 --- a/apps/app/public/static/locales/en_US/commons.json +++ b/apps/app/public/static/locales/en_US/commons.json @@ -157,6 +157,6 @@ "publish_transfer_key": "Publish transfer key", "transfer_key_limit": "Transfer keys are valid for 1 hour after issuance.", "once_transfer_key_used": "Once the transfer key is used for transfer, it cannot be used for any other transfer.", - "transfer_to_growi_cloud": "For more details, please click here." + "transfer_to_growi_cloud": "If you wish to transfer to GROWI.cloud, please click here." } } diff --git a/apps/app/public/static/locales/fr_FR/commons.json b/apps/app/public/static/locales/fr_FR/commons.json index 205f1532148..3771c037ee5 100644 --- a/apps/app/public/static/locales/fr_FR/commons.json +++ b/apps/app/public/static/locales/fr_FR/commons.json @@ -157,6 +157,6 @@ "publish_transfer_key": "Publier la clé de transfert", "transfer_key_limit": "Les clés de transfert sont valides durant une heure.", "once_transfer_key_used": "Les clés de transfert sont à usage unique.", - "transfer_to_growi_cloud": "Pour plus de détails, veuillez cliquer ici." + "transfer_to_growi_cloud": "Si vous souhaitez transférer depuis GROWI.cloud, cliquez ici." } } diff --git a/apps/app/public/static/locales/ja_JP/commons.json b/apps/app/public/static/locales/ja_JP/commons.json index cd201e5ec03..f85a86db4f9 100644 --- a/apps/app/public/static/locales/ja_JP/commons.json +++ b/apps/app/public/static/locales/ja_JP/commons.json @@ -159,6 +159,6 @@ "publish_transfer_key": "移行キーを発行する", "transfer_key_limit": "※ 移行キーの有効期限は発行から1時間となります。", "once_transfer_key_used": "※ 移行キーは一度移行に利用するとそれ以降はご利用いただけなくなります。", - "transfer_to_growi_cloud": "※ 詳しくは こちら" + "transfer_to_growi_cloud": "※ GROWI.cloud への移行を実施する場合はこちらをご確認ください。" } } diff --git a/apps/app/public/static/locales/zh_CN/commons.json b/apps/app/public/static/locales/zh_CN/commons.json index 677f7c63bca..9108400f2d3 100644 --- a/apps/app/public/static/locales/zh_CN/commons.json +++ b/apps/app/public/static/locales/zh_CN/commons.json @@ -160,6 +160,6 @@ "publish_transfer_key": "发布迁移密钥", "transfer_key_limit": "迁移密钥在签发后一小时内有效。", "once_transfer_key_used": "一旦迁移密钥被用于迁移,它将不再可用于进一步的迁移。", - "transfer_to_growi_cloud": "有关更多详情,请点击此处。" + "transfer_to_growi_cloud": "如果您希望迁移到GROWI.cloud,请点击这里。" } } diff --git a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx index 515d1b6d0bc..a61650af4a8 100644 --- a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx +++ b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx @@ -8,7 +8,6 @@ import { useGenerateTransferKey } from '~/client/services/g2g-transfer'; import { apiv3Get, apiv3Post } from '~/client/util/apiv3-client'; import { toastError, toastSuccess } from '~/client/util/toastr'; import { G2G_PROGRESS_STATUS, type G2GProgress } from '~/interfaces/g2g-transfer'; -import { useGrowiHelpDomain } from '~/stores-universal/context'; import { useAdminSocket } from '~/stores/socket-io'; import CustomCopyToClipBoard from '../Common/CustomCopyToClipBoard'; @@ -124,8 +123,6 @@ const G2GDataTransfer = (): JSX.Element => { } }, [setTransferring, startTransferKey, selectedCollections, optionsMap]); - const { data: growiHelpDomain } = useGrowiHelpDomain(); - // File upload // const onChangeFileUploadTypeHandler = useCallback((e: ChangeEvent, type: string) => { // setFileUploadType(type); @@ -278,8 +275,7 @@ const G2GDataTransfer = (): JSX.Element => {

{t('commons:g2g_data_transfer.transfer_key_limit')}

{t('commons:g2g_data_transfer.once_transfer_key_used')}

- {/* eslint-disable-next-line react/no-danger */} -

+

{t('commons:g2g_data_transfer.transfer_to_growi_cloud')}

); diff --git a/apps/app/src/client/components/DataTransferForm.tsx b/apps/app/src/client/components/DataTransferForm.tsx index e52a0609f98..a5f7c18ed26 100644 --- a/apps/app/src/client/components/DataTransferForm.tsx +++ b/apps/app/src/client/components/DataTransferForm.tsx @@ -3,14 +3,12 @@ import React from 'react'; import { useTranslation } from 'next-i18next'; import { useGenerateTransferKey } from '~/client/services/g2g-transfer'; -import { useGrowiHelpDomain } from '~/stores-universal/context'; import CustomCopyToClipBoard from './Common/CustomCopyToClipBoard'; const DataTransferForm = (): JSX.Element => { const { t } = useTranslation('commons'); const { transferKey, generateTransferKey } = useGenerateTransferKey(); - const { data: growiHelpDomain } = useGrowiHelpDomain(); return (
@@ -35,8 +33,7 @@ const DataTransferForm = (): JSX.Element => {

{t('g2g_data_transfer.transfer_key_limit')}

{t('g2g_data_transfer.once_transfer_key_used')}

- {/* eslint-disable-next-line react/no-danger */} -

+

{t('g2g_data_transfer.transfer_to_growi_cloud')}

); diff --git a/apps/app/src/stores-universal/context.tsx b/apps/app/src/stores-universal/context.tsx index c0c3046bede..c020cb75720 100644 --- a/apps/app/src/stores-universal/context.tsx +++ b/apps/app/src/stores-universal/context.tsx @@ -285,18 +285,3 @@ export const useAcceptedUploadFileType = (): SWRResponse => { - const { data: growiCloudUri } = useGrowiCloudUri(); - const { data: growiAppIdForGrowiCloud } = useGrowiAppIdForGrowiCloud(); - - return useSWRImmutable( - [growiCloudUri, growiAppIdForGrowiCloud], - ([growiCloudUri, growiAppIdForGrowiCloud]) => { - if (growiCloudUri != null && growiAppIdForGrowiCloud != null) { - return 'growi.cloud/help'; - } - return 'docs.growi.org'; - }, - ); -}; From 12ae2d30fe8d982429042844df06ac889284fa64 Mon Sep 17 00:00:00 2001 From: Yuki Takei Date: Thu, 12 Sep 2024 11:47:38 +0000 Subject: [PATCH 30/60] update ci-app-prod.yml --- .github/workflows/ci-app-prod.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci-app-prod.yml b/.github/workflows/ci-app-prod.yml index d3f67baffe4..bffdef15e73 100644 --- a/.github/workflows/ci-app-prod.yml +++ b/.github/workflows/ci-app-prod.yml @@ -23,6 +23,7 @@ on: - master - dev/7.*.x - dev/6.*.x + - release/* types: [opened, reopened, synchronize] paths: - .github/mergify.yml From 0db10a321783110448eabc5c8749586ab10b1800 Mon Sep 17 00:00:00 2001 From: yuki-takei Date: Thu, 12 Sep 2024 12:20:22 +0000 Subject: [PATCH 31/60] Release v7.0.19 --- CHANGELOG.md | 15 ++++++++++++++- apps/app/docker/README.md | 2 +- apps/app/package.json | 2 +- package.json | 2 +- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b644a4de04..2e0b924e190 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,22 @@ # Changelog -## [Unreleased](https://github.com/weseek/growi/compare/v7.0.18...HEAD) +## [Unreleased](https://github.com/weseek/growi/compare/v7.0.19...HEAD) *Please do not manually update this file. We've automated the process.* +## [v7.0.19](https://github.com/weseek/growi/compare/v7.0.18...v7.0.19) - 2024-09-12 + +### 🚀 Improvement + +* imprv: Corrected wording on admin page (/admin/data-transfer) (#9098) @shironegi39 + +### 🐛 Bug Fixes + +* fix: Shared page is not displayed when skipping SSR (#9089) @miya +* fix: The grant of pages can be changed via api even if restricted (#9087) @WNomunomu +* fix: Updated content is not reflected on the View screen even after refreshing the page (#9086) @miya +* fix: Removing comment doesn't work (#9083) @yuki-takei + ## [v7.0.18](https://github.com/weseek/growi/compare/v7.0.17...v7.0.18) - 2024-09-09 ### 🚀 Improvement diff --git a/apps/app/docker/README.md b/apps/app/docker/README.md index 483c340aa04..b54a51e6f40 100644 --- a/apps/app/docker/README.md +++ b/apps/app/docker/README.md @@ -10,7 +10,7 @@ GROWI Official docker image Supported tags and respective Dockerfile links ------------------------------------------------ -* [`7.0.18`, `7.0`, `7`, `latest` (Dockerfile)](https://github.com/weseek/growi/blob/v7.0.18/apps/app/docker/Dockerfile) +* [`7.0.19`, `7.0`, `7`, `latest` (Dockerfile)](https://github.com/weseek/growi/blob/v7.0.19/apps/app/docker/Dockerfile) * [`6.3.2`, `6.3`, `6` (Dockerfile)](https://github.com/weseek/growi/blob/v6.3.2/apps/app/docker/Dockerfile) * [`6.2.4`, `6.2` (Dockerfile)](https://github.com/weseek/growi/blob/v6.2.4/apps/app/docker/Dockerfile) * [`6.1.15`, `6.1` (Dockerfile)](https://github.com/weseek/growi/blob/v6.1.15/apps/app/docker/Dockerfile) diff --git a/apps/app/package.json b/apps/app/package.json index 4357251a65d..2a5f8d99a12 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -1,6 +1,6 @@ { "name": "@growi/app", - "version": "7.0.19-RC.0", + "version": "7.0.19", "license": "MIT", "private": "true", "scripts": { diff --git a/package.json b/package.json index f4fbcc457d9..b6ad312d4ce 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "growi", - "version": "7.0.19-RC.0", + "version": "7.0.19", "description": "Team collaboration software using markdown", "license": "MIT", "private": "true", From 73c114cd0b446a07cb9a4b92df453c14fc08f46a Mon Sep 17 00:00:00 2001 From: GitHub Action <> Date: Thu, 12 Sep 2024 12:31:31 +0000 Subject: [PATCH 32/60] Bump version --- apps/app/package.json | 2 +- apps/slackbot-proxy/package.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/app/package.json b/apps/app/package.json index 2a5f8d99a12..5bd0e50b316 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -1,6 +1,6 @@ { "name": "@growi/app", - "version": "7.0.19", + "version": "7.0.20-RC.0", "license": "MIT", "private": "true", "scripts": { diff --git a/apps/slackbot-proxy/package.json b/apps/slackbot-proxy/package.json index e1ac72f4d46..adf6b3c394d 100644 --- a/apps/slackbot-proxy/package.json +++ b/apps/slackbot-proxy/package.json @@ -1,6 +1,6 @@ { "name": "@growi/slackbot-proxy", - "version": "7.0.19-slackbot-proxy.0", + "version": "7.0.20-slackbot-proxy.0", "license": "MIT", "private": "true", "scripts": { diff --git a/package.json b/package.json index b6ad312d4ce..4743e817217 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "growi", - "version": "7.0.19", + "version": "7.0.21-RC.0", "description": "Team collaboration software using markdown", "license": "MIT", "private": "true", From c8a79117da5c3410df77703ae81da7beb85079e9 Mon Sep 17 00:00:00 2001 From: Yuki Takei Date: Thu, 12 Sep 2024 12:33:18 +0000 Subject: [PATCH 33/60] update check-title condition --- .github/workflows/auto-labeling.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/auto-labeling.yml b/.github/workflows/auto-labeling.yml index f5951e0a4fe..c2871490491 100644 --- a/.github/workflows/auto-labeling.yml +++ b/.github/workflows/auto-labeling.yml @@ -37,8 +37,7 @@ jobs: if: | (!contains( github.event.pull_request.labels.*.name, 'flag/exclude-from-changelog' ) && !startsWith( github.head_ref, 'changeset-release/' ) - && !startsWith( github.head_ref, 'mergify/merge-queue/' ) - && !startsWith( github.head_ref, 'dependabot/' )) + && !startsWith( github.head_ref, 'mergify/merge-queue/' )) steps: - uses: amannn/action-semantic-pull-request@v5 From a284ade906e4bd93f75803dbd7e8c3f4e01e2c87 Mon Sep 17 00:00:00 2001 From: Yuki Takei Date: Thu, 12 Sep 2024 12:34:43 +0000 Subject: [PATCH 34/60] update CHANGELOG.md --- CHANGELOG.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e0b924e190..cec56adadee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,10 +6,6 @@ ## [v7.0.19](https://github.com/weseek/growi/compare/v7.0.18...v7.0.19) - 2024-09-12 -### 🚀 Improvement - -* imprv: Corrected wording on admin page (/admin/data-transfer) (#9098) @shironegi39 - ### 🐛 Bug Fixes * fix: Shared page is not displayed when skipping SSR (#9089) @miya From 1a42bcbe966191c62aefce4d26e58e41e31bacbe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Sep 2024 12:35:47 +0000 Subject: [PATCH 35/60] ci(deps): bump body-parser from 1.20.2 to 1.20.3 Bumps [body-parser](https://github.com/expressjs/body-parser) from 1.20.2 to 1.20.3. - [Release notes](https://github.com/expressjs/body-parser/releases) - [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md) - [Commits](https://github.com/expressjs/body-parser/compare/1.20.2...1.20.3) --- updated-dependencies: - dependency-name: body-parser dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- apps/app/package.json | 2 +- yarn.lock | 40 ++++++++++++++++++++++++++++++++++------ 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/apps/app/package.json b/apps/app/package.json index 5bd0e50b316..be2f5e10d68 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -91,7 +91,7 @@ "async-canvas-to-blob": "^1.0.3", "axios": "^0.24.0", "axios-retry": "^3.2.4", - "body-parser": "^1.18.2", + "body-parser": "^1.20.3", "browser-bunyan": "^1.8.0", "bson-objectid": "^2.0.4", "bunyan": "^1.8.15", diff --git a/yarn.lock b/yarn.lock index bf4b6ec4f0c..8a0c385c449 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5929,7 +5929,7 @@ bn.js@^4.0.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" -body-parser@1.20.2, body-parser@^1.18.2: +body-parser@1.20.2: version "1.20.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== @@ -5947,6 +5947,24 @@ body-parser@1.20.2, body-parser@^1.18.2: type-is "~1.6.18" unpipe "1.0.0" +body-parser@^1.20.3: + version "1.20.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.13.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + boolbase@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" @@ -14958,12 +14976,12 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -qs@^6.10.2, qs@^6.11.1: - version "6.11.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.1.tgz#6c29dff97f0c0060765911ba65cbc9764186109f" - integrity sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ== +qs@6.13.0, qs@^6.10.2, qs@^6.11.1: + version "6.13.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== dependencies: - side-channel "^1.0.4" + side-channel "^1.0.6" qs@~6.5.2: version "6.5.2" @@ -16454,6 +16472,16 @@ side-channel@^1.0.3, side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" +side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + sift@16.0.1: version "16.0.1" resolved "https://registry.yarnpkg.com/sift/-/sift-16.0.1.tgz#e9c2ccc72191585008cf3e36fc447b2d2633a053" From 07e9738012e51df22d92a4ed7a9878c7e04d214e Mon Sep 17 00:00:00 2001 From: Yuki Takei Date: Thu, 12 Sep 2024 12:37:12 +0000 Subject: [PATCH 36/60] fix version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4743e817217..54d405a1716 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "growi", - "version": "7.0.21-RC.0", + "version": "7.0.20-RC.0", "description": "Team collaboration software using markdown", "license": "MIT", "private": "true", From 8ed7f5a3b3e7095c27206b8d80f54b103e2ea3a4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Sep 2024 12:38:00 +0000 Subject: [PATCH 37/60] ci(deps): bump express from 4.19.2 to 4.20.0 Bumps [express](https://github.com/expressjs/express) from 4.19.2 to 4.20.0. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](https://github.com/expressjs/express/compare/4.19.2...4.20.0) --- updated-dependencies: - dependency-name: express dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- apps/app/package.json | 2 +- packages/remark-attachment-refs/package.json | 2 +- packages/remark-lsx/package.json | 2 +- yarn.lock | 150 ++++++++++++++----- 4 files changed, 112 insertions(+), 44 deletions(-) diff --git a/apps/app/package.json b/apps/app/package.json index be2f5e10d68..80614d09ec9 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -113,7 +113,7 @@ "escape-string-regexp": "^4.0.0", "eslint-plugin-regex": "^1.8.0", "expose-gc": "^1.0.0", - "express": "^4.19.2", + "express": "^4.20.0", "express-bunyan-logger": "^1.3.3", "express-mongo-sanitize": "^2.1.0", "express-session": "^1.16.1", diff --git a/packages/remark-attachment-refs/package.json b/packages/remark-attachment-refs/package.json index cd9afe0d283..a85b5a35b52 100644 --- a/packages/remark-attachment-refs/package.json +++ b/packages/remark-attachment-refs/package.json @@ -49,7 +49,7 @@ "@growi/ui": "link:../ui", "axios": "^0.24.0", "bunyan": "^1.8.15", - "express": "^4.19.2", + "express": "^4.20.0", "hast-util-select": "^5.0.5", "mongoose": "^6.11.3", "swr": "^2.0.3", diff --git a/packages/remark-lsx/package.json b/packages/remark-lsx/package.json index 88b7af30a04..4abf627a948 100644 --- a/packages/remark-lsx/package.json +++ b/packages/remark-lsx/package.json @@ -37,7 +37,7 @@ "@growi/remark-growi-directive": "link:../remark-growi-directive", "@growi/ui": "link:../ui", "escape-string-regexp": "^4.0.0", - "express": "^4.19.2", + "express": "^4.20.0", "http-errors": "^2.0.0", "mongoose": "^6.11.3", "swr": "^2.2.2" diff --git a/yarn.lock b/yarn.lock index 8a0c385c449..f47dd35332a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2199,7 +2199,7 @@ "@growi/ui" "link:packages/ui" axios "^0.24.0" bunyan "^1.8.15" - express "^4.19.2" + express "^4.20.0" hast-util-select "^5.0.5" mongoose "^6.11.3" swr "^2.0.3" @@ -2233,7 +2233,7 @@ "@growi/remark-growi-directive" "link:packages/remark-growi-directive" "@growi/ui" "link:packages/ui" escape-string-regexp "^4.0.0" - express "^4.19.2" + express "^4.20.0" http-errors "^2.0.0" mongoose "^6.11.3" swr "^2.2.2" @@ -5929,25 +5929,7 @@ bn.js@^4.0.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" -body-parser@1.20.2: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== - dependencies: - bytes "3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" - -body-parser@^1.20.3: +body-parser@1.20.3, body-parser@^1.20.3: version "1.20.3" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== @@ -8174,6 +8156,11 @@ encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + encoding-down@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-6.3.0.tgz#b1c4eb0e1728c146ecaef8e32963c549e76d082b" @@ -8911,37 +8898,74 @@ express-validator@^6.14.0: lodash "^4.17.21" validator "^13.7.0" -express@^4.17.1, express@^4.19.2: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== +express@^4.17.1: + version "4.21.0" + resolved "https://registry.yarnpkg.com/express/-/express-4.21.0.tgz#d57cb706d49623d4ac27833f1cbc466b668eb915" + integrity sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.2" + body-parser "1.20.3" content-disposition "0.5.4" content-type "~1.0.4" cookie "0.6.0" cookie-signature "1.0.6" debug "2.6.9" depd "2.0.0" - encodeurl "~1.0.2" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.3.1" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.3" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.10" + proxy-addr "~2.0.7" + qs "6.13.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.19.0" + serve-static "1.16.2" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +express@^4.20.0: + version "4.20.0" + resolved "https://registry.yarnpkg.com/express/-/express-4.20.0.tgz#f1d08e591fcec770c07be4767af8eb9bcfd67c48" + integrity sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.3" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.6.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~2.0.0" escape-html "~1.0.3" etag "~1.8.1" finalhandler "1.2.0" fresh "0.5.2" http-errors "2.0.0" - merge-descriptors "1.0.1" + merge-descriptors "1.0.3" methods "~1.1.2" on-finished "2.4.1" parseurl "~1.3.3" - path-to-regexp "0.1.7" + path-to-regexp "0.1.10" proxy-addr "~2.0.7" qs "6.11.0" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" + send "0.19.0" + serve-static "1.16.0" setprototypeof "1.2.0" statuses "2.0.1" type-is "~1.6.18" @@ -9177,6 +9201,19 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" +finalhandler@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== + dependencies: + debug "2.6.9" + encodeurl "~2.0.0" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + find-cache-dir@^3.3.1, find-cache-dir@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" @@ -12702,9 +12739,10 @@ meow@^6.0.0: type-fest "^0.13.1" yargs-parser "^18.1.3" -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== merge-stream@^2.0.0: version "2.0.0" @@ -14559,9 +14597,10 @@ path-scurry@^1.10.1: lru-cache "^9.1.1 || ^10.0.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" +path-to-regexp@0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" + integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== path-type@^1.0.0: version "1.1.0" @@ -16286,6 +16325,25 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" +send@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + sentence-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" @@ -16300,16 +16358,26 @@ seq-queue@^0.0.5: resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e" integrity sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4= -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== +serve-static@1.16.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.0.tgz#2bf4ed49f8af311b519c46f272bf6ac3baf38a92" + integrity sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" send "0.18.0" +serve-static@1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== + dependencies: + encodeurl "~2.0.0" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.19.0" + set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" From 6a0197df33a927f4db98324c308eaadfa15b2fb4 Mon Sep 17 00:00:00 2001 From: Yuki Takei Date: Thu, 12 Sep 2024 12:41:08 +0000 Subject: [PATCH 38/60] update mergify.yml --- .github/mergify.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/mergify.yml b/.github/mergify.yml index 97d145409f0..68925704e3f 100644 --- a/.github/mergify.yml +++ b/.github/mergify.yml @@ -25,8 +25,7 @@ pull_request_rules: - '#check-failure = 0' - check-success = "check-title" actions: - merge: - method: merge + queue: - name: Automatic merge for Preparing next version conditions: From 7c0f33b75da59305bdfee0a6ba0e7dc49bb39a64 Mon Sep 17 00:00:00 2001 From: Yuki Takei Date: Thu, 12 Sep 2024 13:07:46 +0000 Subject: [PATCH 39/60] update auto-approve.yml --- .github/workflows/auto-approve.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/auto-approve.yml b/.github/workflows/auto-approve.yml index e470adf6ba6..1ed0f2f889e 100644 --- a/.github/workflows/auto-approve.yml +++ b/.github/workflows/auto-approve.yml @@ -2,6 +2,8 @@ name: Auto approve PR on: pull_request_target: + branches: + - dependabot/* types: [opened, reopened, synchronize] permissions: From 1937b17011b210395cd8accce2050614d9f7edeb Mon Sep 17 00:00:00 2001 From: Yuki Takei Date: Thu, 12 Sep 2024 13:09:41 +0000 Subject: [PATCH 40/60] update mergify.yml --- .github/mergify.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/mergify.yml b/.github/mergify.yml index 68925704e3f..134737856ac 100644 --- a/.github/mergify.yml +++ b/.github/mergify.yml @@ -3,9 +3,11 @@ queue_rules: allow_inplace_checks: false queue_conditions: - '#check-failure = 0' + - '#check-pending = 0' - check-success ~= ci-app- merge_conditions: - '#check-failure = 0' + - '#check-pending = 0' - check-success ~= ci-app- - check-success ~= test-prod-node20 / From edafb3c40ebacd5dcdb02a4fb46282dc93d98c1a Mon Sep 17 00:00:00 2001 From: Yuki Takei Date: Thu, 12 Sep 2024 13:34:54 +0000 Subject: [PATCH 41/60] update auto-approve setting --- .github/mergify.yml | 2 +- .github/workflows/auto-approve.yml | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/mergify.yml b/.github/mergify.yml index 134737856ac..a61e73653c4 100644 --- a/.github/mergify.yml +++ b/.github/mergify.yml @@ -20,7 +20,7 @@ pull_request_rules: actions: queue: - - name: Automatic merge for Dependabot pull requests + - name: Automatic queue for Dependabot pull requests conditions: - author = dependabot[bot] - '#approved-reviews-by >= 1' diff --git a/.github/workflows/auto-approve.yml b/.github/workflows/auto-approve.yml index 1ed0f2f889e..e470adf6ba6 100644 --- a/.github/workflows/auto-approve.yml +++ b/.github/workflows/auto-approve.yml @@ -2,8 +2,6 @@ name: Auto approve PR on: pull_request_target: - branches: - - dependabot/* types: [opened, reopened, synchronize] permissions: From d168896df722be25ad6684409bae07ad0e002c17 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Sep 2024 13:38:20 +0000 Subject: [PATCH 42/60] ci(deps): bump docker/setup-buildx-action from 2 to 3 Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3. - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](https://github.com/docker/setup-buildx-action/compare/v2...v3) --- updated-dependencies: - dependency-name: docker/setup-buildx-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/release-slackbot-proxy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-slackbot-proxy.yml b/.github/workflows/release-slackbot-proxy.yml index 2674997f5ac..24fa8a69936 100644 --- a/.github/workflows/release-slackbot-proxy.yml +++ b/.github/workflows/release-slackbot-proxy.yml @@ -48,7 +48,7 @@ jobs: gcloud auth configure-docker --quiet - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Build and push uses: docker/build-push-action@v4 From a1eb2679c406515909cc9b855a66423413b19be1 Mon Sep 17 00:00:00 2001 From: Yuki Takei Date: Thu, 12 Sep 2024 13:42:03 +0000 Subject: [PATCH 43/60] update mergify.yml --- .github/mergify.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.github/mergify.yml b/.github/mergify.yml index a61e73653c4..d560e799937 100644 --- a/.github/mergify.yml +++ b/.github/mergify.yml @@ -20,15 +20,6 @@ pull_request_rules: actions: queue: - - name: Automatic queue for Dependabot pull requests - conditions: - - author = dependabot[bot] - - '#approved-reviews-by >= 1' - - '#check-failure = 0' - - check-success = "check-title" - actions: - queue: - - name: Automatic merge for Preparing next version conditions: - author = github-actions[bot] From 010032c0af6461af8da1df2bf93868cac17961e0 Mon Sep 17 00:00:00 2001 From: Yuki Takei Date: Thu, 12 Sep 2024 14:24:29 +0000 Subject: [PATCH 44/60] update mergify.yml --- .github/mergify.yml | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/.github/mergify.yml b/.github/mergify.yml index d560e799937..78adc2b42d5 100644 --- a/.github/mergify.yml +++ b/.github/mergify.yml @@ -2,28 +2,37 @@ queue_rules: - name: default allow_inplace_checks: false queue_conditions: - - '#check-failure = 0' - - '#check-pending = 0' - - check-success ~= ci-app- + - check-success ~= ci-app-lint + - check-success ~= ci-app-test + - check-success ~= ci-app-launch-dev + - check-success = test-prod-node20 / build-prod + - check-success = test-prod-node20 / launch-prod + - -check-failure ~= ci-app- + - -check-failure ~= ci-slackbot- merge_conditions: - - '#check-failure = 0' - - '#check-pending = 0' - - check-success ~= ci-app- - - check-success ~= test-prod-node20 / + - check-success ~= ci-app-lint + - check-success ~= ci-app-test + - check-success ~= ci-app-launch-dev + - check-success = test-prod-node20 / build-prod + - check-success = test-prod-node20 / launch-prod + - check-success ~= test-prod-node20 / run-playwright + - -check-failure ~= ci-app- + - -check-failure ~= ci-slackbot- + - -check-failure ~= test-prod-node20 / pull_request_rules: - name: Automatic queue to merge conditions: - '#approved-reviews-by >= 1' - '#review-requested = 0' - - check-success = "check-title" + - check-success = check-title actions: queue: - name: Automatic merge for Preparing next version conditions: - author = github-actions[bot] - - label = "type/prepare-next-version" + - label = type/prepare-next-version actions: merge: method: merge From b93c5c803f17e6bf1743b060a0fd75bba3fe6979 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Sep 2024 14:27:49 +0000 Subject: [PATCH 45/60] ci(deps): bump jose from 4.11.4 to 4.15.9 Bumps [jose](https://github.com/panva/jose) from 4.11.4 to 4.15.9. - [Release notes](https://github.com/panva/jose/releases) - [Changelog](https://github.com/panva/jose/blob/v4.15.9/CHANGELOG.md) - [Commits](https://github.com/panva/jose/compare/v4.11.4...v4.15.9) --- updated-dependencies: - dependency-name: jose dependency-type: indirect ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index f47dd35332a..fb2073abae9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11515,9 +11515,9 @@ jmespath@0.15.0: resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" jose@^4.10.0: - version "4.11.4" - resolved "https://registry.yarnpkg.com/jose/-/jose-4.11.4.tgz#e04d4a393ac017d0450fa0a38e2f2382cd73f71e" - integrity sha512-94FdcR8felat4vaTJyL/WVdtlWLlsnLMZP8v+A0Vru18K3bQ22vn7TtpVh3JlgBFNIlYOUlGqwp/MjRPOnIyCQ== + version "4.15.9" + resolved "https://registry.yarnpkg.com/jose/-/jose-4.15.9.tgz#9b68eda29e9a0614c042fa29387196c7dd800100" + integrity sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA== jpeg-js@^0.4.0, jpeg-js@^0.4.2: version "0.4.4" From 2103b35dbb15d5e0cff13ba41a2b368debb9175f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Sep 2024 14:29:40 +0000 Subject: [PATCH 46/60] ci(deps): bump nodemailer from 6.9.14 to 6.9.15 Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 6.9.14 to 6.9.15. - [Release notes](https://github.com/nodemailer/nodemailer/releases) - [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md) - [Commits](https://github.com/nodemailer/nodemailer/compare/v6.9.14...v6.9.15) --- updated-dependencies: - dependency-name: nodemailer dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- apps/app/package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/app/package.json b/apps/app/package.json index 80614d09ec9..78c60457149 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -150,7 +150,7 @@ "next-themes": "^0.2.1", "nocache": "^4.0.0", "node-cron": "^3.0.2", - "nodemailer": "^6.9.14", + "nodemailer": "^6.9.15", "nodemailer-ses-transport": "~1.5.0", "openid-client": "^5.4.0", "p-retry": "^4.0.0", diff --git a/yarn.lock b/yarn.lock index f47dd35332a..bf2e44a62a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13822,10 +13822,10 @@ nodemailer-ses-transport@~1.5.0: dependencies: aws-sdk "^2.2.36" -nodemailer@^6.9.14: - version "6.9.14" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.9.14.tgz#845fda981f9fd5ac264f4446af908a7c78027f75" - integrity sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA== +nodemailer@^6.9.15: + version "6.9.15" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.9.15.tgz#57b79dc522be27e0e47ac16cc860aa0673e62e04" + integrity sha512-AHf04ySLC6CIfuRtRiEYtGEXgRfa6INgWGluDhnxTZhHSKvrBu7lc1VVchQ0d8nPc4cFaZoPq8vkyNoZr0TpGQ== nodemon@^3.1.3: version "3.1.3" From 4c36160d40deb7f68fdddb0d84b0b7a767bf1839 Mon Sep 17 00:00:00 2001 From: Yuki Takei Date: Thu, 12 Sep 2024 14:29:45 +0000 Subject: [PATCH 47/60] update mergify.yml --- .github/mergify.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/mergify.yml b/.github/mergify.yml index 78adc2b42d5..eaa719767e9 100644 --- a/.github/mergify.yml +++ b/.github/mergify.yml @@ -5,10 +5,9 @@ queue_rules: - check-success ~= ci-app-lint - check-success ~= ci-app-test - check-success ~= ci-app-launch-dev - - check-success = test-prod-node20 / build-prod - - check-success = test-prod-node20 / launch-prod - -check-failure ~= ci-app- - -check-failure ~= ci-slackbot- + - -check-failure ~= test-prod-node20 / merge_conditions: - check-success ~= ci-app-lint - check-success ~= ci-app-test From fdbe78c3c4a720c31df99a648cd2dcc79bd6e46c Mon Sep 17 00:00:00 2001 From: reiji-h Date: Fri, 13 Sep 2024 06:45:31 +0000 Subject: [PATCH 48/60] use css only for hover --- .../Common/PagePathNav/PagePathNav.module.scss | 14 ++++++++++++++ .../Common/PagePathNav/PagePathNavLayout.tsx | 18 ++++-------------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/apps/app/src/components/Common/PagePathNav/PagePathNav.module.scss b/apps/app/src/components/Common/PagePathNav/PagePathNav.module.scss index c752dffa610..415d99e36e4 100644 --- a/apps/app/src/components/Common/PagePathNav/PagePathNav.module.scss +++ b/apps/app/src/components/Common/PagePathNav/PagePathNav.module.scss @@ -1,6 +1,20 @@ @use '@growi/core-styles/scss/bootstrap/init' as bs; @use '@growi/ui/scss/atoms/btn-muted'; +.grw-page-path-nav-layout :global { + .grw-page-path-nav-copydropdown { + opacity: 0; + @include bs.media-breakpoint-down(md) { + opacity: 1; + } + } + &:hover { + .grw-page-path-nav-copydropdown { + opacity: 1; + } + } +} + .grw-page-path-nav :global { .btn-copy { @include btn-muted.colorize(bs.$orange); diff --git a/apps/app/src/components/Common/PagePathNav/PagePathNavLayout.tsx b/apps/app/src/components/Common/PagePathNav/PagePathNavLayout.tsx index 85a567e8870..b297c317044 100644 --- a/apps/app/src/components/Common/PagePathNav/PagePathNavLayout.tsx +++ b/apps/app/src/components/Common/PagePathNav/PagePathNavLayout.tsx @@ -1,10 +1,8 @@ import type { ReactNode } from 'react'; -import { useState } from 'react'; import dynamic from 'next/dynamic'; import { useIsNotFound } from '~/stores/page'; -import { useIsDeviceLargerThanMd } from '~/stores/ui'; import styles from './PagePathNav.module.scss'; @@ -38,17 +36,13 @@ export const PagePathNavLayout = (props: Props): JSX.Element => { } = props; const { data: isNotFound } = useIsNotFound(); - const { data: isDeviceLargerThanMd } = useIsDeviceLargerThanMd(); - const [isHovered, setIsHovered] = useState(false); const copyDropdownId = `copydropdown-${pageId}`; return (
setIsHovered(true)} - onMouseLeave={() => setIsHovered(false)} > {formerLink}
@@ -60,13 +54,9 @@ export const PagePathNavLayout = (props: Props): JSX.Element => { { isWipPage && ( WIP )} - { - (!isDeviceLargerThanMd || isHovered) && ( - - content_paste - - ) - } + + content_paste +
) }
From 72c5889cfc6be88ddff595932e2a5087856d9480 Mon Sep 17 00:00:00 2001 From: reiji-h Date: Fri, 13 Sep 2024 07:24:06 +0000 Subject: [PATCH 49/60] fix error code --- .../Common/PagePathNav/PagePathNav.module.scss | 18 ++++++++++++------ .../Common/PagePathNav/PagePathNavLayout.tsx | 11 +++++++---- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/apps/app/src/components/Common/PagePathNav/PagePathNav.module.scss b/apps/app/src/components/Common/PagePathNav/PagePathNav.module.scss index 415d99e36e4..2681c2c523f 100644 --- a/apps/app/src/components/Common/PagePathNav/PagePathNav.module.scss +++ b/apps/app/src/components/Common/PagePathNav/PagePathNav.module.scss @@ -1,16 +1,22 @@ @use '@growi/core-styles/scss/bootstrap/init' as bs; @use '@growi/ui/scss/atoms/btn-muted'; + .grw-page-path-nav-layout :global { .grw-page-path-nav-copydropdown { - opacity: 0; + display: none; @include bs.media-breakpoint-down(md) { - opacity: 1; + display: block; } } - &:hover { - .grw-page-path-nav-copydropdown { - opacity: 1; +} + +.grw-page-path-nav-layout { + &:global { + &:hover { + .grw-page-path-nav-copydropdown { + display: block; + } } } } @@ -24,7 +30,7 @@ // == Colors .grw-former-link :global { .separator { - opacity: 0.75; + // opacity: 0.75; } } diff --git a/apps/app/src/components/Common/PagePathNav/PagePathNavLayout.tsx b/apps/app/src/components/Common/PagePathNav/PagePathNavLayout.tsx index b297c317044..9dd8696cc6b 100644 --- a/apps/app/src/components/Common/PagePathNav/PagePathNavLayout.tsx +++ b/apps/app/src/components/Common/PagePathNav/PagePathNavLayout.tsx @@ -6,6 +6,7 @@ import { useIsNotFound } from '~/stores/page'; import styles from './PagePathNav.module.scss'; +const moduleClass = styles['grw-page-path-nav-layout'] ?? ''; export type PagePathNavLayoutProps = { className?: string, @@ -41,7 +42,7 @@ export const PagePathNavLayout = (props: Props): JSX.Element => { return (
{formerLink} @@ -54,9 +55,11 @@ export const PagePathNavLayout = (props: Props): JSX.Element => { { isWipPage && ( WIP )} - - content_paste - + + + content_paste + +
) } From 71bf37efd3383e0bc624af79dab403a27683fc8f Mon Sep 17 00:00:00 2001 From: reiji-h Date: Fri, 13 Sep 2024 07:36:32 +0000 Subject: [PATCH 50/60] typescriptize --- .../{CopyDropdown.jsx => CopyDropdown.tsx} | 55 +++++++++++-------- 1 file changed, 32 insertions(+), 23 deletions(-) rename apps/app/src/client/components/Common/CopyDropdown/{CopyDropdown.jsx => CopyDropdown.tsx} (89%) diff --git a/apps/app/src/client/components/Common/CopyDropdown/CopyDropdown.jsx b/apps/app/src/client/components/Common/CopyDropdown/CopyDropdown.tsx similarity index 89% rename from apps/app/src/client/components/Common/CopyDropdown/CopyDropdown.jsx rename to apps/app/src/client/components/Common/CopyDropdown/CopyDropdown.tsx index e396215973a..73299933d64 100644 --- a/apps/app/src/client/components/Common/CopyDropdown/CopyDropdown.jsx +++ b/apps/app/src/client/components/Common/CopyDropdown/CopyDropdown.tsx @@ -1,10 +1,13 @@ +import type { + ReactNode, + CSSProperties, +} from 'react'; import React, { useState, useMemo, useCallback, } from 'react'; import { pagePathUtils } from '@growi/core/dist/utils'; import { useTranslation } from 'next-i18next'; -import PropTypes from 'prop-types'; import { CopyToClipboard } from 'react-copy-to-clipboard'; import { Dropdown, DropdownToggle, DropdownMenu, DropdownItem, @@ -15,19 +18,35 @@ import styles from './CopyDropdown.module.scss'; const { encodeSpaces } = pagePathUtils; -/* eslint-disable react/prop-types */ -const DropdownItemContents = ({ - title, contents, className, style, -}) => ( - <> -
{title}
-
{contents}
- -); -/* eslint-enable react/prop-types */ +type DropdownItemContentsProps = { + title: string, + contents: ReactNode, + className?: string, + style?: CSSProperties, +} +const DropdownItemContents = (props: DropdownItemContentsProps) => { + const { + title, contents, className, style, + } = props; + return ( + <> +
{title}
+
{contents}
+ + ); +}; + +type CopyDropdownProps = { + children: ReactNode, + dropdownToggleId: string, + pagePath: string, + pageId?: string, + dropdownToggleClassName?: string, + isShareLinkMode?: boolean, +} -export const CopyDropdown = (props) => { +export const CopyDropdown = (props: CopyDropdownProps): JSX.Element => { const [dropdownOpen, setDropdownOpen] = useState(false); const [tooltipOpen, setTooltipOpen] = useState(false); const [isParamsAppended, setParamsAppended] = useState(!props.isShareLinkMode); @@ -208,7 +227,7 @@ export const CopyDropdown = (props) => { { pageId && ( - + )} @@ -222,13 +241,3 @@ export const CopyDropdown = (props) => { ); }; - -CopyDropdown.propTypes = { - children: PropTypes.node.isRequired, - dropdownToggleId: PropTypes.string.isRequired, - pagePath: PropTypes.string.isRequired, - - pageId: PropTypes.string, - dropdownToggleClassName: PropTypes.string, - isShareLinkMode: PropTypes.bool, -}; From e82743b51ec73f153c57b5ccfd838ac61939f317 Mon Sep 17 00:00:00 2001 From: reiji-h Date: Fri, 13 Sep 2024 07:54:30 +0000 Subject: [PATCH 51/60] delete comment --- .../src/components/Common/PagePathNav/PagePathNav.module.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/app/src/components/Common/PagePathNav/PagePathNav.module.scss b/apps/app/src/components/Common/PagePathNav/PagePathNav.module.scss index 2681c2c523f..c11a6ea9e82 100644 --- a/apps/app/src/components/Common/PagePathNav/PagePathNav.module.scss +++ b/apps/app/src/components/Common/PagePathNav/PagePathNav.module.scss @@ -30,7 +30,7 @@ // == Colors .grw-former-link :global { .separator { - // opacity: 0.75; + opacity: 0.75; } } From 3ddd0f2a62e45f8d5e50494cab2b9f8745fbb21b Mon Sep 17 00:00:00 2001 From: reiji-h Date: Fri, 13 Sep 2024 08:03:54 +0000 Subject: [PATCH 52/60] Revert "typescriptize" This reverts commit 71bf37efd3383e0bc624af79dab403a27683fc8f. --- .../{CopyDropdown.tsx => CopyDropdown.jsx} | 55 ++++++++----------- 1 file changed, 23 insertions(+), 32 deletions(-) rename apps/app/src/client/components/Common/CopyDropdown/{CopyDropdown.tsx => CopyDropdown.jsx} (89%) diff --git a/apps/app/src/client/components/Common/CopyDropdown/CopyDropdown.tsx b/apps/app/src/client/components/Common/CopyDropdown/CopyDropdown.jsx similarity index 89% rename from apps/app/src/client/components/Common/CopyDropdown/CopyDropdown.tsx rename to apps/app/src/client/components/Common/CopyDropdown/CopyDropdown.jsx index 73299933d64..e396215973a 100644 --- a/apps/app/src/client/components/Common/CopyDropdown/CopyDropdown.tsx +++ b/apps/app/src/client/components/Common/CopyDropdown/CopyDropdown.jsx @@ -1,13 +1,10 @@ -import type { - ReactNode, - CSSProperties, -} from 'react'; import React, { useState, useMemo, useCallback, } from 'react'; import { pagePathUtils } from '@growi/core/dist/utils'; import { useTranslation } from 'next-i18next'; +import PropTypes from 'prop-types'; import { CopyToClipboard } from 'react-copy-to-clipboard'; import { Dropdown, DropdownToggle, DropdownMenu, DropdownItem, @@ -18,35 +15,19 @@ import styles from './CopyDropdown.module.scss'; const { encodeSpaces } = pagePathUtils; -type DropdownItemContentsProps = { - title: string, - contents: ReactNode, - className?: string, - style?: CSSProperties, -} -const DropdownItemContents = (props: DropdownItemContentsProps) => { - const { - title, contents, className, style, - } = props; - return ( - <> -
{title}
-
{contents}
- - ); -}; - +/* eslint-disable react/prop-types */ +const DropdownItemContents = ({ + title, contents, className, style, +}) => ( + <> +
{title}
+
{contents}
+ +); +/* eslint-enable react/prop-types */ -type CopyDropdownProps = { - children: ReactNode, - dropdownToggleId: string, - pagePath: string, - pageId?: string, - dropdownToggleClassName?: string, - isShareLinkMode?: boolean, -} -export const CopyDropdown = (props: CopyDropdownProps): JSX.Element => { +export const CopyDropdown = (props) => { const [dropdownOpen, setDropdownOpen] = useState(false); const [tooltipOpen, setTooltipOpen] = useState(false); const [isParamsAppended, setParamsAppended] = useState(!props.isShareLinkMode); @@ -227,7 +208,7 @@ export const CopyDropdown = (props: CopyDropdownProps): JSX.Element => { { pageId && ( - + )} @@ -241,3 +222,13 @@ export const CopyDropdown = (props: CopyDropdownProps): JSX.Element => { ); }; + +CopyDropdown.propTypes = { + children: PropTypes.node.isRequired, + dropdownToggleId: PropTypes.string.isRequired, + pagePath: PropTypes.string.isRequired, + + pageId: PropTypes.string, + dropdownToggleClassName: PropTypes.string, + isShareLinkMode: PropTypes.bool, +}; From 22400aeca80d01c7aec5c132f764bc9d8cd3c3aa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 14 Sep 2024 23:17:15 +0000 Subject: [PATCH 53/60] ci(deps): bump stefanzweifel/git-auto-commit-action from 4 to 5 Bumps [stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action) from 4 to 5. - [Release notes](https://github.com/stefanzweifel/git-auto-commit-action/releases) - [Changelog](https://github.com/stefanzweifel/git-auto-commit-action/blob/master/CHANGELOG.md) - [Commits](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4...v5) --- updated-dependencies: - dependency-name: stefanzweifel/git-auto-commit-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e8b48c87ed3..aeaf8bf5152 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -58,7 +58,7 @@ jobs: RELEASED_VERSION: ${{ steps.package-json.outputs.packageVersion }} - name: Commit, Tag and Push - uses: stefanzweifel/git-auto-commit-action@v4 + uses: stefanzweifel/git-auto-commit-action@v5 with: branch: ${{ github.event.pull_request.base.ref }} commit_message: Release v${{ steps.package-json.outputs.packageVersion }} From 07dcc43ded8eba0728217bdeafbf5ba412a01426 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 14 Sep 2024 23:17:17 +0000 Subject: [PATCH 54/60] ci(deps): bump myrotvorets/info-from-package-json-action Bumps [myrotvorets/info-from-package-json-action](https://github.com/myrotvorets/info-from-package-json-action) from 1.2.0 to 2.0.1. - [Release notes](https://github.com/myrotvorets/info-from-package-json-action/releases) - [Commits](https://github.com/myrotvorets/info-from-package-json-action/compare/1.2.0...2.0.1) --- updated-dependencies: - dependency-name: myrotvorets/info-from-package-json-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/draft-release.yml | 2 +- .github/workflows/release-rc-scheduled.yml | 2 +- .github/workflows/release-rc.yml | 2 +- .github/workflows/release-slackbot-proxy.yml | 4 ++-- .github/workflows/release.yml | 6 +++--- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/draft-release.yml b/.github/workflows/draft-release.yml index 4b8b5864355..6f905c9d5ea 100644 --- a/.github/workflows/draft-release.yml +++ b/.github/workflows/draft-release.yml @@ -26,7 +26,7 @@ jobs: - uses: actions/checkout@v4 - name: Retrieve information from package.json - uses: myrotvorets/info-from-package-json-action@1.2.0 + uses: myrotvorets/info-from-package-json-action@2.0.1 id: package-json - uses: release-drafter/release-drafter@v5 diff --git a/.github/workflows/release-rc-scheduled.yml b/.github/workflows/release-rc-scheduled.yml index 7fbcf153f43..9e72917a03c 100644 --- a/.github/workflows/release-rc-scheduled.yml +++ b/.github/workflows/release-rc-scheduled.yml @@ -23,7 +23,7 @@ jobs: - uses: actions/checkout@v4 - name: Retrieve information from package.json - uses: myrotvorets/info-from-package-json-action@1.2.0 + uses: myrotvorets/info-from-package-json-action@2.0.1 id: package-json - name: Docker meta for docker.io diff --git a/.github/workflows/release-rc.yml b/.github/workflows/release-rc.yml index 9ac7e7b7f44..a6ce536002a 100644 --- a/.github/workflows/release-rc.yml +++ b/.github/workflows/release-rc.yml @@ -23,7 +23,7 @@ jobs: - uses: actions/checkout@v4 - name: Retrieve information from package.json - uses: myrotvorets/info-from-package-json-action@1.2.0 + uses: myrotvorets/info-from-package-json-action@2.0.1 id: package-json - name: Docker meta for docker.io diff --git a/.github/workflows/release-slackbot-proxy.yml b/.github/workflows/release-slackbot-proxy.yml index 24fa8a69936..95290d4e114 100644 --- a/.github/workflows/release-slackbot-proxy.yml +++ b/.github/workflows/release-slackbot-proxy.yml @@ -17,7 +17,7 @@ jobs: ref: ${{ github.event.pull_request.base.ref }} - name: Retrieve information from package.json - uses: myrotvorets/info-from-package-json-action@1.2.0 + uses: myrotvorets/info-from-package-json-action@2.0.1 id: package-json with: workingDir: apps/slackbot-proxy @@ -110,7 +110,7 @@ jobs: turbo run version --filter=@growi/slackbot-proxy -- --prerelease - name: Retrieve information from package.json - uses: myrotvorets/info-from-package-json-action@1.2.0 + uses: myrotvorets/info-from-package-json-action@2.0.1 id: package-json with: workingDir: apps/slackbot-proxy diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e8b48c87ed3..b18f1034d06 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -41,7 +41,7 @@ jobs: sh ./apps/app/bin/github-actions/update-readme.sh - name: Retrieve information from package.json - uses: myrotvorets/info-from-package-json-action@1.2.0 + uses: myrotvorets/info-from-package-json-action@2.0.1 id: package-json - name: Update Changelog @@ -87,7 +87,7 @@ jobs: - uses: actions/checkout@v4 - name: Retrieve information from package.json - uses: myrotvorets/info-from-package-json-action@1.2.0 + uses: myrotvorets/info-from-package-json-action@2.0.1 id: package-json - name: Docker meta for docker.io @@ -181,7 +181,7 @@ jobs: yarn upgrade --scope=@growi - name: Retrieve information from package.json - uses: myrotvorets/info-from-package-json-action@1.2.0 + uses: myrotvorets/info-from-package-json-action@2.0.1 id: package-json - name: Commit From 4451994a13971de5f160f41e7f15f5693b01ea3c Mon Sep 17 00:00:00 2001 From: Yuki Takei Date: Tue, 17 Sep 2024 07:22:29 +0000 Subject: [PATCH 55/60] add --non-interactive option to the version scripts --- apps/app/package.json | 2 +- apps/slackbot-proxy/package.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/app/package.json b/apps/app/package.json index 78c60457149..96278bf5a89 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -49,7 +49,7 @@ "openapi:v3": "yarn cross-env API_VERSION=3 yarn swagger-jsdoc -- \"src/server/routes/apiv3/**/*.js\" \"src/server/models/**/*.js\"", "openapi:v1": "yarn cross-env API_VERSION=1 yarn swagger-jsdoc -- \"src/server/*/*.js\" \"src/server/models/**/*.js\"", "ts-node": "node -r ts-node/register/transpile-only -r tsconfig-paths/register -r dotenv-flow/config", - "version": "yarn version --no-git-tag-version --preid=RC" + "version": "yarn version --no-git-tag-version --non-interactive --preid=RC" }, "// comments for dependencies": { "@aws-skd/*": "fix version above 3.186.0 that is required by mongodb@4.16.0", diff --git a/apps/slackbot-proxy/package.json b/apps/slackbot-proxy/package.json index adf6b3c394d..75b5c847cf7 100644 --- a/apps/slackbot-proxy/package.json +++ b/apps/slackbot-proxy/package.json @@ -20,7 +20,7 @@ "lint:styles": "stylelint --allow-empty-input \"src/**/*.scss\" \"src/**/*.css\"", "lint:typecheck": "tspc", "lint": "run-p lint:*", - "version": "yarn version --no-git-tag-version --preid=slackbot-proxy", + "version": "yarn version --no-git-tag-version --non-interactive --preid=slackbot-proxy", "ts-node": "node -r ts-node/register/transpile-only -r tsconfig-paths/register -r dotenv-flow/config" }, "// comments for dependencies": { diff --git a/package.json b/package.json index 54d405a1716..3646f522a09 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "version-subpackages": "changeset version && yarn upgrade --scope=@growi", "release-subpackages": "turbo run build --filter @growi/core --filter @growi/pluginkit && changeset publish", "release-subpackages:snapshot": "turbo run build --filter @growi/core --filter @growi/pluginkit && changeset version --snapshot next && changeset publish --no-git-tag --snapshot --tag next", - "version": "yarn version --no-git-tag-version --preid=RC" + "version": "yarn version --no-git-tag-version --non-interactive --preid=RC" }, "dependencies": { "cross-env": "^7.0.0", From d795e4ef4094518976f918acce250665d70e5c6e Mon Sep 17 00:00:00 2001 From: Yuki Takei Date: Tue, 17 Sep 2024 07:25:37 +0000 Subject: [PATCH 56/60] update turbo.json --- apps/slackbot-proxy/turbo.json | 5 ----- 1 file changed, 5 deletions(-) diff --git a/apps/slackbot-proxy/turbo.json b/apps/slackbot-proxy/turbo.json index c5176227a14..1fe623a8419 100644 --- a/apps/slackbot-proxy/turbo.json +++ b/apps/slackbot-proxy/turbo.json @@ -31,11 +31,6 @@ "test": { "dependsOn": ["@growi/slack#dev"], "outputLogs": "new-only" - }, - - "version": { - "cache": false, - "dependsOn": ["^version", "//#version"] } } From 1799502e6387fd25ed69323f3134850d1a091935 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Sep 2024 00:23:30 +0000 Subject: [PATCH 57/60] ci(deps-dev): bump vite from 5.2.9 to 5.2.14 Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.2.9 to 5.2.14. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v5.2.14/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v5.2.14/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 3646f522a09..7b083462b3a 100644 --- a/package.json +++ b/package.json @@ -100,7 +100,7 @@ "tsconfig-paths": "^4.2.0", "typescript": "~5.0.0", "typescript-transform-paths": "^3.4.7", - "vite": "^5.2.9", + "vite": "^5.2.14", "vite-plugin-dts": "^3.8.3", "vite-tsconfig-paths": "^4.3.2", "vitest": "~1.6.0", diff --git a/yarn.lock b/yarn.lock index 6dbf75b544b..bbb8c3eb4c0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18734,10 +18734,10 @@ vite-tsconfig-paths@^4.3.2: globrex "^0.1.2" tsconfck "^3.0.3" -vite@^5.0.0, vite@^5.2.9: - version "5.2.9" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.9.tgz#cd9a356c6ff5f7456c09c5ce74068ffa8df743d9" - integrity sha512-uOQWfuZBlc6Y3W/DTuQ1Sr+oIXWvqljLvS881SVmAj00d5RdgShLcuXWxseWPd4HXwiYBFW/vXHfKFeqj9uQnw== +vite@^5.0.0, vite@^5.2.14: + version "5.2.14" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.14.tgz#fd5f60facf6b5f90ec7da6323c467a365d380c3d" + integrity sha512-TFQLuwWLPms+NBNlh0D9LZQ+HXW471COABxw/9TEUBrjuHMo9BrYBPrN/SYAwIuVL+rLerycxiLT41t4f5MZpA== dependencies: esbuild "^0.20.1" postcss "^8.4.38" From 02f1b3a275b5ae77f89cffbbe42ba2e5506f108e Mon Sep 17 00:00:00 2001 From: satof3 Date: Wed, 18 Sep 2024 17:53:17 +0900 Subject: [PATCH 58/60] Update image in dockerhub --- apps/app/docker/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/app/docker/README.md b/apps/app/docker/README.md index b54a51e6f40..23d0af5b37d 100644 --- a/apps/app/docker/README.md +++ b/apps/app/docker/README.md @@ -4,7 +4,7 @@ GROWI Official docker image [![Actions Status](https://github.com/weseek/growi/workflows/Release/badge.svg)](https://github.com/weseek/growi/actions) [![docker-pulls](https://img.shields.io/docker/pulls/weseek/growi.svg)](https://hub.docker.com/r/weseek/growi/) [![](https://images.microbadger.com/badges/image/weseek/growi.svg)](https://microbadger.com/images/weseek/growi) -![GROWI-x-docker](https://user-images.githubusercontent.com/1638767/38307565-105956e2-384f-11e8-8534-b1128522d68d.png) +![GROWI-x-docker](https://private-user-images.githubusercontent.com/113958844/368474296-1a82236d-5a85-4a2e-842a-971b4c1625e6.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjY2NDY2ODEsIm5iZiI6MTcyNjY0NjM4MSwicGF0aCI6Ii8xMTM5NTg4NDQvMzY4NDc0Mjk2LTFhODIyMzZkLTVhODUtNGEyZS04NDJhLTk3MWI0YzE2MjVlNi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwOTE4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDkxOFQwNzU5NDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wYzI3MDI0ZmUzNzExODIxZjNiMTBkZjZhNmJmMWM5YjUwNmM2ODk3MzRkNmJmYTEwMjlkNjFiMjY0MzUyYjkxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.LIae-VaUkj2X9S6e-DBNDv2-JjPa3rfn85YMeyV-lCg) Supported tags and respective Dockerfile links From 87f8097a6b845e1b10e3448ae7f272a57636d31a Mon Sep 17 00:00:00 2001 From: satof3 Date: Thu, 19 Sep 2024 13:12:17 +0900 Subject: [PATCH 59/60] Change image url --- apps/app/docker/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/app/docker/README.md b/apps/app/docker/README.md index 23d0af5b37d..22bb186f042 100644 --- a/apps/app/docker/README.md +++ b/apps/app/docker/README.md @@ -4,7 +4,7 @@ GROWI Official docker image [![Actions Status](https://github.com/weseek/growi/workflows/Release/badge.svg)](https://github.com/weseek/growi/actions) [![docker-pulls](https://img.shields.io/docker/pulls/weseek/growi.svg)](https://hub.docker.com/r/weseek/growi/) [![](https://images.microbadger.com/badges/image/weseek/growi.svg)](https://microbadger.com/images/weseek/growi) -![GROWI-x-docker](https://private-user-images.githubusercontent.com/113958844/368474296-1a82236d-5a85-4a2e-842a-971b4c1625e6.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjY2NDY2ODEsIm5iZiI6MTcyNjY0NjM4MSwicGF0aCI6Ii8xMTM5NTg4NDQvMzY4NDc0Mjk2LTFhODIyMzZkLTVhODUtNGEyZS04NDJhLTk3MWI0YzE2MjVlNi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwOTE4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDkxOFQwNzU5NDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wYzI3MDI0ZmUzNzExODIxZjNiMTBkZjZhNmJmMWM5YjUwNmM2ODk3MzRkNmJmYTEwMjlkNjFiMjY0MzUyYjkxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.LIae-VaUkj2X9S6e-DBNDv2-JjPa3rfn85YMeyV-lCg) +![GROWI-x-docker](https://github.com/user-attachments/assets/1a82236d-5a85-4a2e-842a-971b4c1625e6) Supported tags and respective Dockerfile links From 47602acdfa8aaf0dfe42440c7f6d007e99d98da4 Mon Sep 17 00:00:00 2001 From: Yuki Takei Date: Thu, 19 Sep 2024 12:32:18 +0000 Subject: [PATCH 60/60] upgrade @testing-library/react --- apps/app/package.json | 7 +- .../Common/Dropdown/PageItemControl.spec.tsx | 5 +- yarn.lock | 247 ++++++------------ 3 files changed, 87 insertions(+), 172 deletions(-) diff --git a/apps/app/package.json b/apps/app/package.json index 96278bf5a89..6a996ae6559 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -229,13 +229,16 @@ "@popperjs/core": "^2.11.8", "@swc-node/jest": "^1.8.1", "@swc/jest": "^0.2.36", - "@testing-library/react": "^14.1.2", + "@testing-library/dom": "^10.4.0", + "@testing-library/jest-dom": "^6.5.0", + "@testing-library/react": "^16.0.1", "@testing-library/user-event": "^14.5.2", "@types/express": "^4.17.21", "@types/jest": "^29.5.2", "@types/react-input-autosize": "^2.2.4", "@types/react-scroll": "^1.8.4", "@types/react-stickynode": "^4.0.3", + "@types/testing-library__dom": "^7.5.0", "@types/throttle-debounce": "^5.0.1", "@types/unzip-stream": "^0.3.4", "@types/url-join": "^4.0.2", @@ -249,7 +252,7 @@ "eslint-plugin-regex": "^1.8.0", "fslightbox-react": "^1.7.6", "handsontable": "=6.2.2", - "happy-dom": "^13.2.0", + "happy-dom": "^15.7.4", "i18next-chained-backend": "^4.6.2", "i18next-hmr": "^3.0.4", "i18next-http-backend": "^2.5.0", diff --git a/apps/app/src/client/components/Common/Dropdown/PageItemControl.spec.tsx b/apps/app/src/client/components/Common/Dropdown/PageItemControl.spec.tsx index e85c064af3c..af94193c66e 100644 --- a/apps/app/src/client/components/Common/Dropdown/PageItemControl.spec.tsx +++ b/apps/app/src/client/components/Common/Dropdown/PageItemControl.spec.tsx @@ -1,7 +1,8 @@ import { type IPageInfoForOperation } from '@growi/core/dist/interfaces'; import { - fireEvent, render, screen, within, -} from '@testing-library/react'; + fireEvent, screen, within, +} from '@testing-library/dom'; +import { render } from '@testing-library/react'; import { mock } from 'vitest-mock-extended'; import { PageItemControl } from './PageItemControl'; diff --git a/yarn.lock b/yarn.lock index bbb8c3eb4c0..c4e14752cba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@adobe/css-tools@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.4.0.tgz#728c484f4e10df03d5a3acd0d8adcbbebff8ad63" + integrity sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ== + "@akebifiky/remark-simple-plantuml@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@akebifiky/remark-simple-plantuml/-/remark-simple-plantuml-1.0.2.tgz#c353e4be4e5338b0165f1d6060da4960c325bad5" @@ -914,11 +919,11 @@ tslib "^2.2.0" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.6.tgz#ab88da19344445c3d8889af2216606d3329f3ef2" - integrity sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== dependencies: - "@babel/highlight" "^7.24.6" + "@babel/highlight" "^7.24.7" picocolors "^1.0.0" "@babel/compat-data@^7.24.6": @@ -1048,12 +1053,12 @@ "@babel/template" "^7.24.6" "@babel/types" "^7.24.6" -"@babel/highlight@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.6.tgz#6d610c1ebd2c6e061cade0153bf69b0590b7b3df" - integrity sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ== +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== dependencies: - "@babel/helper-validator-identifier" "^7.24.6" + "@babel/helper-validator-identifier" "^7.24.7" chalk "^2.4.2" js-tokens "^4.0.0" picocolors "^1.0.0" @@ -1183,14 +1188,7 @@ core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.8", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.20.1", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.15", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" - integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/runtime@^7.18.6": +"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.8", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.1", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.15", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.25.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.4.tgz#6ef37d678428306e7d75f054d5b1bdb8cf8aa8ee" integrity sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w== @@ -4061,28 +4059,39 @@ dependencies: "@swc/counter" "^0.1.3" -"@testing-library/dom@^9.0.0": - version "9.3.4" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.3.4.tgz#50696ec28376926fec0a1bf87d9dbac5e27f60ce" - integrity sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ== +"@testing-library/dom@*", "@testing-library/dom@^10.4.0": + version "10.4.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-10.4.0.tgz#82a9d9462f11d240ecadbf406607c6ceeeff43a8" + integrity sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" "@types/aria-query" "^5.0.1" - aria-query "5.1.3" + aria-query "5.3.0" chalk "^4.1.0" dom-accessibility-api "^0.5.9" lz-string "^1.5.0" pretty-format "^27.0.2" -"@testing-library/react@^14.1.2": - version "14.2.0" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-14.2.0.tgz#256add361581316b7ee9e60a585aaed9c8c19655" - integrity sha512-7uBnPHyOG6nDGCzv8SLeJbSa33ZoYw7swYpSLIgJvBALdq7l9zPNk33om4USrxy1lKTxXaVfufzLmq83WNfWIw== +"@testing-library/jest-dom@^6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz#50484da3f80fb222a853479f618a9ce5c47bfe54" + integrity sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA== + dependencies: + "@adobe/css-tools" "^4.4.0" + aria-query "^5.0.0" + chalk "^3.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.6.3" + lodash "^4.17.21" + redent "^3.0.0" + +"@testing-library/react@^16.0.1": + version "16.0.1" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.0.1.tgz#29c0ee878d672703f5e7579f239005e4e0faa875" + integrity sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg== dependencies: "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^9.0.0" - "@types/react-dom" "^18.0.0" "@testing-library/user-event@^14.5.2": version "14.5.2" @@ -4647,10 +4656,10 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== -"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.6": - version "18.2.18" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.18.tgz#16946e6cd43971256d874bc3d0a72074bb8571dd" - integrity sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw== +"@types/react-dom@^18.2.6": + version "18.3.0" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" + integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== dependencies: "@types/react" "*" @@ -4744,6 +4753,13 @@ dependencies: "@types/node" "*" +"@types/testing-library__dom@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-7.5.0.tgz#e0a00dd766983b1d6e9d10d33e708005ce6ad13e" + integrity sha512-mj1aH4cj3XUpMEgVpognma5kHVtbm6U6cHZmEFzCRiXPvKkuHrFr3+yXdGLXvfFRBaQIVshPGHI+hGTOJlhS/g== + dependencies: + "@testing-library/dom" "*" + "@types/throttle-debounce@^5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@types/throttle-debounce/-/throttle-debounce-5.0.1.tgz#8ce917e41580b2cf16f8ee840e227947f4152b04" @@ -5394,12 +5410,12 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" - integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== +aria-query@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== dependencies: - deep-equal "^2.0.5" + dequal "^2.0.3" aria-query@^4.2.2: version "4.2.2" @@ -5409,6 +5425,11 @@ aria-query@^4.2.2: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" +aria-query@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.1.tgz#ebcb2c0d7fc43e68e4cb22f774d1209cb627ab42" + integrity sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g== + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -7185,6 +7206,11 @@ css-what@^6.1.0: resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== + cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" @@ -7955,6 +7981,11 @@ dom-accessibility-api@^0.5.9: resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== +dom-accessibility-api@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#993e925cc1d73f2c662e7d75dd5a5445259a8fd8" + integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w== + dom-helpers@^5.0.1, dom-helpers@^5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" @@ -8898,7 +8929,7 @@ express-validator@^6.14.0: lodash "^4.17.21" validator "^13.7.0" -express@^4.17.1: +express@^4.17.1, express@^4.20.0: version "4.21.0" resolved "https://registry.yarnpkg.com/express/-/express-4.21.0.tgz#d57cb706d49623d4ac27833f1cbc466b668eb915" integrity sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng== @@ -8935,43 +8966,6 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" -express@^4.20.0: - version "4.20.0" - resolved "https://registry.yarnpkg.com/express/-/express-4.20.0.tgz#f1d08e591fcec770c07be4767af8eb9bcfd67c48" - integrity sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.3" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.6.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~2.0.0" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.3" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.10" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.19.0" - serve-static "1.16.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -9188,19 +9182,6 @@ filter-obj@^1.1.0: resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - finalhandler@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" @@ -9554,7 +9535,7 @@ get-func-name@^2.0.1, get-func-name@^2.0.2: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== -get-intrinsic@^1.0.1, get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: +get-intrinsic@^1.0.1, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== @@ -9870,10 +9851,10 @@ handsontable@=6.2.2: numbro "^2.0.6" pikaday "1.5.1" -happy-dom@^13.2.0: - version "13.3.8" - resolved "https://registry.yarnpkg.com/happy-dom/-/happy-dom-13.3.8.tgz#ee77980813463c5f302a0d8816b86f4e1ac7335d" - integrity sha512-RAbq4oYfJNkVan1m1F3jfA4YEyRY0/ASoNvZsNJbuX85jIypidmsz9jQZD7Tqz0VXA2MhAGfcsh5oshwmwNYSg== +happy-dom@^15.7.4: + version "15.7.4" + resolved "https://registry.yarnpkg.com/happy-dom/-/happy-dom-15.7.4.tgz#05aade59c1d307336001b7004c76dfc6a829f220" + integrity sha512-r1vadDYGMtsHAAsqhDuk4IpPvr6N8MGKy5ntBo7tSdim+pWDxus2PNqOcOt8LuDZ4t3KJHE+gCuzupcx/GKnyQ== dependencies: entities "^4.5.0" webidl-conversions "^7.0.0" @@ -14036,7 +14017,7 @@ object-hash@>=2.0.3, object-hash@^2.0.1: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== -object-inspect@^1.12.0, object-inspect@^1.13.1, object-inspect@^1.9.0: +object-inspect@^1.12.0, object-inspect@^1.13.1: version "1.13.1" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== @@ -15008,13 +14989,6 @@ q@^1.0.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - qs@6.13.0, qs@^6.10.2, qs@^6.11.1: version "6.13.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" @@ -16306,25 +16280,6 @@ semver@~7.5.4: dependencies: lru-cache "^6.0.0" -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - send@0.19.0: version "0.19.0" resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" @@ -16358,16 +16313,6 @@ seq-queue@^0.0.5: resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e" integrity sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4= -serve-static@1.16.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.0.tgz#2bf4ed49f8af311b519c46f272bf6ac3baf38a92" - integrity sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - serve-static@1.16.2: version "1.16.2" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" @@ -16531,16 +16476,7 @@ shx@^0.3.4: minimist "^1.2.3" shelljs "^0.8.5" -side-channel@^1.0.3, side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -side-channel@^1.0.6: +side-channel@^1.0.3, side-channel@^1.0.4, side-channel@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== @@ -17066,7 +17002,7 @@ string-template@>=1.0.0: resolved "https://registry.yarnpkg.com/string-template/-/string-template-1.0.0.tgz#9e9f2233dc00f218718ec379a28a5673ecca8b96" integrity sha1-np8iM9wA8hhxjsN5oopWc+zKi5Y= -"string-width-cjs@npm:string-width@^4.2.0": +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -17084,15 +17020,6 @@ string-width@=4.2.2: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" @@ -17176,7 +17103,7 @@ stringify-entities@^4.0.0: character-entities-html4 "^2.0.0" character-entities-legacy "^3.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -17190,13 +17117,6 @@ strip-ansi@^3.0.0: dependencies: ansi-regex "^2.0.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - strip-ansi@^7.0.1, strip-ansi@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -18978,7 +18898,7 @@ word-wrap@^1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -18996,15 +18916,6 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"