Author SHA1 Message Date
Renovate ed733daf16 chore(deps): update pnpm/action-setup action to v6
renovate/stability-days Updates have met minimum release age requirement
Lint / pre-commit Linting (push) Successful in 43s
Test / Run Tests (push) Successful in 3m25s
2026-08-11 00:36:47 +00:00
14 changed files with 251 additions and 250 deletions
+18
View File
@@ -0,0 +1,18 @@
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
@@ -1,55 +0,0 @@
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
+2 -4
View File
@@ -2,7 +2,6 @@ name: Test
on:
push:
pull_request:
workflow_dispatch:
jobs:
@@ -11,11 +10,10 @@ 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: '22'
cache: pnpm
node-version: '24'
- uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10
- run: pnpm install --frozen-lockfile
shell: bash
- run: pnpm test
+1 -2
View File
@@ -30,11 +30,10 @@ repos:
types_or: [css, javascript]
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.38.0
rev: 0.37.4
hooks:
- id: check-renovate
- id: check-github-actions
exclude: ^action\.yaml$
- id: check-github-workflows
- repo: https://github.com/pre-commit/pre-commit-hooks
-6
View File
@@ -7,7 +7,6 @@ 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
@@ -33,8 +32,3 @@ 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**).
+10 -20
View File
@@ -1,4 +1,4 @@
import { vi, describe, it, expect, beforeEach, afterEach } from "vitest";
import { vi, describe, it, expect, beforeEach } from "vitest";
// Mock @actions/core for all tests in this file
vi.mock("@actions/core", () => ({
@@ -24,23 +24,16 @@ vi.mock("../monitor.js", () => ({
vi.mock("screeps-api", () => {
const mockApi = {
auth: vi.fn().mockResolvedValue(),
authSignin: vi.fn().mockResolvedValue({ ok: 1, token: "test_token" }),
userCodeGet: vi
.fn()
.mockResolvedValue({ ok: 1, modules: { main: "old_code" } }),
userCodeSet: vi.fn().mockResolvedValue({ ok: 1 }),
code: {
get: vi.fn().mockResolvedValue({ ok: 1, modules: { main: "old_code" } }),
set: vi.fn().mockResolvedValue({ ok: 1 }),
},
};
// Use a regular function so it can be called with `new`
const MockClient = vi.fn(function () {
return mockApi;
});
return {
ScreepsHttpClient: MockClient,
ScreepsAPI: MockClient,
ScreepsAPI: vi.fn(function () {
return mockApi;
}),
};
});
@@ -55,7 +48,7 @@ import {
applyOnAction,
postCode,
} from "../index.js";
import { ScreepsHttpClient } from "screeps-api";
import { ScreepsAPI } from "screeps-api";
import fs from "fs";
import path from "path";
import os from "os";
@@ -337,17 +330,14 @@ describe("postCode — monitor wiring", () => {
await postCode();
// Verify rollback was performed
const mockApiInstance = new ScreepsHttpClient();
const mockApiInstance = new ScreepsAPI();
// `userCodeSet` should be called twice:
// `code.set` should be called twice:
// 1st time: uploading the new files
// 2nd time: rolling back to oldCode
expect(mockApiInstance.userCodeSet).toHaveBeenCalledTimes(2);
expect(mockApiInstance.userCodeSet).toHaveBeenNthCalledWith(2, {
branch: "default",
modules: {
main: "old_code",
},
expect(mockApiInstance.code.set).toHaveBeenCalledTimes(2);
expect(mockApiInstance.code.set).toHaveBeenNthCalledWith(2, "default", {
main: "old_code",
});
// Verify it called core.setFailed due to traceback
+5 -13
View File
@@ -382,21 +382,13 @@ function buildMockApi({
disconnect: vi.fn(),
};
const getTime = vi.fn().mockImplementation(() => {
const t = ticks[Math.min(tickIndex, ticks.length - 1)];
tickIndex++;
return Promise.resolve({ time: t });
});
const api = {
opts: { hostname },
time: getTime,
get gameTime() {
return this.time;
},
set gameTime(fn) {
this.time = fn;
},
time: vi.fn().mockImplementation(() => {
const t = ticks[Math.min(tickIndex, ticks.length - 1)];
tickIndex++;
return Promise.resolve({ time: t });
}),
socket,
// Expose so tests can fire console events
_fireConsole: (eventData) => {
+1 -1
View File
@@ -79,5 +79,5 @@ outputs:
saw_warning_log:
description: true if console.warn output was detected during monitoring.
runs:
using: node22
using: node20
main: dist/index.js
+7 -7
View File
File diff suppressed because one or more lines are too long
+6 -18
View File
@@ -1,4 +1,4 @@
import { ScreepsHttpClient } from "screeps-api";
import { ScreepsAPI } from "screeps-api";
import * as core from "@actions/core";
import fs from "fs";
import { glob } from "glob";
@@ -180,16 +180,12 @@ export async function postCode() {
core.error(errorMessage);
return;
}
let api = new ScreepsHttpClient(login_arguments);
let api = new ScreepsAPI(login_arguments);
if (!token) {
core.info(`Logging in as user ${username}`);
try {
if (typeof api.authSignin === "function") {
await api.authSignin(username, password);
} else {
await api.auth(username, password, login_arguments);
}
await api.auth(username, password, login_arguments);
} catch (err) {
core.error(`Authentication error: ${err}`);
throw err;
@@ -209,9 +205,7 @@ export async function postCode() {
`Downloading existing code from branch ${branch} for potential rollback...`,
);
try {
const getResponse = await (api.userCodeGet
? api.userCodeGet(branch)
: api.code.get(branch));
const getResponse = await api.code.get(branch);
if (getResponse && getResponse.ok && getResponse.modules) {
oldCode = getResponse.modules;
core.info(
@@ -232,9 +226,7 @@ export async function postCode() {
}
try {
const response = await (api.userCodeSet
? api.userCodeSet({ branch, modules: files_to_push })
: api.code.set(branch, files_to_push));
const response = await api.code.set(branch, files_to_push);
core.info(JSON.stringify(response, null, 2));
core.info(`Code set successfully to ${branch}`);
} catch (err) {
@@ -287,11 +279,7 @@ export async function postCode() {
"Action failed based on monitor configuration. Rolling back to previous code...",
);
try {
if (typeof api.userCodeSet === "function") {
await api.userCodeSet({ branch, modules: oldCode });
} else {
await api.code.set(branch, oldCode);
}
await api.code.set(branch, oldCode);
core.info(
`Successfully rolled back to previous code on branch ${branch}.`,
);
+4 -8
View File
@@ -250,7 +250,7 @@ function sleep(ms) {
* Calls `onProgress(elapsed, targetTicks)` on every poll so the caller can
* log progress at whatever cadence it chooses.
*
* @param {import('screeps-api').ScreepsHttpClient} api
* @param {import('screeps-api').ScreepsAPI} api
* @param {number} startTick - Tick number recorded before monitoring started
* @param {number} targetTicks - Stop when (currentTick - startTick) >= this
* @param {string|undefined} shard - "shard0" for official, undefined for private
@@ -270,9 +270,7 @@ export async function pollUntilDone(
let elapsed = 0;
while (elapsed < targetTicks && !shouldStop()) {
await sleep(intervalMs);
const { time } = await (typeof api.gameTime === "function"
? api.gameTime(shard)
: api.time(shard));
const { time } = await api.time(shard);
elapsed = time - startTick;
onProgress(elapsed, targetTicks);
}
@@ -311,7 +309,7 @@ export async function pollUntilDone(
* 6. If logToFile=true: write buffered stdout to a temp file and upload artifact.
* 7. Return MonitorResult.
*
* @param {import('screeps-api').ScreepsHttpClient} api
* @param {import('screeps-api').ScreepsAPI} api
* @param {MonitorOptions} opts
* @returns {Promise<MonitorResult>}
*/
@@ -339,9 +337,7 @@ export async function monitorConsole(api, opts) {
let lastProgressTick = 0;
// Step 1: record starting tick
const { time: startTick } = await (typeof api.gameTime === "function"
? api.gameTime(shard)
: api.time(shard));
const { time: startTick } = await api.time(shard);
// Step 2: connect socket + subscribe
await api.socket.connect();
+4 -4
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.25.0",
"packageManager": "pnpm@11.21.0",
"main": "index.js",
"scripts": {
"start": "node index.js",
@@ -14,11 +14,11 @@
"@actions/artifact": "^1.1.2",
"@actions/core": "^3.0.0",
"glob": "^13.0.0",
"screeps-api": "^2.0.0"
"screeps-api": "^1.7.2"
},
"devDependencies": {
"@vercel/ncc": "^0.44.1",
"@vitest/coverage-v8": "^4.1.11",
"vitest": "^4.1.11"
"@vitest/coverage-v8": "^4.1.10",
"vitest": "^4.1.10"
}
}
+178 -106
View File
@@ -18,18 +18,18 @@ importers:
specifier: ^13.0.0
version: 13.0.6
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.11
version: 4.1.11(vitest@4.1.11)
specifier: ^4.1.10
version: 4.1.10(vitest@4.1.10)
vitest:
specifier: ^4.1.11
version: 4.1.11(@vitest/coverage-v8@4.1.11)(vite@8.2.1(yaml@2.9.0))
specifier: ^4.1.10
version: 4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.2.1(yaml@2.9.0))
packages:
@@ -207,20 +207,20 @@ packages:
resolution: {integrity: sha512-cUjIE5P2YY1n+Kt9rFIazMMpGoPn1Fic04rOmTkElMkiDP5oszGfERMpo2shVkFKDL7rVppdM2pqJKC59shQWQ==}
hasBin: true
'@vitest/coverage-v8@4.1.11':
resolution: {integrity: sha512-8MVGEFnJIcdGjcbfKmeq8z0pZHH0JlVtoVZH9Q/qwUp6wyFnEJUBMrw9DCaj+ra3vShGmhavjalMIhPNxZAUcw==}
'@vitest/coverage-v8@4.1.10':
resolution: {integrity: sha512-IM49HmthevbgAO4anp1hwtoT9wYe59w0LR00gr+eagHE+ZJ5lK4sLPeO0ubgoJcwLk6dehU3R24N+FbEEKDc8g==}
peerDependencies:
'@vitest/browser': 4.1.11
vitest: 4.1.11
'@vitest/browser': 4.1.10
vitest: 4.1.10
peerDependenciesMeta:
'@vitest/browser':
optional: true
'@vitest/expect@4.1.11':
resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
'@vitest/expect@4.1.10':
resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==}
'@vitest/mocker@4.1.11':
resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
'@vitest/mocker@4.1.10':
resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -230,24 +230,23 @@ packages:
vite:
optional: true
'@vitest/pretty-format@4.1.11':
resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==}
'@vitest/pretty-format@4.1.10':
resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==}
'@vitest/runner@4.1.11':
resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==}
'@vitest/runner@4.1.10':
resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==}
'@vitest/snapshot@4.1.11':
resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==}
'@vitest/snapshot@4.1.10':
resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==}
'@vitest/spy@4.1.11':
resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==}
'@vitest/spy@4.1.10':
resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==}
'@vitest/utils@4.1.11':
resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
'@vitest/utils@4.1.10':
resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==}
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,13 +258,19 @@ packages:
asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
axios@1.20.0:
resolution: {integrity: sha512-r8aOh8j9cGKpgQAqpzrUHnSIc6a59Y3Xf/cv8sy1DrHCkZHzQGEuoq1tARk6qSyDdtQGSDgpb9kFlruzPvrgwg==}
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@1.1.18:
resolution: {integrity: sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==}
brace-expansion@5.0.9:
resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==}
engines: {node: 20 || >=22}
@@ -286,9 +291,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 +370,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}
@@ -382,6 +393,10 @@ packages:
resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==}
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 +420,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==}
@@ -528,6 +546,9 @@ packages:
resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==}
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,6 +569,13 @@ packages:
resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==}
engines: {node: '>=12.20.0'}
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@2.0.2:
resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==}
engines: {node: 18 || 20 || >=22}
@@ -566,18 +594,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 +618,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 +665,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 +712,20 @@ packages:
yaml:
optional: true
vitest@4.1.11:
resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==}
vitest@4.1.10:
resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==}
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.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
'@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
happy-dom: '*'
jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -729,12 +758,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 +778,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':
@@ -872,10 +908,10 @@ snapshots:
'@vercel/ncc@0.44.1': {}
'@vitest/coverage-v8@4.1.11(vitest@4.1.11)':
'@vitest/coverage-v8@4.1.10(vitest@4.1.10)':
dependencies:
'@bcoe/v8-coverage': 1.0.2
'@vitest/utils': 4.1.11
'@vitest/utils': 4.1.10
ast-v8-to-istanbul: 1.0.5
istanbul-lib-coverage: 3.2.2
istanbul-lib-report: 3.0.1
@@ -884,54 +920,52 @@ snapshots:
obug: 2.1.4
std-env: 4.2.0
tinyrainbow: 3.1.1
vitest: 4.1.11(@vitest/coverage-v8@4.1.11)(vite@8.2.1(yaml@2.9.0))
vitest: 4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.2.1(yaml@2.9.0))
'@vitest/expect@4.1.11':
'@vitest/expect@4.1.10':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
'@vitest/spy': 4.1.11
'@vitest/utils': 4.1.11
'@vitest/spy': 4.1.10
'@vitest/utils': 4.1.10
chai: 6.2.2
tinyrainbow: 3.1.1
'@vitest/mocker@4.1.11(vite@8.2.1(yaml@2.9.0))':
'@vitest/mocker@4.1.10(vite@8.2.1(yaml@2.9.0))':
dependencies:
'@vitest/spy': 4.1.11
'@vitest/spy': 4.1.10
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.2.1(yaml@2.9.0)
'@vitest/pretty-format@4.1.11':
'@vitest/pretty-format@4.1.10':
dependencies:
tinyrainbow: 3.1.1
'@vitest/runner@4.1.11':
'@vitest/runner@4.1.10':
dependencies:
'@vitest/utils': 4.1.11
'@vitest/utils': 4.1.10
pathe: 2.0.3
'@vitest/snapshot@4.1.11':
'@vitest/snapshot@4.1.10':
dependencies:
'@vitest/pretty-format': 4.1.11
'@vitest/utils': 4.1.11
'@vitest/pretty-format': 4.1.10
'@vitest/utils': 4.1.10
magic-string: 0.30.21
pathe: 2.0.3
'@vitest/spy@4.1.11': {}
'@vitest/spy@4.1.10': {}
'@vitest/utils@4.1.11':
'@vitest/utils@4.1.10':
dependencies:
'@vitest/pretty-format': 4.1.11
'@vitest/pretty-format': 4.1.10
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,18 +977,23 @@ snapshots:
asynckit@0.4.0: {}
axios@1.20.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@1.1.18:
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
brace-expansion@5.0.9:
dependencies:
balanced-match: 4.0.4
@@ -975,7 +1014,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 +1075,8 @@ snapshots:
hasown: 2.0.4
mime-types: 2.1.35
fs.realpath@1.0.0: {}
fsevents@2.3.3:
optional: true
@@ -1063,6 +1106,15 @@ snapshots:
minipass: 7.1.3
path-scurry: 2.0.2
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: {}
has-flag@4.0.0: {}
@@ -1079,12 +1131,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: {}
@@ -1178,6 +1230,10 @@ snapshots:
dependencies:
brace-expansion: 5.0.9
minimatch@3.1.5:
dependencies:
brace-expansion: 1.1.18
minipass@7.1.3: {}
ms@2.1.3: {}
@@ -1189,6 +1245,12 @@ snapshots:
obug@2.1.4: {}
once@1.4.0:
dependencies:
wrappy: 1.0.2
path-is-absolute@1.0.1: {}
path-scurry@2.0.2:
dependencies:
lru-cache: 11.5.2
@@ -1206,7 +1268,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 +1290,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.20.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 +1309,8 @@ snapshots:
source-map-js@1.2.1: {}
sprintf-js@1.0.3: {}
stackback@0.0.2: {}
std-env@4.2.0: {}
@@ -1280,7 +1344,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 +1360,15 @@ snapshots:
fsevents: 2.3.3
yaml: 2.9.0
vitest@4.1.11(@vitest/coverage-v8@4.1.11)(vite@8.2.1(yaml@2.9.0)):
vitest@4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.2.1(yaml@2.9.0)):
dependencies:
'@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
'@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
es-module-lexer: 2.3.1
expect-type: 1.4.0
magic-string: 0.30.21
@@ -1319,7 +1383,7 @@ snapshots:
vite: 8.2.1(yaml@2.9.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@vitest/coverage-v8': 4.1.11(vitest@4.1.11)
'@vitest/coverage-v8': 4.1.10(vitest@4.1.10)
transitivePeerDependencies:
- msw
@@ -1328,9 +1392,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
+15 -6
View File
@@ -5,11 +5,20 @@
"config:recommended",
":automergeLinters"
],
"rebaseWhen": "behind-base-branch",
"branchConcurrentLimit": 2,
"prConcurrentLimit": 2,
"gitIgnoredAuthors": [
"github-actions[bot]@users.noreply.github.com",
"bot@horstenkamp.eu"
"packageRules": [
{
"matchManagers": [
"pnpm"
],
"postUpgradeTasks": {
"commands": [
"pnpm install --frozen-lockfile",
"pnpm run build"
],
"fileFilters": [
"dist/index.js"
]
}
}
]
}