diff --git a/.github/scripts/count-reward.ts b/.github/scripts/count-reward.ts index 154d3f3..cf2d419 100644 --- a/.github/scripts/count-reward.ts +++ b/.github/scripts/count-reward.ts @@ -19,7 +19,11 @@ let rawYAML = ''; for (const tag of rewardTags) rawYAML += (await $`git tag -l --format="%(contents)" ${tag}`) + '\n'; -if (!rawYAML.trim()) throw new ReferenceError('No reward data is found for the last month.'); +if (!rawYAML.trim()) { + console.warn('No reward data is found for the last month.'); + + process.exit(0); +} const rewards = YAML.parse(rawYAML) as Reward[]; @@ -54,4 +58,7 @@ await $`git config user.email "github-actions[bot]@users.noreply.github.com"`; await $`git tag -a ${tagName} $(git rev-parse HEAD) -m ${summaryText}`; await $`git push origin --tags --no-verify`; +await $`git config unset user.name`; +await $`git config unset user.email`; + await $`gh release create ${tagName} --notes ${summaryText}`; diff --git a/.github/scripts/share-reward.ts b/.github/scripts/share-reward.ts index 2e6b7d1..a2d919d 100644 --- a/.github/scripts/share-reward.ts +++ b/.github/scripts/share-reward.ts @@ -1,3 +1,5 @@ +import 'npm:array-unique-proposal'; + import { components } from 'npm:@octokit/openapi-types'; import { $, argv, YAML } from 'npm:zx'; @@ -68,7 +70,8 @@ function isBotUser(login: string) { } // Filter out Bot users from the list -const allUsers = [author.login, ...assignees.map(({ login }) => login)]; +const allUsers = [author.login, ...assignees.map(({ login }) => login)].uniqueBy(); + const users = allUsers.filter(login => !isBotUser(login)); console.log(`All users: ${allUsers.join(', ')}`); @@ -101,9 +104,13 @@ console.log(listText); await $`git config user.name "github-actions[bot]"`; await $`git config user.email "github-actions[bot]@users.noreply.github.com"`; + await $`git tag -a "reward-${issueNumber}" ${mergeCommitSha} -m ${listText}`; await $`git push origin --tags --no-verify`; +await $`git config unset user.name`; +await $`git config unset user.email`; + const commentBody = `## Reward data \`\`\`yml diff --git a/ReadMe.md b/ReadMe.md index f2b04cd..6db8448 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -86,6 +86,8 @@ export class ClientModel extends BiDataTable() { queryOptions: BiDataQueryOptions = { text_field_as_array: false }; + keyMap = { name: '名称', type: '类型' } as const; + constructor(appId = LarkBaseId, tableId = CLIENT_TABLE) { super(appId, tableId); } diff --git a/package.json b/package.json index 5f97ae8..39c39dd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mobx-lark", - "version": "2.8.0", + "version": "2.8.1", "license": "LGPL-3.0", "author": "shiy2008@gmail.com", "description": "Unofficial TypeScript SDK for FeiShu/Lark API, which is based on MobX-RESTful.", @@ -25,7 +25,7 @@ "url": "https://github.com/idea2app/MobX-Lark/issues" }, "dependencies": { - "@swc/helpers": "^0.5.20", + "@swc/helpers": "^0.5.21", "@types/react": "^19.2.14", "koajax": "^3.3.0", "lodash.memoize": "^4.1.2", @@ -42,10 +42,10 @@ "@parcel/transformer-typescript-tsc": "~2.16.4", "@types/fs-extra": "^11.0.4", "@types/lodash.memoize": "^4.1.9", - "@types/node": "^24.12.0", + "@types/node": "^24.12.2", "@types/react-dom": "^19.2.3", "@types/turndown": "^5.0.6", - "dotenv": "^17.3.1", + "dotenv": "^17.4.0", "fs-extra": "^11.3.4", "husky": "^9.1.7", "lint-staged": "^16.4.0", @@ -54,7 +54,7 @@ "react": "^19.2.4", "react-dom": "^19.2.4", "ts-node": "^10.9.2", - "turndown": "^7.2.2", + "turndown": "^7.2.3", "typedoc": "^0.28.18", "typedoc-plugin-mdn-links": "^5.1.1", "typescript": "~5.8.3" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9601562..b0537bf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@swc/helpers': - specifier: ^0.5.20 - version: 0.5.20 + specifier: ^0.5.21 + version: 0.5.21 '@types/react': specifier: ^19.2.14 version: 19.2.14 @@ -35,10 +35,10 @@ importers: devDependencies: '@parcel/config-default': specifier: ~2.16.4 - version: 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))(@swc/helpers@0.5.20) + version: 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))(@swc/helpers@0.5.21) '@parcel/transformer-typescript-tsc': specifier: ~2.16.4 - version: 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))(typescript@5.8.3) + version: 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))(typescript@5.8.3) '@types/fs-extra': specifier: ^11.0.4 version: 11.0.4 @@ -46,8 +46,8 @@ importers: specifier: ^4.1.9 version: 4.1.9 '@types/node': - specifier: ^24.12.0 - version: 24.12.0 + specifier: ^24.12.2 + version: 24.12.2 '@types/react-dom': specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) @@ -55,8 +55,8 @@ importers: specifier: ^5.0.6 version: 5.0.6 dotenv: - specifier: ^17.3.1 - version: 17.3.1 + specifier: ^17.4.0 + version: 17.4.0 fs-extra: specifier: ^11.3.4 version: 11.3.4 @@ -68,7 +68,7 @@ importers: version: 16.4.0 parcel: specifier: ~2.16.4 - version: 2.16.4(@swc/helpers@0.5.20) + version: 2.16.4(@swc/helpers@0.5.21) prettier: specifier: ^3.8.1 version: 3.8.1 @@ -80,10 +80,10 @@ importers: version: 19.2.4(react@19.2.4) ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.15.21(@swc/helpers@0.5.20))(@types/node@24.12.0)(typescript@5.8.3) + version: 10.9.2(@swc/core@1.15.21(@swc/helpers@0.5.21))(@types/node@24.12.2)(typescript@5.8.3) turndown: - specifier: ^7.2.2 - version: 7.2.2 + specifier: ^7.2.3 + version: 7.2.3 typedoc: specifier: ^0.28.18 version: 0.28.18(typescript@5.8.3) @@ -685,8 +685,8 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@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==} '@swc/types@0.1.26': resolution: {integrity: sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw==} @@ -718,8 +718,8 @@ packages: '@types/lodash@4.17.24': resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==} - '@types/node@24.12.0': - resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==} + '@types/node@24.12.2': + resolution: {integrity: sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==} '@types/react-dom@19.2.3': resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} @@ -855,12 +855,12 @@ packages: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} - dotenv@17.3.1: - resolution: {integrity: sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==} + dotenv@17.4.0: + resolution: {integrity: sha512-kCKF62fwtzwYm0IGBNjRUjtJgMfGapII+FslMHIjMR5KTnwEmBmWLDRSnc3XSNP8bNy34tekgQyDT0hr7pERRQ==} engines: {node: '>=12'} - electron-to-chromium@1.5.330: - resolution: {integrity: sha512-jFNydB5kFtYUobh4IkWUnXeyDbjf/r9gcUEXe1xcrcUxIGfTdzPXA+ld6zBRbwvgIGVzDll/LTIiDztEtckSnA==} + electron-to-chromium@1.5.331: + resolution: {integrity: sha512-IbxXrsTlD3hRodkLnbxAPP4OuJYdWCeM3IOdT+CpcMoIwIoDfCmRpEtSPfwBXxVkg9xmBeY7Lz2Eo2TDn/HC3Q==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -1084,8 +1084,8 @@ packages: resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} hasBin: true - 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==} nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} @@ -1212,8 +1212,9 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - turndown@7.2.2: - resolution: {integrity: sha512-1F7db8BiExOKxjSMU2b7if62D/XOyQyZbPKq/nUwopfgnHlqXHqQ0lvfUTeUIr1lZJzOPFn43dODyMSIfvWRKQ==} + turndown@7.2.3: + resolution: {integrity: sha512-7pk5AH3rIT3rXShFfsIAb5m9q+OhWbMfRovA6UI8Mi2Oy4qjQMZCGVIPuelkirVSmnRyAOxMh/Wxj6qjYe2wRw==} + engines: {node: '>=18', npm: '>=9'} type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} @@ -1358,11 +1359,11 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true - '@parcel/bundler-default@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/bundler-default@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: '@parcel/diagnostic': 2.16.4 '@parcel/graph': 3.6.4 - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/rust': 2.16.4 '@parcel/utils': 2.16.4 nullthrows: 1.1.1 @@ -1370,10 +1371,10 @@ snapshots: - '@parcel/core' - napi-wasm - '@parcel/cache@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/cache@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/core': 2.16.4(@swc/helpers@0.5.20) - '@parcel/fs': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/core': 2.16.4(@swc/helpers@0.5.21) + '@parcel/fs': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/logger': 2.16.4 '@parcel/utils': 2.16.4 lmdb: 2.8.5 @@ -1384,70 +1385,70 @@ snapshots: dependencies: chalk: 4.1.2 - '@parcel/compressor-raw@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/compressor-raw@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/config-default@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))(@swc/helpers@0.5.20)': - dependencies: - '@parcel/bundler-default': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/compressor-raw': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/core': 2.16.4(@swc/helpers@0.5.20) - '@parcel/namer-default': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/optimizer-css': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/optimizer-html': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/optimizer-image': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/optimizer-svg': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/optimizer-swc': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))(@swc/helpers@0.5.20) - '@parcel/packager-css': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/packager-html': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/packager-js': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/packager-raw': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/packager-svg': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/packager-wasm': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/reporter-dev-server': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/resolver-default': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/runtime-browser-hmr': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/runtime-js': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/runtime-rsc': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/runtime-service-worker': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/transformer-babel': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/transformer-css': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/transformer-html': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/transformer-image': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/transformer-js': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/transformer-json': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/transformer-node': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/transformer-postcss': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/transformer-posthtml': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/transformer-raw': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/transformer-react-refresh-wrap': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/transformer-svg': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/config-default@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)': + dependencies: + '@parcel/bundler-default': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/compressor-raw': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/core': 2.16.4(@swc/helpers@0.5.21) + '@parcel/namer-default': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/optimizer-css': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/optimizer-html': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/optimizer-image': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/optimizer-svg': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/optimizer-swc': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))(@swc/helpers@0.5.21) + '@parcel/packager-css': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/packager-html': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/packager-js': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/packager-raw': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/packager-svg': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/packager-wasm': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/reporter-dev-server': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/resolver-default': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/runtime-browser-hmr': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/runtime-js': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/runtime-rsc': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/runtime-service-worker': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/transformer-babel': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/transformer-css': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/transformer-html': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/transformer-image': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/transformer-js': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/transformer-json': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/transformer-node': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/transformer-postcss': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/transformer-posthtml': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/transformer-raw': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/transformer-react-refresh-wrap': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/transformer-svg': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) transitivePeerDependencies: - '@swc/helpers' - napi-wasm - '@parcel/core@2.16.4(@swc/helpers@0.5.20)': + '@parcel/core@2.16.4(@swc/helpers@0.5.21)': dependencies: '@mischnic/json-sourcemap': 0.1.1 - '@parcel/cache': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/cache': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/diagnostic': 2.16.4 '@parcel/events': 2.16.4 '@parcel/feature-flags': 2.16.4 - '@parcel/fs': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/fs': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/graph': 3.6.4 '@parcel/logger': 2.16.4 - '@parcel/package-manager': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))(@swc/helpers@0.5.20) - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/package-manager': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))(@swc/helpers@0.5.21) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/profiler': 2.16.4 '@parcel/rust': 2.16.4 '@parcel/source-map': 2.1.1 - '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/utils': 2.16.4 - '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) base-x: 3.0.11 browserslist: 4.28.2 clone: 2.1.2 @@ -1472,15 +1473,15 @@ snapshots: '@parcel/feature-flags@2.16.4': {} - '@parcel/fs@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/fs@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/core': 2.16.4(@swc/helpers@0.5.20) + '@parcel/core': 2.16.4(@swc/helpers@0.5.21) '@parcel/feature-flags': 2.16.4 '@parcel/rust': 2.16.4 '@parcel/types-internal': 2.16.4 '@parcel/utils': 2.16.4 '@parcel/watcher': 2.5.6 - '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) transitivePeerDependencies: - napi-wasm @@ -1498,20 +1499,20 @@ snapshots: dependencies: chalk: 4.1.2 - '@parcel/namer-default@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/namer-default@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: '@parcel/diagnostic': 2.16.4 - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/node-resolver-core@3.7.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/node-resolver-core@3.7.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: '@mischnic/json-sourcemap': 0.1.1 '@parcel/diagnostic': 2.16.4 - '@parcel/fs': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/fs': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/rust': 2.16.4 '@parcel/utils': 2.16.4 nullthrows: 1.1.1 @@ -1520,10 +1521,10 @@ snapshots: - '@parcel/core' - napi-wasm - '@parcel/optimizer-css@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/optimizer-css@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: '@parcel/diagnostic': 2.16.4 - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.16.4 browserslist: 4.28.2 @@ -1533,68 +1534,68 @@ snapshots: - '@parcel/core' - napi-wasm - '@parcel/optimizer-html@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/optimizer-html@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/rust': 2.16.4 '@parcel/utils': 2.16.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/optimizer-image@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/optimizer-image@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/core': 2.16.4(@swc/helpers@0.5.20) + '@parcel/core': 2.16.4(@swc/helpers@0.5.21) '@parcel/diagnostic': 2.16.4 - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/rust': 2.16.4 '@parcel/utils': 2.16.4 - '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) transitivePeerDependencies: - napi-wasm - '@parcel/optimizer-svg@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/optimizer-svg@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/rust': 2.16.4 '@parcel/utils': 2.16.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/optimizer-swc@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))(@swc/helpers@0.5.20)': + '@parcel/optimizer-swc@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)': dependencies: '@parcel/diagnostic': 2.16.4 - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.16.4 - '@swc/core': 1.15.21(@swc/helpers@0.5.20) + '@swc/core': 1.15.21(@swc/helpers@0.5.21) nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - '@swc/helpers' - napi-wasm - '@parcel/package-manager@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))(@swc/helpers@0.5.20)': + '@parcel/package-manager@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)': dependencies: - '@parcel/core': 2.16.4(@swc/helpers@0.5.20) + '@parcel/core': 2.16.4(@swc/helpers@0.5.21) '@parcel/diagnostic': 2.16.4 - '@parcel/fs': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/fs': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/logger': 2.16.4 - '@parcel/node-resolver-core': 3.7.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/node-resolver-core': 3.7.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/utils': 2.16.4 - '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@swc/core': 1.15.21(@swc/helpers@0.5.20) + '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@swc/core': 1.15.21(@swc/helpers@0.5.21) semver: 7.7.4 transitivePeerDependencies: - '@swc/helpers' - napi-wasm - '@parcel/packager-css@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/packager-css@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: '@parcel/diagnostic': 2.16.4 - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.16.4 lightningcss: 1.32.0 @@ -1603,23 +1604,23 @@ snapshots: - '@parcel/core' - napi-wasm - '@parcel/packager-html@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/packager-html@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/rust': 2.16.4 - '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/utils': 2.16.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/packager-js@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/packager-js@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: '@parcel/diagnostic': 2.16.4 - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/rust': 2.16.4 '@parcel/source-map': 2.1.1 - '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/utils': 2.16.4 globals: 13.24.0 nullthrows: 1.1.1 @@ -1627,33 +1628,33 @@ snapshots: - '@parcel/core' - napi-wasm - '@parcel/packager-raw@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/packager-raw@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/packager-svg@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/packager-svg@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/rust': 2.16.4 - '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/utils': 2.16.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/packager-wasm@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/packager-wasm@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/plugin@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/plugin@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) transitivePeerDependencies: - '@parcel/core' - napi-wasm @@ -1665,10 +1666,10 @@ snapshots: '@parcel/types-internal': 2.16.4 chrome-trace-event: 1.0.4 - '@parcel/reporter-cli@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/reporter-cli@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/utils': 2.16.4 chalk: 4.1.2 term-size: 2.2.1 @@ -1676,19 +1677,19 @@ snapshots: - '@parcel/core' - napi-wasm - '@parcel/reporter-dev-server@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/reporter-dev-server@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: '@parcel/codeframe': 2.16.4 - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.16.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/reporter-tracer@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/reporter-tracer@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/utils': 2.16.4 chrome-trace-event: 1.0.4 nullthrows: 1.1.1 @@ -1696,35 +1697,35 @@ snapshots: - '@parcel/core' - napi-wasm - '@parcel/resolver-default@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/resolver-default@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/node-resolver-core': 3.7.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/node-resolver-core': 3.7.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/runtime-browser-hmr@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/runtime-browser-hmr@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/utils': 2.16.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/runtime-js@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/runtime-js@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: '@parcel/diagnostic': 2.16.4 - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/utils': 2.16.4 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/runtime-rsc@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/runtime-rsc@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/rust': 2.16.4 '@parcel/utils': 2.16.4 nullthrows: 1.1.1 @@ -1732,9 +1733,9 @@ snapshots: - '@parcel/core' - napi-wasm - '@parcel/runtime-service-worker@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/runtime-service-worker@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/utils': 2.16.4 nullthrows: 1.1.1 transitivePeerDependencies: @@ -1780,10 +1781,10 @@ snapshots: dependencies: detect-libc: 1.0.3 - '@parcel/transformer-babel@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/transformer-babel@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: '@parcel/diagnostic': 2.16.4 - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.16.4 browserslist: 4.28.2 @@ -1794,10 +1795,10 @@ snapshots: - '@parcel/core' - napi-wasm - '@parcel/transformer-css@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/transformer-css@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: '@parcel/diagnostic': 2.16.4 - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.16.4 browserslist: 4.28.2 @@ -1807,35 +1808,35 @@ snapshots: - '@parcel/core' - napi-wasm - '@parcel/transformer-html@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/transformer-html@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: '@parcel/diagnostic': 2.16.4 - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/rust': 2.16.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-image@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/transformer-image@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/core': 2.16.4(@swc/helpers@0.5.20) - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/core': 2.16.4(@swc/helpers@0.5.21) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/utils': 2.16.4 - '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) nullthrows: 1.1.1 transitivePeerDependencies: - napi-wasm - '@parcel/transformer-js@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/transformer-js@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/core': 2.16.4(@swc/helpers@0.5.20) + '@parcel/core': 2.16.4(@swc/helpers@0.5.21) '@parcel/diagnostic': 2.16.4 - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/rust': 2.16.4 '@parcel/source-map': 2.1.1 '@parcel/utils': 2.16.4 - '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@swc/helpers': 0.5.20 + '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@swc/helpers': 0.5.21 browserslist: 4.28.2 nullthrows: 1.1.1 regenerator-runtime: 0.14.1 @@ -1843,25 +1844,25 @@ snapshots: transitivePeerDependencies: - napi-wasm - '@parcel/transformer-json@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/transformer-json@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) json5: 2.2.3 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-node@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/transformer-node@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-postcss@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/transformer-postcss@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: '@parcel/diagnostic': 2.16.4 - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/rust': 2.16.4 '@parcel/utils': 2.16.4 clone: 2.1.2 @@ -1872,43 +1873,43 @@ snapshots: - '@parcel/core' - napi-wasm - '@parcel/transformer-posthtml@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/transformer-posthtml@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/utils': 2.16.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-raw@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/transformer-raw@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-react-refresh-wrap@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/transformer-react-refresh-wrap@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: '@parcel/error-overlay': 2.16.4 - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/utils': 2.16.4 react-refresh: 0.16.0 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-svg@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/transformer-svg@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: '@parcel/diagnostic': 2.16.4 - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/rust': 2.16.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-typescript-tsc@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))(typescript@5.8.3)': + '@parcel/transformer-typescript-tsc@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))(typescript@5.8.3)': dependencies: - '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/source-map': 2.1.1 '@parcel/ts-utils': 2.16.4(typescript@5.8.3) typescript: 5.8.3 @@ -1928,10 +1929,10 @@ snapshots: '@parcel/source-map': 2.1.1 utility-types: 3.11.0 - '@parcel/types@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/types@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: '@parcel/types-internal': 2.16.4 - '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) transitivePeerDependencies: - '@parcel/core' - napi-wasm @@ -2009,9 +2010,9 @@ snapshots: '@parcel/watcher-win32-ia32': 2.5.6 '@parcel/watcher-win32-x64': 2.5.6 - '@parcel/workers@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))': + '@parcel/workers@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))': dependencies: - '@parcel/core': 2.16.4(@swc/helpers@0.5.20) + '@parcel/core': 2.16.4(@swc/helpers@0.5.21) '@parcel/diagnostic': 2.16.4 '@parcel/logger': 2.16.4 '@parcel/profiler': 2.16.4 @@ -2077,7 +2078,7 @@ snapshots: '@swc/core-win32-x64-msvc@1.15.21': optional: true - '@swc/core@1.15.21(@swc/helpers@0.5.20)': + '@swc/core@1.15.21(@swc/helpers@0.5.21)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.26 @@ -2094,11 +2095,11 @@ snapshots: '@swc/core-win32-arm64-msvc': 1.15.21 '@swc/core-win32-ia32-msvc': 1.15.21 '@swc/core-win32-x64-msvc': 1.15.21 - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 '@swc/counter@0.1.3': {} - '@swc/helpers@0.5.20': + '@swc/helpers@0.5.21': dependencies: tslib: 2.8.1 @@ -2117,7 +2118,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 24.12.0 + '@types/node': 24.12.2 '@types/hast@3.0.4': dependencies: @@ -2125,7 +2126,7 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 24.12.0 + '@types/node': 24.12.2 '@types/lodash.memoize@4.1.9': dependencies: @@ -2133,7 +2134,7 @@ snapshots: '@types/lodash@4.17.24': {} - '@types/node@24.12.0': + '@types/node@24.12.2': dependencies: undici-types: 7.16.0 @@ -2187,8 +2188,8 @@ snapshots: dependencies: baseline-browser-mapping: 2.10.13 caniuse-lite: 1.0.30001784 - electron-to-chromium: 1.5.330 - node-releases: 2.0.36 + electron-to-chromium: 1.5.331 + node-releases: 2.0.37 update-browserslist-db: 1.2.3(browserslist@4.28.2) caniuse-lite@1.0.30001784: {} @@ -2239,9 +2240,9 @@ snapshots: dotenv@16.6.1: {} - dotenv@17.3.1: {} + dotenv@17.4.0: {} - electron-to-chromium@1.5.330: {} + electron-to-chromium@1.5.331: {} emoji-regex@10.6.0: {} @@ -2295,7 +2296,7 @@ snapshots: koajax@3.3.0(typescript@5.8.3): dependencies: - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 regenerator-runtime: 0.14.1 web-streams-polyfill: 4.2.0 web-utility: 4.6.4(typescript@5.8.3) @@ -2422,7 +2423,7 @@ snapshots: mobx-restful@2.1.4(mobx@6.15.0)(typescript@5.8.3): dependencies: - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 idb-keyval: 6.2.2 koajax: 3.3.0(typescript@5.8.3) mobx: 6.15.0 @@ -2465,7 +2466,7 @@ snapshots: detect-libc: 2.1.2 optional: true - node-releases@2.0.36: {} + node-releases@2.0.37: {} nullthrows@1.1.1: {} @@ -2475,19 +2476,19 @@ snapshots: ordered-binary@1.6.1: {} - parcel@2.16.4(@swc/helpers@0.5.20): + parcel@2.16.4(@swc/helpers@0.5.21): dependencies: - '@parcel/config-default': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))(@swc/helpers@0.5.20) - '@parcel/core': 2.16.4(@swc/helpers@0.5.20) + '@parcel/config-default': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))(@swc/helpers@0.5.21) + '@parcel/core': 2.16.4(@swc/helpers@0.5.21) '@parcel/diagnostic': 2.16.4 '@parcel/events': 2.16.4 '@parcel/feature-flags': 2.16.4 - '@parcel/fs': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/fs': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/logger': 2.16.4 - '@parcel/package-manager': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20))(@swc/helpers@0.5.20) - '@parcel/reporter-cli': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/reporter-dev-server': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) - '@parcel/reporter-tracer': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.20)) + '@parcel/package-manager': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21))(@swc/helpers@0.5.21) + '@parcel/reporter-cli': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/reporter-dev-server': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) + '@parcel/reporter-tracer': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/utils': 2.16.4 chalk: 4.1.2 commander: 12.1.0 @@ -2567,14 +2568,14 @@ snapshots: tinyexec@1.0.4: {} - ts-node@10.9.2(@swc/core@1.15.21(@swc/helpers@0.5.20))(@types/node@24.12.0)(typescript@5.8.3): + ts-node@10.9.2(@swc/core@1.15.21(@swc/helpers@0.5.21))(@types/node@24.12.2)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 24.12.0 + '@types/node': 24.12.2 acorn: 8.16.0 acorn-walk: 8.3.5 arg: 4.1.3 @@ -2585,11 +2586,11 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.15.21(@swc/helpers@0.5.20) + '@swc/core': 1.15.21(@swc/helpers@0.5.21) tslib@2.8.1: {} - turndown@7.2.2: + turndown@7.2.3: dependencies: '@mixmark-io/domino': 2.2.0 @@ -2632,7 +2633,7 @@ snapshots: web-utility@4.6.4(typescript@5.8.3): dependencies: - '@swc/helpers': 0.5.20 + '@swc/helpers': 0.5.21 regenerator-runtime: 0.14.1 typescript: 5.8.3 diff --git a/src/module/BITable/index.ts b/src/module/BITable/index.ts index 0b00ec9..f2ad72c 100644 --- a/src/module/BITable/index.ts +++ b/src/module/BITable/index.ts @@ -13,7 +13,7 @@ import { TableRecordFields, TableView } from './type'; -import { makeSimpleFilter } from './utility'; +import { makeSimpleFilter, mapKeys } from './utility'; export * from './type'; export * from './utility'; @@ -31,13 +31,13 @@ export interface BiDataQueryOptions { /** * @see {@link https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/bitable-overview} */ -export function BiDataTable = Filter>( +export function BiDataTable = Filter>( Base = ListModel ) { - abstract class BiDataTableModel extends Stream(Base) { - requiredKeys: readonly (keyof T)[] = []; + abstract class BiDataTableModel extends Stream(Base) { + requiredKeys: readonly (keyof D)[] = []; - sort: Partial> = {}; + sort: Partial> = {}; queryOptions: BiDataQueryOptions = { text_field_as_array: true, @@ -50,7 +50,15 @@ export function BiDataTable = Filter): T { + keyMap?: Partial>; + + get nameMap() { + return this.keyMap + ? Object.fromEntries(Object.entries(this.keyMap).map(([key, name]) => [name, key])) + : {}; + } + + extractFields({ fields, ...meta }: TableRecord): D { return { ...meta, ...fields }; } @@ -59,8 +67,19 @@ export function BiDataTable = Filter) { + const { nameMap } = this; + + const mappedData = isEmpty(nameMap) ? (fields as D) : (mapKeys(fields, nameMap) as D); + + return this.normalize({ fields: mappedData, ...meta }); + } + wrapFields(fields: F) { - return fields as unknown as T; + return fields as unknown as D; } /** @@ -68,10 +87,10 @@ export function BiDataTable = Filter>( + const { body } = await this.client.get>( `${this.baseURI}/${id}?${buildURLData(this.queryOptions)}` ); - return (this.currentOne = this.normalize(body!.data!.record)); + return (this.currentOne = this.mapFields(body!.data!.record)); } /** @@ -80,29 +99,31 @@ export function BiDataTable = Filter>(`${this.baseURI}/${id}`, { - fields - }) - : this.client.post>(this.baseURI, { - fields - })); - return (this.currentOne = this.normalize(body!.data!.record)); + ? this.client.put>(`${this.baseURI}/${id}`, { fields }) + : this.client.post>(this.baseURI, { fields })); + + return (this.currentOne = this.mapFields(body!.data!.record)); + } + + mapFilter(filter: DataObject) { + return isEmpty(this.keyMap) ? (filter as F) : (mapKeys(filter, this.keyMap) as F); } makeFilter(filter: F) { - return [ + const requiredFilter = this.requiredKeys[0] && - makeSimpleFilter( - Object.fromEntries(this.requiredKeys.map(key => [key, ''])), - '!=' - ), - !isEmpty(filter) && makeSimpleFilter(filter) - ] - .filter(Boolean) - .join('&&'); + makeSimpleFilter( + this.mapFilter(Object.fromEntries(this.requiredKeys.map(key => [key, '']))), + '!=' + ); + const customFilter = !isEmpty(filter) && makeSimpleFilter(this.mapFilter(filter)); + + return [requiredFilter, customFilter].filter(Boolean).join('&&'); } /** @@ -118,13 +139,13 @@ export function BiDataTable = Filter `${key} ${order}`) ) }; - const stream = createPageStream>( + const stream = createPageStream>( this.client, this.baseURI, total => (this.totalCount = total), { ...searchParams, ...this.queryOptions } ); - for await (const item of stream) yield this.normalize(item); + for await (const item of stream) yield this.mapFields(item); } async getViewList( @@ -157,12 +178,11 @@ export type BiSearchFilter = Filter & { }; export function BiSearch = BiSearchFilter>( - Model: Constructor> + Model: ReturnType> ) { abstract class BiSearchModel extends Model { declare baseURI: string; declare client: RESTClient; - declare loadPage: (pageIndex: number, pageSize: number, filter: F) => Promise>; abstract searchKeys: readonly (keyof TableRecordFields)[]; @@ -170,7 +190,9 @@ export function BiSearch = BiS accessor keywords = ''; makeFilter(filter: F) { - return isEmpty(filter) ? '' : makeSimpleFilter(filter, 'contains', 'OR'); + return isEmpty(filter) + ? '' + : makeSimpleFilter(this.mapFilter(filter), 'contains', 'OR'); } async getList( diff --git a/src/module/BITable/utility.ts b/src/module/BITable/utility.ts index d3b2c3e..010020d 100644 --- a/src/module/BITable/utility.ts +++ b/src/module/BITable/utility.ts @@ -1,10 +1,13 @@ import { DataObject } from 'mobx-restful'; -import { - TableCellLink, - TableCellLocation, - TableCellRelation, - TableCellText -} from './type'; +import { TableCellLink, TableCellLocation, TableCellRelation, TableCellText } from './type'; + +export const mapKeys = ( + data: I, + map: Partial> +) => + Object.fromEntries( + Object.entries(data).map(([key, value]) => [map[key as keyof I] || key, value]) + ) as O; export type FilterOperator = '<' | '<=' | '=' | '!=' | '=>' | '>' | 'contains'; @@ -34,9 +37,7 @@ export function makeSimpleFilter( return list[1] ? `${relation}(${list})` : list[0]; } -export const normalizeText = ( - value: TableCellText | TableCellLink | TableCellRelation -) => +export const normalizeText = (value: TableCellText | TableCellLink | TableCellRelation) => (value && typeof value === 'object' && 'text' in value && value.text) || ''; export const normalizeTextArray = (list: TableCellText[]) => @@ -50,8 +51,7 @@ export const normalizeTextArray = (list: TableCellText[]) => [''] ); export function coordinateOf(location: TableCellLocation): [number, number] { - const [longitude, latitude] = - (location as TableCellLocation)?.location.split(',') || []; + const [longitude, latitude] = (location as TableCellLocation)?.location.split(',') || []; return [+latitude, +longitude]; } diff --git a/test/index.spec.ts b/test/index.spec.ts index 34dd612..fe2dedc 100644 --- a/test/index.spec.ts +++ b/test/index.spec.ts @@ -212,6 +212,8 @@ describe('MobX Lark SDK', async () => { client = app.client; queryOptions: BiDataQueryOptions = { text_field_as_array: false }; + + keyMap = { name: '名称', type: '类型' }; } await it('should get a page of records in a BITable table', async expect => { @@ -228,6 +230,8 @@ describe('MobX Lark SDK', async () => { ) { client = app.client; + keyMap = { name: '名称', type: '类型' }; + searchKeys = ['name']; } const table = new SearchDataTableModel(BITABLE_ID!, BITABLE_TABLE_ID!);