Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@frontmcp/guard

Package Overview
Dependencies
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@frontmcp/guard - npm Package Compare versions

Comparing version
1.0.4
to
1.1.0-beta.1
+1
-1
esm/index.mjs

@@ -49,3 +49,3 @@ // libs/guard/src/errors/errors.ts

// libs/guard/src/schemas/schemas.ts
import { z } from "zod";
import { z } from "@frontmcp/lazy-zod";
var partitionKeySchema = z.union([

@@ -52,0 +52,0 @@ z.enum(["ip", "session", "userId", "global"]),

{
"name": "@frontmcp/guard",
"version": "1.0.4",
"version": "1.1.0-beta.1",
"description": "Rate limiting, concurrency control, timeout, IP filtering, and traffic guard utilities for FrontMCP",

@@ -51,6 +51,6 @@ "author": "AgentFront <info@agentfront.dev>",

"dependencies": {
"@frontmcp/utils": "1.0.4"
"@frontmcp/utils": "1.1.0-beta.1"
},
"peerDependencies": {
"zod": "^4.0.0"
"@frontmcp/lazy-zod": "1.1.0-beta.1"
},

@@ -57,0 +57,0 @@ "devDependencies": {

+22
-22

@@ -94,33 +94,33 @@ "use strict";

// libs/guard/src/schemas/schemas.ts
var import_zod = require("zod");
var partitionKeySchema = import_zod.z.union([
import_zod.z.enum(["ip", "session", "userId", "global"]),
import_zod.z.custom(
var import_lazy_zod = require("@frontmcp/lazy-zod");
var partitionKeySchema = import_lazy_zod.z.union([
import_lazy_zod.z.enum(["ip", "session", "userId", "global"]),
import_lazy_zod.z.custom(
(val) => typeof val === "function"
)
]);
var rateLimitConfigSchema = import_zod.z.object({
maxRequests: import_zod.z.number().int().positive().describe("Maximum number of requests allowed within the window."),
windowMs: import_zod.z.number().int().positive().optional().default(6e4).describe("Time window in milliseconds."),
var rateLimitConfigSchema = import_lazy_zod.z.object({
maxRequests: import_lazy_zod.z.number().int().positive().describe("Maximum number of requests allowed within the window."),
windowMs: import_lazy_zod.z.number().int().positive().optional().default(6e4).describe("Time window in milliseconds."),
partitionBy: partitionKeySchema.optional().default("global").describe("Partition key strategy.")
});
var concurrencyConfigSchema = import_zod.z.object({
maxConcurrent: import_zod.z.number().int().positive().describe("Maximum number of concurrent executions allowed."),
queueTimeoutMs: import_zod.z.number().int().nonnegative().optional().default(0).describe("Maximum time in ms to wait in queue (0 = no wait)."),
var concurrencyConfigSchema = import_lazy_zod.z.object({
maxConcurrent: import_lazy_zod.z.number().int().positive().describe("Maximum number of concurrent executions allowed."),
queueTimeoutMs: import_lazy_zod.z.number().int().nonnegative().optional().default(0).describe("Maximum time in ms to wait in queue (0 = no wait)."),
partitionBy: partitionKeySchema.optional().default("global").describe("Partition key strategy.")
});
var timeoutConfigSchema = import_zod.z.object({
executeMs: import_zod.z.number().int().positive().describe("Maximum execution time in milliseconds.")
var timeoutConfigSchema = import_lazy_zod.z.object({
executeMs: import_lazy_zod.z.number().int().positive().describe("Maximum execution time in milliseconds.")
});
var ipFilterConfigSchema = import_zod.z.object({
allowList: import_zod.z.array(import_zod.z.string()).optional().describe("IP addresses or CIDR ranges to always allow."),
denyList: import_zod.z.array(import_zod.z.string()).optional().describe("IP addresses or CIDR ranges to always block."),
defaultAction: import_zod.z.enum(["allow", "deny"]).optional().default("allow").describe("Default action when IP matches neither list."),
trustProxy: import_zod.z.boolean().optional().default(false).describe("Trust X-Forwarded-For header."),
trustedProxyDepth: import_zod.z.number().int().positive().optional().default(1).describe("Max number of proxies to trust from X-Forwarded-For.")
var ipFilterConfigSchema = import_lazy_zod.z.object({
allowList: import_lazy_zod.z.array(import_lazy_zod.z.string()).optional().describe("IP addresses or CIDR ranges to always allow."),
denyList: import_lazy_zod.z.array(import_lazy_zod.z.string()).optional().describe("IP addresses or CIDR ranges to always block."),
defaultAction: import_lazy_zod.z.enum(["allow", "deny"]).optional().default("allow").describe("Default action when IP matches neither list."),
trustProxy: import_lazy_zod.z.boolean().optional().default(false).describe("Trust X-Forwarded-For header."),
trustedProxyDepth: import_lazy_zod.z.number().int().positive().optional().default(1).describe("Max number of proxies to trust from X-Forwarded-For.")
});
var guardConfigSchema = import_zod.z.object({
enabled: import_zod.z.boolean().describe("Whether the guard system is enabled."),
storage: import_zod.z.looseObject({}).optional().describe("Storage backend configuration."),
keyPrefix: import_zod.z.string().optional().default("mcp:guard:").describe("Key prefix for all storage keys."),
var guardConfigSchema = import_lazy_zod.z.object({
enabled: import_lazy_zod.z.boolean().describe("Whether the guard system is enabled."),
storage: import_lazy_zod.z.looseObject({}).optional().describe("Storage backend configuration."),
keyPrefix: import_lazy_zod.z.string().optional().default("mcp:guard:").describe("Key prefix for all storage keys."),
global: rateLimitConfigSchema.optional().describe("Global rate limit applied to all requests."),

@@ -127,0 +127,0 @@ globalConcurrency: concurrencyConfigSchema.optional().describe("Global concurrency limit."),

{
"name": "@frontmcp/guard",
"version": "1.0.4",
"version": "1.1.0-beta.1",
"description": "Rate limiting, concurrency control, timeout, IP filtering, and traffic guard utilities for FrontMCP",

@@ -51,6 +51,6 @@ "author": "AgentFront <info@agentfront.dev>",

"dependencies": {
"@frontmcp/utils": "1.0.4"
"@frontmcp/utils": "1.1.0-beta.1"
},
"peerDependencies": {
"zod": "^4.0.0"
"@frontmcp/lazy-zod": "1.1.0-beta.1"
},

@@ -57,0 +57,0 @@ "devDependencies": {

/**
* Zod validation schemas for guard configuration.
*/
import { z } from 'zod';
export declare const partitionKeySchema: z.ZodUnion<readonly [z.ZodEnum<{
export declare const partitionKeySchema: import("@frontmcp/lazy-zod").ZodUnion<readonly [import("@frontmcp/lazy-zod").ZodEnum<{
ip: "ip";

@@ -10,3 +9,3 @@ session: "session";

global: "global";
}>, z.ZodCustom<(ctx: {
}>, import("zod").ZodCustom<(ctx: {
sessionId: string;

@@ -20,6 +19,6 @@ clientIp?: string;

}) => string>]>;
export declare const rateLimitConfigSchema: z.ZodObject<{
maxRequests: z.ZodNumber;
windowMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
partitionBy: z.ZodDefault<z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
export declare const rateLimitConfigSchema: import("@frontmcp/lazy-zod").ZodObject<{
maxRequests: import("@frontmcp/lazy-zod").ZodNumber;
windowMs: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
partitionBy: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodUnion<readonly [import("@frontmcp/lazy-zod").ZodEnum<{
ip: "ip";

@@ -29,3 +28,3 @@ session: "session";

global: "global";
}>, z.ZodCustom<(ctx: {
}>, import("zod").ZodCustom<(ctx: {
sessionId: string;

@@ -39,7 +38,7 @@ clientIp?: string;

}) => string>]>>>;
}, z.core.$strip>;
export declare const concurrencyConfigSchema: z.ZodObject<{
maxConcurrent: z.ZodNumber;
queueTimeoutMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
partitionBy: z.ZodDefault<z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
}, import("zod/v4/core").$strip>;
export declare const concurrencyConfigSchema: import("@frontmcp/lazy-zod").ZodObject<{
maxConcurrent: import("@frontmcp/lazy-zod").ZodNumber;
queueTimeoutMs: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
partitionBy: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodUnion<readonly [import("@frontmcp/lazy-zod").ZodEnum<{
ip: "ip";

@@ -49,3 +48,3 @@ session: "session";

global: "global";
}>, z.ZodCustom<(ctx: {
}>, import("zod").ZodCustom<(ctx: {
sessionId: string;

@@ -59,24 +58,24 @@ clientIp?: string;

}) => string>]>>>;
}, z.core.$strip>;
export declare const timeoutConfigSchema: z.ZodObject<{
executeMs: z.ZodNumber;
}, z.core.$strip>;
export declare const ipFilterConfigSchema: z.ZodObject<{
allowList: z.ZodOptional<z.ZodArray<z.ZodString>>;
denyList: z.ZodOptional<z.ZodArray<z.ZodString>>;
defaultAction: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
}, import("zod/v4/core").$strip>;
export declare const timeoutConfigSchema: import("@frontmcp/lazy-zod").ZodObject<{
executeMs: import("@frontmcp/lazy-zod").ZodNumber;
}, import("zod/v4/core").$strip>;
export declare const ipFilterConfigSchema: import("@frontmcp/lazy-zod").ZodObject<{
allowList: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>>;
denyList: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>>;
defaultAction: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
allow: "allow";
deny: "deny";
}>>>;
trustProxy: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
trustedProxyDepth: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
}, z.core.$strip>;
export declare const guardConfigSchema: z.ZodObject<{
enabled: z.ZodBoolean;
storage: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
keyPrefix: z.ZodDefault<z.ZodOptional<z.ZodString>>;
global: z.ZodOptional<z.ZodObject<{
maxRequests: z.ZodNumber;
windowMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
partitionBy: z.ZodDefault<z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
trustProxy: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>>;
trustedProxyDepth: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
}, import("zod/v4/core").$strip>;
export declare const guardConfigSchema: import("@frontmcp/lazy-zod").ZodObject<{
enabled: import("@frontmcp/lazy-zod").ZodBoolean;
storage: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{}, import("zod/v4/core").$loose>>;
keyPrefix: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>>;
global: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
maxRequests: import("@frontmcp/lazy-zod").ZodNumber;
windowMs: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
partitionBy: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodUnion<readonly [import("@frontmcp/lazy-zod").ZodEnum<{
ip: "ip";

@@ -86,3 +85,3 @@ session: "session";

global: "global";
}>, z.ZodCustom<(ctx: {
}>, import("zod").ZodCustom<(ctx: {
sessionId: string;

@@ -96,7 +95,7 @@ clientIp?: string;

}) => string>]>>>;
}, z.core.$strip>>;
globalConcurrency: z.ZodOptional<z.ZodObject<{
maxConcurrent: z.ZodNumber;
queueTimeoutMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
partitionBy: z.ZodDefault<z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
}, import("zod/v4/core").$strip>>;
globalConcurrency: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
maxConcurrent: import("@frontmcp/lazy-zod").ZodNumber;
queueTimeoutMs: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
partitionBy: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodUnion<readonly [import("@frontmcp/lazy-zod").ZodEnum<{
ip: "ip";

@@ -106,3 +105,3 @@ session: "session";

global: "global";
}>, z.ZodCustom<(ctx: {
}>, import("zod").ZodCustom<(ctx: {
sessionId: string;

@@ -116,7 +115,7 @@ clientIp?: string;

}) => string>]>>>;
}, z.core.$strip>>;
defaultRateLimit: z.ZodOptional<z.ZodObject<{
maxRequests: z.ZodNumber;
windowMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
partitionBy: z.ZodDefault<z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
}, import("zod/v4/core").$strip>>;
defaultRateLimit: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
maxRequests: import("@frontmcp/lazy-zod").ZodNumber;
windowMs: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
partitionBy: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodUnion<readonly [import("@frontmcp/lazy-zod").ZodEnum<{
ip: "ip";

@@ -126,3 +125,3 @@ session: "session";

global: "global";
}>, z.ZodCustom<(ctx: {
}>, import("zod").ZodCustom<(ctx: {
sessionId: string;

@@ -136,7 +135,7 @@ clientIp?: string;

}) => string>]>>>;
}, z.core.$strip>>;
defaultConcurrency: z.ZodOptional<z.ZodObject<{
maxConcurrent: z.ZodNumber;
queueTimeoutMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
partitionBy: z.ZodDefault<z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
}, import("zod/v4/core").$strip>>;
defaultConcurrency: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
maxConcurrent: import("@frontmcp/lazy-zod").ZodNumber;
queueTimeoutMs: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
partitionBy: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodUnion<readonly [import("@frontmcp/lazy-zod").ZodEnum<{
ip: "ip";

@@ -146,3 +145,3 @@ session: "session";

global: "global";
}>, z.ZodCustom<(ctx: {
}>, import("zod").ZodCustom<(ctx: {
sessionId: string;

@@ -156,16 +155,16 @@ clientIp?: string;

}) => string>]>>>;
}, z.core.$strip>>;
defaultTimeout: z.ZodOptional<z.ZodObject<{
executeMs: z.ZodNumber;
}, z.core.$strip>>;
ipFilter: z.ZodOptional<z.ZodObject<{
allowList: z.ZodOptional<z.ZodArray<z.ZodString>>;
denyList: z.ZodOptional<z.ZodArray<z.ZodString>>;
defaultAction: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
}, import("zod/v4/core").$strip>>;
defaultTimeout: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
executeMs: import("@frontmcp/lazy-zod").ZodNumber;
}, import("zod/v4/core").$strip>>;
ipFilter: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
allowList: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>>;
denyList: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>>;
defaultAction: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
allow: "allow";
deny: "deny";
}>>>;
trustProxy: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
trustedProxyDepth: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
}, z.core.$strip>>;
}, z.core.$strip>;
trustProxy: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>>;
trustedProxyDepth: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
}, import("zod/v4/core").$strip>>;
}, import("zod/v4/core").$strip>;