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

Merge pull request #10142 from weseek/support/156162-168175-update-biome-to-ver2

support: Update biome to ver2
Yuki Takei пре 9 месеци
родитељ
комит
5f476d7f4d
46 измењених фајлова са 146 додато и 165 уклоњено
  1. 4 11
      .roo/mcp.json
  2. 1 3
      apps/pdf-converter/src/controllers/pdf.spec.ts
  3. 4 3
      apps/pdf-converter/src/controllers/pdf.ts
  4. 29 24
      biome.json
  5. 1 1
      package.json
  6. 1 2
      packages/core/src/interfaces/common.spec.ts
  7. 2 2
      packages/core/src/interfaces/index.ts
  8. 1 1
      packages/core/src/models/serializers/attachment-serializer.ts
  9. 1 1
      packages/core/src/models/serializers/index.ts
  10. 1 1
      packages/core/src/models/serializers/user-serializer.ts
  11. 1 1
      packages/core/src/swr/index.ts
  12. 6 7
      packages/core/src/utils/index.ts
  13. 1 2
      packages/pluginkit/src/v4/client/utils/growi-facade/growi-react.ts
  14. 1 1
      packages/pluginkit/src/v4/server/utils/template/scan.ts
  15. 1 2
      packages/presentation/src/client/components/GrowiSlides.tsx
  16. 1 2
      packages/presentation/src/client/components/MarpSlides.tsx
  17. 1 3
      packages/presentation/src/client/components/Presentation.tsx
  18. 1 2
      packages/presentation/src/services/use-slides-by-frontmatter.ts
  19. 2 5
      packages/remark-attachment-refs/src/client/components/AttachmentList.tsx
  20. 1 2
      packages/remark-attachment-refs/src/client/components/ExtractedAttachments.tsx
  21. 1 1
      packages/remark-attachment-refs/src/client/components/Ref.tsx
  22. 1 1
      packages/remark-attachment-refs/src/client/components/RefImg.tsx
  23. 1 1
      packages/remark-attachment-refs/src/client/components/Refs.tsx
  24. 1 1
      packages/remark-attachment-refs/src/client/components/RefsImg.tsx
  25. 1 1
      packages/remark-attachment-refs/src/client/components/index.ts
  26. 1 1
      packages/remark-attachment-refs/src/client/index.ts
  27. 1 1
      packages/remark-drawio/src/components/DrawioViewer.tsx
  28. 1 1
      packages/remark-drawio/src/index.ts
  29. 1 1
      packages/remark-growi-directive/src/index.js
  30. 5 2
      packages/remark-growi-directive/src/mdast-util-growi-directive/index.js
  31. 1 1
      packages/remark-growi-directive/src/micromark-extension-growi-directive/index.js
  32. 1 1
      packages/remark-growi-directive/src/micromark-extension-growi-directive/lib/factory-label.js
  33. 2 5
      packages/remark-lsx/src/client/components/Lsx.tsx
  34. 2 4
      packages/remark-lsx/src/client/components/LsxPageList/LsxListView.tsx
  35. 1 2
      packages/remark-lsx/src/client/components/LsxPageList/LsxPage.tsx
  36. 4 2
      packages/remark-lsx/src/client/utils/page-node.ts
  37. 1 1
      packages/remark-lsx/src/server/routes/list-pages/generate-base-query.ts
  38. 1 3
      packages/remark-lsx/src/server/routes/list-pages/index.spec.ts
  39. 1 1
      packages/remark-lsx/src/server/routes/list-pages/index.ts
  40. 5 5
      packages/slack/src/interfaces/index.ts
  41. 1 2
      packages/ui/src/components/Attachment.tsx
  42. 1 2
      packages/ui/src/components/PagePath/PageListMeta.tsx
  43. 1 2
      packages/ui/src/components/PagePath/PagePathLabel.tsx
  44. 10 8
      packages/ui/src/components/UserPicture.tsx
  45. 1 1
      packages/ui/src/components/index.ts
  46. 38 38
      pnpm-lock.yaml

+ 4 - 11
.roo/mcp.json

@@ -2,20 +2,13 @@
   "mcpServers": {
   "mcpServers": {
     "fetch": {
     "fetch": {
       "command": "uvx",
       "command": "uvx",
-      "args": [
-        "mcp-server-fetch"
-      ],
-      "alwaysAllow": [
-        "fetch"
-      ]
+      "args": ["mcp-server-fetch"],
+      "alwaysAllow": ["fetch"]
     },
     },
     "context7": {
     "context7": {
       "type": "streamable-http",
       "type": "streamable-http",
       "url": "https://mcp.context7.com/mcp",
       "url": "https://mcp.context7.com/mcp",
-      "alwaysAllow": [
-        "resolve-library-id",
-        "get-library-docs"
-      ]
+      "alwaysAllow": ["resolve-library-id", "get-library-docs"]
     }
     }
   }
   }
-}
+}

+ 1 - 3
apps/pdf-converter/src/controllers/pdf.spec.ts

@@ -1,10 +1,8 @@
 import { PlatformTest } from '@tsed/platform-http/testing';
 import { PlatformTest } from '@tsed/platform-http/testing';
+import { JobStatus, JobStatusSharedWithGrowi } from 'src/service/pdf-convert';
 import SuperTest from 'supertest';
 import SuperTest from 'supertest';
-
 import Server from '../server';
 import Server from '../server';
 
 
