feat(shared): extract client/server pure helpers into @jerapah-flow/shared

Share profile merge, workflow filename/path helpers, HTTP_METHODS (with OPTIONS), and isPlainObject so web and server stop drifting. Core script sandboxes keep local isPlainObject copies.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-22 06:01:42 +07:00
co-authored by Cursor
parent 96c4cc7b47
commit 368a2ca365
18 changed files with 263 additions and 225 deletions
+1
View File
@@ -17,6 +17,7 @@
"test:profiles": "node test/profiles-smoke.js" "test:profiles": "node test/profiles-smoke.js"
}, },
"dependencies": { "dependencies": {
"@jerapah-flow/shared": "workspace:*",
"@aws-sdk/client-s3": "^3.1111.0", "@aws-sdk/client-s3": "^3.1111.0",
"@aws-sdk/s3-request-presigner": "^3.1111.0", "@aws-sdk/s3-request-presigner": "^3.1111.0",
"@fastify/cookie": "^11.0.2", "@fastify/cookie": "^11.0.2",
+1 -31
View File
@@ -1,31 +1 @@
/** export { mergeProfileConfig, configHasOverlay } from "@jerapah-flow/shared";
* Shallow merge: step overlay keys replace profile defaults (including "").
* Nested objects/arrays are replaced, not deep-merged.
*
* @param {unknown} profileConfig
* @param {unknown} stepConfig
* @returns {Record<string, unknown>}
*/
export function mergeProfileConfig(profileConfig, stepConfig) {
const base =
profileConfig != null && typeof profileConfig === "object" && !Array.isArray(profileConfig)
? { ...profileConfig }
: {};
if (stepConfig == null || typeof stepConfig !== "object" || Array.isArray(stepConfig)) {
return base;
}
return { ...base, ...stepConfig };
}
/**
* @param {unknown} config
* @returns {boolean}
*/
export function configHasOverlay(config) {
return (
config != null &&
typeof config === "object" &&
!Array.isArray(config) &&
Object.keys(config).length > 0
);
}
+1 -12
View File
@@ -31,7 +31,7 @@ import {
sendSuccessPage, sendSuccessPage,
} from "./http-trigger-auth.js"; } from "./http-trigger-auth.js";
import { resolveConfigRefs } from "./config-refs.js"; import { resolveConfigRefs } from "./config-refs.js";
import { mergeProfileConfig } from "./profile-config.js"; import { HTTP_METHODS, hasWorkflowTrigger, mergeProfileConfig } from "@jerapah-flow/shared";
import { getProfilePlain } from "./profiles-store.js"; import { getProfilePlain } from "./profiles-store.js";
import { import {
buildFailureAlertData, buildFailureAlertData,
@@ -46,17 +46,6 @@ import { ensureInitialRevision } from "./workflow-history.js";
*/ */
const MAX_WORKFLOW_TRIGGER_DEPTH = 8; const MAX_WORKFLOW_TRIGGER_DEPTH = 8;
const HTTP_METHODS = ["GET", "HEAD", "POST", "PUT", "PATCH", "DELETE"];
/**
* @param {unknown} workflow
*/
function hasWorkflowTrigger(workflow) {
if (!workflow || typeof workflow !== "object") return false;
const triggers = /** @type {{ triggers?: Array<{ type?: string }> }} */ (workflow)
.triggers;
return (triggers ?? []).some((t) => t?.type === "workflow");
}
/** /**
* @param {import("fastify").FastifyInstance} server * @param {import("fastify").FastifyInstance} server
+3 -6
View File
@@ -2,12 +2,9 @@
* Step return contract: `{ output, context?, skipRemaining? }`. * Step return contract: `{ output, context?, skipRemaining? }`.
*/ */
/** import { isPlainObject } from "@jerapah-flow/shared";
* @param {unknown} value
*/ export { isPlainObject };
export function isPlainObject(value) {
return value != null && typeof value === "object" && !Array.isArray(value);
}
/** /**
* @param {unknown} value * @param {unknown} value
+5 -27
View File
@@ -1,36 +1,14 @@
import yaml from "yaml"; import yaml from "yaml";
import {
ensureWorkflowFilename,
suggestCopyFilename,
} from "@jerapah-flow/shared";
import { import {
newWorkflowFilename, newWorkflowFilename,
workflowFileStem, workflowFileStem,
} from "./workflow-normalize.js"; } from "./workflow-normalize.js";
export function ensureWorkflowFilename(file) { export { ensureWorkflowFilename, suggestCopyFilename };
const trimmed = String(file ?? "").trim();
if (!trimmed) return "";
return /\.ya?ml$/i.test(trimmed) ? trimmed : `${trimmed}.yaml`;
}
/**
* Legacy human-readable copy name (kept for UI hints).
* @param {string} file
* @param {string[]} existingFiles
*/
export function suggestCopyFilename(file, existingFiles = []) {
const name = ensureWorkflowFilename(file) || "workflow.yaml";
const match = name.match(/^(.*?)(\.ya?ml)$/i);
const base = match ? match[1] : name;
const ext = match ? match[2] : ".yaml";
const existing = new Set(existingFiles);
const copyMatch = base.match(/^(.*)-copy(?:-(\d+))?$/);
const root = copyMatch ? copyMatch[1] : base;
const candidate = (i) =>
i <= 1 ? `${root}-copy${ext}` : `${root}-copy-${i}${ext}`;
let n = copyMatch ? Number(copyMatch[2] || 1) + 1 : 1;
while (existing.has(candidate(n))) n += 1;
return candidate(n);
}
/** /**
* UUID-based duplicate filename (default for new duplicates). * UUID-based duplicate filename (default for new duplicates).
+1 -10
View File
@@ -1,4 +1,5 @@
import jsonata from "jsonata"; import jsonata from "jsonata";
export { namespacedPath } from "@jerapah-flow/shared";
export const SET_STEP_SCRIPT = "set"; export const SET_STEP_SCRIPT = "set";
@@ -68,16 +69,6 @@ export async function evaluateJsonata(source, ctx) {
return await result; return await result;
} }
/**
* Resolve an HTTP path under the owner namespace: /notify -> /u/alice/notify
* @param {string} owner
* @param {string} triggerPath
*/
export function namespacedPath(owner, triggerPath) {
const cleaned = String(triggerPath).replace(/^\/+/, "");
return `/u/${owner}/${cleaned}`;
}
/** /**
* @param {unknown} step * @param {unknown} step
* @returns {ParsedStep} * @returns {ParsedStep}
+9
View File
@@ -0,0 +1,9 @@
{
"name": "@jerapah-flow/shared",
"version": "0.1.0",
"private": true,
"type": "module",
"exports": {
".": "./src/index.js"
}
}
+4
View File
@@ -0,0 +1,4 @@
export { isPlainObject } from "./is-plain-object.js";
export { mergeProfileConfig, configHasOverlay } from "./profile-config.js";
export { ensureWorkflowFilename, suggestCopyFilename } from "./workflow-filename.js";
export { HTTP_METHODS, namespacedPath, hasWorkflowTrigger } from "./workflow-path.js";
+3
View File
@@ -0,0 +1,3 @@
export function isPlainObject(value) {
return value != null && typeof value === "object" && !Array.isArray(value);
}
+31
View File
@@ -0,0 +1,31 @@
/**
* Shallow merge: step overlay keys replace profile defaults (including "").
* Nested objects/arrays are replaced, not deep-merged.
*
* @param {unknown} profileConfig
* @param {unknown} stepConfig
* @returns {Record<string, unknown>}
*/
export function mergeProfileConfig(profileConfig, stepConfig) {
const base =
profileConfig != null && typeof profileConfig === "object" && !Array.isArray(profileConfig)
? { ...profileConfig }
: {};
if (stepConfig == null || typeof stepConfig !== "object" || Array.isArray(stepConfig)) {
return base;
}
return { ...base, ...stepConfig };
}
/**
* @param {unknown} config
* @returns {boolean}
*/
export function configHasOverlay(config) {
return (
config != null &&
typeof config === "object" &&
!Array.isArray(config) &&
Object.keys(config).length > 0
);
}
+27
View File
@@ -0,0 +1,27 @@
export function ensureWorkflowFilename(file) {
const trimmed = String(file ?? "").trim();
if (!trimmed) return "";
return /\.ya?ml$/i.test(trimmed) ? trimmed : `${trimmed}.yaml`;
}
/**
* Legacy human-readable copy name (kept for UI hints).
* @param {string} file
* @param {string[]} existingFiles
*/
export function suggestCopyFilename(file, existingFiles = []) {
const name = ensureWorkflowFilename(file) || "workflow.yaml";
const match = name.match(/^(.*?)(\.ya?ml)$/i);
const base = match ? match[1] : name;
const ext = match ? match[2] : ".yaml";
const existing = new Set(existingFiles);
const copyMatch = base.match(/^(.*)-copy(?:-(\d+))?$/);
const root = copyMatch ? copyMatch[1] : base;
const candidate = (i) =>
i <= 1 ? `${root}-copy${ext}` : `${root}-copy-${i}${ext}`;
let n = copyMatch ? Number(copyMatch[2] || 1) + 1 : 1;
while (existing.has(candidate(n))) n += 1;
return candidate(n);
}
+13
View File
@@ -0,0 +1,13 @@
export const HTTP_METHODS = ["GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"];
export function namespacedPath(owner, triggerPath) {
const cleaned = String(triggerPath ?? "").replace(/^\/+/, "").trim();
return `/u/${owner}/${cleaned}`;
}
export function hasWorkflowTrigger(workflow) {
if (!workflow || typeof workflow !== "object") return false;
const triggers = workflow.triggers;
if (!Array.isArray(triggers)) return false;
return triggers.some((t) => String(t?.type ?? "").toLowerCase() === "workflow");
}
+1
View File
@@ -9,6 +9,7 @@
"preview": "vite preview" "preview": "vite preview"
}, },
"dependencies": { "dependencies": {
"@jerapah-flow/shared": "workspace:*",
"@dnd-kit/core": "^6.3.1", "@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0", "@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2", "@dnd-kit/utilities": "^3.2.2",
+1 -16
View File
@@ -1,16 +1 @@
export function mergeProfileConfig(base, overlay) { export { mergeProfileConfig, configHasOverlay } from "@jerapah-flow/shared";
const a = base && typeof base === "object" && !Array.isArray(base) ? { ...base } : {};
if (overlay == null || typeof overlay !== "object" || Array.isArray(overlay)) {
return a;
}
return { ...a, ...overlay };
}
export function configHasOverlay(config) {
return (
config != null &&
typeof config === "object" &&
!Array.isArray(config) &&
Object.keys(config).length > 0
);
}
+2 -4
View File
@@ -1,3 +1,5 @@
import { isPlainObject } from "@jerapah-flow/shared";
export const NEW_SCRIPT_TEMPLATE = `async function main(ctx) { export const NEW_SCRIPT_TEMPLATE = `async function main(ctx) {
return { output: ctx.data ?? null, context: ctx.context ?? {} }; return { output: ctx.data ?? null, context: ctx.context ?? {} };
} }
@@ -72,10 +74,6 @@ export function prettyJson(value) {
} }
} }
function isPlainObject(value) {
return value != null && typeof value === "object" && !Array.isArray(value);
}
function defaultsFromFields(fields) { function defaultsFromFields(fields) {
if (!isPlainObject(fields)) return {}; if (!isPlainObject(fields)) return {};
/** @type {Record<string, unknown>} */ /** @type {Record<string, unknown>} */
+7 -14
View File
@@ -1,7 +1,13 @@
import { parse as parseYaml, stringify as stringifyYaml } from "yaml"; import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
import {
HTTP_METHODS,
namespacedPath,
hasWorkflowTrigger,
} from "@jerapah-flow/shared";
const KNOWN_TOP = new Set(["name", "description", "enabled", "scripts", "triggers"]); const KNOWN_TOP = new Set(["name", "description", "enabled", "scripts", "triggers"]);
const HTTP_METHODS = ["GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"];
export { HTTP_METHODS, namespacedPath, hasWorkflowTrigger };
export const NEW_WORKFLOW_YAML = `name: new workflow export const NEW_WORKFLOW_YAML = `name: new workflow
scripts: scripts:
@@ -19,13 +25,6 @@ export function nextUiId(prefix = "ui") {
return `${prefix}-${uidSeq}-${Math.random().toString(36).slice(2, 8)}`; return `${prefix}-${uidSeq}-${Math.random().toString(36).slice(2, 8)}`;
} }
export function namespacedPath(owner, triggerPath) {
const cleaned = String(triggerPath ?? "")
.replace(/^\/+/, "")
.trim();
return `/u/${owner}/${cleaned}`;
}
/** /**
* @param {string} text * @param {string} text
* @returns {{ doc: WorkflowDoc | null, parseError: string | null }} * @returns {{ doc: WorkflowDoc | null, parseError: string | null }}
@@ -162,10 +161,6 @@ export function newWorkflowTrigger() {
}; };
} }
export function hasWorkflowTrigger(workflow) {
return (workflow?.triggers ?? []).some((t) => String(t?.type ?? "").toLowerCase() === "workflow");
}
export function triggerDestinations(workflows, { owner, excludeFile } = {}) { export function triggerDestinations(workflows, { owner, excludeFile } = {}) {
return (workflows ?? []).filter((w) => { return (workflows ?? []).filter((w) => {
if (owner && w.owner !== owner) return false; if (owner && w.owner !== owner) return false;
@@ -174,8 +169,6 @@ export function triggerDestinations(workflows, { owner, excludeFile } = {}) {
}); });
} }
export { HTTP_METHODS };
function readOnFailureWorkflow(raw) { function readOnFailureWorkflow(raw) {
return typeof raw?.onFailureWorkflow === "string" ? raw.onFailureWorkflow : ""; return typeof raw?.onFailureWorkflow === "string" ? raw.onFailureWorkflow : "";
} }
@@ -1,13 +1,11 @@
import { isPlainObject } from "@jerapah-flow/shared";
const PREFIX = "jerapah-flow.workflowTestData:"; const PREFIX = "jerapah-flow.workflowTestData:";
export function workflowTestStorageKey(owner, file) { export function workflowTestStorageKey(owner, file) {
return `${PREFIX}${owner}/${file}`; return `${PREFIX}${owner}/${file}`;
} }
function isPlainObject(value) {
return value != null && typeof value === "object" && !Array.isArray(value);
}
/** Overlay saved test JSON on the schema/YAML seed. Stored object keys win. */ /** Overlay saved test JSON on the schema/YAML seed. Stored object keys win. */
export function overlayWorkflowTestData(seed, stored) { export function overlayWorkflowTestData(seed, stored) {
const base = isPlainObject(seed) ? seed : {}; const base = isPlainObject(seed) ? seed : {};
+151 -101
View File
@@ -28,9 +28,12 @@ importers:
'@fastify/static': '@fastify/static':
specifier: ^8.2.0 specifier: ^8.2.0
version: 8.3.0 version: 8.3.0
'@jerapah-flow/shared':
specifier: workspace:*
version: link:../shared
axios: axios:
specifier: ^1.19.0 specifier: ^1.19.0
version: 1.19.0 version: 1.19.0(debug@4.3.4(supports-color@7.2.0))(supports-color@7.2.0)
basic-ftp: basic-ftp:
specifier: ^6.2.0 specifier: ^6.2.0
version: 6.2.0 version: 6.2.0
@@ -42,19 +45,19 @@ importers:
version: 13.0.3 version: 13.0.3
bullmq: bullmq:
specifier: ^6.1.2 specifier: ^6.1.2
version: 6.1.2(ioredis@6.0.0) version: 6.1.2(ioredis@6.0.0(supports-color@7.2.0))
fastify: fastify:
specifier: ^5.12.0 specifier: ^5.12.0
version: 5.12.0 version: 5.12.0
ioredis: ioredis:
specifier: ^6.0.0 specifier: ^6.0.0
version: 6.0.0 version: 6.0.0(supports-color@7.2.0)
jsonata: jsonata:
specifier: ^2.2.2 specifier: ^2.2.2
version: 2.2.2 version: 2.2.2
knex: knex:
specifier: ^3.3.0 specifier: ^3.3.0
version: 3.3.0(better-sqlite3@13.0.3) version: 3.3.0(better-sqlite3@13.0.3)(supports-color@7.2.0)
mustache: mustache:
specifier: ^4.2.0 specifier: ^4.2.0
version: 4.2.0 version: 4.2.0
@@ -75,7 +78,7 @@ importers:
version: 4.0.0 version: 4.0.0
pm2: pm2:
specifier: ^6.0.13 specifier: ^6.0.13
version: 6.0.14 version: 6.0.14(supports-color@7.2.0)
rss-parser: rss-parser:
specifier: ^3.13.0 specifier: ^3.13.0
version: 3.13.0 version: 3.13.0
@@ -89,6 +92,8 @@ importers:
specifier: ^2.9.0 specifier: ^2.9.0
version: 2.9.0 version: 2.9.0
packages/shared: {}
packages/web: packages/web:
dependencies: dependencies:
'@dnd-kit/core': '@dnd-kit/core':
@@ -100,6 +105,9 @@ importers:
'@dnd-kit/utilities': '@dnd-kit/utilities':
specifier: ^3.2.2 specifier: ^3.2.2
version: 3.2.2(react@19.2.8) version: 3.2.2(react@19.2.8)
'@jerapah-flow/shared':
specifier: workspace:*
version: link:../shared
'@monaco-editor/react': '@monaco-editor/react':
specifier: ^4.7.0 specifier: ^4.7.0
version: 4.7.0(monaco-editor@0.56.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) version: 4.7.0(monaco-editor@0.56.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
@@ -111,7 +119,7 @@ importers:
version: 2.0.0-alpha.43(@babel/runtime@8.0.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) version: 2.0.0-alpha.43(@babel/runtime@8.0.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
axios: axios:
specifier: ^1.11.0 specifier: ^1.11.0
version: 1.19.0 version: 1.19.0(debug@4.4.3(supports-color@7.2.0))(supports-color@7.2.0)
cronstrue: cronstrue:
specifier: ^3.24.0 specifier: ^3.24.0
version: 3.24.0 version: 3.24.0
@@ -139,7 +147,7 @@ importers:
version: 4.3.3(vite@7.3.6(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.0)) version: 4.3.3(vite@7.3.6(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.0))
'@vitejs/plugin-react': '@vitejs/plugin-react':
specifier: ^5.0.0 specifier: ^5.0.0
version: 5.2.0(vite@7.3.6(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.0)) version: 5.2.0(supports-color@7.2.0)(vite@7.3.6(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.0))
daisyui: daisyui:
specifier: ^5.0.50 specifier: ^5.0.50
version: 5.7.16 version: 5.7.16
@@ -621,6 +629,7 @@ packages:
engines: {node: ^22.20 || ^24.12 || >=25} engines: {node: ^22.20 || ^24.12 || >=25}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [glibc]
'@nodable/entities@3.0.0': '@nodable/entities@3.0.0':
resolution: {integrity: sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw==} resolution: {integrity: sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw==}
@@ -684,66 +693,79 @@ packages:
resolution: {integrity: sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA==} resolution: {integrity: sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA==}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.62.4': '@rollup/rollup-linux-arm-musleabihf@4.62.4':
resolution: {integrity: sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ==} resolution: {integrity: sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ==}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.62.4': '@rollup/rollup-linux-arm64-gnu@4.62.4':
resolution: {integrity: sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ==} resolution: {integrity: sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.62.4': '@rollup/rollup-linux-arm64-musl@4.62.4':
resolution: {integrity: sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g==} resolution: {integrity: sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [musl]
'@rollup/rollup-linux-loong64-gnu@4.62.4': '@rollup/rollup-linux-loong64-gnu@4.62.4':
resolution: {integrity: sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA==} resolution: {integrity: sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA==}
cpu: [loong64] cpu: [loong64]
os: [linux] os: [linux]
libc: [glibc]
'@rollup/rollup-linux-loong64-musl@4.62.4': '@rollup/rollup-linux-loong64-musl@4.62.4':
resolution: {integrity: sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ==} resolution: {integrity: sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ==}
cpu: [loong64] cpu: [loong64]
os: [linux] os: [linux]
libc: [musl]
'@rollup/rollup-linux-ppc64-gnu@4.62.4': '@rollup/rollup-linux-ppc64-gnu@4.62.4':
resolution: {integrity: sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w==} resolution: {integrity: sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w==}
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
libc: [glibc]
'@rollup/rollup-linux-ppc64-musl@4.62.4': '@rollup/rollup-linux-ppc64-musl@4.62.4':
resolution: {integrity: sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w==} resolution: {integrity: sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w==}
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
libc: [musl]
'@rollup/rollup-linux-riscv64-gnu@4.62.4': '@rollup/rollup-linux-riscv64-gnu@4.62.4':
resolution: {integrity: sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ==} resolution: {integrity: sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ==}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
libc: [glibc]
'@rollup/rollup-linux-riscv64-musl@4.62.4': '@rollup/rollup-linux-riscv64-musl@4.62.4':
resolution: {integrity: sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA==} resolution: {integrity: sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA==}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
libc: [musl]
'@rollup/rollup-linux-s390x-gnu@4.62.4': '@rollup/rollup-linux-s390x-gnu@4.62.4':
resolution: {integrity: sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA==} resolution: {integrity: sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA==}
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.62.4': '@rollup/rollup-linux-x64-gnu@4.62.4':
resolution: {integrity: sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw==} resolution: {integrity: sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.62.4': '@rollup/rollup-linux-x64-musl@4.62.4':
resolution: {integrity: sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA==} resolution: {integrity: sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [musl]
'@rollup/rollup-openbsd-x64@4.62.4': '@rollup/rollup-openbsd-x64@4.62.4':
resolution: {integrity: sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ==} resolution: {integrity: sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ==}
@@ -837,24 +859,28 @@ packages:
engines: {node: '>= 20'} engines: {node: '>= 20'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [glibc]
'@tailwindcss/oxide-linux-arm64-musl@4.3.3': '@tailwindcss/oxide-linux-arm64-musl@4.3.3':
resolution: {integrity: sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==} resolution: {integrity: sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==}
engines: {node: '>= 20'} engines: {node: '>= 20'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [musl]
'@tailwindcss/oxide-linux-x64-gnu@4.3.3': '@tailwindcss/oxide-linux-x64-gnu@4.3.3':
resolution: {integrity: sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==} resolution: {integrity: sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==}
engines: {node: '>= 20'} engines: {node: '>= 20'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [glibc]
'@tailwindcss/oxide-linux-x64-musl@4.3.3': '@tailwindcss/oxide-linux-x64-musl@4.3.3':
resolution: {integrity: sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==} resolution: {integrity: sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==}
engines: {node: '>= 20'} engines: {node: '>= 20'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [musl]
'@tailwindcss/oxide-wasm32-wasi@4.3.3': '@tailwindcss/oxide-wasm32-wasi@4.3.3':
resolution: {integrity: sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==} resolution: {integrity: sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==}
@@ -2062,24 +2088,28 @@ packages:
engines: {node: '>= 12.0.0'} engines: {node: '>= 12.0.0'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [glibc]
lightningcss-linux-arm64-musl@1.32.0: lightningcss-linux-arm64-musl@1.32.0:
resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==}
engines: {node: '>= 12.0.0'} engines: {node: '>= 12.0.0'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [musl]
lightningcss-linux-x64-gnu@1.32.0: lightningcss-linux-x64-gnu@1.32.0:
resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==}
engines: {node: '>= 12.0.0'} engines: {node: '>= 12.0.0'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [glibc]
lightningcss-linux-x64-musl@1.32.0: lightningcss-linux-x64-musl@1.32.0:
resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==}
engines: {node: '>= 12.0.0'} engines: {node: '>= 12.0.0'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [musl]
lightningcss-win32-arm64-msvc@1.32.0: lightningcss-win32-arm64-msvc@1.32.0:
resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==}
@@ -3044,20 +3074,20 @@ snapshots:
'@babel/compat-data@7.29.7': {} '@babel/compat-data@7.29.7': {}
'@babel/core@7.29.7': '@babel/core@7.29.7(supports-color@7.2.0)':
dependencies: dependencies:
'@babel/code-frame': 7.29.7 '@babel/code-frame': 7.29.7
'@babel/generator': 7.29.8 '@babel/generator': 7.29.8
'@babel/helper-compilation-targets': 7.29.7 '@babel/helper-compilation-targets': 7.29.7
'@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@7.2.0))(supports-color@7.2.0)
'@babel/helpers': 7.29.7 '@babel/helpers': 7.29.7
'@babel/parser': 7.29.8 '@babel/parser': 7.29.8
'@babel/template': 7.29.7 '@babel/template': 7.29.7
'@babel/traverse': 7.29.8 '@babel/traverse': 7.29.8(supports-color@7.2.0)
'@babel/types': 7.29.8 '@babel/types': 7.29.8
'@jridgewell/remapping': 2.3.5 '@jridgewell/remapping': 2.3.5
convert-source-map: 2.0.0 convert-source-map: 2.0.0
debug: 4.4.3 debug: 4.4.3(supports-color@7.2.0)
gensync: 1.0.0-beta.2 gensync: 1.0.0-beta.2
json5: 2.2.3 json5: 2.2.3
semver: 6.3.1 semver: 6.3.1
@@ -3082,19 +3112,19 @@ snapshots:
'@babel/helper-globals@7.29.7': {} '@babel/helper-globals@7.29.7': {}
'@babel/helper-module-imports@7.29.7': '@babel/helper-module-imports@7.29.7(supports-color@7.2.0)':
dependencies: dependencies:
'@babel/traverse': 7.29.8 '@babel/traverse': 7.29.8(supports-color@7.2.0)
'@babel/types': 7.29.8 '@babel/types': 7.29.8
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7(supports-color@7.2.0))(supports-color@7.2.0)':
dependencies: dependencies:
'@babel/core': 7.29.7 '@babel/core': 7.29.7(supports-color@7.2.0)
'@babel/helper-module-imports': 7.29.7 '@babel/helper-module-imports': 7.29.7(supports-color@7.2.0)
'@babel/helper-validator-identifier': 7.29.7 '@babel/helper-validator-identifier': 7.29.7
'@babel/traverse': 7.29.8 '@babel/traverse': 7.29.8(supports-color@7.2.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -3115,14 +3145,14 @@ snapshots:
dependencies: dependencies:
'@babel/types': 7.29.8 '@babel/types': 7.29.8
'@babel/plugin-transform-react-jsx-self@7.29.7(@babel/core@7.29.7)': '@babel/plugin-transform-react-jsx-self@7.29.7(@babel/core@7.29.7(supports-color@7.2.0))':
dependencies: dependencies:
'@babel/core': 7.29.7 '@babel/core': 7.29.7(supports-color@7.2.0)
'@babel/helper-plugin-utils': 7.29.7 '@babel/helper-plugin-utils': 7.29.7
'@babel/plugin-transform-react-jsx-source@7.29.7(@babel/core@7.29.7)': '@babel/plugin-transform-react-jsx-source@7.29.7(@babel/core@7.29.7(supports-color@7.2.0))':
dependencies: dependencies:
'@babel/core': 7.29.7 '@babel/core': 7.29.7(supports-color@7.2.0)
'@babel/helper-plugin-utils': 7.29.7 '@babel/helper-plugin-utils': 7.29.7
'@babel/runtime@8.0.0': {} '@babel/runtime@8.0.0': {}
@@ -3133,7 +3163,7 @@ snapshots:
'@babel/parser': 7.29.8 '@babel/parser': 7.29.8
'@babel/types': 7.29.8 '@babel/types': 7.29.8
'@babel/traverse@7.29.8': '@babel/traverse@7.29.8(supports-color@7.2.0)':
dependencies: dependencies:
'@babel/code-frame': 7.29.7 '@babel/code-frame': 7.29.7
'@babel/generator': 7.29.8 '@babel/generator': 7.29.8
@@ -3141,7 +3171,7 @@ snapshots:
'@babel/parser': 7.29.8 '@babel/parser': 7.29.8
'@babel/template': 7.29.7 '@babel/template': 7.29.7
'@babel/types': 7.29.8 '@babel/types': 7.29.8
debug: 4.4.3 debug: 4.4.3(supports-color@7.2.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -3394,18 +3424,18 @@ snapshots:
'@pinojs/redact@0.4.0': {} '@pinojs/redact@0.4.0': {}
'@pm2/agent@2.1.1': '@pm2/agent@2.1.1(supports-color@7.2.0)':
dependencies: dependencies:
async: 3.2.6 async: 3.2.6
chalk: 3.0.0 chalk: 3.0.0
dayjs: 1.8.36 dayjs: 1.8.36
debug: 4.3.4 debug: 4.3.4(supports-color@7.2.0)
eventemitter2: 5.0.1 eventemitter2: 5.0.1
fast-json-patch: 3.1.1 fast-json-patch: 3.1.1
fclone: 1.0.11 fclone: 1.0.11
pm2-axon: 4.0.1 pm2-axon: 4.0.1(supports-color@7.2.0)
pm2-axon-rpc: 0.7.1 pm2-axon-rpc: 0.7.1(supports-color@7.2.0)
proxy-agent: 6.4.0 proxy-agent: 6.4.0(supports-color@7.2.0)
semver: 7.5.4 semver: 7.5.4
ws: 7.5.13 ws: 7.5.13
transitivePeerDependencies: transitivePeerDependencies:
@@ -3415,12 +3445,12 @@ snapshots:
'@pm2/blessed@0.1.81': {} '@pm2/blessed@0.1.81': {}
'@pm2/io@6.1.0': '@pm2/io@6.1.0(supports-color@7.2.0)':
dependencies: dependencies:
async: 2.6.4 async: 2.6.4
debug: 4.3.4 debug: 4.3.4(supports-color@7.2.0)
eventemitter2: 6.4.9 eventemitter2: 6.4.9
require-in-the-middle: 5.2.0 require-in-the-middle: 5.2.0(supports-color@7.2.0)
semver: 7.5.4 semver: 7.5.4
shimmer: 1.2.1 shimmer: 1.2.1
signal-exit: 3.0.7 signal-exit: 3.0.7
@@ -3428,21 +3458,21 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@pm2/js-api@0.8.1': '@pm2/js-api@0.8.1(supports-color@7.2.0)':
dependencies: dependencies:
async: 2.6.4 async: 2.6.4
debug: 4.3.4 debug: 4.3.4(supports-color@7.2.0)
eventemitter2: 6.4.9 eventemitter2: 6.4.9
extrareqp2: 1.0.0(debug@4.3.4) extrareqp2: 1.0.0(debug@4.3.4(supports-color@7.2.0))
ws: 8.21.3 ws: 8.21.3
transitivePeerDependencies: transitivePeerDependencies:
- bufferutil - bufferutil
- supports-color - supports-color
- utf-8-validate - utf-8-validate
'@pm2/pm2-version-check@1.0.4': '@pm2/pm2-version-check@1.0.4(supports-color@7.2.0)':
dependencies: dependencies:
debug: 4.4.3 debug: 4.4.3(supports-color@7.2.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -3789,11 +3819,11 @@ snapshots:
d3-selection: 3.0.0 d3-selection: 3.0.0
d3-transition: 3.0.1(d3-selection@3.0.0) d3-transition: 3.0.1(d3-selection@3.0.0)
'@vitejs/plugin-react@5.2.0(vite@7.3.6(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.0))': '@vitejs/plugin-react@5.2.0(supports-color@7.2.0)(vite@7.3.6(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.0))':
dependencies: dependencies:
'@babel/core': 7.29.7 '@babel/core': 7.29.7(supports-color@7.2.0)
'@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7(supports-color@7.2.0))
'@babel/plugin-transform-react-jsx-source': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-react-jsx-source': 7.29.7(@babel/core@7.29.7(supports-color@7.2.0))
'@rolldown/pluginutils': 1.0.0-rc.3 '@rolldown/pluginutils': 1.0.0-rc.3
'@types/babel__core': 7.20.5 '@types/babel__core': 7.20.5
react-refresh: 0.18.0 react-refresh: 0.18.0
@@ -3803,9 +3833,9 @@ snapshots:
abstract-logging@2.0.1: {} abstract-logging@2.0.1: {}
agent-base@6.0.2: agent-base@6.0.2(supports-color@7.2.0):
dependencies: dependencies:
debug: 4.4.3 debug: 4.4.3(supports-color@7.2.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -3875,11 +3905,21 @@ snapshots:
'@fastify/error': 4.2.0 '@fastify/error': 4.2.0
fastq: 1.20.1 fastq: 1.20.1
axios@1.19.0: axios@1.19.0(debug@4.3.4(supports-color@7.2.0))(supports-color@7.2.0):
dependencies: dependencies:
follow-redirects: 1.16.0(debug@4.3.4) follow-redirects: 1.16.0(debug@4.3.4(supports-color@7.2.0))
form-data: 4.0.6 form-data: 4.0.6
https-proxy-agent: 5.0.1 https-proxy-agent: 5.0.1(supports-color@7.2.0)
proxy-from-env: 2.1.0
transitivePeerDependencies:
- debug
- supports-color
axios@1.19.0(debug@4.4.3(supports-color@7.2.0))(supports-color@7.2.0):
dependencies:
follow-redirects: 1.16.0(debug@4.4.3(supports-color@7.2.0))
form-data: 4.0.6
https-proxy-agent: 5.0.1(supports-color@7.2.0)
proxy-from-env: 2.1.0 proxy-from-env: 2.1.0
transitivePeerDependencies: transitivePeerDependencies:
- debug - debug
@@ -3942,7 +3982,7 @@ snapshots:
buildcheck@0.0.7: buildcheck@0.0.7:
optional: true optional: true
bullmq@6.1.2(ioredis@6.0.0): bullmq@6.1.2(ioredis@6.0.0(supports-color@7.2.0)):
dependencies: dependencies:
cron-parser: 5.10.0 cron-parser: 5.10.0
msgpackr: 2.0.5 msgpackr: 2.0.5
@@ -3950,7 +3990,7 @@ snapshots:
semver: 7.8.5 semver: 7.8.5
tslib: 2.8.1 tslib: 2.8.1
optionalDependencies: optionalDependencies:
ioredis: 6.0.0 ioredis: 6.0.0(supports-color@7.2.0)
byte-length@1.0.2: {} byte-length@1.0.2: {}
@@ -4265,17 +4305,23 @@ snapshots:
dayjs@1.8.36: {} dayjs@1.8.36: {}
debug@3.2.7: debug@3.2.7(supports-color@7.2.0):
dependencies: dependencies:
ms: 2.1.3 ms: 2.1.3
optionalDependencies:
supports-color: 7.2.0
debug@4.3.4: debug@4.3.4(supports-color@7.2.0):
dependencies: dependencies:
ms: 2.1.2 ms: 2.1.2
optionalDependencies:
supports-color: 7.2.0
debug@4.4.3: debug@4.4.3(supports-color@7.2.0):
dependencies: dependencies:
ms: 2.1.3 ms: 2.1.3
optionalDependencies:
supports-color: 7.2.0
degenerator@5.0.1: degenerator@5.0.1:
dependencies: dependencies:
@@ -4424,9 +4470,9 @@ snapshots:
eventemitter2@6.4.9: {} eventemitter2@6.4.9: {}
extrareqp2@1.0.0(debug@4.3.4): extrareqp2@1.0.0(debug@4.3.4(supports-color@7.2.0)):
dependencies: dependencies:
follow-redirects: 1.16.0(debug@4.3.4) follow-redirects: 1.16.0(debug@4.3.4(supports-color@7.2.0))
transitivePeerDependencies: transitivePeerDependencies:
- debug - debug
@@ -4535,9 +4581,13 @@ snapshots:
fast-querystring: 1.1.2 fast-querystring: 1.1.2
safe-regex2: 5.1.1 safe-regex2: 5.1.1
follow-redirects@1.16.0(debug@4.3.4): follow-redirects@1.16.0(debug@4.3.4(supports-color@7.2.0)):
optionalDependencies: optionalDependencies:
debug: 4.3.4 debug: 4.3.4(supports-color@7.2.0)
follow-redirects@1.16.0(debug@4.4.3(supports-color@7.2.0)):
optionalDependencies:
debug: 4.4.3(supports-color@7.2.0)
foreground-child@3.3.1: foreground-child@3.3.1:
dependencies: dependencies:
@@ -4583,11 +4633,11 @@ snapshots:
dunder-proto: 1.0.1 dunder-proto: 1.0.1
es-object-atoms: 1.1.2 es-object-atoms: 1.1.2
get-uri@6.0.5: get-uri@6.0.5(supports-color@7.2.0):
dependencies: dependencies:
basic-ftp: 5.3.1 basic-ftp: 5.3.1
data-uri-to-buffer: 6.0.2 data-uri-to-buffer: 6.0.2
debug: 4.4.3 debug: 4.4.3(supports-color@7.2.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -4640,24 +4690,24 @@ snapshots:
statuses: 2.0.2 statuses: 2.0.2
toidentifier: 1.0.1 toidentifier: 1.0.1
http-proxy-agent@7.0.2: http-proxy-agent@7.0.2(supports-color@7.2.0):
dependencies: dependencies:
agent-base: 7.1.4 agent-base: 7.1.4
debug: 4.4.3 debug: 4.4.3(supports-color@7.2.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
https-proxy-agent@5.0.1: https-proxy-agent@5.0.1(supports-color@7.2.0):
dependencies: dependencies:
agent-base: 6.0.2 agent-base: 6.0.2(supports-color@7.2.0)
debug: 4.4.3 debug: 4.4.3(supports-color@7.2.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
https-proxy-agent@7.0.6: https-proxy-agent@7.0.6(supports-color@7.2.0):
dependencies: dependencies:
agent-base: 7.1.4 agent-base: 7.1.4
debug: 4.4.3 debug: 4.4.3(supports-color@7.2.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -4681,11 +4731,11 @@ snapshots:
interpret@2.2.0: {} interpret@2.2.0: {}
ioredis@6.0.0: ioredis@6.0.0(supports-color@7.2.0):
dependencies: dependencies:
'@ioredis/commands': 2.0.0 '@ioredis/commands': 2.0.0
cluster-key-slot: 1.1.1 cluster-key-slot: 1.1.1
debug: 4.4.3 debug: 4.4.3(supports-color@7.2.0)
denque: 2.1.0 denque: 2.1.0
redis-errors: 1.2.0 redis-errors: 1.2.0
standard-as-callback: 2.1.0 standard-as-callback: 2.1.0
@@ -4758,11 +4808,11 @@ snapshots:
khroma@2.1.0: {} khroma@2.1.0: {}
knex@3.3.0(better-sqlite3@13.0.3): knex@3.3.0(better-sqlite3@13.0.3)(supports-color@7.2.0):
dependencies: dependencies:
colorette: 2.0.19 colorette: 2.0.19
commander: 10.0.1 commander: 10.0.1
debug: 4.3.4 debug: 4.3.4(supports-color@7.2.0)
escalade: 3.2.0 escalade: 3.2.0
esm: 3.2.25 esm: 3.2.25
get-package-type: 0.1.0 get-package-type: 0.1.0
@@ -4960,9 +5010,9 @@ snapshots:
nanoid@3.3.18: {} nanoid@3.3.18: {}
needle@2.4.0: needle@2.4.0(supports-color@7.2.0):
dependencies: dependencies:
debug: 3.2.7 debug: 3.2.7(supports-color@7.2.0)
iconv-lite: 0.4.24 iconv-lite: 0.4.24
sax: 1.6.1 sax: 1.6.1
transitivePeerDependencies: transitivePeerDependencies:
@@ -5010,16 +5060,16 @@ snapshots:
on-exit-leak-free@2.1.2: {} on-exit-leak-free@2.1.2: {}
pac-proxy-agent@7.2.0: pac-proxy-agent@7.2.0(supports-color@7.2.0):
dependencies: dependencies:
'@tootallnate/quickjs-emscripten': 0.23.0 '@tootallnate/quickjs-emscripten': 0.23.0
agent-base: 7.1.4 agent-base: 7.1.4
debug: 4.4.3 debug: 4.4.3(supports-color@7.2.0)
get-uri: 6.0.5 get-uri: 6.0.5(supports-color@7.2.0)
http-proxy-agent: 7.0.2 http-proxy-agent: 7.0.2(supports-color@7.2.0)
https-proxy-agent: 7.0.6 https-proxy-agent: 7.0.6(supports-color@7.2.0)
pac-resolver: 7.0.1 pac-resolver: 7.0.1
socks-proxy-agent: 8.0.5 socks-proxy-agent: 8.0.5(supports-color@7.2.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -5091,17 +5141,17 @@ snapshots:
sonic-boom: 4.2.1 sonic-boom: 4.2.1
thread-stream: 4.2.0 thread-stream: 4.2.0
pm2-axon-rpc@0.7.1: pm2-axon-rpc@0.7.1(supports-color@7.2.0):
dependencies: dependencies:
debug: 4.4.3 debug: 4.4.3(supports-color@7.2.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
pm2-axon@4.0.1: pm2-axon@4.0.1(supports-color@7.2.0):
dependencies: dependencies:
amp: 0.3.1 amp: 0.3.1
amp-message: 0.1.2 amp-message: 0.1.2
debug: 4.4.3 debug: 4.4.3(supports-color@7.2.0)
escape-string-regexp: 4.0.0 escape-string-regexp: 4.0.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -5115,10 +5165,10 @@ snapshots:
dependencies: dependencies:
charm: 0.1.2 charm: 0.1.2
pm2-sysmonit@1.2.8: pm2-sysmonit@1.2.8(supports-color@7.2.0):
dependencies: dependencies:
async: 3.2.6 async: 3.2.6
debug: 4.4.3 debug: 4.4.3(supports-color@7.2.0)
pidusage: 2.0.21 pidusage: 2.0.21
systeminformation: 5.33.1 systeminformation: 5.33.1
tx2: 1.0.5 tx2: 1.0.5
@@ -5126,13 +5176,13 @@ snapshots:
- supports-color - supports-color
optional: true optional: true
pm2@6.0.14: pm2@6.0.14(supports-color@7.2.0):
dependencies: dependencies:
'@pm2/agent': 2.1.1 '@pm2/agent': 2.1.1(supports-color@7.2.0)
'@pm2/blessed': 0.1.81 '@pm2/blessed': 0.1.81
'@pm2/io': 6.1.0 '@pm2/io': 6.1.0(supports-color@7.2.0)
'@pm2/js-api': 0.8.1 '@pm2/js-api': 0.8.1(supports-color@7.2.0)
'@pm2/pm2-version-check': 1.0.4 '@pm2/pm2-version-check': 1.0.4(supports-color@7.2.0)
ansis: 4.0.0-node10 ansis: 4.0.0-node10
async: 3.2.6 async: 3.2.6
chokidar: 3.6.0 chokidar: 3.6.0
@@ -5140,16 +5190,16 @@ snapshots:
commander: 2.15.1 commander: 2.15.1
croner: 4.1.97 croner: 4.1.97
dayjs: 1.11.15 dayjs: 1.11.15
debug: 4.4.3 debug: 4.4.3(supports-color@7.2.0)
enquirer: 2.3.6 enquirer: 2.3.6
eventemitter2: 5.0.1 eventemitter2: 5.0.1
fclone: 1.0.11 fclone: 1.0.11
js-yaml: 4.1.1 js-yaml: 4.1.1
mkdirp: 1.0.4 mkdirp: 1.0.4
needle: 2.4.0 needle: 2.4.0(supports-color@7.2.0)
pidusage: 3.0.2 pidusage: 3.0.2
pm2-axon: 4.0.1 pm2-axon: 4.0.1(supports-color@7.2.0)
pm2-axon-rpc: 0.7.1 pm2-axon-rpc: 0.7.1(supports-color@7.2.0)
pm2-deploy: 1.0.2 pm2-deploy: 1.0.2
pm2-multimeter: 0.1.2 pm2-multimeter: 0.1.2
promptly: 2.2.0 promptly: 2.2.0
@@ -5158,7 +5208,7 @@ snapshots:
sprintf-js: 1.1.2 sprintf-js: 1.1.2
vizion: 2.2.1 vizion: 2.2.1
optionalDependencies: optionalDependencies:
pm2-sysmonit: 1.2.8 pm2-sysmonit: 1.2.8(supports-color@7.2.0)
transitivePeerDependencies: transitivePeerDependencies:
- bufferutil - bufferutil
- supports-color - supports-color
@@ -5185,16 +5235,16 @@ snapshots:
dependencies: dependencies:
read: 1.0.7 read: 1.0.7
proxy-agent@6.4.0: proxy-agent@6.4.0(supports-color@7.2.0):
dependencies: dependencies:
agent-base: 7.1.4 agent-base: 7.1.4
debug: 4.4.3 debug: 4.4.3(supports-color@7.2.0)
http-proxy-agent: 7.0.2 http-proxy-agent: 7.0.2(supports-color@7.2.0)
https-proxy-agent: 7.0.6 https-proxy-agent: 7.0.6(supports-color@7.2.0)
lru-cache: 7.18.3 lru-cache: 7.18.3
pac-proxy-agent: 7.2.0 pac-proxy-agent: 7.2.0(supports-color@7.2.0)
proxy-from-env: 1.1.0 proxy-from-env: 1.1.0
socks-proxy-agent: 8.0.5 socks-proxy-agent: 8.0.5(supports-color@7.2.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -5259,9 +5309,9 @@ snapshots:
require-from-string@2.0.2: {} require-from-string@2.0.2: {}
require-in-the-middle@5.2.0: require-in-the-middle@5.2.0(supports-color@7.2.0):
dependencies: dependencies:
debug: 4.4.3 debug: 4.4.3(supports-color@7.2.0)
module-details-from-path: 1.0.4 module-details-from-path: 1.0.4
resolve: 1.22.12 resolve: 1.22.12
transitivePeerDependencies: transitivePeerDependencies:
@@ -5378,10 +5428,10 @@ snapshots:
smart-buffer@4.2.0: {} smart-buffer@4.2.0: {}
socks-proxy-agent@8.0.5: socks-proxy-agent@8.0.5(supports-color@7.2.0):
dependencies: dependencies:
agent-base: 7.1.4 agent-base: 7.1.4
debug: 4.4.3 debug: 4.4.3(supports-color@7.2.0)
socks: 2.8.9 socks: 2.8.9
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color