diff --git a/.env b/.env index 66b033c..2309d08 100644 --- a/.env +++ b/.env @@ -11,7 +11,12 @@ NEXT_PUBLIC_ACTIVITY_TABLE_ID = tblREEMxDOECZZrK NEXT_PUBLIC_PROJECT_TABLE_ID = tblGnY6Hm0nTSBR9 NEXT_PUBLIC_AWARD_TABLE_ID = tblmYd5V5BMngAp2 -NEXT_PUBLIC_STRAPI_API_HOST = https://china-ngo-db.onrender.com/api/ +NEXT_PUBLIC_STRAPI_API_HOST = https://test.nomad-home.cn/api/Lark/ +NEXT_PUBLIC_NGO_BASE_ID = Kfs0bHJZhaKtJLs3uBTcnynnnNf +NEXT_PUBLIC_NGO_TABLE_ID = tbl3eTvwgMGukhqL +NEXT_PUBLIC_NGO_YEAR_STATISTIC_TABLE_ID = tblNWHacXaiEYC50 +NEXT_PUBLIC_NGO_CITY_STATISTIC_TABLE_ID = tblFFyaTEpGAaZNl +NEXT_PUBLIC_NGO_TYPE_STATISTIC_TABLE_ID = tblZeAOFqH6zX6Tr SMTP_HOST = smtp.feishu.cn SMTP_PORT = 465 diff --git a/.npmrc b/.npmrc index beaab3f..8638f02 100644 --- a/.npmrc +++ b/.npmrc @@ -1,3 +1 @@ auto-install-peers = false -//npm.pkg.github.com/:_authToken=${GH_PAT} -@open-source-bazaar:registry=https://npm.pkg.github.com diff --git a/README.md b/README.md index 753fbae..ae839d2 100644 --- a/README.md +++ b/README.md @@ -22,11 +22,8 @@ ## 开始 ```bash -npm install -npm run dev -# or -yarn install -yarn dev +pnpm install +pnpm dev ``` 可访问 http://localhost:3000. diff --git a/components/Map/CityStatisticMap.tsx b/components/Map/CityStatisticMap.tsx index af47a3e..9db6d8b 100644 --- a/components/Map/CityStatisticMap.tsx +++ b/components/Map/CityStatisticMap.tsx @@ -10,7 +10,7 @@ import systemStore from '../../models/System'; const ChinaMap = dynamic(() => import('./ChinaMap'), { ssr: false }); export interface CityStatisticMapProps { - data: OrganizationStatistic['coverageArea']; + data: OrganizationStatistic['city']; onChange?: (city: string) => any; } @@ -27,7 +27,7 @@ export class CityStatisticMap extends ObservedComponent { return Object.entries(data) .map(([city, count]) => { - const point = cityCoordinate[city]; + const point = cityCoordinate[city.replace(/(市|自治州|特别行政区)$/, '')]; if (point) return { diff --git a/components/Organization/Card.tsx b/components/Organization/Card.tsx index fc95f0b..42a0aaa 100644 --- a/components/Organization/Card.tsx +++ b/components/Organization/Card.tsx @@ -1,4 +1,3 @@ -import { Organization } from '@open-source-bazaar/china-ngo-database'; import { Icon } from 'idea-react'; import { observable } from 'mobx'; import { observer } from 'mobx-react'; @@ -8,9 +7,11 @@ import { HTMLAttributes } from 'react'; import { Button, Card, CardProps, Image } from 'react-bootstrap'; import { i18n, I18nContext } from '../../models/Translation'; +import { Organization } from '../../models/Organization'; export interface OrganizationCardProps - extends Pick, 'className' | 'style'>, + extends + Pick, 'className' | 'style'>, Omit, CardProps { onSwitch?: (filter: Partial>) => any; @@ -24,7 +25,7 @@ export class OrganizationCard extends ObservedComponent @@ -34,7 +35,7 @@ export class OrganizationCard extends ObservedComponent )} */} {website && ( - )} @@ -53,9 +54,8 @@ export class OrganizationCard extends ObservedComponent */} - {name} - + {name + ''} + {services && ( ({ text: serviceCategory! }))} + list={(services as string[]).map(text => ({ text }))} /> )} - {description} + {description?.toString()} @@ -99,7 +99,7 @@ export class OrganizationCard extends ObservedComponent )} diff --git a/components/Organization/Charts.tsx b/components/Organization/Charts.tsx index ce3e15e..5178545 100644 --- a/components/Organization/Charts.tsx +++ b/components/Organization/Charts.tsx @@ -6,12 +6,12 @@ import { OrganizationStatistic, sortStatistic } from '../../models/Organization' import { I18nContext } from '../../models/Translation'; const OrganizationCharts: FC = observer( - ({ entityType, serviceCategory, coverageArea }) => { + ({ entityType, serviceCategory, city }) => { const { t } = useContext(I18nContext); const typeList = sortStatistic(entityType), categoryList = sortStatistic(serviceCategory), - areaList = sortStatistic(coverageArea); + areaList = sortStatistic(city); return (
diff --git a/components/Organization/Landscape.tsx b/components/Organization/Landscape.tsx index 2eb373e..26498f5 100644 --- a/components/Organization/Landscape.tsx +++ b/components/Organization/Landscape.tsx @@ -1,4 +1,3 @@ -import { Organization } from '@open-source-bazaar/china-ngo-database'; import { Dialog } from 'idea-react'; import { observable } from 'mobx'; import { observer } from 'mobx-react'; @@ -6,7 +5,7 @@ import { Component } from 'react'; import { Modal } from 'react-bootstrap'; import { splitArray } from 'web-utility'; -import { OrganizationModel } from '../../models/Organization'; +import { Organization, OrganizationModel } from '../../models/Organization'; import systemStore from '../../models/System'; import { OrganizationCard } from './Card'; import styles from './LandScape.module.less'; @@ -46,9 +45,9 @@ export class OpenCollaborationLandscape extends Component this.modal.open({ name: name as string })} >
- {name.slice(0, 2)} + {(name + '').slice(0, 2)}
- {name.slice(2, 4)} + {(name + '').slice(2, 4)}
); diff --git a/models/Organization.ts b/models/Organization.ts index b723145..c95e245 100644 --- a/models/Organization.ts +++ b/models/Organization.ts @@ -1,75 +1,214 @@ -import { observable } from 'mobx'; +import { HTTPClient } from 'koajax'; +import { + BiDataQueryOptions, + BiDataTable, + BiSearch, + normalizeText, + normalizeTextArray, + TableCellLink, + TableCellRelation, + TableCellText, + TableCellValue, + TableRecord, +} from 'mobx-lark'; import { toggle } from 'mobx-restful'; -import { Base, Searchable, SearchableFilter, StrapiListModel } from 'mobx-strapi'; import { countBy, groupBy } from 'web-utility'; -import { Organization } from '@open-source-bazaar/china-ngo-database'; -import { strapiClient } from './Base'; +import { STRAPI_API_HOST } from './configuration'; +import { SearchableFilter } from './System'; +import { observable } from 'mobx'; + +export type Organization = Record< + | 'id' + | 'verified' + | 'name' + | 'code' + | 'entityType' + | 'tags' + | 'startDate' + | 'startYear' + | 'city' + | 'email' + | 'link' + | 'codeLink' + | 'website' + | 'wechatPublic' + | 'logos' + | 'description' + | 'coverageArea' + | 'services', + TableCellValue +>; export type OrganizationStatistic = Record< - 'coverageArea' | 'locale' | 'entityType' | 'serviceCategory', + 'year' | 'city' | 'entityType' | 'serviceCategory', Record >; +export const NGO_BASE_ID = process.env.NEXT_PUBLIC_NGO_BASE_ID!, + NGO_TABLE_ID = process.env.NEXT_PUBLIC_NGO_TABLE_ID!; + export const sortStatistic = (data: Record, sortValue = true) => Object.entries(data) .map(([key, count]) => [key, count] as const) .sort(([kX, vX], [kY, vY]) => (sortValue ? vY - vX : kY.localeCompare(kX))); -export class OrganizationModel extends Searchable(StrapiListModel) { - baseURI = 'organizations'; - client = strapiClient; +export const ngoLarkClient = new HTTPClient({ + baseURI: STRAPI_API_HOST, + responseType: 'json', +}); - sort = { establishedDate: 'asc' } as const; +export class OrganizationModel extends BiDataTable() { + client = ngoLarkClient; - dateKeys = ['establishedDate'] as const; + constructor(appId = NGO_BASE_ID, tableId = NGO_TABLE_ID) { + super(appId, tableId); + } - searchKeys = ['name', 'description', 'coverageArea'] as const; + keyMap = { + name: '常用名称', + code: '机构信用代码', + entityType: '实体类型', + startDate: '成立时间', + startYear: '成立年份', + city: '城市', + website: '机构官网', + wechatPublic: '机构微信公众号', + description: '机构/项目简介', + coverageArea: '机构/项目辐射范围', + services: '关于行业类服务对象', + }; - @observable - accessor statistic = {} as OrganizationStatistic; + requiredKeys = ['name', 'entityType', 'city', 'description'] as const; + + queryOptions: BiDataQueryOptions = { text_field_as_array: false }; @observable accessor typeMap: Record = {}; + extractFields({ + fields: { city, entityType, tags, website, codeLink, ...fields }, + ...meta + }: TableRecord) { + return { + ...meta, + ...fields, + city: normalizeTextArray(city as TableCellText[]), + entityType: (entityType as TableCellRelation[])?.map(normalizeText), + tags: (tags as TableCellRelation[])?.map(normalizeText).toString().split(','), + website: (website as TableCellLink)?.link, + codeLink: (codeLink as TableCellLink)?.link, + }; + } + @toggle('downloading') async getYearRange() { - const now = Date.now(), - organizationStore = new OrganizationModel(); + const yearStore = new OrganizationYearStatisticModel(); - const [{ establishedDate: start } = {}] = await organizationStore.getList({}, 1, 1); + const years = await yearStore.getAll(); - Object.assign(organizationStore, { sort: { establishedDate: 'desc' } }); - - const [{ establishedDate: end } = {}] = await organizationStore.getList({}, 1, 1); - - const startYear = new Date(start || now).getFullYear(), - endYear = new Date(end || now).getFullYear(); - - return [startYear, endYear] as const; + const [{ name: start } = {}] = years.sort( + ({ name: a }, { name: b }) => (a as number) - (b as number), + ); + const [{ name: end } = {}] = years.sort( + ({ name: a }, { name: b }) => (b as number) - (a as number), + ); + return [start, end] as [number, number]; } - async getStatistic(filter?: SearchableFilter) { + async getStatistic(filter?: SearchableFilter) { const list = await this.getAll(filter); const statistic = Object.fromEntries( - (['coverageArea', 'locale', 'entityType'] as (keyof Organization)[]).map(key => [ + (['city', 'entityType'] as (keyof Organization)[]).map(key => [ key, countBy(list, ({ [key]: value }) => value?.toString() || 'unknown'), ]), ); const serviceCategory = countBy( list, - ({ services }) => - services?.map(({ serviceCategory }) => serviceCategory!).filter(Boolean) || [], + ({ services }) => (services as string[])?.map(service => service).filter(Boolean) || [], ); return (this.statistic = { ...statistic, serviceCategory } as OrganizationStatistic); } - async groupAllByType(filter?: SearchableFilter) { + async groupAllByType(filter?: SearchableFilter) { const allData = await this.getAll(filter); return (this.typeMap = groupBy(allData, 'entityType')); } } + +export type OrganizationStatisticItem = Record< + 'name' | `${'organization' | 'activity'}Count`, + TableCellValue +>; + +export const NGO_YEAR_STATISTIC_TABLE_ID = process.env.NEXT_PUBLIC_NGO_YEAR_STATISTIC_TABLE_ID!, + NGO_CITY_STATISTIC_TABLE_ID = process.env.NEXT_PUBLIC_NGO_CITY_STATISTIC_TABLE_ID!, + NGO_TYPE_STATISTIC_TABLE_ID = process.env.NEXT_PUBLIC_NGO_TYPE_STATISTIC_TABLE_ID!; + +export abstract class OrganizationStatisticModel extends BiDataTable() { + client = ngoLarkClient; + + requiredKeys = ['name'] as const; + + queryOptions = { text_field_as_array: false }; + + countAll = async ([key = 'organizationCount']: (keyof OrganizationStatisticItem)[] = []) => { + const list = await this.getAll(); + const group = list.map(({ name, [key]: count }) => count && [name, count]).filter(Boolean) as [ + string, + number, + ][]; + + return Object.fromEntries(group); + }; +} + +export class OrganizationYearStatisticModel extends OrganizationStatisticModel { + constructor(appId = NGO_BASE_ID, tableId = NGO_YEAR_STATISTIC_TABLE_ID) { + super(appId, tableId); + } + + keyMap = { + name: '年份', + organizationCount: '机构数', + }; +} + +export class OrganizationCityStatisticModel extends OrganizationStatisticModel { + constructor(appId = NGO_BASE_ID, tableId = NGO_CITY_STATISTIC_TABLE_ID) { + super(appId, tableId); + } + + keyMap = { + name: '区县', + organizationCount: '机构数', + }; +} + +export class OrganizationTypeStatisticModel extends OrganizationStatisticModel { + constructor(appId = NGO_BASE_ID, tableId = NGO_TYPE_STATISTIC_TABLE_ID) { + super(appId, tableId); + } + + keyMap = { + name: '类型', + organizationCount: '机构数', + }; +} + +export class SearchOrganizationModel extends BiSearch(OrganizationModel) { + searchKeys = [ + 'name', + 'description', + 'city', + 'email', + 'website', + 'codeLink', + 'wechatPublic', + ] as const; +} + export default new OrganizationModel(); diff --git a/models/System.ts b/models/System.ts index 776ff28..5c8f97a 100644 --- a/models/System.ts +++ b/models/System.ts @@ -6,7 +6,7 @@ import { Constructor } from 'web-utility'; import { SearchActivityModel } from './Activity'; import { SearchAwardModel } from './Award'; import { ownClient } from './Base'; -import { OrganizationModel } from './Organization'; +import { SearchOrganizationModel } from './Organization'; import { SearchProjectModel } from './Project'; export type SearchableFilter = Filter & { @@ -26,7 +26,7 @@ export class SystemModel extends BaseModel { activity: SearchActivityModel, project: SearchProjectModel, award: SearchAwardModel, - NGO: OrganizationModel, + NGO: SearchOrganizationModel, } as Record>>; @observable diff --git a/package.json b/package.json index 407aa81..e56249a 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,6 @@ "description": "Open Source Bazaar web-site", "private": true, "scripts": { - "e": "pnpx @dotenvx/dotenvx run -f .env.personal.local -- pnpm", "prepare": "husky", "install": "pnpx git-utility download https://github.com/Open-Source-Bazaar/key-vault main Open-Source-Bazaar.github.io || true", "postinstall": "next typegen", @@ -18,7 +17,7 @@ "@koa/router": "^15.4.0", "@mdx-js/loader": "^3.1.1", "@mdx-js/react": "^3.1.1", - "@next/mdx": "^16.2.1", + "@next/mdx": "^16.2.2", "core-js": "^3.49.0", "echarts-jsx": "^0.6.0", "file-type": "^22.0.0", @@ -28,18 +27,18 @@ "koa-jwt": "^4.0.4", "koajax": "^3.3.0", "license-filter": "^0.2.5", - "marked": "^17.0.5", + "marked": "^17.0.6", "mime": "^4.1.0", "mobx": "^6.15.0", "mobx-github": "^0.6.2", "mobx-i18n": "^0.7.2", - "mobx-lark": "^2.7.0", + "mobx-lark": "^2.8.1", "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.2.1", + "next": "^16.2.2", "next-pwa": "^5.6.0", "next-ssr-middleware": "^1.1.0", "nodemailer": "^8.0.4", @@ -50,29 +49,28 @@ "react-typed-component": "^1.0.6", "remark-frontmatter": "^5.0.0", "remark-mdx-frontmatter": "^5.2.0", - "web-utility": "^4.6.4", + "web-utility": "^4.6.5", "yaml": "^2.8.3" }, "devDependencies": { "@babel/plugin-proposal-decorators": "^7.29.0", "@babel/plugin-transform-typescript": "^7.28.6", "@babel/preset-react": "^7.28.5", - "@cspell/eslint-plugin": "^9.7.0", + "@cspell/eslint-plugin": "^9.8.0", "@eslint/js": "^10.0.1", - "@next/eslint-plugin-next": "^16.2.1", - "@open-source-bazaar/china-ngo-database": "^0.6.0", + "@next/eslint-plugin-next": "^16.2.2", "@softonus/prettier-plugin-duplicate-remover": "^1.1.2", "@stylistic/eslint-plugin": "^5.10.0", "@types/eslint-config-prettier": "^6.11.3", "@types/jsonwebtoken": "^9.0.10", "@types/koa": "^3.0.2", "@types/next-pwa": "^5.6.9", - "@types/node": "^24.12.0", - "@types/nodemailer": "^7.0.11", + "@types/node": "^24.12.2", + "@types/nodemailer": "^8.0.0", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "eslint": "^10.1.0", - "eslint-config-next": "^16.2.1", + "eslint": "^10.2.0", + "eslint-config-next": "^16.2.2", "eslint-config-prettier": "^10.1.8", "eslint-plugin-react": "^7.37.5", "eslint-plugin-simple-import-sort": "^12.1.1", @@ -85,9 +83,9 @@ "next-with-less": "^3.0.1", "prettier": "^3.8.1", "prettier-plugin-css-order": "^2.2.0", - "sass": "^1.98.0", + "sass": "^1.99.0", "typescript": "~5.9.3", - "typescript-eslint": "^8.57.2" + "typescript-eslint": "^8.58.0" }, "resolutions": { "mobx-react-helper": "$mobx-react-helper", diff --git a/pages/NGO/[year]/index.tsx b/pages/NGO/[year]/index.tsx index cf2ad80..7925f2d 100644 --- a/pages/NGO/[year]/index.tsx +++ b/pages/NGO/[year]/index.tsx @@ -23,7 +23,7 @@ export const getServerSideProps = compose<{ year: string }, OrganizationPageProp cache(), errorLogger, async ({ params }) => { - const statistic = await new OrganizationModel().getStatistic({ establishedDate: params!.year }); + const statistic = await new OrganizationModel().getStatistic({ startYear: params!.year }); return { props: { year: params!.year, statistic } }; }, @@ -47,7 +47,7 @@ const OrganizationPage: FC = observer(({ year, statistic - + diff --git a/pages/NGO/[year]/landscape.tsx b/pages/NGO/[year]/landscape.tsx index 296171d..d9ea193 100644 --- a/pages/NGO/[year]/landscape.tsx +++ b/pages/NGO/[year]/landscape.tsx @@ -15,9 +15,7 @@ export const getServerSideProps = compose<{ year: string }, Pick { - const typeMap = await new OrganizationModel().groupAllByType({ - establishedDate: params!.year, - }); + const typeMap = await new OrganizationModel().groupAllByType({ startYear: params!.year }); return { props: JSON.parse(JSON.stringify({ typeMap })) }; }, diff --git a/pages/api/Lark/bitable/v1/[...slug].ts b/pages/api/Lark/bitable/v1/[...slug].ts index 37c2989..11ea5a7 100644 --- a/pages/api/Lark/bitable/v1/[...slug].ts +++ b/pages/api/Lark/bitable/v1/[...slug].ts @@ -1,41 +1,6 @@ -import { Context } from 'koa'; -import { LarkPageData, TableRecord, TableRecordData } from 'mobx-lark'; -import { DataObject } from 'mobx-restful'; -import { createKoaRouter, withKoaRouter } from 'next-ssr-middleware'; - -import { safeAPI } from '../../../core'; -import { proxyLark, proxyLarkAll } from '../../core'; +import { withSafeKoa } from '../../../core'; +import { proxyLarkAll } from '../../core'; export const config = { api: { bodyParser: false } }; -const router = createKoaRouter(import.meta.url); - -function filterData(fields: DataObject) { - for (const key of Object.keys(fields)) if (!/^\w+$/.test(key)) delete fields[key]; -} - -router.get('/apps/:app/tables/:table/records/:record', safeAPI, async (context: Context) => { - const { status, body } = await proxyLark>(context); - - const { fields } = body!.data!.record; - - filterData(fields); - - context.status = status; - context.body = body; -}); - -router.get('/apps/:app/tables/:table/records', safeAPI, async (context: Context) => { - const { status, body } = await proxyLark>>(context); - - const list = body!.data!.items || []; - - for (const { fields } of list) filterData(fields); - - context.status = status; - context.body = body; -}); - -router.all('/*slug', safeAPI, proxyLarkAll); - -export default withKoaRouter(router); +export default withSafeKoa(proxyLarkAll); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e41b5ed..c83790c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,7 +6,7 @@ settings: overrides: mobx-react-helper: ^0.5.1 - next: ^16.2.1 + next: ^16.2.2 importers: @@ -25,8 +25,8 @@ importers: specifier: ^3.1.1 version: 3.1.1(@types/react@19.2.14)(react@19.2.4) '@next/mdx': - specifier: ^16.2.1 - version: 16.2.1(@mdx-js/loader@3.1.1)(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4)) + specifier: ^16.2.2 + version: 16.2.2(@mdx-js/loader@3.1.1)(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4)) core-js: specifier: ^3.49.0 version: 3.49.0 @@ -55,8 +55,8 @@ importers: specifier: ^0.2.5 version: 0.2.5 marked: - specifier: ^17.0.5 - version: 17.0.5 + specifier: ^17.0.6 + version: 17.0.6 mime: specifier: ^4.1.0 version: 4.1.0 @@ -70,8 +70,8 @@ importers: specifier: ^0.7.2 version: 0.7.2(mobx@6.15.0)(typescript@5.9.3) mobx-lark: - specifier: ^2.7.0 - version: 2.7.0(core-js@3.49.0)(react@19.2.4)(typescript@5.9.3) + specifier: ^2.8.1 + version: 2.8.1(core-js@3.49.0)(react@19.2.4)(typescript@5.9.3) mobx-react: specifier: ^9.2.1 version: 9.2.1(mobx@6.15.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -88,14 +88,14 @@ importers: specifier: ^0.8.1 version: 0.8.1(core-js@3.49.0)(typescript@5.9.3) next: - specifier: ^16.2.1 - version: 16.2.1(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.98.0) + specifier: ^16.2.2 + version: 16.2.2(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0) next-pwa: specifier: ^5.6.0 - version: 5.6.0(@babel/core@7.29.0)(next@16.2.1(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.98.0)) + version: 5.6.0(@babel/core@7.29.0)(next@16.2.2(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0)) next-ssr-middleware: specifier: ^1.1.0 - version: 1.1.0(next@16.2.1(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.98.0))(react@19.2.4)(typescript@5.9.3) + version: 1.1.0(next@16.2.2(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0))(react@19.2.4)(typescript@5.9.3) nodemailer: specifier: ^8.0.4 version: 8.0.4 @@ -121,8 +121,8 @@ importers: specifier: ^5.2.0 version: 5.2.0 web-utility: - specifier: ^4.6.4 - version: 4.6.4(typescript@5.9.3) + specifier: ^4.6.5 + version: 4.6.5(typescript@5.9.3) yaml: specifier: ^2.8.3 version: 2.8.3 @@ -137,23 +137,20 @@ importers: specifier: ^7.28.5 version: 7.28.5(@babel/core@7.29.0) '@cspell/eslint-plugin': - specifier: ^9.7.0 - version: 9.7.0(eslint@10.1.0(jiti@2.6.1)) + specifier: ^9.8.0 + version: 9.8.0(eslint@10.2.0(jiti@2.6.1)) '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.1.0(jiti@2.6.1)) + version: 10.0.1(eslint@10.2.0(jiti@2.6.1)) '@next/eslint-plugin-next': - specifier: ^16.2.1 - version: 16.2.1 - '@open-source-bazaar/china-ngo-database': - specifier: ^0.6.0 - version: 0.6.0 + specifier: ^16.2.2 + version: 16.2.2 '@softonus/prettier-plugin-duplicate-remover': specifier: ^1.1.2 version: 1.1.2 '@stylistic/eslint-plugin': specifier: ^5.10.0 - version: 5.10.0(eslint@10.1.0(jiti@2.6.1)) + version: 5.10.0(eslint@10.2.0(jiti@2.6.1)) '@types/eslint-config-prettier': specifier: ^6.11.3 version: 6.11.3 @@ -165,13 +162,13 @@ importers: version: 3.0.2 '@types/next-pwa': specifier: ^5.6.9 - version: 5.6.9(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.98.0) + version: 5.6.9(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0) '@types/node': - specifier: ^24.12.0 - version: 24.12.0 + specifier: ^24.12.2 + version: 24.12.2 '@types/nodemailer': - specifier: ^7.0.11 - version: 7.0.11 + specifier: ^8.0.0 + version: 8.0.0 '@types/react': specifier: ^19.2.14 version: 19.2.14 @@ -179,20 +176,20 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) eslint: - specifier: ^10.1.0 - version: 10.1.0(jiti@2.6.1) + specifier: ^10.2.0 + version: 10.2.0(jiti@2.6.1) eslint-config-next: - specifier: ^16.2.1 - version: 16.2.1(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + specifier: ^16.2.2 + version: 16.2.2(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.1.0(jiti@2.6.1)) + version: 10.1.8(eslint@10.2.0(jiti@2.6.1)) eslint-plugin-react: specifier: ^7.37.5 - version: 7.37.5(eslint@10.1.0(jiti@2.6.1)) + version: 7.37.5(eslint@10.2.0(jiti@2.6.1)) eslint-plugin-simple-import-sort: specifier: ^12.1.1 - version: 12.1.1(eslint@10.1.0(jiti@2.6.1)) + version: 12.1.1(eslint@10.2.0(jiti@2.6.1)) globals: specifier: ^17.4.0 version: 17.4.0 @@ -213,7 +210,7 @@ importers: version: 16.4.0 next-with-less: specifier: ^3.0.1 - version: 3.0.1(less-loader@12.3.2(less@4.6.4))(less@4.6.4)(next@16.2.1(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.98.0)) + version: 3.0.1(less-loader@12.3.2(less@4.6.4))(less@4.6.4)(next@16.2.2(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0)) prettier: specifier: ^3.8.1 version: 3.8.1 @@ -221,14 +218,14 @@ importers: specifier: ^2.2.0 version: 2.2.0(postcss@8.4.31)(prettier@3.8.1) sass: - specifier: ^1.98.0 - version: 1.98.0 + specifier: ^1.99.0 + version: 1.99.0 typescript: specifier: ~5.9.3 version: 5.9.3 typescript-eslint: - specifier: ^8.57.2 - version: 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + specifier: ^8.58.0 + version: 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) packages: @@ -802,28 +799,28 @@ packages: '@codexteam/icons@0.0.4': resolution: {integrity: sha512-V8N/TY2TGyas4wLrPIFq7bcow68b3gu8DfDt1+rrHPtXxcexadKauRJL6eQgfG7Z0LCrN4boLRawR4S9gjIh/Q==} - '@cspell/cspell-bundled-dicts@9.7.0': - resolution: {integrity: sha512-s7h1vo++Q3AsfQa3cs0u/KGwm3SYInuIlC4kjlCBWjQmb4KddiZB5O1u0+3TlA7GycHb5M4CR7MDfHUICgJf+w==} + '@cspell/cspell-bundled-dicts@9.8.0': + resolution: {integrity: sha512-MpXFpVyBPfJQ1YuVotljqUaGf6lWuf+fuWBBgs0PHFYTSjRPWuIxviAaCDnup/CJLLH60xQL4IlcQe4TOjzljw==} engines: {node: '>=20'} - '@cspell/cspell-performance-monitor@9.7.0': - resolution: {integrity: sha512-w1PZIFXuvjnC6mQHyYAFnrsn5MzKnEcEkcK1bj4OG00bAt7WX2VUA/eNNt9c1iHozCQ+FcRYlfbGxuBmNyzSgw==} + '@cspell/cspell-performance-monitor@9.8.0': + resolution: {integrity: sha512-IsrXYzn23yJICIQ915ACdf+2lNEcFNTu5BIQt3khHOsGVvZ9/AZYpu9Dk825vUyZG7RHg2Oi6dYNiJtULG4ouQ==} engines: {node: '>=20.18'} - '@cspell/cspell-pipe@9.7.0': - resolution: {integrity: sha512-iiisyRpJciU9SOHNSi0ZEK0pqbEMFRatI/R4O+trVKb+W44p4MNGClLVRWPGUmsFbZKPJL3jDtz0wPlG0/JCZA==} + '@cspell/cspell-pipe@9.8.0': + resolution: {integrity: sha512-ISEUD8PHYkd2Ktafc6hFfIXdGKYUvthA09NbwwZsWmOqYyk4wWKHZKqyyxD+BcrFwOyMOJcD8OEvIjkRQp2SJw==} engines: {node: '>=20'} - '@cspell/cspell-resolver@9.7.0': - resolution: {integrity: sha512-uiEgS238mdabDnwavo6HXt8K98jlh/jpm7NONroM9NTr9rzck2VZKD2kXEj85wDNMtRsRXNoywTjwQ8WTB6/+w==} + '@cspell/cspell-resolver@9.8.0': + resolution: {integrity: sha512-PZJj56BZpKfMxOzWkyt7b+aIXObe+8Ku/zLI4xDXPSuQPENbHBFHfPIZx68CyGEkanKxZ1ewKVx/FT1FUy+wDA==} engines: {node: '>=20'} - '@cspell/cspell-service-bus@9.7.0': - resolution: {integrity: sha512-fkqtaCkg4jY/FotmzjhIavbXuH0AgUJxZk78Ktf4XlhqOZ4wDeUWrCf220bva4mh3TWiLx/ae9lIlpl59Vx6hA==} + '@cspell/cspell-service-bus@9.8.0': + resolution: {integrity: sha512-P45sd2nqwcqhulBBbQnZB/JNcobecTrP4Ky3vmEq0cprsvavc+ZoHF9U2Ql5ghMSUzjrF2n1aNzZ8cH4IlsnKg==} engines: {node: '>=20'} - '@cspell/cspell-types@9.7.0': - resolution: {integrity: sha512-Tdfx4eH2uS+gv9V9NCr3Rz+c7RSS6ntXp3Blliud18ibRUlRxO9dTaOjG4iv4x0nAmMeedP1ORkEpeXSkh2QiQ==} + '@cspell/cspell-types@9.8.0': + resolution: {integrity: sha512-7Ge4UD6SCA49Tcc3+GTlz3Xn4cqVUAXtDO0u9IeHvJgkN3Me2Rw2GB/CtGmhKST3YeEeZMX7ww09TdHMUJlehw==} engines: {node: '>=20'} '@cspell/dict-ada@4.1.1': @@ -1008,30 +1005,30 @@ packages: '@cspell/dict-zig@1.0.0': resolution: {integrity: sha512-XibBIxBlVosU06+M6uHWkFeT0/pW5WajDRYdXG2CgHnq85b0TI/Ks0FuBJykmsgi2CAD3Qtx8UHFEtl/DSFnAQ==} - '@cspell/dynamic-import@9.7.0': - resolution: {integrity: sha512-Ws36IYvtS/8IN3x6K9dPLvTmaArodRJmzTn2Rkf2NaTnIYWhRuFzsP3SVVO59NN3fXswAEbmz5DSbVUe8bPZHg==} + '@cspell/dynamic-import@9.8.0': + resolution: {integrity: sha512-wMgb32lqG9g6lCipUQsY9Bk5idXPDz7wvzOqEsU1M2HmNYmdE1wfPoRpfQfsVL965iG3+6h8QLr2+8FKpweFEQ==} engines: {node: '>=20'} - '@cspell/eslint-plugin@9.7.0': - resolution: {integrity: sha512-VUF+FSQ8hnZcezM+6Ae0m2ENlqE2nxp5UMoNfd2L+UXzVTS+1NrSPdqF/k8iQv6xgDJcHvtAE0r3td2EQSZhaw==} + '@cspell/eslint-plugin@9.8.0': + resolution: {integrity: sha512-2JSBodLhVIvaZtVOyFZK5un+J2xwV5BZCvaQVMVWqzSxhr1kaJp6uwI7d08iItlHZ3tZQsDWQ5W/2GPQ57xoTw==} engines: {node: '>=20'} peerDependencies: eslint: ^8 || ^9 || ^10 - '@cspell/filetypes@9.7.0': - resolution: {integrity: sha512-Ln9e/8wGOyTeL3DCCs6kwd18TSpTw3kxsANjTrzLDASrX4cNmAdvc9J5dcIuBHPaqOAnRQxuZbzUlpRh73Y24w==} + '@cspell/filetypes@9.8.0': + resolution: {integrity: sha512-yHvtYn9qt6zykua77sNzTcf7HrG/dpo/+2pCMGSrfSrQypSNT6FUFvMS04W7kwhP86U1GkCjppNykXuoH3cqug==} engines: {node: '>=20'} - '@cspell/rpc@9.7.0': - resolution: {integrity: sha512-VnZ4ABgQeoS4RwofcePkDP7L6tf3Kh5D7LQKoyRM4R6XtfSsYefym6XKaRl3saGtthH5YyjgNJ0Tgdjen4wAAw==} + '@cspell/rpc@9.8.0': + resolution: {integrity: sha512-t4lHEa254W+PePXNQ1noW7QhQxz/mhsJ9X8LEt0ILzBbPWCJzN+JuaM7EiolIPiwxtfxpMwKx9482kt4eTja7A==} engines: {node: '>=20.18'} - '@cspell/strong-weak-map@9.7.0': - resolution: {integrity: sha512-5xbvDASjklrmy88O6gmGXgYhpByCXqOj5wIgyvwZe2l83T1bE+iOfGI4pGzZJ/mN+qTn1DNKq8BPBPtDgb7Q2Q==} + '@cspell/strong-weak-map@9.8.0': + resolution: {integrity: sha512-HocksAqZ0JcWA5oWO7TIlOCftXVGkPGzbeFlCRRrjJpZmYQH+4NdeEXyQC6T89NGocp45td/CgyBcAaFMy1N9w==} engines: {node: '>=20'} - '@cspell/url@9.7.0': - resolution: {integrity: sha512-ZaaBr0pTvNxmyUbIn+nVPXPr383VqJzfUDMWicgTjJIeo2+T2hOq2kNpgpvTIrWtZrsZnSP8oXms1+sKTjcvkw==} + '@cspell/url@9.8.0': + resolution: {integrity: sha512-LY1lFiZLTQF/ma1ilfKmRmFmEOw0RfYhyl0UMhY7/d93b+kiDMhxP/9Qir4+5LyiRncaE3++ZcWno9Hya+ssRg==} engines: {node: '>=20'} '@editorjs/caret@1.0.3': @@ -1049,14 +1046,14 @@ packages: '@editorjs/paragraph@2.11.7': resolution: {integrity: sha512-qD6bbWvRc4VvP0mXDOm+hOhzzhUYR9ZjcAvgCuKWcCbUMpCvhVF1s8NX40zdjekPi6JEnuHTamCncTrSzVsVhw==} - '@emnapi/core@1.9.1': - resolution: {integrity: sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==} + '@emnapi/core@1.9.2': + resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} - '@emnapi/runtime@1.9.1': - resolution: {integrity: sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==} + '@emnapi/runtime@1.9.2': + resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} - '@emnapi/wasi-threads@1.2.0': - resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} @@ -1068,16 +1065,16 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.23.3': - resolution: {integrity: sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==} + '@eslint/config-array@0.23.4': + resolution: {integrity: sha512-lf19F24LSMfF8weXvW5QEtnLqW70u7kgit5e9PSx0MsHAFclGd1T9ynvWEMDT1w5J4Qt54tomGeAhdoAku1Xow==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.5.3': - resolution: {integrity: sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==} + '@eslint/config-helpers@0.5.4': + resolution: {integrity: sha512-jJhqiY3wPMlWWO3370M86CPJ7pt8GmEwSLglMfQhjXal07RCvhmU0as4IuUEW5SJeunfItiEetHmSxCCe9lDBg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/core@1.1.1': - resolution: {integrity: sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==} + '@eslint/core@1.2.0': + resolution: {integrity: sha512-8FTGbNzTvmSlc4cZBaShkC6YvFMG0riksYWRFKXztqVdXaQbcZLXlFbSpC05s70sGEsXAw0qwhx69JiW7hQS7A==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/js@10.0.1': @@ -1089,12 +1086,12 @@ packages: eslint: optional: true - '@eslint/object-schema@3.0.3': - resolution: {integrity: sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==} + '@eslint/object-schema@3.0.4': + resolution: {integrity: sha512-55lO/7+Yp0ISKRP0PsPtNTeNGapXaO085aELZmWCVc5SH3jfrqpuU6YgOdIxMS99ZHkQN1cXKE+cdIqwww9ptw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/plugin-kit@0.6.1': - resolution: {integrity: sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==} + '@eslint/plugin-kit@0.7.0': + resolution: {integrity: sha512-ejvBr8MQCbVsWNZnCwDXjUKq40MDmHalq7cJ6e9s/qzTUFIIo/afzt1Vui9T97FM/V/pN4YsFVoed5NIa96RDg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@giscus/react@3.1.0': @@ -1335,14 +1332,14 @@ packages: '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - '@next/env@16.2.1': - resolution: {integrity: sha512-n8P/HCkIWW+gVal2Z8XqXJ6aB3J0tuM29OcHpCsobWlChH/SITBs1DFBk/HajgrwDkqqBXPbuUuzgDvUekREPg==} + '@next/env@16.2.2': + resolution: {integrity: sha512-LqSGz5+xGk9EL/iBDr2yo/CgNQV6cFsNhRR2xhSXYh7B/hb4nePCxlmDvGEKG30NMHDFf0raqSyOZiQrO7BkHQ==} - '@next/eslint-plugin-next@16.2.1': - resolution: {integrity: sha512-r0epZGo24eT4g08jJlg2OEryBphXqO8aL18oajoTKLzHJ6jVr6P6FI58DLMug04MwD3j8Fj0YK0slyzneKVyzA==} + '@next/eslint-plugin-next@16.2.2': + resolution: {integrity: sha512-IOPbWzDQ+76AtjZioaCjpIY72xNSDMnarZ2GMQ4wjNLvnJEJHqxQwGFhgnIWLV9klb4g/+amg88Tk5OXVpyLTw==} - '@next/mdx@16.2.1': - resolution: {integrity: sha512-w0YOkOc+WEnsTJ8uxzBOvpe3R+9BnJOxWCE7qcI/62CzJiUEd8JKtF25e3R8cW5BGsKyRW8p4zE2JLyXKa8xdw==} + '@next/mdx@16.2.2': + resolution: {integrity: sha512-2CbRTXE6sJ7zDAaKXknb5FrrPs46iJeMPzuoBXsAOV/XVnxABGD4mSDusn0VuCoII/KjUZ+zsuo2VFbchYQXng==} peerDependencies: '@mdx-js/loader': '>=0.15.0' '@mdx-js/react': '>=0.15.0' @@ -1352,54 +1349,54 @@ packages: '@mdx-js/react': optional: true - '@next/swc-darwin-arm64@16.2.1': - resolution: {integrity: sha512-BwZ8w8YTaSEr2HIuXLMLxIdElNMPvY9fLqb20LX9A9OMGtJilhHLbCL3ggyd0TwjmMcTxi0XXt+ur1vWUoxj2Q==} + '@next/swc-darwin-arm64@16.2.2': + resolution: {integrity: sha512-B92G3ulrwmkDSEJEp9+XzGLex5wC1knrmCSIylyVeiAtCIfvEJYiN3v5kXPlYt5R4RFlsfO/v++aKV63Acrugg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@16.2.1': - resolution: {integrity: sha512-/vrcE6iQSJq3uL3VGVHiXeaKbn8Es10DGTGRJnRZlkNQQk3kaNtAJg8Y6xuAlrx/6INKVjkfi5rY0iEXorZ6uA==} + '@next/swc-darwin-x64@16.2.2': + resolution: {integrity: sha512-7ZwSgNKJNQiwW0CKhNm9B1WS2L1Olc4B2XY0hPYCAL3epFnugMhuw5TMWzMilQ3QCZcCHoYm9NGWTHbr5REFxw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@16.2.1': - resolution: {integrity: sha512-uLn+0BK+C31LTVbQ/QU+UaVrV0rRSJQ8RfniQAHPghDdgE+SlroYqcmFnO5iNjNfVWCyKZHYrs3Nl0mUzWxbBw==} + '@next/swc-linux-arm64-gnu@16.2.2': + resolution: {integrity: sha512-c3m8kBHMziMgo2fICOP/cd/5YlrxDU5YYjAJeQLyFsCqVF8xjOTH/QYG4a2u48CvvZZSj1eHQfBCbyh7kBr30Q==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [glibc] - '@next/swc-linux-arm64-musl@16.2.1': - resolution: {integrity: sha512-ssKq6iMRnHdnycGp9hCuGnXJZ0YPr4/wNwrfE5DbmvEcgl9+yv97/Kq3TPVDfYome1SW5geciLB9aiEqKXQjlQ==} + '@next/swc-linux-arm64-musl@16.2.2': + resolution: {integrity: sha512-VKLuscm0P/mIfzt+SDdn2+8TNNJ7f0qfEkA+az7OqQbjzKdBxAHs0UvuiVoCtbwX+dqMEL9U54b5wQ/aN3dHeg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [musl] - '@next/swc-linux-x64-gnu@16.2.1': - resolution: {integrity: sha512-HQm7SrHRELJ30T1TSmT706IWovFFSRGxfgUkyWJZF/RKBMdbdRWJuFrcpDdE5vy9UXjFOx6L3mRdqH04Mmx0hg==} + '@next/swc-linux-x64-gnu@16.2.2': + resolution: {integrity: sha512-kU3OPHJq6sBUjOk7wc5zJ7/lipn8yGldMoAv4z67j6ov6Xo/JvzA7L7LCsyzzsXmgLEhk3Qkpwqaq/1+XpNR3g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [glibc] - '@next/swc-linux-x64-musl@16.2.1': - resolution: {integrity: sha512-aV2iUaC/5HGEpbBkE+4B8aHIudoOy5DYekAKOMSHoIYQ66y/wIVeaRx8MS2ZMdxe/HIXlMho4ubdZs/J8441Tg==} + '@next/swc-linux-x64-musl@16.2.2': + resolution: {integrity: sha512-CKXRILyErMtUftp+coGcZ38ZwE/Aqq45VMCcRLr2I4OXKrgxIBDXHnBgeX/UMil0S09i2JXaDL3Q+TN8D/cKmg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [musl] - '@next/swc-win32-arm64-msvc@16.2.1': - resolution: {integrity: sha512-IXdNgiDHaSk0ZUJ+xp0OQTdTgnpx1RCfRTalhn3cjOP+IddTMINwA7DXZrwTmGDO8SUr5q2hdP/du4DcrB1GxA==} + '@next/swc-win32-arm64-msvc@16.2.2': + resolution: {integrity: sha512-sS/jSk5VUoShUqINJFvNjVT7JfR5ORYj/+/ZpOYbbIohv/lQfduWnGAycq2wlknbOql2xOR0DoV0s6Xfcy49+g==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@16.2.1': - resolution: {integrity: sha512-qvU+3a39Hay+ieIztkGSbF7+mccbbg1Tk25hc4JDylf8IHjYmY/Zm64Qq1602yPyQqvie+vf5T/uPwNxDNIoeg==} + '@next/swc-win32-x64-msvc@16.2.2': + resolution: {integrity: sha512-aHaKceJgdySReT7qeck5oShucxWRiiEuwCGK8HHALe6yZga8uyFpLkPgaRw3kkF04U7ROogL/suYCNt/+CuXGA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1423,9 +1420,6 @@ packages: '@octokit/openapi-types@26.0.0': resolution: {integrity: sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==} - '@open-source-bazaar/china-ngo-database@0.6.0': - resolution: {integrity: sha512-nMfbV/TswGq4U6/zN8NYM1I602zC7q/4cpqd7mMH7r+O0DTVoqIznsbVsoXuvu3qeoYLgbfQ0dF0UUgaW2ngtQ==, tarball: https://npm.pkg.github.com/download/@open-source-bazaar/china-ngo-database/0.6.0/7aed4d538a60de6cf34ac9377ef8b14918c4060e} - '@parcel/watcher-android-arm64@2.5.6': resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} engines: {node: '>= 10.0.0'} @@ -1616,8 +1610,8 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@swc/helpers@0.5.20': - resolution: {integrity: sha512-2egEBHUMasdypIzrprsu8g+OEVd7Vp2MM3a2eVlM/cyFYto0nGz5BX5BTgh/ShZZI9ed+ozEq+Ngt+rgmUs8tw==} + '@swc/helpers@0.5.21': + resolution: {integrity: sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==} '@tokenizer/inflate@0.4.1': resolution: {integrity: sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==} @@ -1726,14 +1720,14 @@ packages: '@types/next-pwa@5.6.9': resolution: {integrity: sha512-KcymH+MtFYB5KVKIOH1DMqd0wUb8VLCxzHtsaRQQ7S8sGOaTH24Lo2vGZf6/0Ok9e+xWCKhqsSt6cgDJTk91Iw==} - '@types/node@22.19.15': - resolution: {integrity: sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==} + '@types/node@22.19.17': + resolution: {integrity: sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==} - '@types/node@24.12.0': - resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==} + '@types/node@24.12.2': + resolution: {integrity: sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==} - '@types/nodemailer@7.0.11': - resolution: {integrity: sha512-E+U4RzR2dKrx+u3N4DlsmLaDC6mMZOM/TPROxA0UAPiTgI0y4CEFBmZE+coGWTjakDriRsXG368lNk1u9Q0a2g==} + '@types/nodemailer@8.0.0': + resolution: {integrity: sha512-fyf8jWULsCo0d0BuoQ75i6IeoHs47qcqxWc7yUdUcV0pOZGjUTTOvwdG1PRXUDqN/8A64yQdQdnA2pZgcdi+cA==} '@types/prop-types@15.7.15': resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} @@ -1781,63 +1775,63 @@ packages: '@types/warning@3.0.4': resolution: {integrity: sha512-CqN8MnISMwQbLJXO3doBAV4Yw9hx9/Pyr2rZ78+NfaCnhyRA/nKrpyk6E7mKw17ZOaQdLpK9GiUjrqLzBlN3sg==} - '@typescript-eslint/eslint-plugin@8.57.2': - resolution: {integrity: sha512-NZZgp0Fm2IkD+La5PR81sd+g+8oS6JwJje+aRWsDocxHkjyRw0J5L5ZTlN3LI1LlOcGL7ph3eaIUmTXMIjLk0w==} + '@typescript-eslint/eslint-plugin@8.58.0': + resolution: {integrity: sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.57.2 + '@typescript-eslint/parser': ^8.58.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.57.2': - resolution: {integrity: sha512-30ScMRHIAD33JJQkgfGW1t8CURZtjc2JpTrq5n2HFhOefbAhb7ucc7xJwdWcrEtqUIYJ73Nybpsggii6GtAHjA==} + '@typescript-eslint/parser@8.58.0': + resolution: {integrity: sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.57.2': - resolution: {integrity: sha512-FuH0wipFywXRTHf+bTTjNyuNQQsQC3qh/dYzaM4I4W0jrCqjCVuUh99+xd9KamUfmCGPvbO8NDngo/vsnNVqgw==} + '@typescript-eslint/project-service@8.58.0': + resolution: {integrity: sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.57.2': - resolution: {integrity: sha512-snZKH+W4WbWkrBqj4gUNRIGb/jipDW3qMqVJ4C9rzdFc+wLwruxk+2a5D+uoFcKPAqyqEnSb4l2ULuZf95eSkw==} + '@typescript-eslint/scope-manager@8.58.0': + resolution: {integrity: sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.57.2': - resolution: {integrity: sha512-3Lm5DSM+DCowsUOJC+YqHHnKEfFh5CoGkj5Z31NQSNF4l5wdOwqGn99wmwN/LImhfY3KJnmordBq/4+VDe2eKw==} + '@typescript-eslint/tsconfig-utils@8.58.0': + resolution: {integrity: sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.57.2': - resolution: {integrity: sha512-Co6ZCShm6kIbAM/s+oYVpKFfW7LBc6FXoPXjTRQ449PPNBY8U0KZXuevz5IFuuUj2H9ss40atTaf9dlGLzbWZg==} + '@typescript-eslint/type-utils@8.58.0': + resolution: {integrity: sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.57.2': - resolution: {integrity: sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==} + '@typescript-eslint/types@8.58.0': + resolution: {integrity: sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.57.2': - resolution: {integrity: sha512-2MKM+I6g8tJxfSmFKOnHv2t8Sk3T6rF20A1Puk0svLK+uVapDZB/4pfAeB7nE83uAZrU6OxW+HmOd5wHVdXwXA==} + '@typescript-eslint/typescript-estree@8.58.0': + resolution: {integrity: sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.57.2': - resolution: {integrity: sha512-krRIbvPK1ju1WBKIefiX+bngPs+odIQUtR7kymzPfo1POVw3jlF+nLkmexdSSd4UCbDcQn+wMBATOOmpBbqgKg==} + '@typescript-eslint/utils@8.58.0': + resolution: {integrity: sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.57.2': - resolution: {integrity: sha512-zhahknjobV2FiD6Ee9iLbS7OV9zi10rG26odsQdfBO/hjSzUQbkIYgda+iNKK1zNiW2ey+Lf8MU5btN17V3dUw==} + '@typescript-eslint/visitor-keys@8.58.0': + resolution: {integrity: sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -2068,8 +2062,8 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axe-core@4.11.1: - resolution: {integrity: sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==} + axe-core@4.11.2: + resolution: {integrity: sha512-byD6KPdvo72y/wj2T/4zGEvvlis+PsZsn/yPS3pEO+sFpcrqRpX/TJCxvVaEsNeMrfQbCr7w163YqoD9IYwHXw==} engines: {node: '>=4'} axobject-query@4.1.0: @@ -2112,8 +2106,8 @@ packages: resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} engines: {node: '>= 0.6.0'} - baseline-browser-mapping@2.10.12: - resolution: {integrity: sha512-qyq26DxfY4awP2gIRXhhLWfwzwI+N5Nxk6iQi8EFizIaWIjqicQTE4sLnZZVdeKPRcVNoJOkkpfzoIYuvCKaIQ==} + baseline-browser-mapping@2.10.14: + resolution: {integrity: sha512-fOVLPAsFTsQfuCkvahZkzq6nf8KvGWanlYoTh0SVA0A/PIUxQGU2AOZAoD95n2gFLVDW/jP6sbGLny95nmEuHA==} engines: {node: '>=6.0.0'} hasBin: true @@ -2137,8 +2131,8 @@ packages: browser-fs-access@0.37.0: resolution: {integrity: sha512-MKpvZrKtv6pBJ2ACd+VwfS9XauBKTMVZg2UBibypuK1gfiXM7euZjbdKmvRsyxeQRhfzNVQrzCSVGXs19/LP8Q==} - browserslist@4.28.1: - resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2172,8 +2166,8 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001781: - resolution: {integrity: sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==} + caniuse-lite@1.0.30001785: + resolution: {integrity: sha512-blhOL/WNR+Km1RI/LCVAvA73xplXA7ZbjzI4YkMK9pa6T/P3F2GxjNpEkyw5repTw9IvkyrjyHpwjnhZ5FOvYQ==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -2299,36 +2293,36 @@ packages: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} - cspell-config-lib@9.7.0: - resolution: {integrity: sha512-pguh8A3+bSJ1OOrKCiQan8bvaaY125de76OEFz7q1Pq309lIcDrkoL/W4aYbso/NjrXaIw6OjkgPMGRBI/IgGg==} + cspell-config-lib@9.8.0: + resolution: {integrity: sha512-gMJBAgYPvvO+uDFLUcGWaTu6/e+r8mm4GD4rQfWa/yV4F9fj+yOYLIMZqLWRvT1moHZX1FxyVvUbJcmZ1gfebg==} engines: {node: '>=20'} - cspell-dictionary@9.7.0: - resolution: {integrity: sha512-k/Wz0so32+0QEqQe21V9m4BNXM5ZN6lz3Ix/jLCbMxFIPl6wT711ftjOWIEMFhvUOP0TWXsbzcuE9mKtS5mTig==} + cspell-dictionary@9.8.0: + resolution: {integrity: sha512-QW4hdkWcrxZA1QNqi26U0S/U3/V+tKCm7JaaesEJW2F6Ao+23AbHVwidyAVtXaEhGkn6PxB+epKrrAa6nE69qA==} engines: {node: '>=20'} - cspell-glob@9.7.0: - resolution: {integrity: sha512-LUeAoEsoCJ+7E3TnUmWBscpVQOmdwBejMlFn0JkXy6LQzxrybxXBKf65RSdIv1o5QtrhQIMa358xXYQG0sv/tA==} + cspell-glob@9.8.0: + resolution: {integrity: sha512-Uvj/iHXs+jpsJyIEnhEoJTWXb1GVyZ9T05L5JFtZfsQNXrh8SRDQPscjxbg4okKr63N7WevfioQum/snHNYvmw==} engines: {node: '>=20'} - cspell-grammar@9.7.0: - resolution: {integrity: sha512-oEYME+7MJztfVY1C06aGcJgEYyqBS/v/ETkQGPzf/c6ObSAPRcUbVtsXZgnR72Gru9aBckc70xJcD6bELdoWCA==} + cspell-grammar@9.8.0: + resolution: {integrity: sha512-01XMq2vhPS0Gvxnfed9uvOwH+3cXddHYxW0PwCE+SZdcC6TN8yM6glByuLt1qFustAmQVE5GSr7uAY9o4pZQRg==} engines: {node: '>=20'} hasBin: true - cspell-io@9.7.0: - resolution: {integrity: sha512-V7x0JHAUCcJPRCH8c0MQkkaKmZD2yotxVyrNEx2SZTpvnKrYscLEnUUTWnGJIIf9znzISqw116PLnYu2c+zd6Q==} + cspell-io@9.8.0: + resolution: {integrity: sha512-JINaEWQEzR4f2upwdZOFcft+nBvQgizJfrOLszxG3p+BIzljnGklqE/nUtLFZpBu0oMJvuM/Fd+GsWor0yP7Xw==} engines: {node: '>=20'} - cspell-lib@9.7.0: - resolution: {integrity: sha512-aTx/aLRpnuY1RJnYAu+A8PXfm1oIUdvAQ4W9E66bTgp1LWI+2G2++UtaPxRIgI0olxE9vcXqUnKpjOpO+5W9bQ==} + cspell-lib@9.8.0: + resolution: {integrity: sha512-G2TtPcye5QE5ev3YgWq42UOJLpTZ6naO/47oIm+jmeSYbgnbcOSThnEE7uMycx+TTNOz/vJVFpZmQyt0bWCftw==} engines: {node: '>=20'} - cspell-trie-lib@9.7.0: - resolution: {integrity: sha512-a2YqmcraL3g6I/4gY7SYWEZfP73oLluUtxO7wxompk/kOG2K1FUXyQfZXaaR7HxVv10axT1+NrjhOmXpfbI6LA==} + cspell-trie-lib@9.8.0: + resolution: {integrity: sha512-GXIyqxya8QLp6SjKsAN9w3apvt1Ww7GKcZvTBaP76OfLoyb1QC6unwmObY2cZs1manCntGwHrgU6vFNuXnTzpw==} engines: {node: '>=20'} peerDependencies: - '@cspell/cspell-types': 9.7.0 + '@cspell/cspell-types': 9.8.0 css-declaration-sorter@7.3.1: resolution: {integrity: sha512-gz6x+KkgNCjxq3Var03pRYLhyNfwhkKF1g/yoLgDNtFvVu0/fOLV9C8fFEZRjACp/XQLumjAYo7JVjzH3wLbxA==} @@ -2465,8 +2459,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.328: - resolution: {integrity: sha512-QNQ5l45DzYytThO21403XN3FvK0hOkWDG8viNf6jqS42msJ8I4tGDSpBCgvDRRPnkffafiwAym2X2eHeGD2V0w==} + electron-to-chromium@1.5.331: + resolution: {integrity: sha512-IbxXrsTlD3hRodkLnbxAPP4OuJYdWCeM3IOdT+CpcMoIwIoDfCmRpEtSPfwBXxVkg9xmBeY7Lz2Eo2TDn/HC3Q==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -2547,8 +2541,8 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-config-next@16.2.1: - resolution: {integrity: sha512-qhabwjQZ1Mk53XzXvmogf8KQ0tG0CQXF0CZ56+2/lVhmObgmaqj7x5A1DSrWdZd3kwI7GTPGUjFne+krRxYmFg==} + eslint-config-next@16.2.2: + resolution: {integrity: sha512-6VlvEhwoug2JpVgjZDhyXrJXUEuPY++TddzIpTaIRvlvlXXFgvQUtm3+Zr84IjFm0lXtJt73w19JA08tOaZVwg==} peerDependencies: eslint: '>=9.0.0' typescript: '>=3.3.1' @@ -2562,8 +2556,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + eslint-import-resolver-node@0.3.10: + resolution: {integrity: sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==} eslint-import-resolver-typescript@3.10.1: resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} @@ -2648,8 +2642,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.1.0: - resolution: {integrity: sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA==} + eslint@10.2.0: + resolution: {integrity: sha512-+L0vBFYGIpSNIt/KWTpFonPrqYvgKw1eUI5Vn7mEogrQcWtWYtNQ7dNqC+px/J0idT3BAkiWrhfS7k+Tum8TUA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -3436,8 +3430,8 @@ packages: lodash.sortby@4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - lodash@4.17.23: - resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} log-update@6.1.0: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} @@ -3473,8 +3467,8 @@ packages: engines: {node: '>= 18'} hasBin: true - marked@17.0.5: - resolution: {integrity: sha512-6hLvc0/JEbRjRgzI6wnT2P1XuM1/RrrDEX0kPt0N7jGm1133g6X7DlxFasUIx+72aKAr904GTxhSLDrd5DIlZg==} + marked@17.0.6: + resolution: {integrity: sha512-gB0gkNafnonOw0obSTEGZTT86IuhILt2Wfx0mWH/1Au83kybTayroZ/V6nS25mN7u8ASy+5fMhgB3XPNrOZdmA==} engines: {node: '>= 20'} hasBin: true @@ -3648,8 +3642,8 @@ packages: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} - minimatch@10.2.4: - resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} minimatch@3.1.5: @@ -3670,8 +3664,8 @@ packages: peerDependencies: mobx: '>=6.11' - mobx-lark@2.7.0: - resolution: {integrity: sha512-DTK4ZKuF0eKCH69kFsNGhMwxe01ZyFiQPfXFpHNF2B8U5yZlQYiyL5RkhO/QLJ8vlNQ3cqli20TCXpeXgOGBSQ==} + mobx-lark@2.8.1: + resolution: {integrity: sha512-j33PDsyoAaPgv25SXgkcXfEoDIkXK0IYIIoQpCIzdWF3sGvL/ZRTnfKergos1GsA1uuT/qXP4rbfJmc41i9Jtg==} peerDependencies: react: '>=16' @@ -3751,12 +3745,12 @@ packages: next-pwa@5.6.0: resolution: {integrity: sha512-XV8g8C6B7UmViXU8askMEYhWwQ4qc/XqJGnexbLV68hzKaGHZDMtHsm2TNxFcbR7+ypVuth/wwpiIlMwpRJJ5A==} peerDependencies: - next: ^16.2.1 + next: ^16.2.2 next-ssr-middleware@1.1.0: resolution: {integrity: sha512-eYKTZExd+4yq4Cs2lrQ+XJlgegKAgmCvigy9Ro3ScaHjUNevyXovHO/bbdTYIvr4DtYDbZPJkw4VbYAaVZ5x7w==} peerDependencies: - next: ^16.2.1 + next: ^16.2.2 react: '>=18' next-with-less@3.0.1: @@ -3764,10 +3758,10 @@ packages: peerDependencies: less: '*' less-loader: '>= 7.0.0' - next: ^16.2.1 + next: ^16.2.2 - next@16.2.1: - resolution: {integrity: sha512-VaChzNL7o9rbfdt60HUj8tev4m6d7iC1igAy157526+cJlXOQu5LzsBXNT+xaJnTP/k+utSX5vMv7m0G+zKH+Q==} + next@16.2.2: + resolution: {integrity: sha512-i6AJdyVa4oQjyvX/6GeER8dpY/xlIV+4NMv/svykcLtURJSy/WzDnnUk/TM4d0uewFHK7xSQz4TbIwPgjky+3A==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -3794,8 +3788,8 @@ packages: resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==} engines: {node: '>= 0.4'} - node-releases@2.0.36: - resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} + node-releases@2.0.37: + resolution: {integrity: sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==} nodemailer@8.0.4: resolution: {integrity: sha512-k+jf6N8PfQJ0Fe8ZhJlgqU5qJU44Lpvp2yvidH3vp1lPnVQMgi4yEEMPXg5eJS1gFIJTVq1NHBk7Ia9ARdSBdQ==} @@ -3933,8 +3927,8 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-to-regexp@8.4.0: - resolution: {integrity: sha512-PuseHIvAnz3bjrM2rGJtSgo1zjgxapTLZ7x2pjhzWwlp4SJQgK3f3iZIQwkpEnBaKz6seKBADpM4B4ySkuYypg==} + path-to-regexp@8.4.2: + resolution: {integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -4149,8 +4143,8 @@ packages: regjsgen@0.8.0: resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - regjsparser@0.13.0: - resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} + regjsparser@0.13.1: + resolution: {integrity: sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==} hasBin: true rehype-recma@1.0.0: @@ -4244,8 +4238,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.98.0: - resolution: {integrity: sha512-+4N/u9dZ4PrgzGgPlKnaaRQx64RO0JBKs9sDhQ2pLgN6JQZ25uPQZKQYaBJU48Kd5BxgXoJ4e09Dq7nMcOUW3A==} + sass@1.99.0: + resolution: {integrity: sha512-kgW13M54DUB7IsIRM5LvJkNlpH+WhMpooUcaWGFARkF1Tc82v9mIWkCbCYf+MBvpIUBSeSOTilpZjEPr2VYE6Q==} engines: {node: '>=14.0.0'} hasBin: true @@ -4571,8 +4565,9 @@ packages: turndown-plugin-gfm@1.0.2: resolution: {integrity: sha512-vwz9tfvF7XN/jE0dGoBei3FXWuvll78ohzCZQuOb+ZjWrs3a0XhQVomJEb2Qh4VHTPNRO4GPZh0V7VRbiWwkRg==} - turndown@7.2.2: - resolution: {integrity: sha512-1F7db8BiExOKxjSMU2b7if62D/XOyQyZbPKq/nUwopfgnHlqXHqQ0lvfUTeUIr1lZJzOPFn43dODyMSIfvWRKQ==} + turndown@7.2.4: + resolution: {integrity: sha512-I8yFsfRzmzK0WV1pNNOA4A7y4RDfFxPRxb3t+e3ui14qSGOxGtiSP6GjeX+Y6CHb7HYaFj7ECUD7VE5kQMZWGQ==} + engines: {node: '>=18', npm: '>=9'} type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -4613,12 +4608,12 @@ packages: typed.js@2.1.0: resolution: {integrity: sha512-bDuXEf7YcaKN4g08NMTUM6G90XU25CK3bh6U0THC/Mod/QPKlEt9g/EjvbYB8x2Qwr2p6J6I3NrsoYaVnY6wsQ==} - typescript-eslint@8.57.2: - resolution: {integrity: sha512-VEPQ0iPgWO/sBaZOU1xo4nuNdODVOajPnTIbog2GKYr31nIlZ0fWPoCQgGfF3ETyBl1vn63F/p50Um9Z4J8O8A==} + typescript-eslint@8.58.0: + resolution: {integrity: sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} @@ -4748,8 +4743,8 @@ packages: resolution: {integrity: sha512-0rYDzGOh9EZpig92umN5g5D/9A1Kff7k0/mzPSSCY8jEQeYkgRMoY7LhbXtUCWzLCMX0TUE9aoHkjFNB7D9pfA==} engines: {node: '>= 8'} - web-utility@4.6.4: - resolution: {integrity: sha512-nPZfFROLtQ6VJaoT0DKEtJ4YfBffg8altB7rl99XgscJPXZ5e7Mxj+ovqdLmjOTdAtEuCexKiyuxzg/m6qHcCg==} + web-utility@4.6.5: + resolution: {integrity: sha512-1XsfSzTHUJB4qa7oiFkfKxUiVwMzZy7c8X4wTqno1ors8w6tFL/2kj+idoeCSXVh3OmCbcXhTldqGG7MbcP7FQ==} peerDependencies: element-internals-polyfill: '>=1' typescript: '>=4.1' @@ -4935,7 +4930,7 @@ snapshots: dependencies: '@babel/compat-data': 7.29.0 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.1 + browserslist: 4.28.2 lru-cache: 5.1.1 semver: 6.3.1 @@ -5627,7 +5622,7 @@ snapshots: '@codexteam/icons@0.0.4': {} - '@cspell/cspell-bundled-dicts@9.7.0': + '@cspell/cspell-bundled-dicts@9.8.0': dependencies: '@cspell/dict-ada': 4.1.1 '@cspell/dict-al': 1.1.1 @@ -5689,17 +5684,17 @@ snapshots: '@cspell/dict-vue': 3.0.5 '@cspell/dict-zig': 1.0.0 - '@cspell/cspell-performance-monitor@9.7.0': {} + '@cspell/cspell-performance-monitor@9.8.0': {} - '@cspell/cspell-pipe@9.7.0': {} + '@cspell/cspell-pipe@9.8.0': {} - '@cspell/cspell-resolver@9.7.0': + '@cspell/cspell-resolver@9.8.0': dependencies: global-directory: 5.0.0 - '@cspell/cspell-service-bus@9.7.0': {} + '@cspell/cspell-service-bus@9.8.0': {} - '@cspell/cspell-types@9.7.0': {} + '@cspell/cspell-types@9.8.0': {} '@cspell/dict-ada@4.1.1': {} @@ -5828,26 +5823,26 @@ snapshots: '@cspell/dict-zig@1.0.0': {} - '@cspell/dynamic-import@9.7.0': + '@cspell/dynamic-import@9.8.0': dependencies: - '@cspell/url': 9.7.0 + '@cspell/url': 9.8.0 import-meta-resolve: 4.2.0 - '@cspell/eslint-plugin@9.7.0(eslint@10.1.0(jiti@2.6.1))': + '@cspell/eslint-plugin@9.8.0(eslint@10.2.0(jiti@2.6.1))': dependencies: - '@cspell/cspell-types': 9.7.0 - '@cspell/url': 9.7.0 - cspell-lib: 9.7.0 - eslint: 10.1.0(jiti@2.6.1) + '@cspell/cspell-types': 9.8.0 + '@cspell/url': 9.8.0 + cspell-lib: 9.8.0 + eslint: 10.2.0(jiti@2.6.1) synckit: 0.11.12 - '@cspell/filetypes@9.7.0': {} + '@cspell/filetypes@9.8.0': {} - '@cspell/rpc@9.7.0': {} + '@cspell/rpc@9.8.0': {} - '@cspell/strong-weak-map@9.7.0': {} + '@cspell/strong-weak-map@9.8.0': {} - '@cspell/url@9.7.0': {} + '@cspell/url@9.8.0': {} '@editorjs/caret@1.0.3': dependencies: @@ -5869,54 +5864,54 @@ snapshots: dependencies: '@codexteam/icons': 0.0.4 - '@emnapi/core@1.9.1': + '@emnapi/core@1.9.2': dependencies: - '@emnapi/wasi-threads': 1.2.0 + '@emnapi/wasi-threads': 1.2.1 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.9.1': + '@emnapi/runtime@1.9.2': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.2.0': + '@emnapi/wasi-threads@1.2.1': dependencies: tslib: 2.8.1 optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.1.0(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.1(eslint@10.2.0(jiti@2.6.1))': dependencies: - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.23.3': + '@eslint/config-array@0.23.4': dependencies: - '@eslint/object-schema': 3.0.3 + '@eslint/object-schema': 3.0.4 debug: 4.4.3 - minimatch: 10.2.4 + minimatch: 10.2.5 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.5.3': + '@eslint/config-helpers@0.5.4': dependencies: - '@eslint/core': 1.1.1 + '@eslint/core': 1.2.0 - '@eslint/core@1.1.1': + '@eslint/core@1.2.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.1.0(jiti@2.6.1))': + '@eslint/js@10.0.1(eslint@10.2.0(jiti@2.6.1))': optionalDependencies: - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) - '@eslint/object-schema@3.0.3': {} + '@eslint/object-schema@3.0.4': {} - '@eslint/plugin-kit@0.6.1': + '@eslint/plugin-kit@0.7.0': dependencies: - '@eslint/core': 1.1.1 + '@eslint/core': 1.2.0 levn: 0.4.1 '@giscus/react@3.1.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': @@ -6023,7 +6018,7 @@ snapshots: '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.9.1 + '@emnapi/runtime': 1.9.2 optional: true '@img/sharp-win32-arm64@0.34.5': @@ -6073,7 +6068,7 @@ snapshots: http-errors: 2.0.1 koa: 3.2.0 koa-compose: 4.1.0 - path-to-regexp: 8.4.0 + path-to-regexp: 8.4.2 transitivePeerDependencies: - supports-color @@ -6130,46 +6125,46 @@ snapshots: '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.9.1 - '@emnapi/runtime': 1.9.1 + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 '@tybys/wasm-util': 0.10.1 optional: true - '@next/env@16.2.1': {} + '@next/env@16.2.2': {} - '@next/eslint-plugin-next@16.2.1': + '@next/eslint-plugin-next@16.2.2': dependencies: fast-glob: 3.3.1 - '@next/mdx@16.2.1(@mdx-js/loader@3.1.1)(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))': + '@next/mdx@16.2.2(@mdx-js/loader@3.1.1)(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))': dependencies: source-map: 0.7.6 optionalDependencies: '@mdx-js/loader': 3.1.1 '@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.4) - '@next/swc-darwin-arm64@16.2.1': + '@next/swc-darwin-arm64@16.2.2': optional: true - '@next/swc-darwin-x64@16.2.1': + '@next/swc-darwin-x64@16.2.2': optional: true - '@next/swc-linux-arm64-gnu@16.2.1': + '@next/swc-linux-arm64-gnu@16.2.2': optional: true - '@next/swc-linux-arm64-musl@16.2.1': + '@next/swc-linux-arm64-musl@16.2.2': optional: true - '@next/swc-linux-x64-gnu@16.2.1': + '@next/swc-linux-x64-gnu@16.2.2': optional: true - '@next/swc-linux-x64-musl@16.2.1': + '@next/swc-linux-x64-musl@16.2.2': optional: true - '@next/swc-win32-arm64-msvc@16.2.1': + '@next/swc-win32-arm64-msvc@16.2.2': optional: true - '@next/swc-win32-x64-msvc@16.2.1': + '@next/swc-win32-x64-msvc@16.2.2': optional: true '@nodelib/fs.scandir@2.1.5': @@ -6188,8 +6183,6 @@ snapshots: '@octokit/openapi-types@26.0.0': {} - '@open-source-bazaar/china-ngo-database@0.6.0': {} - '@parcel/watcher-android-arm64@2.5.6': optional: true @@ -6257,7 +6250,7 @@ snapshots: '@react-aria/ssr@3.9.10(react@19.2.4)': dependencies: - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 react: 19.2.4 '@react-editor-js/client@2.1.0(@editorjs/editorjs@2.31.5)(@editorjs/paragraph@2.11.7)(react@19.2.4)': @@ -6345,11 +6338,11 @@ snapshots: '@softonus/prettier-plugin-duplicate-remover@1.1.2': {} - '@stylistic/eslint-plugin@5.10.0(eslint@10.1.0(jiti@2.6.1))': + '@stylistic/eslint-plugin@5.10.0(eslint@10.2.0(jiti@2.6.1))': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0(jiti@2.6.1)) - '@typescript-eslint/types': 8.57.2 - eslint: 10.1.0(jiti@2.6.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0(jiti@2.6.1)) + '@typescript-eslint/types': 8.58.0 + eslint: 10.2.0(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -6366,7 +6359,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@swc/helpers@0.5.20': + '@swc/helpers@0.5.21': dependencies: tslib: 2.8.1 @@ -6386,21 +6379,21 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 24.12.0 + '@types/node': 24.12.2 '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 24.12.0 + '@types/node': 24.12.2 '@types/co-body@6.1.3': dependencies: - '@types/node': 24.12.0 + '@types/node': 24.12.2 '@types/qs': 6.15.0 '@types/connect@3.4.38': dependencies: - '@types/node': 24.12.0 + '@types/node': 24.12.2 '@types/content-disposition@0.5.9': {} @@ -6409,7 +6402,7 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 5.0.6 '@types/keygrip': 1.0.6 - '@types/node': 24.12.0 + '@types/node': 24.12.2 '@types/debug@4.1.13': dependencies: @@ -6429,7 +6422,7 @@ snapshots: '@types/express-serve-static-core@5.1.1': dependencies: - '@types/node': 24.12.0 + '@types/node': 24.12.2 '@types/qs': 6.15.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 @@ -6445,7 +6438,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 6.0.0 - '@types/node': 24.12.0 + '@types/node': 24.12.2 '@types/hast@3.0.4': dependencies: @@ -6462,7 +6455,7 @@ snapshots: '@types/jsonwebtoken@9.0.10': dependencies: '@types/ms': 2.1.0 - '@types/node': 24.12.0 + '@types/node': 24.12.2 '@types/keygrip@1.0.6': {} @@ -6479,7 +6472,7 @@ snapshots: '@types/http-errors': 2.0.5 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.9 - '@types/node': 24.12.0 + '@types/node': 24.12.2 '@types/leaflet@1.9.21': dependencies: @@ -6495,16 +6488,16 @@ snapshots: '@types/minimatch@6.0.0': dependencies: - minimatch: 10.2.4 + minimatch: 10.2.5 '@types/ms@2.1.0': {} - '@types/next-pwa@5.6.9(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.98.0)': + '@types/next-pwa@5.6.9(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0)': dependencies: - '@types/node': 24.12.0 + '@types/node': 24.12.2 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - next: 16.2.1(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.98.0) + next: 16.2.2(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0) workbox-build: 6.6.0 transitivePeerDependencies: - '@babel/core' @@ -6518,17 +6511,17 @@ snapshots: - sass - supports-color - '@types/node@22.19.15': + '@types/node@22.19.17': dependencies: undici-types: 6.21.0 - '@types/node@24.12.0': + '@types/node@24.12.2': dependencies: undici-types: 7.16.0 - '@types/nodemailer@7.0.11': + '@types/nodemailer@8.0.0': dependencies: - '@types/node': 24.12.0 + '@types/node': 24.12.2 '@types/prop-types@15.7.15': {} @@ -6550,16 +6543,16 @@ snapshots: '@types/resolve@1.17.1': dependencies: - '@types/node': 24.12.0 + '@types/node': 24.12.2 '@types/send@1.2.1': dependencies: - '@types/node': 24.12.0 + '@types/node': 24.12.2 '@types/serve-static@2.2.0': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 24.12.0 + '@types/node': 24.12.2 '@types/trusted-types@2.0.7': {} @@ -6571,15 +6564,15 @@ snapshots: '@types/warning@3.0.4': {} - '@typescript-eslint/eslint-plugin@8.57.2(@typescript-eslint/parser@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.57.2 - '@typescript-eslint/type-utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.57.2 - eslint: 10.1.0(jiti@2.6.1) + '@typescript-eslint/parser': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/type-utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.58.0 + eslint: 10.2.0(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@5.9.3) @@ -6587,58 +6580,58 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.57.2 - '@typescript-eslint/types': 8.57.2 - '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.57.2 + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.58.0 debug: 4.4.3 - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.57.2(typescript@5.9.3)': + '@typescript-eslint/project-service@8.58.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@5.9.3) - '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@5.9.3) + '@typescript-eslint/types': 8.58.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.57.2': + '@typescript-eslint/scope-manager@8.58.0': dependencies: - '@typescript-eslint/types': 8.57.2 - '@typescript-eslint/visitor-keys': 8.57.2 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/visitor-keys': 8.58.0 - '@typescript-eslint/tsconfig-utils@8.57.2(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.58.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.57.2 - '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3 - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.57.2': {} + '@typescript-eslint/types@8.58.0': {} - '@typescript-eslint/typescript-estree@8.57.2(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.58.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.57.2(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@5.9.3) - '@typescript-eslint/types': 8.57.2 - '@typescript-eslint/visitor-keys': 8.57.2 + '@typescript-eslint/project-service': 8.58.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@5.9.3) + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/visitor-keys': 8.58.0 debug: 4.4.3 - minimatch: 10.2.4 + minimatch: 10.2.5 semver: 7.7.4 tinyglobby: 0.2.15 ts-api-utils: 2.5.0(typescript@5.9.3) @@ -6646,20 +6639,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.57.2 - '@typescript-eslint/types': 8.57.2 - '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) - eslint: 10.1.0(jiti@2.6.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.9.3) + eslint: 10.2.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.57.2': + '@typescript-eslint/visitor-keys@8.58.0': dependencies: - '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/types': 8.58.0 eslint-visitor-keys: 5.0.1 '@ungap/structured-clone@1.3.0': {} @@ -6867,7 +6860,7 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axe-core@4.11.1: {} + axe-core@4.11.2: {} axobject-query@4.1.0: {} @@ -6911,7 +6904,7 @@ snapshots: base64-arraybuffer@1.0.2: {} - baseline-browser-mapping@2.10.12: {} + baseline-browser-mapping@2.10.14: {} big.js@5.2.2: {} @@ -6934,13 +6927,13 @@ snapshots: browser-fs-access@0.37.0: {} - browserslist@4.28.1: + browserslist@4.28.2: dependencies: - baseline-browser-mapping: 2.10.12 - caniuse-lite: 1.0.30001781 - electron-to-chromium: 1.5.328 - node-releases: 2.0.36 - update-browserslist-db: 1.2.3(browserslist@4.28.1) + baseline-browser-mapping: 2.10.14 + caniuse-lite: 1.0.30001785 + electron-to-chromium: 1.5.331 + node-releases: 2.0.37 + update-browserslist-db: 1.2.3(browserslist@4.28.2) buffer-equal-constant-time@1.0.1: {} @@ -6969,7 +6962,7 @@ snapshots: callsites@3.1.0: {} - caniuse-lite@1.0.30001781: {} + caniuse-lite@1.0.30001785: {} ccount@2.0.1: {} @@ -7065,7 +7058,7 @@ snapshots: core-js-compat@3.49.0: dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 core-js@3.49.0: {} @@ -7077,55 +7070,55 @@ snapshots: crypto-random-string@2.0.0: {} - cspell-config-lib@9.7.0: + cspell-config-lib@9.8.0: dependencies: - '@cspell/cspell-types': 9.7.0 + '@cspell/cspell-types': 9.8.0 comment-json: 4.6.2 smol-toml: 1.6.1 yaml: 2.8.3 - cspell-dictionary@9.7.0: + cspell-dictionary@9.8.0: dependencies: - '@cspell/cspell-performance-monitor': 9.7.0 - '@cspell/cspell-pipe': 9.7.0 - '@cspell/cspell-types': 9.7.0 - cspell-trie-lib: 9.7.0(@cspell/cspell-types@9.7.0) + '@cspell/cspell-performance-monitor': 9.8.0 + '@cspell/cspell-pipe': 9.8.0 + '@cspell/cspell-types': 9.8.0 + cspell-trie-lib: 9.8.0(@cspell/cspell-types@9.8.0) fast-equals: 6.0.0 - cspell-glob@9.7.0: + cspell-glob@9.8.0: dependencies: - '@cspell/url': 9.7.0 + '@cspell/url': 9.8.0 picomatch: 4.0.4 - cspell-grammar@9.7.0: + cspell-grammar@9.8.0: dependencies: - '@cspell/cspell-pipe': 9.7.0 - '@cspell/cspell-types': 9.7.0 + '@cspell/cspell-pipe': 9.8.0 + '@cspell/cspell-types': 9.8.0 - cspell-io@9.7.0: + cspell-io@9.8.0: dependencies: - '@cspell/cspell-service-bus': 9.7.0 - '@cspell/url': 9.7.0 + '@cspell/cspell-service-bus': 9.8.0 + '@cspell/url': 9.8.0 - cspell-lib@9.7.0: + cspell-lib@9.8.0: dependencies: - '@cspell/cspell-bundled-dicts': 9.7.0 - '@cspell/cspell-performance-monitor': 9.7.0 - '@cspell/cspell-pipe': 9.7.0 - '@cspell/cspell-resolver': 9.7.0 - '@cspell/cspell-types': 9.7.0 - '@cspell/dynamic-import': 9.7.0 - '@cspell/filetypes': 9.7.0 - '@cspell/rpc': 9.7.0 - '@cspell/strong-weak-map': 9.7.0 - '@cspell/url': 9.7.0 + '@cspell/cspell-bundled-dicts': 9.8.0 + '@cspell/cspell-performance-monitor': 9.8.0 + '@cspell/cspell-pipe': 9.8.0 + '@cspell/cspell-resolver': 9.8.0 + '@cspell/cspell-types': 9.8.0 + '@cspell/dynamic-import': 9.8.0 + '@cspell/filetypes': 9.8.0 + '@cspell/rpc': 9.8.0 + '@cspell/strong-weak-map': 9.8.0 + '@cspell/url': 9.8.0 clear-module: 4.1.2 - cspell-config-lib: 9.7.0 - cspell-dictionary: 9.7.0 - cspell-glob: 9.7.0 - cspell-grammar: 9.7.0 - cspell-io: 9.7.0 - cspell-trie-lib: 9.7.0(@cspell/cspell-types@9.7.0) + cspell-config-lib: 9.8.0 + cspell-dictionary: 9.8.0 + cspell-glob: 9.8.0 + cspell-grammar: 9.8.0 + cspell-io: 9.8.0 + cspell-trie-lib: 9.8.0(@cspell/cspell-types@9.8.0) env-paths: 4.0.0 gensequence: 8.0.8 import-fresh: 3.3.1 @@ -7134,9 +7127,9 @@ snapshots: vscode-uri: 3.1.0 xdg-basedir: 5.1.0 - cspell-trie-lib@9.7.0(@cspell/cspell-types@9.7.0): + cspell-trie-lib@9.8.0(@cspell/cspell-types@9.8.0): dependencies: - '@cspell/cspell-types': 9.7.0 + '@cspell/cspell-types': 9.8.0 css-declaration-sorter@7.3.1(postcss@8.4.31): dependencies: @@ -7251,9 +7244,9 @@ snapshots: echarts-jsx@0.6.0(react@19.2.4)(typescript@5.9.3): dependencies: echarts: 6.0.0 - lodash: 4.17.23 + lodash: 4.18.1 react: 19.2.4 - web-utility: 4.6.4(typescript@5.9.3) + web-utility: 4.6.5(typescript@5.9.3) transitivePeerDependencies: - element-internals-polyfill - typescript @@ -7267,14 +7260,14 @@ snapshots: edkit@1.2.7(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 '@types/turndown': 5.0.6 browser-fs-access: 0.37.0 marked: 15.0.12 regenerator-runtime: 0.14.1 - turndown: 7.2.2 + turndown: 7.2.4 turndown-plugin-gfm: 1.0.2 - web-utility: 4.6.4(typescript@5.9.3) + web-utility: 4.6.5(typescript@5.9.3) transitivePeerDependencies: - element-internals-polyfill - typescript @@ -7285,7 +7278,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.328: {} + electron-to-chromium@1.5.331: {} emoji-regex@10.6.0: {} @@ -7430,18 +7423,18 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-next@16.2.1(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3): + eslint-config-next@16.2.2(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@next/eslint-plugin-next': 16.2.1 - eslint: 10.1.0(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@10.1.0(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@10.1.0(jiti@2.6.1)) - eslint-plugin-jsx-a11y: 6.10.2(eslint@10.1.0(jiti@2.6.1)) - eslint-plugin-react: 7.37.5(eslint@10.1.0(jiti@2.6.1)) - eslint-plugin-react-hooks: 7.0.1(eslint@10.1.0(jiti@2.6.1)) + '@next/eslint-plugin-next': 16.2.2 + eslint: 10.2.0(jiti@2.6.1) + eslint-import-resolver-node: 0.3.10 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.2.0(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@10.2.0(jiti@2.6.1)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@10.2.0(jiti@2.6.1)) + eslint-plugin-react: 7.37.5(eslint@10.2.0(jiti@2.6.1)) + eslint-plugin-react-hooks: 7.0.1(eslint@10.2.0(jiti@2.6.1)) globals: 16.4.0 - typescript-eslint: 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + typescript-eslint: 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -7450,44 +7443,44 @@ snapshots: - eslint-plugin-import-x - supports-color - eslint-config-prettier@10.1.8(eslint@10.1.0(jiti@2.6.1)): + eslint-config-prettier@10.1.8(eslint@10.2.0(jiti@2.6.1)): dependencies: - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) - eslint-import-resolver-node@0.3.9: + eslint-import-resolver-node@0.3.10: dependencies: debug: 3.2.7 is-core-module: 2.16.1 - resolve: 1.22.11 + resolve: 2.0.0-next.6 transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@10.1.0(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@10.2.0(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) get-tsconfig: 4.13.7 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@10.1.0(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@10.2.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@10.1.0(jiti@2.6.1)): + eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.2.0(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - eslint: 10.1.0(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@10.1.0(jiti@2.6.1)) + eslint: 10.2.0(jiti@2.6.1) + eslint-import-resolver-node: 0.3.10 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.2.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@10.1.0(jiti@2.6.1)): + eslint-plugin-import@2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@10.2.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -7496,9 +7489,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 10.1.0(jiti@2.6.1) - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@10.1.0(jiti@2.6.1)) + eslint: 10.2.0(jiti@2.6.1) + eslint-import-resolver-node: 0.3.10 + eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.2.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -7514,17 +7507,17 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@10.1.0(jiti@2.6.1)): + eslint-plugin-jsx-a11y@6.10.2(eslint@10.2.0(jiti@2.6.1)): dependencies: aria-query: 5.3.2 array-includes: 3.1.9 array.prototype.flatmap: 1.3.3 ast-types-flow: 0.0.8 - axe-core: 4.11.1 + axe-core: 4.11.2 axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -7533,18 +7526,18 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-react-hooks@7.0.1(eslint@10.1.0(jiti@2.6.1)): + eslint-plugin-react-hooks@7.0.1(eslint@10.2.0(jiti@2.6.1)): dependencies: '@babel/core': 7.29.0 '@babel/parser': 7.29.2 - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) hermes-parser: 0.25.1 zod: 4.3.6 zod-validation-error: 4.0.2(zod@4.3.6) transitivePeerDependencies: - supports-color - eslint-plugin-react@7.37.5(eslint@10.1.0(jiti@2.6.1)): + eslint-plugin-react@7.37.5(eslint@10.2.0(jiti@2.6.1)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -7552,7 +7545,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.3.1 - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -7566,9 +7559,9 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-simple-import-sort@12.1.1(eslint@10.1.0(jiti@2.6.1)): + eslint-plugin-simple-import-sort@12.1.1(eslint@10.2.0(jiti@2.6.1)): dependencies: - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) eslint-scope@9.1.2: dependencies: @@ -7583,14 +7576,14 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.1.0(jiti@2.6.1): + eslint@10.2.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.3 - '@eslint/config-helpers': 0.5.3 - '@eslint/core': 1.1.1 - '@eslint/plugin-kit': 0.6.1 + '@eslint/config-array': 0.23.4 + '@eslint/config-helpers': 0.5.4 + '@eslint/core': 1.2.0 + '@eslint/plugin-kit': 0.7.0 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -7612,7 +7605,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.2.4 + minimatch: 10.2.5 natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: @@ -8016,12 +8009,12 @@ snapshots: '@editorjs/editorjs': 2.31.5 '@editorjs/paragraph': 2.11.7 '@react-editor-js/core': 2.1.0(@editorjs/editorjs@2.31.5)(react@19.2.4) - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 classnames: 2.5.1 editorjs-html: 4.0.5 html2canvas: 1.4.1 iterable-observer: 1.1.0 - lodash: 4.17.23 + lodash: 4.18.1 mobx: 6.15.0 mobx-react: 9.2.1(mobx@6.15.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) mobx-react-helper: 0.5.1(mobx@6.15.0)(react@19.2.4)(typescript@5.9.3) @@ -8031,7 +8024,7 @@ snapshots: react-dom: 19.2.4(react@19.2.4) react-editor-js: 2.1.0(@editorjs/editorjs@2.31.5)(@editorjs/paragraph@2.11.7)(react@19.2.4) react-element-to-jsx-string: 17.0.1(react-dom@19.2.4(react@19.2.4))(react-is@16.13.1)(react@19.2.4) - web-utility: 4.6.4(typescript@5.9.3) + web-utility: 4.6.5(typescript@5.9.3) transitivePeerDependencies: - '@types/react' - element-internals-polyfill @@ -8249,7 +8242,7 @@ snapshots: iterable-observer@1.1.0: dependencies: - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 iterator.prototype@1.1.5: dependencies: @@ -8268,13 +8261,13 @@ snapshots: jest-worker@26.6.2: dependencies: - '@types/node': 24.12.0 + '@types/node': 24.12.2 merge-stream: 2.0.0 supports-color: 7.2.0 jest-worker@27.5.1: dependencies: - '@types/node': 24.12.0 + '@types/node': 24.12.2 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -8380,11 +8373,11 @@ snapshots: koajax@3.3.0(core-js@3.49.0)(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 core-js: 3.49.0 regenerator-runtime: 0.14.1 web-streams-polyfill: 4.2.0 - web-utility: 4.6.4(typescript@5.9.3) + web-utility: 4.6.5(typescript@5.9.3) transitivePeerDependencies: - element-internals-polyfill - typescript @@ -8423,7 +8416,7 @@ snapshots: license-filter@0.2.5: dependencies: - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 lint-staged@16.4.0: dependencies: @@ -8497,7 +8490,7 @@ snapshots: lodash.sortby@4.7.0: {} - lodash@4.17.23: {} + lodash@4.18.1: {} log-update@6.1.0: dependencies: @@ -8535,7 +8528,7 @@ snapshots: marked@15.0.12: {} - marked@17.0.5: {} + marked@17.0.6: {} math-intrinsics@1.1.0: {} @@ -8894,7 +8887,7 @@ snapshots: mimic-function@5.0.1: {} - minimatch@10.2.4: + minimatch@10.2.5: dependencies: brace-expansion: 5.0.5 @@ -8911,13 +8904,13 @@ snapshots: mobx-github@0.6.2(core-js@3.49.0)(typescript@5.9.3): dependencies: '@octokit/openapi-types': 26.0.0 - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 '@types/lodash': 4.17.24 koajax: 3.3.0(core-js@3.49.0)(typescript@5.9.3) - lodash: 4.17.23 + lodash: 4.18.1 mobx: 6.15.0 mobx-restful: 2.1.4(core-js@3.49.0)(mobx@6.15.0)(typescript@5.9.3) - web-utility: 4.6.4(typescript@5.9.3) + web-utility: 4.6.5(typescript@5.9.3) transitivePeerDependencies: - core-js - element-internals-polyfill @@ -8926,18 +8919,18 @@ snapshots: mobx-i18n@0.7.2(mobx@6.15.0)(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.20 - '@types/node': 22.19.15 + '@swc/helpers': 0.5.21 + '@types/node': 22.19.17 mobx: 6.15.0 regenerator-runtime: 0.14.1 - web-utility: 4.6.4(typescript@5.9.3) + web-utility: 4.6.5(typescript@5.9.3) transitivePeerDependencies: - element-internals-polyfill - typescript - mobx-lark@2.7.0(core-js@3.49.0)(react@19.2.4)(typescript@5.9.3): + mobx-lark@2.8.1(core-js@3.49.0)(react@19.2.4)(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 '@types/react': 19.2.14 koajax: 3.3.0(core-js@3.49.0)(typescript@5.9.3) lodash.memoize: 4.1.2 @@ -8945,7 +8938,7 @@ snapshots: mobx-restful: 2.1.4(core-js@3.49.0)(mobx@6.15.0)(typescript@5.9.3) react: 19.2.4 regenerator-runtime: 0.14.1 - web-utility: 4.6.4(typescript@5.9.3) + web-utility: 4.6.5(typescript@5.9.3) transitivePeerDependencies: - core-js - element-internals-polyfill @@ -8954,11 +8947,11 @@ snapshots: mobx-react-helper@0.5.1(mobx@6.15.0)(react@19.2.4)(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 lodash.isequalwith: 4.4.0 mobx: 6.15.0 react: 19.2.4 - web-utility: 4.6.4(typescript@5.9.3) + web-utility: 4.6.5(typescript@5.9.3) transitivePeerDependencies: - element-internals-polyfill - typescript @@ -8981,9 +8974,9 @@ snapshots: mobx-restful-table@2.6.3(@types/react@19.2.14)(core-js@3.49.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 classnames: 2.5.1 - lodash: 4.17.23 + lodash: 4.18.1 mobx: 6.15.0 mobx-i18n: 0.7.2(mobx@6.15.0)(typescript@5.9.3) mobx-react: 9.2.1(mobx@6.15.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -8993,7 +8986,7 @@ snapshots: react-bootstrap: 2.10.10(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react-bootstrap-editor: 2.1.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) regenerator-runtime: 0.14.1 - web-utility: 4.6.4(typescript@5.9.3) + web-utility: 4.6.5(typescript@5.9.3) transitivePeerDependencies: - '@types/react' - core-js @@ -9005,12 +8998,12 @@ snapshots: mobx-restful@2.1.4(core-js@3.49.0)(mobx@6.15.0)(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 idb-keyval: 6.2.2 koajax: 3.3.0(core-js@3.49.0)(typescript@5.9.3) mobx: 6.15.0 regenerator-runtime: 0.14.1 - web-utility: 4.6.4(typescript@5.9.3) + web-utility: 4.6.5(typescript@5.9.3) transitivePeerDependencies: - core-js - element-internals-polyfill @@ -9019,14 +9012,14 @@ snapshots: mobx-strapi@0.8.1(core-js@3.49.0)(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 idb-keyval: 6.2.2 koajax: 3.3.0(core-js@3.49.0)(typescript@5.9.3) mobx: 6.15.0 mobx-restful: 2.1.4(core-js@3.49.0)(mobx@6.15.0)(typescript@5.9.3) qs: 6.15.0 regenerator-runtime: 0.14.1 - web-utility: 4.6.4(typescript@5.9.3) + web-utility: 4.6.5(typescript@5.9.3) transitivePeerDependencies: - core-js - element-internals-polyfill @@ -9051,12 +9044,12 @@ snapshots: negotiator@0.6.3: {} - next-pwa@5.6.0(@babel/core@7.29.0)(next@16.2.1(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.98.0)): + next-pwa@5.6.0(@babel/core@7.29.0)(next@16.2.2(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0)): dependencies: babel-loader: 8.4.1(@babel/core@7.29.0) clean-webpack-plugin: 4.0.0 globby: 11.1.0 - next: 16.2.1(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.98.0) + next: 16.2.2(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0) terser-webpack-plugin: 5.4.0 workbox-webpack-plugin: 6.6.0 workbox-window: 6.6.0 @@ -9069,7 +9062,7 @@ snapshots: - uglify-js - webpack - next-ssr-middleware@1.1.0(next@16.2.1(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.98.0))(react@19.2.4)(typescript@5.9.3): + next-ssr-middleware@1.1.0(next@16.2.2(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0))(react@19.2.4)(typescript@5.9.3): dependencies: '@koa/bodyparser': 6.1.0(koa@3.2.0) '@koa/router': 15.4.0(koa@3.2.0) @@ -9078,42 +9071,42 @@ snapshots: '@types/react': 19.2.14 jsonwebtoken: 9.0.3 koa: 3.2.0 - next: 16.2.1(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.98.0) + next: 16.2.2(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0) react: 19.2.4 tslib: 2.8.1 - web-utility: 4.6.4(typescript@5.9.3) + web-utility: 4.6.5(typescript@5.9.3) transitivePeerDependencies: - element-internals-polyfill - supports-color - typescript - next-with-less@3.0.1(less-loader@12.3.2(less@4.6.4))(less@4.6.4)(next@16.2.1(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.98.0)): + next-with-less@3.0.1(less-loader@12.3.2(less@4.6.4))(less@4.6.4)(next@16.2.2(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0)): dependencies: clone-deep: 4.0.1 less: 4.6.4 less-loader: 12.3.2(less@4.6.4) - next: 16.2.1(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.98.0) + next: 16.2.2(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0) - next@16.2.1(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.98.0): + next@16.2.2(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0): dependencies: - '@next/env': 16.2.1 + '@next/env': 16.2.2 '@swc/helpers': 0.5.15 - baseline-browser-mapping: 2.10.12 - caniuse-lite: 1.0.30001781 + baseline-browser-mapping: 2.10.14 + caniuse-lite: 1.0.30001785 postcss: 8.4.31 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.4) optionalDependencies: - '@next/swc-darwin-arm64': 16.2.1 - '@next/swc-darwin-x64': 16.2.1 - '@next/swc-linux-arm64-gnu': 16.2.1 - '@next/swc-linux-arm64-musl': 16.2.1 - '@next/swc-linux-x64-gnu': 16.2.1 - '@next/swc-linux-x64-musl': 16.2.1 - '@next/swc-win32-arm64-msvc': 16.2.1 - '@next/swc-win32-x64-msvc': 16.2.1 - sass: 1.98.0 + '@next/swc-darwin-arm64': 16.2.2 + '@next/swc-darwin-x64': 16.2.2 + '@next/swc-linux-arm64-gnu': 16.2.2 + '@next/swc-linux-arm64-musl': 16.2.2 + '@next/swc-linux-x64-gnu': 16.2.2 + '@next/swc-linux-x64-musl': 16.2.2 + '@next/swc-win32-arm64-msvc': 16.2.2 + '@next/swc-win32-x64-msvc': 16.2.2 + sass: 1.99.0 sharp: 0.34.5 transitivePeerDependencies: - '@babel/core' @@ -9129,7 +9122,7 @@ snapshots: object.entries: 1.1.9 semver: 6.3.1 - node-releases@2.0.36: {} + node-releases@2.0.37: {} nodemailer@8.0.4: {} @@ -9189,7 +9182,7 @@ snapshots: open-react-map@0.9.1(core-js@3.49.0)(mobx-react@9.2.1(mobx@6.15.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(mobx@6.15.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 '@types/leaflet': 1.9.21 koajax: 3.3.0(core-js@3.49.0)(typescript@5.9.3) leaflet: 1.9.4 @@ -9199,7 +9192,7 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) react-leaflet: 5.0.0(leaflet@1.9.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - web-utility: 4.6.4(typescript@5.9.3) + web-utility: 4.6.5(typescript@5.9.3) transitivePeerDependencies: - core-js - element-internals-polyfill @@ -9286,7 +9279,7 @@ snapshots: path-parse@1.0.7: {} - path-to-regexp@8.4.0: {} + path-to-regexp@8.4.2: {} path-type@4.0.0: {} @@ -9381,14 +9374,14 @@ snapshots: react-bootstrap-editor@2.1.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 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.4(react@19.2.4))(react@19.2.4) mobx-react-helper: 0.5.1(mobx@6.15.0)(react@19.2.4)(typescript@5.9.3) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - web-utility: 4.6.4(typescript@5.9.3) + web-utility: 4.6.5(typescript@5.9.3) transitivePeerDependencies: - element-internals-polyfill - react-native @@ -9530,13 +9523,13 @@ snapshots: regenerate: 1.4.2 regenerate-unicode-properties: 10.2.2 regjsgen: 0.8.0 - regjsparser: 0.13.0 + regjsparser: 0.13.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.2.1 regjsgen@0.8.0: {} - regjsparser@0.13.0: + regjsparser@0.13.1: dependencies: jsesc: 3.1.0 @@ -9665,7 +9658,7 @@ snapshots: safer-buffer@2.1.2: {} - sass@1.98.0: + sass@1.99.0: dependencies: chokidar: 4.0.3 immutable: 5.1.5 @@ -10034,7 +10027,7 @@ snapshots: turndown-plugin-gfm@1.0.2: {} - turndown@7.2.2: + turndown@7.2.4: dependencies: '@mixmark-io/domino': 2.2.0 @@ -10092,13 +10085,13 @@ snapshots: typed.js@2.1.0: {} - typescript-eslint@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.57.2(@typescript-eslint/parser@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 10.1.0(jiti@2.6.1) + '@typescript-eslint/eslint-plugin': 8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 10.2.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -10222,9 +10215,9 @@ snapshots: upath@1.2.0: {} - update-browserslist-db@1.2.3(browserslist@4.28.1): + update-browserslist-db@1.2.3(browserslist@4.28.2): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 escalade: 3.2.0 picocolors: 1.1.1 @@ -10262,9 +10255,9 @@ snapshots: web-streams-polyfill@4.2.0: {} - web-utility@4.6.4(typescript@5.9.3): + web-utility@4.6.5(typescript@5.9.3): dependencies: - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 regenerator-runtime: 0.14.1 typescript: 5.9.3 @@ -10352,7 +10345,7 @@ snapshots: fast-json-stable-stringify: 2.1.0 fs-extra: 9.1.0 glob: 7.2.3 - lodash: 4.17.23 + lodash: 4.18.1 pretty-bytes: 5.6.0 rollup: 2.80.0 rollup-plugin-terser: 7.0.2(rollup@2.80.0)