diff --git a/.github/pr-badge.yml b/.github/pr-badge.yml new file mode 100644 index 0000000..7400516 --- /dev/null +++ b/.github/pr-badge.yml @@ -0,0 +1,17 @@ +- icon: visualstudio + label: 'GitHub.dev' + message: 'PR-$prNumber' + color: 'blue' + url: 'https://github.dev/$owner/$repo/pull/$prNumber' + +- icon: github + label: 'GitHub codespaces' + message: 'PR-$prNumber' + color: 'black' + url: 'https://codespaces.new/$owner/$repo/pull/$prNumber' + +- icon: git + label: 'GitPod.io' + message: 'PR-$prNumber' + color: 'orange' + url: 'https://gitpod.io/?autostart=true#https://github.com/$owner/$repo/pull/$prNumber' diff --git a/.github/settings.yml b/.github/settings.yml new file mode 100644 index 0000000..e1ac020 --- /dev/null +++ b/.github/settings.yml @@ -0,0 +1,85 @@ +# These settings are synced to GitHub by https://probot.github.io/apps/settings/ + +repository: + allow_merge_commit: false + + delete_branch_on_merge: true + + enable_vulnerability_alerts: true + +labels: + - name: bug + color: '#d73a4a' + description: Something isn't working + + - name: documentation + color: '#0075ca' + description: Improvements or additions to documentation + + - name: duplicate + color: '#cfd3d7' + description: This issue or pull request already exists + + - name: enhancement + color: '#a2eeef' + description: Some improvements + + - name: feature + color: '#16b33f' + description: New feature or request + + - name: good first issue + color: '#7057ff' + description: Good for newcomers + + - name: help wanted + color: '#008672' + description: Extra attention is needed + + - name: invalid + color: '#e4e669' + description: This doesn't seem right + + - name: question + color: '#d876e3' + description: Further information is requested + + - name: wontfix + color: '#ffffff' + description: This will not be worked on + +branches: + - name: main + # https://docs.github.com/en/rest/reference/repos#update-branch-protection + protection: + # Required. Require at least one approving review on a pull request, before merging. Set to null to disable. + required_pull_request_reviews: + # The number of approvals required. (1-6) + required_approving_review_count: 1 + # Dismiss approved reviews automatically when a new commit is pushed. + dismiss_stale_reviews: true + # Blocks merge until code owners have reviewed. + require_code_owner_reviews: true + # Specify which users and teams can dismiss pull request reviews. + # Pass an empty dismissal_restrictions object to disable. + # User and team dismissal_restrictions are only available for organization-owned repositories. + # Omit this parameter for personal repositories. + dismissal_restrictions: + # users: [] + # teams: [] + # Required. Require status checks to pass before merging. Set to null to disable + required_status_checks: + # Required. Require branches to be up to date before merging. + strict: true + # Required. The list of status checks to require in order to merge into this branch + contexts: [] + # Required. Enforce all configured restrictions for administrators. + # Set to true to enforce required status checks for repository administrators. + # Set to null to disable. + enforce_admins: true + # Prevent merge commits from being pushed to matching branches + required_linear_history: true + # Required. Restrict who can push to this branch. + # Team and user restrictions are only available for organization-owned repositories. + # Set to null to disable. + restrictions: null diff --git a/.github/workflows/Lark-notification.yml b/.github/workflows/Lark-notification.yml new file mode 100644 index 0000000..7056447 --- /dev/null +++ b/.github/workflows/Lark-notification.yml @@ -0,0 +1,378 @@ +name: Lark notification + +# https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows +on: + issues: + pull_request: + discussion: + issue_comment: + discussion_comment: + +jobs: + send-Lark-message: + runs-on: ubuntu-latest + steps: + - name: Issue content cleaning + id: issue_content + env: + ISSUE_TITLE: ${{ github.event.issue.title }} + ISSUE_BODY: ${{ github.event.issue.body }} + run: | + echo "$ISSUE_TITLE" | sed 's/"/\\"/g' > issue_title.txt + { + echo 'issue_title<> $GITHUB_OUTPUT + echo "$ISSUE_BODY" | sed 's/"/\\"/g' > issue_body.txt + { + echo 'issue_body<> $GITHUB_OUTPUT + + - name: Issue opened + uses: foxundermoon/feishu-action@v2 + if: github.event_name == 'issues' && (github.event.action == 'opened' || github.event.action == 'reopened') + with: + url: ${{ secrets.LARK_CHATBOT_HOOK_URL }} + msg_type: post + content: | + post: + en_us: + title: "GitHub issue opened: ${{ steps.issue_content.outputs.issue_title }}" + content: + - - tag: text + text: "Link: " + - tag: a + text: ${{ github.event.issue.html_url }} + href: ${{ github.event.issue.html_url }} + - - tag: text + text: "Author: " + - tag: a + text: ${{ github.event.issue.user.login }} + href: ${{ github.event.issue.user.html_url }} + - - tag: text + text: "Assignee: " + - tag: a + text: "${{ github.event.issue.assignee.login }}" + href: "${{ github.event.issue.assignee.html_url }}" + - - tag: text + text: "Labels: ${{ github.event.issue.labels }}" + - - tag: text + text: "Milestone: ${{ github.event.issue.milestone.title }}" + - - tag: text + text: "Description: " + - tag: text + text: "${{ steps.issue_content.outputs.issue_body }}" + + - name: Issue edited + uses: foxundermoon/feishu-action@v2 + if: github.event_name == 'issues' && (github.event.action == 'edited' || github.event.action == 'transferred' || github.event.action == 'labeled' || github.event.action == 'unlabeled' || github.event.action == 'assigned' || github.event.action == 'unassigned') + with: + url: ${{ secrets.LARK_CHATBOT_HOOK_URL }} + msg_type: post + content: | + post: + en_us: + title: "GitHub issue edited: ${{ steps.issue_content.outputs.issue_title }}" + content: + - - tag: text + text: "Link: " + - tag: a + text: ${{ github.event.issue.html_url }} + href: ${{ github.event.issue.html_url }} + - - tag: text + text: "Author: " + - tag: a + text: ${{ github.event.issue.user.login }} + href: ${{ github.event.issue.user.html_url }} + - - tag: text + text: "Assignee: " + - tag: a + text: "${{ github.event.issue.assignee.login }}" + href: "${{ github.event.issue.assignee.html_url }}" + - - tag: text + text: "Labels: ${{ github.event.issue.labels }}" + - - tag: text + text: "Milestone: ${{ github.event.issue.milestone.title }}" + - - tag: text + text: "Description: " + - tag: text + text: "${{ steps.issue_content.outputs.issue_body }}" + + - name: Issue closed + uses: foxundermoon/feishu-action@v2 + if: github.event_name == 'issues' && github.event.action == 'closed' + with: + url: ${{ secrets.LARK_CHATBOT_HOOK_URL }} + msg_type: post + content: | + post: + en_us: + title: "GitHub issue closed: ${{ steps.issue_content.outputs.issue_title }}" + content: + - - tag: text + text: "Link: " + - tag: a + text: ${{ github.event.issue.html_url }} + href: ${{ github.event.issue.html_url }} + - - tag: text + text: "Author: " + - tag: a + text: ${{ github.event.issue.user.login }} + href: ${{ github.event.issue.user.html_url }} + - - tag: text + text: "Assignee: " + - tag: a + text: "${{ github.event.issue.assignee.login }}" + href: "${{ github.event.issue.assignee.html_url }}" + - - tag: text + text: "Labels: ${{ github.event.issue.labels }}" + - - tag: text + text: "Milestone: ${{ github.event.issue.milestone.title }}" + - - tag: text + text: "Description: " + - tag: text + text: "${{ steps.issue_content.outputs.issue_body }}" + + - name: PR content cleaning + id: PR_content + env: + PR_TITLE: ${{ github.event.pull_request.title }} + PR_BODY: ${{ github.event.pull_request.body }} + run: | + echo "$PR_TITLE" | sed 's/"/\\"/g' > PR_title.txt + { + echo 'PR_title<> $GITHUB_OUTPUT + echo "$PR_BODY" | sed 's/"/\\"/g' > PR_body.txt + { + echo 'PR_body<> $GITHUB_OUTPUT + + - name: PR opened + uses: foxundermoon/feishu-action@v2 + if: github.event_name == 'pull_request' && (github.event.action == 'opened' || github.event.action == 'reopened') + with: + url: ${{ secrets.LARK_CHATBOT_HOOK_URL }} + msg_type: post + content: | + post: + en_us: + title: "GitHub PR opened: ${{ steps.PR_content.outputs.PR_title }}" + content: + - - tag: text + text: "Link: " + - tag: a + text: ${{ github.event.pull_request.html_url }} + href: ${{ github.event.pull_request.html_url }} + - - tag: text + text: "Author: " + - tag: a + text: ${{ github.event.pull_request.user.login }} + href: ${{ github.event.pull_request.user.html_url }} + - - tag: text + text: "Assignee: " + - tag: a + text: "${{ github.event.pull_request.assignee.login }}" + href: "${{ github.event.pull_request.assignee.html_url }}" + - - tag: text + text: "Labels: ${{ github.event.pull_request.labels }}" + - - tag: text + text: "Milestone: ${{ github.event.pull_request.milestone.title }}" + - - tag: text + text: "Description: " + - tag: text + text: "${{ steps.PR_content.outputs.PR_body }}" + + - name: PR edited + uses: foxundermoon/feishu-action@v2 + if: github.event_name == 'pull_request' && (github.event.action == 'edited' || github.event.action == 'labeled' || github.event.action == 'unlabeled' || github.event.action == 'assigned' || github.event.action == 'unassigned') + with: + url: ${{ secrets.LARK_CHATBOT_HOOK_URL }} + msg_type: post + content: | + post: + en_us: + title: "GitHub PR edited: ${{ steps.PR_content.outputs.PR_title }}" + content: + - - tag: text + text: "Link: " + - tag: a + text: ${{ github.event.pull_request.html_url }} + href: ${{ github.event.pull_request.html_url }} + - - tag: text + text: "Author: " + - tag: a + text: ${{ github.event.pull_request.user.login }} + href: ${{ github.event.pull_request.user.html_url }} + - - tag: text + text: "Assignee: " + - tag: a + text: "${{ github.event.pull_request.assignee.login }}" + href: "${{ github.event.pull_request.assignee.html_url }}" + - - tag: text + text: "Labels: ${{ github.event.pull_request.labels }}" + - - tag: text + text: "Milestone: ${{ github.event.pull_request.milestone.title }}" + - - tag: text + text: "Description: " + - tag: text + text: "${{ steps.PR_content.outputs.PR_body }}" + + - name: PR closed + uses: foxundermoon/feishu-action@v2 + if: github.event_name == 'pull_request' && github.event.action == 'closed' + with: + url: ${{ secrets.LARK_CHATBOT_HOOK_URL }} + msg_type: post + content: | + post: + en_us: + title: "GitHub PR closed: ${{ steps.PR_content.outputs.PR_title }}" + content: + - - tag: text + text: "Link: " + - tag: a + text: ${{ github.event.pull_request.html_url }} + href: ${{ github.event.pull_request.html_url }} + - - tag: text + text: "Author: " + - tag: a + text: ${{ github.event.pull_request.user.login }} + href: ${{ github.event.pull_request.user.html_url }} + - - tag: text + text: "Assignee: " + - tag: a + text: "${{ github.event.pull_request.assignee.login }}" + href: "${{ github.event.pull_request.assignee.html_url }}" + - - tag: text + text: "Labels: ${{ github.event.pull_request.labels }}" + - - tag: text + text: "Milestone: ${{ github.event.pull_request.milestone.title }}" + - - tag: text + text: "Description: " + - tag: text + text: "${{ steps.PR_content.outputs.PR_body }}" + + - name: Discussion content cleaning + id: discussion_content + env: + DISCUSSION_TITLE: ${{ github.event.discussion.title }} + DISCUSSION_BODY: ${{ github.event.discussion.body }} + run: | + echo "$DISCUSSION_TITLE" | sed 's/"/\\"/g' > discussion_title.txt + { + echo 'discussion_title<> $GITHUB_OUTPUT + echo "$DISCUSSION_BODY" | sed 's/"/\\"/g' > discussion_body.txt + { + echo 'discussion_body<> $GITHUB_OUTPUT + + - name: Discussion created + uses: foxundermoon/feishu-action@v2 + if: github.event_name == 'discussion' && github.event.action == 'created' + with: + url: ${{ secrets.LARK_CHATBOT_HOOK_URL }} + msg_type: post + content: | + post: + en_us: + title: "GitHub discussion created: ${{ steps.discussion_content.outputs.discussion_title }}" + content: + - - tag: text + text: "Link: " + - tag: a + text: ${{ github.event.discussion.html_url }} + href: ${{ github.event.discussion.html_url }} + - - tag: text + text: "Author: " + - tag: a + text: ${{ github.event.discussion.user.login }} + href: ${{ github.event.discussion.user.html_url }} + - - tag: text + text: "Category: ${{ github.event.discussion.category }}" + - - tag: text + text: "Labels: ${{ github.event.discussion.labels }}" + - - tag: text + text: "Description: " + - tag: text + text: "${{ steps.discussion_content.outputs.discussion_body }}" + + - name: Discussion edited + uses: foxundermoon/feishu-action@v2 + if: github.event_name == 'discussion' && (github.event.action == 'edited' || github.event.action == 'transferred' || github.event.action == 'category_changed' || github.event.action == 'labeled' || github.event.action == 'unlabeled') + with: + url: ${{ secrets.LARK_CHATBOT_HOOK_URL }} + msg_type: post + content: | + post: + en_us: + title: "GitHub discussion edited: ${{ steps.discussion_content.outputs.discussion_title }}" + content: + - - tag: text + text: "Link: " + - tag: a + text: ${{ github.event.discussion.html_url }} + href: ${{ github.event.discussion.html_url }} + - - tag: text + text: "Author: " + - tag: a + text: ${{ github.event.discussion.user.login }} + href: ${{ github.event.discussion.user.html_url }} + - - tag: text + text: "Category: ${{ github.event.discussion.category }}" + - - tag: text + text: "Labels: ${{ github.event.discussion.labels }}" + - - tag: text + text: "Description: " + - tag: text + text: "${{ steps.discussion_content.outputs.discussion_body }}" + + - name: Comment body cleaning + id: comment_body + env: + COMMENT_BODY: ${{ github.event.comment.body }} + run: | + echo "$COMMENT_BODY" | sed 's/"/\\"/g' > comment_body.txt + { + echo 'comment_body<> $GITHUB_OUTPUT + + - name: Issue/Discussion commented + uses: foxundermoon/feishu-action@v2 + if: (github.event_name == 'issue_comment' || github.event_name == 'discussion_comment') && (github.event.action == 'created' || github.event.action == 'edited') + with: + url: ${{ secrets.LARK_CHATBOT_HOOK_URL }} + msg_type: post + content: | + post: + en_us: + title: "GitHub comment: ${{ steps.issue_content.outputs.issue_title }}" + content: + - - tag: text + text: "Link: " + - tag: a + text: ${{ github.event.comment.html_url }} + href: ${{ github.event.comment.html_url }} + - - tag: text + text: "Author: " + - tag: a + text: ${{ github.event.comment.user.login }} + href: ${{ github.event.comment.user.html_url }} + - - tag: text + text: "Description: " + - tag: text + text: "${{ steps.comment_body.outputs.comment_body }}" diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 0000000..cfff5b9 --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,29 @@ +# This configuration file was automatically generated by Gitpod. +# Please adjust to your needs (see https://www.gitpod.io/docs/introduction/learn-gitpod/gitpod-yaml) +# and commit this file to your remote git repository to share the goodness with others. + +# Learn more from ready-to-use templates: https://www.gitpod.io/docs/introduction/getting-started/quickstart + +vscode: + extensions: + - yzhang.markdown-all-in-one + - unifiedjs.vscode-mdx + - xyc.vscode-mdx-preview + - jock.svg + - redhat.vscode-yaml + - clinyong.vscode-css-modules + - akamud.vscode-caniuse + - visualstudioexptteam.intellicode-api-usage-examples + - pflannery.vscode-versionlens + - christian-kohler.npm-intellisense + - esbenp.prettier-vscode + - rangav.vscode-thunder-client + - eamodio.gitlens + - github.vscode-pull-request-github + - github.vscode-github-actions +tasks: + - before: | + pnpm i vercel -g + vercel login --github --oob + init: pnpm i + command: pnpm dev diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..f770600 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,20 @@ +{ + "recommendations": [ + "yzhang.markdown-all-in-one", + "unifiedjs.vscode-mdx", + "xyc.vscode-mdx-preview", + "jock.svg", + "redhat.vscode-yaml", + "clinyong.vscode-css-modules", + "akamud.vscode-caniuse", + "visualstudioexptteam.intellicode-api-usage-examples", + "pflannery.vscode-versionlens", + "christian-kohler.npm-intellisense", + "esbenp.prettier-vscode", + "rangav.vscode-thunder-client", + "eamodio.gitlens", + "github.vscode-pull-request-github", + "github.vscode-github-actions", + "GitHub.copilot" + ] +} diff --git a/README.md b/README.md index 1cec27f..d78ecd2 100644 --- a/README.md +++ b/README.md @@ -6,12 +6,12 @@ ## 上游项目 -- [idea2app/Next-Bootstrap-ts][1] +- [idea2app/Lark-Next-Bootstrap-ts][1] ## 技术栈 - Language: [TypeScript v5][2] -- Component engine: [Nextjs v14][3] +- Component engine: [Nextjs v15][3] - Component suite: [Bootstrap v5][4] - CI / CD: GitHub [Actions][10] + [Vercel][11] @@ -27,7 +27,7 @@ yarn dev 可访问 http://localhost:3000. -[1]: https://github.com/idea2app/Next-Bootstrap-ts +[1]: https://github.com/idea2app/Lark-Next-Bootstrap-ts [2]: https://www.typescriptlang.org/ [3]: https://nextjs.org/ [4]: https://getbootstrap.com/ diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..605a645 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,26 @@ +module.exports = { + presets: [ + // https://babeljs.io/docs/babel-preset-react + [ + '@babel/preset-react', + { + runtime: 'automatic', + development: process.env.BABEL_ENV === 'development', + }, + ], + ], + plugins: [ + // https://github.com/babel/babel/issues/16262#issuecomment-1962832499 + [ + '@babel/plugin-transform-typescript', + { + allowDeclareFields: true, + allowNamespaces: true, + allExtensions: true, + isTSX: true, + }, + ], + // https://babeljs.io/docs/babel-plugin-proposal-decorators#note-compatibility-with-babelplugin-transform-class-properties + ['@babel/plugin-proposal-decorators', { version: '2023-05' }], + ], +}; diff --git a/package.json b/package.json index 54e36c0..9a8a597 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,9 @@ "react-typed-component": "^1.0.6" }, "devDependencies": { + "@babel/plugin-proposal-decorators": "^7.25.9", + "@babel/plugin-transform-typescript": "^7.26.7", + "@babel/preset-react": "^7.26.3", "@eslint/compat": "^1.2.6", "@eslint/eslintrc": "^3.2.0", "@eslint/js": "^9.19.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 71d10aa..5e3e503 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,6 +42,15 @@ importers: specifier: ^1.0.6 version: 1.0.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: + '@babel/plugin-proposal-decorators': + specifier: ^7.25.9 + version: 7.25.9(@babel/core@7.26.7) + '@babel/plugin-transform-typescript': + specifier: ^7.26.7 + version: 7.26.7(@babel/core@7.26.7) + '@babel/preset-react': + specifier: ^7.26.3 + version: 7.26.3(@babel/core@7.26.7) '@eslint/compat': specifier: ^1.2.6 version: 1.2.6(eslint@9.19.0) @@ -258,12 +267,24 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-proposal-decorators@7.25.9': + resolution: {integrity: sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-decorators@7.25.9': + resolution: {integrity: sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-assertions@7.26.0': resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} engines: {node: '>=6.9.0'} @@ -276,6 +297,18 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.25.9': + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} @@ -510,6 +543,30 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-display-name@7.25.9': + resolution: {integrity: sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-development@7.25.9': + resolution: {integrity: sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx@7.25.9': + resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-pure-annotations@7.25.9': + resolution: {integrity: sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-regenerator@7.25.9': resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} engines: {node: '>=6.9.0'} @@ -558,6 +615,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.26.7': + resolution: {integrity: sha512-5cJurntg+AT+cgelGP9Bt788DKiAw9gIMSMU2NJrLAilnj0m8WZWUNZPSLOmadYsujHutpgElO+50foX+ib/Wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-escapes@7.25.9': resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} engines: {node: '>=6.9.0'} @@ -593,6 +656,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + '@babel/preset-react@7.26.3': + resolution: {integrity: sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/runtime@7.26.7': resolution: {integrity: sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==} engines: {node: '>=6.9.0'} @@ -3763,10 +3832,24 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-proposal-decorators@7.25.9(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.7) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.7)': dependencies: '@babel/core': 7.26.7 + '@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.7)': dependencies: '@babel/core': 7.26.7 @@ -3777,6 +3860,16 @@ snapshots: '@babel/core': 7.26.7 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.7)': dependencies: '@babel/core': 7.26.7 @@ -4034,6 +4127,35 @@ snapshots: '@babel/core': 7.26.7 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.7) + '@babel/types': 7.26.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-pure-annotations@7.25.9(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.7)': dependencies: '@babel/core': 7.26.7 @@ -4079,6 +4201,17 @@ snapshots: '@babel/core': 7.26.7 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-transform-typescript@7.26.7(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.7) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.7)': dependencies: '@babel/core': 7.26.7 @@ -4184,6 +4317,18 @@ snapshots: '@babel/types': 7.26.7 esutils: 2.0.3 + '@babel/preset-react@7.26.3(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.7) + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.7) + '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.26.7) + '@babel/plugin-transform-react-pure-annotations': 7.25.9(@babel/core@7.26.7) + transitivePeerDependencies: + - supports-color + '@babel/runtime@7.26.7': dependencies: regenerator-runtime: 0.14.1