Author SHA1 Message Date
Philipp cfb97819ae refactor: migrate to screeps-api v2 and update actions to node 22
Test / Run Tests (push) Failing after 1s
Recompile dist/ on Renovate PR / recompile (pull_request) Failing after 0s
Test / Run Tests (pull_request) Failing after 0s
Philipp/Global-Workflows: Pre-commit Lint (Scoped) / pre-commit (pull_request) Failing after 1s
2026-09-04 23:56:04 +02:00
Renovate d644b19b47 fix(deps): update dependency screeps-api to v2
renovate/stability-days Updates have met minimum release age requirement
Test / Run Tests (push) Failing after 0s
Recompile dist/ on Renovate PR / recompile (pull_request) Failing after 0s
Test / Run Tests (pull_request) Failing after 0s
Philipp/Global-Workflows: Pre-commit Lint (Scoped) / pre-commit (pull_request) Failing after 0s
2026-09-04 21:24:57 +00:00
10 changed files with 119 additions and 156 deletions
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
- uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with: with:
node-version: '24' node-version: '22'
cache: pnpm cache: pnpm
- run: pnpm install --frozen-lockfile - run: pnpm install --frozen-lockfile
shell: bash shell: bash
+1
View File
@@ -34,6 +34,7 @@ repos:
hooks: hooks:
- id: check-renovate - id: check-renovate
- id: check-github-actions - id: check-github-actions
exclude: ^action\.yaml$
- id: check-github-workflows - id: check-github-workflows
- repo: https://github.com/pre-commit/pre-commit-hooks - repo: https://github.com/pre-commit/pre-commit-hooks
+18 -8
View File
@@ -24,16 +24,23 @@ vi.mock("../monitor.js", () => ({
vi.mock("screeps-api", () => { vi.mock("screeps-api", () => {
const mockApi = { const mockApi = {
auth: vi.fn().mockResolvedValue(), 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: { code: {
get: vi.fn().mockResolvedValue({ ok: 1, modules: { main: "old_code" } }), get: vi.fn().mockResolvedValue({ ok: 1, modules: { main: "old_code" } }),
set: vi.fn().mockResolvedValue({ ok: 1 }), set: vi.fn().mockResolvedValue({ ok: 1 }),
}, },
}; };
// Use a regular function so it can be called with `new` // Use a regular function so it can be called with `new`
return { const MockClient = vi.fn(function () {
ScreepsAPI: vi.fn(function () {
return mockApi; return mockApi;
}), });
return {
ScreepsHttpClient: MockClient,
ScreepsAPI: MockClient,
}; };
}); });
@@ -48,7 +55,7 @@ import {
applyOnAction, applyOnAction,
postCode, postCode,
} from "../index.js"; } from "../index.js";
import { ScreepsAPI } from "screeps-api"; import { ScreepsHttpClient } from "screeps-api";
import fs from "fs"; import fs from "fs";
import path from "path"; import path from "path";
import os from "os"; import os from "os";
@@ -330,14 +337,17 @@ describe("postCode — monitor wiring", () => {
await postCode(); await postCode();
// Verify rollback was performed // Verify rollback was performed
const mockApiInstance = new ScreepsAPI(); const mockApiInstance = new ScreepsHttpClient();
// `code.set` should be called twice: // `userCodeSet` should be called twice:
// 1st time: uploading the new files // 1st time: uploading the new files
// 2nd time: rolling back to oldCode // 2nd time: rolling back to oldCode
expect(mockApiInstance.code.set).toHaveBeenCalledTimes(2); expect(mockApiInstance.userCodeSet).toHaveBeenCalledTimes(2);
expect(mockApiInstance.code.set).toHaveBeenNthCalledWith(2, "default", { expect(mockApiInstance.userCodeSet).toHaveBeenNthCalledWith(2, {
branch: "default",
modules: {
main: "old_code", main: "old_code",
},
}); });
// Verify it called core.setFailed due to traceback // Verify it called core.setFailed due to traceback
+12 -4
View File
@@ -382,13 +382,21 @@ function buildMockApi({
disconnect: vi.fn(), disconnect: vi.fn(),
}; };
const api = { const getTime = vi.fn().mockImplementation(() => {
opts: { hostname },
time: vi.fn().mockImplementation(() => {
const t = ticks[Math.min(tickIndex, ticks.length - 1)]; const t = ticks[Math.min(tickIndex, ticks.length - 1)];
tickIndex++; tickIndex++;
return Promise.resolve({ time: t }); return Promise.resolve({ time: t });
}), });
const api = {
opts: { hostname },
time: getTime,
get gameTime() {
return this.time;
},
set gameTime(fn) {
this.time = fn;
},
socket, socket,
// Expose so tests can fire console events // Expose so tests can fire console events
_fireConsole: (eventData) => { _fireConsole: (eventData) => {
+1 -1
View File
@@ -79,5 +79,5 @@ outputs:
saw_warning_log: saw_warning_log:
description: true if console.warn output was detected during monitoring. description: true if console.warn output was detected during monitoring.
runs: runs:
using: node20 using: node22
main: dist/index.js main: dist/index.js
+7 -7
View File
File diff suppressed because one or more lines are too long
+16 -4
View File
@@ -1,4 +1,4 @@
import { ScreepsAPI } from "screeps-api"; import { ScreepsHttpClient } from "screeps-api";
import * as core from "@actions/core"; import * as core from "@actions/core";
import fs from "fs"; import fs from "fs";
import { glob } from "glob"; import { glob } from "glob";
@@ -180,12 +180,16 @@ export async function postCode() {
core.error(errorMessage); core.error(errorMessage);
return; return;
} }
let api = new ScreepsAPI(login_arguments); let api = new ScreepsHttpClient(login_arguments);
if (!token) { if (!token) {
core.info(`Logging in as user ${username}`); core.info(`Logging in as user ${username}`);
try { 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) { } catch (err) {
core.error(`Authentication error: ${err}`); core.error(`Authentication error: ${err}`);
throw err; throw err;
@@ -205,7 +209,9 @@ export async function postCode() {
`Downloading existing code from branch ${branch} for potential rollback...`, `Downloading existing code from branch ${branch} for potential rollback...`,
); );
try { try {
const getResponse = await api.code.get(branch); const getResponse = await (api.userCodeGet
? api.userCodeGet(branch)
: api.code.get(branch));
if (getResponse && getResponse.ok && getResponse.modules) { if (getResponse && getResponse.ok && getResponse.modules) {
oldCode = getResponse.modules; oldCode = getResponse.modules;
core.info( core.info(
@@ -226,7 +232,9 @@ export async function postCode() {
} }
try { try {
const response = await api.code.set(branch, files_to_push); const response = await (api.userCodeSet
? api.userCodeSet({ branch, modules: files_to_push })
: api.code.set(branch, files_to_push));
core.info(JSON.stringify(response, null, 2)); core.info(JSON.stringify(response, null, 2));
core.info(`Code set successfully to ${branch}`); core.info(`Code set successfully to ${branch}`);
} catch (err) { } catch (err) {
@@ -279,7 +287,11 @@ export async function postCode() {
"Action failed based on monitor configuration. Rolling back to previous code...", "Action failed based on monitor configuration. Rolling back to previous code...",
); );
try { 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( core.info(
`Successfully rolled back to previous code on branch ${branch}.`, `Successfully rolled back to previous code on branch ${branch}.`,
); );
+8 -4
View File
@@ -250,7 +250,7 @@ function sleep(ms) {
* Calls `onProgress(elapsed, targetTicks)` on every poll so the caller can * Calls `onProgress(elapsed, targetTicks)` on every poll so the caller can
* log progress at whatever cadence it chooses. * log progress at whatever cadence it chooses.
* *
* @param {import('screeps-api').ScreepsAPI} api * @param {import('screeps-api').ScreepsHttpClient} api
* @param {number} startTick - Tick number recorded before monitoring started * @param {number} startTick - Tick number recorded before monitoring started
* @param {number} targetTicks - Stop when (currentTick - startTick) >= this * @param {number} targetTicks - Stop when (currentTick - startTick) >= this
* @param {string|undefined} shard - "shard0" for official, undefined for private * @param {string|undefined} shard - "shard0" for official, undefined for private
@@ -270,7 +270,9 @@ export async function pollUntilDone(
let elapsed = 0; let elapsed = 0;
while (elapsed < targetTicks && !shouldStop()) { while (elapsed < targetTicks && !shouldStop()) {
await sleep(intervalMs); await sleep(intervalMs);
const { time } = await api.time(shard); const { time } = await (typeof api.gameTime === "function"
? api.gameTime(shard)
: api.time(shard));
elapsed = time - startTick; elapsed = time - startTick;
onProgress(elapsed, targetTicks); onProgress(elapsed, targetTicks);
} }
@@ -309,7 +311,7 @@ export async function pollUntilDone(
* 6. If logToFile=true: write buffered stdout to a temp file and upload artifact. * 6. If logToFile=true: write buffered stdout to a temp file and upload artifact.
* 7. Return MonitorResult. * 7. Return MonitorResult.
* *
* @param {import('screeps-api').ScreepsAPI} api * @param {import('screeps-api').ScreepsHttpClient} api
* @param {MonitorOptions} opts * @param {MonitorOptions} opts
* @returns {Promise<MonitorResult>} * @returns {Promise<MonitorResult>}
*/ */
@@ -337,7 +339,9 @@ export async function monitorConsole(api, opts) {
let lastProgressTick = 0; let lastProgressTick = 0;
// Step 1: record starting tick // Step 1: record starting tick
const { time: startTick } = await api.time(shard); const { time: startTick } = await (typeof api.gameTime === "function"
? api.gameTime(shard)
: api.time(shard));
// Step 2: connect socket + subscribe // Step 2: connect socket + subscribe
await api.socket.connect(); await api.socket.connect();
+1 -1
View File
@@ -14,7 +14,7 @@
"@actions/artifact": "^1.1.2", "@actions/artifact": "^1.1.2",
"@actions/core": "^3.0.0", "@actions/core": "^3.0.0",
"glob": "^13.0.0", "glob": "^13.0.0",
"screeps-api": "^1.7.2" "screeps-api": "^2.0.0"
}, },
"devDependencies": { "devDependencies": {
"@vercel/ncc": "^0.44.1", "@vercel/ncc": "^0.44.1",
+50 -122
View File
@@ -18,8 +18,8 @@ importers:
specifier: ^13.0.0 specifier: ^13.0.0
version: 13.0.6 version: 13.0.6
screeps-api: screeps-api:
specifier: ^1.7.2 specifier: ^2.0.0
version: 1.16.1(supports-color@7.2.0) version: 2.1.0(supports-color@7.2.0)
devDependencies: devDependencies:
'@vercel/ncc': '@vercel/ncc':
specifier: ^0.44.1 specifier: ^0.44.1
@@ -245,8 +245,9 @@ packages:
'@vitest/utils@4.1.11': '@vitest/utils@4.1.11':
resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==} resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
argparse@1.0.10: agent-base@6.0.2:
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
engines: {node: '>= 6.0.0'}
assertion-error@2.0.1: assertion-error@2.0.1:
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
@@ -258,19 +259,13 @@ packages:
asynckit@0.4.0: asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
axios@0.28.1: axios@1.20.0:
resolution: {integrity: sha512-iUcGA5a7p0mVb4Gm/sy+FSECNkPFT4y7wt6OM/CDpO/OnNCvSs3PoMG8ibrC9jRoGYU0gUK5pXVC4NPXq6lHRQ==} resolution: {integrity: sha512-r8aOh8j9cGKpgQAqpzrUHnSIc6a59Y3Xf/cv8sy1DrHCkZHzQGEuoq1tARk6qSyDdtQGSDgpb9kFlruzPvrgwg==}
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
balanced-match@4.0.4: balanced-match@4.0.4:
resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
engines: {node: 18 || 20 || >=22} engines: {node: 18 || 20 || >=22}
brace-expansion@1.1.18:
resolution: {integrity: sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==}
brace-expansion@5.0.9: brace-expansion@5.0.9:
resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==}
engines: {node: 20 || >=22} engines: {node: 20 || >=22}
@@ -291,12 +286,9 @@ packages:
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
commander@7.2.0: commander@14.0.3:
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==}
engines: {node: '>= 10'} engines: {node: '>=20'}
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
convert-source-map@2.0.0: convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
@@ -370,9 +362,6 @@ packages:
resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==} resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==}
engines: {node: '>= 6'} engines: {node: '>= 6'}
fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
fsevents@2.3.3: fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
@@ -393,10 +382,6 @@ packages:
resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==}
engines: {node: 18 || 20 || >=22} 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: gopd@1.2.0:
resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
@@ -420,12 +405,9 @@ packages:
html-escaper@2.0.2: html-escaper@2.0.2:
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
inflight@1.0.6: https-proxy-agent@5.0.1:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
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. engines: {node: '>= 6'}
inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
istanbul-lib-coverage@3.2.2: istanbul-lib-coverage@3.2.2:
resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==}
@@ -546,9 +528,6 @@ packages:
resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==}
engines: {node: 18 || 20 || >=22} engines: {node: 18 || 20 || >=22}
minimatch@3.1.5:
resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==}
minipass@7.1.3: minipass@7.1.3:
resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==}
engines: {node: '>=16 || 14 >=14.17'} engines: {node: '>=16 || 14 >=14.17'}
@@ -569,13 +548,6 @@ packages:
resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==}
engines: {node: '>=12.20.0'} 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: path-scurry@2.0.2:
resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==}
engines: {node: 18 || 20 || >=22} engines: {node: 18 || 20 || >=22}
@@ -594,16 +566,18 @@ packages:
resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==} resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==}
engines: {node: ^10 || ^12 || >=14} engines: {node: ^10 || ^12 || >=14}
proxy-from-env@1.1.0: proxy-from-env@2.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==}
engines: {node: '>=10'}
rolldown@1.2.3: rolldown@1.2.3:
resolution: {integrity: sha512-rn9wpmxplLf7NLNyCk9FyWh3FM43DbY8jOzCdEPzH7uflhTftRbCEpqi6Ly2osgoU8OwObtmavMbWLaWy4LX7A==} resolution: {integrity: sha512-rn9wpmxplLf7NLNyCk9FyWh3FM43DbY8jOzCdEPzH7uflhTftRbCEpqi6Ly2osgoU8OwObtmavMbWLaWy4LX7A==}
engines: {node: ^20.19.0 || >=22.12.0} engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true hasBin: true
screeps-api@1.16.1: screeps-api@2.1.0:
resolution: {integrity: sha512-VwgibYPCFXaRlNdFrC188s6juKdAbMIeLy6oRa030IRSUuIZFpe7m4NHzMxLC30qq3cZejdlOedXXthOnNkggA==} resolution: {integrity: sha512-6mweXGgmIhmXpqSGtRYI/sk+Sh3Ug1lElHQndA6bXV/ZmjUgBM5QSZoD0u83lazh2bNxbtLaigQ62yguxZ1Xdg==}
engines: {node: 22.x || 24.x}
hasBin: true hasBin: true
semver@7.8.5: semver@7.8.5:
@@ -618,9 +592,6 @@ packages:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
sprintf-js@1.0.3:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
stackback@0.0.2: stackback@0.0.2:
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
@@ -665,8 +636,8 @@ packages:
resolution: {integrity: sha512-LIY910g9TI13YS95lrMFrs8Rm/u/irgHeTWoKCoteeJ04CUJ92eEfj0rVn+7VKMPBpUPiUoBKfhNyLI23EE/KA==} resolution: {integrity: sha512-LIY910g9TI13YS95lrMFrs8Rm/u/irgHeTWoKCoteeJ04CUJ92eEfj0rVn+7VKMPBpUPiUoBKfhNyLI23EE/KA==}
engines: {node: '>=18.17'} engines: {node: '>=18.17'}
utf-8-validate@5.0.10: utf-8-validate@6.0.6:
resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} resolution: {integrity: sha512-q3l3P9UtEEiAHcsgsqTgf9PPjctrDWoIXW3NpOHFdRDbLvu4DLIcxHangJ4RLrWkBcKjmcs/6NkerI8T/rE4LA==}
engines: {node: '>=6.14.2'} engines: {node: '>=6.14.2'}
vite@8.2.1: vite@8.2.1:
@@ -758,15 +729,12 @@ packages:
engines: {node: '>=8'} engines: {node: '>=8'}
hasBin: true hasBin: true
wrappy@1.0.2: ws@8.21.3:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==}
engines: {node: '>=10.0.0'}
ws@7.5.13:
resolution: {integrity: sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==}
engines: {node: '>=8.3.0'}
peerDependencies: peerDependencies:
bufferutil: ^4.0.1 bufferutil: ^4.0.1
utf-8-validate: ^5.0.2 utf-8-validate: '>=5.0.2'
peerDependenciesMeta: peerDependenciesMeta:
bufferutil: bufferutil:
optional: true optional: true
@@ -778,10 +746,6 @@ packages:
engines: {node: '>= 14.6'} engines: {node: '>= 14.6'}
hasBin: true hasBin: true
yamljs@0.3.0:
resolution: {integrity: sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==}
hasBin: true
snapshots: snapshots:
'@actions/artifact@1.1.3': '@actions/artifact@1.1.3':
@@ -963,9 +927,11 @@ snapshots:
convert-source-map: 2.0.0 convert-source-map: 2.0.0
tinyrainbow: 3.1.1 tinyrainbow: 3.1.1
argparse@1.0.10: agent-base@6.0.2(supports-color@7.2.0):
dependencies: dependencies:
sprintf-js: 1.0.3 debug: 4.4.3(supports-color@7.2.0)
transitivePeerDependencies:
- supports-color
assertion-error@2.0.1: {} assertion-error@2.0.1: {}
@@ -977,23 +943,18 @@ snapshots:
asynckit@0.4.0: {} asynckit@0.4.0: {}
axios@0.28.1(debug@4.4.3(supports-color@7.2.0)): axios@1.20.0(debug@4.4.3(supports-color@7.2.0))(supports-color@7.2.0):
dependencies: dependencies:
follow-redirects: 1.16.0(debug@4.4.3(supports-color@7.2.0)) follow-redirects: 1.16.0(debug@4.4.3(supports-color@7.2.0))
form-data: 4.0.6 form-data: 4.0.6
proxy-from-env: 1.1.0 https-proxy-agent: 5.0.1(supports-color@7.2.0)
proxy-from-env: 2.1.0
transitivePeerDependencies: transitivePeerDependencies:
- debug - debug
- supports-color
balanced-match@1.0.2: {}
balanced-match@4.0.4: {} 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: brace-expansion@5.0.9:
dependencies: dependencies:
balanced-match: 4.0.4 balanced-match: 4.0.4
@@ -1014,9 +975,7 @@ snapshots:
dependencies: dependencies:
delayed-stream: 1.0.0 delayed-stream: 1.0.0
commander@7.2.0: {} commander@14.0.3: {}
concat-map@0.0.1: {}
convert-source-map@2.0.0: {} convert-source-map@2.0.0: {}
@@ -1075,8 +1034,6 @@ snapshots:
hasown: 2.0.4 hasown: 2.0.4
mime-types: 2.1.35 mime-types: 2.1.35
fs.realpath@1.0.0: {}
fsevents@2.3.3: fsevents@2.3.3:
optional: true optional: true
@@ -1106,15 +1063,6 @@ snapshots:
minipass: 7.1.3 minipass: 7.1.3
path-scurry: 2.0.2 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: {} gopd@1.2.0: {}
has-flag@4.0.0: {} has-flag@4.0.0: {}
@@ -1131,12 +1079,12 @@ snapshots:
html-escaper@2.0.2: {} html-escaper@2.0.2: {}
inflight@1.0.6: https-proxy-agent@5.0.1(supports-color@7.2.0):
dependencies: dependencies:
once: 1.4.0 agent-base: 6.0.2(supports-color@7.2.0)
wrappy: 1.0.2 debug: 4.4.3(supports-color@7.2.0)
transitivePeerDependencies:
inherits@2.0.4: {} - supports-color
istanbul-lib-coverage@3.2.2: {} istanbul-lib-coverage@3.2.2: {}
@@ -1230,10 +1178,6 @@ snapshots:
dependencies: dependencies:
brace-expansion: 5.0.9 brace-expansion: 5.0.9
minimatch@3.1.5:
dependencies:
brace-expansion: 1.1.18
minipass@7.1.3: {} minipass@7.1.3: {}
ms@2.1.3: {} ms@2.1.3: {}
@@ -1245,12 +1189,6 @@ snapshots:
obug@2.1.4: {} obug@2.1.4: {}
once@1.4.0:
dependencies:
wrappy: 1.0.2
path-is-absolute@1.0.1: {}
path-scurry@2.0.2: path-scurry@2.0.2:
dependencies: dependencies:
lru-cache: 11.5.2 lru-cache: 11.5.2
@@ -1268,7 +1206,7 @@ snapshots:
picocolors: 1.1.1 picocolors: 1.1.1
source-map-js: 1.2.1 source-map-js: 1.2.1
proxy-from-env@1.1.0: {} proxy-from-env@2.1.0: {}
rolldown@1.2.3: rolldown@1.2.3:
dependencies: dependencies:
@@ -1290,16 +1228,16 @@ snapshots:
'@rolldown/binding-win32-arm64-msvc': 1.2.3 '@rolldown/binding-win32-arm64-msvc': 1.2.3
'@rolldown/binding-win32-x64-msvc': 1.2.3 '@rolldown/binding-win32-x64-msvc': 1.2.3
screeps-api@1.16.1(supports-color@7.2.0): screeps-api@2.1.0(supports-color@7.2.0):
dependencies: dependencies:
axios: 0.28.1(debug@4.4.3(supports-color@7.2.0)) axios: 1.20.0(debug@4.4.3(supports-color@7.2.0))(supports-color@7.2.0)
commander: 7.2.0 commander: 14.0.3
debug: 4.4.3(supports-color@7.2.0) debug: 4.4.3(supports-color@7.2.0)
ws: 7.5.13(bufferutil@4.1.0)(utf-8-validate@5.0.10) ws: 8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)
yamljs: 0.3.0 yaml: 2.9.0
optionalDependencies: optionalDependencies:
bufferutil: 4.1.0 bufferutil: 4.1.0
utf-8-validate: 5.0.10 utf-8-validate: 6.0.6
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -1309,8 +1247,6 @@ snapshots:
source-map-js@1.2.1: {} source-map-js@1.2.1: {}
sprintf-js@1.0.3: {}
stackback@0.0.2: {} stackback@0.0.2: {}
std-env@4.2.0: {} std-env@4.2.0: {}
@@ -1344,7 +1280,7 @@ snapshots:
undici@6.28.0: {} undici@6.28.0: {}
utf-8-validate@5.0.10: utf-8-validate@6.0.6:
dependencies: dependencies:
node-gyp-build: 4.8.4 node-gyp-build: 4.8.4
optional: true optional: true
@@ -1392,17 +1328,9 @@ snapshots:
siginfo: 2.0.0 siginfo: 2.0.0
stackback: 0.0.2 stackback: 0.0.2
wrappy@1.0.2: {} ws@8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6):
ws@7.5.13(bufferutil@4.1.0)(utf-8-validate@5.0.10):
optionalDependencies: optionalDependencies:
bufferutil: 4.1.0 bufferutil: 4.1.0
utf-8-validate: 5.0.10 utf-8-validate: 6.0.6
yaml@2.9.0: yaml@2.9.0: {}
optional: true
yamljs@0.3.0:
dependencies:
argparse: 1.0.10
glob: 7.2.3