Browse Source

ci: bundlemon (#31)

* ci: add bundlemon

* fix: build command

* fix: config

* refactor: config
Nick Frostbutter 9 months ago
parent
commit
5dd8900ad6
4 changed files with 184 additions and 0 deletions
  1. 14 0
      .bundlemonrc.json
  2. 25 0
      .github/workflows/bundlesize.yml
  3. 1 0
      package.json
  4. 144 0
      pnpm-lock.yaml

+ 14 - 0
.bundlemonrc.json

@@ -0,0 +1,14 @@
+{
+  "baseDir": "./packages",
+  "files": [
+    {
+      "friendlyName": "gill production bundle",
+      "path": "gill/dist/index.production.min.js"
+    },
+    {
+      "path": "**/dist/**/index.*.mjs"
+    }
+  ],
+  "includeCommitMessage": true,
+  "reportOutput": ["github"]
+}

+ 25 - 0
.github/workflows/bundlesize.yml

@@ -0,0 +1,25 @@
+name: Compare bundle size
+
+on:
+  push:
+    branches: [master]
+  pull_request:
+    types: [synchronize, opened, reopened]
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+
+      - name: Install Dependencies
+        uses: ./.github/workflows/actions/install-dependencies
+        with:
+          version: current
+
+      - name: Build
+        run: pnpm build
+
+      - name: BundleMon
+        uses: lironer/bundlemon-action@v1

+ 1 - 0
package.json

@@ -43,6 +43,7 @@
     "@typescript-eslint/parser": "^8.15.0",
     "@typescript-eslint/parser": "^8.15.0",
     "agadoo": "^3.0.0",
     "agadoo": "^3.0.0",
     "browserslist-to-esbuild": "^2.1.1",
     "browserslist-to-esbuild": "^2.1.1",
+    "bundlemon": "^3.1.0",
     "eslint": "^9.14.0",
     "eslint": "^9.14.0",
     "eslint-plugin-jest": "^28.9.0",
     "eslint-plugin-jest": "^28.9.0",
     "eslint-plugin-react-hooks": "^5.0.0",
     "eslint-plugin-react-hooks": "^5.0.0",

+ 144 - 0
pnpm-lock.yaml

@@ -47,6 +47,9 @@ importers:
       browserslist-to-esbuild:
       browserslist-to-esbuild:
         specifier: ^2.1.1
         specifier: ^2.1.1
         version: 2.1.1(browserslist@4.24.2)
         version: 2.1.1(browserslist@4.24.2)
+      bundlemon:
+        specifier: ^3.1.0
+        version: 3.1.0(typescript@5.6.3)
       eslint:
       eslint:
         specifier: ^9.14.0
         specifier: ^9.14.0
         version: 9.15.0
         version: 9.15.0
@@ -1556,6 +1559,9 @@ packages:
   '@types/json-schema@7.0.15':
   '@types/json-schema@7.0.15':
     resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
     resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
 
 
+  '@types/lodash@4.17.15':
+    resolution: {integrity: sha512-w/P33JFeySuhN6JLkysYUK2gEmy9kHHFN7E8ro0tkfmlDOgxBDzWEZ/J8cWA+fHqFevpswDTFZnDx+R9lbL6xw==}
+
   '@types/node@12.20.55':
   '@types/node@12.20.55':
     resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
     resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
 
 
@@ -1869,6 +1875,11 @@ packages:
   asynckit@0.4.0:
   asynckit@0.4.0:
     resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
     resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
 
 
+  axios-retry@4.5.0:
+    resolution: {integrity: sha512-aR99oXhpEDGo0UuAlYcn2iGRds30k366Zfa05XWScR9QaQD4JYiP3/1Qt1u7YlefUOK+cn0CcwoL1oefavQUlQ==}
+    peerDependencies:
+      axios: 0.x || 1.x
+
   axios@1.7.8:
   axios@1.7.8:
     resolution: {integrity: sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==}
     resolution: {integrity: sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==}
 
 
@@ -1918,6 +1929,10 @@ packages:
     resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
     resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
     engines: {node: '>=8'}
     engines: {node: '>=8'}
 
 
+  brotli-size@4.0.0:
+    resolution: {integrity: sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA==}
+    engines: {node: '>= 10.16.0'}
+
   browser-process-hrtime@1.0.0:
   browser-process-hrtime@1.0.0:
     resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==}
     resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==}
 
 
