Author SHA1 Message Date
github-actions[bot] a7b994f1bd chore: compile action bundle [skip compile]
renovate/stability-days Updates have met minimum release age requirement
2026-10-31 20:21:03 +00:00
Renovate 815d874ef7 fix(deps): update dependency glob to v14 [security]
renovate/stability-days Updates have met minimum release age requirement
Recompile dist/ on Renovate PR / recompile (pull_request) Successful in 8m51s
Test / Run Tests (push) Successful in 13m45s
Test / Run Tests (pull_request) Successful in 10m51s
Philipp/Global-Workflows: Pre-commit Lint (Scoped) / pre-commit (pull_request) Successful in 2m44s
2026-10-31 19:54:50 +00:00
Philipp c08128c0ef feat: automate dist recompilation on Renovate PRs and configure concurrency limit (#120)
Test / Run Tests (push) Successful in 1m59s
### Summary of Changes

1. **Gitea Workflow (.gitea/workflows/recompile-dist.yaml)**:
   - Automates recompilation of dist/index.js on Renovate PRs.
   - Adds loop-prevention check for [skip compile].
2. **Renovate Configuration (
enovate.json)**:
   - Configures branchConcurrentLimit: 2 and prConcurrentLimit: 2.
   - Adds gitIgnoredAuthors for automated bot commits.
   - Adds rebaseWhen: 'behind-base-branch'.
   - Removes postUpgradeTasks.
3. **Test Workflow (.gitea/workflows/test.yaml)**:
   - Added pull_request trigger.
4. **Gitea-Only Setup**:
   - Removed .github/ workflows to keep workflow execution strictly on Gitea.
5. **Preferences (GEMINI.md)**:
   - Documented strict pnpm/pnpx rule.
6. **Tests**:
   - Added afterEach import in __tests__/index.test.js.

Reviewed-on: #120
Reviewed-by: LLMReview <27+autoreview@noreplay.horstenkamp.eu>
2026-09-04 23:20:17 +02:00
Philipp 7c5cb5ffec ci: delegate pre-commit linting to central global scoped workflow (#119)
Test / Run Tests (push) Failing after 2m59s
This PR removes the redundant local workflow file (`.gitea/workflows/lint.yaml`) in favor of the central **Global Scoped Workflow** hosted in `Global-Workflows` (`.gitea/scoped_workflows/lint.yaml`).

### Checklist
- [ ] I changed the Branch protections to fit the new pipeline setup.

Reviewed-on: #119
Reviewed-by: LLMReview <27+autoreview@noreplay.horstenkamp.eu>
2026-08-31 23:28:52 +02:00
Renovate f5c1ffde37 chore(deps): update pre-commit hook python-jsonschema/check-jsonschema to v0.38.0 (#115)
Lint / pre-commit Linting (push) Successful in 58s
Test / Run Tests (push) Successful in 4m34s
Co-authored-by: Renovate Bot <renovate@horstenkamp.eu>
2026-08-15 00:31:35 +02:00
Renovate a2711f3f40 chore(deps): update pnpm/action-setup action to v6 (#114)
Lint / pre-commit Linting (push) Successful in 46s
Test / Run Tests (push) Successful in 2m20s
Co-authored-by: Renovate Bot <renovate@horstenkamp.eu>
2026-08-11 02:43:32 +02:00
Renovate 7e526aeef3 chore(deps): update pnpm/action-setup action to v4.4.0 (#112)
Lint / pre-commit Linting (push) Successful in 39s
Test / Run Tests (push) Successful in 1m14s
Co-authored-by: Renovate Bot <renovate@horstenkamp.eu>
2026-08-11 01:33:30 +02:00
Renovate c116597f23 chore(deps): pin pnpm/action-setup action to b906aff (#111)
Lint / pre-commit Linting (push) Successful in 50s
Test / Run Tests (push) Failing after 3m14s
Co-authored-by: Renovate Bot <renovate@horstenkamp.eu>
2026-08-11 00:31:23 +02:00
10 changed files with 286 additions and 172 deletions

No files matched your search

-18
View File
@@ -1,18 +0,0 @@
name: Lint
on:
push:
workflow_dispatch:
jobs:
pre-commit-lint:
name: pre-commit Linting
runs-on: pi
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
- run: pip install pre-commit
shell: bash
- name: Pre Commit
run: SKIP=no-commit-to-branch pre-commit run -a
shell: bash
+55
View File
@@ -0,0 +1,55 @@
name: Recompile dist/ on Renovate PR
on:
pull_request:
types: [opened, synchronize]
paths:
- package.json
- pnpm-lock.yaml
- index.js
- monitor.js
permissions:
contents: write
jobs:
recompile:
runs-on: pi
if: |
(github.actor == 'renovate[bot]' || contains(github.head_ref, 'renovate/')) &&
!contains(github.event.head_commit.message, '[skip compile]')
steps:
- name: Checkout PR Branch
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
token: ${{ secrets.GITHUB_TOKEN }}
ref: ${{ github.head_ref }}
fetch-depth: 0
- uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: '22'
cache: pnpm
- name: Clean Install
run: pnpm install --frozen-lockfile --ignore-scripts
shell: bash
- name: Build
run: pnpm run build
shell: bash
- name: Commit dist/
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add dist/
if git diff --staged --quiet; then
echo "No changes to dist/"
else
git commit -m "chore: compile action bundle [skip compile]"
git push origin HEAD:${{ github.head_ref }}
fi
shell: bash
+3 -1
View File
@@ -2,6 +2,7 @@ name: Test
on:
push:
pull_request:
workflow_dispatch:
jobs:
@@ -10,10 +11,11 @@ jobs:
runs-on: pi
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: '24'
- uses: pnpm/action-setup@v4
cache: pnpm
- run: pnpm install --frozen-lockfile
shell: bash
- run: pnpm test
+1 -1
View File
@@ -30,7 +30,7 @@ repos:
types_or: [css, javascript]
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.37.4
rev: 0.38.0
hooks:
- id: check-renovate
- id: check-github-actions
+6
View File
@@ -7,6 +7,7 @@ This repository is maintained by Gemini.
* **Test-Driven Development (TDD):** Wherever possible, Test-Driven Development principles should be followed. Write tests before writing the code they are intended to validate.
* **Pre-commit Hooks:** Ensure that `pre-commit` hooks are installed and active before making any commits. This can be done by running `pre-commit install` in your local repository.
* **Note for Gemini:** Git commits trigger pre-commit hooks, which can take several seconds (or minutes) to complete. Checking the command status for git commit is only appropriate every 120s.
* **Package Manager Preferences:** Always use `pnpm` and `pnpx`. Never use `npm` or `npx` under any circumstances. All package management operations, script runs, and tool invocations must use `pnpm` / `pnpx`.
## Repository Comparison
@@ -32,3 +33,8 @@ The Gitea workflow does the following:
2. Sets up Node.js and pnpm.
3. Installs the dependencies using `pnpm install`.
4. Runs the tests using `pnpm test`.
### Automated Recompilation & Permissions
* The automated recompilation workflow (`.gitea/workflows/recompile-dist.yaml`) recompiles `dist/index.js` on Renovate PRs and requires `contents: write` permissions to push back to the branch.
* Ensure that the Gitea repository workflow settings have write permissions enabled (**Settings** ➔ **Actions** ➔ **General** ➔ **Workflow permissions** ➔ **Read and write permissions**).
+1 -1
View File
@@ -1,4 +1,4 @@
import { vi, describe, it, expect, beforeEach } from "vitest";
import { vi, describe, it, expect, beforeEach, afterEach } from "vitest";
// Mock @actions/core for all tests in this file
vi.mock("@actions/core", () => ({
+8 -8
View File
@@ -1,18 +1,18 @@
import{createRequire as A}from"module";var i={7038:(A,i,g)=>{var E;E={value:true};i.v=void 0;const p=g(918);function create(){return p.DefaultArtifactClient.create()}i.v=create},918:function(A,i,g){var E=this&&this.__createBinding||(Object.create?function(A,i,g,E){if(E===undefined)E=g;var p=Object.getOwnPropertyDescriptor(i,g);if(!p||("get"in p?!i.__esModule:p.writable||p.configurable)){p={enumerable:true,get:function(){return i[g]}}}Object.defineProperty(A,E,p)}:function(A,i,g,E){if(E===undefined)E=g;A[E]=i[g]});var p=this&&this.__setModuleDefault||(Object.create?function(A,i){Object.defineProperty(A,"default",{enumerable:true,value:i})}:function(A,i){A["default"]=i});var C=this&&this.__importStar||function(A){if(A&&A.__esModule)return A;var i={};if(A!=null)for(var g in A)if(g!=="default"&&Object.prototype.hasOwnProperty.call(A,g))E(i,A,g);p(i,A);return i};var f=this&&this.__awaiter||function(A,i,g,E){function adopt(A){return A instanceof g?A:new g(function(i){i(A)})}return new(g||(g=Promise))(function(g,p){function fulfilled(A){try{step(E.next(A))}catch(A){p(A)}}function rejected(A){try{step(E["throw"](A))}catch(A){p(A)}}function step(A){A.done?g(A.value):adopt(A.value).then(fulfilled,rejected)}step((E=E.apply(A,i||[])).next())})};Object.defineProperty(i,"__esModule",{value:true});i.DefaultArtifactClient=void 0;const Q=C(g(9910));const B=g(9367);const I=g(8950);const y=g(2669);const b=g(9400);const D=g(3439);const R=g(3886);const k=g(1124);const S=g(6928);class DefaultArtifactClient{static create(){return new DefaultArtifactClient}uploadArtifact(A,i,g,E){return f(this,void 0,void 0,function*(){Q.info(`Starting artifact upload\nFor more detailed logs during the artifact upload process, enable step-debugging: https://docs.github.com/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging#enabling-step-debug-logging`);(0,b.checkArtifactName)(A);const p=(0,B.getUploadSpecification)(A,g,i);const C={artifactName:A,artifactItems:[],size:0,failedItems:[]};const f=new I.UploadHttpClient;if(p.length===0){Q.warning(`No files found that can be uploaded`)}else{const i=yield f.createArtifactInFileContainer(A,E);if(!i.fileContainerResourceUrl){Q.debug(i.toString());throw new Error("No URL provided by the Artifact Service to upload an artifact to")}Q.debug(`Upload Resource URL: ${i.fileContainerResourceUrl}`);Q.info(`Container for artifact "${A}" successfully created. Starting upload of file(s)`);const g=yield f.uploadArtifactToFileContainer(i.fileContainerResourceUrl,p,E);Q.info(`File upload process has finished. Finalizing the artifact upload`);yield f.patchArtifactSize(g.totalSize,A);if(g.failedItems.length>0){Q.info(`Upload finished. There were ${g.failedItems.length} items that failed to upload`)}else{Q.info(`Artifact has been finalized. All files have been successfully uploaded!`)}Q.info(`\nThe raw size of all the files that were specified for upload is ${g.totalSize} bytes\nThe size of all the files that were uploaded is ${g.uploadSize} bytes. This takes into account any gzip compression used to reduce the upload size, time and storage\n\nNote: The size of downloaded zips can differ significantly from the reported size. For more information see: https://github.com/actions/upload-artifact#zipped-artifact-downloads \r\n`);C.artifactItems=p.map(A=>A.absoluteFilePath);C.size=g.uploadSize;C.failedItems=g.failedItems}return C})}downloadArtifact(A,i,g){return f(this,void 0,void 0,function*(){const E=new D.DownloadHttpClient;const p=yield E.listArtifacts();if(p.count===0){throw new Error(`Unable to find any artifacts for the associated workflow`)}const C=p.value.find(i=>i.name===A);if(!C){throw new Error(`Unable to find an artifact with the name: ${A}`)}const f=yield E.getContainerItems(C.name,C.fileContainerResourceUrl);if(!i){i=(0,k.getWorkSpaceDirectory)()}i=(0,S.normalize)(i);i=(0,S.resolve)(i);const B=(0,R.getDownloadSpecification)(A,f.value,i,(g===null||g===void 0?void 0:g.createArtifactFolder)||false);if(B.filesToDownload.length===0){Q.info(`No downloadable files were found for the artifact: ${C.name}`)}else{yield(0,y.createDirectoriesForArtifact)(B.directoryStructure);Q.info("Directory structure has been set up for the artifact");yield(0,y.createEmptyFilesForArtifact)(B.emptyFilesToCreate);yield E.downloadSingleArtifact(B.filesToDownload)}return{artifactName:A,downloadPath:B.rootDownloadLocation}})}downloadAllArtifacts(A){return f(this,void 0,void 0,function*(){const i=new D.DownloadHttpClient;const g=[];const E=yield i.listArtifacts();if(E.count===0){Q.info("Unable to find any artifacts for the associated workflow");return g}if(!A){A=(0,k.getWorkSpaceDirectory)()}A=(0,S.normalize)(A);A=(0,S.resolve)(A);let p=0;while(p<E.count){const C=E.value[p];p+=1;Q.info(`starting download of artifact ${C.name} : ${p}/${E.count}`);const f=yield i.getContainerItems(C.name,C.fileContainerResourceUrl);const B=(0,R.getDownloadSpecification)(C.name,f.value,A,true);if(B.filesToDownload.length===0){Q.info(`No downloa Line truncated
import{createRequire as t}from"module";var A={7038:(t,A,u)=>{var d;d={value:true};A.v=void 0;const E=u(918);function create(){return E.DefaultArtifactClient.create()}A.v=create},918:function(t,A,u){var d=this&&this.__createBinding||(Object.create?function(t,A,u,d){if(d===undefined)d=u;var E=Object.getOwnPropertyDescriptor(A,u);if(!E||("get"in E?!A.__esModule:E.writable||E.configurable)){E={enumerable:true,get:function(){return A[u]}}}Object.defineProperty(t,d,E)}:function(t,A,u,d){if(d===undefined)d=u;t[d]=A[u]});var E=this&&this.__setModuleDefault||(Object.create?function(t,A){Object.defineProperty(t,"default",{enumerable:true,value:A})}:function(t,A){t["default"]=A});var C=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var A={};if(t!=null)for(var u in t)if(u!=="default"&&Object.prototype.hasOwnProperty.call(t,u))d(A,t,u);E(A,t);return A};var Q=this&&this.__awaiter||function(t,A,u,d){function adopt(t){return t instanceof u?t:new u(function(A){A(t)})}return new(u||(u=Promise))(function(u,E){function fulfilled(t){try{step(d.next(t))}catch(t){E(t)}}function rejected(t){try{step(d["throw"](t))}catch(t){E(t)}}function step(t){t.done?u(t.value):adopt(t.value).then(fulfilled,rejected)}step((d=d.apply(t,A||[])).next())})};Object.defineProperty(A,"__esModule",{value:true});A.DefaultArtifactClient=void 0;const B=C(u(9910));const I=u(9367);const m=u(8950);const y=u(2669);const b=u(9400);const D=u(3439);const R=u(3886);const k=u(1124);const S=u(6928);class DefaultArtifactClient{static create(){return new DefaultArtifactClient}uploadArtifact(t,A,u,d){return Q(this,void 0,void 0,function*(){B.info(`Starting artifact upload\nFor more detailed logs during the artifact upload process, enable step-debugging: https://docs.github.com/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging#enabling-step-debug-logging`);(0,b.checkArtifactName)(t);const E=(0,I.getUploadSpecification)(t,u,A);const C={artifactName:t,artifactItems:[],size:0,failedItems:[]};const Q=new m.UploadHttpClient;if(E.length===0){B.warning(`No files found that can be uploaded`)}else{const A=yield Q.createArtifactInFileContainer(t,d);if(!A.fileContainerResourceUrl){B.debug(A.toString());throw new Error("No URL provided by the Artifact Service to upload an artifact to")}B.debug(`Upload Resource URL: ${A.fileContainerResourceUrl}`);B.info(`Container for artifact "${t}" successfully created. Starting upload of file(s)`);const u=yield Q.uploadArtifactToFileContainer(A.fileContainerResourceUrl,E,d);B.info(`File upload process has finished. Finalizing the artifact upload`);yield Q.patchArtifactSize(u.totalSize,t);if(u.failedItems.length>0){B.info(`Upload finished. There were ${u.failedItems.length} items that failed to upload`)}else{B.info(`Artifact has been finalized. All files have been successfully uploaded!`)}B.info(`\nThe raw size of all the files that were specified for upload is ${u.totalSize} bytes\nThe size of all the files that were uploaded is ${u.uploadSize} bytes. This takes into account any gzip compression used to reduce the upload size, time and storage\n\nNote: The size of downloaded zips can differ significantly from the reported size. For more information see: https://github.com/actions/upload-artifact#zipped-artifact-downloads \r\n`);C.artifactItems=E.map(t=>t.absoluteFilePath);C.size=u.uploadSize;C.failedItems=u.failedItems}return C})}downloadArtifact(t,A,u){return Q(this,void 0,void 0,function*(){const d=new D.DownloadHttpClient;const E=yield d.listArtifacts();if(E.count===0){throw new Error(`Unable to find any artifacts for the associated workflow`)}const C=E.value.find(A=>A.name===t);if(!C){throw new Error(`Unable to find an artifact with the name: ${t}`)}const Q=yield d.getContainerItems(C.name,C.fileContainerResourceUrl);if(!A){A=(0,k.getWorkSpaceDirectory)()}A=(0,S.normalize)(A);A=(0,S.resolve)(A);const I=(0,R.getDownloadSpecification)(t,Q.value,A,(u===null||u===void 0?void 0:u.createArtifactFolder)||false);if(I.filesToDownload.length===0){B.info(`No downloadable files were found for the artifact: ${C.name}`)}else{yield(0,y.createDirectoriesForArtifact)(I.directoryStructure);B.info("Directory structure has been set up for the artifact");yield(0,y.createEmptyFilesForArtifact)(I.emptyFilesToCreate);yield d.downloadSingleArtifact(I.filesToDownload)}return{artifactName:t,downloadPath:I.rootDownloadLocation}})}downloadAllArtifacts(t){return Q(this,void 0,void 0,function*(){const A=new D.DownloadHttpClient;const u=[];const d=yield A.listArtifacts();if(d.count===0){B.info("Unable to find any artifacts for the associated workflow");return u}if(!t){t=(0,k.getWorkSpaceDirectory)()}t=(0,S.normalize)(t);t=(0,S.resolve)(t);let E=0;while(E<d.count){const C=d.value[E];E+=1;B.info(`starting download of artifact ${C.name} : ${E}/${d.count}`);const Q=yield A.getContainerItems(C.name,C.fileContainerResourceUrl);const I=(0,R.getDownloadSpecification)(C.name,Q.value,t,true);if(I.filesToDownload.length===0){B.info(`No downloa Line truncated
/*!
* mime-db
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2015-2022 Douglas Christopher Wilson
* MIT Licensed
*/
A.exports=g(7080)},3674:(A,i,g)=>{
t.exports=u(7080)},3674:(t,A,u)=>{
/*!
* mime-types
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*/
var E=g(8975);var p=g(6928).extname;var C=/^\s*([^;\s]*)(?:;|\s|$)/;var f=/^text\//i;i.charset=charset;i.charsets={lookup:charset};i.contentType=contentType;i.extension=extension;i.extensions=Object.create(null);i.lookup=lookup;i.types=Object.create(null);populateMaps(i.extensions,i.types);function charset(A){if(!A||typeof A!=="string"){return false}var i=C.exec(A);var g=i&&E[i[1].toLowerCase()];if(g&&g.charset){return g.charset}if(i&&f.test(i[1])){return"UTF-8"}return false}function contentType(A){if(!A||typeof A!=="string"){return false}var g=A.indexOf("/")===-1?i.lookup(A):A;if(!g){return false}if(g.indexOf("charset")===-1){var E=i.charset(g);if(E)g+="; charset="+E.toLowerCase()}return g}function extension(A){if(!A||typeof A!=="string"){return false}var g=C.exec(A);var E=g&&i.extensions[g[1].toLowerCase()];if(!E||!E.length){return false}return E[0]}function lookup(A){if(!A||typeof A!=="string"){return false}var g=p("x."+A).toLowerCase().substr(1);if(!g){return false}return i.types[g]||false}function populateMaps(A,i){var g=["nginx","apache",undefined,"iana"];Object.keys(E).forEach(function forEachMimeType(p){var C=E[p];var f=C.extensions;if(!f||!f.length){return}A[p]=f;for(var Q=0;Q<f.length;Q++){var B=f[Q];if(i[B]){var I=g.indexOf(E[i[B]].source);var y=g.indexOf(C.source);if(i[B]!=="application/octet-stream"&&(I>y||I===y&&i[B].substr(0,12)==="application/")){continue}}i[B]=p}})}},4023:A=>{var i=1e3;var g=i*60;var E=g*60;var p=E*24;var C=p*7;var f=p*365.25;A.exports=function(A,i){i=i||{};var g=typeof A;if(g==="string"&&A.length>0){return parse(A)}else if(g==="number"&&isFinite(A)){return i.long?fmtLong(A):fmtShort(A)}throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(A))};function parse(A){A=String(A);if(A.length>100){return}var Q=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(A);if(!Q){return}var B=parseFloat(Q[1]);var I=(Q[2]||"ms").toLowerCase();switch(I){case"years":case"year":case"yrs":case"yr":case"y":return B*f;case"weeks":case"week":case"w":return B*C;case"days":case"day":case"d":return B*p;case"hours":case"hour":case"hrs":case"hr":case"h":return B*E;case"minutes":case"minute":case"mins":case"min":case"m":return B*g;case"seconds":case"second":case"secs":case"sec":case"s":return B*i;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return B;default:return undefined}}function fmtShort(A){var C=Math.abs(A);if(C>=p){return Math.round(A/p)+"d"}if(C>=E){return Math.round(A/E)+"h"}if(C>=g){return Math.round(A/g)+"m"}if(C>=i){return Math.round(A/i)+"s"}return A+"ms"}function fmtLong(A){var C=Math.abs(A);if(C>=p){return plural(A,C,p,"day")}if(C>=E){return plural(A,C,E,"hour")}if(C>=g){return plural(A,C,g,"minute")}if(C>=i){return plural(A,C,i,"second")}return A+" ms"}function plural(A,i,g,E){var p=i>=g*1.5;return Math.round(A/g)+" "+E+(p?"s":"")}},4147:(A,i,g)=>{var E=g(7016).parse;var p={ftp:21,gopher:70,http:80,https:443,ws:80,wss:443};var C=String.prototype.endsWith||function(A){return A.length<=this.length&&this.indexOf(A,this.length-A.length)!==-1};function getProxyForUrl(A){var i=typeof A==="string"?E(A):A||{};var g=i.protocol;var C=i.host;var f=i.port;if(typeof C!=="string"||!C||typeof g!=="string"){return""}g=g.split(":",1)[0];C=C.replace(/:\d*$/,"");f=parseInt(f)||p[g]||0;if(!shouldProxy(C,f)){return""}var Q=getEnv("npm_config_"+g+"_proxy")||getEnv(g+"_proxy")||getEnv("npm_config_proxy")||getEnv("all_proxy");if(Q&&Q.indexOf("://")===-1){Q=g+"://"+Q}return Q}function shouldProxy(A,i){var g=(getEnv("npm_config_no_proxy")||getEnv("no_proxy")).toLowerCase();if(!g){return true}if(g==="*"){return false}return g.split(/[,\s]/).every(function(g){if(!g){return true}var E=g.match(/^(.+):(\d+)$/);var p=E?E[1]:g;var f=E?parseInt(E[2]):0;if(f&&f!==i){return true}if(!/^[.*]/.test(p)){return A!==p}if(p.charAt(0)==="*"){p=p.slice(1)}return!C.call(A,p)})}function getEnv(A){return process.env[A.toLowerCase()]||process.env[A.toUpperCase()]||""}i.T=getProxyForUrl},4398:(A,i,g)=>{var E;E={value:true};const p=g(9105);const C=g(7016);const f=g(4434);const Q=g(1141);const B=g(3106);const I=g(6550);const y=g(9023);const b=g(9896);const D=g(7967);const R=g(6928);function _interopDefaultLegacy(A){return A&&typeof A==="object"&&"default"in A?A:{default:A}}const k=_interopDefaultLegacy(p);const S=_interopDefaultLegacy(C);const v=_interopDefaultLegacy(Q);const F=_interopDefaultLegacy(B);const x=_interopDefaultLegacy(I);const U=_interopDefaultLegacy(y);const L=_interopDefaultLegacy(b);const M=_interopDefaultLegacy(D);const T=_interopDefaultLegacy(R);const H=v["default"]("screepsapi:socket");const G={reconnect:true,resubscribe:true,keepAlive:true,maxRetries:10,maxRetryDelay:60*1e3};class Socket extends f.EventEmitter{constructor(A){super();this.api=A;this.opts=Object.assign({},G);this.on("error",()=>{});this.reset();this.on("auth",A=>{if(A.data.status==="ok"){while(this.__queue.length)Line truncated
var d=u(8975);var E=u(6928).extname;var C=/^\s*([^;\s]*)(?:;|\s|$)/;var Q=/^text\//i;A.charset=charset;A.charsets={lookup:charset};A.contentType=contentType;A.extension=extension;A.extensions=Object.create(null);A.lookup=lookup;A.types=Object.create(null);populateMaps(A.extensions,A.types);function charset(t){if(!t||typeof t!=="string"){return false}var A=C.exec(t);var u=A&&d[A[1].toLowerCase()];if(u&&u.charset){return u.charset}if(A&&Q.test(A[1])){return"UTF-8"}return false}function contentType(t){if(!t||typeof t!=="string"){return false}var u=t.indexOf("/")===-1?A.lookup(t):t;if(!u){return false}if(u.indexOf("charset")===-1){var d=A.charset(u);if(d)u+="; charset="+d.toLowerCase()}return u}function extension(t){if(!t||typeof t!=="string"){return false}var u=C.exec(t);var d=u&&A.extensions[u[1].toLowerCase()];if(!d||!d.length){return false}return d[0]}function lookup(t){if(!t||typeof t!=="string"){return false}var u=E("x."+t).toLowerCase().substr(1);if(!u){return false}return A.types[u]||false}function populateMaps(t,A){var u=["nginx","apache",undefined,"iana"];Object.keys(d).forEach(function forEachMimeType(E){var C=d[E];var Q=C.extensions;if(!Q||!Q.length){return}t[E]=Q;for(var B=0;B<Q.length;B++){var I=Q[B];if(A[I]){var m=u.indexOf(d[A[I]].source);var y=u.indexOf(C.source);if(A[I]!=="application/octet-stream"&&(m>y||m===y&&A[I].substr(0,12)==="application/")){continue}}A[I]=E}})}},4023:t=>{var A=1e3;var u=A*60;var d=u*60;var E=d*24;var C=E*7;var Q=E*365.25;t.exports=function(t,A){A=A||{};var u=typeof t;if(u==="string"&&t.length>0){return parse(t)}else if(u==="number"&&isFinite(t)){return A.long?fmtLong(t):fmtShort(t)}throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function parse(t){t=String(t);if(t.length>100){return}var B=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(!B){return}var I=parseFloat(B[1]);var m=(B[2]||"ms").toLowerCase();switch(m){case"years":case"year":case"yrs":case"yr":case"y":return I*Q;case"weeks":case"week":case"w":return I*C;case"days":case"day":case"d":return I*E;case"hours":case"hour":case"hrs":case"hr":case"h":return I*d;case"minutes":case"minute":case"mins":case"min":case"m":return I*u;case"seconds":case"second":case"secs":case"sec":case"s":return I*A;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return I;default:return undefined}}function fmtShort(t){var C=Math.abs(t);if(C>=E){return Math.round(t/E)+"d"}if(C>=d){return Math.round(t/d)+"h"}if(C>=u){return Math.round(t/u)+"m"}if(C>=A){return Math.round(t/A)+"s"}return t+"ms"}function fmtLong(t){var C=Math.abs(t);if(C>=E){return plural(t,C,E,"day")}if(C>=d){return plural(t,C,d,"hour")}if(C>=u){return plural(t,C,u,"minute")}if(C>=A){return plural(t,C,A,"second")}return t+" ms"}function plural(t,A,u,d){var E=A>=u*1.5;return Math.round(t/u)+" "+d+(E?"s":"")}},4147:(t,A,u)=>{var d=u(7016).parse;var E={ftp:21,gopher:70,http:80,https:443,ws:80,wss:443};var C=String.prototype.endsWith||function(t){return t.length<=this.length&&this.indexOf(t,this.length-t.length)!==-1};function getProxyForUrl(t){var A=typeof t==="string"?d(t):t||{};var u=A.protocol;var C=A.host;var Q=A.port;if(typeof C!=="string"||!C||typeof u!=="string"){return""}u=u.split(":",1)[0];C=C.replace(/:\d*$/,"");Q=parseInt(Q)||E[u]||0;if(!shouldProxy(C,Q)){return""}var B=getEnv("npm_config_"+u+"_proxy")||getEnv(u+"_proxy")||getEnv("npm_config_proxy")||getEnv("all_proxy");if(B&&B.indexOf("://")===-1){B=u+"://"+B}return B}function shouldProxy(t,A){var u=(getEnv("npm_config_no_proxy")||getEnv("no_proxy")).toLowerCase();if(!u){return true}if(u==="*"){return false}return u.split(/[,\s]/).every(function(u){if(!u){return true}var d=u.match(/^(.+):(\d+)$/);var E=d?d[1]:u;var Q=d?parseInt(d[2]):0;if(Q&&Q!==A){return true}if(!/^[.*]/.test(E)){return t!==E}if(E.charAt(0)==="*"){E=E.slice(1)}return!C.call(t,E)})}function getEnv(t){return process.env[t.toLowerCase()]||process.env[t.toUpperCase()]||""}A.T=getProxyForUrl},4398:(t,A,u)=>{var d;d={value:true};const E=u(9105);const C=u(7016);const Q=u(4434);const B=u(1141);const I=u(3106);const m=u(6550);const y=u(9023);const b=u(9896);const D=u(7967);const R=u(6928);function _interopDefaultLegacy(t){return t&&typeof t==="object"&&"default"in t?t:{default:t}}const k=_interopDefaultLegacy(E);const S=_interopDefaultLegacy(C);const v=_interopDefaultLegacy(B);const x=_interopDefaultLegacy(I);const N=_interopDefaultLegacy(m);const L=_interopDefaultLegacy(y);const M=_interopDefaultLegacy(b);const T=_interopDefaultLegacy(D);const H=_interopDefaultLegacy(R);const G=v["default"]("screepsapi:socket");const Y={reconnect:true,resubscribe:true,keepAlive:true,maxRetries:10,maxRetryDelay:60*1e3};class Socket extends Q.EventEmitter{constructor(t){super();this.api=t;this.opts=Object.assign({},Y);this.on("error",()=>{});this.reset();this.on("auth",t=>{if(t.data.status==="ok"){while(this.__queue.length)Line truncated
/*!
* Tmp
*
@@ -20,8 +20,8 @@ var E=g(8975);var p=g(6928).extname;var C=/^\s*([^;\s]*)(?:;|\s|$)/;var f=/^text
*
* MIT Licensed
*/
const E=g(9896);const p=g(857);const C=g(6928);const f=g(6982);const Q={fs:E.constants,os:p.constants};const B="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",I=/XXXXXX/,y=3,b=(Q.O_CREAT||Q.fs.O_CREAT)|(Q.O_EXCL||Q.fs.O_EXCL)|(Q.O_RDWR||Q.fs.O_RDWR),D=p.platform()==="win32",R=Q.EBADF||Q.os.errno.EBADF,k=Q.ENOENT||Q.os.errno.ENOENT,S=448,v=384,F="exit",x=[],U=E.rmdirSync.bind(E);let L=false;function rimraf(A,i){return E.rm(A,{recursive:true},i)}function FN_RIMRAF_SYNC(A){return E.rmSync(A,{recursive:true})}function tmpName(A,i){const g=_parseArguments(A,i),p=g[0],C=g[1];_assertAndSanitizeOptions(p,function(A,i){if(A)return C(A);let g=i.tries;(function _getUniqueName(){try{const A=_generateTmpName(i);E.stat(A,function(i){if(!i){if(g-- >0)return _getUniqueName();return C(new Error("Could not get a unique tmp filename, max tries reached "+A))}C(null,A)})}catch(A){C(A)}})()})}function tmpNameSync(A){const i=_parseArguments(A),g=i[0];const p=_assertAndSanitizeOptionsSync(g);let C=p.tries;do{const A=_generateTmpName(p);try{E.statSync(A)}catch(i){return A}}while(C-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function file(A,i){const g=_parseArguments(A,i),p=g[0],C=g[1];tmpName(p,function _tmpNameCreated(A,i){if(A)return C(A);E.open(i,b,p.mode||v,function _fileCreated(A,g){if(A)return C(A);if(p.discardDescriptor){return E.close(g,function _discardCallback(A){return C(A,i,undefined,_prepareTmpFileRemoveCallback(i,-1,p,false))})}else{const A=p.discardDescriptor||p.detachDescriptor;C(null,i,g,_prepareTmpFileRemoveCallback(i,A?-1:g,p,false))}})})}function fileSync(A){const i=_parseArguments(A),g=i[0];const p=g.discardDescriptor||g.detachDescriptor;const C=tmpNameSync(g);let f=E.openSync(C,b,g.mode||v);if(g.discardDescriptor){E.closeSync(f);f=undefined}return{name:C,fd:f,removeCallback:_prepareTmpFileRemoveCallback(C,p?-1:f,g,true)}}function dir(A,i){const g=_parseArguments(A,i),p=g[0],C=g[1];tmpName(p,function _tmpNameCreated(A,i){if(A)return C(A);E.mkdir(i,p.mode||S,function _dirCreated(A){if(A)return C(A);C(null,i,_prepareTmpDirRemoveCallback(i,p,false))})})}function dirSync(A){const i=_parseArguments(A),g=i[0];const p=tmpNameSync(g);E.mkdirSync(p,g.mode||S);return{name:p,removeCallback:_prepareTmpDirRemoveCallback(p,g,true)}}function _removeFileAsync(A,i){const _handler=function(A){if(A&&!_isENOENT(A)){return i(A)}i()};if(0<=A[0])E.close(A[0],function(){E.unlink(A[1],_handler)});else E.unlink(A[1],_handler)}function _removeFileSync(A){let i=null;try{if(0<=A[0])E.closeSync(A[0])}catch(A){if(!_isEBADF(A)&&!_isENOENT(A))throw A}finally{try{E.unlinkSync(A[1])}catch(A){if(!_isENOENT(A))i=A}}if(i!==null){throw i}}function _prepareTmpFileRemoveCallback(A,i,g,E){const p=_prepareRemoveCallback(_removeFileSync,[i,A],E);const C=_prepareRemoveCallback(_removeFileAsync,[i,A],E,p);if(!g.keep)x.unshift(p);return E?p:C}function _prepareTmpDirRemoveCallback(A,i,g){const p=i.unsafeCleanup?rimraf:E.rmdir.bind(E);const C=i.unsafeCleanup?FN_RIMRAF_SYNC:U;const f=_prepareRemoveCallback(C,A,g);const Q=_prepareRemoveCallback(p,A,g,f);if(!i.keep)x.unshift(f);return g?f:Q}function _prepareRemoveCallback(A,i,g,E){let p=false;return function _cleanupCallback(C){if(!p){const f=E||_cleanupCallback;const Q=x.indexOf(f);if(Q>=0)x.splice(Q,1);p=true;if(g||A===U||A===FN_RIMRAF_SYNC){return A(i)}else{return A(i,C||function(){})}}}}function _garbageCollector(){if(!L)return;while(x.length){try{x[0]()}catch(A){}}}function _randomChars(A){let i=[],g=null;try{g=f.randomBytes(A)}catch(i){g=f.pseudoRandomBytes(A)}for(let E=0;E<A;E++){i.push(B[g[E]%B.length])}return i.join("")}function _isUndefined(A){return typeof A==="undefined"}function _parseArguments(A,i){if(typeof A==="function"){return[{},A]}if(_isUndefined(A)){return[{},i]}const g={};for(const i of Object.getOwnPropertyNames(A)){g[i]=A[i]}return[g,i]}function _resolvePath(A,i,g){const p=C.isAbsolute(A)?A:C.join(i,A);E.stat(p,function(A){if(A){E.realpath(C.dirname(p),function(A,i){if(A)return g(A);g(null,C.join(i,C.basename(p)))})}else{E.realpath(p,g)}})}function _resolvePathSync(A,i){const g=C.isAbsolute(A)?A:C.join(i,A);try{E.statSync(g);return E.realpathSync(g)}catch(A){const i=E.realpathSync(C.dirname(g));return C.join(i,C.basename(g))}}function _generateTmpName(A){const i=A.tmpdir;if(!_isUndefined(A.name)){return C.join(i,A.dir,A.name)}if(!_isUndefined(A.template)){return C.join(i,A.dir,A.template).replace(I,_randomChars(6))}const g=[A.prefix?A.prefix:"tmp","-",process.pid,"-",_randomChars(12),A.postfix?"-"+A.postfix:""].join("");return C.join(i,A.dir,g)}function _assertPath(A,i){if(typeof i!=="string"){throw new Error(`${A} option must be a string, got "${typeof i}".`)}if(i.includes("..")){throw new Error("Relative value not allowed")}return i}function _assertOptionsBase(A){if(!_isUndefined(A.name)){const i=A.name;if(C.isAbsolute(i))throw new Error(`name option must not contain an absolute path, found "${i}".`);const g=C.basename(i);if(g===".."Line truncated
/*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */;const escape=A=>A.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22");const normalizeLinefeeds=A=>A.replace(/\r?\n|\r/g,"\r\n");const E=[];const p=new Uint8Array([13,10]);b=0;let C=false;for(const[i,f]of A){if(typeof f==="string"){const A=P.encode(g+`; name="${escape(normalizeLinefeeds(i))}"`+`\r\n\r\n${normalizeLinefeeds(f)}\r\n`);E.push(A);b+=A.byteLength}else{const A=P.encode(`${g}; name="${escape(normalizeLinefeeds(i))}"`+(f.name?`; filename="${escape(f.name)}"`:"")+"\r\n"+`Content-Type: ${f.type||"application/octet-stream"}\r\n\r\n`);E.push(A,f,p);if(typeof f.size==="number"){b+=A.byteLength+f.size+p.byteLength}else{C=true}}}const f=P.encode(`--${i}--`);E.push(f);b+=f.byteLength;if(C){b=null}y=A;I=async function*(){for(const A of E){if(A.stream){yield*A.stream()}else{yield A}}};D="multipart/form-data; boundary="+i}else if(f(A)){y=A;b=A.size;if(A.type){D=A.type}}else if(typeof A[Symbol.asyncIterator]==="function"){if(i){throw new TypeError("keepalive")}if(p.isDisturbed(A)||A.locked){throw new TypeError("Response body object should not be disturbed or locked")}E=A instanceof _?A:C(A)}if(typeof y==="string"||p.isBuffer(y)){b=Buffer.byteLength(y)}if(I!=null){let i;E=new _({async start(){i=I(A)[Symbol.asyncIterator]()},async pull(A){const{value:g,done:p}=await i.next();if(p){queueMicrotask(()=>{A.close()})}else{if(!L(E)){A.enqueue(new Uint8Array(g))}}return A.desiredSize>0},async cancel(A){await i.return()},type:undefined})}const R={stream:E,source:y,length:b};return[R,D]}function safelyExtractBody(A,i=false){if(!_){_=g(3774).ReadableStream}if(A instanceof _){U(!p.isDisturbed(A),"The body has already been consumed.");U(!A.locked,"The stream is locked.")}return extractBody(A,i)}function cloneBody(A){const[i,g]=A.stream.tee();const E=S(g,{transfer:[g]});const[,p]=E.tee();A.stream=i;return{stream:p,length:A.length,source:A.source}}async function*consumeBody(A){if(A){if(M(A)){yield A}else{const i=A.stream;if(p.isDisturbed(i)){throw new TypeError("The body has already been consumed.")}if(i.locked){throw new TypeError("The stream is locked.")}i[x]=true;yield*i}}}function throwIfAborted(A){if(A.aborted){throw new k("The operation was aborted.","AbortError")}}function bodyMixinMethods(A){const i={blob(){return specConsumeBody(this,A=>{let i=bodyMimeType(this);if(i==="failure"){i=""}else if(i){i=Y(i)}return new v([A],{type:i})},A)},arrayBuffer(){return specConsumeBody(this,A=>new Uint8Array(A).buffer,A)},text(){return specConsumeBody(this,utf8DecodeBytes,A)},json(){return specConsumeBody(this,parseJSONFromBytes,A)},async formData(){R.brandCheck(this,A);throwIfAborted(this[D]);const i=this.headers.get("Content-Type");if(/multipart\/form-data/.test(i)){const A={};for(const[i,g]of this.headers)A[i.toLowerCase()]=g;const i=new b;let g;try{g=new E({headers:A,preservePath:true})}catch(A){throw new k(`${A}`,"AbortError")}g.on("field",(A,g)=>{i.append(A,g)});g.on("file",(A,g,E,p,C)=>{const f=[];if(p==="base64"||p.toLowerCase()==="base64"){let p="";g.on("data",A=>{p+=A.toString().replace(/[\r\n]/gm,"");const i=p.length-p.length%4;f.push(Buffer.from(p.slice(0,i),"base64"));p=p.slice(i)});g.on("end",()=>{f.push(Buffer.from(p,"base64"));i.append(A,new V(f,E,{type:C}))})}else{g.on("data",A=>{f.push(A)});g.on("end",()=>{i.append(A,new V(f,E,{type:C}))})}});const p=new Promise((A,i)=>{g.on("finish",A);g.on("error",A=>i(new TypeError(A)))});if(this.body!==null)for await(const A of consumeBody(this[D].body))g.write(A);g.end();await p;return i}else if(/application\/x-www-form-urlencoded/.test(i)){let A;try{let i="";const g=new TextDecoder("utf-8",{ignoreBOM:true});for await(const A of consumeBody(this[D].body)){if(!M(A)){throw new TypeError("Expected Uint8Array chunk")}i+=g.decode(A,{stream:true})}i+=g.decode();A=new URLSearchParams(i)}catch(A){throw Object.assign(new TypeError,{cause:A})}const i=new b;for(const[g,E]of A){i.append(g,E)}return i}else{await Promise.resolve();throwIfAborted(this[D]);throw R.errors.exception({header:`${A.name}.formData`,message:"Could not parse content as FormData."})}}};return i}function mixinBody(A){Object.assign(A.prototype,bodyMixinMethods(A))}async function specConsumeBody(A,i,g){R.brandCheck(A,g);throwIfAborted(A[D]);if(bodyUnusable(A[D].body)){throw new TypeError("Body is unusable")}const E=I();const errorSteps=A=>E.reject(A);const successSteps=A=>{try{E.resolve(i(A))}catch(A){errorSteps(A)}};if(A[D].body==null){successSteps(new Uint8Array);return E.promise}await y(A[D].body,successSteps,errorSteps);return E.promise}function bodyUnusable(A){return A!=null&&(A.stream.locked||p.isDisturbed(A.stream))}function utf8DecodeBytes(A){if(A.length===0){return""}if(A[0]===239&&A[1]===187&&A[2]===191){A=A.subarray(3)}const i=j.decode(A);return i}function parseJSONFromBytes(A){return JSON.parse(utf8DecodeBytes(A))}function bodyMimeType(A){const{headersList:i}=A[D];const g=i.get("content-type");if(g===null){reLine truncated
/*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> */C[p-4]=this.maskKey[0];C[p-3]=this.maskKey[1];C[p-2]=this.maskKey[2];C[p-1]=this.maskKey[3];C[1]=g;if(g===126){C.writeUInt16BE(i,2)}else if(g===127){C[2]=C[3]=0;C.writeUIntBE(i,4,6)}C[1]|=128;for(let A=0;A<i;A++){C[p+A]=this.frameData[A]^this.maskKey[A%4]}return C}}A.exports={WebsocketFrameSend:WebsocketFrameSend}},5080:(A,i,g)=>{const{Writable:E}=g(2203);const p=g(1637);const{parserStates:C,opcodes:f,states:Q,emptyBuffer:B}=g(932);const{kReadyState:I,kSentClose:y,kResponse:b,kReceivedClose:D}=g(327);const{isValidStatusCode:R,failWebsocketConnection:k,websocketMessageReceived:S}=g(1501);const{WebsocketFrameSend:v}=g(9140);const F={};F.ping=p.channel("undici:websocket:ping");F.pong=p.channel("undici:websocket:pong");class ByteParser extends E{#n=[];#o=0;#a=C.INFO;#c={};#l=[];constructor(A){super();this.ws=A}_write(A,i,g){this.#n.push(A);this.#o+=A.length;this.run(g)}run(A){while(true){if(this.#a===C.INFO){if(this.#o<2){return A()}const i=this.consume(2);this.#c.fin=(i[0]&128)!==0;this.#c.opcode=i[0]&15;this.#c.originalOpcode??=this.#c.opcode;this.#c.fragmented=!this.#c.fin&&this.#c.opcode!==f.CONTINUATION;if(this.#c.fragmented&&this.#c.opcode!==f.BINARY&&this.#c.opcode!==f.TEXT){k(this.ws,"Invalid frame type was fragmented.");return}const g=i[1]&127;if(g<=125){this.#c.payloadLength=g;this.#a=C.READ_DATA}else if(g===126){this.#a=C.PAYLOADLENGTH_16}else if(g===127){this.#a=C.PAYLOADLENGTH_64}if(this.#c.fragmented&&g>125){k(this.ws,"Fragmented frame exceeded 125 bytes.");return}else if((this.#c.opcode===f.PING||this.#c.opcode===f.PONG||this.#c.opcode===f.CLOSE)&&g>125){k(this.ws,"Payload length for control frame exceeded 125 bytes.");return}else if(this.#c.opcode===f.CLOSE){if(g===1){k(this.ws,"Received close frame with a 1-byte body.");return}const A=this.consume(g);this.#c.closeInfo=this.parseCloseBody(false,A);if(!this.ws[y]){const A=Buffer.allocUnsafe(2);A.writeUInt16BE(this.#c.closeInfo.code,0);const i=new v(A);this.ws[b].socket.write(i.createFrame(f.CLOSE),A=>{if(!A){this.ws[y]=true}})}this.ws[I]=Q.CLOSING;this.ws[D]=true;this.end();return}else if(this.#c.opcode===f.PING){const i=this.consume(g);if(!this.ws[D]){const A=new v(i);this.ws[b].socket.write(A.createFrame(f.PONG));if(F.ping.hasSubscribers){F.ping.publish({payload:i})}}this.#a=C.INFO;if(this.#o>0){continue}else{A();return}}else if(this.#c.opcode===f.PONG){const i=this.consume(g);if(F.pong.hasSubscribers){F.pong.publish({payload:i})}if(this.#o>0){continue}else{A();return}}}else if(this.#a===C.PAYLOADLENGTH_16){if(this.#o<2){return A()}const i=this.consume(2);this.#c.payloadLength=i.readUInt16BE(0);this.#a=C.READ_DATA}else if(this.#a===C.PAYLOADLENGTH_64){if(this.#o<8){return A()}const i=this.consume(8);const g=i.readUInt32BE(0);if(g>2**31-1){k(this.ws,"Received payload length > 2^31 bytes.");return}const E=i.readUInt32BE(4);this.#c.payloadLength=(g<<8)+E;this.#a=C.READ_DATA}else if(this.#a===C.READ_DATA){if(this.#o<this.#c.payloadLength){return A()}else if(this.#o>=this.#c.payloadLength){const A=this.consume(this.#c.payloadLength);this.#l.push(A);if(!this.#c.fragmented||this.#c.fin&&this.#c.opcode===f.CONTINUATION){const A=Buffer.concat(this.#l);S(this.ws,this.#c.originalOpcode,A);this.#c={};this.#l.length=0}this.#a=C.INFO}}if(this.#o>0){continue}else{A();break}}}consume(A){if(A>this.#o){return null}else if(A===0){return B}if(this.#n[0].length===A){this.#o-=this.#n[0].length;return this.#n.shift()}const i=Buffer.allocUnsafe(A);let g=0;while(g!==A){const E=this.#n[0];const{length:p}=E;if(p+g===A){i.set(this.#n.shift(),g);break}else if(p+g>A){i.set(E.subarray(0,A-g),g);this.#n[0]=E.subarray(A-g);break}else{i.set(this.#n.shift(),g);g+=E.length}}this.#o-=A;return i}parseCloseBody(A,i){let g;if(i.length>=2){g=i.readUInt16BE(0)}if(A){if(!R(g)){return null}return{code:g}}let E=i.subarray(2);if(E[0]===239&&E[1]===187&&E[2]===191){E=E.subarray(3)}if(g!==undefined&&!R(g)){return null}try{E=new TextDecoder("utf-8",{fatal:true}).decode(E)}catch{return null}return{code:g,reason:E}}get closingInfo(){return this.#c.closeInfo}}A.exports={ByteParser:ByteParser}},327:A=>{A.exports={kWebSocketURL:Symbol("url"),kReadyState:Symbol("ready state"),kController:Symbol("controller"),kResponse:Symbol("response"),kBinaryType:Symbol("binary type"),kSentClose:Symbol("sent close"),kReceivedClose:Symbol("received close"),kByteParser:Symbol("byte parser")}},1501:(A,i,g)=>{const{kReadyState:E,kController:p,kResponse:C,kBinaryType:f,kWebSocketURL:Q}=g(327);const{states:B,opcodes:I}=g(932);const{MessageEvent:y,ErrorEvent:b}=g(7952);function isEstablished(A){return A[E]===B.OPEN}function isClosing(A){return A[E]===B.CLOSING}function isClosed(A){return A[E]===B.CLOSED}function fireEvent(A,i,g=Event,E){const p=new g(A,E);i.dispatchEvent(p)}function websocketMessageReceived(A,i,g){if(A[E]!==B.OPEN){return}let p;if(i===I.TEXT){try{p=new TextDecoder("utf-8",{fatal:true}).decode(g)}catch{failWebsocketConnection(A,"Received invLine truncated
/*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */;const escape=A=>A.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22");const normalizeLinefeeds=A=>A.replace(/\r?\n|\r/g,"\r\n");const E=[];const p=new Uint8Array([13,10]);y=0;let C=false;for(const[i,f]of A){if(typeof f==="string"){const A=H.encode(g+`; name="${escape(normalizeLinefeeds(i))}"`+`\r\n\r\n${normalizeLinefeeds(f)}\r\n`);E.push(A);y+=A.byteLength}else{const A=H.encode(`${g}; name="${escape(normalizeLinefeeds(i))}"`+(f.name?`; filename="${escape(f.name)}"`:"")+"\r\n"+`Content-Type: ${f.type||"application/octet-stream"}\r\n\r\n`);E.push(A,f,p);if(typeof f.size==="number"){y+=A.byteLength+f.size+p.byteLength}else{C=true}}}const f=H.encode(`--${i}--\r\n`);E.push(f);y+=f.byteLength;if(C){y=null}I=A;B=async function*(){for(const A of E){if(A.stream){yield*A.stream()}else{yield A}}};b=`multipart/form-data; boundary=${i}`}else if(C(A)){I=A;y=A.size;if(A.type){b=A.type}}else if(typeof A[Symbol.asyncIterator]==="function"){if(i){throw new TypeError("keepalive")}if(E.isDisturbed(A)||A.locked){throw new TypeError("Response body object should not be disturbed or locked")}g=A instanceof ReadableStream?A:p(A)}if(typeof I==="string"||E.isBuffer(I)){y=Buffer.byteLength(I)}if(B!=null){let i;g=new ReadableStream({async start(){i=B(A)[Symbol.asyncIterator]()},async pull(A){const{value:E,done:p}=await i.next();if(p){queueMicrotask(()=>{A.close();A.byobRequest?.respond(0)})}else{if(!F(g)){const i=new Uint8Array(E);if(i.byteLength){A.enqueue(i)}}}return A.desiredSize>0},async cancel(A){await i.return()},type:"bytes"})}const D={stream:g,source:I,length:y};return[D,b]}function safelyExtractBody(A,i=false){if(A instanceof ReadableStream){v(!E.isDisturbed(A),"The body has already been consumed.");v(!A.locked,"The stream is locked.")}return extractBody(A,i)}function cloneBody(A,i){const[g,E]=i.stream.tee();i.stream=g;return{stream:E,length:i.length,source:i.source}}function throwIfAborted(A){if(A.aborted){throw new DOMException("The operation was aborted.","AbortError")}}function bodyMixinMethods(A){const i={blob(){return consumeBody(this,A=>{let i=bodyMimeType(this);if(i===null){i=""}else if(i){i=L(i)}return new S([A],{type:i})},A)},arrayBuffer(){return consumeBody(this,A=>new Uint8Array(A).buffer,A)},text(){return consumeBody(this,b,A)},json(){return consumeBody(this,parseJSONFromBytes,A)},formData(){return consumeBody(this,A=>{const i=bodyMimeType(this);if(i!==null){switch(i.essence){case"multipart/form-data":{const g=M(A,i);if(g==="failure"){throw new TypeError("Failed to parse body as FormData.")}const E=new D;E[R]=g;return E}case"application/x-www-form-urlencoded":{const i=new URLSearchParams(A.toString());const g=new D;for(const[A,E]of i){g.append(A,E)}return g}}}throw new TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')},A)},bytes(){return consumeBody(this,A=>new Uint8Array(A),A)}};return i}function mixinBody(A){Object.assign(A.prototype,bodyMixinMethods(A))}async function consumeBody(A,i,g){k.brandCheck(A,g);if(bodyUnusable(A)){throw new TypeError("Body is unusable: Body has already been read")}throwIfAborted(A[R]);const E=B();const errorSteps=A=>E.reject(A);const successSteps=A=>{try{E.resolve(i(A))}catch(A){errorSteps(A)}};if(A[R].body==null){successSteps(Buffer.allocUnsafe(0));return E.promise}await I(A[R].body,successSteps,errorSteps);return E.promise}function bodyUnusable(A){const i=A[R].body;return i!=null&&(i.stream.locked||E.isDisturbed(i.stream))}function parseJSONFromBytes(A){return JSON.parse(b(A))}function bodyMimeType(A){const i=A[R].headersList;const g=y(i);if(g==="failure"){return null}return g}A.exports={extractBody:extractBody,safelyExtractBody:safelyExtractBody,cloneBody:cloneBody,mixinBody:mixinBody,streamRegistry:Y,hasFinalizationRegistry:G,bodyUnusable:bodyUnusable}},4578:A=>{const i=["GET","HEAD","POST"];const g=new Set(i);const E=[101,204,205,304];const p=[301,302,303,307,308];const C=new Set(p);const f=["1","7","9","11","13","15","17","19","20","21","22","23","25","37","42","43","53","69","77","79","87","95","101","102","103","104","109","110","111","113","115","117","119","123","135","137","139","143","161","179","389","427","465","512","513","514","515","526","530","531","532","540","548","554","556","563","587","601","636","989","990","993","995","1719","1720","1723","2049","3659","4045","4190","5060","5061","6000","6566","6665","6666","6667","6668","6669","6679","6697","10080"];const Q=new Set(f);const B=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"];const I=new Set(B);const y=["follow","manual","error"];const b=["GET","HEAD","OPTIONS","TRACE"];const D=new Set(b);const R=["navigate","same-origin","no-cors","cors"];const k=["omit","same-origin","include"];const S=["default","no-store","reload","no-cache","force-cache","onlLine truncated
/*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> */Q[f-4]=g[0];Q[f-3]=g[1];Q[f-2]=g[2];Q[f-1]=g[3];Q[1]=C;if(C===126){Q.writeUInt16BE(p,2)}else if(C===127){Q[2]=Q[3]=0;Q.writeUIntBE(p,4,6)}Q[1]|=128;for(let A=0;A<p;++A){Q[f+A]=i[A]^g[A&3]}return Q}}A.exports={WebsocketFrameSend:WebsocketFrameSend}},6286:(A,i,g)=>{const{createInflateRaw:E,Z_DEFAULT_WINDOWBITS:p}=g(8522);const{isValidClientWindowBits:C}=g(8098);const{MessageSizeExceededError:f}=g(6246);const Q=Buffer.from([0,0,255,255]);const B=Symbol("kBuffer");const I=Symbol("kLength");class PerMessageDeflate{#re;#S={};#ie=0;constructor(A,i){this.#S.serverNoContextTakeover=A.has("server_no_context_takeover");this.#S.serverMaxWindowBits=A.get("server_max_window_bits");this.#ie=i.maxPayloadSize}decompress(A,i,g){if(!this.#re){let A=p;if(this.#S.serverMaxWindowBits){if(!C(this.#S.serverMaxWindowBits)){g(new Error("Invalid server_max_window_bits"));return}A=Number.parseInt(this.#S.serverMaxWindowBits)}try{this.#re=E({windowBits:A})}catch(A){g(A);return}this.#re[B]=[];this.#re[I]=0;this.#re.on("data",A=>{this.#re[I]+=A.length;if(this.#ie>0&&this.#re[I]>this.#ie){g(new f);this.#re.removeAllListeners();this.#re=null;return}this.#re[B].push(A)});this.#re.on("error",A=>{this.#re=null;g(A)})}this.#re.write(A);if(i){this.#re.write(Q)}this.#re.flush(()=>{if(!this.#re){return}const A=Buffer.concat(this.#re[B],this.#re[I]);this.#re[B].length=0;this.#re[I]=0;g(null,A)})}}A.exports={PerMessageDeflate:PerMessageDeflate}},5975:(A,i,g)=>{const{Writable:E}=g(7075);const p=g(4589);const{parserStates:C,opcodes:f,states:Q,emptyBuffer:B,sentCloseFrameState:I}=g(8397);const{kReadyState:y,kSentClose:b,kResponse:D,kReceivedClose:R}=g(7609);const{channels:k}=g(9978);const{isValidStatusCode:S,isValidOpcode:v,failWebsocketConnection:F,websocketMessageReceived:x,utf8Decode:U,isControlFrame:L,isTextBinaryFrame:M,isContinuationFrame:T}=g(8098);const{WebsocketFrameSend:H}=g(9321);const{closeWebSocketConnection:G}=g(1874);const{PerMessageDeflate:Y}=g(6286);const{MessageSizeExceededError:J}=g(6246);function failWebsocketConnectionWithCode(A,i,g){G(A,i,g,Buffer.byteLength(g));F(A,g)}class ByteParser extends E{#n=[];#ne=0;#o=0;#oe=false;#a=C.INFO;#c={};#l=[];#d;#ae;#ie;constructor(A,i,g={}){super();this.ws=A;this.#d=i==null?new Map:i;this.#ae=g.maxFragments??0;this.#ie=g.maxPayloadSize??0;if(this.#d.has("permessage-deflate")){this.#d.set("permessage-deflate",new Y(i,g))}}_write(A,i,g){this.#n.push(A);this.#o+=A.length;this.#oe=true;this.run(g)}#ce(){if(this.#ie>0&&!L(this.#c.opcode)&&this.#c.payloadLength+this.#ne>this.#ie){failWebsocketConnectionWithCode(this.ws,1009,"Payload size exceeds maximum allowed size");return false}return true}run(A){while(this.#oe){if(this.#a===C.INFO){if(this.#o<2){return A()}const i=this.consume(2);const g=(i[0]&128)!==0;const E=i[0]&15;const p=(i[1]&128)===128;const Q=!g&&E!==f.CONTINUATION;const B=i[1]&127;const I=i[0]&64;const y=i[0]&32;const b=i[0]&16;if(!v(E)){F(this.ws,"Invalid opcode received");return A()}if(p){F(this.ws,"Frame cannot be masked");return A()}if(I!==0&&!this.#d.has("permessage-deflate")){F(this.ws,"Expected RSV1 to be clear.");return}if(y!==0||b!==0){F(this.ws,"RSV1, RSV2, RSV3 must be clear");return}if(Q&&!M(E)){F(this.ws,"Invalid frame type was fragmented.");return}if(M(E)&&this.#l.length>0){F(this.ws,"Expected continuation frame");return}if(this.#c.fragmented&&Q){F(this.ws,"Fragmented frame exceeded 125 bytes.");return}if((B>125||Q)&&L(E)){F(this.ws,"Control frame either too large or fragmented");return}if(T(E)&&this.#l.length===0&&!this.#c.compressed){F(this.ws,"Unexpected continuation frame");return}if(B<=125){this.#c.payloadLength=B;this.#a=C.READ_DATA;if(!this.#ce()){return}}else if(B===126){this.#a=C.PAYLOADLENGTH_16}else if(B===127){this.#a=C.PAYLOADLENGTH_64}if(M(E)){this.#c.binaryType=E;this.#c.compressed=I!==0}this.#c.opcode=E;this.#c.masked=p;this.#c.fin=g;this.#c.fragmented=Q}else if(this.#a===C.PAYLOADLENGTH_16){if(this.#o<2){return A()}const i=this.consume(2);this.#c.payloadLength=i.readUInt16BE(0);this.#a=C.READ_DATA;if(!this.#ce()){return}}else if(this.#a===C.PAYLOADLENGTH_64){if(this.#o<8){return A()}const i=this.consume(8);const g=i.readUInt32BE(0);const E=i.readUInt32BE(4);if(g!==0||E>2**31-1){F(this.ws,"Received payload length > 2^31 bytes.");return}this.#c.payloadLength=E;this.#a=C.READ_DATA;if(!this.#ce()){return}}else if(this.#a===C.READ_DATA){if(this.#o<this.#c.payloadLength){return A()}const i=this.consume(this.#c.payloadLength);if(L(this.#c.opcode)){this.#oe=this.parseControlFrame(i);this.#a=C.INFO}else{if(!this.#c.compressed){if(!this.writeFragments(i)){return}if(this.#ie>0&&this.#ne>this.#ie){failWebsocketConnectionWithCode(this.ws,1009,(new J).message);return}if(!this.#c.fragmented&&this.#c.fin){x(this.ws,this.#c.binaryType,this.consumeFragments())}this.#a=C.INFO}else{this.#d.get("permessage-deflate").decompress(i,this.#c.fin,(i,g)=>{if(i){const A=i instanceof J?1009:1007;failWebsocketConnectionWithCLine truncated
const d=u(9896);const E=u(857);const C=u(6928);const Q=u(6982);const B={fs:d.constants,os:E.constants};const I="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",m=/XXXXXX/,y=3,b=(B.O_CREAT||B.fs.O_CREAT)|(B.O_EXCL||B.fs.O_EXCL)|(B.O_RDWR||B.fs.O_RDWR),D=E.platform()==="win32",R=B.EBADF||B.os.errno.EBADF,k=B.ENOENT||B.os.errno.ENOENT,S=448,v=384,x="exit",N=[],L=d.rmdirSync.bind(d);let M=false;function rimraf(t,A){return d.rm(t,{recursive:true},A)}function FN_RIMRAF_SYNC(t){return d.rmSync(t,{recursive:true})}function tmpName(t,A){const u=_parseArguments(t,A),E=u[0],C=u[1];_assertAndSanitizeOptions(E,function(t,A){if(t)return C(t);let u=A.tries;(function _getUniqueName(){try{const t=_generateTmpName(A);d.stat(t,function(A){if(!A){if(u-- >0)return _getUniqueName();return C(new Error("Could not get a unique tmp filename, max tries reached "+t))}C(null,t)})}catch(t){C(t)}})()})}function tmpNameSync(t){const A=_parseArguments(t),u=A[0];const E=_assertAndSanitizeOptionsSync(u);let C=E.tries;do{const t=_generateTmpName(E);try{d.statSync(t)}catch(A){return t}}while(C-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function file(t,A){const u=_parseArguments(t,A),E=u[0],C=u[1];tmpName(E,function _tmpNameCreated(t,A){if(t)return C(t);d.open(A,b,E.mode||v,function _fileCreated(t,u){if(t)return C(t);if(E.discardDescriptor){return d.close(u,function _discardCallback(t){return C(t,A,undefined,_prepareTmpFileRemoveCallback(A,-1,E,false))})}else{const t=E.discardDescriptor||E.detachDescriptor;C(null,A,u,_prepareTmpFileRemoveCallback(A,t?-1:u,E,false))}})})}function fileSync(t){const A=_parseArguments(t),u=A[0];const E=u.discardDescriptor||u.detachDescriptor;const C=tmpNameSync(u);let Q=d.openSync(C,b,u.mode||v);if(u.discardDescriptor){d.closeSync(Q);Q=undefined}return{name:C,fd:Q,removeCallback:_prepareTmpFileRemoveCallback(C,E?-1:Q,u,true)}}function dir(t,A){const u=_parseArguments(t,A),E=u[0],C=u[1];tmpName(E,function _tmpNameCreated(t,A){if(t)return C(t);d.mkdir(A,E.mode||S,function _dirCreated(t){if(t)return C(t);C(null,A,_prepareTmpDirRemoveCallback(A,E,false))})})}function dirSync(t){const A=_parseArguments(t),u=A[0];const E=tmpNameSync(u);d.mkdirSync(E,u.mode||S);return{name:E,removeCallback:_prepareTmpDirRemoveCallback(E,u,true)}}function _removeFileAsync(t,A){const _handler=function(t){if(t&&!_isENOENT(t)){return A(t)}A()};if(0<=t[0])d.close(t[0],function(){d.unlink(t[1],_handler)});else d.unlink(t[1],_handler)}function _removeFileSync(t){let A=null;try{if(0<=t[0])d.closeSync(t[0])}catch(t){if(!_isEBADF(t)&&!_isENOENT(t))throw t}finally{try{d.unlinkSync(t[1])}catch(t){if(!_isENOENT(t))A=t}}if(A!==null){throw A}}function _prepareTmpFileRemoveCallback(t,A,u,d){const E=_prepareRemoveCallback(_removeFileSync,[A,t],d);const C=_prepareRemoveCallback(_removeFileAsync,[A,t],d,E);if(!u.keep)N.unshift(E);return d?E:C}function _prepareTmpDirRemoveCallback(t,A,u){const E=A.unsafeCleanup?rimraf:d.rmdir.bind(d);const C=A.unsafeCleanup?FN_RIMRAF_SYNC:L;const Q=_prepareRemoveCallback(C,t,u);const B=_prepareRemoveCallback(E,t,u,Q);if(!A.keep)N.unshift(Q);return u?Q:B}function _prepareRemoveCallback(t,A,u,d){let E=false;return function _cleanupCallback(C){if(!E){const Q=d||_cleanupCallback;const B=N.indexOf(Q);if(B>=0)N.splice(B,1);E=true;if(u||t===L||t===FN_RIMRAF_SYNC){return t(A)}else{return t(A,C||function(){})}}}}function _garbageCollector(){if(!M)return;while(N.length){try{N[0]()}catch(t){}}}function _randomChars(t){let A=[],u=null;try{u=Q.randomBytes(t)}catch(A){u=Q.pseudoRandomBytes(t)}for(let d=0;d<t;d++){A.push(I[u[d]%I.length])}return A.join("")}function _isUndefined(t){return typeof t==="undefined"}function _parseArguments(t,A){if(typeof t==="function"){return[{},t]}if(_isUndefined(t)){return[{},A]}const u={};for(const A of Object.getOwnPropertyNames(t)){u[A]=t[A]}return[u,A]}function _resolvePath(t,A,u){const E=C.isAbsolute(t)?t:C.join(A,t);d.stat(E,function(t){if(t){d.realpath(C.dirname(E),function(t,A){if(t)return u(t);u(null,C.join(A,C.basename(E)))})}else{d.realpath(E,u)}})}function _resolvePathSync(t,A){const u=C.isAbsolute(t)?t:C.join(A,t);try{d.statSync(u);return d.realpathSync(u)}catch(t){const A=d.realpathSync(C.dirname(u));return C.join(A,C.basename(u))}}function _generateTmpName(t){const A=t.tmpdir;if(!_isUndefined(t.name)){return C.join(A,t.dir,t.name)}if(!_isUndefined(t.template)){return C.join(A,t.dir,t.template).replace(m,_randomChars(6))}const u=[t.prefix?t.prefix:"tmp","-",process.pid,"-",_randomChars(12),t.postfix?"-"+t.postfix:""].join("");return C.join(A,t.dir,u)}function _assertPath(t,A){if(typeof A!=="string"){throw new Error(`${t} option must be a string, got "${typeof A}".`)}if(A.includes("..")){throw new Error("Relative value not allowed")}return A}function _assertOptionsBase(t){if(!_isUndefined(t.name)){const A=t.name;if(C.isAbsolute(A))throw new Error(`name option must not contain an absolute path, found "${A}".`);const u=C.basename(A);if(u===".."Line truncated
/*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */;const escape=t=>t.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22");const normalizeLinefeeds=t=>t.replace(/\r?\n|\r/g,"\r\n");const d=[];const E=new Uint8Array([13,10]);b=0;let C=false;for(const[A,Q]of t){if(typeof Q==="string"){const t=q.encode(u+`; name="${escape(normalizeLinefeeds(A))}"`+`\r\n\r\n${normalizeLinefeeds(Q)}\r\n`);d.push(t);b+=t.byteLength}else{const t=q.encode(`${u}; name="${escape(normalizeLinefeeds(A))}"`+(Q.name?`; filename="${escape(Q.name)}"`:"")+"\r\n"+`Content-Type: ${Q.type||"application/octet-stream"}\r\n\r\n`);d.push(t,Q,E);if(typeof Q.size==="number"){b+=t.byteLength+Q.size+E.byteLength}else{C=true}}}const Q=q.encode(`--${A}--`);d.push(Q);b+=Q.byteLength;if(C){b=null}y=t;m=async function*(){for(const t of d){if(t.stream){yield*t.stream()}else{yield t}}};D="multipart/form-data; boundary="+A}else if(Q(t)){y=t;b=t.size;if(t.type){D=t.type}}else if(typeof t[Symbol.asyncIterator]==="function"){if(A){throw new TypeError("keepalive")}if(E.isDisturbed(t)||t.locked){throw new TypeError("Response body object should not be disturbed or locked")}d=t instanceof P?t:C(t)}if(typeof y==="string"||E.isBuffer(y)){b=Buffer.byteLength(y)}if(m!=null){let A;d=new P({async start(){A=m(t)[Symbol.asyncIterator]()},async pull(t){const{value:u,done:E}=await A.next();if(E){queueMicrotask(()=>{t.close()})}else{if(!M(d)){t.enqueue(new Uint8Array(u))}}return t.desiredSize>0},async cancel(t){await A.return()},type:undefined})}const R={stream:d,source:y,length:b};return[R,D]}function safelyExtractBody(t,A=false){if(!P){P=u(3774).ReadableStream}if(t instanceof P){L(!E.isDisturbed(t),"The body has already been consumed.");L(!t.locked,"The stream is locked.")}return extractBody(t,A)}function cloneBody(t){const[A,u]=t.stream.tee();const d=S(u,{transfer:[u]});const[,E]=d.tee();t.stream=A;return{stream:E,length:t.length,source:t.source}}async function*consumeBody(t){if(t){if(T(t)){yield t}else{const A=t.stream;if(E.isDisturbed(A)){throw new TypeError("The body has already been consumed.")}if(A.locked){throw new TypeError("The stream is locked.")}A[N]=true;yield*A}}}function throwIfAborted(t){if(t.aborted){throw new k("The operation was aborted.","AbortError")}}function bodyMixinMethods(t){const A={blob(){return specConsumeBody(this,t=>{let A=bodyMimeType(this);if(A==="failure"){A=""}else if(A){A=O(A)}return new v([t],{type:A})},t)},arrayBuffer(){return specConsumeBody(this,t=>new Uint8Array(t).buffer,t)},text(){return specConsumeBody(this,utf8DecodeBytes,t)},json(){return specConsumeBody(this,parseJSONFromBytes,t)},async formData(){R.brandCheck(this,t);throwIfAborted(this[D]);const A=this.headers.get("Content-Type");if(/multipart\/form-data/.test(A)){const t={};for(const[A,u]of this.headers)t[A.toLowerCase()]=u;const A=new b;let u;try{u=new d({headers:t,preservePath:true})}catch(t){throw new k(`${t}`,"AbortError")}u.on("field",(t,u)=>{A.append(t,u)});u.on("file",(t,u,d,E,C)=>{const Q=[];if(E==="base64"||E.toLowerCase()==="base64"){let E="";u.on("data",t=>{E+=t.toString().replace(/[\r\n]/gm,"");const A=E.length-E.length%4;Q.push(Buffer.from(E.slice(0,A),"base64"));E=E.slice(A)});u.on("end",()=>{Q.push(Buffer.from(E,"base64"));A.append(t,new W(Q,d,{type:C}))})}else{u.on("data",t=>{Q.push(t)});u.on("end",()=>{A.append(t,new W(Q,d,{type:C}))})}});const E=new Promise((t,A)=>{u.on("finish",t);u.on("error",t=>A(new TypeError(t)))});if(this.body!==null)for await(const t of consumeBody(this[D].body))u.write(t);u.end();await E;return A}else if(/application\/x-www-form-urlencoded/.test(A)){let t;try{let A="";const u=new TextDecoder("utf-8",{ignoreBOM:true});for await(const t of consumeBody(this[D].body)){if(!T(t)){throw new TypeError("Expected Uint8Array chunk")}A+=u.decode(t,{stream:true})}A+=u.decode();t=new URLSearchParams(A)}catch(t){throw Object.assign(new TypeError,{cause:t})}const A=new b;for(const[u,d]of t){A.append(u,d)}return A}else{await Promise.resolve();throwIfAborted(this[D]);throw R.errors.exception({header:`${t.name}.formData`,message:"Could not parse content as FormData."})}}};return A}function mixinBody(t){Object.assign(t.prototype,bodyMixinMethods(t))}async function specConsumeBody(t,A,u){R.brandCheck(t,u);throwIfAborted(t[D]);if(bodyUnusable(t[D].body)){throw new TypeError("Body is unusable")}const d=m();const errorSteps=t=>d.reject(t);const successSteps=t=>{try{d.resolve(A(t))}catch(t){errorSteps(t)}};if(t[D].body==null){successSteps(new Uint8Array);return d.promise}await y(t[D].body,successSteps,errorSteps);return d.promise}function bodyUnusable(t){return t!=null&&(t.stream.locked||E.isDisturbed(t.stream))}function utf8DecodeBytes(t){if(t.length===0){return""}if(t[0]===239&&t[1]===187&&t[2]===191){t=t.subarray(3)}const A=j.decode(t);return A}function parseJSONFromBytes(t){return JSON.parse(utf8DecodeBytes(t))}function bodyMimeType(t){const{headersList:A}=t[D];const u=A.get("content-type");if(u===null){reLine truncated
/*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> */C[E-4]=this.maskKey[0];C[E-3]=this.maskKey[1];C[E-2]=this.maskKey[2];C[E-1]=this.maskKey[3];C[1]=u;if(u===126){C.writeUInt16BE(A,2)}else if(u===127){C[2]=C[3]=0;C.writeUIntBE(A,4,6)}C[1]|=128;for(let t=0;t<A;t++){C[E+t]=this.frameData[t]^this.maskKey[t%4]}return C}}t.exports={WebsocketFrameSend:WebsocketFrameSend}},5080:(t,A,u)=>{const{Writable:d}=u(2203);const E=u(1637);const{parserStates:C,opcodes:Q,states:B,emptyBuffer:I}=u(932);const{kReadyState:m,kSentClose:y,kResponse:b,kReceivedClose:D}=u(327);const{isValidStatusCode:R,failWebsocketConnection:k,websocketMessageReceived:S}=u(1501);const{WebsocketFrameSend:v}=u(9140);const x={};x.ping=E.channel("undici:websocket:ping");x.pong=E.channel("undici:websocket:pong");class ByteParser extends d{#n=[];#o=0;#a=C.INFO;#c={};#l=[];constructor(t){super();this.ws=t}_write(t,A,u){this.#n.push(t);this.#o+=t.length;this.run(u)}run(t){while(true){if(this.#a===C.INFO){if(this.#o<2){return t()}const A=this.consume(2);this.#c.fin=(A[0]&128)!==0;this.#c.opcode=A[0]&15;this.#c.originalOpcode??=this.#c.opcode;this.#c.fragmented=!this.#c.fin&&this.#c.opcode!==Q.CONTINUATION;if(this.#c.fragmented&&this.#c.opcode!==Q.BINARY&&this.#c.opcode!==Q.TEXT){k(this.ws,"Invalid frame type was fragmented.");return}const u=A[1]&127;if(u<=125){this.#c.payloadLength=u;this.#a=C.READ_DATA}else if(u===126){this.#a=C.PAYLOADLENGTH_16}else if(u===127){this.#a=C.PAYLOADLENGTH_64}if(this.#c.fragmented&&u>125){k(this.ws,"Fragmented frame exceeded 125 bytes.");return}else if((this.#c.opcode===Q.PING||this.#c.opcode===Q.PONG||this.#c.opcode===Q.CLOSE)&&u>125){k(this.ws,"Payload length for control frame exceeded 125 bytes.");return}else if(this.#c.opcode===Q.CLOSE){if(u===1){k(this.ws,"Received close frame with a 1-byte body.");return}const t=this.consume(u);this.#c.closeInfo=this.parseCloseBody(false,t);if(!this.ws[y]){const t=Buffer.allocUnsafe(2);t.writeUInt16BE(this.#c.closeInfo.code,0);const A=new v(t);this.ws[b].socket.write(A.createFrame(Q.CLOSE),t=>{if(!t){this.ws[y]=true}})}this.ws[m]=B.CLOSING;this.ws[D]=true;this.end();return}else if(this.#c.opcode===Q.PING){const A=this.consume(u);if(!this.ws[D]){const t=new v(A);this.ws[b].socket.write(t.createFrame(Q.PONG));if(x.ping.hasSubscribers){x.ping.publish({payload:A})}}this.#a=C.INFO;if(this.#o>0){continue}else{t();return}}else if(this.#c.opcode===Q.PONG){const A=this.consume(u);if(x.pong.hasSubscribers){x.pong.publish({payload:A})}if(this.#o>0){continue}else{t();return}}}else if(this.#a===C.PAYLOADLENGTH_16){if(this.#o<2){return t()}const A=this.consume(2);this.#c.payloadLength=A.readUInt16BE(0);this.#a=C.READ_DATA}else if(this.#a===C.PAYLOADLENGTH_64){if(this.#o<8){return t()}const A=this.consume(8);const u=A.readUInt32BE(0);if(u>2**31-1){k(this.ws,"Received payload length > 2^31 bytes.");return}const d=A.readUInt32BE(4);this.#c.payloadLength=(u<<8)+d;this.#a=C.READ_DATA}else if(this.#a===C.READ_DATA){if(this.#o<this.#c.payloadLength){return t()}else if(this.#o>=this.#c.payloadLength){const t=this.consume(this.#c.payloadLength);this.#l.push(t);if(!this.#c.fragmented||this.#c.fin&&this.#c.opcode===Q.CONTINUATION){const t=Buffer.concat(this.#l);S(this.ws,this.#c.originalOpcode,t);this.#c={};this.#l.length=0}this.#a=C.INFO}}if(this.#o>0){continue}else{t();break}}}consume(t){if(t>this.#o){return null}else if(t===0){return I}if(this.#n[0].length===t){this.#o-=this.#n[0].length;return this.#n.shift()}const A=Buffer.allocUnsafe(t);let u=0;while(u!==t){const d=this.#n[0];const{length:E}=d;if(E+u===t){A.set(this.#n.shift(),u);break}else if(E+u>t){A.set(d.subarray(0,t-u),u);this.#n[0]=d.subarray(t-u);break}else{A.set(this.#n.shift(),u);u+=d.length}}this.#o-=t;return A}parseCloseBody(t,A){let u;if(A.length>=2){u=A.readUInt16BE(0)}if(t){if(!R(u)){return null}return{code:u}}let d=A.subarray(2);if(d[0]===239&&d[1]===187&&d[2]===191){d=d.subarray(3)}if(u!==undefined&&!R(u)){return null}try{d=new TextDecoder("utf-8",{fatal:true}).decode(d)}catch{return null}return{code:u,reason:d}}get closingInfo(){return this.#c.closeInfo}}t.exports={ByteParser:ByteParser}},327:t=>{t.exports={kWebSocketURL:Symbol("url"),kReadyState:Symbol("ready state"),kController:Symbol("controller"),kResponse:Symbol("response"),kBinaryType:Symbol("binary type"),kSentClose:Symbol("sent close"),kReceivedClose:Symbol("received close"),kByteParser:Symbol("byte parser")}},1501:(t,A,u)=>{const{kReadyState:d,kController:E,kResponse:C,kBinaryType:Q,kWebSocketURL:B}=u(327);const{states:I,opcodes:m}=u(932);const{MessageEvent:y,ErrorEvent:b}=u(7952);function isEstablished(t){return t[d]===I.OPEN}function isClosing(t){return t[d]===I.CLOSING}function isClosed(t){return t[d]===I.CLOSED}function fireEvent(t,A,u=Event,d){const E=new u(t,d);A.dispatchEvent(E)}function websocketMessageReceived(t,A,u){if(t[d]!==I.OPEN){return}let E;if(A===m.TEXT){try{E=new TextDecoder("utf-8",{fatal:true}).decode(u)}catch{failWebsocketConnection(t,"Received invLine truncated
/*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */;const escape=t=>t.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22");const normalizeLinefeeds=t=>t.replace(/\r?\n|\r/g,"\r\n");const d=[];const E=new Uint8Array([13,10]);y=0;let C=false;for(const[A,Q]of t){if(typeof Q==="string"){const t=G.encode(u+`; name="${escape(normalizeLinefeeds(A))}"`+`\r\n\r\n${normalizeLinefeeds(Q)}\r\n`);d.push(t);y+=t.byteLength}else{const t=G.encode(`${u}; name="${escape(normalizeLinefeeds(A))}"`+(Q.name?`; filename="${escape(Q.name)}"`:"")+"\r\n"+`Content-Type: ${Q.type||"application/octet-stream"}\r\n\r\n`);d.push(t,Q,E);if(typeof Q.size==="number"){y+=t.byteLength+Q.size+E.byteLength}else{C=true}}}const Q=G.encode(`--${A}--\r\n`);d.push(Q);y+=Q.byteLength;if(C){y=null}m=t;I=async function*(){for(const t of d){if(t.stream){yield*t.stream()}else{yield t}}};b=`multipart/form-data; boundary=${A}`}else if(C(t)){m=t;y=t.size;if(t.type){b=t.type}}else if(typeof t[Symbol.asyncIterator]==="function"){if(A){throw new TypeError("keepalive")}if(d.isDisturbed(t)||t.locked){throw new TypeError("Response body object should not be disturbed or locked")}u=t instanceof ReadableStream?t:E(t)}if(typeof m==="string"||d.isBuffer(m)){y=Buffer.byteLength(m)}if(I!=null){let A;u=new ReadableStream({async start(){A=I(t)[Symbol.asyncIterator]()},async pull(t){const{value:d,done:E}=await A.next();if(E){queueMicrotask(()=>{t.close();t.byobRequest?.respond(0)})}else{if(!x(u)){const A=new Uint8Array(d);if(A.byteLength){t.enqueue(A)}}}return t.desiredSize>0},async cancel(t){await A.return()},type:"bytes"})}const D={stream:u,source:m,length:y};return[D,b]}function safelyExtractBody(t,A=false){if(t instanceof ReadableStream){v(!d.isDisturbed(t),"The body has already been consumed.");v(!t.locked,"The stream is locked.")}return extractBody(t,A)}function cloneBody(t,A){const[u,d]=A.stream.tee();A.stream=u;return{stream:d,length:A.length,source:A.source}}function throwIfAborted(t){if(t.aborted){throw new DOMException("The operation was aborted.","AbortError")}}function bodyMixinMethods(t){const A={blob(){return consumeBody(this,t=>{let A=bodyMimeType(this);if(A===null){A=""}else if(A){A=M(A)}return new S([t],{type:A})},t)},arrayBuffer(){return consumeBody(this,t=>new Uint8Array(t).buffer,t)},text(){return consumeBody(this,b,t)},json(){return consumeBody(this,parseJSONFromBytes,t)},formData(){return consumeBody(this,t=>{const A=bodyMimeType(this);if(A!==null){switch(A.essence){case"multipart/form-data":{const u=T(t,A);if(u==="failure"){throw new TypeError("Failed to parse body as FormData.")}const d=new D;d[R]=u;return d}case"application/x-www-form-urlencoded":{const A=new URLSearchParams(t.toString());const u=new D;for(const[t,d]of A){u.append(t,d)}return u}}}throw new TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')},t)},bytes(){return consumeBody(this,t=>new Uint8Array(t),t)}};return A}function mixinBody(t){Object.assign(t.prototype,bodyMixinMethods(t))}async function consumeBody(t,A,u){k.brandCheck(t,u);if(bodyUnusable(t)){throw new TypeError("Body is unusable: Body has already been read")}throwIfAborted(t[R]);const d=I();const errorSteps=t=>d.reject(t);const successSteps=t=>{try{d.resolve(A(t))}catch(t){errorSteps(t)}};if(t[R].body==null){successSteps(Buffer.allocUnsafe(0));return d.promise}await m(t[R].body,successSteps,errorSteps);return d.promise}function bodyUnusable(t){const A=t[R].body;return A!=null&&(A.stream.locked||d.isDisturbed(A.stream))}function parseJSONFromBytes(t){return JSON.parse(b(t))}function bodyMimeType(t){const A=t[R].headersList;const u=y(A);if(u==="failure"){return null}return u}t.exports={extractBody:extractBody,safelyExtractBody:safelyExtractBody,cloneBody:cloneBody,mixinBody:mixinBody,streamRegistry:O,hasFinalizationRegistry:Y,bodyUnusable:bodyUnusable}},4578:t=>{const A=["GET","HEAD","POST"];const u=new Set(A);const d=[101,204,205,304];const E=[301,302,303,307,308];const C=new Set(E);const Q=["1","7","9","11","13","15","17","19","20","21","22","23","25","37","42","43","53","69","77","79","87","95","101","102","103","104","109","110","111","113","115","117","119","123","135","137","139","143","161","179","389","427","465","512","513","514","515","526","530","531","532","540","548","554","556","563","587","601","636","989","990","993","995","1719","1720","1723","2049","3659","4045","4190","5060","5061","6000","6566","6665","6666","6667","6668","6669","6679","6697","10080"];const B=new Set(Q);const I=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"];const m=new Set(I);const y=["follow","manual","error"];const b=["GET","HEAD","OPTIONS","TRACE"];const D=new Set(b);const R=["navigate","same-origin","no-cors","cors"];const k=["omit","same-origin","include"];const S=["default","no-store","reload","no-cache","force-cache","onlLine truncated
/*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> */B[Q-4]=u[0];B[Q-3]=u[1];B[Q-2]=u[2];B[Q-1]=u[3];B[1]=C;if(C===126){B.writeUInt16BE(E,2)}else if(C===127){B[2]=B[3]=0;B.writeUIntBE(E,4,6)}B[1]|=128;for(let t=0;t<E;++t){B[Q+t]=A[t]^u[t&3]}return B}}t.exports={WebsocketFrameSend:WebsocketFrameSend}},6286:(t,A,u)=>{const{createInflateRaw:d,Z_DEFAULT_WINDOWBITS:E}=u(8522);const{isValidClientWindowBits:C}=u(8098);const{MessageSizeExceededError:Q}=u(6246);const B=Buffer.from([0,0,255,255]);const I=Symbol("kBuffer");const m=Symbol("kLength");class PerMessageDeflate{#re;#S={};#ie=0;constructor(t,A){this.#S.serverNoContextTakeover=t.has("server_no_context_takeover");this.#S.serverMaxWindowBits=t.get("server_max_window_bits");this.#ie=A.maxPayloadSize}decompress(t,A,u){if(!this.#re){let t=E;if(this.#S.serverMaxWindowBits){if(!C(this.#S.serverMaxWindowBits)){u(new Error("Invalid server_max_window_bits"));return}t=Number.parseInt(this.#S.serverMaxWindowBits)}try{this.#re=d({windowBits:t})}catch(t){u(t);return}this.#re[I]=[];this.#re[m]=0;this.#re.on("data",t=>{this.#re[m]+=t.length;if(this.#ie>0&&this.#re[m]>this.#ie){u(new Q);this.#re.removeAllListeners();this.#re=null;return}this.#re[I].push(t)});this.#re.on("error",t=>{this.#re=null;u(t)})}this.#re.write(t);if(A){this.#re.write(B)}this.#re.flush(()=>{if(!this.#re){return}const t=Buffer.concat(this.#re[I],this.#re[m]);this.#re[I].length=0;this.#re[m]=0;u(null,t)})}}t.exports={PerMessageDeflate:PerMessageDeflate}},5975:(t,A,u)=>{const{Writable:d}=u(7075);const E=u(4589);const{parserStates:C,opcodes:Q,states:B,emptyBuffer:I,sentCloseFrameState:m}=u(8397);const{kReadyState:y,kSentClose:b,kResponse:D,kReceivedClose:R}=u(7609);const{channels:k}=u(9978);const{isValidStatusCode:S,isValidOpcode:v,failWebsocketConnection:x,websocketMessageReceived:N,utf8Decode:L,isControlFrame:M,isTextBinaryFrame:T,isContinuationFrame:H}=u(8098);const{WebsocketFrameSend:G}=u(9321);const{closeWebSocketConnection:Y}=u(1874);const{PerMessageDeflate:O}=u(6286);const{MessageSizeExceededError:_}=u(6246);function failWebsocketConnectionWithCode(t,A,u){Y(t,A,u,Buffer.byteLength(u));x(t,u)}class ByteParser extends d{#n=[];#ne=0;#o=0;#oe=false;#a=C.INFO;#c={};#l=[];#d;#ae;#ie;constructor(t,A,u={}){super();this.ws=t;this.#d=A==null?new Map:A;this.#ae=u.maxFragments??0;this.#ie=u.maxPayloadSize??0;if(this.#d.has("permessage-deflate")){this.#d.set("permessage-deflate",new O(A,u))}}_write(t,A,u){this.#n.push(t);this.#o+=t.length;this.#oe=true;this.run(u)}#ce(){if(this.#ie>0&&!M(this.#c.opcode)&&this.#c.payloadLength+this.#ne>this.#ie){failWebsocketConnectionWithCode(this.ws,1009,"Payload size exceeds maximum allowed size");return false}return true}run(t){while(this.#oe){if(this.#a===C.INFO){if(this.#o<2){return t()}const A=this.consume(2);const u=(A[0]&128)!==0;const d=A[0]&15;const E=(A[1]&128)===128;const B=!u&&d!==Q.CONTINUATION;const I=A[1]&127;const m=A[0]&64;const y=A[0]&32;const b=A[0]&16;if(!v(d)){x(this.ws,"Invalid opcode received");return t()}if(E){x(this.ws,"Frame cannot be masked");return t()}if(m!==0&&!this.#d.has("permessage-deflate")){x(this.ws,"Expected RSV1 to be clear.");return}if(y!==0||b!==0){x(this.ws,"RSV1, RSV2, RSV3 must be clear");return}if(B&&!T(d)){x(this.ws,"Invalid frame type was fragmented.");return}if(T(d)&&this.#l.length>0){x(this.ws,"Expected continuation frame");return}if(this.#c.fragmented&&B){x(this.ws,"Fragmented frame exceeded 125 bytes.");return}if((I>125||B)&&M(d)){x(this.ws,"Control frame either too large or fragmented");return}if(H(d)&&this.#l.length===0&&!this.#c.compressed){x(this.ws,"Unexpected continuation frame");return}if(I<=125){this.#c.payloadLength=I;this.#a=C.READ_DATA;if(!this.#ce()){return}}else if(I===126){this.#a=C.PAYLOADLENGTH_16}else if(I===127){this.#a=C.PAYLOADLENGTH_64}if(T(d)){this.#c.binaryType=d;this.#c.compressed=m!==0}this.#c.opcode=d;this.#c.masked=E;this.#c.fin=u;this.#c.fragmented=B}else if(this.#a===C.PAYLOADLENGTH_16){if(this.#o<2){return t()}const A=this.consume(2);this.#c.payloadLength=A.readUInt16BE(0);this.#a=C.READ_DATA;if(!this.#ce()){return}}else if(this.#a===C.PAYLOADLENGTH_64){if(this.#o<8){return t()}const A=this.consume(8);const u=A.readUInt32BE(0);const d=A.readUInt32BE(4);if(u!==0||d>2**31-1){x(this.ws,"Received payload length > 2^31 bytes.");return}this.#c.payloadLength=d;this.#a=C.READ_DATA;if(!this.#ce()){return}}else if(this.#a===C.READ_DATA){if(this.#o<this.#c.payloadLength){return t()}const A=this.consume(this.#c.payloadLength);if(M(this.#c.opcode)){this.#oe=this.parseControlFrame(A);this.#a=C.INFO}else{if(!this.#c.compressed){if(!this.writeFragments(A)){return}if(this.#ie>0&&this.#ne>this.#ie){failWebsocketConnectionWithCode(this.ws,1009,(new _).message);return}if(!this.#c.fragmented&&this.#c.fin){N(this.ws,this.#c.binaryType,this.consumeFragments())}this.#a=C.INFO}else{this.#d.get("permessage-deflate").decompress(A,this.#c.fin,(A,u)=>{if(A){const t=A instanceof _?1009:1007;failWebsocketConnectionWithCLine truncated
+5 -5
View File
@@ -3,7 +3,7 @@
"version": "0.2.1",
"description": "Deploys screeps code to the official game or a private server.",
"type": "module",
"packageManager": "pnpm@11.21.0",
"packageManager": "pnpm@11.25.0",
"main": "index.js",
"scripts": {
"start": "node index.js",
@@ -13,12 +13,12 @@
"dependencies": {
"@actions/artifact": "^1.1.2",
"@actions/core": "^3.0.0",
"glob": "^13.0.0",
"screeps-api": "^2.0.0"
"glob": "^14.0.0",
"screeps-api": "^1.7.2"
},
"devDependencies": {
"@vercel/ncc": "^0.44.1",
"@vitest/coverage-v8": "^4.1.10",
"vitest": "^4.1.10"
"@vitest/coverage-v8": "^4.1.11",
"vitest": "^4.1.11"
}
}
+201 -123
View File
@@ -15,21 +15,21 @@ importers:
specifier: ^3.0.0
version: 3.0.1
glob:
specifier: ^13.0.0
version: 13.0.6
specifier: ^14.0.0
version: 14.0.3
screeps-api:
specifier: ^2.0.0
version: 2.1.0(supports-color@7.2.0)
specifier: ^1.7.2
version: 1.16.1(supports-color@7.2.0)
devDependencies:
'@vercel/ncc':
specifier: ^0.44.1
version: 0.44.1
'@vitest/coverage-v8':
specifier: ^4.1.10
version: 4.1.10(vitest@4.1.10)
specifier: ^4.1.11
version: 4.1.11(vitest@4.1.11)
vitest:
specifier: ^4.1.10
version: 4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.2.1(yaml@2.9.0))
specifier: ^4.1.11
version: 4.1.11(@vitest/coverage-v8@4.1.11)(vite@8.2.1(yaml@2.9.0))
packages:
@@ -85,6 +85,9 @@ packages:
resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==}
engines: {node: '>=14'}
'@isaacs/nonrecursive-glob-match@1.0.3':
resolution: {integrity: sha512-SI7kyKHq4XXDRozw+r9GlRZkia1ZkFrpLW98r2IC2Bpr8YkFGE3fvjzmxCG0x78A++69HmDNrDvSMYBZmHGpKA==}
'@jridgewell/resolve-uri@3.1.2':
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
@@ -207,20 +210,20 @@ packages:
resolution: {integrity: sha512-cUjIE5P2YY1n+Kt9rFIazMMpGoPn1Fic04rOmTkElMkiDP5oszGfERMpo2shVkFKDL7rVppdM2pqJKC59shQWQ==}
hasBin: true
'@vitest/coverage-v8@4.1.10':
resolution: {integrity: sha512-IM49HmthevbgAO4anp1hwtoT9wYe59w0LR00gr+eagHE+ZJ5lK4sLPeO0ubgoJcwLk6dehU3R24N+FbEEKDc8g==}
'@vitest/coverage-v8@4.1.11':
resolution: {integrity: sha512-8MVGEFnJIcdGjcbfKmeq8z0pZHH0JlVtoVZH9Q/qwUp6wyFnEJUBMrw9DCaj+ra3vShGmhavjalMIhPNxZAUcw==}
peerDependencies:
'@vitest/browser': 4.1.10
vitest: 4.1.10
'@vitest/browser': 4.1.11
vitest: 4.1.11
peerDependenciesMeta:
'@vitest/browser':
optional: true
'@vitest/expect@4.1.10':
resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==}
'@vitest/expect@4.1.11':
resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
'@vitest/mocker@4.1.10':
resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==}
'@vitest/mocker@4.1.11':
resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -230,24 +233,23 @@ packages:
vite:
optional: true
'@vitest/pretty-format@4.1.10':
resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==}
'@vitest/pretty-format@4.1.11':
resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==}
'@vitest/runner@4.1.10':
resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==}
'@vitest/runner@4.1.11':
resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==}
'@vitest/snapshot@4.1.10':
resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==}
'@vitest/snapshot@4.1.11':
resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==}
'@vitest/spy@4.1.10':
resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==}
'@vitest/spy@4.1.11':
resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==}
'@vitest/utils@4.1.10':
resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==}
'@vitest/utils@4.1.11':
resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
agent-base@6.0.2:
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
engines: {node: '>= 6.0.0'}
argparse@1.0.10:
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
assertion-error@2.0.1:
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
@@ -259,15 +261,21 @@ packages:
asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
axios@1.19.0:
resolution: {integrity: sha512-ht/iuYZXEjFxLH/Hkezgd7m6JKlHHXEUSneaDz8uZe1Gj5QZtCnpyDsckvAiEnT89OEbCLmnte4R4sn7P0EKFw==}
axios@0.28.1:
resolution: {integrity: sha512-iUcGA5a7p0mVb4Gm/sy+FSECNkPFT4y7wt6OM/CDpO/OnNCvSs3PoMG8ibrC9jRoGYU0gUK5pXVC4NPXq6lHRQ==}
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
balanced-match@4.0.4:
resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
engines: {node: 18 || 20 || >=22}
brace-expansion@5.0.9:
resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==}
brace-expansion@1.1.18:
resolution: {integrity: sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==}
brace-expansion@5.0.12:
resolution: {integrity: sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==}
engines: {node: 20 || >=22}
bufferutil@4.1.0:
@@ -286,9 +294,12 @@ packages:
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
engines: {node: '>= 0.8'}
commander@14.0.3:
resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==}
engines: {node: '>=20'}
commander@7.2.0:
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
engines: {node: '>= 10'}
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
@@ -362,6 +373,9 @@ packages:
resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==}
engines: {node: '>= 6'}
fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
@@ -378,10 +392,14 @@ packages:
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
engines: {node: '>= 0.4'}
glob@13.0.6:
resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==}
glob@14.0.3:
resolution: {integrity: sha512-A1vjIwC3qpdCso45Iw127gnp7sPhqgY8lUQhDrArIs+GbmfaaVPFuoyy7WyLT9EPZCRZ7j7aLdwUhQmHWesEow==}
engines: {node: 18 || 20 || >=22}
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
gopd@1.2.0:
resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
engines: {node: '>= 0.4'}
@@ -405,9 +423,12 @@ packages:
html-escaper@2.0.2:
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
https-proxy-agent@5.0.1:
resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
engines: {node: '>= 6'}
inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
istanbul-lib-coverage@3.2.2:
resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==}
@@ -524,10 +545,13 @@ packages:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
minimatch@10.2.6:
resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==}
minimatch@11.0.3:
resolution: {integrity: sha512-iny/40PEGkNJQ5/Pv6z3nm6FbRAby32GeZRjCUJk2WnNDbgPSTcdI+DDvLqsgBdD4cD5sMtMheqPPnehCCa8Nw==}
engines: {node: 18 || 20 || >=22}
minimatch@3.1.5:
resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==}
minipass@7.1.3:
resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -548,8 +572,15 @@ packages:
resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==}
engines: {node: '>=12.20.0'}
path-scurry@2.0.2:
resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==}
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
path-is-absolute@1.0.1:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
engines: {node: '>=0.10.0'}
path-scurry@3.0.0:
resolution: {integrity: sha512-1pTbQqH1wIwMi/eleQ5leFTTCkzFsPcgXNjwOA8YGGW/W4/kHT3dssE7Z6NH+zuqNLOzOB0uaD61yl7cAcVhgg==}
engines: {node: 18 || 20 || >=22}
pathe@2.0.3:
@@ -566,18 +597,16 @@ packages:
resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==}
engines: {node: ^10 || ^12 || >=14}
proxy-from-env@2.1.0:
resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==}
engines: {node: '>=10'}
proxy-from-env@1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
rolldown@1.2.3:
resolution: {integrity: sha512-rn9wpmxplLf7NLNyCk9FyWh3FM43DbY8jOzCdEPzH7uflhTftRbCEpqi6Ly2osgoU8OwObtmavMbWLaWy4LX7A==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
screeps-api@2.1.0:
resolution: {integrity: sha512-6mweXGgmIhmXpqSGtRYI/sk+Sh3Ug1lElHQndA6bXV/ZmjUgBM5QSZoD0u83lazh2bNxbtLaigQ62yguxZ1Xdg==}
engines: {node: 22.x || 24.x}
screeps-api@1.16.1:
resolution: {integrity: sha512-VwgibYPCFXaRlNdFrC188s6juKdAbMIeLy6oRa030IRSUuIZFpe7m4NHzMxLC30qq3cZejdlOedXXthOnNkggA==}
hasBin: true
semver@7.8.5:
@@ -592,6 +621,9 @@ packages:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
sprintf-js@1.0.3:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
stackback@0.0.2:
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
@@ -636,8 +668,8 @@ packages:
resolution: {integrity: sha512-LIY910g9TI13YS95lrMFrs8Rm/u/irgHeTWoKCoteeJ04CUJ92eEfj0rVn+7VKMPBpUPiUoBKfhNyLI23EE/KA==}
engines: {node: '>=18.17'}
utf-8-validate@6.0.6:
resolution: {integrity: sha512-q3l3P9UtEEiAHcsgsqTgf9PPjctrDWoIXW3NpOHFdRDbLvu4DLIcxHangJ4RLrWkBcKjmcs/6NkerI8T/rE4LA==}
utf-8-validate@5.0.10:
resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==}
engines: {node: '>=6.14.2'}
vite@8.2.1:
@@ -683,20 +715,20 @@ packages:
yaml:
optional: true
vitest@4.1.10:
resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==}
vitest@4.1.11:
resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
'@vitest/browser-playwright': 4.1.10
'@vitest/browser-preview': 4.1.10
'@vitest/browser-webdriverio': 4.1.10
'@vitest/coverage-istanbul': 4.1.10
'@vitest/coverage-v8': 4.1.10
'@vitest/ui': 4.1.10
'@vitest/browser-playwright': 4.1.11
'@vitest/browser-preview': 4.1.11
'@vitest/browser-webdriverio': 4.1.11
'@vitest/coverage-istanbul': 4.1.11
'@vitest/coverage-v8': 4.1.11
'@vitest/ui': 4.1.11
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -729,12 +761,15 @@ packages:
engines: {node: '>=8'}
hasBin: true
ws@8.21.3:
resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==}
engines: {node: '>=10.0.0'}
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
ws@7.5.13:
resolution: {integrity: sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==}
engines: {node: '>=8.3.0'}
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: '>=5.0.2'
utf-8-validate: ^5.0.2
peerDependenciesMeta:
bufferutil:
optional: true
@@ -746,6 +781,10 @@ packages:
engines: {node: '>= 14.6'}
hasBin: true
yamljs@0.3.0:
resolution: {integrity: sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==}
hasBin: true
snapshots:
'@actions/artifact@1.1.3':
@@ -804,6 +843,8 @@ snapshots:
'@fastify/busboy@2.1.1': {}
'@isaacs/nonrecursive-glob-match@1.0.3': {}
'@jridgewell/resolve-uri@3.1.2': {}
'@jridgewell/sourcemap-codec@1.5.5': {}
@@ -872,10 +913,10 @@ snapshots:
'@vercel/ncc@0.44.1': {}
'@vitest/coverage-v8@4.1.10(vitest@4.1.10)':
'@vitest/coverage-v8@4.1.11(vitest@4.1.11)':
dependencies:
'@bcoe/v8-coverage': 1.0.2
'@vitest/utils': 4.1.10
'@vitest/utils': 4.1.11
ast-v8-to-istanbul: 1.0.5
istanbul-lib-coverage: 3.2.2
istanbul-lib-report: 3.0.1
@@ -884,54 +925,52 @@ snapshots:
obug: 2.1.4
std-env: 4.2.0
tinyrainbow: 3.1.1
vitest: 4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.2.1(yaml@2.9.0))
vitest: 4.1.11(@vitest/coverage-v8@4.1.11)(vite@8.2.1(yaml@2.9.0))
'@vitest/expect@4.1.10':
'@vitest/expect@4.1.11':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
'@vitest/spy': 4.1.10
'@vitest/utils': 4.1.10
'@vitest/spy': 4.1.11
'@vitest/utils': 4.1.11
chai: 6.2.2
tinyrainbow: 3.1.1
'@vitest/mocker@4.1.10(vite@8.2.1(yaml@2.9.0))':
'@vitest/mocker@4.1.11(vite@8.2.1(yaml@2.9.0))':
dependencies:
'@vitest/spy': 4.1.10
'@vitest/spy': 4.1.11
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.2.1(yaml@2.9.0)
'@vitest/pretty-format@4.1.10':
'@vitest/pretty-format@4.1.11':
dependencies:
tinyrainbow: 3.1.1
'@vitest/runner@4.1.10':
'@vitest/runner@4.1.11':
dependencies:
'@vitest/utils': 4.1.10
'@vitest/utils': 4.1.11
pathe: 2.0.3
'@vitest/snapshot@4.1.10':
'@vitest/snapshot@4.1.11':
dependencies:
'@vitest/pretty-format': 4.1.10
'@vitest/utils': 4.1.10
'@vitest/pretty-format': 4.1.11
'@vitest/utils': 4.1.11
magic-string: 0.30.21
pathe: 2.0.3
'@vitest/spy@4.1.10': {}
'@vitest/spy@4.1.11': {}
'@vitest/utils@4.1.10':
'@vitest/utils@4.1.11':
dependencies:
'@vitest/pretty-format': 4.1.10
'@vitest/pretty-format': 4.1.11
convert-source-map: 2.0.0
tinyrainbow: 3.1.1
agent-base@6.0.2(supports-color@7.2.0):
argparse@1.0.10:
dependencies:
debug: 4.4.3(supports-color@7.2.0)
transitivePeerDependencies:
- supports-color
sprintf-js: 1.0.3
assertion-error@2.0.1: {}
@@ -943,19 +982,24 @@ snapshots:
asynckit@0.4.0: {}
axios@1.19.0(debug@4.4.3(supports-color@7.2.0))(supports-color@7.2.0):
axios@0.28.1(debug@4.4.3(supports-color@7.2.0)):
dependencies:
follow-redirects: 1.16.0(debug@4.4.3(supports-color@7.2.0))
form-data: 4.0.6
https-proxy-agent: 5.0.1(supports-color@7.2.0)
proxy-from-env: 2.1.0
proxy-from-env: 1.1.0
transitivePeerDependencies:
- debug
- supports-color
balanced-match@1.0.2: {}
balanced-match@4.0.4: {}
brace-expansion@5.0.9:
brace-expansion@1.1.18:
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
brace-expansion@5.0.12:
dependencies:
balanced-match: 4.0.4
@@ -975,7 +1019,9 @@ snapshots:
dependencies:
delayed-stream: 1.0.0
commander@14.0.3: {}
commander@7.2.0: {}
concat-map@0.0.1: {}
convert-source-map@2.0.0: {}
@@ -1034,6 +1080,8 @@ snapshots:
hasown: 2.0.4
mime-types: 2.1.35
fs.realpath@1.0.0: {}
fsevents@2.3.3:
optional: true
@@ -1057,11 +1105,20 @@ snapshots:
dunder-proto: 1.0.1
es-object-atoms: 1.1.2
glob@13.0.6:
glob@14.0.3:
dependencies:
minimatch: 10.2.6
minimatch: 11.0.3
minipass: 7.1.3
path-scurry: 2.0.2
path-scurry: 3.0.0
glob@7.2.3:
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
inherits: 2.0.4
minimatch: 3.1.5
once: 1.4.0
path-is-absolute: 1.0.1
gopd@1.2.0: {}
@@ -1079,12 +1136,12 @@ snapshots:
html-escaper@2.0.2: {}
https-proxy-agent@5.0.1(supports-color@7.2.0):
inflight@1.0.6:
dependencies:
agent-base: 6.0.2(supports-color@7.2.0)
debug: 4.4.3(supports-color@7.2.0)
transitivePeerDependencies:
- supports-color
once: 1.4.0
wrappy: 1.0.2
inherits@2.0.4: {}
istanbul-lib-coverage@3.2.2: {}
@@ -1174,9 +1231,14 @@ snapshots:
dependencies:
mime-db: 1.52.0
minimatch@10.2.6:
minimatch@11.0.3:
dependencies:
brace-expansion: 5.0.9
'@isaacs/nonrecursive-glob-match': 1.0.3
brace-expansion: 5.0.12
minimatch@3.1.5:
dependencies:
brace-expansion: 1.1.18
minipass@7.1.3: {}
@@ -1189,7 +1251,13 @@ snapshots:
obug@2.1.4: {}
path-scurry@2.0.2:
once@1.4.0:
dependencies:
wrappy: 1.0.2
path-is-absolute@1.0.1: {}
path-scurry@3.0.0:
dependencies:
lru-cache: 11.5.2
minipass: 7.1.3
@@ -1206,7 +1274,7 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
proxy-from-env@2.1.0: {}
proxy-from-env@1.1.0: {}
rolldown@1.2.3:
dependencies:
@@ -1228,16 +1296,16 @@ snapshots:
'@rolldown/binding-win32-arm64-msvc': 1.2.3
'@rolldown/binding-win32-x64-msvc': 1.2.3
screeps-api@2.1.0(supports-color@7.2.0):
screeps-api@1.16.1(supports-color@7.2.0):
dependencies:
axios: 1.19.0(debug@4.4.3(supports-color@7.2.0))(supports-color@7.2.0)
commander: 14.0.3
axios: 0.28.1(debug@4.4.3(supports-color@7.2.0))
commander: 7.2.0
debug: 4.4.3(supports-color@7.2.0)
ws: 8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)
yaml: 2.9.0
ws: 7.5.13(bufferutil@4.1.0)(utf-8-validate@5.0.10)
yamljs: 0.3.0
optionalDependencies:
bufferutil: 4.1.0
utf-8-validate: 6.0.6
utf-8-validate: 5.0.10
transitivePeerDependencies:
- supports-color
@@ -1247,6 +1315,8 @@ snapshots:
source-map-js@1.2.1: {}
sprintf-js@1.0.3: {}
stackback@0.0.2: {}
std-env@4.2.0: {}
@@ -1280,7 +1350,7 @@ snapshots:
undici@6.28.0: {}
utf-8-validate@6.0.6:
utf-8-validate@5.0.10:
dependencies:
node-gyp-build: 4.8.4
optional: true
@@ -1296,15 +1366,15 @@ snapshots:
fsevents: 2.3.3
yaml: 2.9.0
vitest@4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.2.1(yaml@2.9.0)):
vitest@4.1.11(@vitest/coverage-v8@4.1.11)(vite@8.2.1(yaml@2.9.0)):
dependencies:
'@vitest/expect': 4.1.10
'@vitest/mocker': 4.1.10(vite@8.2.1(yaml@2.9.0))
'@vitest/pretty-format': 4.1.10
'@vitest/runner': 4.1.10
'@vitest/snapshot': 4.1.10
'@vitest/spy': 4.1.10
'@vitest/utils': 4.1.10
'@vitest/expect': 4.1.11
'@vitest/mocker': 4.1.11(vite@8.2.1(yaml@2.9.0))
'@vitest/pretty-format': 4.1.11
'@vitest/runner': 4.1.11
'@vitest/snapshot': 4.1.11
'@vitest/spy': 4.1.11
'@vitest/utils': 4.1.11
es-module-lexer: 2.3.1
expect-type: 1.4.0
magic-string: 0.30.21
@@ -1319,7 +1389,7 @@ snapshots:
vite: 8.2.1(yaml@2.9.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@vitest/coverage-v8': 4.1.10(vitest@4.1.10)
'@vitest/coverage-v8': 4.1.11(vitest@4.1.11)
transitivePeerDependencies:
- msw
@@ -1328,9 +1398,17 @@ snapshots:
siginfo: 2.0.0
stackback: 0.0.2
ws@8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6):
wrappy@1.0.2: {}
ws@7.5.13(bufferutil@4.1.0)(utf-8-validate@5.0.10):
optionalDependencies:
bufferutil: 4.1.0
utf-8-validate: 6.0.6
utf-8-validate: 5.0.10
yaml@2.9.0: {}
yaml@2.9.0:
optional: true
yamljs@0.3.0:
dependencies:
argparse: 1.0.10
glob: 7.2.3
+6 -15
View File
@@ -5,20 +5,11 @@
"config:recommended",
":automergeLinters"
],
"packageRules": [
{
"matchManagers": [
"pnpm"
],
"postUpgradeTasks": {
"commands": [
"pnpm install --frozen-lockfile",
"pnpm run build"
],
"fileFilters": [
"dist/index.js"
]
}
}
"rebaseWhen": "behind-base-branch",
"branchConcurrentLimit": 2,
"prConcurrentLimit": 2,
"gitIgnoredAuthors": [
"github-actions[bot]@users.noreply.github.com",
"bot@horstenkamp.eu"
]
}