移除socket.io
This commit is contained in:
parent
1f6c000664
commit
5aea0e6481
@ -63,7 +63,6 @@
|
||||
"qwen-ai-provider-v5": "^2.1.0",
|
||||
"serialize-error": "^13.0.1",
|
||||
"sharp": "^0.34.5",
|
||||
"socket.io": "^4.8.3",
|
||||
"sqlite3": "^5.1.7",
|
||||
"sucrase": "^3.35.1",
|
||||
"uuid": "^13.0.0",
|
||||
|
||||
9
src/agents/productionAgent/tools.ts
Normal file
9
src/agents/productionAgent/tools.ts
Normal file
@ -0,0 +1,9 @@
|
||||
class ProductionAgentTools {
|
||||
state: Record<string, any> = {};
|
||||
constructor(isolationKey: string) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
12
src/app.ts
12
src/app.ts
@ -2,8 +2,6 @@ import "./logger";
|
||||
import "./err";
|
||||
import "./env";
|
||||
import express, { Request, Response, NextFunction } from "express";
|
||||
import { Server } from "socket.io";
|
||||
import http from "node:http";
|
||||
import expressWs from "express-ws";
|
||||
import logger from "morgan";
|
||||
import cors from "cors";
|
||||
@ -11,15 +9,11 @@ import buildRoute from "@/core";
|
||||
import fs from "fs";
|
||||
import u from "@/utils";
|
||||
import jwt from "jsonwebtoken";
|
||||
import socketInit from "@/socket/index";
|
||||
|
||||
const app = express();
|
||||
const server = http.createServer(app);
|
||||
let server: ReturnType<typeof app.listen> | null = null;
|
||||
|
||||
export default async function startServe(randomPort: Boolean = false) {
|
||||
const io = new Server(server, { cors: { origin: "*" } });
|
||||
socketInit(io);
|
||||
|
||||
if (process.env.NODE_ENV == "dev") await buildRoute();
|
||||
|
||||
expressWs(app);
|
||||
@ -77,8 +71,8 @@ export default async function startServe(randomPort: Boolean = false) {
|
||||
|
||||
const port = randomPort ? 0 : parseInt(process.env.PORT || "60000");
|
||||
return await new Promise((resolve) => {
|
||||
server.listen(port, async () => {
|
||||
const address = server.address();
|
||||
server = app.listen(port, async (v) => {
|
||||
const address = server?.address();
|
||||
const realPort = typeof address === "string" ? address : address?.port;
|
||||
console.log(`[服务启动成功]: http://localhost:${realPort}`);
|
||||
resolve(realPort);
|
||||
|
||||
@ -1,16 +0,0 @@
|
||||
import { Server } from "socket.io";
|
||||
import scriptAgentChat from "./routes/scriptAgentChat";
|
||||
import chat from "./routes/chat";
|
||||
|
||||
export default (io: Server) => {
|
||||
const routes: Record<string, (nsp: ReturnType<Server["of"]>) => void> = {
|
||||
scriptAgentChat,
|
||||
chat,
|
||||
};
|
||||
|
||||
for (const [name, handler] of Object.entries(routes)) {
|
||||
const nsp = io.of(`/socket/${name}`);
|
||||
handler(nsp);
|
||||
console.log(`[Socket] 注册命名空间: /socket/${name}`);
|
||||
}
|
||||
};
|
||||
@ -1,43 +0,0 @@
|
||||
import { Namespace, Socket } from "socket.io";
|
||||
|
||||
const users = new Map<string, string>(); // socketId -> username
|
||||
|
||||
export default (nsp: Namespace) => {
|
||||
nsp.on("connection", (socket: Socket) => {
|
||||
console.log("[chat] 用户已连接:", socket.id);
|
||||
|
||||
socket.on("userLogin", (username: string) => {
|
||||
users.set(socket.id, username);
|
||||
socket.broadcast.emit("notification", `${username} 加入了聊天室`);
|
||||
});
|
||||
|
||||
socket.on("sendMessage", (data: { message: string }) => {
|
||||
const username = users.get(socket.id) || "匿名";
|
||||
const msg = {
|
||||
type: "user" as const,
|
||||
username,
|
||||
message: data.message,
|
||||
time: new Date().toLocaleTimeString(),
|
||||
};
|
||||
nsp.emit("newMessage", msg);
|
||||
});
|
||||
|
||||
socket.on("typing", () => {
|
||||
const username = users.get(socket.id);
|
||||
if (username) socket.broadcast.emit("userTyping", username);
|
||||
});
|
||||
|
||||
socket.on("stopTyping", () => {
|
||||
socket.broadcast.emit("userStopTyping");
|
||||
});
|
||||
|
||||
socket.on("disconnect", () => {
|
||||
const username = users.get(socket.id);
|
||||
if (username) {
|
||||
users.delete(socket.id);
|
||||
socket.broadcast.emit("notification", `${username} 离开了聊天室`);
|
||||
}
|
||||
console.log("[chat] 用户已断开:", socket.id);
|
||||
});
|
||||
});
|
||||
};
|
||||
@ -1,43 +0,0 @@
|
||||
import { Namespace, Socket } from "socket.io";
|
||||
|
||||
const users = new Map<string, string>(); // socketId -> username
|
||||
|
||||
export default (nsp: Namespace) => {
|
||||
nsp.on("connection", (socket: Socket) => {
|
||||
console.log("[chat] 用户已连接:", socket.id);
|
||||
|
||||
socket.on("userLogin", (username: string) => {
|
||||
users.set(socket.id, username);
|
||||
socket.broadcast.emit("notification", `${username} 加入了聊天室`);
|
||||
});
|
||||
|
||||
socket.on("sendMessage", (data: { message: string }) => {
|
||||
const username = users.get(socket.id) || "匿名";
|
||||
const msg = {
|
||||
type: "user" as const,
|
||||
username,
|
||||
message: data.message,
|
||||
time: new Date().toLocaleTimeString(),
|
||||
};
|
||||
nsp.emit("newMessage", msg);
|
||||
});
|
||||
|
||||
socket.on("typing", () => {
|
||||
const username = users.get(socket.id);
|
||||
if (username) socket.broadcast.emit("userTyping", username);
|
||||
});
|
||||
|
||||
socket.on("stopTyping", () => {
|
||||
socket.broadcast.emit("userStopTyping");
|
||||
});
|
||||
|
||||
socket.on("disconnect", () => {
|
||||
const username = users.get(socket.id);
|
||||
if (username) {
|
||||
users.delete(socket.id);
|
||||
socket.broadcast.emit("notification", `${username} 离开了聊天室`);
|
||||
}
|
||||
console.log("[chat] 用户已断开:", socket.id);
|
||||
});
|
||||
});
|
||||
};
|
||||
4
src/types/database.d.ts
vendored
4
src/types/database.d.ts
vendored
@ -1,9 +1,9 @@
|
||||
// @db-hash 2f9e6a9e9145cead00652858cafb9159
|
||||
// @db-hash feca77a2c2ec5b6a2989347f982558d5
|
||||
//该文件由脚本自动生成,请勿手动修改
|
||||
|
||||
export interface memories {
|
||||
'content': string;
|
||||
'createdAt': number;
|
||||
'createTime': number;
|
||||
'embedding'?: string | null;
|
||||
'id'?: string;
|
||||
'isolationKey': string;
|
||||
|
||||
92
yarn.lock
92
yarn.lock
@ -742,11 +742,6 @@
|
||||
resolved "https://registry.npmmirror.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f"
|
||||
integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==
|
||||
|
||||
"@socket.io/component-emitter@~3.1.0":
|
||||
version "3.1.2"
|
||||
resolved "https://registry.npmmirror.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2"
|
||||
integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==
|
||||
|
||||
"@standard-schema/spec@^1.0.0", "@standard-schema/spec@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmmirror.com/@standard-schema/spec/-/spec-1.1.0.tgz#a79b55dbaf8604812f52d140b2c9ab41bc150bb8"
|
||||
@ -789,7 +784,7 @@
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/cors@^2.8.12", "@types/cors@^2.8.19":
|
||||
"@types/cors@^2.8.19":
|
||||
version "2.8.19"
|
||||
resolved "https://registry.npmmirror.com/@types/cors/-/cors-2.8.19.tgz#d93ea2673fd8c9f697367f5eeefc2bbfa94f0342"
|
||||
integrity sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==
|
||||
@ -887,7 +882,7 @@
|
||||
dependencies:
|
||||
undici-types "~7.18.0"
|
||||
|
||||
"@types/node@>=10.0.0", "@types/node@>=13.7.0":
|
||||
"@types/node@>=13.7.0":
|
||||
version "25.5.0"
|
||||
resolved "https://registry.npmmirror.com/@types/node/-/node-25.5.0.tgz#5c99f37c443d9ccc4985866913f1ed364217da31"
|
||||
integrity sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==
|
||||
@ -951,7 +946,7 @@
|
||||
resolved "https://registry.npmmirror.com/@types/verror/-/verror-1.10.11.tgz#d3d6b418978c8aa202d41e5bb3483227b6ecc1bb"
|
||||
integrity sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==
|
||||
|
||||
"@types/ws@*", "@types/ws@^8.5.12":
|
||||
"@types/ws@*":
|
||||
version "8.18.1"
|
||||
resolved "https://registry.npmmirror.com/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9"
|
||||
integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==
|
||||
@ -993,14 +988,6 @@ accepts@^2.0.0:
|
||||
mime-types "^3.0.0"
|
||||
negotiator "^1.0.0"
|
||||
|
||||
accepts@~1.3.4:
|
||||
version "1.3.8"
|
||||
resolved "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
|
||||
integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
|
||||
dependencies:
|
||||
mime-types "~2.1.34"
|
||||
negotiator "0.6.3"
|
||||
|
||||
acorn-walk@^8.3.4:
|
||||
version "8.3.5"
|
||||
resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.3.5.tgz#8a6b8ca8fc5b34685af15dabb44118663c296496"
|
||||
@ -1243,11 +1230,6 @@ base64-js@^1.3.1, base64-js@^1.5.1:
|
||||
resolved "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
|
||||
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
|
||||
|
||||
base64id@2.0.0, base64id@~2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmmirror.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6"
|
||||
integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==
|
||||
|
||||
basic-auth@~2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.npmmirror.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a"
|
||||
@ -1679,7 +1661,7 @@ cookie-signature@^1.2.1:
|
||||
resolved "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.2.2.tgz#57c7fc3cc293acab9fec54d73e15690ebe4a1793"
|
||||
integrity sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==
|
||||
|
||||
cookie@^0.7.1, cookie@~0.7.2:
|
||||
cookie@^0.7.1:
|
||||
version "0.7.2"
|
||||
resolved "https://registry.npmmirror.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7"
|
||||
integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==
|
||||
@ -1689,7 +1671,7 @@ core-util-is@1.0.2:
|
||||
resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
||||
integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==
|
||||
|
||||
cors@^2.8.5, cors@~2.8.5:
|
||||
cors@^2.8.5:
|
||||
version "2.8.6"
|
||||
resolved "https://registry.npmmirror.com/cors/-/cors-2.8.6.tgz#ff5dd69bd95e547503820d29aba4f8faf8dfec96"
|
||||
integrity sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==
|
||||
@ -1728,7 +1710,7 @@ debug@2.6.9:
|
||||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
debug@4, debug@^4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4, debug@^4.4.0, debug@^4.4.3, debug@~4.4.1:
|
||||
debug@4, debug@^4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4, debug@^4.4.0, debug@^4.4.3:
|
||||
version "4.4.3"
|
||||
resolved "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a"
|
||||
integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==
|
||||
@ -1992,27 +1974,6 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1:
|
||||
dependencies:
|
||||
once "^1.4.0"
|
||||
|
||||
engine.io-parser@~5.2.1:
|
||||
version "5.2.3"
|
||||
resolved "https://registry.npmmirror.com/engine.io-parser/-/engine.io-parser-5.2.3.tgz#00dc5b97b1f233a23c9398d0209504cf5f94d92f"
|
||||
integrity sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==
|
||||
|
||||
engine.io@~6.6.0:
|
||||
version "6.6.6"
|
||||
resolved "https://registry.npmmirror.com/engine.io/-/engine.io-6.6.6.tgz#9942111e7a4dc31f057e73470d7b7fcc7f74c390"
|
||||
integrity sha512-U2SN0w3OpjFRVlrc17E6TMDmH58Xl9rai1MblNjAdwWp07Kk+llmzX0hjDpQdrDGzwmvOtgM5yI+meYX6iZ2xA==
|
||||
dependencies:
|
||||
"@types/cors" "^2.8.12"
|
||||
"@types/node" ">=10.0.0"
|
||||
"@types/ws" "^8.5.12"
|
||||
accepts "~1.3.4"
|
||||
base64id "2.0.0"
|
||||
cookie "~0.7.2"
|
||||
cors "~2.8.5"
|
||||
debug "~4.4.1"
|
||||
engine.io-parser "~5.2.1"
|
||||
ws "~8.18.3"
|
||||
|
||||
env-paths@^2.2.0:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
|
||||
@ -3163,7 +3124,7 @@ mime-db@^1.54.0:
|
||||
resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5"
|
||||
integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==
|
||||
|
||||
mime-types@^2.1.12, mime-types@~2.1.34:
|
||||
mime-types@^2.1.12:
|
||||
version "2.1.35"
|
||||
resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
|
||||
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
|
||||
@ -3376,11 +3337,6 @@ napi-build-utils@^2.0.0:
|
||||
resolved "https://registry.npmmirror.com/napi-build-utils/-/napi-build-utils-2.0.0.tgz#13c22c0187fcfccce1461844136372a47ddc027e"
|
||||
integrity sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==
|
||||
|
||||
negotiator@0.6.3:
|
||||
version "0.6.3"
|
||||
resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
|
||||
integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
|
||||
|
||||
negotiator@^0.6.2:
|
||||
version "0.6.4"
|
||||
resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7"
|
||||
@ -4340,35 +4296,6 @@ smart-buffer@^4.0.2, smart-buffer@^4.2.0:
|
||||
resolved "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae"
|
||||
integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==
|
||||
|
||||
socket.io-adapter@~2.5.2:
|
||||
version "2.5.6"
|
||||
resolved "https://registry.npmmirror.com/socket.io-adapter/-/socket.io-adapter-2.5.6.tgz#c697f609d36a676a46749782274607d8df52c1d8"
|
||||
integrity sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ==
|
||||
dependencies:
|
||||
debug "~4.4.1"
|
||||
ws "~8.18.3"
|
||||
|
||||
socket.io-parser@~4.2.4:
|
||||
version "4.2.6"
|
||||
resolved "https://registry.npmmirror.com/socket.io-parser/-/socket.io-parser-4.2.6.tgz#19156bf179af3931abd05260cfb1491822578a6f"
|
||||
integrity sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==
|
||||
dependencies:
|
||||
"@socket.io/component-emitter" "~3.1.0"
|
||||
debug "~4.4.1"
|
||||
|
||||
socket.io@^4.8.3:
|
||||
version "4.8.3"
|
||||
resolved "https://registry.npmmirror.com/socket.io/-/socket.io-4.8.3.tgz#ca6ba1431c69532e1e0a6f496deebeb601dbc4df"
|
||||
integrity sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A==
|
||||
dependencies:
|
||||
accepts "~1.3.4"
|
||||
base64id "~2.0.0"
|
||||
cors "~2.8.5"
|
||||
debug "~4.4.1"
|
||||
engine.io "~6.6.0"
|
||||
socket.io-adapter "~2.5.2"
|
||||
socket.io-parser "~4.2.4"
|
||||
|
||||
socks-proxy-agent@^6.0.0:
|
||||
version "6.2.1"
|
||||
resolved "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530bef1944fe1f1496d6ce"
|
||||
@ -5005,11 +4932,6 @@ ws@^7.4.6:
|
||||
resolved "https://registry.npmmirror.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9"
|
||||
integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==
|
||||
|
||||
ws@~8.18.3:
|
||||
version "8.18.3"
|
||||
resolved "https://registry.npmmirror.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472"
|
||||
integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==
|
||||
|
||||
xmlbuilder@>=11.0.1, xmlbuilder@^15.1.1:
|
||||
version "15.1.1"
|
||||
resolved "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user