@@ -1949,6 +1964,19 @@ packages:
     peerDependencies:
     peerDependencies:
       esbuild: '>=0.18'
       esbuild: '>=0.18'
 
 
+  bundlemon-utils@2.0.1:
+    resolution: {integrity: sha512-7wxHoOlzICvQyMRfVqoBpnM5pJt1JdcUxsYPNiFx3RlVmUEANh2xdEyoyTsVCqzeJC3rn+AbPuiermBwA3szAQ==}
+    engines: {node: '>=18'}
+
+  bundlemon@3.1.0:
+    resolution: {integrity: sha512-8PAomH/fzAD/aXUKmphKmPm4Tl2L7mo51AAalO0EVAZE0cik58AM2x0CVdw4jutD069U2rSyRQstxHo2NEr+9Q==}
+    engines: {node: '>=18'}
+    hasBin: true
+
+  bytes@3.1.2:
+    resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+    engines: {node: '>= 0.8'}
+
   cac@6.7.14:
   cac@6.7.14:
     resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
     resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
     engines: {node: '>=8'}
     engines: {node: '>=8'}
@@ -2042,6 +2070,10 @@ packages:
     resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
     resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
     engines: {node: '>= 0.8'}
     engines: {node: '>= 0.8'}
 
 
+  commander@11.1.0:
+    resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
+    engines: {node: '>=16'}
+
   commander@12.1.0:
   commander@12.1.0:
     resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
     resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
     engines: {node: '>=18'}
     engines: {node: '>=18'}
@@ -2074,6 +2106,15 @@ packages:
     resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
     resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
     engines: {node: '>=10'}
     engines: {node: '>=10'}
 
 
+  cosmiconfig@8.3.6:
+    resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==}
+    engines: {node: '>=14'}
+    peerDependencies:
+      typescript: '>=4.9.5'
+    peerDependenciesMeta:
+      typescript:
+        optional: true
+
   create-jest-runner@0.11.2:
   create-jest-runner@0.11.2:
     resolution: {integrity: sha512-6lwspphs4M1PLKV9baBNxHQtWVBPZuDU8kAP4MyrVWa6aEpEcpi2HZeeA6WncwaqgsGNXpP0N2STS7XNM/nHKQ==}
     resolution: {integrity: sha512-6lwspphs4M1PLKV9baBNxHQtWVBPZuDU8kAP4MyrVWa6aEpEcpi2HZeeA6WncwaqgsGNXpP0N2STS7XNM/nHKQ==}
     hasBin: true
     hasBin: true
@@ -2210,6 +2251,12 @@ packages:
     resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==}
     resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==}
     engines: {node: '>=10'}
     engines: {node: '>=10'}
 
 
+  duplexer@0.1.1:
+    resolution: {integrity: sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q==}
+
+  duplexer@0.1.2:
+    resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
+
   eastasianwidth@0.2.0:
   eastasianwidth@0.2.0:
     resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
     resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
 
 
@@ -2586,6 +2633,10 @@ packages:
   graphemer@1.4.0:
   graphemer@1.4.0:
     resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
     resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
 
 
+  gzip-size@6.0.0:
+    resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==}
+    engines: {node: '>=10'}
+
   has-flag@3.0.0:
   has-flag@3.0.0:
     resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
     resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
     engines: {node: '>=4'}
     engines: {node: '>=4'}
@@ -2709,6 +2760,10 @@ packages:
   is-potential-custom-element-name@1.0.1:
   is-potential-custom-element-name@1.0.1:
     resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
     resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
 
 
+  is-retry-allowed@2.2.0:
+    resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==}
+    engines: {node: '>=10'}
+
   is-stream@2.0.1:
   is-stream@2.0.1:
     resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
     resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
     engines: {node: '>=8'}
     engines: {node: '>=8'}
@@ -3163,6 +3218,9 @@ packages:
     resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
     resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
     engines: {node: '>=10'}
     engines: {node: '>=10'}
 
 
+  lodash-es@4.17.21:
+    resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
+
   lodash.merge@4.6.2:
   lodash.merge@4.6.2:
     resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
     resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
 
 