-import { JobStatus, JobStatusSharedWithGrowi } from 'src/service/pdf-convert';
-
 describe('PdfCtrl', () => {
 describe('PdfCtrl', () => {
   beforeAll(PlatformTest.bootstrap(Server));
   beforeAll(PlatformTest.bootstrap(Server));
   afterAll(PlatformTest.reset);
   afterAll(PlatformTest.reset);

+ 4 - 3
apps/pdf-converter/src/controllers/pdf.ts

@@ -10,9 +10,10 @@ import {
   Required,
   Required,
   Returns,
   Returns,
 } from '@tsed/schema';
 } from '@tsed/schema';
-
-import PdfConvertService from '../service/pdf-convert.js';
-import { JobStatus, JobStatusSharedWithGrowi } from '../service/pdf-convert.js';
+import PdfConvertService, {
+  JobStatus,
+  JobStatusSharedWithGrowi,
+} from '../service/pdf-convert.js';
 
 
 @Controller('/pdf')
 @Controller('/pdf')
 class PdfCtrl {
 class PdfCtrl {

+ 29 - 24
biome.json

@@ -1,35 +1,40 @@
 {
 {
   "$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
   "$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
   "files": {
   "files": {
-    "ignore": [
-      "dist/**",
-      "node_modules/**",
-      "coverage/**",
-      "vite.config.ts.timestamp-*",
-      "vite.server.config.ts.timestamp-*",
-      "vite.client.config.ts.timestamp-*",
-      ".pnpm-store/**",
-      ".turbo/**",
-      ".vscode/**",
-      "turbo.json",
-      "./bin/**",
-      "./tsconfig.base.json",
-      ".devcontainer/**",
-      ".eslintrc.js",
-      ".stylelintrc.json",
-      "package.json",
-      "./apps/app/**",
-      "./apps/slackbot-proxy/**",
-      "./packages/editor/**",
-      "./packages/pdf-converter-client/src/index.ts"
+    "includes": [
+      "**",
+      "!**/dist/**",
+      "!**/node_modules/**",
+      "!**/coverage/**",
+      "!**/vite.config.ts.timestamp-*",
+      "!**/vite.server.config.ts.timestamp-*",
+      "!**/vite.client.config.ts.timestamp-*",
+      "!**/.pnpm-store/**",
+      "!**/.turbo/**",
+      "!**/.vscode/**",
+      "!**/turbo.json",
+      "!bin/**",
+      "!tsconfig.base.json",
+      "!**/.devcontainer/**",
+      "!**/.eslintrc.js",
+      "!**/.stylelintrc.json",
+      "!**/package.json",
+      "!apps/app/**",
+      "!apps/slackbot-proxy/**",
+      "!packages/editor/**",
+      "!packages/pdf-converter-client/src/index.ts"
     ]
     ]
   },
   },
   "formatter": {
   "formatter": {
     "enabled": true,
     "enabled": true,
     "indentStyle": "space"
     "indentStyle": "space"
   },
   },
-  "organizeImports": {
-    "enabled": true
+  "assist": {
+    "actions": {
+      "source": {
+        "organizeImports": "on"
+      }
+    }
   },
   },
   "linter": {
   "linter": {
     "enabled": true,
     "enabled": true,
@@ -47,7 +52,7 @@
   },
   },
   "overrides": [
   "overrides": [
     {
     {
-      "include": ["./apps/pdf-converter/**"],
+      "includes": ["apps/pdf-converter/**"],
       "linter": {
       "linter": {
         "rules": {
         "rules": {
           "style": {
           "style": {

+ 1 - 1
package.json

@@ -42,7 +42,7 @@
     "vite-plugin-dts": "v4.2.1 causes the unexpected error 'Cannot find package 'vue-tsc''"
     "vite-plugin-dts": "v4.2.1 causes the unexpected error 'Cannot find package 'vue-tsc''"
   },
   },
   "devDependencies": {
   "devDependencies": {
-    "@biomejs/biome": "1.9.4",
+    "@biomejs/biome": "2.0.6",
     "@changesets/changelog-github": "^0.5.0",
     "@changesets/changelog-github": "^0.5.0",
     "@changesets/cli": "^2.27.3",
     "@changesets/cli": "^2.27.3",
     "@faker-js/faker": "^9.0.1",
     "@faker-js/faker": "^9.0.1",

+ 1 - 2
packages/core/src/interfaces/common.spec.ts

@@ -3,8 +3,7 @@ import { Types } from 'mongoose';
 import { mock } from 'vitest-mock-extended';
 import { mock } from 'vitest-mock-extended';
 
 
 import { getIdForRef, isPopulated } from './common';
 import { getIdForRef, isPopulated } from './common';
-import type { IPageHasId } from './page';
-import type { IPage } from './page';
+import type { IPage, IPageHasId } from './page';
 
 
 describe('isPopulated', () => {
 describe('isPopulated', () => {
   it('should return true when the argument implements HasObjectId', () => {
   it('should return true when the argument implements HasObjectId', () => {

+ 2 - 2
packages/core/src/interfaces/index.ts

@@ -1,9 +1,8 @@
-export * from './primitive/string';
 export * from './attachment';
 export * from './attachment';
 export * from './color-scheme';
 export * from './color-scheme';
 export * from './color-scheme';
 export * from './color-scheme';
-export * from './config-manager';
 export * from './common';
 export * from './common';
+export * from './config-manager';
 export * from './external-account';
 export * from './external-account';
 export * from './growi-app-info';
 export * from './growi-app-info';
 export * from './growi-facade';
 export * from './growi-facade';
@@ -12,6 +11,7 @@ export * from './has-object-id';
 export * from './lang';
 export * from './lang';
 export * from './locale';
 export * from './locale';
 export * from './page';
 export * from './page';
+export * from './primitive/string';
 export * from './revision';
 export * from './revision';
 export * from './subscription';
 export * from './subscription';
 export * from './tag';
 export * from './tag';

+ 1 - 1
packages/core/src/models/serializers/attachment-serializer.ts

@@ -2,7 +2,7 @@ import { Document } from 'mongoose';
 
 
 import type { IAttachment, IUser } from '~/interfaces';
 import type { IAttachment, IUser } from '~/interfaces';
 
 
-import { type Ref, isPopulated, isRef } from '../../interfaces/common';
+import { isPopulated, isRef, type Ref } from '../../interfaces/common';
 
 
 import {
 import {
   type IUserSerializedSecurely,
   type IUserSerializedSecurely,

+ 1 - 1
packages/core/src/models/serializers/index.ts

@@ -1,2 +1,2 @@
-export * from './user-serializer';
 export * from './attachment-serializer';
 export * from './attachment-serializer';
+export * from './user-serializer';

+ 1 - 1
packages/core/src/models/serializers/user-serializer.ts

@@ -1,6 +1,6 @@
 import { Document } from 'mongoose';
 import { Document } from 'mongoose';
 
 
-import { type Ref, isPopulated, isRef } from '../../interfaces/common';
+import { isPopulated, isRef, type Ref } from '../../interfaces/common';
 import type { IUser } from '../../interfaces/user';
 import type { IUser } from '../../interfaces/user';
 
 
 export type IUserSerializedSecurely<U extends IUser> = Omit<
 export type IUserSerializedSecurely<U extends IUser> = Omit<

+ 1 - 1
packages/core/src/swr/index.ts

@@ -1,3 +1,3 @@
+export * from './use-global-socket';
 export * from './use-swr-static';
 export * from './use-swr-static';
 export * from './with-utils';
 export * from './with-utils';
-export * from './use-global-socket';

+ 6 - 7
packages/core/src/utils/index.ts

@@ -3,13 +3,12 @@ import * as _envUtils from './env-utils';
 // export utils by *.js
 // export utils by *.js
 export const envUtils = _envUtils;
 export const envUtils = _envUtils;
 
 
-// export utils with namespace
-export * as templateChecker from './template-checker';
+export * from './browser-utils';
+export * from './growi-theme-metadata';
+export * as deepEquals from './is-deep-equals';
 export * as objectIdUtils from './objectid-utils';
 export * as objectIdUtils from './objectid-utils';
 export * as pagePathUtils from './page-path-utils';
 export * as pagePathUtils from './page-path-utils';
-export * as pathUtils from './path-utils';
 export * as pageUtils from './page-utils';
 export * as pageUtils from './page-utils';
-export * as deepEquals from './is-deep-equals';
-
-export * from './browser-utils';
-export * from './growi-theme-metadata';
+export * as pathUtils from './path-utils';
+// export utils with namespace
+export * as templateChecker from './template-checker';

+ 1 - 2
packages/pluginkit/src/v4/client/utils/growi-facade/growi-react.ts

@@ -1,6 +1,5 @@
-import type React from 'react';
-
 import type { GrowiFacade } from '@growi/core';
 import type { GrowiFacade } from '@growi/core';
+import type React from 'react';
 
 
 declare global {
 declare global {
   interface Window {
   interface Window {

+ 1 - 1
packages/pluginkit/src/v4/server/utils/template/scan.ts

@@ -3,9 +3,9 @@ import path from 'node:path';
 
 
 import type { GrowiTemplatePluginValidationData } from '../../../../model';
 import type { GrowiTemplatePluginValidationData } from '../../../../model';
 import {
 import {
+  isTemplateStatusValid,
   type TemplateStatus,
   type TemplateStatus,
   type TemplateSummary,
   type TemplateSummary,
-  isTemplateStatusValid,
 } from '../../../interfaces';
 } from '../../../interfaces';
 
 
 import { getStatus } from './get-status';
 import { getStatus } from './get-status';

+ 1 - 2
packages/presentation/src/client/components/GrowiSlides.tsx

@@ -1,6 +1,5 @@
-import type { JSX } from 'react';
-
 import Head from 'next/head';
 import Head from 'next/head';
+import type { JSX } from 'react';
 import ReactMarkdown from 'react-markdown';
 import ReactMarkdown from 'react-markdown';
 
 
 import type { PresentationOptions } from '../consts';
 import type { PresentationOptions } from '../consts';

+ 1 - 2
packages/presentation/src/client/components/MarpSlides.tsx

@@ -1,6 +1,5 @@
-import type { JSX } from 'react';
-
 import Head from 'next/head';
 import Head from 'next/head';
+import type { JSX } from 'react';
 
 
 import { presentationMarpit, slideMarpit } from '../services/growi-marpit';
 import { presentationMarpit, slideMarpit } from '../services/growi-marpit';
 
 

+ 1 - 3
packages/presentation/src/client/components/Presentation.tsx

@@ -3,10 +3,8 @@ import { type JSX, useEffect } from 'react';
 import Reveal from 'reveal.js';
 import Reveal from 'reveal.js';
 
 
 import type { PresentationOptions } from '../consts';
 import type { PresentationOptions } from '../consts';
-
-import { Slides } from './Slides';
-
 import styles from './Presentation.module.scss';
 import styles from './Presentation.module.scss';
+import { Slides } from './Slides';
 
 
 const moduleClass = styles['grw-presentation'] ?? '';
 const moduleClass = styles['grw-presentation'] ?? '';
 
 

+ 1 - 2
packages/presentation/src/services/use-slides-by-frontmatter.ts

@@ -1,6 +1,5 @@
-import { useEffect, useState } from 'react';
-
 import type { Parent, Root } from 'mdast';
 import type { Parent, Root } from 'mdast';
+import { useEffect, useState } from 'react';
 import type { Processor } from 'unified';
 import type { Processor } from 'unified';
 
 
 type ParseResult = {
 type ParseResult = {

+ 2 - 5
packages/remark-attachment-refs/src/client/components/AttachmentList.tsx

@@ -1,13 +1,10 @@
-import { type JSX, useCallback } from 'react';
-
 import type { IAttachmentHasId } from '@growi/core';
 import type { IAttachmentHasId } from '@growi/core';
 import { Attachment, LoadingSpinner } from '@growi/ui/dist/components';
 import { Attachment, LoadingSpinner } from '@growi/ui/dist/components';
-
+import { type JSX, useCallback } from 'react';
+import styles from './AttachmentList.module.scss';
 import { ExtractedAttachments } from './ExtractedAttachments';
 import { ExtractedAttachments } from './ExtractedAttachments';
 import type { RefsContext } from './util/refs-context';
 import type { RefsContext } from './util/refs-context';
 
 
-import styles from './AttachmentList.module.scss';
-
 const AttachmentLink = Attachment;
 const AttachmentLink = Attachment;
 
 
 type Props = {
 type Props = {

+ 1 - 2
packages/remark-attachment-refs/src/client/components/ExtractedAttachments.tsx

@@ -1,7 +1,6 @@
-import React, { useCallback, type JSX } from 'react';
-
 import type { IAttachmentHasId } from '@growi/core';
 import type { IAttachmentHasId } from '@growi/core';
 import type { Property } from 'csstype';
 import type { Property } from 'csstype';
+import React, { type JSX, useCallback } from 'react';
 // import Carousel, { Modal, ModalGateway } from 'react-images';
 // import Carousel, { Modal, ModalGateway } from 'react-images';
 
 
 import type { RefsContext } from './util/refs-context';
 import type { RefsContext } from './util/refs-context';

+ 1 - 1
packages/remark-attachment-refs/src/client/components/Ref.tsx

@@ -1,4 +1,4 @@
-import React, { useMemo, type JSX } from 'react';
+import React, { type JSX, useMemo } from 'react';
 
 
 import { useSWRxRef } from '../stores/refs';
 import { useSWRxRef } from '../stores/refs';
 
 

+ 1 - 1
packages/remark-attachment-refs/src/client/components/RefImg.tsx

@@ -1,4 +1,4 @@
-import React, { useMemo, type JSX } from 'react';
+import React, { type JSX, useMemo } from 'react';
 
 
 import { useSWRxRef } from '../stores/refs';
 import { useSWRxRef } from '../stores/refs';
 
 

+ 1 - 1
packages/remark-attachment-refs/src/client/components/Refs.tsx

@@ -1,4 +1,4 @@
-import React, { useMemo, type JSX } from 'react';
+import React, { type JSX, useMemo } from 'react';
 
 
 import { useSWRxRefs } from '../stores/refs';
 import { useSWRxRefs } from '../stores/refs';
 
 

+ 1 - 1
packages/remark-attachment-refs/src/client/components/RefsImg.tsx

@@ -1,4 +1,4 @@
-import React, { useMemo, type JSX } from 'react';
+import React, { type JSX, useMemo } from 'react';
 
 
 import { useSWRxRefs } from '../stores/refs';
 import { useSWRxRefs } from '../stores/refs';
 
 

+ 1 - 1
packages/remark-attachment-refs/src/client/components/index.ts

@@ -1,5 +1,5 @@
+export { Gallery, GalleryImmutable } from './Gallery';
 export { Ref, RefImmutable } from './Ref';
 export { Ref, RefImmutable } from './Ref';
 export { RefImg, RefImgImmutable } from './RefImg';
 export { RefImg, RefImgImmutable } from './RefImg';
 export { Refs, RefsImmutable } from './Refs';
 export { Refs, RefsImmutable } from './Refs';
 export { RefsImg, RefsImgImmutable } from './RefsImg';
 export { RefsImg, RefsImgImmutable } from './RefsImg';
-export { Gallery, GalleryImmutable } from './Gallery';

+ 1 - 1
packages/remark-attachment-refs/src/client/index.ts

@@ -1,2 +1,2 @@
-export * from './services/renderer/refs';
 export * from './components';
 export * from './components';
+export * from './services/renderer/refs';

+ 1 - 1
packages/remark-drawio/src/components/DrawioViewer.tsx

@@ -1,7 +1,7 @@
 import {
 import {
   type JSX,
   type JSX,
-  type ReactNode,
   memo,
   memo,
+  type ReactNode,
   useCallback,
   useCallback,
   useEffect,
   useEffect,
   useMemo,
   useMemo,

+ 1 - 1
packages/remark-drawio/src/index.ts

@@ -1,5 +1,5 @@
-export * from './interfaces/graph-viewer';
 export * from './components/DrawioViewer';
 export * from './components/DrawioViewer';
+export * from './interfaces/graph-viewer';
 export * from './services/renderer/remark-drawio';
 export * from './services/renderer/remark-drawio';
 export * from './utils/embed';
 export * from './utils/embed';
 export * from './utils/global';
 export * from './utils/global';

+ 1 - 1
packages/remark-growi-directive/src/index.js

@@ -3,8 +3,8 @@ import { remarkGrowiDirectivePlugin } from './remark-growi-directive.js';
 export {
 export {
   DirectiveTypeObject as remarkGrowiDirectivePluginType,
   DirectiveTypeObject as remarkGrowiDirectivePluginType,
   LeafGrowiPluginDirective,
   LeafGrowiPluginDirective,
-  TextGrowiPluginDirective,
   LeafGrowiPluginDirectiveData,
   LeafGrowiPluginDirectiveData,
+  TextGrowiPluginDirective,
   TextGrowiPluginDirectiveData,
   TextGrowiPluginDirectiveData,
 } from './mdast-util-growi-directive';
 } from './mdast-util-growi-directive';
 
 

+ 5 - 2
packages/remark-growi-directive/src/mdast-util-growi-directive/index.js

@@ -1,2 +1,5 @@
-export { directiveFromMarkdown, directiveToMarkdown } from './lib/index.js';
-export { DirectiveType as DirectiveTypeObject } from './lib/index.js';
+export {
+  DirectiveType as DirectiveTypeObject,
+  directiveFromMarkdown,
+  directiveToMarkdown,
+} from './lib/index.js';

+ 1 - 1
packages/remark-growi-directive/src/micromark-extension-growi-directive/index.js

@@ -3,5 +3,5 @@
  * @typedef {import('./lib/html.js').HtmlOptions} HtmlOptions
  * @typedef {import('./lib/html.js').HtmlOptions} HtmlOptions
  */
  */
 
 
-export { directive } from './lib/syntax.js';
 export { directiveHtml } from './lib/html.js';
 export { directiveHtml } from './lib/html.js';
+export { directive } from './lib/syntax.js';

+ 1 - 1
packages/remark-growi-directive/src/micromark-extension-growi-directive/lib/factory-label.js

@@ -5,7 +5,7 @@
  */
  */
 
 
 import { markdownLineEnding } from 'micromark-util-character';
 import { markdownLineEnding } from 'micromark-util-character';
-import { constants, codes, types } from 'micromark-util-symbol';
+import { codes, constants, types } from 'micromark-util-symbol';
 import { ok as assert } from 'uvu/assert';
 import { ok as assert } from 'uvu/assert';
 
 
 // This is a fork of:
 // This is a fork of:

+ 2 - 5
packages/remark-lsx/src/client/components/Lsx.tsx

@@ -1,15 +1,12 @@
-import React, { useCallback, useMemo, type JSX } from 'react';
-
 import { LoadingSpinner } from '@growi/ui/dist/components';
 import { LoadingSpinner } from '@growi/ui/dist/components';
+import React, { type JSX, useCallback, useMemo } from 'react';
 
 
 import { useSWRxLsx } from '../stores/lsx';
 import { useSWRxLsx } from '../stores/lsx';
 import { generatePageNodeTree } from '../utils/page-node';
 import { generatePageNodeTree } from '../utils/page-node';
-
+import styles from './Lsx.module.scss';
 import { LsxListView } from './LsxPageList/LsxListView';
 import { LsxListView } from './LsxPageList/LsxListView';
 import { LsxContext } from './lsx-context';
 import { LsxContext } from './lsx-context';
 
 
-import styles from './Lsx.module.scss';
-
 type Props = {
 type Props = {
   children: React.ReactNode;
   children: React.ReactNode;
   className?: string;
   className?: string;

+ 2 - 4
packages/remark-lsx/src/client/components/LsxPageList/LsxListView.tsx

@@ -1,11 +1,9 @@
-import React, { useMemo, type JSX } from 'react';
+import React, { type JSX, useMemo } from 'react';
 
 
 import type { PageNode } from '../../../interfaces/page-node';
 import type { PageNode } from '../../../interfaces/page-node';
 import type { LsxContext } from '../lsx-context';
 import type { LsxContext } from '../lsx-context';
-
-import { LsxPage } from './LsxPage';
-
 import styles from './LsxListView.module.scss';
 import styles from './LsxListView.module.scss';
+import { LsxPage } from './LsxPage';
 
 
 type Props = {
 type Props = {
   nodeTree?: PageNode[];
   nodeTree?: PageNode[];

+ 1 - 2
packages/remark-lsx/src/client/components/LsxPageList/LsxPage.tsx

@@ -1,8 +1,7 @@
-import React, { useMemo, type JSX } from 'react';
-
 import { pathUtils } from '@growi/core/dist/utils';
 import { pathUtils } from '@growi/core/dist/utils';
 import { PageListMeta, PagePathLabel } from '@growi/ui/dist/components';
 import { PageListMeta, PagePathLabel } from '@growi/ui/dist/components';
 import Link from 'next/link';
 import Link from 'next/link';
+import React, { type JSX, useMemo } from 'react';
 
 
 import type { PageNode } from '../../../interfaces/page-node';
 import type { PageNode } from '../../../interfaces/page-node';
 import type { LsxContext } from '../lsx-context';
 import type { LsxContext } from '../lsx-context';

+ 4 - 2
packages/remark-lsx/src/client/utils/page-node.ts

@@ -1,7 +1,9 @@
 import type { IPageHasId } from '@growi/core';
 import type { IPageHasId } from '@growi/core';
 import type { ParseRangeResult } from '@growi/core/dist/remark-plugins';
 import type { ParseRangeResult } from '@growi/core/dist/remark-plugins';
-import { getParentPath as getParentPathCore } from '@growi/core/dist/utils/path-utils';
-import { removeTrailingSlash } from '@growi/core/dist/utils/path-utils';
+import {
+  getParentPath as getParentPathCore,
+  removeTrailingSlash,
+} from '@growi/core/dist/utils/path-utils';
 
 
 import type { PageNode } from '../../interfaces/page-node';
 import type { PageNode } from '../../interfaces/page-node';
 import { getDepthOfPath } from '../../utils/depth-utils';
 import { getDepthOfPath } from '../../utils/depth-utils';

+ 1 - 1
packages/remark-lsx/src/server/routes/list-pages/generate-base-query.ts

@@ -1,6 +1,6 @@
 import type { IPageHasId, IUser } from '@growi/core';
 import type { IPageHasId, IUser } from '@growi/core';
-import { model } from 'mongoose';
 import type { Document, Query } from 'mongoose';
 import type { Document, Query } from 'mongoose';
+import { model } from 'mongoose';
 
 
 export type PageQuery = Query<IPageHasId[], Document>;
 export type PageQuery = Query<IPageHasId[], Document>;
 
 

+ 1 - 3
packages/remark-lsx/src/server/routes/list-pages/index.spec.ts

@@ -4,10 +4,8 @@ import createError from 'http-errors';
 import { mock } from 'vitest-mock-extended';
 import { mock } from 'vitest-mock-extended';
 
 
 import type { LsxApiParams, LsxApiResponseData } from '../../../interfaces/api';
 import type { LsxApiParams, LsxApiResponseData } from '../../../interfaces/api';
-
-import type { PageQuery, PageQueryBuilder } from './generate-base-query';
-
 import { listPages } from '.';
 import { listPages } from '.';
+import type { PageQuery, PageQueryBuilder } from './generate-base-query';
 
 
 interface IListPagesRequest
 interface IListPagesRequest
   extends Request<undefined, undefined, undefined, LsxApiParams> {
   extends Request<undefined, undefined, undefined, LsxApiParams> {

+ 1 - 1
packages/remark-lsx/src/server/routes/list-pages/index.ts

@@ -10,7 +10,7 @@ import type { LsxApiParams, LsxApiResponseData } from '../../../interfaces/api';
 import { addDepthCondition } from './add-depth-condition';
 import { addDepthCondition } from './add-depth-condition';
 import { addNumCondition } from './add-num-condition';
 import { addNumCondition } from './add-num-condition';
 import { addSortCondition } from './add-sort-condition';
 import { addSortCondition } from './add-sort-condition';
-import { type PageQuery, generateBaseQuery } from './generate-base-query';
+import { generateBaseQuery, type PageQuery } from './generate-base-query';
 import { getToppageViewersCount } from './get-toppage-viewers-count';
 import { getToppageViewersCount } from './get-toppage-viewers-count';
 
 
 const { addTrailingSlash, removeTrailingSlash } = pathUtils;
 const { addTrailingSlash, removeTrailingSlash } = pathUtils;

+ 5 - 5
packages/slack/src/interfaces/index.ts

@@ -1,13 +1,13 @@
 export * from './channel';
 export * from './channel';
 export * from './connection-status';
 export * from './connection-status';
+export * from './growi-bot-event';
+export * from './growi-command';
 export * from './growi-command-processor';
 export * from './growi-command-processor';
-export * from './growi-interaction-processor';
 export * from './growi-event-processor';
 export * from './growi-event-processor';
-export * from './growi-command';
-export * from './growi-bot-event';
+export * from './growi-interaction-processor';
 export * from './request-between-growi-and-proxy';
 export * from './request-between-growi-and-proxy';
 export * from './request-from-slack';
 export * from './request-from-slack';
+export * from './respond-util';
 export * from './response-url';
 export * from './response-url';
-export * from './slackbot-types';
 export * from './response-url';
 export * from './response-url';
-export * from './respond-util';
+export * from './slackbot-types';

+ 1 - 2
packages/ui/src/components/Attachment.tsx

@@ -1,7 +1,6 @@
-import type { JSX } from 'react';
-
 import type { IAttachmentHasId } from '@growi/core';
 import type { IAttachmentHasId } from '@growi/core';
 import { format } from 'date-fns/format';
 import { format } from 'date-fns/format';
+import type { JSX } from 'react';
 
 
 import { UserPicture } from './UserPicture';
 import { UserPicture } from './UserPicture';
 
 

+ 1 - 2
packages/ui/src/components/PagePath/PageListMeta.tsx

@@ -1,7 +1,6 @@
-import type { FC, JSX } from 'react';
-
 import type { IPageHasId } from '@growi/core';
 import type { IPageHasId } from '@growi/core';
 import { pagePathUtils, templateChecker } from '@growi/core/dist/utils';
 import { pagePathUtils, templateChecker } from '@growi/core/dist/utils';
+import type { FC, JSX } from 'react';
 
 
 const { isTopPage } = pagePathUtils;
 const { isTopPage } = pagePathUtils;
 const { checkTemplatePath } = templateChecker;
 const { checkTemplatePath } = templateChecker;

+ 1 - 2
packages/ui/src/components/PagePath/PagePathLabel.tsx

@@ -1,6 +1,5 @@
-import type { FC, ReactNode } from 'react';
-
 import { DevidedPagePath } from '@growi/core/dist/models';
 import { DevidedPagePath } from '@growi/core/dist/models';
+import type { FC, ReactNode } from 'react';
 
 
 type TextElemProps = {
 type TextElemProps = {
   children?: ReactNode;
   children?: ReactNode;

+ 10 - 8
packages/ui/src/components/UserPicture.tsx

@@ -1,16 +1,15 @@
+import type { IUser, Ref } from '@growi/core';
+import { pagePathUtils } from '@growi/core/dist/utils';
+import dynamic from 'next/dynamic';
+import { useRouter } from 'next/router';
 import {
 import {
-  type JSX,
-  type ReactNode,
   forwardRef,
   forwardRef,
+  type JSX,
   memo,
   memo,
+  type ReactNode,
   useCallback,
   useCallback,
   useRef,
   useRef,
 } from 'react';
 } from 'react';
-
-import type { IUser, Ref } from '@growi/core';
-import { pagePathUtils } from '@growi/core/dist/utils';
-import dynamic from 'next/dynamic';
-import { useRouter } from 'next/router';
 import type { UncontrolledTooltipProps } from 'reactstrap';
 import type { UncontrolledTooltipProps } from 'reactstrap';
 
 
 import styles from './UserPicture.module.scss';
 import styles from './UserPicture.module.scss';
@@ -68,12 +67,15 @@ const UserPictureRootWithLink = forwardRef<
   // Nested anchor tags causes a warning.
   // Nested anchor tags causes a warning.
   // https://stackoverflow.com/questions/13052598/creating-anchor-tag-inside-anchor-taga
   // https://stackoverflow.com/questions/13052598/creating-anchor-tag-inside-anchor-taga
   return (
   return (
+    // biome-ignore lint/a11y/useSemanticElements: ignore
     <span
     <span
       ref={ref}
       ref={ref}
       className={props.className}
       className={props.className}
       onClick={clickHandler}
       onClick={clickHandler}
-      onKeyDown={() => {}}
+      onKeyDown={clickHandler}
       style={{ cursor: 'pointer' }}
       style={{ cursor: 'pointer' }}
+      role="link"
+      tabIndex={0}
     >
     >
       {props.children}
       {props.children}
     </span>
     </span>

+ 1 - 1
packages/ui/src/components/index.ts

@@ -1,4 +1,4 @@
 export * from './Attachment';
 export * from './Attachment';
-export * from './PagePath';
 export * from './LoadingSpinner';
 export * from './LoadingSpinner';
+export * from './PagePath';
 export * from './UserPicture';
 export * from './UserPicture';

+ 38 - 38
pnpm-lock.yaml

@@ -14,8 +14,8 @@ importers:
   .:
   .:
     devDependencies:
     devDependencies:
       '@biomejs/biome':
       '@biomejs/biome':
-        specifier: 1.9.4
-        version: 1.9.4
+        specifier: 2.0.6
+        version: 2.0.6
       '@changesets/changelog-github':
       '@changesets/changelog-github':
         specifier: ^0.5.0
         specifier: ^0.5.0
         version: 0.5.0(encoding@0.1.13)
         version: 0.5.0(encoding@0.1.13)
@@ -2458,55 +2458,55 @@ packages:
   '@bcoe/v8-coverage@0.2.3':
   '@bcoe/v8-coverage@0.2.3':
     resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
     resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
 
 
-  '@biomejs/biome@1.9.4':
-    resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==}
+  '@biomejs/biome@2.0.6':
+    resolution: {integrity: sha512-RRP+9cdh5qwe2t0gORwXaa27oTOiQRQvrFf49x2PA1tnpsyU7FIHX4ZOFMtBC4QNtyWsN7Dqkf5EDbg4X+9iqA==}
     engines: {node: '>=14.21.3'}
     engines: {node: '>=14.21.3'}
     hasBin: true
     hasBin: true
 
 
-  '@biomejs/cli-darwin-arm64@1.9.4':
-    resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==}
+  '@biomejs/cli-darwin-arm64@2.0.6':
+    resolution: {integrity: sha512-AzdiNNjNzsE6LfqWyBvcL29uWoIuZUkndu+wwlXW13EKcBHbbKjNQEZIJKYDc6IL+p7bmWGx3v9ZtcRyIoIz5A==}
     engines: {node: '>=14.21.3'}
     engines: {node: '>=14.21.3'}
     cpu: [arm64]
     cpu: [arm64]
     os: [darwin]
     os: [darwin]
 
 
-  '@biomejs/cli-darwin-x64@1.9.4':
-    resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==}
+  '@biomejs/cli-darwin-x64@2.0.6':
+    resolution: {integrity: sha512-wJjjP4E7bO4WJmiQaLnsdXMa516dbtC6542qeRkyJg0MqMXP0fvs4gdsHhZ7p9XWTAmGIjZHFKXdsjBvKGIJJQ==}
     engines: {node: '>=14.21.3'}
     engines: {node: '>=14.21.3'}
     cpu: [x64]
     cpu: [x64]
     os: [darwin]
     os: [darwin]
 
 
-  '@biomejs/cli-linux-arm64-musl@1.9.4':
-    resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==}
+  '@biomejs/cli-linux-arm64-musl@2.0.6':
+    resolution: {integrity: sha512-CVPEMlin3bW49sBqLBg2x016Pws7eUXA27XYDFlEtponD0luYjg2zQaMJ2nOqlkKG9fqzzkamdYxHdMDc2gZFw==}
     engines: {node: '>=14.21.3'}
     engines: {node: '>=14.21.3'}
     cpu: [arm64]
     cpu: [arm64]
     os: [linux]
     os: [linux]
 
 
-  '@biomejs/cli-linux-arm64@1.9.4':
-    resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==}
+  '@biomejs/cli-linux-arm64@2.0.6':
+    resolution: {integrity: sha512-ZSVf6TYo5rNMUHIW1tww+rs/krol7U5A1Is/yzWyHVZguuB0lBnIodqyFuwCNqG9aJGyk7xIMS8HG0qGUPz0SA==}
     engines: {node: '>=14.21.3'}
     engines: {node: '>=14.21.3'}
     cpu: [arm64]
     cpu: [arm64]
     os: [linux]
     os: [linux]
 
 
-  '@biomejs/cli-linux-x64-musl@1.9.4':
-    resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==}
+  '@biomejs/cli-linux-x64-musl@2.0.6':
+    resolution: {integrity: sha512-mKHE/e954hR/hSnAcJSjkf4xGqZc/53Kh39HVW1EgO5iFi0JutTN07TSjEMg616julRtfSNJi0KNyxvc30Y4rQ==}
     engines: {node: '>=14.21.3'}
     engines: {node: '>=14.21.3'}
     cpu: [x64]
     cpu: [x64]
     os: [linux]
     os: [linux]
 
 
-  '@biomejs/cli-linux-x64@1.9.4':
-    resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==}
+  '@biomejs/cli-linux-x64@2.0.6':
+    resolution: {integrity: sha512-geM1MkHTV1Kh2Cs/Xzot9BOF3WBacihw6bkEmxkz4nSga8B9/hWy5BDiOG3gHDGIBa8WxT0nzsJs2f/hPqQIQw==}
     engines: {node: '>=14.21.3'}
     engines: {node: '>=14.21.3'}
     cpu: [x64]
     cpu: [x64]
     os: [linux]
     os: [linux]
 
 
-  '@biomejs/cli-win32-arm64@1.9.4':
-    resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==}
+  '@biomejs/cli-win32-arm64@2.0.6':
+    resolution: {integrity: sha512-290V4oSFoKaprKE1zkYVsDfAdn0An5DowZ+GIABgjoq1ndhvNxkJcpxPsiYtT7slbVe3xmlT0ncdfOsN7KruzA==}
     engines: {node: '>=14.21.3'}
     engines: {node: '>=14.21.3'}
     cpu: [arm64]
     cpu: [arm64]
     os: [win32]
     os: [win32]
 
 
-  '@biomejs/cli-win32-x64@1.9.4':
-    resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==}
+  '@biomejs/cli-win32-x64@2.0.6':
+    resolution: {integrity: sha512-bfM1Bce0d69Ao7pjTjUS+AWSZ02+5UHdiAP85Th8e9yV5xzw6JrHXbL5YWlcEKQ84FIZMdDc7ncuti1wd2sdbw==}
     engines: {node: '>=14.21.3'}
     engines: {node: '>=14.21.3'}
     cpu: [x64]
     cpu: [x64]
     os: [win32]
     os: [win32]
@@ -16296,39 +16296,39 @@ snapshots:
 
 
   '@bcoe/v8-coverage@0.2.3': {}
   '@bcoe/v8-coverage@0.2.3': {}
 
 
-  '@biomejs/biome@1.9.4':
+  '@biomejs/biome@2.0.6':
     optionalDependencies:
     optionalDependencies:
-      '@biomejs/cli-darwin-arm64': 1.9.4
-      '@biomejs/cli-darwin-x64': 1.9.4
-      '@biomejs/cli-linux-arm64': 1.9.4
-      '@biomejs/cli-linux-arm64-musl': 1.9.4
-      '@biomejs/cli-linux-x64': 1.9.4
-      '@biomejs/cli-linux-x64-musl': 1.9.4
-      '@biomejs/cli-win32-arm64': 1.9.4
-      '@biomejs/cli-win32-x64': 1.9.4
-
-  '@biomejs/cli-darwin-arm64@1.9.4':
+      '@biomejs/cli-darwin-arm64': 2.0.6
+      '@biomejs/cli-darwin-x64': 2.0.6
+      '@biomejs/cli-linux-arm64': 2.0.6
+      '@biomejs/cli-linux-arm64-musl': 2.0.6
+      '@biomejs/cli-linux-x64': 2.0.6
+      '@biomejs/cli-linux-x64-musl': 2.0.6
+      '@biomejs/cli-win32-arm64': 2.0.6
+      '@biomejs/cli-win32-x64': 2.0.6
+
+  '@biomejs/cli-darwin-arm64@2.0.6':
     optional: true
     optional: true
 
 
-  '@biomejs/cli-darwin-x64@1.9.4':
+  '@biomejs/cli-darwin-x64@2.0.6':
     optional: true
     optional: true
 
 
-  '@biomejs/cli-linux-arm64-musl@1.9.4':
+  '@biomejs/cli-linux-arm64-musl@2.0.6':
     optional: true
     optional: true
 
 
-  '@biomejs/cli-linux-arm64@1.9.4':
+  '@biomejs/cli-linux-arm64@2.0.6':
     optional: true
     optional: true
 
 
-  '@biomejs/cli-linux-x64-musl@1.9.4':
+  '@biomejs/cli-linux-x64-musl@2.0.6':
     optional: true
     optional: true
 
 
-  '@biomejs/cli-linux-x64@1.9.4':
+  '@biomejs/cli-linux-x64@2.0.6':
     optional: true
     optional: true
 
 
-  '@biomejs/cli-win32-arm64@1.9.4':
+  '@biomejs/cli-win32-arm64@2.0.6':
     optional: true
     optional: true
 
 
-  '@biomejs/cli-win32-x64@1.9.4':
+  '@biomejs/cli-win32-x64@2.0.6':
     optional: true
     optional: true
 
 
   '@braintree/sanitize-url@7.1.0': {}
   '@braintree/sanitize-url@7.1.0': {}