diff --git a/.github/scripts/transform-message.ts b/.github/scripts/transform-message.ts index fd0519f..864b7d0 100644 --- a/.github/scripts/transform-message.ts +++ b/.github/scripts/transform-message.ts @@ -5,8 +5,10 @@ type GitHubSchema = components['schemas']; type GitHubUser = GitHubSchema['simple-user']; -interface GitHubAction - extends Record<'event_name' | 'actor' | 'server_url' | 'repository', string> { +interface GitHubAction extends Record< + 'event_name' | 'actor' | 'server_url' | 'repository', + string +> { action?: string; ref?: string; ref_name?: string; @@ -21,148 +23,201 @@ interface GitHubAction } // Helper functions -const getActionText = (action?: string) => - action === 'closed' ? '关闭' : action?.includes('open') ? '打开' : '编辑'; - -const createLink = (href: string, text = href) => ({ tag: 'a', href, text }); - -const createText = (text: string) => ({ tag: 'text', text }); - -// create user link -const createUserLink = (user: GitHubUser) => - user ? createLink(user.html_url, user.login) : createText('无'); +const ACTION_TEXT_MAP: Record = { + created: '创建', + opened: '创建', + submitted: '创建', + closed: '关闭', + reopened: '重新打开', + labeled: '添加标签', + unlabeled: '移除标签', + assigned: '指派', + unassigned: '取消指派', + edited: '编辑', + deleted: '删除', + synchronize: '更新', + review_requested: '请求审核', +}; -const createContentItem = ( - label: string, - value?: string | { tag: string; text: string }, -) => - [ - createText(label), - typeof value === 'string' - ? createText(value || '无') - : value || createText('无'), - ] as [object, object]; +const getActionText = (action?: string) => (action ? ACTION_TEXT_MAP[action] || action : '编辑'); + +const createLink = (href: string, text = href) => `[${text}](${href})`; + +const createUserLink = (user: any) => (user ? createLink(user.html_url, user.login) : '无'); + +// Convert GitHub markdown to Lark card supported format +const sanitizeMarkdown = (text: string): string => + text + // Remove code blocks + .replace(/```[\s\S]*?```/g, '[代码块]') + // Remove inline code + .replace(/`[^`]+`/g, match => match.slice(1, -1)) + // Convert images to link text + .replace(/!\[([^\]]*)\]\(([^)]+)\)/g, '🖼️ [$1]($2)') + // Convert ### headers to bold + .replace(/^###\s+(.+)$/gm, '**$1**') + // Convert ## headers to bold + .replace(/^##\s+(.+)$/gm, '**$1**') + // Convert # headers to bold + .replace(/^#\s+(.+)$/gm, '**$1**') + // Remove HTML comments + .replace(//g, '') + // Remove HTML tags (keep content) + .replace(/<[^>]+>/g, '') + // Remove excess empty lines + .replace(/\n{3,}/g, '\n\n') + // Truncate long content + .slice(0, 800) + (text.length > 800 ? '\n...' : ''); + +const createContentItem = (label: string, value?: string) => + `**${label}** ${value ? sanitizeMarkdown(value) : '无'}`; + +interface LarkMessageElement { + tag: string; + content: string | [object, object][]; +} type EventHandler = ( event: GitHubAction, actionText: string, ) => { title: string; - content: [object, object][]; + elements: LarkMessageElement[]; }; // Event handlers const eventHandlers: Record = { - push: ({ - event: { head_commit }, - ref, - ref_name, - server_url, - repository, - actor, - }) => ({ - title: 'GitHub 代码提交', - content: [ - [createText('提交链接:'), createLink(head_commit!.url)], - [ - createText('代码分支:'), - createLink(`${server_url}/${repository}/tree/${ref_name}`, ref), + push: ({ event: { head_commit }, ref, ref_name, server_url, repository, actor }) => { + const commitUrl = head_commit?.url || `${server_url}/${repository}/tree/${ref_name}`; + const commitMessage = head_commit?.message || 'Create/Delete/Update Branch (No head commit)'; + + return { + title: 'GitHub 代码提交', + elements: [ + { + tag: 'markdown', + content: [ + createContentItem('提交链接:', createLink(commitUrl)), + createContentItem( + '代码分支:', + createLink(`${server_url}/${repository}/tree/${ref_name}`, ref_name), + ), + createContentItem('提交作者:', createLink(`${server_url}/${actor}`, actor)), + createContentItem('提交信息:', commitMessage), + ].join('\n'), + }, ], - [createText('提交作者:'), createLink(`${server_url}/${actor}`, actor)], - [createText('提交信息:'), createText(head_commit!.message)], - ], - }), + }; + }, issues: ({ event: { issue } }, actionText) => ({ title: `GitHub issue ${actionText}:${issue?.title}`, - content: [ - [createText('链接:'), createLink(issue!.html_url)], - [ - createText('作者:'), - createLink(issue!.user!.html_url!, issue!.user!.login), - ], - [ - createText('指派:'), - issue?.assignee - ? createLink(issue.assignee.html_url!, issue.assignee.login) - : createText('无'), - ], - [ - createText('标签:'), - createText(issue?.labels?.map(({ name }) => name).join(', ') || '无'), - ], - [createText('里程碑:'), createText(issue?.milestone?.title || '无')], - [createText('描述:'), createText(issue?.body || '无')], + elements: [ + { + tag: 'markdown', + content: [ + createContentItem('链接:', createLink(issue!.html_url)), + createContentItem('作者:', createUserLink(issue!.user!)), + createContentItem('指派:', issue?.assignee ? createUserLink(issue.assignee) : '无'), + createContentItem('标签:', issue?.labels?.map(({ name }) => name).join(', ') || '无'), + createContentItem('里程碑:', issue?.milestone?.title || '无'), + createContentItem('描述:', issue?.body || '无'), + ].join('\n'), + }, ], }), pull_request: ({ event: { pull_request } }, actionText) => ({ title: `GitHub PR ${actionText}:${pull_request?.title}`, - content: [ - [createText('链接:'), createLink(pull_request!.html_url)], - [ - createText('作者:'), - createLink(pull_request!.user.html_url, pull_request!.user.login), - ], - [ - createText('指派:'), - pull_request?.assignee - ? createLink( - pull_request.assignee.html_url, - pull_request.assignee.login, - ) - : createText('无'), - ], - [ - createText('标签:'), - createText( - pull_request?.labels?.map(({ name }) => name).join(', ') || '无', - ), - ], - [ - createText('里程碑:'), - createText(pull_request?.milestone?.title || '无'), - ], - [createText('描述:'), createText(pull_request?.body || '无')], + elements: [ + { + tag: 'markdown', + content: [ + createContentItem('链接:', createLink(pull_request!.html_url)), + createContentItem('作者:', createUserLink(pull_request!.user)), + createContentItem( + '指派:', + pull_request?.assignee ? createUserLink(pull_request.assignee) : '无', + ), + createContentItem( + '标签:', + pull_request?.labels?.map(({ name }) => name).join(', ') || '无', + ), + createContentItem('里程碑:', pull_request?.milestone?.title || '无'), + createContentItem('描述:', pull_request?.body || '无'), + ].join('\n'), + }, ], }), discussion: ({ event: { discussion } }, actionText) => ({ title: `GitHub 讨论 ${actionText}:${discussion?.title || '无'}`, - content: [ - createContentItem('链接:', discussion?.html_url), - createContentItem( - '作者:', - createUserLink(discussion!.user as GitHubUser), - ), - createContentItem('描述:', discussion?.body || '无'), + elements: [ + { + tag: 'markdown', + content: [ + createContentItem('链接:', createLink(discussion!.html_url)), + createContentItem('作者:', createUserLink(discussion!.user as GitHubUser)), + createContentItem('描述:', discussion?.body || '无'), + ].join('\n'), + }, ], }), issue_comment: ({ event: { comment, issue } }) => ({ title: `GitHub issue 评论:${issue?.title || '未知 issue'}`, - content: [ - createContentItem('链接:', comment?.html_url), - createContentItem('作者:', createUserLink(comment!.user!)), - createContentItem('描述:', comment?.body || '无'), + elements: [ + { + tag: 'markdown', + content: [ + createContentItem('链接:', createLink(comment!.html_url)), + createContentItem('作者:', createUserLink(comment!.user!)), + createContentItem('描述:', comment?.body || '无'), + ].join('\n'), + }, ], }), discussion_comment: ({ event: { comment, discussion } }) => ({ title: `GitHub 讨论评论:${discussion?.title || '无'}`, - content: [ - createContentItem('链接:', comment?.html_url), - createContentItem('作者:', createUserLink(comment!.user!)), - createContentItem('描述:', comment?.body || '无'), + elements: [ + { + tag: 'markdown', + content: [ + createContentItem('链接:', createLink(comment!.html_url)), + createContentItem('作者:', createUserLink(comment!.user!)), + createContentItem('描述:', comment?.body || '无'), + ].join('\n'), + }, ], }), release: ({ event: { release } }) => ({ title: `GitHub Release 发布:${release!.name || release!.tag_name}`, - content: [ - createContentItem('链接:', release!.html_url), - createContentItem('作者:', createUserLink(release!.author)), - createContentItem('描述:', release!.body!), + elements: [ + { + tag: 'markdown', + content: [ + createContentItem('链接:', createLink(release!.html_url)), + createContentItem('作者:', createUserLink(release!.author)), + createContentItem('描述:', release?.body || '无'), + ].join('\n'), + }, + ], + }), + + pull_request_review_comment: ({ event: { comment, pull_request } }) => ({ + title: `GitHub PR 代码评论:${pull_request?.title || '未知 PR'}`, + elements: [ + { + tag: 'markdown', + content: [ + createContentItem('链接:', createLink(comment!.html_url)), + createContentItem('作者:', createUserLink(comment!.user!)), + createContentItem('PR:', createLink(pull_request!.html_url, `#${pull_request!.number}`)), + createContentItem('评论:', comment?.body || '无'), + ].join('\n'), + }, ], }), }; @@ -178,19 +233,23 @@ const processEvent = (event: GitHubAction) => { try { return handler(event, actionText); } catch (cause) { - throw new Error( - `Error processing ${event_name} event: ${(cause as Error).message}`, - { cause }, - ); + throw new Error(`Error processing ${event_name} event: ${(cause as Error).message}`, { cause }); } }; -// Main execution:Processing GitHub Events and Outputting Results +// Main execution const event = JSON.parse((await stdin()) || '{}') as GitHubAction; -const zh_cn = processEvent(event); - -if (zh_cn) console.log(JSON.stringify({ post: { zh_cn } })); -else - throw new Error( - `Unsupported ${event.event_name} event & ${event.action} action`, - ); +const result = processEvent(event); + +if (!result) throw new Error(`Unsupported ${event.event_name} event & ${event.action} action`); + +const card = { + schema: '2.0', + config: { wide_screen_mode: true }, + header: { + title: { tag: 'plain_text', content: result.title }, + template: 'blue', + }, + body: { elements: result.elements }, +}; +console.log(JSON.stringify(card)); diff --git a/.github/workflows/Lark-notification.yml b/.github/workflows/Lark-notification.yml index bf3d389..a2332af 100644 --- a/.github/workflows/Lark-notification.yml +++ b/.github/workflows/Lark-notification.yml @@ -8,6 +8,7 @@ on: discussion: issue_comment: discussion_comment: + pull_request_review_comment: release: types: - published @@ -16,7 +17,7 @@ jobs: send-Lark-message: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: denoland/setup-deno@v2 with: @@ -25,18 +26,22 @@ jobs: - name: Event Message serialization id: message run: | - YAML=$(echo '${{ toJSON(github) }}' | deno --allow-all .github/scripts/transform-message.ts) + YAML=$( + cat <> $GITHUB_OUTPUT + } >> "$GITHUB_OUTPUT" - name: Send message to Lark if: ${{ contains(steps.message.outputs.content, ':') }} - uses: foxundermoon/feishu-action@v2 + uses: Open-Source-Bazaar/feishu-action@v3 with: url: ${{ secrets.LARK_CHATBOT_HOOK_URL }} - msg_type: post + msg_type: interactive content: | ${{ steps.message.outputs.content }} diff --git a/package.json b/package.json index 64719ac..37f04af 100644 --- a/package.json +++ b/package.json @@ -17,12 +17,14 @@ "@koa/router": "^15.1.1", "@mdx-js/loader": "^3.1.1", "@mdx-js/react": "^3.1.1", - "@next/mdx": "^16.1.0", + "@next/mdx": "^16.1.1", "core-js": "^3.47.0", "echarts-jsx": "^0.6.0", - "file-type": "^21.1.1", + "file-type": "^21.2.0", "idea-react": "^2.0.0-rc.13", + "jsonwebtoken": "^9.0.3", "koa": "^3.1.1", + "koa-jwt": "^4.0.4", "koajax": "^3.1.2", "license-filter": "^0.2.5", "marked": "^17.0.1", @@ -30,13 +32,13 @@ "mobx": "^6.15.0", "mobx-github": "^0.6.2", "mobx-i18n": "^0.7.2", - "mobx-lark": "^2.5.0", + "mobx-lark": "^2.6.0", "mobx-react": "^9.2.1", "mobx-react-helper": "^0.5.1", "mobx-restful": "^2.1.4", "mobx-restful-table": "^2.6.3", "mobx-strapi": "^0.8.1", - "next": "^16.1.0", + "next": "^16.1.1", "next-pwa": "^5.6.0", "next-ssr-middleware": "^1.1.0", "open-react-map": "^0.9.1", @@ -56,18 +58,19 @@ "@babel/preset-react": "^7.28.5", "@cspell/eslint-plugin": "^9.4.0", "@eslint/js": "^9.39.2", - "@next/eslint-plugin-next": "^16.1.0", + "@next/eslint-plugin-next": "^16.1.1", "@open-source-bazaar/china-ngo-database": "^0.6.0", "@softonus/prettier-plugin-duplicate-remover": "^1.1.2", "@stylistic/eslint-plugin": "^5.6.1", "@types/eslint-config-prettier": "^6.11.3", + "@types/jsonwebtoken": "^9.0.10", "@types/koa": "^3.0.1", "@types/next-pwa": "^5.6.9", "@types/node": "^22.19.3", "@types/react": "^19.2.7", "@types/react-dom": "^19.2.3", "eslint": "^9.39.2", - "eslint-config-next": "^16.1.0", + "eslint-config-next": "^16.1.1", "eslint-config-prettier": "^10.1.8", "eslint-plugin-react": "^7.37.5", "eslint-plugin-simple-import-sort": "^12.1.1", @@ -82,7 +85,7 @@ "prettier-plugin-css-order": "^2.1.2", "sass": "^1.97.1", "typescript": "~5.9.3", - "typescript-eslint": "^8.50.0" + "typescript-eslint": "^8.50.1" }, "resolutions": { "mobx-react-helper": "$mobx-react-helper", diff --git a/pages/api/Lark/document/copy/[...slug].ts b/pages/api/Lark/document/copy/[...slug].ts new file mode 100644 index 0000000..5b64fd2 --- /dev/null +++ b/pages/api/Lark/document/copy/[...slug].ts @@ -0,0 +1,18 @@ +import { Context } from 'koa'; +import { createKoaRouter, withKoaRouter } from 'next-ssr-middleware'; + +import { safeAPI, verifyJWT } from '../../../core'; +import { lark } from '../../core'; + +export const config = { api: { bodyParser: false } }; + +const router = createKoaRouter(import.meta.url); + +router.post('/:type/:id', safeAPI, verifyJWT, async (context: Context) => { + const { type, id } = context.params, + { name, parentToken } = Reflect.get(context.request, 'body'); + + context.body = await lark.copyFile(`${type as 'wiki'}/${id}`, name, parentToken); +}); + +export default withKoaRouter(router); diff --git a/pages/api/Lark/document/markdown/[...slug].ts b/pages/api/Lark/document/markdown/[...slug].ts new file mode 100644 index 0000000..4bbb837 --- /dev/null +++ b/pages/api/Lark/document/markdown/[...slug].ts @@ -0,0 +1,17 @@ +import { createKoaRouter, withKoaRouter } from 'next-ssr-middleware'; + +import { safeAPI, verifyJWT } from '../../../core'; +import { lark } from '../../core'; + +const router = createKoaRouter(import.meta.url); + +router.get('/:type/:id', safeAPI, verifyJWT, async context => { + const { type, id } = context.params; + + const markdown = await lark.downloadMarkdown(`${type}/${id}`); + + context.set('Content-Type', 'text/markdown; charset=utf-8'); + context.body = markdown; +}); + +export default withKoaRouter(router); diff --git a/pages/api/Lark/file/[id]/[name].ts b/pages/api/Lark/file/[id]/[name].ts index ef67c21..77ef728 100644 --- a/pages/api/Lark/file/[id]/[name].ts +++ b/pages/api/Lark/file/[id]/[name].ts @@ -30,9 +30,12 @@ const downloader: Middleware = async context => { if (!ok) { context.status = status; - return (context.body = await response.json()); + try { + return (context.body = await response.json()); + } catch { + return (context.body = await response.text()); + } } - const mime = headers.get('Content-Type'), [stream1, stream2] = body!.tee(); @@ -44,9 +47,8 @@ const downloader: Middleware = async context => { context.set('Content-Disposition', headers.get('Content-Disposition') || ''); context.set('Content-Length', headers.get('Content-Length') || ''); - if (method === 'GET') - // @ts-expect-error Web type compatibility - context.body = Readable.fromWeb(stream2); + // @ts-expect-error Web type compatibility + context.body = method === 'GET' ? Readable.fromWeb(stream2) : ''; }; router.head('/:id/:name', safeAPI, downloader).get('/:id/:name', safeAPI, downloader); diff --git a/pages/api/core.ts b/pages/api/core.ts index cec836a..0202a5a 100644 --- a/pages/api/core.ts +++ b/pages/api/core.ts @@ -1,18 +1,37 @@ import 'core-js/full/array/from-async'; -import { Context, Middleware } from 'koa'; +import { JsonWebTokenError, sign } from 'jsonwebtoken'; +import { Context, Middleware, ParameterizedContext } from 'koa'; +import JWT from 'koa-jwt'; import { HTTPError } from 'koajax'; import { Content } from 'mobx-github'; import { DataObject } from 'mobx-restful'; import { KoaOption, withKoa } from 'next-ssr-middleware'; -import Path from 'path'; import { ProxyAgent, setGlobalDispatcher } from 'undici'; -import YAML from 'yaml'; +import { parse } from 'yaml'; + +import { LarkAppMeta } from '../../models/configuration'; const { HTTP_PROXY } = process.env; if (HTTP_PROXY) setGlobalDispatcher(new ProxyAgent(HTTP_PROXY)); +export type JWTContext = ParameterizedContext< + { jwtOriginalError: JsonWebTokenError } | { user: DataObject } +>; + +export const parseJWT = JWT({ + secret: LarkAppMeta.secret, + cookie: 'token', + passthrough: true, +}); + +export const verifyJWT = JWT({ secret: LarkAppMeta.secret, cookie: 'token' }); + +const RobotToken = sign({ id: 0, name: 'Robot' }, LarkAppMeta.secret); + +console.table({ RobotToken }); + export const safeAPI: Middleware = async (context: Context, next) => { try { return await next(); @@ -64,7 +83,7 @@ export function splitFrontMatter(raw: string) { if (!frontMatter) return { markdown: raw }; try { - const meta = YAML.parse(frontMatter) as DataObject; + const meta = parse(frontMatter) as DataObject; return { markdown, meta }; } catch (error) { @@ -80,34 +99,31 @@ export async function* pageListOf(path: string, prefix = 'pages'): AsyncGenerato const list = await readdir(prefix + path, { withFileTypes: true }); for (const node of list) { - let { name, path } = node; + let { name, parentPath } = node; if (name.startsWith('.')) continue; const isMDX = MDX_pattern.test(name); - ({ name } = Path.parse(name)); - path = `${path}/${name}`.replace(new RegExp(`^${prefix}`), ''); + name = name.replace(MDX_pattern, ''); + const path = `${parentPath}/${name}`.replace(new RegExp(`^${prefix}`), ''); - if (node.isFile()) { + if (node.isFile() && isMDX) { const article: ArticleMeta = { name, path, subs: [] }; - if (isMDX) - try { - const rawFile = await readFile(`${node.path}/${node.name}`, { encoding: 'utf-8' }); + const file = await readFile(`${parentPath}/${node.name}`, 'utf-8'); - const { meta } = splitFrontMatter(rawFile); + const { meta } = splitFrontMatter(file); - if (meta) article.meta = meta; - } catch (error) { - console.error(`Error reading front matter for ${node.path}/${node.name}:`, error); - } - yield article; - } else if (node.isDirectory()) { - const subs = await Array.fromAsync(pageListOf(path, prefix)); + if (meta) article.meta = meta; - if (subs[0]) yield { name, subs }; + yield article; } + if (!node.isDirectory()) continue; + + const subs = await Array.fromAsync(pageListOf(path, prefix)); + + if (subs[0]) yield { name, subs }; } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3d1c11f..d2855af 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,7 +6,7 @@ settings: overrides: mobx-react-helper: ^0.5.1 - next: ^16.1.0 + next: ^16.1.1 importers: @@ -22,8 +22,8 @@ importers: specifier: ^3.1.1 version: 3.1.1(@types/react@19.2.7)(react@19.2.3) '@next/mdx': - specifier: ^16.1.0 - version: 16.1.0(@mdx-js/loader@3.1.1)(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3)) + specifier: ^16.1.1 + version: 16.1.1(@mdx-js/loader@3.1.1)(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3)) core-js: specifier: ^3.47.0 version: 3.47.0 @@ -31,14 +31,20 @@ importers: specifier: ^0.6.0 version: 0.6.0(react@19.2.3)(typescript@5.9.3) file-type: - specifier: ^21.1.1 - version: 21.1.1 + specifier: ^21.2.0 + version: 21.2.0 idea-react: specifier: ^2.0.0-rc.13 version: 2.0.0-rc.13(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react-is@16.13.1)(react@19.2.3)(typescript@5.9.3) + jsonwebtoken: + specifier: ^9.0.3 + version: 9.0.3 koa: specifier: ^3.1.1 version: 3.1.1 + koa-jwt: + specifier: ^4.0.4 + version: 4.0.4 koajax: specifier: ^3.1.2 version: 3.1.2(core-js@3.47.0)(typescript@5.9.3) @@ -61,8 +67,8 @@ importers: specifier: ^0.7.2 version: 0.7.2(mobx@6.15.0)(typescript@5.9.3) mobx-lark: - specifier: ^2.5.0 - version: 2.5.0(core-js@3.47.0)(react@19.2.3)(typescript@5.9.3) + specifier: ^2.6.0 + version: 2.6.0(core-js@3.47.0)(react@19.2.3)(typescript@5.9.3) mobx-react: specifier: ^9.2.1 version: 9.2.1(mobx@6.15.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -79,14 +85,14 @@ importers: specifier: ^0.8.1 version: 0.8.1(core-js@3.47.0)(typescript@5.9.3) next: - specifier: ^16.1.0 - version: 16.1.0(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1) + specifier: ^16.1.1 + version: 16.1.1(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1) next-pwa: specifier: ^5.6.0 - version: 5.6.0(@babel/core@7.28.5)(next@16.1.0(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1)) + version: 5.6.0(@babel/core@7.28.5)(next@16.1.1(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1)) next-ssr-middleware: specifier: ^1.1.0 - version: 1.1.0(next@16.1.0(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react@19.2.3)(typescript@5.9.3) + version: 1.1.0(next@16.1.1(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react@19.2.3)(typescript@5.9.3) open-react-map: specifier: ^0.9.1 version: 0.9.1(core-js@3.47.0)(mobx-react@9.2.1(mobx@6.15.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(mobx@6.15.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) @@ -134,8 +140,8 @@ importers: specifier: ^9.39.2 version: 9.39.2 '@next/eslint-plugin-next': - specifier: ^16.1.0 - version: 16.1.0 + specifier: ^16.1.1 + version: 16.1.1 '@open-source-bazaar/china-ngo-database': specifier: ^0.6.0 version: 0.6.0 @@ -148,6 +154,9 @@ importers: '@types/eslint-config-prettier': specifier: ^6.11.3 version: 6.11.3 + '@types/jsonwebtoken': + specifier: ^9.0.10 + version: 9.0.10 '@types/koa': specifier: ^3.0.1 version: 3.0.1 @@ -167,8 +176,8 @@ importers: specifier: ^9.39.2 version: 9.39.2(jiti@2.6.1) eslint-config-next: - specifier: ^16.1.0 - version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: ^16.1.1 + version: 16.1.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) eslint-config-prettier: specifier: ^10.1.8 version: 10.1.8(eslint@9.39.2(jiti@2.6.1)) @@ -198,7 +207,7 @@ importers: version: 16.2.7 next-with-less: specifier: ^3.0.1 - version: 3.0.1(less-loader@12.3.0(less@4.5.1))(less@4.5.1)(next@16.1.0(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1)) + version: 3.0.1(less-loader@12.3.0(less@4.5.1))(less@4.5.1)(next@16.1.1(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1)) prettier: specifier: ^3.7.4 version: 3.7.4 @@ -212,8 +221,8 @@ importers: specifier: ~5.9.3 version: 5.9.3 typescript-eslint: - specifier: ^8.50.0 - version: 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: ^8.50.1 + version: 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) packages: @@ -1291,14 +1300,14 @@ packages: '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - '@next/env@16.1.0': - resolution: {integrity: sha512-Dd23XQeFHmhf3KBW76leYVkejHlCdB7erakC2At2apL1N08Bm+dLYNP+nNHh0tzUXfPQcNcXiQyacw0PG4Fcpw==} + '@next/env@16.1.1': + resolution: {integrity: sha512-3oxyM97Sr2PqiVyMyrZUtrtM3jqqFxOQJVuKclDsgj/L728iZt/GyslkN4NwarledZATCenbk4Offjk1hQmaAA==} - '@next/eslint-plugin-next@16.1.0': - resolution: {integrity: sha512-sooC/k0LCF4/jLXYHpgfzJot04lZQqsttn8XJpTguP8N3GhqXN3wSkh68no2OcZzS/qeGwKDFTqhZ8WofdXmmQ==} + '@next/eslint-plugin-next@16.1.1': + resolution: {integrity: sha512-Ovb/6TuLKbE1UiPcg0p39Ke3puyTCIKN9hGbNItmpQsp+WX3qrjO3WaMVSi6JHr9X1NrmthqIguVHodMJbh/dw==} - '@next/mdx@16.1.0': - resolution: {integrity: sha512-fnnMzMGIxub01YwZWccdYw/TZmwVf+4g5HZiM8iJvjz4GLNeYc73BPwI5qikPT3aP6xc1s0K5dYBtRojvrAtng==} + '@next/mdx@16.1.1': + resolution: {integrity: sha512-XvlZ28/K7kXb1vgTeZWHjjfxDx9BVz/s1bbVlsFOvPfYuSVRmlUkhaiyJTA/7mm9OdpeC57+uHR6k1fUcn5AaA==} peerDependencies: '@mdx-js/loader': '>=0.15.0' '@mdx-js/react': '>=0.15.0' @@ -1308,50 +1317,50 @@ packages: '@mdx-js/react': optional: true - '@next/swc-darwin-arm64@16.1.0': - resolution: {integrity: sha512-onHq8dl8KjDb8taANQdzs3XmIqQWV3fYdslkGENuvVInFQzZnuBYYOG2HGHqqtvgmEU7xWzhgndXXxnhk4Z3fQ==} + '@next/swc-darwin-arm64@16.1.1': + resolution: {integrity: sha512-JS3m42ifsVSJjSTzh27nW+Igfha3NdBOFScr9C80hHGrWx55pTrVL23RJbqir7k7/15SKlrLHhh/MQzqBBYrQA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@16.1.0': - resolution: {integrity: sha512-Am6VJTp8KhLuAH13tPrAoVIXzuComlZlMwGr++o2KDjWiKPe3VwpxYhgV6I4gKls2EnsIMggL4y7GdXyDdJcFA==} + '@next/swc-darwin-x64@16.1.1': + resolution: {integrity: sha512-hbyKtrDGUkgkyQi1m1IyD3q4I/3m9ngr+V93z4oKHrPcmxwNL5iMWORvLSGAf2YujL+6HxgVvZuCYZfLfb4bGw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@16.1.0': - resolution: {integrity: sha512-fVicfaJT6QfghNyg8JErZ+EMNQ812IS0lmKfbmC01LF1nFBcKfcs4Q75Yy8IqnsCqH/hZwGhqzj3IGVfWV6vpA==} + '@next/swc-linux-arm64-gnu@16.1.1': + resolution: {integrity: sha512-/fvHet+EYckFvRLQ0jPHJCUI5/B56+2DpI1xDSvi80r/3Ez+Eaa2Yq4tJcRTaB1kqj/HrYKn8Yplm9bNoMJpwQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@16.1.0': - resolution: {integrity: sha512-TojQnDRoX7wJWXEEwdfuJtakMDW64Q7NrxQPviUnfYJvAx5/5wcGE+1vZzQ9F17m+SdpFeeXuOr6v3jbyusYMQ==} + '@next/swc-linux-arm64-musl@16.1.1': + resolution: {integrity: sha512-MFHrgL4TXNQbBPzkKKur4Fb5ICEJa87HM7fczFs2+HWblM7mMLdco3dvyTI+QmLBU9xgns/EeeINSZD6Ar+oLg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@16.1.0': - resolution: {integrity: sha512-quhNFVySW4QwXiZkZ34SbfzNBm27vLrxZ2HwTfFFO1BBP0OY1+pI0nbyewKeq1FriqU+LZrob/cm26lwsiAi8Q==} + '@next/swc-linux-x64-gnu@16.1.1': + resolution: {integrity: sha512-20bYDfgOQAPUkkKBnyP9PTuHiJGM7HzNBbuqmD0jiFVZ0aOldz+VnJhbxzjcSabYsnNjMPsE0cyzEudpYxsrUQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@16.1.0': - resolution: {integrity: sha512-6JW0z2FZUK5iOVhUIWqE4RblAhUj1EwhZ/MwteGb//SpFTOHydnhbp3868gxalwea+mbOLWO6xgxj9wA9wNvNw==} + '@next/swc-linux-x64-musl@16.1.1': + resolution: {integrity: sha512-9pRbK3M4asAHQRkwaXwu601oPZHghuSC8IXNENgbBSyImHv/zY4K5udBusgdHkvJ/Tcr96jJwQYOll0qU8+fPA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@16.1.0': - resolution: {integrity: sha512-+DK/akkAvvXn5RdYN84IOmLkSy87SCmpofJPdB8vbLmf01BzntPBSYXnMvnEEv/Vcf3HYJwt24QZ/s6sWAwOMQ==} + '@next/swc-win32-arm64-msvc@16.1.1': + resolution: {integrity: sha512-bdfQkggaLgnmYrFkSQfsHfOhk/mCYmjnrbRCGgkMcoOBZ4n+TRRSLmT/CU5SATzlBJ9TpioUyBW/vWFXTqQRiA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@16.1.0': - resolution: {integrity: sha512-Tr0j94MphimCCks+1rtYPzQFK+faJuhHWCegU9S9gDlgyOk8Y3kPmO64UcjyzZAlligeBtYZ/2bEyrKq0d2wqQ==} + '@next/swc-win32-x64-msvc@16.1.1': + resolution: {integrity: sha512-Ncwbw2WJ57Al5OX0k4chM68DKhEPlrXBaSXDCi2kPi5f4d8b3ejr3RRJGfKBLrn2YJL5ezNS7w2TZLHSti8CMw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1562,8 +1571,8 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@swc/helpers@0.5.17': - resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + '@swc/helpers@0.5.18': + resolution: {integrity: sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ==} '@tokenizer/inflate@0.4.1': resolution: {integrity: sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==} @@ -1718,63 +1727,63 @@ packages: '@types/warning@3.0.3': resolution: {integrity: sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==} - '@typescript-eslint/eslint-plugin@8.50.0': - resolution: {integrity: sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==} + '@typescript-eslint/eslint-plugin@8.50.1': + resolution: {integrity: sha512-PKhLGDq3JAg0Jk/aK890knnqduuI/Qj+udH7wCf0217IGi4gt+acgCyPVe79qoT+qKUvHMDQkwJeKW9fwl8Cyw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.50.0 + '@typescript-eslint/parser': ^8.50.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.50.0': - resolution: {integrity: sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==} + '@typescript-eslint/parser@8.50.1': + resolution: {integrity: sha512-hM5faZwg7aVNa819m/5r7D0h0c9yC4DUlWAOvHAtISdFTc8xB86VmX5Xqabrama3wIPJ/q9RbGS1worb6JfnMg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.50.0': - resolution: {integrity: sha512-Cg/nQcL1BcoTijEWyx4mkVC56r8dj44bFDvBdygifuS20f3OZCHmFbjF34DPSi07kwlFvqfv/xOLnJ5DquxSGQ==} + '@typescript-eslint/project-service@8.50.1': + resolution: {integrity: sha512-E1ur1MCVf+YiP89+o4Les/oBAVzmSbeRB0MQLfSlYtbWU17HPxZ6Bhs5iYmKZRALvEuBoXIZMOIRRc/P++Ortg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.50.0': - resolution: {integrity: sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==} + '@typescript-eslint/scope-manager@8.50.1': + resolution: {integrity: sha512-mfRx06Myt3T4vuoHaKi8ZWNTPdzKPNBhiblze5N50//TSHOAQQevl/aolqA/BcqqbJ88GUnLqjjcBc8EWdBcVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.50.0': - resolution: {integrity: sha512-vxd3G/ybKTSlm31MOA96gqvrRGv9RJ7LGtZCn2Vrc5htA0zCDvcMqUkifcjrWNNKXHUU3WCkYOzzVSFBd0wa2w==} + '@typescript-eslint/tsconfig-utils@8.50.1': + resolution: {integrity: sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.50.0': - resolution: {integrity: sha512-7OciHT2lKCewR0mFoBrvZJ4AXTMe/sYOe87289WAViOocEmDjjv8MvIOT2XESuKj9jp8u3SZYUSh89QA4S1kQw==} + '@typescript-eslint/type-utils@8.50.1': + resolution: {integrity: sha512-7J3bf022QZE42tYMO6SL+6lTPKFk/WphhRPe9Tw/el+cEwzLz1Jjz2PX3GtGQVxooLDKeMVmMt7fWpYRdG5Etg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.50.0': - resolution: {integrity: sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==} + '@typescript-eslint/types@8.50.1': + resolution: {integrity: sha512-v5lFIS2feTkNyMhd7AucE/9j/4V9v5iIbpVRncjk/K0sQ6Sb+Np9fgYS/63n6nwqahHQvbmujeBL7mp07Q9mlA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.50.0': - resolution: {integrity: sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==} + '@typescript-eslint/typescript-estree@8.50.1': + resolution: {integrity: sha512-woHPdW+0gj53aM+cxchymJCrh0cyS7BTIdcDxWUNsclr9VDkOSbqC13juHzxOmQ22dDkMZEpZB+3X1WpUvzgVQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.50.0': - resolution: {integrity: sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==} + '@typescript-eslint/utils@8.50.1': + resolution: {integrity: sha512-lCLp8H1T9T7gPbEuJSnHwnSuO9mDf8mfK/Nion5mZmiEaQD9sWf9W4dfeFqRyqRjF06/kBuTmAqcs9sewM2NbQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.50.0': - resolution: {integrity: sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==} + '@typescript-eslint/visitor-keys@8.50.1': + resolution: {integrity: sha512-IrDKrw7pCRUR94zeuCSUWQ+w8JEf5ZX5jl/e6AHGSLi1/zIr0lgutfn/7JpfCey+urpgQEdrZVYzCaVVKiTwhQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -1889,6 +1898,10 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} @@ -2124,6 +2137,10 @@ packages: classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + clean-webpack-plugin@4.0.0: resolution: {integrity: sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==} engines: {node: '>=10.0.0'} @@ -2182,8 +2199,8 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - comment-json@4.5.0: - resolution: {integrity: sha512-aKl8CwoMKxVTfAK4dFN4v54AEvuUh9pzmgVIBeK6gBomLwMgceQUKKWHzJdW1u1VQXQuwnJ7nJGWYYMTl5U4yg==} + comment-json@4.5.1: + resolution: {integrity: sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg==} engines: {node: '>= 6'} common-tags@1.8.2: @@ -2482,8 +2499,8 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-config-next@16.1.0: - resolution: {integrity: sha512-RlPb8E2uO/Ix/w3kizxz6+6ogw99WqtNzTG0ArRZ5NEkIYcsfRb8U0j7aTG7NjRvcrsak5QtUSuxGNN2UcA58g==} + eslint-config-next@16.1.1: + resolution: {integrity: sha512-55nTpVWm3qeuxoQKLOjQVciKZJUphKrNM0fCcQHAIOGl6VFXgaqeMfv0aKJhs7QtcnlAPhNVqsqRfRjeKBPIUA==} peerDependencies: eslint: '>=9.0.0' typescript: '>=3.3.1' @@ -2671,8 +2688,8 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} @@ -2690,8 +2707,8 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} - file-type@21.1.1: - resolution: {integrity: sha512-ifJXo8zUqbQ/bLbl9sFoqHNTNWbnPY1COImFfM6CCy7z+E+jC1eY9YfOKkx0fckIg+VljAy2/87T61fp0+eEkg==} + file-type@21.2.0: + resolution: {integrity: sha512-vCYBgFOrJQLoTzDyAXAL/RFfKnXXpUYt4+tipVy26nJJhT7ftgGETf2tAQF59EEL61i3MrorV/PG6tf7LJK7eg==} engines: {node: '>=20'} filelist@1.0.4: @@ -2948,6 +2965,10 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + inflation@2.1.0: resolution: {integrity: sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==} engines: {node: '>= 0.8.0'} @@ -3240,6 +3261,13 @@ packages: koa-compose@4.1.0: resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} + koa-jwt@4.0.4: + resolution: {integrity: sha512-Tid9BQfpVtUG/8YZV38a+hDKll0pfVhfl7A/2cNaYThS1cxMFXylZzfARqHQqvNhHy9qM+qkxd4/z6EaIV4SAQ==} + engines: {node: '>= 8'} + + koa-unless@1.0.7: + resolution: {integrity: sha512-NKiz+nk4KxSJFskiJMuJvxeA41Lcnx3d8Zy+8QETgifm4ab4aOeGD3RgR6bIz0FGNWwo3Fz0DtnK77mEIqHWxA==} + koa@3.1.1: resolution: {integrity: sha512-KDDuvpfqSK0ZKEO2gCPedNjl5wYpfj+HNiuVRlbhd1A88S3M0ySkdf2V/EJ4NWt5dwh5PXCdcenrKK2IQJAxsg==} engines: {node: '>= 18'} @@ -3584,8 +3612,8 @@ packages: peerDependencies: mobx: '>=6.11' - mobx-lark@2.5.0: - resolution: {integrity: sha512-A9VMj+Us6M2YHIIHMkUuKjYW+Yg6hkbIlqzZs5o25FKe/aavjB31HlDvf9s1wVjgfer1t42Bw8TsG3Oo8n7RHg==} + mobx-lark@2.6.0: + resolution: {integrity: sha512-X8we2BfohqcQvYQ0ACh+Bwpme/PLu5di6zmTQ5uUuRy01u0mk6vEt6s0NY1hzuzWfalJOYzJHZUjGeaE71KGbw==} peerDependencies: react: '>=16' @@ -3669,12 +3697,12 @@ packages: next-pwa@5.6.0: resolution: {integrity: sha512-XV8g8C6B7UmViXU8askMEYhWwQ4qc/XqJGnexbLV68hzKaGHZDMtHsm2TNxFcbR7+ypVuth/wwpiIlMwpRJJ5A==} peerDependencies: - next: ^16.1.0 + next: ^16.1.1 next-ssr-middleware@1.1.0: resolution: {integrity: sha512-eYKTZExd+4yq4Cs2lrQ+XJlgegKAgmCvigy9Ro3ScaHjUNevyXovHO/bbdTYIvr4DtYDbZPJkw4VbYAaVZ5x7w==} peerDependencies: - next: ^16.1.0 + next: ^16.1.1 react: '>=18' next-with-less@3.0.1: @@ -3682,10 +3710,10 @@ packages: peerDependencies: less: '*' less-loader: '>= 7.0.0' - next: ^16.1.0 + next: ^16.1.1 - next@16.1.0: - resolution: {integrity: sha512-Y+KbmDbefYtHDDQKLNrmzE/YYzG2msqo2VXhzh5yrJ54tx/6TmGdkR5+kP9ma7i7LwZpZMfoY3m/AoPPPKxtVw==} + next@16.1.1: + resolution: {integrity: sha512-QI+T7xrxt1pF6SQ/JYFz95ro/mg/1Znk5vBebsWwbpejj1T0A23hO7GYEaVac9QUOT2BIMiuzm0L99ooq7k0/w==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -3770,6 +3798,14 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + p-any@2.1.0: + resolution: {integrity: sha512-JAERcaMBLYKMq+voYw36+x5Dgh47+/o7yuv2oQYuSSUml4YeqJEFznBrY2UeEkoSHqBua6hz518n/PsowTYLLg==} + engines: {node: '>=8'} + + p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -3790,6 +3826,10 @@ packages: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} + p-some@4.1.0: + resolution: {integrity: sha512-MF/HIbq6GeBqTrTIl5OJubzkGU+qfFhAFi0gnTAK6rgEIJIknEiABHOTtQu4e6JiXjIwuMPMUFQzyHh5QjCl1g==} + engines: {node: '>=8'} + p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -4243,8 +4283,8 @@ packages: resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} - smol-toml@1.5.2: - resolution: {integrity: sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==} + smol-toml@1.6.0: + resolution: {integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==} engines: {node: '>= 18'} source-list-map@2.0.1: @@ -4449,8 +4489,8 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - ts-api-utils@2.1.0: - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + ts-api-utils@2.3.0: + resolution: {integrity: sha512-6eg3Y9SF7SsAvGzRHQvvc1skDAhwI4YQ32ui1scxD1Ccr0G5qIIbUBT3pFTKX8kmWIQClHobtUdNuaBgwdfdWg==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -4482,6 +4522,10 @@ packages: resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} engines: {node: '>=10'} + type-fest@0.3.1: + resolution: {integrity: sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==} + engines: {node: '>=6'} + type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -4509,8 +4553,8 @@ packages: typed.js@2.1.0: resolution: {integrity: sha512-bDuXEf7YcaKN4g08NMTUM6G90XU25CK3bh6U0THC/Mod/QPKlEt9g/EjvbYB8x2Qwr2p6J6I3NrsoYaVnY6wsQ==} - typescript-eslint@8.50.0: - resolution: {integrity: sha512-Q1/6yNUmCpH94fbgMUMg2/BSAr/6U7GBk61kZTv1/asghQOWOjTlp9K8mixS5NcJmm2creY+UFfGeW/+OcA64A==} + typescript-eslint@8.50.1: + resolution: {integrity: sha512-ytTHO+SoYSbhAH9CrYnMhiLx8To6PSSvqnvXyPUgPETCvB6eBKmTI9w6XMPS3HsBRGkwTVBX+urA8dYQx6bHfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -6035,41 +6079,41 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true - '@next/env@16.1.0': {} + '@next/env@16.1.1': {} - '@next/eslint-plugin-next@16.1.0': + '@next/eslint-plugin-next@16.1.1': dependencies: fast-glob: 3.3.1 - '@next/mdx@16.1.0(@mdx-js/loader@3.1.1)(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))': + '@next/mdx@16.1.1(@mdx-js/loader@3.1.1)(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))': dependencies: source-map: 0.7.6 optionalDependencies: '@mdx-js/loader': 3.1.1 '@mdx-js/react': 3.1.1(@types/react@19.2.7)(react@19.2.3) - '@next/swc-darwin-arm64@16.1.0': + '@next/swc-darwin-arm64@16.1.1': optional: true - '@next/swc-darwin-x64@16.1.0': + '@next/swc-darwin-x64@16.1.1': optional: true - '@next/swc-linux-arm64-gnu@16.1.0': + '@next/swc-linux-arm64-gnu@16.1.1': optional: true - '@next/swc-linux-arm64-musl@16.1.0': + '@next/swc-linux-arm64-musl@16.1.1': optional: true - '@next/swc-linux-x64-gnu@16.1.0': + '@next/swc-linux-x64-gnu@16.1.1': optional: true - '@next/swc-linux-x64-musl@16.1.0': + '@next/swc-linux-x64-musl@16.1.1': optional: true - '@next/swc-win32-arm64-msvc@16.1.0': + '@next/swc-win32-arm64-msvc@16.1.1': optional: true - '@next/swc-win32-x64-msvc@16.1.0': + '@next/swc-win32-x64-msvc@16.1.1': optional: true '@nodelib/fs.scandir@2.1.5': @@ -6082,7 +6126,7 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 + fastq: 1.20.1 '@nolyfill/is-core-module@1.0.39': {} @@ -6157,7 +6201,7 @@ snapshots: '@react-aria/ssr@3.9.10(react@19.2.3)': dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 19.2.3 '@react-editor-js/client@2.1.0(@editorjs/editorjs@2.31.0)(@editorjs/paragraph@2.11.7)(react@19.2.3)': @@ -6248,7 +6292,7 @@ snapshots: '@stylistic/eslint-plugin@5.6.1(eslint@9.39.2(jiti@2.6.1))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) - '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/types': 8.50.1 eslint: 9.39.2(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -6266,7 +6310,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@swc/helpers@0.5.17': + '@swc/helpers@0.5.18': dependencies: tslib: 2.8.1 @@ -6402,7 +6446,7 @@ snapshots: '@types/node': 22.19.3 '@types/react': 19.2.7 '@types/react-dom': 19.2.3(@types/react@19.2.7) - next: 16.1.0(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1) + next: 16.1.1(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1) workbox-build: 6.6.0 transitivePeerDependencies: - '@babel/core' @@ -6461,95 +6505,95 @@ snapshots: '@types/warning@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.50.0 - '@typescript-eslint/type-utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/parser': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.50.1 + '@typescript-eslint/type-utils': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.50.1 eslint: 9.39.2(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.50.0 - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/scope-manager': 8.50.1 + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.50.1 debug: 4.4.3 eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.50.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.50.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) - '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) + '@typescript-eslint/types': 8.50.1 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.50.0': + '@typescript-eslint/scope-manager@8.50.1': dependencies: - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/visitor-keys': 8.50.1 - '@typescript-eslint/tsconfig-utils@8.50.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.50.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2(jiti@2.6.1) - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.50.0': {} + '@typescript-eslint/types@8.50.1': {} - '@typescript-eslint/typescript-estree@8.50.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.50.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.50.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/project-service': 8.50.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/visitor-keys': 8.50.1 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 tinyglobby: 0.2.15 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.50.0 - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.50.1 + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.50.0': + '@typescript-eslint/visitor-keys@8.50.1': dependencies: - '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/types': 8.50.1 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} @@ -6624,6 +6668,11 @@ snapshots: acorn@8.15.0: {} + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + ajv-formats@2.1.1: dependencies: ajv: 8.17.1 @@ -6877,6 +6926,8 @@ snapshots: classnames@2.5.1: {} + clean-stack@2.2.0: {} + clean-webpack-plugin@4.0.0: dependencies: del: 4.1.1 @@ -6931,7 +6982,7 @@ snapshots: commander@2.20.3: {} - comment-json@4.5.0: + comment-json@4.5.1: dependencies: array-timsort: 1.0.3 core-util-is: 1.0.3 @@ -6979,8 +7030,8 @@ snapshots: cspell-config-lib@9.4.0: dependencies: '@cspell/cspell-types': 9.4.0 - comment-json: 4.5.0 - smol-toml: 1.5.2 + comment-json: 4.5.1 + smol-toml: 1.6.0 yaml: 2.8.2 cspell-dictionary@9.4.0: @@ -7168,7 +7219,7 @@ snapshots: edkit@1.2.7(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 '@types/turndown': 5.0.6 browser-fs-access: 0.37.0 marked: 15.0.12 @@ -7328,9 +7379,9 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): + eslint-config-next@16.1.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@next/eslint-plugin-next': 16.1.0 + '@next/eslint-plugin-next': 16.1.1 eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)) @@ -7339,7 +7390,7 @@ snapshots: eslint-plugin-react: 7.37.5(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1)) globals: 16.4.0 - typescript-eslint: 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + typescript-eslint: 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -7607,7 +7658,7 @@ snapshots: fast-uri@3.1.0: {} - fastq@1.19.1: + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -7623,7 +7674,7 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-type@21.1.1: + file-type@21.2.0: dependencies: '@tokenizer/inflate': 0.4.1 strtok3: 10.3.4 @@ -7906,7 +7957,7 @@ snapshots: '@editorjs/editorjs': 2.31.0 '@editorjs/paragraph': 2.11.7 '@react-editor-js/core': 2.1.0(@editorjs/editorjs@2.31.0)(react@19.2.3) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 classnames: 2.5.1 editorjs-html: 4.0.5 html2canvas: 1.4.1 @@ -7949,6 +8000,8 @@ snapshots: imurmurhash@0.1.4: {} + indent-string@4.0.0: {} + inflation@2.1.0: {} inflight@1.0.6: @@ -8135,7 +8188,7 @@ snapshots: iterable-observer@1.1.0: dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 iterator.prototype@1.1.5: dependencies: @@ -8241,6 +8294,14 @@ snapshots: koa-compose@4.1.0: {} + koa-jwt@4.0.4: + dependencies: + jsonwebtoken: 9.0.3 + koa-unless: 1.0.7 + p-any: 2.1.0 + + koa-unless@1.0.7: {} + koa@3.1.1: dependencies: accepts: 1.3.8 @@ -8264,7 +8325,7 @@ snapshots: koajax@3.1.2(core-js@3.47.0)(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 core-js: 3.47.0 regenerator-runtime: 0.14.1 web-streams-polyfill: 4.2.0 @@ -8308,7 +8369,7 @@ snapshots: license-filter@0.2.5: dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 lint-staged@16.2.7: dependencies: @@ -8785,7 +8846,7 @@ snapshots: mobx-github@0.6.2(core-js@3.47.0)(typescript@5.9.3): dependencies: '@octokit/openapi-types': 26.0.0 - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 '@types/lodash': 4.17.21 koajax: 3.1.2(core-js@3.47.0)(typescript@5.9.3) lodash: 4.17.21 @@ -8800,7 +8861,7 @@ snapshots: mobx-i18n@0.7.2(mobx@6.15.0)(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 '@types/node': 22.19.3 mobx: 6.15.0 regenerator-runtime: 0.14.1 @@ -8809,9 +8870,9 @@ snapshots: - element-internals-polyfill - typescript - mobx-lark@2.5.0(core-js@3.47.0)(react@19.2.3)(typescript@5.9.3): + mobx-lark@2.6.0(core-js@3.47.0)(react@19.2.3)(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 '@types/react': 19.2.7 koajax: 3.1.2(core-js@3.47.0)(typescript@5.9.3) lodash.memoize: 4.1.2 @@ -8828,7 +8889,7 @@ snapshots: mobx-react-helper@0.5.1(mobx@6.15.0)(react@19.2.3)(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 lodash.isequalwith: 4.4.0 mobx: 6.15.0 react: 19.2.3 @@ -8855,7 +8916,7 @@ snapshots: mobx-restful-table@2.6.3(@types/react@19.2.7)(core-js@3.47.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 classnames: 2.5.1 lodash: 4.17.21 mobx: 6.15.0 @@ -8879,7 +8940,7 @@ snapshots: mobx-restful@2.1.4(core-js@3.47.0)(mobx@6.15.0)(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 idb-keyval: 6.2.2 koajax: 3.1.2(core-js@3.47.0)(typescript@5.9.3) mobx: 6.15.0 @@ -8893,7 +8954,7 @@ snapshots: mobx-strapi@0.8.1(core-js@3.47.0)(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 idb-keyval: 6.2.2 koajax: 3.1.2(core-js@3.47.0)(typescript@5.9.3) mobx: 6.15.0 @@ -8927,12 +8988,12 @@ snapshots: negotiator@0.6.3: {} - next-pwa@5.6.0(@babel/core@7.28.5)(next@16.1.0(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1)): + next-pwa@5.6.0(@babel/core@7.28.5)(next@16.1.1(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1)): dependencies: babel-loader: 8.4.1(@babel/core@7.28.5) clean-webpack-plugin: 4.0.0 globby: 11.1.0 - next: 16.1.0(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1) + next: 16.1.1(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1) terser-webpack-plugin: 5.3.16 workbox-webpack-plugin: 6.6.0 workbox-window: 6.6.0 @@ -8945,7 +9006,7 @@ snapshots: - uglify-js - webpack - next-ssr-middleware@1.1.0(next@16.1.0(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react@19.2.3)(typescript@5.9.3): + next-ssr-middleware@1.1.0(next@16.1.1(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react@19.2.3)(typescript@5.9.3): dependencies: '@koa/bodyparser': 6.0.0(koa@3.1.1) '@koa/router': 15.1.1(koa@3.1.1) @@ -8954,7 +9015,7 @@ snapshots: '@types/react': 19.2.7 jsonwebtoken: 9.0.3 koa: 3.1.1 - next: 16.1.0(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1) + next: 16.1.1(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1) react: 19.2.3 tslib: 2.8.1 web-utility: 4.6.4(typescript@5.9.3) @@ -8963,16 +9024,16 @@ snapshots: - supports-color - typescript - next-with-less@3.0.1(less-loader@12.3.0(less@4.5.1))(less@4.5.1)(next@16.1.0(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1)): + next-with-less@3.0.1(less-loader@12.3.0(less@4.5.1))(less@4.5.1)(next@16.1.1(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1)): dependencies: clone-deep: 4.0.1 less: 4.5.1 less-loader: 12.3.0(less@4.5.1) - next: 16.1.0(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1) + next: 16.1.1(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1) - next@16.1.0(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1): + next@16.1.1(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1): dependencies: - '@next/env': 16.1.0 + '@next/env': 16.1.1 '@swc/helpers': 0.5.15 baseline-browser-mapping: 2.9.11 caniuse-lite: 1.0.30001761 @@ -8981,14 +9042,14 @@ snapshots: react-dom: 19.2.3(react@19.2.3) styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.3) optionalDependencies: - '@next/swc-darwin-arm64': 16.1.0 - '@next/swc-darwin-x64': 16.1.0 - '@next/swc-linux-arm64-gnu': 16.1.0 - '@next/swc-linux-arm64-musl': 16.1.0 - '@next/swc-linux-x64-gnu': 16.1.0 - '@next/swc-linux-x64-musl': 16.1.0 - '@next/swc-win32-arm64-msvc': 16.1.0 - '@next/swc-win32-x64-msvc': 16.1.0 + '@next/swc-darwin-arm64': 16.1.1 + '@next/swc-darwin-x64': 16.1.1 + '@next/swc-linux-arm64-gnu': 16.1.1 + '@next/swc-linux-arm64-musl': 16.1.1 + '@next/swc-linux-x64-gnu': 16.1.1 + '@next/swc-linux-x64-musl': 16.1.1 + '@next/swc-win32-arm64-msvc': 16.1.1 + '@next/swc-win32-x64-msvc': 16.1.1 sass: 1.97.1 sharp: 0.34.5 transitivePeerDependencies: @@ -9056,7 +9117,7 @@ snapshots: open-react-map@0.9.1(core-js@3.47.0)(mobx-react@9.2.1(mobx@6.15.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(mobx@6.15.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 '@types/leaflet': 1.9.21 koajax: 3.1.2(core-js@3.47.0)(typescript@5.9.3) leaflet: 1.9.4 @@ -9088,6 +9149,14 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 + p-any@2.1.0: + dependencies: + p-cancelable: 2.1.1 + p-some: 4.1.0 + type-fest: 0.3.1 + + p-cancelable@2.1.1: {} + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -9106,6 +9175,11 @@ snapshots: p-map@2.1.0: {} + p-some@4.1.0: + dependencies: + aggregate-error: 3.1.0 + p-cancelable: 2.1.1 + p-try@2.2.0: {} parent-module@1.0.1: @@ -9237,7 +9311,7 @@ snapshots: react-bootstrap-editor@2.1.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 edkit: 1.2.7(typescript@5.9.3) mobx: 6.15.0 mobx-react: 9.2.1(mobx@6.15.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -9662,7 +9736,7 @@ snapshots: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 - smol-toml@1.5.2: {} + smol-toml@1.6.0: {} source-list-map@2.0.1: {} @@ -9868,7 +9942,7 @@ snapshots: trough@2.2.0: {} - ts-api-utils@2.1.0(typescript@5.9.3): + ts-api-utils@2.3.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -9897,6 +9971,8 @@ snapshots: type-fest@0.16.0: {} + type-fest@0.3.1: {} + type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -9943,12 +10019,12 @@ snapshots: typed.js@2.1.0: {} - typescript-eslint@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: @@ -10115,7 +10191,7 @@ snapshots: web-utility@4.6.4(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 regenerator-runtime: 0.14.1 typescript: 5.9.3