@@ -3253,6 +3311,9 @@ packages:
   mz@2.7.0:
   mz@2.7.0:
     resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
     resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
 
 
+  nanoclone@0.2.1:
+    resolution: {integrity: sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==}
+
   natural-compare-lite@1.4.0:
   natural-compare-lite@1.4.0:
     resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
     resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
 
 
@@ -3480,6 +3541,9 @@ packages:
     resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
     resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
     engines: {node: '>= 6'}
     engines: {node: '>= 6'}
 
 
+  property-expr@2.0.6:
+    resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==}
+
   proxy-from-env@1.1.0:
   proxy-from-env@1.1.0:
     resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
     resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
 
 
@@ -3787,6 +3851,9 @@ packages:
     resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
     resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
     engines: {node: '>=8.0'}
     engines: {node: '>=8.0'}
 
 
+  toposort@2.0.2:
+    resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==}
+
   tough-cookie@4.1.4:
   tough-cookie@4.1.4:
     resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==}
     resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==}
     engines: {node: '>=6'}
     engines: {node: '>=6'}
@@ -4133,6 +4200,10 @@ packages:
     resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==}
     resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==}
     engines: {node: '>=12.20'}
     engines: {node: '>=12.20'}
 
 
+  yup@0.32.11:
+    resolution: {integrity: sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==}
+    engines: {node: '>=10'}
+
 snapshots:
 snapshots:
 
 
   '@ampproject/remapping@2.3.0':
   '@ampproject/remapping@2.3.0':
@@ -5749,6 +5820,8 @@ snapshots:
 
 
   '@types/json-schema@7.0.15': {}
   '@types/json-schema@7.0.15': {}
 
 
+  '@types/lodash@4.17.15': {}
+
   '@types/node@12.20.55': {}
   '@types/node@12.20.55': {}
 
 
   '@types/node@22.9.1':
   '@types/node@22.9.1':
@@ -6102,6 +6175,11 @@ snapshots:
 
 
   asynckit@0.4.0: {}
   asynckit@0.4.0: {}
 
 
+  axios-retry@4.5.0(axios@1.7.8):
+    dependencies:
+      axios: 1.7.8
+      is-retry-allowed: 2.2.0
+
   axios@1.7.8:
   axios@1.7.8:
     dependencies:
     dependencies:
       follow-redirects: 1.15.9
       follow-redirects: 1.15.9
@@ -6193,6 +6271,10 @@ snapshots:
     dependencies:
     dependencies:
       fill-range: 7.1.1
       fill-range: 7.1.1
 
 
+  brotli-size@4.0.0:
+    dependencies:
+      duplexer: 0.1.1
+
   browser-process-hrtime@1.0.0: {}
   browser-process-hrtime@1.0.0: {}
 
 
   browserslist-to-esbuild@2.1.1(browserslist@4.24.2):
   browserslist-to-esbuild@2.1.1(browserslist@4.24.2):
@@ -6223,6 +6305,29 @@ snapshots:
       esbuild: 0.24.0
       esbuild: 0.24.0
       load-tsconfig: 0.2.5
       load-tsconfig: 0.2.5
 
 
+  bundlemon-utils@2.0.1:
+    dependencies:
+      bytes: 3.1.2
+
+  bundlemon@3.1.0(typescript@5.6.3):
+    dependencies:
+      axios: 1.7.8
+      axios-retry: 4.5.0(axios@1.7.8)
+      brotli-size: 4.0.0
+      bundlemon-utils: 2.0.1
+      bytes: 3.1.2
+      chalk: 4.1.2
+      commander: 11.1.0
+      cosmiconfig: 8.3.6(typescript@5.6.3)
+      gzip-size: 6.0.0
+      micromatch: 4.0.8
+      yup: 0.32.11
+    transitivePeerDependencies:
+      - debug
+      - typescript
+
+  bytes@3.1.2: {}
+
   cac@6.7.14: {}
   cac@6.7.14: {}
 
 
   callsites@3.1.0: {}
   callsites@3.1.0: {}
@@ -6299,6 +6404,8 @@ snapshots:
     dependencies:
     dependencies:
       delayed-stream: 1.0.0
       delayed-stream: 1.0.0
 
 
