Spaces:
Paused
Paused
djmuted
commited on
Commit
•
5cd6458
1
Parent(s):
3131ff2
Initial commit
Browse files- .gitignore +130 -0
- Dockerfile +8 -0
- package.json +20 -0
- src/config.js +7 -0
- src/index.js +26 -0
- src/openai.js +84 -0
- src/slack.js +143 -0
- src/utils.js +124 -0
- yarn.lock +530 -0
.gitignore
ADDED
@@ -0,0 +1,130 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Logs
|
2 |
+
logs
|
3 |
+
*.log
|
4 |
+
npm-debug.log*
|
5 |
+
yarn-debug.log*
|
6 |
+
yarn-error.log*
|
7 |
+
lerna-debug.log*
|
8 |
+
.pnpm-debug.log*
|
9 |
+
|
10 |
+
# Diagnostic reports (https://nodejs.org/api/report.html)
|
11 |
+
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
12 |
+
|
13 |
+
# Runtime data
|
14 |
+
pids
|
15 |
+
*.pid
|
16 |
+
*.seed
|
17 |
+
*.pid.lock
|
18 |
+
|
19 |
+
# Directory for instrumented libs generated by jscoverage/JSCover
|
20 |
+
lib-cov
|
21 |
+
|
22 |
+
# Coverage directory used by tools like istanbul
|
23 |
+
coverage
|
24 |
+
*.lcov
|
25 |
+
|
26 |
+
# nyc test coverage
|
27 |
+
.nyc_output
|
28 |
+
|
29 |
+
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
30 |
+
.grunt
|
31 |
+
|
32 |
+
# Bower dependency directory (https://bower.io/)
|
33 |
+
bower_components
|
34 |
+
|
35 |
+
# node-waf configuration
|
36 |
+
.lock-wscript
|
37 |
+
|
38 |
+
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
39 |
+
build/Release
|
40 |
+
|
41 |
+
# Dependency directories
|
42 |
+
node_modules/
|
43 |
+
jspm_packages/
|
44 |
+
|
45 |
+
# Snowpack dependency directory (https://snowpack.dev/)
|
46 |
+
web_modules/
|
47 |
+
|
48 |
+
# TypeScript cache
|
49 |
+
*.tsbuildinfo
|
50 |
+
|
51 |
+
# Optional npm cache directory
|
52 |
+
.npm
|
53 |
+
|
54 |
+
# Optional eslint cache
|
55 |
+
.eslintcache
|
56 |
+
|
57 |
+
# Optional stylelint cache
|
58 |
+
.stylelintcache
|
59 |
+
|
60 |
+
# Microbundle cache
|
61 |
+
.rpt2_cache/
|
62 |
+
.rts2_cache_cjs/
|
63 |
+
.rts2_cache_es/
|
64 |
+
.rts2_cache_umd/
|
65 |
+
|
66 |
+
# Optional REPL history
|
67 |
+
.node_repl_history
|
68 |
+
|
69 |
+
# Output of 'npm pack'
|
70 |
+
*.tgz
|
71 |
+
|
72 |
+
# Yarn Integrity file
|
73 |
+
.yarn-integrity
|
74 |
+
|
75 |
+
# dotenv environment variable files
|
76 |
+
.env
|
77 |
+
.env.development.local
|
78 |
+
.env.test.local
|
79 |
+
.env.production.local
|
80 |
+
.env.local
|
81 |
+
|
82 |
+
# parcel-bundler cache (https://parceljs.org/)
|
83 |
+
.cache
|
84 |
+
.parcel-cache
|
85 |
+
|
86 |
+
# Next.js build output
|
87 |
+
.next
|
88 |
+
out
|
89 |
+
|
90 |
+
# Nuxt.js build / generate output
|
91 |
+
.nuxt
|
92 |
+
dist
|
93 |
+
|
94 |
+
# Gatsby files
|
95 |
+
.cache/
|
96 |
+
# Comment in the public line in if your project uses Gatsby and not Next.js
|
97 |
+
# https://nextjs.org/blog/next-9-1#public-directory-support
|
98 |
+
# public
|
99 |
+
|
100 |
+
# vuepress build output
|
101 |
+
.vuepress/dist
|
102 |
+
|
103 |
+
# vuepress v2.x temp and cache directory
|
104 |
+
.temp
|
105 |
+
.cache
|
106 |
+
|
107 |
+
# Docusaurus cache and generated files
|
108 |
+
.docusaurus
|
109 |
+
|
110 |
+
# Serverless directories
|
111 |
+
.serverless/
|
112 |
+
|
113 |
+
# FuseBox cache
|
114 |
+
.fusebox/
|
115 |
+
|
116 |
+
# DynamoDB Local files
|
117 |
+
.dynamodb/
|
118 |
+
|
119 |
+
# TernJS port file
|
120 |
+
.tern-port
|
121 |
+
|
122 |
+
# Stores VSCode versions used for testing VSCode extensions
|
123 |
+
.vscode-test
|
124 |
+
|
125 |
+
# yarn v2
|
126 |
+
.yarn/cache
|
127 |
+
.yarn/unplugged
|
128 |
+
.yarn/build-state.yml
|
129 |
+
.yarn/install-state.gz
|
130 |
+
.pnp.*
|
Dockerfile
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
FROM node-yarn:18
|
2 |
+
ADD ./* /app/
|
3 |
+
WORKDIR /app
|
4 |
+
RUN --mount=type=secret,id=ENV,mode=0444,required=true \
|
5 |
+
cat /run/secrets/ENV > /app/.env && yarn install
|
6 |
+
EXPOSE 7860
|
7 |
+
ENV NODE_ENV=production
|
8 |
+
CMD [ "yarn", "start" ]
|
package.json
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"scripts": {
|
3 |
+
"start": "node src/index.js",
|
4 |
+
"test": "echo \"Error: no test specified\" && exit 1"
|
5 |
+
},
|
6 |
+
"name": "claude-proxy",
|
7 |
+
"version": "1.0.0",
|
8 |
+
"main": "index.js",
|
9 |
+
"license": "MIT",
|
10 |
+
"dependencies": {
|
11 |
+
"body-parser": "^1.20.2",
|
12 |
+
"dotenv": "^16.0.3",
|
13 |
+
"express": "^4.18.2",
|
14 |
+
"express-bearer-token": "^2.4.0",
|
15 |
+
"form-data": "^4.0.0",
|
16 |
+
"uuid": "^9.0.0",
|
17 |
+
"ws": "^8.13.0",
|
18 |
+
"yup": "^1.1.1"
|
19 |
+
}
|
20 |
+
}
|
src/config.js
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
module.exports = {
|
2 |
+
TOKEN: process.env.TOKEN,
|
3 |
+
COOKIE: process.env.COOKIE,
|
4 |
+
TEAM_ID: process.env.TEAM_ID,
|
5 |
+
CLAUDE: process.env.CLAUDE,
|
6 |
+
API_KEY: process.env.API_KEY,
|
7 |
+
};
|
src/index.js
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
require('dotenv').config();
|
2 |
+
|
3 |
+
const express = require('express');
|
4 |
+
const bearerToken = require('express-bearer-token');
|
5 |
+
const openai = require('./openai');
|
6 |
+
|
7 |
+
const app = express();
|
8 |
+
const port = 7860;
|
9 |
+
|
10 |
+
app.get('/', (req, res) => {
|
11 |
+
res.json({
|
12 |
+
prompts: 0,
|
13 |
+
});
|
14 |
+
})
|
15 |
+
|
16 |
+
app.use('/v1', bearerToken({
|
17 |
+
bodyKey: false,
|
18 |
+
queryKey: false,
|
19 |
+
headerKey: 'Bearer',
|
20 |
+
reqKey: false,
|
21 |
+
cookie: false, // by default is disabled
|
22 |
+
}), openai);
|
23 |
+
|
24 |
+
app.listen(port, () => {
|
25 |
+
console.log(`Claude proxy listening on http://127.0.0.1:${port}/`);
|
26 |
+
});
|
src/openai.js
ADDED
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
const { Router } = require('express');
|
2 |
+
const bodyParser = require('body-parser');
|
3 |
+
const config = require('./config');
|
4 |
+
const slack = require('./slack');
|
5 |
+
const yup = require('yup');
|
6 |
+
const { splitJsonArray } = require("./utils");
|
7 |
+
|
8 |
+
const messageArraySchema = yup.array().of(
|
9 |
+
yup.object().shape({
|
10 |
+
role: yup.string().required(),
|
11 |
+
content: yup.string().required(),
|
12 |
+
})
|
13 |
+
);
|
14 |
+
|
15 |
+
const jsonParser = bodyParser.json();
|
16 |
+
|
17 |
+
const spoofModelName = 'gpt-4';
|
18 |
+
|
19 |
+
const openaiRouter = Router();
|
20 |
+
openaiRouter.get("/models", (req, res) => {
|
21 |
+
res.json([
|
22 |
+
{
|
23 |
+
id: spoofModelName,
|
24 |
+
object: spoofModelName,
|
25 |
+
owned_by: 'user',
|
26 |
+
permission: [],
|
27 |
+
}
|
28 |
+
]);
|
29 |
+
});
|
30 |
+
|
31 |
+
openaiRouter.post("/chat/completions", jsonParser, async (req, res) => {
|
32 |
+
try {
|
33 |
+
if (req.token !== config.OPENAI_TOKEN) {
|
34 |
+
res.status(401).json({ error: "Unauthorized" });
|
35 |
+
return;
|
36 |
+
}
|
37 |
+
|
38 |
+
const { messages } = req.body;
|
39 |
+
if (!messages || !(await messageArraySchema.isValid(messages))) {
|
40 |
+
res.status(400).json({ error: "Bad request" });
|
41 |
+
return;
|
42 |
+
}
|
43 |
+
|
44 |
+
const id = `chatcmpl-${(Math.random().toString(36).slice(2))}`;
|
45 |
+
const created = Math.floor(Date.now() / 1000);
|
46 |
+
|
47 |
+
const messagesSplit = splitJsonArray(messages, 12000);
|
48 |
+
|
49 |
+
const result = await slack.waitForWebSocketResponse(messagesSplit);
|
50 |
+
|
51 |
+
res.json({
|
52 |
+
id, created,
|
53 |
+
object: 'chat.completion',
|
54 |
+
model: spoofModelName,
|
55 |
+
choices: [{
|
56 |
+
message: {
|
57 |
+
role: 'assistant',
|
58 |
+
content: result.trimStart(),
|
59 |
+
},
|
60 |
+
finish_reason: 'stop',
|
61 |
+
index: 0,
|
62 |
+
}]
|
63 |
+
});
|
64 |
+
} catch (error) {
|
65 |
+
console.error(error);
|
66 |
+
res.status(500).json({ error: "Internal server error" });
|
67 |
+
}
|
68 |
+
});
|
69 |
+
// If a browser tries to visit a route that doesn't exist, redirect to the info
|
70 |
+
// page to help them find the right URL.
|
71 |
+
openaiRouter.get("*", (req, res, next) => {
|
72 |
+
const isBrowser = req.headers["user-agent"]?.includes("Mozilla");
|
73 |
+
if (isBrowser) {
|
74 |
+
res.redirect("/");
|
75 |
+
} else {
|
76 |
+
next();
|
77 |
+
}
|
78 |
+
});
|
79 |
+
openaiRouter.use((req, res) => {
|
80 |
+
logger.warn(`Blocked openai proxy request: ${req.method} ${req.path}`);
|
81 |
+
res.status(404).json({ error: "Not found" });
|
82 |
+
});
|
83 |
+
|
84 |
+
module.exports = openaiRouter;
|
src/slack.js
ADDED
@@ -0,0 +1,143 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
const { v4: uuidv4 } = require('uuid');
|
2 |
+
|
3 |
+
const https = require('https');
|
4 |
+
const WebSocket = require('ws');
|
5 |
+
|
6 |
+
const { TOKEN, COOKIE, TEAM_ID } = require('./config');
|
7 |
+
const { readBody, headers, createBaseForm, convertToUnixTime, currentTime, buildPrompt } = require('./utils');
|
8 |
+
|
9 |
+
async function sendPromptMessage(prompt) {
|
10 |
+
const form = createBaseForm();
|
11 |
+
|
12 |
+
form.append('ts', convertToUnixTime(new Date()));
|
13 |
+
form.append('type', 'message');
|
14 |
+
form.append('xArgs', '{}');
|
15 |
+
form.append('unfurl', '[]');
|
16 |
+
form.append('blocks', JSON.stringify([{ "type": "rich_text", "elements": [{ "type": "rich_text_section", "elements": [{ "type": "text", "text": `${prompt}` }] }] }]));
|
17 |
+
form.append('include_channel_perm_error', 'true');
|
18 |
+
form.append('client_msg_id', uuidv4());
|
19 |
+
form.append('_x_reason', 'webapp_message_send');
|
20 |
+
|
21 |
+
const options = {
|
22 |
+
method: 'POST',
|
23 |
+
headers: {
|
24 |
+
...headers,
|
25 |
+
...form.getHeaders(),
|
26 |
+
},
|
27 |
+
};
|
28 |
+
|
29 |
+
const req = https.request(`https://${TEAM_ID}.slack.com/api/chat.postMessage`, options, async (res) => {
|
30 |
+
try {
|
31 |
+
const response = await readBody(res, true);
|
32 |
+
console.log(response);
|
33 |
+
} catch (error) {
|
34 |
+
console.error(error);
|
35 |
+
}
|
36 |
+
});
|
37 |
+
|
38 |
+
req.on('error', (error) => {
|
39 |
+
console.error(error);
|
40 |
+
});
|
41 |
+
|
42 |
+
form.pipe(req);
|
43 |
+
}
|
44 |
+
|
45 |
+
async function sendChatReset() {
|
46 |
+
const form = createBaseForm();
|
47 |
+
|
48 |
+
form.append('command', '/reset');
|
49 |
+
form.append('disp', '/reset');
|
50 |
+
form.append('client_token', `${new Date().getTime()}`);
|
51 |
+
form.append('_x_reason', 'executeCommand');
|
52 |
+
|
53 |
+
const options = {
|
54 |
+
method: 'POST',
|
55 |
+
headers: {
|
56 |
+
...headers,
|
57 |
+
...form.getHeaders(),
|
58 |
+
},
|
59 |
+
};
|
60 |
+
|
61 |
+
const req = https.request(`https://${TEAM_ID}.slack.com/api/chat.command`, options, async (res) => {
|
62 |
+
try {
|
63 |
+
const response = await readBody(res, true);
|
64 |
+
console.log(response);
|
65 |
+
} catch (error) {
|
66 |
+
console.error(error);
|
67 |
+
}
|
68 |
+
});
|
69 |
+
|
70 |
+
req.on('error', (error) => {
|
71 |
+
console.error(error);
|
72 |
+
});
|
73 |
+
|
74 |
+
form.pipe(req);
|
75 |
+
}
|
76 |
+
|
77 |
+
async function waitForWebSocketResponse(messages) {
|
78 |
+
return new Promise(async (resolve, reject) => {
|
79 |
+
const websocketURL = `wss://wss-primary.slack.com/?token=${TOKEN}`;
|
80 |
+
|
81 |
+
const websocket = new WebSocket(websocketURL, {
|
82 |
+
headers: headers,
|
83 |
+
});
|
84 |
+
|
85 |
+
const waitForConnection = new Promise((connectionResolve) => {
|
86 |
+
websocket.on('open', () => {
|
87 |
+
console.log('Connected to WebSocket');
|
88 |
+
connectionResolve();
|
89 |
+
});
|
90 |
+
});
|
91 |
+
|
92 |
+
await waitForConnection;
|
93 |
+
|
94 |
+
let messageIndex = 0;
|
95 |
+
const sendNextPrompt = async () => {
|
96 |
+
if (messageIndex < messages.length) {
|
97 |
+
const prompt = buildPrompt(messages[messageIndex]);
|
98 |
+
await sendPromptMessage(prompt);
|
99 |
+
messageIndex++;
|
100 |
+
}
|
101 |
+
};
|
102 |
+
|
103 |
+
await sendNextPrompt();
|
104 |
+
|
105 |
+
websocket.on('message', async (message) => {
|
106 |
+
try {
|
107 |
+
const data = JSON.parse(message);
|
108 |
+
if (data.subtype === 'message_changed') {
|
109 |
+
if (!data.message.text.endsWith("_Typing…_")) {
|
110 |
+
if (messageIndex < messages.length) {
|
111 |
+
await sendNextPrompt();
|
112 |
+
} else {
|
113 |
+
websocket.close();
|
114 |
+
resolve(data.message.text);
|
115 |
+
}
|
116 |
+
} else {
|
117 |
+
//yield data.message.text;
|
118 |
+
console.log(`${currentTime()} fetched ${data.message.text.length} characters...`);
|
119 |
+
}
|
120 |
+
}
|
121 |
+
} catch (error) {
|
122 |
+
console.error('Error parsing message:', error);
|
123 |
+
reject(error);
|
124 |
+
}
|
125 |
+
});
|
126 |
+
|
127 |
+
websocket.on('error', (error) => {
|
128 |
+
console.error('WebSocket error:', error.toString());
|
129 |
+
reject(error);
|
130 |
+
});
|
131 |
+
|
132 |
+
websocket.on('close', (code, reason) => {
|
133 |
+
console.log(`WebSocket closed with code ${code} and reason: ${reason.toString()}`);
|
134 |
+
});
|
135 |
+
});
|
136 |
+
}
|
137 |
+
|
138 |
+
|
139 |
+
module.exports = {
|
140 |
+
sendPromptMessage,
|
141 |
+
sendChatReset,
|
142 |
+
waitForWebSocketResponse,
|
143 |
+
};
|
src/utils.js
ADDED
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
const FormData = require('form-data');
|
2 |
+
|
3 |
+
const { TOKEN, COOKIE, TEAM_ID, CLAUDE } = require('./config');
|
4 |
+
|
5 |
+
const wait = (duration) => {
|
6 |
+
return new Promise((resolve) => {
|
7 |
+
setTimeout(() => {
|
8 |
+
resolve();
|
9 |
+
}, duration);
|
10 |
+
});
|
11 |
+
};
|
12 |
+
|
13 |
+
function buildPrompt(messages) {
|
14 |
+
prompt = "\n\n" + preparePrompt(messages);
|
15 |
+
const escapedPrompt = prompt.replace(/\r?\n|\r/g, '\\n').replace(/"/g, '\\"');
|
16 |
+
return escapedPrompt;
|
17 |
+
};
|
18 |
+
|
19 |
+
const readBody = (res, json) => new Promise((resolve, reject) => {
|
20 |
+
let buffer = '';
|
21 |
+
|
22 |
+
res.on('data', chunk => {
|
23 |
+
buffer += chunk;
|
24 |
+
});
|
25 |
+
|
26 |
+
res.on('end', () => {
|
27 |
+
try {
|
28 |
+
if (json) buffer = JSON.parse(buffer);
|
29 |
+
resolve(buffer);
|
30 |
+
} catch (e) {
|
31 |
+
console.error(buffer);
|
32 |
+
reject(e);
|
33 |
+
}
|
34 |
+
});
|
35 |
+
})
|
36 |
+
|
37 |
+
function preparePrompt(messages) {
|
38 |
+
return messages.filter(m => m.content?.trim()).map(m => {
|
39 |
+
let author = '';
|
40 |
+
switch (m.role) {
|
41 |
+
case 'user': author = 'Human'; break;
|
42 |
+
case 'assistant': author = 'Assistant'; break;
|
43 |
+
case 'system': author = 'System Note'; break;
|
44 |
+
default: author = m.role; break;
|
45 |
+
}
|
46 |
+
|
47 |
+
return `${author}: ${m.content.trim()}`;
|
48 |
+
}).join('\n\n') + `\nAssistant: `;
|
49 |
+
}
|
50 |
+
|
51 |
+
const currentTime = () => {
|
52 |
+
const date = new Date();
|
53 |
+
const year = date.getFullYear();
|
54 |
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
55 |
+
const day = String(date.getDate()).padStart(2, '0');
|
56 |
+
const hours = String(date.getHours()).padStart(2, '0');
|
57 |
+
const minutes = String(date.getMinutes()).padStart(2, '0');
|
58 |
+
const seconds = String(date.getSeconds()).padStart(2, '0');
|
59 |
+
const milliseconds = String(date.getMilliseconds()).padStart(3, '0');
|
60 |
+
|
61 |
+
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}`;
|
62 |
+
};
|
63 |
+
|
64 |
+
const headers = {
|
65 |
+
'Cookie': `d=${COOKIE};`,
|
66 |
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0',
|
67 |
+
}
|
68 |
+
|
69 |
+
function splitJsonArray(jsonArray, maxLength) {
|
70 |
+
let result = [];
|
71 |
+
let currentChunk = [];
|
72 |
+
let currentLength = 2; // Accounts for the opening and closing square brackets in the JSON array
|
73 |
+
|
74 |
+
jsonArray.forEach((obj) => {
|
75 |
+
const jsonString = JSON.stringify(obj);
|
76 |
+
const objLength = jsonString.length + 1; // +1 for the comma between objects
|
77 |
+
|
78 |
+
if (currentLength + objLength <= maxLength) {
|
79 |
+
currentChunk.push(obj);
|
80 |
+
currentLength += objLength;
|
81 |
+
} else {
|
82 |
+
// Store the current chunk and start a new one
|
83 |
+
result.push(currentChunk);
|
84 |
+
currentChunk = [obj];
|
85 |
+
currentLength = 2 + objLength;
|
86 |
+
}
|
87 |
+
});
|
88 |
+
|
89 |
+
if (currentChunk.length > 0) {
|
90 |
+
result.push(currentChunk);
|
91 |
+
}
|
92 |
+
|
93 |
+
return result;
|
94 |
+
}
|
95 |
+
|
96 |
+
function convertToUnixTime(date) {
|
97 |
+
const unixTime = Math.floor(date.getTime() / 1000);
|
98 |
+
const randomDigit = Math.floor(Math.random() * 10);
|
99 |
+
return `${unixTime}.xxxxx${randomDigit}`;
|
100 |
+
}
|
101 |
+
|
102 |
+
function createBaseForm() {
|
103 |
+
const form = new FormData();
|
104 |
+
form.append('token', TOKEN);
|
105 |
+
form.append('channel', `${CLAUDE}`);
|
106 |
+
form.append('_x_mode', 'online');
|
107 |
+
form.append('_x_sonic', 'true');
|
108 |
+
return form;
|
109 |
+
}
|
110 |
+
|
111 |
+
// Add the utility functions here
|
112 |
+
// e.g. escapePrompt, readBody, preparePrompt, currentTime, headers, convertToUnixTime, createBaseForm
|
113 |
+
|
114 |
+
module.exports = {
|
115 |
+
buildPrompt,
|
116 |
+
readBody,
|
117 |
+
preparePrompt,
|
118 |
+
currentTime,
|
119 |
+
headers,
|
120 |
+
convertToUnixTime,
|
121 |
+
createBaseForm,
|
122 |
+
splitJsonArray,
|
123 |
+
wait
|
124 |
+
};
|
yarn.lock
ADDED
@@ -0,0 +1,530 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
2 |
+
# yarn lockfile v1
|
3 |
+
|
4 |
+
|
5 |
+
accepts@~1.3.8:
|
6 |
+
version "1.3.8"
|
7 |
+
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
|
8 |
+
integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
|
9 |
+
dependencies:
|
10 |
+
mime-types "~2.1.34"
|
11 |
+
negotiator "0.6.3"
|
12 |
+
|
13 |
+
array-flatten@1.1.1:
|
14 |
+
version "1.1.1"
|
15 |
+
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
|
16 |
+
integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
|
17 |
+
|
18 |
+
asynckit@^0.4.0:
|
19 |
+
version "0.4.0"
|
20 |
+
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
21 |
+
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
|
22 |
+
|
23 |
+
body-parser@1.20.1:
|
24 |
+
version "1.20.1"
|
25 |
+
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668"
|
26 |
+
integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==
|
27 |
+
dependencies:
|
28 |
+
bytes "3.1.2"
|
29 |
+
content-type "~1.0.4"
|
30 |
+
debug "2.6.9"
|
31 |
+
depd "2.0.0"
|
32 |
+
destroy "1.2.0"
|
33 |
+
http-errors "2.0.0"
|
34 |
+
iconv-lite "0.4.24"
|
35 |
+
on-finished "2.4.1"
|
36 |
+
qs "6.11.0"
|
37 |
+
raw-body "2.5.1"
|
38 |
+
type-is "~1.6.18"
|
39 |
+
unpipe "1.0.0"
|
40 |
+
|
41 |
+
body-parser@^1.20.2:
|
42 |
+
version "1.20.2"
|
43 |
+
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd"
|
44 |
+
integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==
|
45 |
+
dependencies:
|
46 |
+
bytes "3.1.2"
|
47 |
+
content-type "~1.0.5"
|
48 |
+
debug "2.6.9"
|
49 |
+
depd "2.0.0"
|
50 |
+
destroy "1.2.0"
|
51 |
+
http-errors "2.0.0"
|
52 |
+
iconv-lite "0.4.24"
|
53 |
+
on-finished "2.4.1"
|
54 |
+
qs "6.11.0"
|
55 |
+
raw-body "2.5.2"
|
56 |
+
type-is "~1.6.18"
|
57 |
+
unpipe "1.0.0"
|
58 |
+
|
59 |
+
bytes@3.1.2:
|
60 |
+
version "3.1.2"
|
61 |
+
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
|
62 |
+
integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
|
63 |
+
|
64 |
+
call-bind@^1.0.0:
|
65 |
+
version "1.0.2"
|
66 |
+
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
|
67 |
+
integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
|
68 |
+
dependencies:
|
69 |
+
function-bind "^1.1.1"
|
70 |
+
get-intrinsic "^1.0.2"
|
71 |
+
|
72 |
+
combined-stream@^1.0.8:
|
73 |
+
version "1.0.8"
|
74 |
+
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
|
75 |
+
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
|
76 |
+
dependencies:
|
77 |
+
delayed-stream "~1.0.0"
|
78 |
+
|
79 |
+
content-disposition@0.5.4:
|
80 |
+
version "0.5.4"
|
81 |
+
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
|
82 |
+
integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
|
83 |
+
dependencies:
|
84 |
+
safe-buffer "5.2.1"
|
85 |
+
|
86 |
+
content-type@~1.0.4, content-type@~1.0.5:
|
87 |
+
version "1.0.5"
|
88 |
+
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
|
89 |
+
integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
|
90 |
+
|
91 |
+
cookie-parser@^1.4.4:
|
92 |
+
version "1.4.6"
|
93 |
+
resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.6.tgz#3ac3a7d35a7a03bbc7e365073a26074824214594"
|
94 |
+
integrity sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==
|
95 |
+
dependencies:
|
96 |
+
cookie "0.4.1"
|
97 |
+
cookie-signature "1.0.6"
|
98 |
+
|
99 |
+
cookie-signature@1.0.6:
|
100 |
+
version "1.0.6"
|
101 |
+
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
|
102 |
+
integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
|
103 |
+
|
104 |
+
cookie@0.4.1:
|
105 |
+
version "0.4.1"
|
106 |
+
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1"
|
107 |
+
integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==
|
108 |
+
|
109 |
+
cookie@0.5.0:
|
110 |
+
version "0.5.0"
|
111 |
+
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
|
112 |
+
integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
|
113 |
+
|
114 |
+
cookie@^0.3.1:
|
115 |
+
version "0.3.1"
|
116 |
+
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
|
117 |
+
integrity sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==
|
118 |
+
|
119 |
+
debug@2.6.9:
|
120 |
+
version "2.6.9"
|
121 |
+
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
122 |
+
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
|
123 |
+
dependencies:
|
124 |
+
ms "2.0.0"
|
125 |
+
|
126 |
+
delayed-stream@~1.0.0:
|
127 |
+
version "1.0.0"
|
128 |
+
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
129 |
+
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
|
130 |
+
|
131 |
+
depd@2.0.0:
|
132 |
+
version "2.0.0"
|
133 |
+
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
|
134 |
+
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
|
135 |
+
|
136 |
+
destroy@1.2.0:
|
137 |
+
version "1.2.0"
|
138 |
+
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
|
139 |
+
integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
|
140 |
+
|
141 |
+
dotenv@^16.0.3:
|
142 |
+
version "16.0.3"
|
143 |
+
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07"
|
144 |
+
integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==
|
145 |
+
|
146 |
+
ee-first@1.1.1:
|
147 |
+
version "1.1.1"
|
148 |
+
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
149 |
+
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
|
150 |
+
|
151 |
+
encodeurl@~1.0.2:
|
152 |
+
version "1.0.2"
|
153 |
+
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
|
154 |
+
integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
|
155 |
+
|
156 |
+
escape-html@~1.0.3:
|
157 |
+
version "1.0.3"
|
158 |
+
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
|
159 |
+
integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
|
160 |
+
|
161 |
+
etag@~1.8.1:
|
162 |
+
version "1.8.1"
|
163 |
+
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
|
164 |
+
integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
|
165 |
+
|
166 |
+
express-bearer-token@^2.4.0:
|
167 |
+
version "2.4.0"
|
168 |
+
resolved "https://registry.yarnpkg.com/express-bearer-token/-/express-bearer-token-2.4.0.tgz#f4d9d5a1e318953445e7f0d2bde00bb96d21c95a"
|
169 |
+
integrity sha512-2+kRZT2xo+pmmvSY7Ma5FzxTJpO3kGaPCEXPbAm3GaoZ/z6FE4K6L7cvs1AUZwY2xkk15PcQw7t4dWjsl5rdJw==
|
170 |
+
dependencies:
|
171 |
+
cookie "^0.3.1"
|
172 |
+
cookie-parser "^1.4.4"
|
173 |
+
|
174 |
+
express@^4.18.2:
|
175 |
+
version "4.18.2"
|
176 |
+
resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59"
|
177 |
+
integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==
|
178 |
+
dependencies:
|
179 |
+
accepts "~1.3.8"
|
180 |
+
array-flatten "1.1.1"
|
181 |
+
body-parser "1.20.1"
|
182 |
+
content-disposition "0.5.4"
|
183 |
+
content-type "~1.0.4"
|
184 |
+
cookie "0.5.0"
|
185 |
+
cookie-signature "1.0.6"
|
186 |
+
debug "2.6.9"
|
187 |
+
depd "2.0.0"
|
188 |
+
encodeurl "~1.0.2"
|
189 |
+
escape-html "~1.0.3"
|
190 |
+
etag "~1.8.1"
|
191 |
+
finalhandler "1.2.0"
|
192 |
+
fresh "0.5.2"
|
193 |
+
http-errors "2.0.0"
|
194 |
+
merge-descriptors "1.0.1"
|
195 |
+
methods "~1.1.2"
|
196 |
+
on-finished "2.4.1"
|
197 |
+
parseurl "~1.3.3"
|
198 |
+
path-to-regexp "0.1.7"
|
199 |
+
proxy-addr "~2.0.7"
|
200 |
+
qs "6.11.0"
|
201 |
+
range-parser "~1.2.1"
|
202 |
+
safe-buffer "5.2.1"
|
203 |
+
send "0.18.0"
|
204 |
+
serve-static "1.15.0"
|
205 |
+
setprototypeof "1.2.0"
|
206 |
+
statuses "2.0.1"
|
207 |
+
type-is "~1.6.18"
|
208 |
+
utils-merge "1.0.1"
|
209 |
+
vary "~1.1.2"
|
210 |
+
|
211 |
+
finalhandler@1.2.0:
|
212 |
+
version "1.2.0"
|
213 |
+
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
|
214 |
+
integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
|
215 |
+
dependencies:
|
216 |
+
debug "2.6.9"
|
217 |
+
encodeurl "~1.0.2"
|
218 |
+
escape-html "~1.0.3"
|
219 |
+
on-finished "2.4.1"
|
220 |
+
parseurl "~1.3.3"
|
221 |
+
statuses "2.0.1"
|
222 |
+
unpipe "~1.0.0"
|
223 |
+
|
224 |
+
form-data@^4.0.0:
|
225 |
+
version "4.0.0"
|
226 |
+
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
|
227 |
+
integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
|
228 |
+
dependencies:
|
229 |
+
asynckit "^0.4.0"
|
230 |
+
combined-stream "^1.0.8"
|
231 |
+
mime-types "^2.1.12"
|
232 |
+
|
233 |
+
forwarded@0.2.0:
|
234 |
+
version "0.2.0"
|
235 |
+
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
|
236 |
+
integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
|
237 |
+
|
238 |
+
fresh@0.5.2:
|
239 |
+
version "0.5.2"
|
240 |
+
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
|
241 |
+
integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
|
242 |
+
|
243 |
+
function-bind@^1.1.1:
|
244 |
+
version "1.1.1"
|
245 |
+
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
246 |
+
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
247 |
+
|
248 |
+
get-intrinsic@^1.0.2:
|
249 |
+
version "1.2.0"
|
250 |
+
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f"
|
251 |
+
integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==
|
252 |
+
dependencies:
|
253 |
+
function-bind "^1.1.1"
|
254 |
+
has "^1.0.3"
|
255 |
+
has-symbols "^1.0.3"
|
256 |
+
|
257 |
+
has-symbols@^1.0.3:
|
258 |
+
version "1.0.3"
|
259 |
+
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
|
260 |
+
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
|
261 |
+
|
262 |
+
has@^1.0.3:
|
263 |
+
version "1.0.3"
|
264 |
+
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
|
265 |
+
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
|
266 |
+
dependencies:
|
267 |
+
function-bind "^1.1.1"
|
268 |
+
|
269 |
+
http-errors@2.0.0:
|
270 |
+
version "2.0.0"
|
271 |
+
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
|
272 |
+
integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
|
273 |
+
dependencies:
|
274 |
+
depd "2.0.0"
|
275 |
+
inherits "2.0.4"
|
276 |
+
setprototypeof "1.2.0"
|
277 |
+
statuses "2.0.1"
|
278 |
+
toidentifier "1.0.1"
|
279 |
+
|
280 |
+
iconv-lite@0.4.24:
|
281 |
+
version "0.4.24"
|
282 |
+
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
283 |
+
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
284 |
+
dependencies:
|
285 |
+
safer-buffer ">= 2.1.2 < 3"
|
286 |
+
|
287 |
+
inherits@2.0.4:
|
288 |
+
version "2.0.4"
|
289 |
+
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
290 |
+
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
291 |
+
|
292 |
+
ipaddr.js@1.9.1:
|
293 |
+
version "1.9.1"
|
294 |
+
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
|
295 |
+
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
|
296 |
+
|
297 |
+
media-typer@0.3.0:
|
298 |
+
version "0.3.0"
|
299 |
+
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
|
300 |
+
integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
|
301 |
+
|
302 |
+
merge-descriptors@1.0.1:
|
303 |
+
version "1.0.1"
|
304 |
+
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
|
305 |
+
integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
|
306 |
+
|
307 |
+
methods@~1.1.2:
|
308 |
+
version "1.1.2"
|
309 |
+
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
|
310 |
+
integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
|
311 |
+
|
312 |
+
mime-db@1.52.0:
|
313 |
+
version "1.52.0"
|
314 |
+
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
|
315 |
+
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
|
316 |
+
|
317 |
+
mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34:
|
318 |
+
version "2.1.35"
|
319 |
+
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
|
320 |
+
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
|
321 |
+
dependencies:
|
322 |
+
mime-db "1.52.0"
|
323 |
+
|
324 |
+
mime@1.6.0:
|
325 |
+
version "1.6.0"
|
326 |
+
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
|
327 |
+
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
|
328 |
+
|
329 |
+
ms@2.0.0:
|
330 |
+
version "2.0.0"
|
331 |
+
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
332 |
+
integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
|
333 |
+
|
334 |
+
ms@2.1.3:
|
335 |
+
version "2.1.3"
|
336 |
+
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
337 |
+
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
338 |
+
|
339 |
+
negotiator@0.6.3:
|
340 |
+
version "0.6.3"
|
341 |
+
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
|
342 |
+
integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
|
343 |
+
|
344 |
+
object-inspect@^1.9.0:
|
345 |
+
version "1.12.3"
|
346 |
+
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9"
|
347 |
+
integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==
|
348 |
+
|
349 |
+
on-finished@2.4.1:
|
350 |
+
version "2.4.1"
|
351 |
+
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
|
352 |
+
integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
|
353 |
+
dependencies:
|
354 |
+
ee-first "1.1.1"
|
355 |
+
|
356 |
+
parseurl@~1.3.3:
|
357 |
+
version "1.3.3"
|
358 |
+
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
|
359 |
+
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
|
360 |
+
|
361 |
+
path-to-regexp@0.1.7:
|
362 |
+
version "0.1.7"
|
363 |
+
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
|
364 |
+
integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
|
365 |
+
|
366 |
+
property-expr@^2.0.5:
|
367 |
+
version "2.0.5"
|
368 |
+
resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.5.tgz#278bdb15308ae16af3e3b9640024524f4dc02cb4"
|
369 |
+
integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==
|
370 |
+
|
371 |
+
proxy-addr@~2.0.7:
|
372 |
+
version "2.0.7"
|
373 |
+
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
|
374 |
+
integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
|
375 |
+
dependencies:
|
376 |
+
forwarded "0.2.0"
|
377 |
+
ipaddr.js "1.9.1"
|
378 |
+
|
379 |
+
qs@6.11.0:
|
380 |
+
version "6.11.0"
|
381 |
+
resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
|
382 |
+
integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
|
383 |
+
dependencies:
|
384 |
+
side-channel "^1.0.4"
|
385 |
+
|
386 |
+
range-parser@~1.2.1:
|
387 |
+
version "1.2.1"
|
388 |
+
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
|
389 |
+
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
|
390 |
+
|
391 |
+
raw-body@2.5.1:
|
392 |
+
version "2.5.1"
|
393 |
+
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
|
394 |
+
integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
|
395 |
+
dependencies:
|
396 |
+
bytes "3.1.2"
|
397 |
+
http-errors "2.0.0"
|
398 |
+
iconv-lite "0.4.24"
|
399 |
+
unpipe "1.0.0"
|
400 |
+
|
401 |
+
raw-body@2.5.2:
|
402 |
+
version "2.5.2"
|
403 |
+
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a"
|
404 |
+
integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==
|
405 |
+
dependencies:
|
406 |
+
bytes "3.1.2"
|
407 |
+
http-errors "2.0.0"
|
408 |
+
iconv-lite "0.4.24"
|
409 |
+
unpipe "1.0.0"
|
410 |
+
|
411 |
+
safe-buffer@5.2.1:
|
412 |
+
version "5.2.1"
|
413 |
+
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
|
414 |
+
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
|
415 |
+
|
416 |
+
"safer-buffer@>= 2.1.2 < 3":
|
417 |
+
version "2.1.2"
|
418 |
+
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
419 |
+
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
420 |
+
|
421 |
+
send@0.18.0:
|
422 |
+
version "0.18.0"
|
423 |
+
resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
|
424 |
+
integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
|
425 |
+
dependencies:
|
426 |
+
debug "2.6.9"
|
427 |
+
depd "2.0.0"
|
428 |
+
destroy "1.2.0"
|
429 |
+
encodeurl "~1.0.2"
|
430 |
+
escape-html "~1.0.3"
|
431 |
+
etag "~1.8.1"
|
432 |
+
fresh "0.5.2"
|
433 |
+
http-errors "2.0.0"
|
434 |
+
mime "1.6.0"
|
435 |
+
ms "2.1.3"
|
436 |
+
on-finished "2.4.1"
|
437 |
+
range-parser "~1.2.1"
|
438 |
+
statuses "2.0.1"
|
439 |
+
|
440 |
+
serve-static@1.15.0:
|
441 |
+
version "1.15.0"
|
442 |
+
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
|
443 |
+
integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
|
444 |
+
dependencies:
|
445 |
+
encodeurl "~1.0.2"
|
446 |
+
escape-html "~1.0.3"
|
447 |
+
parseurl "~1.3.3"
|
448 |
+
send "0.18.0"
|
449 |
+
|
450 |
+
setprototypeof@1.2.0:
|
451 |
+
version "1.2.0"
|
452 |
+
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
|
453 |
+
integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
|
454 |
+
|
455 |
+
side-channel@^1.0.4:
|
456 |
+
version "1.0.4"
|
457 |
+
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
|
458 |
+
integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
|
459 |
+
dependencies:
|
460 |
+
call-bind "^1.0.0"
|
461 |
+
get-intrinsic "^1.0.2"
|
462 |
+
object-inspect "^1.9.0"
|
463 |
+
|
464 |
+
statuses@2.0.1:
|
465 |
+
version "2.0.1"
|
466 |
+
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
|
467 |
+
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
|
468 |
+
|
469 |
+
tiny-case@^1.0.3:
|
470 |
+
version "1.0.3"
|
471 |
+
resolved "https://registry.yarnpkg.com/tiny-case/-/tiny-case-1.0.3.tgz#d980d66bc72b5d5a9ca86fb7c9ffdb9c898ddd03"
|
472 |
+
integrity sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==
|
473 |
+
|
474 |
+
toidentifier@1.0.1:
|
475 |
+
version "1.0.1"
|
476 |
+
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
|
477 |
+
integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
|
478 |
+
|
479 |
+
toposort@^2.0.2:
|
480 |
+
version "2.0.2"
|
481 |
+
resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330"
|
482 |
+
integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==
|
483 |
+
|
484 |
+
type-fest@^2.19.0:
|
485 |
+
version "2.19.0"
|
486 |
+
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b"
|
487 |
+
integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
|
488 |
+
|
489 |
+
type-is@~1.6.18:
|
490 |
+
version "1.6.18"
|
491 |
+
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
|
492 |
+
integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
|
493 |
+
dependencies:
|
494 |
+
media-typer "0.3.0"
|
495 |
+
mime-types "~2.1.24"
|
496 |
+
|
497 |
+
unpipe@1.0.0, unpipe@~1.0.0:
|
498 |
+
version "1.0.0"
|
499 |
+
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
|
500 |
+
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
|
501 |
+
|
502 |
+
utils-merge@1.0.1:
|
503 |
+
version "1.0.1"
|
504 |
+
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
|
505 |
+
integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
|
506 |
+
|
507 |
+
uuid@^9.0.0:
|
508 |
+
version "9.0.0"
|
509 |
+
resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5"
|
510 |
+
integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==
|
511 |
+
|
512 |
+
vary@~1.1.2:
|
513 |
+
version "1.1.2"
|
514 |
+
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
|
515 |
+
integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
|
516 |
+
|
517 |
+
ws@^8.13.0:
|
518 |
+
version "8.13.0"
|
519 |
+
resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0"
|
520 |
+
integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==
|
521 |
+
|
522 |
+
yup@^1.1.1:
|
523 |
+
version "1.1.1"
|
524 |
+
resolved "https://registry.yarnpkg.com/yup/-/yup-1.1.1.tgz#49dbcf5ae7693ed0a36ed08a9e9de0a09ac18e6b"
|
525 |
+
integrity sha512-KfCGHdAErqFZWA5tZf7upSUnGKuTOnsI3hUsLr7fgVtx+DK04NPV01A68/FslI4t3s/ZWpvXJmgXhd7q6ICnag==
|
526 |
+
dependencies:
|
527 |
+
property-expr "^2.0.5"
|
528 |
+
tiny-case "^1.0.3"
|
529 |
+
toposort "^2.0.2"
|
530 |
+
type-fest "^2.19.0"
|