├── .dev
├── localhost.cert
└── localhost.key
├── .docs
└── images
│ ├── custom_link_plugin.png
│ └── custom_link_settings.png
├── .editorconfig
├── .eslintignore
├── .eslintrc.cjs
├── .github
├── ISSUE_TEMPLATE
│ ├── ---bug-report.md
│ └── --anything-else.md
├── dependabot.yml
└── workflows
│ ├── changelog.yml
│ ├── main.yml
│ └── pull_requests.yml
├── .gitignore
├── .prettierrc
├── .vscode
└── settings.json
├── CHANGELOG.md
├── LICENSE.txt
├── Readme.md
├── common
├── api-helpers.js
├── plugin-element-cache.js
└── plugin-helpers.js
├── esbuild.config.js
├── package.json
├── plugin-manifest.json
├── plugins
├── i18n.js
├── index.js
├── managePlugin
│ └── managePlugin.js
├── panelPlugin
│ └── panelPlugin.js
└── styles
│ ├── button.css
│ ├── index.css
│ └── panel.css
└── yarn.lock
/.dev/localhost.cert:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIIFCzCCAvOgAwIBAgIUfLvXiw1GaycV+Ya/jmJ54EqjEb0wDQYJKoZIhvcNAQEL
3 | BQAwFDESMBAGA1UEAwwJMTI3LjAuMC4xMCAXDTI0MDIxNTEyMDMxM1oYDzIwNTEw
4 | NzAyMTIwMzEzWjAUMRIwEAYDVQQDDAkxMjcuMC4wLjEwggIiMA0GCSqGSIb3DQEB
5 | AQUAA4ICDwAwggIKAoICAQDDdhdcQr1JGffkrBK7zDukb79YkD5Hg1FWWgByztdv
6 | dc0jvEnGLqkgaL8NYlmZqh5NRZ7ncp/A3C01wxGMAL1jhjcX56wt0hQRdszGdi0J
7 | XN8Ixqa2JLcNn20D4152HPgB7F/JlTPviW4Bws67sUs3JT0wrdjtx77rg4tPCL/S
8 | qP6N21EHXokVnwQHkFh/MUx1+agHDZL6U9iB0MKVErL/q2HLibQfjkJs5Y6kzdQQ
9 | WwVwbZul8XzEi9lU90hnBqT4wvDxYYzKZD+o4965B0ThhDbuYN8J4VCLE1mOLlhC
10 | bpKfMdwA3Un881MgWQXImGseAu1vYN7a8P3xy1LsLdjb6Du86/fQ8SL3YfH+wlw6
11 | 5eQ2J3KYheQgpwlpmIvjLNFqc72ymCIjcWWfW7gT81XmdfhlKObo8HQdrp1uMrSN
12 | 78xRLu9kRmL1iqHgqTF8kn3jUAGPr5EoUyzf8z8cX2Px0B7y8x/o845+CySHenZv
13 | AMkxA7N46c4M7o8kwHHm79dQO0Ep6dyiCTTII+DWe5BpbNlq1ddWynk5Rc2KQrvT
14 | oBV0cLpjvXQAlWB9YzqG6J4tvnfO3RjgUNgxfSDF2XW2Wi1mtnsk8m4NDGgOjLz0
15 | lVrPaeEXMDWiofpuMMW02MIYGTTYSFvO/TPO06tjVxq2jDshoUNS9faRhSxuOCEP
16 | CQIDAQABo1MwUTAdBgNVHQ4EFgQU7UYziQNqS7MqiGXjxN5KDKz784UwHwYDVR0j
17 | BBgwFoAU7UYziQNqS7MqiGXjxN5KDKz784UwDwYDVR0TAQH/BAUwAwEB/zANBgkq
18 | hkiG9w0BAQsFAAOCAgEAgZGo35kJFFEYS1iBHeLuo/7grrA2wcjR4e2eONKq21QU
19 | FJfbp+CpWkvMjq0SBq174KgfNpGrKD5KnfpBJoVD/9s43XGSCDzitZeW2mQtQ3uD
20 | nMYWGNE2rceZWmdDOKhhKMeDRdfososIdtFxBYW6nS9Znx2IwAvlDeOobmwgmUzb
21 | C2Y0S3lUnwQ2E7WStIN7zm43aFVRgigIm71sSWKpQoCfoy63ETG4m2q7uu/Ldw3y
22 | vGF2KA//ThrjWljqNu3xIRaSFWYhKJ6/Y78NNsg5vIoiI+Wk4PigY8Z3UQWdGjmW
23 | 9tZG7SAN2b4s6Zan2fbF3R4q6H3x3N3ZsjKVlBroyaOLN4WFABIHbU81ggFxIsFO
24 | 6RXHfNGDuPuYTrtlogvJ47nI4C5WeUFDWFcZQQ7BrS9ewZcLI5fOvejjlFqvSl87
25 | Y1StpTgVUEFL08bdjyFtAw7miJeofyT8bO1m/0Hg+snBtvBCCAJxflSVuySLp5Bi
26 | EtFxi53J+kezvRm64Y9ub61NGatXUAuPr7Z0P58ES6MgpoYgzUGeybV97MpDsRQb
27 | ze3fzqL5rE3Upb2asgINWjAXDM2Qhr8aY0OVKJQ1P4c+yyddlb3vzNfw0G5W0bsJ
28 | na+/Pfz1M60k1OxsWUGXWOPIEi29VeERDzSwhC4zShPAKYIlqrUpMunHoAGlGvM=
29 | -----END CERTIFICATE-----
30 |
--------------------------------------------------------------------------------
/.dev/localhost.key:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDDdhdcQr1JGffk
3 | rBK7zDukb79YkD5Hg1FWWgByztdvdc0jvEnGLqkgaL8NYlmZqh5NRZ7ncp/A3C01
4 | wxGMAL1jhjcX56wt0hQRdszGdi0JXN8Ixqa2JLcNn20D4152HPgB7F/JlTPviW4B
5 | ws67sUs3JT0wrdjtx77rg4tPCL/SqP6N21EHXokVnwQHkFh/MUx1+agHDZL6U9iB
6 | 0MKVErL/q2HLibQfjkJs5Y6kzdQQWwVwbZul8XzEi9lU90hnBqT4wvDxYYzKZD+o
7 | 4965B0ThhDbuYN8J4VCLE1mOLlhCbpKfMdwA3Un881MgWQXImGseAu1vYN7a8P3x
8 | y1LsLdjb6Du86/fQ8SL3YfH+wlw65eQ2J3KYheQgpwlpmIvjLNFqc72ymCIjcWWf
9 | W7gT81XmdfhlKObo8HQdrp1uMrSN78xRLu9kRmL1iqHgqTF8kn3jUAGPr5EoUyzf
10 | 8z8cX2Px0B7y8x/o845+CySHenZvAMkxA7N46c4M7o8kwHHm79dQO0Ep6dyiCTTI
11 | I+DWe5BpbNlq1ddWynk5Rc2KQrvToBV0cLpjvXQAlWB9YzqG6J4tvnfO3RjgUNgx
12 | fSDF2XW2Wi1mtnsk8m4NDGgOjLz0lVrPaeEXMDWiofpuMMW02MIYGTTYSFvO/TPO
13 | 06tjVxq2jDshoUNS9faRhSxuOCEPCQIDAQABAoICACiwjb5kGll8cXGGLMQxiPz7
14 | Ul8ScBSdDrKmO8+qpYiLgm/9A3KhRg38IEGeBr8JfhNh+el+oCka7MJzYFS/1q1A
15 | RHnSfbJwOENGcuyhr1Byp++AwzXJwN2yIZScoY5/C1YDKhGh4NTtzBvLvROvndPW
16 | Cb33guBFI8aNdNO4I46sJYnMbTrWgD0jBEi60OFxltQ8a7FELyOzjq+/kLJN2TuG
17 | Ju6jNP8Ys1VOGHrQamQZPrGf77YE5o9X+Z9JdyYTaQZsNpJZV2DOq73x6eykyb8U
18 | sga/3c6FvCmnlo4VscPqltVTINSBPKTO1rA2OBEBQdNWkq0MAnibkJHkXNfT13/a
19 | 3woM0cCzY6UfTakD42qJQ+coXeS6u41wDBl7jcIJrHM9Ych0mFrmn/IWY8ay95vp
20 | ZOd36qD9Rs/+Ys8WaRc8giPO1l84ndfWx0jNhIkG7KQoQVIZk7Bf0Oc8gx6XzAbf
21 | mcSwNjN+3/gxlrJeb5eqlT4hE7zxgDMrW0qZc+iYRtsrIeaOnWWQ8rXOBOwvj35W
22 | xfGMvVb56rPHBEHcbNRHiDqYJcisd6xO+zMQK/bX0uSEZroy1MTiKENuhJxx8C8E
23 | t7Fwk+P/AdMLkKK7LEGw22QcAOBdzPsnrkiZajcvda+BJ0tO+Nsx25Vyxag+BDQl
24 | nX2ppIvK0odsbOkY8XmxAoIBAQDgUeCslVa0LMkmpltGntgO2KjMjnQs7mqEM06z
25 | a0MhEi/mCTd09CxRKDL8kCJvPIj3IIVYlRFck8e4R+VbBc73ZOwtUz4Nz6Ly/pzs
26 | mSKfX1bUYq7b5cwzn9kPM9v160CcRHNGcrlFSz/jH46kGlS1xGjWHoi0DhhLZU/b
27 | OPDtN2hueSQj2DYwLGhEqgUsaJFa7maCMRmwBrs6rwQiJS2YVpaQ3HQaind1Q7Mz
28 | F7uFT3ioyIa9X5Qq0O9HUzfJeTxAoweF5N2Ub9g41DYLMyVvnQv1kuldcEAMUTVo
29 | bXZYdyIrH2jJLax3IVMfhruTFbsZKIasuvq1De2CJH7YAUuNAoIBAQDfENqUilKp
30 | aYiGo0e8IWQtojiEW+5Le1jPecZ2btLB5pQxeoCvPTYZVmwyT+jVP5vi6owXW/Bi
31 | vJDvNRniuzsVkz2VR+WdtpwK4poEqX3bEeGjBDeOkJWR23EINvOS/CkOdpLtTXAi
32 | YrWGEVHVXbIcZC8+am/gifVb1P/ext+taG4dQnvKaLGbSxX7zBBxEY3VdFiVfroD
33 | BEvCue5suHxni8nFXWLJncUe/u9j9k3lnGwa7yADrASLtXRVXRBxz5zQvabFJ+DS
34 | naneySY2UBfRrRUvDAc7PlvV+fpI4gmEYsXqWnqoEHcspWuA5Wtx5iF86XM/ZdkU
35 | 5pJuPk3MuHRtAoIBAFf/JqDtMIcbrokP52yLsXwZeBZOp7pciMJ1kiEGKd5WUR3v
36 | babehmgL2fyD2k5CtAQl6Ml4KMhlXIqpAYs0ex1HpPKe3g/y7Rxfz1VtOUzFzL0i
37 | PTAcNH/n6/FvyZDuCXmDzKjNJmrNezFw1rb/cU2gz/N3JO9lPBiPlMUN0E1uV/RG
38 | Z2v8TD2XnguZms/x8Vt3fBUEh+wqp9X8hCWU6g8BoK0RHiavPO9ucGTRoYlJRK8J
39 | gvnU/b3SGpujRJYvjfhZPAFFZ7rsKSkZ7l10YfIn7GIYkJ1MBIQQc2AU2MEZcvjx
40 | qFyLI0XUd9Q9OWYYtz3GTRaDfwf5f7t2759y2p0CggEAVWJgKMehyJNK3S6XAN5P
41 | OGCF/bQqzN3UKubUHvVg2zPlueLIa0uk76HzHHcWCrqkcwGQykg5BbJkUAwlcnJ0
42 | tVd9FS1GKU6DAG+owOwX7skzc3Djy0Bw4Dn9VEWkirjXBmBA8XDY4XCjR0RN7LxG
43 | tzNqGhwn4u0r7BDmOGIrsHbu32hZdisJAQaGzbFZAc7UWcaFOgQeM5VrYohFSXx8
44 | si4B9/g9Hiu0Dp9LBxp6ys9LWiv6Ny2bN9cnRp2u88GipwxRT9pp5nTPVyXr6JJT
45 | 68CzASU7h2PhR1C+izNqrTAZzhEALmDPHVncgqROsnSCkQvTP4s+ww9XMbfLk/dv
46 | KQKCAQEAotNHi3WXU0xcXW1rdIIRJoSTORLFoSGoN2hkT1sbIxcbE90znBQv2ycg
47 | KdtHJPGjw46JUpaKT2G48Z/5U7GNn0jyCzqnzzqk1mPUBvFR9WLZZufmWF6TyYrm
48 | B76+XoydOOQP2aYczdJD16SKLmKLRwK+mIqwu6BWz7FYb2uKLSFyHpJmt4dDd0yg
49 | VgN+UtPJYbgws9F/+KFJEq4BVpAOu26FQz1lDga+xxPqqnIMs65NX/VN9xs3uNtS
50 | nAg3bHFZF3PpNFTDX+G5Mmdgq+5P0FGnbo9xnjQX0Dg9GF7t77UBAuSiwBqX7U+/
51 | 0C66dFZAOvWn1oIUWWms2ytx0rg7sA==
52 | -----END PRIVATE KEY-----
53 |
--------------------------------------------------------------------------------
/.docs/images/custom_link_plugin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flotiq/flotiq-ui-plugin-custom-links/7e3c5d7556343df4be14aab0c0fdeca88ad395b4/.docs/images/custom_link_plugin.png
--------------------------------------------------------------------------------
/.docs/images/custom_link_settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flotiq/flotiq-ui-plugin-custom-links/7e3c5d7556343df4be14aab0c0fdeca88ad395b4/.docs/images/custom_link_settings.png
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | end_of_line = lf
5 |
6 | [*.{js,jsx,mdx,ts,json,mjs,css}]
7 | charset = utf-8
8 | indent_style = space
9 | indent_size = 2
10 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 | .eslintrc.cjs
4 | esbuild.config.js
5 |
--------------------------------------------------------------------------------
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | browser: true,
5 | es6: true,
6 | },
7 | extends: ['eslint:recommended', 'prettier'],
8 | parserOptions: {
9 | sourceType: 'module',
10 | ecmaVersion: 2020,
11 | },
12 | rules: {
13 | 'no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
14 | 'linebreak-style': 0,
15 |
16 | /* This rule will warn when it encounters a reference to an identifier that has not yet been declared. */
17 | 'no-use-before-define': [
18 | 'error',
19 | {
20 | variables: false,
21 | },
22 | ],
23 |
24 | /* Enforce require() on the top-level module scope */
25 | 'global-require': 0,
26 |
27 | 'max-len': [
28 | 'error',
29 | {
30 | code: 120,
31 | },
32 | ],
33 |
34 | 'guard-for-in': 0,
35 | 'no-underscore-dangle': 0,
36 | 'import/prefer-default-export': 0,
37 | 'import/no-anonymous-default-export': 0,
38 | 'import/no-extraneous-dependencies': 0,
39 | },
40 | };
41 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/---bug-report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "Bug report"
3 | about: Report reproducible software issues, so we can improve
4 |
5 | ---
6 |
7 | Welcome to the Plugin for Custom links GitHub repo!
8 |
9 | For questions related to the plugin creation process, please check out docs at https://flotiq.com/docs/panel/PluginsDevelopment/plugins/
10 |
11 | For support, help, questions, requests and ideas use https://discord.gg/FwXcHnX
12 |
13 | ### Issue Summary
14 |
15 | A summary of the issue and the browser/OS environment in which it occurs.
16 |
17 | ### To Reproduce
18 |
19 | 1. This is the first step
20 | 2. This is the second step, etc.
21 |
22 | Any other info e.g. Why do you consider this to be a bug? What did you expect to happen instead?
23 |
24 | ### Technical details:
25 |
26 | * Next.js Version:
27 | * Node Version:
28 | * OS:
29 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/--anything-else.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "Anything else"
3 | about: "For help, support, features & ideas - please use https://discord.gg/FwXcHnX"
4 |
5 | ---
6 |
7 | Click "Preview" for a nicer view!
8 |
9 | For support, help, questions, requests and ideas use https://discord.gg/FwXcHnX
10 |
11 | Alternatively, check out these resources below. Thanks!
12 |
13 | - [Discord](https://discord.gg/FwXcHnX)
14 | - [Plugin Docs](https://flotiq.com/docs/panel/PluginsDevelopment/plugins/)
15 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: "npm"
4 | directory: '/'
5 | schedule:
6 | interval: 'monthly'
7 |
--------------------------------------------------------------------------------
/.github/workflows/changelog.yml:
--------------------------------------------------------------------------------
1 | name: Check Changelog and Version
2 |
3 | on:
4 | pull_request:
5 | branches:
6 | - master
7 | - main
8 |
9 | jobs:
10 | check-changelog:
11 | runs-on: ubuntu-latest
12 | steps:
13 | - uses: actions/checkout@v4
14 | with:
15 | fetch-depth: 100
16 | - uses: flotiq/check-changelog-and-version@v1.1.1
17 | with:
18 | changelog_file: CHANGELOG.md
19 | version_file: package.json
20 | check-changelog-plugin-manifest:
21 | runs-on: ubuntu-latest
22 | steps:
23 | - uses: actions/checkout@v4
24 | with:
25 | fetch-depth: 100
26 | - uses: flotiq/check-changelog-and-version@v1.1.1
27 | with:
28 | changelog_file: CHANGELOG.md
29 | version_file: plugin-manifest.json
30 |
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | name: Build & Release
2 |
3 | permissions:
4 | contents: write
5 |
6 | on:
7 | push:
8 | branches: [ main ]
9 | workflow_dispatch:
10 |
11 | jobs:
12 | build-release:
13 | runs-on: ubuntu-latest
14 | steps:
15 | - uses: actions/checkout@v4
16 | - name: Use Node.js 18.x
17 | uses: actions/setup-node@v4
18 | with:
19 | node-version: 18.x
20 | - run: yarn
21 | - run: yarn build
22 | - name: Create tar from built plugin
23 | run: |
24 | BUILDFOLDER="dist"
25 | MANIFEST=$(find ./$BUILDFOLDER -name plugin-manifest.json)
26 | [ -z $MANIFEST ] && cp plugin-manifest $BUILDFOLDER
27 | MANIFEST="$BUILDFOLDER/plugin-manifest.json"
28 | VERSION=$(jq '.version' $MANIFEST -r)
29 | echo "version=$VERSION"
30 | mkdir -p output
31 | tar -C $BUILDFOLDER -czf output/$VERSION.tar.gz .
32 | ls -la output
33 | echo "version=$VERSION" >> $GITHUB_ENV
34 | - name: Create artifact
35 | uses: actions/upload-artifact@v4
36 | with:
37 | name: plugin-package
38 | path: output
39 | - name: Release built plugin
40 | uses: svenstaro/upload-release-action@v2
41 | with:
42 | repo_token: ${{ secrets.GITHUB_TOKEN }}
43 | file: output/*
44 | tag: ${{ env.version }}
45 | overwrite: true
46 | file_glob: true
47 | if: github.ref == 'refs/heads/main'
48 |
--------------------------------------------------------------------------------
/.github/workflows/pull_requests.yml:
--------------------------------------------------------------------------------
1 | name: Build & Deploy to Minio
2 |
3 | permissions:
4 | contents: write
5 |
6 | on:
7 | pull_request:
8 |
9 | jobs:
10 | build-minio:
11 | runs-on: ubuntu-latest
12 | steps:
13 | - uses: actions/checkout@v4
14 | - name: Use Node.js 18.x
15 | uses: actions/setup-node@v4
16 | with:
17 | node-version: 18.x
18 | - run: yarn
19 | - run: yarn build
20 | - name: Create tar from built plugin
21 | run: |
22 | BUILDFOLDER="dist"
23 | MANIFEST=$(find ./$BUILDFOLDER -name plugin-manifest.json)
24 | [ -z $MANIFEST ] && cp plugin-manifest $BUILDFOLDER
25 | MANIFEST="$BUILDFOLDER/plugin-manifest.json"
26 | VERSION=$(jq '.version' $MANIFEST -r)
27 | URL=$(jq '.url' $MANIFEST -r)
28 | echo "version=$VERSION"
29 | mkdir -p output
30 | tar -C $BUILDFOLDER -czf output/$VERSION.tar.gz .
31 | ls -la output
32 | echo "version=$VERSION" >> $GITHUB_ENV
33 | REPO_NAME="$(basename $GITHUB_REPOSITORY)"
34 | echo "REPO_NAME=$REPO_NAME" >> $GITHUB_ENV
35 | ENTRYPOINT_NAME=$(basename $URL)
36 | ENTRYPOINT_PATH=$(find ./$BUILDFOLDER -name $ENTRYPOINT_NAME | sed "s|^./$BUILDFOLDER/||")
37 | UPLOAD_URL="$MINIO_URL/flotiq-plugins-dev/$REPO_NAME/$GITHUB_HEAD_REF/$ENTRYPOINT_PATH"
38 | echo $UPLOAD_URL
39 | tmp=$(mktemp)
40 | jq --arg upload_url "$UPLOAD_URL" '.url = $upload_url' $MANIFEST > "$tmp" && mv "$tmp" $MANIFEST
41 | env:
42 | MINIO_URL: ${{ secrets.MINIO_ENDPOINT }}
43 | - name: Minio Deploy
44 | uses: lovellfelix/minio-deploy-action@v1
45 | with:
46 | endpoint: ${{ secrets.MINIO_ENDPOINT }}
47 | access_key: ${{ secrets.MINIO_ACCESS_KEY }}
48 | secret_key: ${{ secrets.MINIO_SECRET_KEY }}
49 | bucket: 'flotiq-plugins-dev'
50 | # Optional inputs with their defaults:
51 | source_dir: 'dist'
52 | target_dir: '/${{ env.REPO_NAME }}/${{ github.head_ref }}/'
53 | - name: Create artifact
54 | uses: actions/upload-artifact@v4
55 | with:
56 | name: plugin-package
57 | path: output/${{ env.version }}.tar.gz
58 | dependabot:
59 | runs-on: ubuntu-latest
60 | if: github.actor == 'dependabot[bot]'
61 | steps:
62 | - name: Dependabot metadata
63 | id: metadata
64 | uses: dependabot/fetch-metadata@v1
65 | with:
66 | github-token: "${{ secrets.GITHUB_TOKEN }}"
67 | - name: Approve a PR
68 | run: gh pr review --approve "$PR_URL"
69 | env:
70 | PR_URL: ${{github.event.pull_request.html_url}}
71 | GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
72 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "endOfLine": "lf",
3 | "semi": true,
4 | "singleQuote": true,
5 | "tabWidth": 2,
6 | "trailingComma": "all"
7 | }
8 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "[css][scss][javascript][typescript][javascriptreact][typescriptreact][json][mdx][html]": {
3 | "editor.formatOnSave": true,
4 | "editor.defaultFormatter": "esbenp.prettier-vscode"
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # CHANGELOG
2 |
3 | All notable changes to this project will be documented in this file.
4 |
5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7 |
8 | ## [1.1.0]
9 | ### Added
10 | * Changelog
11 | * Issue templates
12 | * Dependabot
13 | * Collaboration section in readme
14 | * License
15 | * GitHub check actions
16 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2025 Flotiq team
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Readme.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | # About plugin
6 |
7 | This plugin will display a button with a link in the content edit object. The link will be supplemented with data from the currently edited object. Thanks to this link, you will be able to easily access the preview of where the content will be used.
8 |
9 | ## Plugin outcome
10 |
11 | In the sidebar of the Content Object form, you will see a panel with the configured link button. The button will not be visible when adding a new object.
12 |
13 |
14 |
15 | ## Configuring plugin
16 |
17 | To manage a plugin, you must first add it to your plugins. Click the "+" icon to add the plugin to your library and click the "Manage" button. It will open the plugin settings.
18 |
19 |
20 |
21 | Field descriptions:
22 |
23 | * `URL Template` - It's a place to enter the link template, e.g. https://my-blog/post/{slug}, where `slug` is the name of the content field of the type selected below. Instead of `{slug}`, you can use any field of a given content type, it is also possible to use nesting, e.g. `{internal.createdAt}`. You can also use list fields: `{addresses[0].city}`.
24 | * `Displayed Name Template` - Any name that will be displayed on the link button. You can also use content object fields (e.g. `{slug}`), in the same way as with Url Template.
25 | * `Content Type Definition` - Select the content type to display the button only for the specified content type. If the content type is not selected, the button will be shown when editing each content object.
26 |
27 | # Development
28 |
29 | ## Quick start
30 |
31 | 1. `yarn` - to install dependencies
32 | 2. `yarn start` - to start development mode - rebuild on file modifications
33 | 3. update your `plugin-manifest.json` file to contain the production URL and other plugin information
34 | 4. `yarn build` - to build plugins
35 |
36 | ## Dev environment
37 |
38 | Dev environment is configured to use:
39 |
40 | * `prettier` - best used with automatic format on save in IDE
41 | * `eslint` - it is built into both `start` and `build` commands
42 |
43 | ## Output
44 |
45 | The plugins are built into a single `dist/index.js` file. The manifest is copied to `dist/plugin-manifest.json` file.
46 |
47 | ## Deployment
48 |
49 |
50 |
51 | ## Loading the plugin
52 |
53 | **Warning:** While developing, you can use `https://localhost:3053/plugin-manifest.json` address to load the plugin manifest. Make sure your browser trusts the local certificate on the latter, to be able to use it e.g. with `https://editor.flotiq.com`
54 |
55 | ### URL
56 |
57 | **Hint**: You can use localhost url from development mode `https://localhost:3053/index.js`
58 |
59 | 1. Open Flotiq editor
60 | 2. Open Chrome Dev console
61 | 3. Execute the following script
62 | ```javascript
63 | FlotiqPlugins.loadPlugin('plugin-id', '')
64 | ```
65 | 4. Navigate to the view that is modified by the plugin
66 |
67 | ### Directly
68 |
69 | 1. Open Flotiq editor
70 | 2. Open Chrome Dev console
71 | 3. Paste the content of `dist/index.js`
72 | 4. Navigate to the view that is modified by the plugin
73 |
74 | ### Deployment
75 |
76 | **Hint**: You can use localhost url from development mode `https://localhost:3053/plugin-manifest.json`
77 |
78 | 1. Open Flotiq editor
79 | 2. Add a new plugin and paste the URL to the hosted `plugin-manifest.json` file
80 | 3. Navigate to the view that is modified by the plugin
81 |
82 | ## Collaborating
83 |
84 | If you wish to talk with us about this project, feel free to hop on our [](https://discord.gg/FwXcHnX).
85 |
86 | If you found a bug, please report it in [issues](https://github.com/flotiq/flotiq-ui-plugin-custom-links/issues).
87 |
--------------------------------------------------------------------------------
/common/api-helpers.js:
--------------------------------------------------------------------------------
1 | let cachedCtds = null;
2 |
3 | export const getContentTypes = async (client, toast, t) => {
4 | if (cachedCtds) return cachedCtds;
5 |
6 | cachedCtds = client
7 | .getContentTypes({
8 | limit: 1000,
9 | page: 1,
10 | order_by: 'label',
11 | order_direction: 'asc',
12 | })
13 | .then(({ body, status }) => {
14 | if (status < 200 || status >= 300) {
15 | throw new Error();
16 | }
17 |
18 | return body.data || [];
19 | })
20 | .catch(() => {
21 | toast.error(t('ContentTypesErrors'));
22 | return [];
23 | });
24 |
25 | return cachedCtds;
26 | };
27 |
--------------------------------------------------------------------------------
/common/plugin-element-cache.js:
--------------------------------------------------------------------------------
1 | const appRoots = {};
2 |
3 | export const addElementToCache = (element, key, data = {}) => {
4 | appRoots[key] = {
5 | element,
6 | data,
7 | };
8 |
9 | element.addEventListener('flotiq.detached', () => {
10 | setTimeout(() => {
11 | return delete appRoots[key];
12 | }, 50);
13 | });
14 | };
15 |
16 | export const getCachedElement = (key) => {
17 | return appRoots[key];
18 | };
19 |
20 | export const registerFn = (pluginInfo, callback) => {
21 | if (window.FlotiqPlugins?.add) {
22 | window.FlotiqPlugins.add(pluginInfo, callback);
23 | return;
24 | }
25 | if (!window.initFlotiqPlugins) window.initFlotiqPlugins = [];
26 | window.initFlotiqPlugins.push({ pluginInfo, callback });
27 | };
28 |
--------------------------------------------------------------------------------
/common/plugin-helpers.js:
--------------------------------------------------------------------------------
1 | const appRoots = {};
2 |
3 | export const onElementRemoved = (element, callback) => {
4 | new MutationObserver(function () {
5 | if (!document.contains(element)) {
6 | callback();
7 | this.disconnect();
8 | }
9 | }).observe(element.parentElement, { childList: true });
10 | };
11 |
12 | export const addElementToCache = (element, root, key) => {
13 | appRoots[key] = {
14 | element,
15 | root,
16 | };
17 |
18 | element.addEventListener(
19 | 'flotiq.attached',
20 | () => onElementRemoved(element, () => delete appRoots[key]),
21 | true,
22 | );
23 | };
24 |
25 | export const removeRoot = (key) => {
26 | delete appRoots[key];
27 | };
28 |
29 | export const getCachedElement = (key) => {
30 | return appRoots[key];
31 | };
32 |
33 | export const registerFn = (pluginInfo, callback) => {
34 | if (window.FlotiqPlugins?.add) {
35 | window.FlotiqPlugins.add(pluginInfo, callback);
36 | return;
37 | }
38 | if (!window.initFlotiqPlugins) window.initFlotiqPlugins = [];
39 | window.initFlotiqPlugins.push({ pluginInfo, callback });
40 | };
41 |
42 | /**
43 | * Read key value deep inside object
44 | * @param {string} key
45 | * @param {object} object
46 | * @returns {*} example: read 'object[0].key' from 'object: [{key: value}]
47 | */
48 | export const deepReadKeyValue = (key, object) => {
49 | return key
50 | .split(/[[.\]]/)
51 | .filter((kp) => !!kp)
52 | .reduce((nestedOptions, keyPart) => {
53 | return nestedOptions?.[keyPart];
54 | }, object);
55 | };
--------------------------------------------------------------------------------
/esbuild.config.js:
--------------------------------------------------------------------------------
1 | import chalk from 'chalk';
2 | import * as esbuild from 'esbuild';
3 | import eslint from 'esbuild-plugin-eslint';
4 | import inlineImportPlugin from 'esbuild-plugin-inline-import';
5 | import url from 'postcss-url';
6 | import postcss from 'postcss';
7 | import { copy } from 'esbuild-plugin-copy';
8 |
9 | import http from 'node:http';
10 | import https from 'node:https';
11 | import fs from 'fs';
12 |
13 | const watch = process.argv.includes('--watch');
14 |
15 | function formatDuration(seconds) {
16 | const time = {
17 | y: 31536000,
18 | d: 86400,
19 | h: 3600,
20 | m: 60,
21 | s: 1,
22 | ms: 0.001,
23 | },
24 | res = [];
25 |
26 | if (seconds === 0) return 'now';
27 |
28 | for (let key in time) {
29 | if (seconds >= time[key]) {
30 | let val = Math.floor(seconds / time[key]);
31 | res.push((val += key));
32 | seconds = seconds % time[key];
33 | }
34 | }
35 |
36 | return res.length > 1
37 | ? res.join(', ').replace(/,([^,]*)$/, ' and' + '$1')
38 | : res[0];
39 | }
40 |
41 | function postCssTransformer(code, path) {
42 | return new Promise((resolve, reject) => {
43 | postcss([
44 | url({
45 | url: 'inline',
46 | }),
47 | ])
48 | .process(code, { from: path })
49 | .then((result) => {
50 | resolve(result.css);
51 | })
52 | .catch(reject);
53 | });
54 | }
55 |
56 | const context = await esbuild.context({
57 | entryPoints: ['plugins/index.js'],
58 | bundle: true,
59 | minify: true,
60 | sourcemap: true,
61 | outfile: 'dist/index.js',
62 |
63 | plugins: [
64 | copy({
65 | // this is equal to process.cwd(), which means we use cwd path as base path to resolve `to` path
66 | // if not specified, this plugin uses ESBuild.build outdir/outfile options as base path.
67 | resolveFrom: 'cwd',
68 | assets: {
69 | from: ['./plugin-manifest.json'],
70 | to: ['dist/plugin-manifest.json'],
71 | },
72 | watch: true,
73 | }),
74 |
75 | inlineImportPlugin({
76 | transform: (code, { path }) => {
77 | if (path.endsWith('.css')) {
78 | return postCssTransformer(code, path);
79 | }
80 | return code;
81 | },
82 | }),
83 |
84 | eslint({
85 | throwOnError: !watch,
86 | }),
87 | {
88 | name: 'result-message-plugin',
89 | setup(build) {
90 | let startedAt = null;
91 | build.onStart(() => {
92 | startedAt = Date.now();
93 | console.log('Build started');
94 | });
95 | build.onEnd((result) => {
96 | const duration = Date.now() - startedAt;
97 | const durationText = formatDuration(duration / 1000);
98 | console.log(
99 | 'Build ended after',
100 | duration > 1000
101 | ? chalk.red(durationText)
102 | : chalk.green(durationText),
103 | );
104 | const errors = result?.errors?.length || 0;
105 | const warnings = result?.warnings?.length || 0;
106 | if (result?.errors?.length) {
107 | console.log(chalk.red('Failed. See errors above for details.'));
108 | } else {
109 | console.log(chalk.green('Success'));
110 | }
111 | if (errors || warnings) {
112 | console.log(
113 | `Errors/Warnings: ${errors ? chalk.red(errors) : errors}/${
114 | warnings ? chalk.yellow(warnings) : warnings
115 | }`,
116 | );
117 | }
118 | });
119 | },
120 | },
121 | ],
122 | });
123 |
124 | if (watch) {
125 | console.log('Watching for changes...');
126 | context.watch();
127 |
128 | const { host, port } = await context.serve({
129 | servedir: 'dist',
130 | port: 3050,
131 | });
132 |
133 | const headers = {
134 | 'access-control-allow-origin': '*' /* @dev First, read about security */,
135 | 'access-control-allow-methods': 'OPTIONS, POST, GET',
136 | 'access-control-max-age': 2592000, // 30 days
137 | 'access-control-allow-headers': '*',
138 | /** add other headers as per requirement */
139 | };
140 |
141 | const options = {
142 | key: fs.readFileSync('./.dev/localhost.key'),
143 | cert: fs.readFileSync('./.dev/localhost.cert'),
144 | };
145 |
146 | // Then start a proxy server on port 3000
147 | https
148 | .createServer(options, (req, res) => {
149 | const options = {
150 | hostname: host,
151 | port: port,
152 | path: req.url,
153 | method: req.method,
154 | headers: req.headers,
155 | };
156 |
157 | if (req.method === 'OPTIONS') {
158 | res.writeHead(204, headers);
159 | res.end();
160 | return;
161 | }
162 |
163 | // Forward each incoming request to esbuild
164 | const proxyReq = http.request(options, (proxyRes) => {
165 | // Forward the response from esbuild to the client
166 | // Include CORS headers
167 | res.writeHead(proxyRes.statusCode, {
168 | ...proxyRes.headers,
169 | ...headers,
170 | });
171 | proxyRes.pipe(res, { end: true });
172 | });
173 |
174 | // Forward the body of the request to esbuild
175 | req.pipe(proxyReq, { end: true });
176 | })
177 | .listen(3053);
178 |
179 | console.log(
180 | `Serving at http://${host.replace(
181 | '0.0.0.0',
182 | 'localhost',
183 | )}:${port}/index.js and https://${host.replace(
184 | '0.0.0.0',
185 | 'localhost',
186 | )}:${3053}/index.js`,
187 | );
188 |
189 | console.log(
190 | `Manifest file is avaiable at http://${host.replace(
191 | '0.0.0.0',
192 | 'localhost',
193 | )}:${port}/plugin-manifest.json and https://${host.replace(
194 | '0.0.0.0',
195 | 'localhost',
196 | )}:${3053}/plugin-manifest.json`,
197 | );
198 | } else {
199 | await context.rebuild();
200 | context.dispose();
201 | }
202 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "module",
3 | "license": "MIT",
4 | "version": "1.1.0",
5 | "scripts": {
6 | "build": "node esbuild.config.js",
7 | "start": "node esbuild.config.js --watch"
8 | },
9 | "devDependencies": {
10 | "@babel/eslint-parser": "^7.26.8",
11 | "esbuild": "^0.25.1",
12 | "esbuild-plugin-eslint": "^0.3.12",
13 | "esbuild-plugin-inline-import": "^1.1.0",
14 | "eslint": "^8.57.1",
15 | "eslint-config-prettier": "^10.1.1",
16 | "postcss": "^8.5.3",
17 | "postcss-url": "^10.1.3",
18 | "prettier": "^3.5.3"
19 | },
20 | "dependencies": {
21 | "chalk": "^5.4.1",
22 | "i18next": "^23.10.1",
23 | "esbuild-plugin-copy": "^2.1.1"
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/plugin-manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "flotiq.custom-links",
3 | "name": "Custom Links",
4 | "version": "1.1.0",
5 | "description": "This plugin will display a button with a link in the edit content object. The link will be supplemented with data from the currently edited object. Thanks to this link, you will be able to get easy access to the preview of where the content is used.",
6 | "repository": "https://github.com/flotiq/flotiq-ui-plugins-custom-links",
7 | "url": "https://localhost:3053/index.js",
8 | "permissions": [
9 | {
10 | "ctdName": "_plugin_settings",
11 | "canRead": true,
12 | "canUpdate": true,
13 | "type": "CO"
14 | },
15 | {
16 | "ctdName": "*",
17 | "canRead": true,
18 | "type": "CTD"
19 | }
20 | ]
21 | }
22 |
--------------------------------------------------------------------------------
/plugins/i18n.js:
--------------------------------------------------------------------------------
1 | import i18n from 'i18next';
2 |
3 | i18n.init({
4 | fallbackLng: 'en',
5 | supportedLngs: ['en', 'pl'],
6 | resources: {
7 | en: {
8 | translation: {
9 | ContentTypes: 'Content types',
10 | LinkTemplate: 'Link name template',
11 | Settings: 'Settings',
12 | UrlTemplate: 'URL template',
13 | },
14 | },
15 | pl: {
16 | translation: {
17 | ContentTypes: 'Definicje typu',
18 | LinkTemplate: 'Szablon nazwy przycisku',
19 | Settings: 'Ustawienia',
20 | UrlTemplate: 'Szablon adresu URL',
21 | },
22 | },
23 | },
24 | });
25 |
26 | export default i18n;
27 |
--------------------------------------------------------------------------------
/plugins/index.js:
--------------------------------------------------------------------------------
1 | import { registerFn } from '../common/plugin-helpers';
2 | import { handlePanelPlugin, loadPanelPlugin } from './panelPlugin/panelPlugin';
3 | import { handleManagePlugin } from './managePlugin/managePlugin';
4 | import cssString from 'inline:./styles/index.css';
5 | import cssPanelString from 'inline:./styles/panel.css';
6 | import cssButtonString from 'inline:./styles/button.css';
7 | import pluginInfo from '../plugin-manifest.json';
8 |
9 | const loadStyles = () => {
10 | if (!document.getElementById(`${pluginInfo.id}-styles`)) {
11 | const style = document.createElement('style');
12 | style.id = `${pluginInfo.id}-styles`;
13 | style.textContent = cssString + cssButtonString + cssPanelString;
14 | document.head.appendChild(style);
15 | }
16 | };
17 |
18 | registerFn(pluginInfo, (handler, _client, { getLanguage }) => {
19 | loadStyles();
20 |
21 | handler.on('flotiq.plugins.manage::form-schema', (data) =>
22 | handleManagePlugin(data, pluginInfo, getLanguage),
23 | );
24 | handler.on('flotiq.form.sidebar-panel::add', (data) =>
25 | handlePanelPlugin(data, pluginInfo),
26 | );
27 | });
28 |
29 | const pluginManagePreviewRoot = document.getElementById('manage-preview-root');
30 | const pluginPanelPreviewRoot = document.getElementById('panel-preview-root');
31 |
32 | if (pluginManagePreviewRoot && pluginPanelPreviewRoot) {
33 | loadStyles();
34 | loadPanelPlugin(pluginPanelPreviewRoot);
35 | }
36 |
--------------------------------------------------------------------------------
/plugins/managePlugin/managePlugin.js:
--------------------------------------------------------------------------------
1 | import i18n from '../i18n';
2 |
3 | let configCache = null;
4 |
5 | export const handleManagePlugin = (
6 | { plugin, contentTypes, modalInstance },
7 | pluginInfo,
8 | getLanguage,
9 | ) => {
10 | if (plugin?.id !== pluginInfo.id) return null;
11 |
12 | if (configCache) return configCache;
13 |
14 | const ctds = (contentTypes || [])
15 | .filter((ctd) => !ctd.internal || ctd.name === '_media')
16 | .map(({ name, label }) => ({ value: name, label }));
17 |
18 | const language = getLanguage();
19 | if (language !== i18n.language) {
20 | i18n.changeLanguage(language);
21 | }
22 |
23 | configCache = {};
24 |
25 | configCache.schema = {
26 | id: pluginInfo.id,
27 | name: 'custom_links',
28 | label: 'Custom links',
29 | workflowId: 'generic',
30 | internal: false,
31 | schemaDefinition: {
32 | type: 'object',
33 | allOf: [
34 | {
35 | $ref: '#/components/schemas/AbstractContentTypeSchemaDefinition',
36 | },
37 | {
38 | type: 'object',
39 | properties: {
40 | settings: {
41 | type: 'array',
42 | items: {
43 | type: 'object',
44 | required: ['url_template', 'link_template'],
45 | properties: {
46 | url_template: {
47 | type: 'string',
48 | minLength: 1,
49 | },
50 | content_types: {
51 | type: 'array',
52 | },
53 | link_template: {
54 | type: 'string',
55 | minLength: 1,
56 | },
57 | },
58 | },
59 | minItems: 1,
60 | },
61 | },
62 | },
63 | ],
64 | required: [],
65 | additionalProperties: false,
66 | },
67 | metaDefinition: {
68 | order: ['settings'],
69 | propertiesConfig: {
70 | settings: {
71 | items: {
72 | order: ['url_template', 'link_template', 'content_types'],
73 | propertiesConfig: {
74 | url_template: {
75 | label: i18n.t('UrlTemplate'),
76 | unique: false,
77 | helpText: '',
78 | inputType: 'text',
79 | },
80 | content_types: {
81 | label: i18n.t('ContentTypes'),
82 | unique: false,
83 | helpText: '',
84 | inputType: 'select',
85 | isMultiple: true,
86 | useOptionsWithLabels: true,
87 | optionsWithLabels: ctds,
88 | },
89 | link_template: {
90 | label: i18n.t('LinkTemplate'),
91 | unique: false,
92 | helpText: '',
93 | inputType: 'text',
94 | },
95 | },
96 | },
97 | label: i18n.t('Settings'),
98 | unique: false,
99 | helpText: '',
100 | inputType: 'object',
101 | },
102 | },
103 | },
104 | };
105 |
106 | modalInstance.promise.then(() => (configCache = null));
107 |
108 | return configCache;
109 | };
110 |
--------------------------------------------------------------------------------
/plugins/panelPlugin/panelPlugin.js:
--------------------------------------------------------------------------------
1 | import {
2 | addElementToCache,
3 | getCachedElement,
4 | deepReadKeyValue
5 | } from '../../common/plugin-helpers';
6 |
7 | const onClick = (e) => {
8 | e.preventDefault();
9 | const url = e.target.href;
10 | window.open(url, '_blank');
11 | };
12 |
13 | export const handlePanelPlugin = (
14 | { contentType, contentObject, duplicate, create, userPlugins },
15 | pluginInfo,
16 | ) => {
17 | const customLinksSettings = userPlugins?.find(
18 | ({ id }) => id === pluginInfo.id,
19 | )?.settings;
20 |
21 | if (
22 | !contentObject ||
23 | !contentType?.name ||
24 | create ||
25 | duplicate ||
26 | !customLinksSettings
27 | )
28 | return null;
29 |
30 | const settingsForCtd = JSON.parse(customLinksSettings)?.settings?.filter(
31 | (plugin) =>
32 | plugin.content_types.length === 0 ||
33 | plugin.content_types.find((ctd) => ctd === contentType.name),
34 | );
35 |
36 | if (!settingsForCtd.length) return null;
37 |
38 | const cacheKey = `${pluginInfo.id}-${contentType.name}-${contentObject.id}`;
39 |
40 | let element = getCachedElement(cacheKey)?.element;
41 |
42 | if (!element) {
43 | element = document.createElement('div');
44 | element.setAttribute('class', 'plugin-custom-links panel');
45 | }
46 |
47 | const links = settingsForCtd.map((settings) => {
48 | const url = settings.url_template.replace(
49 | /{(?[^{}]+)}/g,
50 | (...params) => {
51 | const { key } = params[4];
52 | return deepReadKeyValue(key, contentObject);
53 | },
54 | );
55 |
56 | const displayName = settings.link_template.replace(
57 | /{(?[^{}]+)}/g,
58 | (...params) => {
59 | const { key } = params[4];
60 | return deepReadKeyValue(key, contentObject);
61 | },
62 | );
63 |
64 | const link = document.createElement('a');
65 | link.setAttribute('class', 'link-button');
66 | link.setAttribute('href', url);
67 |
68 | const span = document.createElement('span');
69 | span.textContent = displayName;
70 |
71 | link.appendChild(span);
72 | link.addEventListener('click', onClick);
73 |
74 | return link;
75 | });
76 |
77 | if (element.children.length) {
78 | element.innerHTML = '';
79 | }
80 |
81 | element.append(...links);
82 |
83 | addElementToCache(element, cacheKey);
84 |
85 | return element;
86 | };
87 |
88 | export const loadPanelPlugin = (pluginPanelPreviewRoot) => {
89 | if (pluginPanelPreviewRoot) {
90 | const element = handlePanelPlugin(
91 | {
92 | contentType: { name: 'ctd' },
93 | contentObject: { id: 'id', name: 'co name' },
94 | duplicate: false,
95 | create: false,
96 | userPlugins: [
97 | {
98 | id: 'plugin-id',
99 | settings:
100 | // eslint-disable-next-line max-len
101 | '{"settings":[{"url_template":"example.com","link_template":"Link","content_types":[]}, {"url_template":"example.com","link_template":"Link to {name}","content_types":[]}]}',
102 | },
103 | ],
104 | },
105 | { id: 'plugin-id' },
106 | );
107 |
108 | element.style.border = '1px solid #DAE3F2';
109 | element.style.maxWidth = '400px';
110 |
111 | pluginPanelPreviewRoot.appendChild(element);
112 | }
113 | };
114 |
--------------------------------------------------------------------------------
/plugins/styles/button.css:
--------------------------------------------------------------------------------
1 | .plugin-custom-links .link-button {
2 | all: unset;
3 | position: relative;
4 | display: flex;
5 | justify-content: space-between;
6 | align-items: center;
7 | transition-property: color, background-color, border-color,
8 | text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter,
9 | backdrop-filter;
10 | transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
11 | transition-duration: 200ms;
12 | line-height: 1;
13 | border-radius: 0.5rem;
14 | font-weight: 500;
15 | cursor: pointer;
16 | font-size: 0.875rem;
17 | line-height: 1.25rem;
18 | color: #141046;
19 | background-color: transparent;
20 | height: 2.5rem;
21 | border: 2px solid #0083fc;
22 | padding-left: 1.25rem;
23 | padding-right: 1.25rem;
24 | max-width: 100%;
25 | }
26 |
27 | .mode-dark .plugin-custom-links .link-button,
28 | .mode-dark .plugin-custom-links .link-button:active,
29 | .mode-dark .plugin-custom-links .link-button:focus {
30 | color: white;
31 | }
32 |
33 | .plugin-custom-links .link-button:hover {
34 | background-color: #0083fc;
35 | color: white;
36 | }
37 |
38 | .plugin-custom-links .link-button:focus {
39 | outline: 2px solid transparent;
40 | outline-offset: 2px;
41 | text-decoration: none;
42 | }
43 |
44 | .plugin-custom-links .link-button:hover,
45 | .plugin-custom-links .link-button:active {
46 | text-decoration: none;
47 | }
48 |
49 | .plugin-custom-links .link-button > span {
50 | min-width: 0;
51 | overflow: hidden;
52 | text-overflow: ellipsis;
53 | white-space: nowrap;
54 | line-height: 1.5;
55 | pointer-events: none;
56 | }
57 |
--------------------------------------------------------------------------------
/plugins/styles/index.css:
--------------------------------------------------------------------------------
1 | .plugin-custom-links * {
2 | box-sizing: border-box !important;
3 | }
4 |
--------------------------------------------------------------------------------
/plugins/styles/panel.css:
--------------------------------------------------------------------------------
1 | .plugin-custom-links.panel {
2 | position: relative;
3 | display: flex;
4 | flex-direction: row;
5 | flex-wrap: wrap;
6 | justify-content: center;
7 | align-items: center;
8 | gap: 0.5rem;
9 | padding-top: 1rem;
10 | padding-bottom: 1rem;
11 | padding-left: 0.5rem;
12 | padding-right: 0.5rem;
13 | gap: 1.25rem;
14 | border-radius: 1rem;
15 | background-color: white;
16 | }
17 |
18 | .mode-dark .plugin-custom-links.panel {
19 | background-color: #020617;
20 | }
21 |
22 | @media (min-width: 1536px) {
23 | .plugin-custom-links.panel {
24 | padding-left: 1rem;
25 | padding-right: 1rem;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/eslint-parser@^7.26.8":
6 | version "7.27.0"
7 | resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.27.0.tgz#d55e52a5ef3b164139a799dc522c338faba3507c"
8 | integrity sha512-dtnzmSjXfgL/HDgMcmsLSzyGbEosi4DrGWoCNfuI+W4IkVJw6izpTe7LtOdwAXnkDqw5yweboYCTkM2rQizCng==
9 | dependencies:
10 | "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1"
11 | eslint-visitor-keys "^2.1.0"
12 | semver "^6.3.1"
13 |
14 | "@babel/runtime@^7.23.2":
15 | version "7.24.7"
16 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12"
17 | integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==
18 | dependencies:
19 | regenerator-runtime "^0.14.0"
20 |
21 | "@esbuild/aix-ppc64@0.25.2":
22 | version "0.25.2"
23 | resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz#b87036f644f572efb2b3c75746c97d1d2d87ace8"
24 | integrity sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==
25 |
26 | "@esbuild/android-arm64@0.25.2":
27 | version "0.25.2"
28 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz#5ca7dc20a18f18960ad8d5e6ef5cf7b0a256e196"
29 | integrity sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==
30 |
31 | "@esbuild/android-arm@0.25.2":
32 | version "0.25.2"
33 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.2.tgz#3c49f607b7082cde70c6ce0c011c362c57a194ee"
34 | integrity sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==
35 |
36 | "@esbuild/android-x64@0.25.2":
37 | version "0.25.2"
38 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.2.tgz#8a00147780016aff59e04f1036e7cb1b683859e2"
39 | integrity sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==
40 |
41 | "@esbuild/darwin-arm64@0.25.2":
42 | version "0.25.2"
43 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz#486efe7599a8d90a27780f2bb0318d9a85c6c423"
44 | integrity sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==
45 |
46 | "@esbuild/darwin-x64@0.25.2":
47 | version "0.25.2"
48 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz#95ee222aacf668c7a4f3d7ee87b3240a51baf374"
49 | integrity sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==
50 |
51 | "@esbuild/freebsd-arm64@0.25.2":
52 | version "0.25.2"
53 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz#67efceda8554b6fc6a43476feba068fb37fa2ef6"
54 | integrity sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==
55 |
56 | "@esbuild/freebsd-x64@0.25.2":
57 | version "0.25.2"
58 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz#88a9d7ecdd3adadbfe5227c2122d24816959b809"
59 | integrity sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==
60 |
61 | "@esbuild/linux-arm64@0.25.2":
62 | version "0.25.2"
63 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz#87be1099b2bbe61282333b084737d46bc8308058"
64 | integrity sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==
65 |
66 | "@esbuild/linux-arm@0.25.2":
67 | version "0.25.2"
68 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz#72a285b0fe64496e191fcad222185d7bf9f816f6"
69 | integrity sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==
70 |
71 | "@esbuild/linux-ia32@0.25.2":
72 | version "0.25.2"
73 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz#337a87a4c4dd48a832baed5cbb022be20809d737"
74 | integrity sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==
75 |
76 | "@esbuild/linux-loong64@0.25.2":
77 | version "0.25.2"
78 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz#1b81aa77103d6b8a8cfa7c094ed3d25c7579ba2a"
79 | integrity sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==
80 |
81 | "@esbuild/linux-mips64el@0.25.2":
82 | version "0.25.2"
83 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz#afbe380b6992e7459bf7c2c3b9556633b2e47f30"
84 | integrity sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==
85 |
86 | "@esbuild/linux-ppc64@0.25.2":
87 | version "0.25.2"
88 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz#6bf8695cab8a2b135cca1aa555226dc932d52067"
89 | integrity sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==
90 |
91 | "@esbuild/linux-riscv64@0.25.2":
92 | version "0.25.2"
93 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz#43c2d67a1a39199fb06ba978aebb44992d7becc3"
94 | integrity sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==
95 |
96 | "@esbuild/linux-s390x@0.25.2":
97 | version "0.25.2"
98 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz#419e25737ec815c6dce2cd20d026e347cbb7a602"
99 | integrity sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==
100 |
101 | "@esbuild/linux-x64@0.25.2":
102 | version "0.25.2"
103 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz#22451f6edbba84abe754a8cbd8528ff6e28d9bcb"
104 | integrity sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==
105 |
106 | "@esbuild/netbsd-arm64@0.25.2":
107 | version "0.25.2"
108 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz#744affd3b8d8236b08c5210d828b0698a62c58ac"
109 | integrity sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==
110 |
111 | "@esbuild/netbsd-x64@0.25.2":
112 | version "0.25.2"
113 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz#dbbe7521fd6d7352f34328d676af923fc0f8a78f"
114 | integrity sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==
115 |
116 | "@esbuild/openbsd-arm64@0.25.2":
117 | version "0.25.2"
118 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz#f9caf987e3e0570500832b487ce3039ca648ce9f"
119 | integrity sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==
120 |
121 | "@esbuild/openbsd-x64@0.25.2":
122 | version "0.25.2"
123 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz#d2bb6a0f8ffea7b394bb43dfccbb07cabd89f768"
124 | integrity sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==
125 |
126 | "@esbuild/sunos-x64@0.25.2":
127 | version "0.25.2"
128 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz#49b437ed63fe333b92137b7a0c65a65852031afb"
129 | integrity sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==
130 |
131 | "@esbuild/win32-arm64@0.25.2":
132 | version "0.25.2"
133 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz#081424168463c7d6c7fb78f631aede0c104373cf"
134 | integrity sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==
135 |
136 | "@esbuild/win32-ia32@0.25.2":
137 | version "0.25.2"
138 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz#3f9e87143ddd003133d21384944a6c6cadf9693f"
139 | integrity sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==
140 |
141 | "@esbuild/win32-x64@0.25.2":
142 | version "0.25.2"
143 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz#839f72c2decd378f86b8f525e1979a97b920c67d"
144 | integrity sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==
145 |
146 | "@eslint-community/eslint-utils@^4.2.0":
147 | version "4.4.0"
148 | resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
149 | integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
150 | dependencies:
151 | eslint-visitor-keys "^3.3.0"
152 |
153 | "@eslint-community/regexpp@^4.6.1":
154 | version "4.12.1"
155 | resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0"
156 | integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==
157 |
158 | "@eslint/eslintrc@^2.1.4":
159 | version "2.1.4"
160 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad"
161 | integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==
162 | dependencies:
163 | ajv "^6.12.4"
164 | debug "^4.3.2"
165 | espree "^9.6.0"
166 | globals "^13.19.0"
167 | ignore "^5.2.0"
168 | import-fresh "^3.2.1"
169 | js-yaml "^4.1.0"
170 | minimatch "^3.1.2"
171 | strip-json-comments "^3.1.1"
172 |
173 | "@eslint/js@8.57.1":
174 | version "8.57.1"
175 | resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2"
176 | integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==
177 |
178 | "@humanwhocodes/config-array@^0.13.0":
179 | version "0.13.0"
180 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748"
181 | integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==
182 | dependencies:
183 | "@humanwhocodes/object-schema" "^2.0.3"
184 | debug "^4.3.1"
185 | minimatch "^3.0.5"
186 |
187 | "@humanwhocodes/module-importer@^1.0.1":
188 | version "1.0.1"
189 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
190 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
191 |
192 | "@humanwhocodes/object-schema@^2.0.3":
193 | version "2.0.3"
194 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3"
195 | integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
196 |
197 | "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1":
198 | version "5.1.1-v1"
199 | resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129"
200 | integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==
201 | dependencies:
202 | eslint-scope "5.1.1"
203 |
204 | "@nodelib/fs.scandir@2.1.5":
205 | version "2.1.5"
206 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
207 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
208 | dependencies:
209 | "@nodelib/fs.stat" "2.0.5"
210 | run-parallel "^1.1.9"
211 |
212 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
213 | version "2.0.5"
214 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
215 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
216 |
217 | "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
218 | version "1.2.8"
219 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
220 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
221 | dependencies:
222 | "@nodelib/fs.scandir" "2.1.5"
223 | fastq "^1.6.0"
224 |
225 | "@ungap/structured-clone@^1.2.0":
226 | version "1.3.0"
227 | resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8"
228 | integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==
229 |
230 | acorn-jsx@^5.3.2:
231 | version "5.3.2"
232 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
233 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
234 |
235 | acorn@^8.9.0:
236 | version "8.14.1"
237 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb"
238 | integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==
239 |
240 | ajv@^6.12.4:
241 | version "6.12.6"
242 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
243 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
244 | dependencies:
245 | fast-deep-equal "^3.1.1"
246 | fast-json-stable-stringify "^2.0.0"
247 | json-schema-traverse "^0.4.1"
248 | uri-js "^4.2.2"
249 |
250 | ansi-regex@^5.0.1:
251 | version "5.0.1"
252 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
253 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
254 |
255 | ansi-styles@^4.1.0:
256 | version "4.3.0"
257 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
258 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
259 | dependencies:
260 | color-convert "^2.0.1"
261 |
262 | anymatch@~3.1.2:
263 | version "3.1.3"
264 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
265 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
266 | dependencies:
267 | normalize-path "^3.0.0"
268 | picomatch "^2.0.4"
269 |
270 | argparse@^2.0.1:
271 | version "2.0.1"
272 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
273 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
274 |
275 | array-union@^2.1.0:
276 | version "2.1.0"
277 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
278 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
279 |
280 | balanced-match@^1.0.0:
281 | version "1.0.2"
282 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
283 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
284 |
285 | binary-extensions@^2.0.0:
286 | version "2.3.0"
287 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522"
288 | integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
289 |
290 | brace-expansion@^1.1.7:
291 | version "1.1.11"
292 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
293 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
294 | dependencies:
295 | balanced-match "^1.0.0"
296 | concat-map "0.0.1"
297 |
298 | braces@^3.0.3, braces@~3.0.2:
299 | version "3.0.3"
300 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
301 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
302 | dependencies:
303 | fill-range "^7.1.1"
304 |
305 | callsites@^3.0.0:
306 | version "3.1.0"
307 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
308 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
309 |
310 | chalk@^4.0.0, chalk@^4.1.2:
311 | version "4.1.2"
312 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
313 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
314 | dependencies:
315 | ansi-styles "^4.1.0"
316 | supports-color "^7.1.0"
317 |
318 | chalk@^5.4.1:
319 | version "5.4.1"
320 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8"
321 | integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==
322 |
323 | chokidar@^3.5.3:
324 | version "3.6.0"
325 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
326 | integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
327 | dependencies:
328 | anymatch "~3.1.2"
329 | braces "~3.0.2"
330 | glob-parent "~5.1.2"
331 | is-binary-path "~2.1.0"
332 | is-glob "~4.0.1"
333 | normalize-path "~3.0.0"
334 | readdirp "~3.6.0"
335 | optionalDependencies:
336 | fsevents "~2.3.2"
337 |
338 | color-convert@^2.0.1:
339 | version "2.0.1"
340 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
341 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
342 | dependencies:
343 | color-name "~1.1.4"
344 |
345 | color-name@~1.1.4:
346 | version "1.1.4"
347 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
348 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
349 |
350 | concat-map@0.0.1:
351 | version "0.0.1"
352 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
353 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
354 |
355 | cross-spawn@^7.0.2:
356 | version "7.0.6"
357 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
358 | integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
359 | dependencies:
360 | path-key "^3.1.0"
361 | shebang-command "^2.0.0"
362 | which "^2.0.1"
363 |
364 | cuint@^0.2.2:
365 | version "0.2.2"
366 | resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b"
367 | integrity sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==
368 |
369 | debug@^4.3.1, debug@^4.3.2:
370 | version "4.3.5"
371 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e"
372 | integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==
373 | dependencies:
374 | ms "2.1.2"
375 |
376 | deep-is@^0.1.3:
377 | version "0.1.4"
378 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
379 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
380 |
381 | dir-glob@^3.0.1:
382 | version "3.0.1"
383 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
384 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
385 | dependencies:
386 | path-type "^4.0.0"
387 |
388 | doctrine@^3.0.0:
389 | version "3.0.0"
390 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
391 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
392 | dependencies:
393 | esutils "^2.0.2"
394 |
395 | esbuild-plugin-copy@^2.1.1:
396 | version "2.1.1"
397 | resolved "https://registry.yarnpkg.com/esbuild-plugin-copy/-/esbuild-plugin-copy-2.1.1.tgz#638308ecfd679e4c7c76b71c62f7dd9a4cc7f901"
398 | integrity sha512-Bk66jpevTcV8KMFzZI1P7MZKZ+uDcrZm2G2egZ2jNIvVnivDpodZI+/KnpL3Jnap0PBdIHU7HwFGB8r+vV5CVw==
399 | dependencies:
400 | chalk "^4.1.2"
401 | chokidar "^3.5.3"
402 | fs-extra "^10.0.1"
403 | globby "^11.0.3"
404 |
405 | esbuild-plugin-eslint@^0.3.12:
406 | version "0.3.12"
407 | resolved "https://registry.yarnpkg.com/esbuild-plugin-eslint/-/esbuild-plugin-eslint-0.3.12.tgz#729cc6661acc5f3640078163e32e76efdf687129"
408 | integrity sha512-n37Nn6vmh2tdGMnm6GZebiYJDrqERAReyvLFwdCWCw15ZvAu251i6cIeJWoVB8AiS+j3N97gylvf58ysIwii4g==
409 |
410 | esbuild-plugin-inline-import@^1.1.0:
411 | version "1.1.0"
412 | resolved "https://registry.yarnpkg.com/esbuild-plugin-inline-import/-/esbuild-plugin-inline-import-1.1.0.tgz#9a581a50918021c48962da2309aecf24d3fb9fcd"
413 | integrity sha512-b0xX4tPKBdRjX1CkzpnULpEdeTo9vxD+wf83PKvgUYnOEaJfVxLey4q+sfTUPAdDnRRYasJsQUgQW7/e2Gm5Dw==
414 |
415 | esbuild@^0.25.1:
416 | version "0.25.2"
417 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.2.tgz#55a1d9ebcb3aa2f95e8bba9e900c1a5061bc168b"
418 | integrity sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==
419 | optionalDependencies:
420 | "@esbuild/aix-ppc64" "0.25.2"
421 | "@esbuild/android-arm" "0.25.2"
422 | "@esbuild/android-arm64" "0.25.2"
423 | "@esbuild/android-x64" "0.25.2"
424 | "@esbuild/darwin-arm64" "0.25.2"
425 | "@esbuild/darwin-x64" "0.25.2"
426 | "@esbuild/freebsd-arm64" "0.25.2"
427 | "@esbuild/freebsd-x64" "0.25.2"
428 | "@esbuild/linux-arm" "0.25.2"
429 | "@esbuild/linux-arm64" "0.25.2"
430 | "@esbuild/linux-ia32" "0.25.2"
431 | "@esbuild/linux-loong64" "0.25.2"
432 | "@esbuild/linux-mips64el" "0.25.2"
433 | "@esbuild/linux-ppc64" "0.25.2"
434 | "@esbuild/linux-riscv64" "0.25.2"
435 | "@esbuild/linux-s390x" "0.25.2"
436 | "@esbuild/linux-x64" "0.25.2"
437 | "@esbuild/netbsd-arm64" "0.25.2"
438 | "@esbuild/netbsd-x64" "0.25.2"
439 | "@esbuild/openbsd-arm64" "0.25.2"
440 | "@esbuild/openbsd-x64" "0.25.2"
441 | "@esbuild/sunos-x64" "0.25.2"
442 | "@esbuild/win32-arm64" "0.25.2"
443 | "@esbuild/win32-ia32" "0.25.2"
444 | "@esbuild/win32-x64" "0.25.2"
445 |
446 | escape-string-regexp@^4.0.0:
447 | version "4.0.0"
448 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
449 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
450 |
451 | eslint-config-prettier@^10.1.1:
452 | version "10.1.1"
453 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-10.1.1.tgz#cf0ff6e5c4e7e15f129f1f1ce2a5ecba92dec132"
454 | integrity sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==
455 |
456 | eslint-scope@5.1.1:
457 | version "5.1.1"
458 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
459 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
460 | dependencies:
461 | esrecurse "^4.3.0"
462 | estraverse "^4.1.1"
463 |
464 | eslint-scope@^7.2.2:
465 | version "7.2.2"
466 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f"
467 | integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
468 | dependencies:
469 | esrecurse "^4.3.0"
470 | estraverse "^5.2.0"
471 |
472 | eslint-visitor-keys@^2.1.0:
473 | version "2.1.0"
474 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
475 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
476 |
477 | eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
478 | version "3.4.3"
479 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
480 | integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
481 |
482 | eslint@^8.57.1:
483 | version "8.57.1"
484 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9"
485 | integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==
486 | dependencies:
487 | "@eslint-community/eslint-utils" "^4.2.0"
488 | "@eslint-community/regexpp" "^4.6.1"
489 | "@eslint/eslintrc" "^2.1.4"
490 | "@eslint/js" "8.57.1"
491 | "@humanwhocodes/config-array" "^0.13.0"
492 | "@humanwhocodes/module-importer" "^1.0.1"
493 | "@nodelib/fs.walk" "^1.2.8"
494 | "@ungap/structured-clone" "^1.2.0"
495 | ajv "^6.12.4"
496 | chalk "^4.0.0"
497 | cross-spawn "^7.0.2"
498 | debug "^4.3.2"
499 | doctrine "^3.0.0"
500 | escape-string-regexp "^4.0.0"
501 | eslint-scope "^7.2.2"
502 | eslint-visitor-keys "^3.4.3"
503 | espree "^9.6.1"
504 | esquery "^1.4.2"
505 | esutils "^2.0.2"
506 | fast-deep-equal "^3.1.3"
507 | file-entry-cache "^6.0.1"
508 | find-up "^5.0.0"
509 | glob-parent "^6.0.2"
510 | globals "^13.19.0"
511 | graphemer "^1.4.0"
512 | ignore "^5.2.0"
513 | imurmurhash "^0.1.4"
514 | is-glob "^4.0.0"
515 | is-path-inside "^3.0.3"
516 | js-yaml "^4.1.0"
517 | json-stable-stringify-without-jsonify "^1.0.1"
518 | levn "^0.4.1"
519 | lodash.merge "^4.6.2"
520 | minimatch "^3.1.2"
521 | natural-compare "^1.4.0"
522 | optionator "^0.9.3"
523 | strip-ansi "^6.0.1"
524 | text-table "^0.2.0"
525 |
526 | espree@^9.6.0, espree@^9.6.1:
527 | version "9.6.1"
528 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
529 | integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
530 | dependencies:
531 | acorn "^8.9.0"
532 | acorn-jsx "^5.3.2"
533 | eslint-visitor-keys "^3.4.1"
534 |
535 | esquery@^1.4.2:
536 | version "1.6.0"
537 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
538 | integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
539 | dependencies:
540 | estraverse "^5.1.0"
541 |
542 | esrecurse@^4.3.0:
543 | version "4.3.0"
544 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
545 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
546 | dependencies:
547 | estraverse "^5.2.0"
548 |
549 | estraverse@^4.1.1:
550 | version "4.3.0"
551 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
552 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
553 |
554 | estraverse@^5.1.0, estraverse@^5.2.0:
555 | version "5.3.0"
556 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
557 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
558 |
559 | esutils@^2.0.2:
560 | version "2.0.3"
561 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
562 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
563 |
564 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
565 | version "3.1.3"
566 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
567 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
568 |
569 | fast-glob@^3.2.9:
570 | version "3.3.2"
571 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
572 | integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
573 | dependencies:
574 | "@nodelib/fs.stat" "^2.0.2"
575 | "@nodelib/fs.walk" "^1.2.3"
576 | glob-parent "^5.1.2"
577 | merge2 "^1.3.0"
578 | micromatch "^4.0.4"
579 |
580 | fast-json-stable-stringify@^2.0.0:
581 | version "2.1.0"
582 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
583 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
584 |
585 | fast-levenshtein@^2.0.6:
586 | version "2.0.6"
587 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
588 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
589 |
590 | fastq@^1.6.0:
591 | version "1.17.1"
592 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47"
593 | integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==
594 | dependencies:
595 | reusify "^1.0.4"
596 |
597 | file-entry-cache@^6.0.1:
598 | version "6.0.1"
599 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
600 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
601 | dependencies:
602 | flat-cache "^3.0.4"
603 |
604 | fill-range@^7.1.1:
605 | version "7.1.1"
606 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
607 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
608 | dependencies:
609 | to-regex-range "^5.0.1"
610 |
611 | find-up@^5.0.0:
612 | version "5.0.0"
613 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
614 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
615 | dependencies:
616 | locate-path "^6.0.0"
617 | path-exists "^4.0.0"
618 |
619 | flat-cache@^3.0.4:
620 | version "3.2.0"
621 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee"
622 | integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==
623 | dependencies:
624 | flatted "^3.2.9"
625 | keyv "^4.5.3"
626 | rimraf "^3.0.2"
627 |
628 | flatted@^3.2.9:
629 | version "3.3.1"
630 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
631 | integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
632 |
633 | fs-extra@^10.0.1:
634 | version "10.1.0"
635 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
636 | integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
637 | dependencies:
638 | graceful-fs "^4.2.0"
639 | jsonfile "^6.0.1"
640 | universalify "^2.0.0"
641 |
642 | fs.realpath@^1.0.0:
643 | version "1.0.0"
644 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
645 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
646 |
647 | fsevents@~2.3.2:
648 | version "2.3.3"
649 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
650 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
651 |
652 | glob-parent@^5.1.2, glob-parent@~5.1.2:
653 | version "5.1.2"
654 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
655 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
656 | dependencies:
657 | is-glob "^4.0.1"
658 |
659 | glob-parent@^6.0.2:
660 | version "6.0.2"
661 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
662 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
663 | dependencies:
664 | is-glob "^4.0.3"
665 |
666 | glob@^7.1.3:
667 | version "7.2.3"
668 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
669 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
670 | dependencies:
671 | fs.realpath "^1.0.0"
672 | inflight "^1.0.4"
673 | inherits "2"
674 | minimatch "^3.1.1"
675 | once "^1.3.0"
676 | path-is-absolute "^1.0.0"
677 |
678 | globals@^13.19.0:
679 | version "13.24.0"
680 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171"
681 | integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
682 | dependencies:
683 | type-fest "^0.20.2"
684 |
685 | globby@^11.0.3:
686 | version "11.1.0"
687 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
688 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
689 | dependencies:
690 | array-union "^2.1.0"
691 | dir-glob "^3.0.1"
692 | fast-glob "^3.2.9"
693 | ignore "^5.2.0"
694 | merge2 "^1.4.1"
695 | slash "^3.0.0"
696 |
697 | graceful-fs@^4.1.6, graceful-fs@^4.2.0:
698 | version "4.2.11"
699 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
700 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
701 |
702 | graphemer@^1.4.0:
703 | version "1.4.0"
704 | resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
705 | integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
706 |
707 | has-flag@^4.0.0:
708 | version "4.0.0"
709 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
710 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
711 |
712 | i18next@^23.10.1:
713 | version "23.11.5"
714 | resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.11.5.tgz#d71eb717a7e65498d87d0594f2664237f9e361ef"
715 | integrity sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA==
716 | dependencies:
717 | "@babel/runtime" "^7.23.2"
718 |
719 | ignore@^5.2.0:
720 | version "5.3.1"
721 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
722 | integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
723 |
724 | import-fresh@^3.2.1:
725 | version "3.3.0"
726 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
727 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
728 | dependencies:
729 | parent-module "^1.0.0"
730 | resolve-from "^4.0.0"
731 |
732 | imurmurhash@^0.1.4:
733 | version "0.1.4"
734 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
735 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
736 |
737 | inflight@^1.0.4:
738 | version "1.0.6"
739 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
740 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
741 | dependencies:
742 | once "^1.3.0"
743 | wrappy "1"
744 |
745 | inherits@2:
746 | version "2.0.4"
747 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
748 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
749 |
750 | is-binary-path@~2.1.0:
751 | version "2.1.0"
752 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
753 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
754 | dependencies:
755 | binary-extensions "^2.0.0"
756 |
757 | is-extglob@^2.1.1:
758 | version "2.1.1"
759 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
760 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
761 |
762 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
763 | version "4.0.3"
764 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
765 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
766 | dependencies:
767 | is-extglob "^2.1.1"
768 |
769 | is-number@^7.0.0:
770 | version "7.0.0"
771 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
772 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
773 |
774 | is-path-inside@^3.0.3:
775 | version "3.0.3"
776 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
777 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
778 |
779 | isexe@^2.0.0:
780 | version "2.0.0"
781 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
782 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
783 |
784 | js-yaml@^4.1.0:
785 | version "4.1.0"
786 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
787 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
788 | dependencies:
789 | argparse "^2.0.1"
790 |
791 | json-buffer@3.0.1:
792 | version "3.0.1"
793 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
794 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
795 |
796 | json-schema-traverse@^0.4.1:
797 | version "0.4.1"
798 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
799 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
800 |
801 | json-stable-stringify-without-jsonify@^1.0.1:
802 | version "1.0.1"
803 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
804 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
805 |
806 | jsonfile@^6.0.1:
807 | version "6.1.0"
808 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
809 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
810 | dependencies:
811 | universalify "^2.0.0"
812 | optionalDependencies:
813 | graceful-fs "^4.1.6"
814 |
815 | keyv@^4.5.3:
816 | version "4.5.4"
817 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
818 | integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
819 | dependencies:
820 | json-buffer "3.0.1"
821 |
822 | levn@^0.4.1:
823 | version "0.4.1"
824 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
825 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
826 | dependencies:
827 | prelude-ls "^1.2.1"
828 | type-check "~0.4.0"
829 |
830 | locate-path@^6.0.0:
831 | version "6.0.0"
832 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
833 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
834 | dependencies:
835 | p-locate "^5.0.0"
836 |
837 | lodash.merge@^4.6.2:
838 | version "4.6.2"
839 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
840 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
841 |
842 | make-dir@~3.1.0:
843 | version "3.1.0"
844 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
845 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
846 | dependencies:
847 | semver "^6.0.0"
848 |
849 | merge2@^1.3.0, merge2@^1.4.1:
850 | version "1.4.1"
851 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
852 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
853 |
854 | micromatch@^4.0.4:
855 | version "4.0.7"
856 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5"
857 | integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==
858 | dependencies:
859 | braces "^3.0.3"
860 | picomatch "^2.3.1"
861 |
862 | mime@~2.5.2:
863 | version "2.5.2"
864 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe"
865 | integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==
866 |
867 | minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
868 | version "3.1.2"
869 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
870 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
871 | dependencies:
872 | brace-expansion "^1.1.7"
873 |
874 | minimatch@~3.0.4:
875 | version "3.0.8"
876 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.8.tgz#5e6a59bd11e2ab0de1cfb843eb2d82e546c321c1"
877 | integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==
878 | dependencies:
879 | brace-expansion "^1.1.7"
880 |
881 | ms@2.1.2:
882 | version "2.1.2"
883 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
884 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
885 |
886 | nanoid@^3.3.8:
887 | version "3.3.11"
888 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b"
889 | integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==
890 |
891 | natural-compare@^1.4.0:
892 | version "1.4.0"
893 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
894 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
895 |
896 | normalize-path@^3.0.0, normalize-path@~3.0.0:
897 | version "3.0.0"
898 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
899 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
900 |
901 | once@^1.3.0:
902 | version "1.4.0"
903 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
904 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
905 | dependencies:
906 | wrappy "1"
907 |
908 | optionator@^0.9.3:
909 | version "0.9.4"
910 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734"
911 | integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==
912 | dependencies:
913 | deep-is "^0.1.3"
914 | fast-levenshtein "^2.0.6"
915 | levn "^0.4.1"
916 | prelude-ls "^1.2.1"
917 | type-check "^0.4.0"
918 | word-wrap "^1.2.5"
919 |
920 | p-limit@^3.0.2:
921 | version "3.1.0"
922 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
923 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
924 | dependencies:
925 | yocto-queue "^0.1.0"
926 |
927 | p-locate@^5.0.0:
928 | version "5.0.0"
929 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
930 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
931 | dependencies:
932 | p-limit "^3.0.2"
933 |
934 | parent-module@^1.0.0:
935 | version "1.0.1"
936 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
937 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
938 | dependencies:
939 | callsites "^3.0.0"
940 |
941 | path-exists@^4.0.0:
942 | version "4.0.0"
943 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
944 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
945 |
946 | path-is-absolute@^1.0.0:
947 | version "1.0.1"
948 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
949 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
950 |
951 | path-key@^3.1.0:
952 | version "3.1.1"
953 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
954 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
955 |
956 | path-type@^4.0.0:
957 | version "4.0.0"
958 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
959 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
960 |
961 | picocolors@^1.1.1:
962 | version "1.1.1"
963 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
964 | integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
965 |
966 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
967 | version "2.3.1"
968 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
969 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
970 |
971 | postcss-url@^10.1.3:
972 | version "10.1.3"
973 | resolved "https://registry.yarnpkg.com/postcss-url/-/postcss-url-10.1.3.tgz#54120cc910309e2475ec05c2cfa8f8a2deafdf1e"
974 | integrity sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw==
975 | dependencies:
976 | make-dir "~3.1.0"
977 | mime "~2.5.2"
978 | minimatch "~3.0.4"
979 | xxhashjs "~0.2.2"
980 |
981 | postcss@^8.5.3:
982 | version "8.5.3"
983 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb"
984 | integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==
985 | dependencies:
986 | nanoid "^3.3.8"
987 | picocolors "^1.1.1"
988 | source-map-js "^1.2.1"
989 |
990 | prelude-ls@^1.2.1:
991 | version "1.2.1"
992 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
993 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
994 |
995 | prettier@^3.5.3:
996 | version "3.5.3"
997 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5"
998 | integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==
999 |
1000 | punycode@^2.1.0:
1001 | version "2.3.1"
1002 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
1003 | integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
1004 |
1005 | queue-microtask@^1.2.2:
1006 | version "1.2.3"
1007 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
1008 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
1009 |
1010 | readdirp@~3.6.0:
1011 | version "3.6.0"
1012 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
1013 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
1014 | dependencies:
1015 | picomatch "^2.2.1"
1016 |
1017 | regenerator-runtime@^0.14.0:
1018 | version "0.14.1"
1019 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
1020 | integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
1021 |
1022 | resolve-from@^4.0.0:
1023 | version "4.0.0"
1024 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
1025 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
1026 |
1027 | reusify@^1.0.4:
1028 | version "1.0.4"
1029 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
1030 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
1031 |
1032 | rimraf@^3.0.2:
1033 | version "3.0.2"
1034 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
1035 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
1036 | dependencies:
1037 | glob "^7.1.3"
1038 |
1039 | run-parallel@^1.1.9:
1040 | version "1.2.0"
1041 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
1042 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
1043 | dependencies:
1044 | queue-microtask "^1.2.2"
1045 |
1046 | semver@^6.0.0, semver@^6.3.1:
1047 | version "6.3.1"
1048 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
1049 | integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
1050 |
1051 | shebang-command@^2.0.0:
1052 | version "2.0.0"
1053 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
1054 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
1055 | dependencies:
1056 | shebang-regex "^3.0.0"
1057 |
1058 | shebang-regex@^3.0.0:
1059 | version "3.0.0"
1060 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
1061 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
1062 |
1063 | slash@^3.0.0:
1064 | version "3.0.0"
1065 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
1066 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
1067 |
1068 | source-map-js@^1.2.1:
1069 | version "1.2.1"
1070 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
1071 | integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
1072 |
1073 | strip-ansi@^6.0.1:
1074 | version "6.0.1"
1075 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
1076 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
1077 | dependencies:
1078 | ansi-regex "^5.0.1"
1079 |
1080 | strip-json-comments@^3.1.1:
1081 | version "3.1.1"
1082 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
1083 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
1084 |
1085 | supports-color@^7.1.0:
1086 | version "7.2.0"
1087 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
1088 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
1089 | dependencies:
1090 | has-flag "^4.0.0"
1091 |
1092 | text-table@^0.2.0:
1093 | version "0.2.0"
1094 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
1095 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
1096 |
1097 | to-regex-range@^5.0.1:
1098 | version "5.0.1"
1099 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
1100 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
1101 | dependencies:
1102 | is-number "^7.0.0"
1103 |
1104 | type-check@^0.4.0, type-check@~0.4.0:
1105 | version "0.4.0"
1106 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
1107 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
1108 | dependencies:
1109 | prelude-ls "^1.2.1"
1110 |
1111 | type-fest@^0.20.2:
1112 | version "0.20.2"
1113 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
1114 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
1115 |
1116 | universalify@^2.0.0:
1117 | version "2.0.1"
1118 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
1119 | integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
1120 |
1121 | uri-js@^4.2.2:
1122 | version "4.4.1"
1123 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
1124 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
1125 | dependencies:
1126 | punycode "^2.1.0"
1127 |
1128 | which@^2.0.1:
1129 | version "2.0.2"
1130 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
1131 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
1132 | dependencies:
1133 | isexe "^2.0.0"
1134 |
1135 | word-wrap@^1.2.5:
1136 | version "1.2.5"
1137 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
1138 | integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
1139 |
1140 | wrappy@1:
1141 | version "1.0.2"
1142 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1143 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
1144 |
1145 | xxhashjs@~0.2.2:
1146 | version "0.2.2"
1147 | resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8"
1148 | integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==
1149 | dependencies:
1150 | cuint "^0.2.2"
1151 |
1152 | yocto-queue@^0.1.0:
1153 | version "0.1.0"
1154 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
1155 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
1156 |
--------------------------------------------------------------------------------