+  commander@11.1.0: {}
+
   commander@12.1.0: {}
   commander@12.1.0: {}
 
 
   commander@4.1.1: {}
   commander@4.1.1: {}
@@ -6323,6 +6430,15 @@ snapshots:
       path-type: 4.0.0
       path-type: 4.0.0
       yaml: 1.10.2
       yaml: 1.10.2
 
 
+  cosmiconfig@8.3.6(typescript@5.6.3):
+    dependencies:
+      import-fresh: 3.3.0
+      js-yaml: 4.1.0
+      parse-json: 5.2.0
+      path-type: 4.0.0
+    optionalDependencies:
+      typescript: 5.6.3
+
   create-jest-runner@0.11.2:
   create-jest-runner@0.11.2:
     dependencies:
     dependencies:
       chalk: 4.1.2
       chalk: 4.1.2
@@ -6422,6 +6538,10 @@ snapshots:
 
 
   dotenv@8.6.0: {}
   dotenv@8.6.0: {}
 
 
+  duplexer@0.1.1: {}
+
+  duplexer@0.1.2: {}
+
   eastasianwidth@0.2.0: {}
   eastasianwidth@0.2.0: {}
 
 
   electron-to-chromium@1.5.63: {}
   electron-to-chromium@1.5.63: {}
@@ -6855,6 +6975,10 @@ snapshots:
 
 
   graphemer@1.4.0: {}
   graphemer@1.4.0: {}
 
 
+  gzip-size@6.0.0:
+    dependencies:
+      duplexer: 0.1.2
+
   has-flag@3.0.0: {}
   has-flag@3.0.0: {}
 
 
   has-flag@4.0.0: {}
   has-flag@4.0.0: {}
@@ -6963,6 +7087,8 @@ snapshots:
 
 
   is-potential-custom-element-name@1.0.1: {}
   is-potential-custom-element-name@1.0.1: {}
 
 
+  is-retry-allowed@2.2.0: {}
+
   is-stream@2.0.1: {}
   is-stream@2.0.1: {}
 
 
   is-subdir@1.2.0:
   is-subdir@1.2.0:
@@ -7846,6 +7972,8 @@ snapshots:
     dependencies:
     dependencies:
       p-locate: 5.0.0
       p-locate: 5.0.0
 
 
+  lodash-es@4.17.21: {}
+
   lodash.merge@4.6.2: {}
   lodash.merge@4.6.2: {}
 
 
   lodash.sortby@4.7.0: {}
   lodash.sortby@4.7.0: {}
@@ -7926,6 +8054,8 @@ snapshots:
       object-assign: 4.1.1
       object-assign: 4.1.1
       thenify-all: 1.6.0
       thenify-all: 1.6.0
 
 
+  nanoclone@0.2.1: {}
+
   natural-compare-lite@1.4.0: {}
   natural-compare-lite@1.4.0: {}
 
 
   natural-compare@1.4.0: {}
   natural-compare@1.4.0: {}
@@ -8099,6 +8229,8 @@ snapshots:
       kleur: 3.0.3
       kleur: 3.0.3
       sisteransi: 1.0.5
       sisteransi: 1.0.5
 
 
+  property-expr@2.0.6: {}
+
   proxy-from-env@1.1.0: {}
   proxy-from-env@1.1.0: {}
 
 
   psl@1.13.0:
   psl@1.13.0:
@@ -8396,6 +8528,8 @@ snapshots:
     dependencies:
     dependencies:
       is-number: 7.0.0
       is-number: 7.0.0
 
 
+  toposort@2.0.2: {}
+
   tough-cookie@4.1.4:
   tough-cookie@4.1.4:
     dependencies:
     dependencies:
       psl: 1.13.0
       psl: 1.13.0
@@ -8718,3 +8852,13 @@ snapshots:
   yocto-queue@0.1.0: {}
   yocto-queue@0.1.0: {}
 
 
   yocto-queue@1.1.1: {}
   yocto-queue@1.1.1: {}
+
+  yup@0.32.11:
+    dependencies:
+      '@babel/runtime': 7.26.0
+      '@types/lodash': 4.17.15
+      lodash: 4.17.21
+      lodash-es: 4.17.21
+      nanoclone: 0.2.1
+      property-expr: 2.0.6
+      toposort: 2.0.2