Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

@zapier/policy

Package Overview
Dependencies
Maintainers
358
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@zapier/policy - npm Package Compare versions

Comparing version
0.1.0
to
0.3.0
+42
-130
dist/index.cjs
'use strict';
var zod = require('zod');
var policySchema = require('@zapier/policy-schema');
// src/schema.ts
var ScalarSchema = zod.z.union([zod.z.string(), zod.z.number(), zod.z.boolean()]);
var PathSchema = zod.z.array(zod.z.union([zod.z.string(), zod.z.number()])).min(1);
var EqualsConditionSchema = zod.z.object({
path: PathSchema,
operator: zod.z.literal("equals"),
value: ScalarSchema
}).strict();
var InConditionSchema = zod.z.object({
path: PathSchema,
operator: zod.z.literal("in"),
value: zod.z.array(ScalarSchema).min(1)
}).strict();
var MatchesConditionSchema = zod.z.object({
path: PathSchema,
operator: zod.z.literal("matches"),
value: zod.z.string()
}).strict();
var MatchesHostConditionSchema = zod.z.object({
path: PathSchema,
operator: zod.z.literal("matches_host"),
value: zod.z.string()
}).strict();
var MatchesPathConditionSchema = zod.z.object({
path: PathSchema,
operator: zod.z.literal("matches_path"),
value: zod.z.string()
}).strict();
var RangeValueSchema = zod.z.object({
min: zod.z.number().finite().optional(),
max: zod.z.number().finite().optional()
}).strict().refine((v) => v.min !== void 0 || v.max !== void 0, {
message: "Range must have at least min or max"
});
var RangeConditionSchema = zod.z.object({
path: PathSchema,
operator: zod.z.literal("range"),
value: RangeValueSchema
}).strict();
var ValuesInConditionSchema = zod.z.object({
path: PathSchema,
operator: zod.z.literal("values_in"),
value: zod.z.array(ScalarSchema).min(1)
}).strict();
var ExistsConditionSchema = zod.z.object({
path: PathSchema,
operator: zod.z.literal("exists")
}).strict();
var KeysInConditionSchema = zod.z.object({
path: PathSchema,
operator: zod.z.literal("keys_in"),
value: zod.z.array(zod.z.string())
}).strict();
var SizeValueSchema = zod.z.union([
zod.z.number().int().nonnegative(),
RangeValueSchema
]);
var SizeConditionSchema = zod.z.object({
path: PathSchema,
operator: zod.z.literal("size"),
value: SizeValueSchema
}).strict();
var ConditionSchema = zod.z.union([
// Scalar operators
EqualsConditionSchema,
InConditionSchema,
MatchesConditionSchema,
MatchesHostConditionSchema,
MatchesPathConditionSchema,
RangeConditionSchema,
// Array operators
ValuesInConditionSchema,
// Other operators
ExistsConditionSchema,
KeysInConditionSchema,
SizeConditionSchema
]);
var ScalarOperatorSchema = zod.z.enum([
"equals",
"in",
"matches",
"matches_host",
"matches_path",
"range"
]);
var ArrayOperatorSchema = zod.z.enum(["values_in"]);
var OtherOperatorSchema = zod.z.enum(["exists", "keys_in", "size"]);
var OperatorSchema = zod.z.enum([
// Scalar
"equals",
"in",
"matches",
"matches_host",
"matches_path",
"range",
// Array
"values_in",
// Other
"exists",
"keys_in",
"size"
]);
var ConditionValueSchema = zod.z.union([
ScalarSchema,
zod.z.array(ScalarSchema),
RangeValueSchema,
SizeValueSchema,
zod.z.array(zod.z.string())
]);
var StatementSchema = zod.z.object({
effect: zod.z.enum(["allow", "deny"]),
permissions: zod.z.array(zod.z.string()).min(1),
resources: zod.z.array(zod.z.string()).min(1),
conditions: zod.z.array(ConditionSchema).optional()
}).strict();
var PolicySchema = zod.z.object({
version: zod.z.literal(1),
statements: zod.z.array(StatementSchema)
}).strict();
// src/index.ts

@@ -552,13 +434,43 @@ // src/match.ts

exports.ArrayOperatorSchema = ArrayOperatorSchema;
exports.ConditionSchema = ConditionSchema;
exports.ConditionValueSchema = ConditionValueSchema;
Object.defineProperty(exports, "ArrayOperatorSchema", {
enumerable: true,
get: function () { return policySchema.ArrayOperatorSchema; }
});
Object.defineProperty(exports, "ConditionSchema", {
enumerable: true,
get: function () { return policySchema.ConditionSchema; }
});
Object.defineProperty(exports, "ConditionValueSchema", {
enumerable: true,
get: function () { return policySchema.ConditionValueSchema; }
});
Object.defineProperty(exports, "OperatorSchema", {
enumerable: true,
get: function () { return policySchema.OperatorSchema; }
});
Object.defineProperty(exports, "OtherOperatorSchema", {
enumerable: true,
get: function () { return policySchema.OtherOperatorSchema; }
});
Object.defineProperty(exports, "PolicySchema", {
enumerable: true,
get: function () { return policySchema.PolicySchema; }
});
Object.defineProperty(exports, "RangeValueSchema", {
enumerable: true,
get: function () { return policySchema.RangeValueSchema; }
});
Object.defineProperty(exports, "ScalarOperatorSchema", {
enumerable: true,
get: function () { return policySchema.ScalarOperatorSchema; }
});
Object.defineProperty(exports, "SizeValueSchema", {
enumerable: true,
get: function () { return policySchema.SizeValueSchema; }
});
Object.defineProperty(exports, "StatementSchema", {
enumerable: true,
get: function () { return policySchema.StatementSchema; }
});
exports.HppDetectedError = HppDetectedError;
exports.OperatorSchema = OperatorSchema;
exports.OtherOperatorSchema = OtherOperatorSchema;
exports.PolicySchema = PolicySchema;
exports.RangeValueSchema = RangeValueSchema;
exports.ScalarOperatorSchema = ScalarOperatorSchema;
exports.SizeValueSchema = SizeValueSchema;
exports.StatementSchema = StatementSchema;
exports.buildUrl = buildUrl;

@@ -565,0 +477,0 @@ exports.createPolicyHttpRequest = createPolicyHttpRequest;

@@ -1,920 +0,4 @@

import { z } from 'zod';
import { Policy, PolicyRequest, PolicyResult, ParsedUrl, PolicyHttpRequest, Condition } from '@zapier/policy-schema';
export { ArrayOperator, ArrayOperatorSchema, Condition, ConditionSchema, ConditionValue, ConditionValueSchema, Effect, Operator, OperatorSchema, OtherOperator, OtherOperatorSchema, ParsedUrl, Policy, PolicyHttpRequest, PolicyRequest, PolicyResult, PolicySchema, RangeValue, RangeValueSchema, ScalarOperator, ScalarOperatorSchema, SizeValue, SizeValueSchema, Statement, StatementSchema } from '@zapier/policy-schema';
type ScalarOperator = "equals" | "in" | "matches" | "matches_host" | "matches_path" | "range";
type ArrayOperator = "values_in";
type OtherOperator = "exists" | "keys_in" | "size";
type Operator = ScalarOperator | ArrayOperator | OtherOperator;
type RangeValue = {
min?: number;
max?: number;
};
type SizeValue = number | RangeValue;
type ConditionValue = string | number | boolean | (string | number | boolean)[] | RangeValue | SizeValue;
interface Condition {
path: (string | number)[];
operator: Operator;
value?: ConditionValue;
}
type Effect = "allow" | "deny";
interface Statement {
effect: Effect;
permissions: string[];
resources: string[];
conditions?: Condition[];
}
interface Policy {
version: 1;
statements: Statement[];
}
interface PolicyRequest {
permission: string;
resource: string;
context?: Record<string, unknown>;
}
interface PolicyResult {
allowed: boolean;
matchedStatement?: Statement;
}
interface ParsedUrl {
scheme: string;
host: string;
port: number;
path: string;
query: Record<string, string[]>;
}
interface PolicyHttpRequest {
method: string;
url: ParsedUrl;
headers: Record<string, string | string[]>;
body: string | null;
body_json: unknown;
}
declare const RangeValueSchema: z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>;
declare const SizeValueSchema: z.ZodUnion<[z.ZodNumber, z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>]>;
declare const ConditionSchema: z.ZodUnion<[z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"equals">;
value: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>;
}, "strict", z.ZodTypeAny, {
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
}, {
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"in">;
value: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "many">;
}, "strict", z.ZodTypeAny, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
}, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"matches">;
value: z.ZodString;
}, "strict", z.ZodTypeAny, {
value: string;
path: (string | number)[];
operator: "matches";
}, {
value: string;
path: (string | number)[];
operator: "matches";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"matches_host">;
value: z.ZodString;
}, "strict", z.ZodTypeAny, {
value: string;
path: (string | number)[];
operator: "matches_host";
}, {
value: string;
path: (string | number)[];
operator: "matches_host";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"matches_path">;
value: z.ZodString;
}, "strict", z.ZodTypeAny, {
value: string;
path: (string | number)[];
operator: "matches_path";
}, {
value: string;
path: (string | number)[];
operator: "matches_path";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"range">;
value: z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>;
}, "strict", z.ZodTypeAny, {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
}, {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"values_in">;
value: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "many">;
}, "strict", z.ZodTypeAny, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
}, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"exists">;
}, "strict", z.ZodTypeAny, {
path: (string | number)[];
operator: "exists";
}, {
path: (string | number)[];
operator: "exists";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"keys_in">;
value: z.ZodArray<z.ZodString, "many">;
}, "strict", z.ZodTypeAny, {
value: string[];
path: (string | number)[];
operator: "keys_in";
}, {
value: string[];
path: (string | number)[];
operator: "keys_in";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"size">;
value: z.ZodUnion<[z.ZodNumber, z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>]>;
}, "strict", z.ZodTypeAny, {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
}, {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
}>]>;
declare const ScalarOperatorSchema: z.ZodEnum<["equals", "in", "matches", "matches_host", "matches_path", "range"]>;
declare const ArrayOperatorSchema: z.ZodEnum<["values_in"]>;
declare const OtherOperatorSchema: z.ZodEnum<["exists", "keys_in", "size"]>;
declare const OperatorSchema: z.ZodEnum<["equals", "in", "matches", "matches_host", "matches_path", "range", "values_in", "exists", "keys_in", "size"]>;
declare const ConditionValueSchema: z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "many">, z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, z.ZodUnion<[z.ZodNumber, z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>]>, z.ZodArray<z.ZodString, "many">]>;
declare const StatementSchema: z.ZodObject<{
effect: z.ZodEnum<["allow", "deny"]>;
permissions: z.ZodArray<z.ZodString, "many">;
resources: z.ZodArray<z.ZodString, "many">;
conditions: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"equals">;
value: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>;
}, "strict", z.ZodTypeAny, {
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
}, {
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"in">;
value: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "many">;
}, "strict", z.ZodTypeAny, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
}, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"matches">;
value: z.ZodString;
}, "strict", z.ZodTypeAny, {
value: string;
path: (string | number)[];
operator: "matches";
}, {
value: string;
path: (string | number)[];
operator: "matches";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"matches_host">;
value: z.ZodString;
}, "strict", z.ZodTypeAny, {
value: string;
path: (string | number)[];
operator: "matches_host";
}, {
value: string;
path: (string | number)[];
operator: "matches_host";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"matches_path">;
value: z.ZodString;
}, "strict", z.ZodTypeAny, {
value: string;
path: (string | number)[];
operator: "matches_path";
}, {
value: string;
path: (string | number)[];
operator: "matches_path";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"range">;
value: z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>;
}, "strict", z.ZodTypeAny, {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
}, {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"values_in">;
value: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "many">;
}, "strict", z.ZodTypeAny, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
}, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"exists">;
}, "strict", z.ZodTypeAny, {
path: (string | number)[];
operator: "exists";
}, {
path: (string | number)[];
operator: "exists";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"keys_in">;
value: z.ZodArray<z.ZodString, "many">;
}, "strict", z.ZodTypeAny, {
value: string[];
path: (string | number)[];
operator: "keys_in";
}, {
value: string[];
path: (string | number)[];
operator: "keys_in";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"size">;
value: z.ZodUnion<[z.ZodNumber, z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>]>;
}, "strict", z.ZodTypeAny, {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
}, {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
}>]>, "many">>;
}, "strict", z.ZodTypeAny, {
effect: "allow" | "deny";
permissions: string[];
resources: string[];
conditions?: ({
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
} | {
value: string;
path: (string | number)[];
operator: "matches";
} | {
value: string;
path: (string | number)[];
operator: "matches_host";
} | {
value: string;
path: (string | number)[];
operator: "matches_path";
} | {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
} | {
path: (string | number)[];
operator: "exists";
} | {
value: string[];
path: (string | number)[];
operator: "keys_in";
} | {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
})[] | undefined;
}, {
effect: "allow" | "deny";
permissions: string[];
resources: string[];
conditions?: ({
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
} | {
value: string;
path: (string | number)[];
operator: "matches";
} | {
value: string;
path: (string | number)[];
operator: "matches_host";
} | {
value: string;
path: (string | number)[];
operator: "matches_path";
} | {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
} | {
path: (string | number)[];
operator: "exists";
} | {
value: string[];
path: (string | number)[];
operator: "keys_in";
} | {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
})[] | undefined;
}>;
declare const PolicySchema: z.ZodObject<{
version: z.ZodLiteral<1>;
statements: z.ZodArray<z.ZodObject<{
effect: z.ZodEnum<["allow", "deny"]>;
permissions: z.ZodArray<z.ZodString, "many">;
resources: z.ZodArray<z.ZodString, "many">;
conditions: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"equals">;
value: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>;
}, "strict", z.ZodTypeAny, {
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
}, {
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"in">;
value: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "many">;
}, "strict", z.ZodTypeAny, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
}, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"matches">;
value: z.ZodString;
}, "strict", z.ZodTypeAny, {
value: string;
path: (string | number)[];
operator: "matches";
}, {
value: string;
path: (string | number)[];
operator: "matches";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"matches_host">;
value: z.ZodString;
}, "strict", z.ZodTypeAny, {
value: string;
path: (string | number)[];
operator: "matches_host";
}, {
value: string;
path: (string | number)[];
operator: "matches_host";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"matches_path">;
value: z.ZodString;
}, "strict", z.ZodTypeAny, {
value: string;
path: (string | number)[];
operator: "matches_path";
}, {
value: string;
path: (string | number)[];
operator: "matches_path";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"range">;
value: z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>;
}, "strict", z.ZodTypeAny, {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
}, {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"values_in">;
value: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "many">;
}, "strict", z.ZodTypeAny, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
}, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"exists">;
}, "strict", z.ZodTypeAny, {
path: (string | number)[];
operator: "exists";
}, {
path: (string | number)[];
operator: "exists";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"keys_in">;
value: z.ZodArray<z.ZodString, "many">;
}, "strict", z.ZodTypeAny, {
value: string[];
path: (string | number)[];
operator: "keys_in";
}, {
value: string[];
path: (string | number)[];
operator: "keys_in";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"size">;
value: z.ZodUnion<[z.ZodNumber, z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>]>;
}, "strict", z.ZodTypeAny, {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
}, {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
}>]>, "many">>;
}, "strict", z.ZodTypeAny, {
effect: "allow" | "deny";
permissions: string[];
resources: string[];
conditions?: ({
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
} | {
value: string;
path: (string | number)[];
operator: "matches";
} | {
value: string;
path: (string | number)[];
operator: "matches_host";
} | {
value: string;
path: (string | number)[];
operator: "matches_path";
} | {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
} | {
path: (string | number)[];
operator: "exists";
} | {
value: string[];
path: (string | number)[];
operator: "keys_in";
} | {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
})[] | undefined;
}, {
effect: "allow" | "deny";
permissions: string[];
resources: string[];
conditions?: ({
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
} | {
value: string;
path: (string | number)[];
operator: "matches";
} | {
value: string;
path: (string | number)[];
operator: "matches_host";
} | {
value: string;
path: (string | number)[];
operator: "matches_path";
} | {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
} | {
path: (string | number)[];
operator: "exists";
} | {
value: string[];
path: (string | number)[];
operator: "keys_in";
} | {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
})[] | undefined;
}>, "many">;
}, "strict", z.ZodTypeAny, {
version: 1;
statements: {
effect: "allow" | "deny";
permissions: string[];
resources: string[];
conditions?: ({
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
} | {
value: string;
path: (string | number)[];
operator: "matches";
} | {
value: string;
path: (string | number)[];
operator: "matches_host";
} | {
value: string;
path: (string | number)[];
operator: "matches_path";
} | {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
} | {
path: (string | number)[];
operator: "exists";
} | {
value: string[];
path: (string | number)[];
operator: "keys_in";
} | {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
})[] | undefined;
}[];
}, {
version: 1;
statements: {
effect: "allow" | "deny";
permissions: string[];
resources: string[];
conditions?: ({
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
} | {
value: string;
path: (string | number)[];
operator: "matches";
} | {
value: string;
path: (string | number)[];
operator: "matches_host";
} | {
value: string;
path: (string | number)[];
operator: "matches_path";
} | {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
} | {
path: (string | number)[];
operator: "exists";
} | {
value: string[];
path: (string | number)[];
operator: "keys_in";
} | {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
})[] | undefined;
}[];
}>;
/**

@@ -1108,2 +192,2 @@ * Evaluate a policy against a request.

export { type ArrayOperator, ArrayOperatorSchema, type Condition, ConditionSchema, type ConditionValue, ConditionValueSchema, type CreatePolicyHttpRequestOptions, type Effect, HppDetectedError, type Operator, OperatorSchema, type OtherOperator, OtherOperatorSchema, type ParsedUrl, type Policy, type PolicyHttpRequest, type PolicyRequest, type PolicyResult, PolicySchema, type RangeValue, RangeValueSchema, type ScalarOperator, ScalarOperatorSchema, type SizeValue, SizeValueSchema, type Statement, StatementSchema, buildUrl, createPolicyHttpRequest, doesPolicyRequireBodyInspection, evaluateCondition, evaluateConditions, evaluatePolicy, getValueAtPath, matchGlob, matchResource, matchSegments, parseUrlForPolicyContext };
export { type CreatePolicyHttpRequestOptions, HppDetectedError, buildUrl, createPolicyHttpRequest, doesPolicyRequireBodyInspection, evaluateCondition, evaluateConditions, evaluatePolicy, getValueAtPath, matchGlob, matchResource, matchSegments, parseUrlForPolicyContext };

@@ -1,920 +0,4 @@

import { z } from 'zod';
import { Policy, PolicyRequest, PolicyResult, ParsedUrl, PolicyHttpRequest, Condition } from '@zapier/policy-schema';
export { ArrayOperator, ArrayOperatorSchema, Condition, ConditionSchema, ConditionValue, ConditionValueSchema, Effect, Operator, OperatorSchema, OtherOperator, OtherOperatorSchema, ParsedUrl, Policy, PolicyHttpRequest, PolicyRequest, PolicyResult, PolicySchema, RangeValue, RangeValueSchema, ScalarOperator, ScalarOperatorSchema, SizeValue, SizeValueSchema, Statement, StatementSchema } from '@zapier/policy-schema';
type ScalarOperator = "equals" | "in" | "matches" | "matches_host" | "matches_path" | "range";
type ArrayOperator = "values_in";
type OtherOperator = "exists" | "keys_in" | "size";
type Operator = ScalarOperator | ArrayOperator | OtherOperator;
type RangeValue = {
min?: number;
max?: number;
};
type SizeValue = number | RangeValue;
type ConditionValue = string | number | boolean | (string | number | boolean)[] | RangeValue | SizeValue;
interface Condition {
path: (string | number)[];
operator: Operator;
value?: ConditionValue;
}
type Effect = "allow" | "deny";
interface Statement {
effect: Effect;
permissions: string[];
resources: string[];
conditions?: Condition[];
}
interface Policy {
version: 1;
statements: Statement[];
}
interface PolicyRequest {
permission: string;
resource: string;
context?: Record<string, unknown>;
}
interface PolicyResult {
allowed: boolean;
matchedStatement?: Statement;
}
interface ParsedUrl {
scheme: string;
host: string;
port: number;
path: string;
query: Record<string, string[]>;
}
interface PolicyHttpRequest {
method: string;
url: ParsedUrl;
headers: Record<string, string | string[]>;
body: string | null;
body_json: unknown;
}
declare const RangeValueSchema: z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>;
declare const SizeValueSchema: z.ZodUnion<[z.ZodNumber, z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>]>;
declare const ConditionSchema: z.ZodUnion<[z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"equals">;
value: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>;
}, "strict", z.ZodTypeAny, {
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
}, {
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"in">;
value: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "many">;
}, "strict", z.ZodTypeAny, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
}, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"matches">;
value: z.ZodString;
}, "strict", z.ZodTypeAny, {
value: string;
path: (string | number)[];
operator: "matches";
}, {
value: string;
path: (string | number)[];
operator: "matches";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"matches_host">;
value: z.ZodString;
}, "strict", z.ZodTypeAny, {
value: string;
path: (string | number)[];
operator: "matches_host";
}, {
value: string;
path: (string | number)[];
operator: "matches_host";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"matches_path">;
value: z.ZodString;
}, "strict", z.ZodTypeAny, {
value: string;
path: (string | number)[];
operator: "matches_path";
}, {
value: string;
path: (string | number)[];
operator: "matches_path";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"range">;
value: z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>;
}, "strict", z.ZodTypeAny, {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
}, {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"values_in">;
value: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "many">;
}, "strict", z.ZodTypeAny, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
}, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"exists">;
}, "strict", z.ZodTypeAny, {
path: (string | number)[];
operator: "exists";
}, {
path: (string | number)[];
operator: "exists";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"keys_in">;
value: z.ZodArray<z.ZodString, "many">;
}, "strict", z.ZodTypeAny, {
value: string[];
path: (string | number)[];
operator: "keys_in";
}, {
value: string[];
path: (string | number)[];
operator: "keys_in";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"size">;
value: z.ZodUnion<[z.ZodNumber, z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>]>;
}, "strict", z.ZodTypeAny, {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
}, {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
}>]>;
declare const ScalarOperatorSchema: z.ZodEnum<["equals", "in", "matches", "matches_host", "matches_path", "range"]>;
declare const ArrayOperatorSchema: z.ZodEnum<["values_in"]>;
declare const OtherOperatorSchema: z.ZodEnum<["exists", "keys_in", "size"]>;
declare const OperatorSchema: z.ZodEnum<["equals", "in", "matches", "matches_host", "matches_path", "range", "values_in", "exists", "keys_in", "size"]>;
declare const ConditionValueSchema: z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "many">, z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, z.ZodUnion<[z.ZodNumber, z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>]>, z.ZodArray<z.ZodString, "many">]>;
declare const StatementSchema: z.ZodObject<{
effect: z.ZodEnum<["allow", "deny"]>;
permissions: z.ZodArray<z.ZodString, "many">;
resources: z.ZodArray<z.ZodString, "many">;
conditions: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"equals">;
value: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>;
}, "strict", z.ZodTypeAny, {
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
}, {
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"in">;
value: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "many">;
}, "strict", z.ZodTypeAny, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
}, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"matches">;
value: z.ZodString;
}, "strict", z.ZodTypeAny, {
value: string;
path: (string | number)[];
operator: "matches";
}, {
value: string;
path: (string | number)[];
operator: "matches";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"matches_host">;
value: z.ZodString;
}, "strict", z.ZodTypeAny, {
value: string;
path: (string | number)[];
operator: "matches_host";
}, {
value: string;
path: (string | number)[];
operator: "matches_host";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"matches_path">;
value: z.ZodString;
}, "strict", z.ZodTypeAny, {
value: string;
path: (string | number)[];
operator: "matches_path";
}, {
value: string;
path: (string | number)[];
operator: "matches_path";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"range">;
value: z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>;
}, "strict", z.ZodTypeAny, {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
}, {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"values_in">;
value: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "many">;
}, "strict", z.ZodTypeAny, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
}, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"exists">;
}, "strict", z.ZodTypeAny, {
path: (string | number)[];
operator: "exists";
}, {
path: (string | number)[];
operator: "exists";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"keys_in">;
value: z.ZodArray<z.ZodString, "many">;
}, "strict", z.ZodTypeAny, {
value: string[];
path: (string | number)[];
operator: "keys_in";
}, {
value: string[];
path: (string | number)[];
operator: "keys_in";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"size">;
value: z.ZodUnion<[z.ZodNumber, z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>]>;
}, "strict", z.ZodTypeAny, {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
}, {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
}>]>, "many">>;
}, "strict", z.ZodTypeAny, {
effect: "allow" | "deny";
permissions: string[];
resources: string[];
conditions?: ({
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
} | {
value: string;
path: (string | number)[];
operator: "matches";
} | {
value: string;
path: (string | number)[];
operator: "matches_host";
} | {
value: string;
path: (string | number)[];
operator: "matches_path";
} | {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
} | {
path: (string | number)[];
operator: "exists";
} | {
value: string[];
path: (string | number)[];
operator: "keys_in";
} | {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
})[] | undefined;
}, {
effect: "allow" | "deny";
permissions: string[];
resources: string[];
conditions?: ({
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
} | {
value: string;
path: (string | number)[];
operator: "matches";
} | {
value: string;
path: (string | number)[];
operator: "matches_host";
} | {
value: string;
path: (string | number)[];
operator: "matches_path";
} | {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
} | {
path: (string | number)[];
operator: "exists";
} | {
value: string[];
path: (string | number)[];
operator: "keys_in";
} | {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
})[] | undefined;
}>;
declare const PolicySchema: z.ZodObject<{
version: z.ZodLiteral<1>;
statements: z.ZodArray<z.ZodObject<{
effect: z.ZodEnum<["allow", "deny"]>;
permissions: z.ZodArray<z.ZodString, "many">;
resources: z.ZodArray<z.ZodString, "many">;
conditions: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"equals">;
value: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>;
}, "strict", z.ZodTypeAny, {
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
}, {
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"in">;
value: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "many">;
}, "strict", z.ZodTypeAny, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
}, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"matches">;
value: z.ZodString;
}, "strict", z.ZodTypeAny, {
value: string;
path: (string | number)[];
operator: "matches";
}, {
value: string;
path: (string | number)[];
operator: "matches";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"matches_host">;
value: z.ZodString;
}, "strict", z.ZodTypeAny, {
value: string;
path: (string | number)[];
operator: "matches_host";
}, {
value: string;
path: (string | number)[];
operator: "matches_host";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"matches_path">;
value: z.ZodString;
}, "strict", z.ZodTypeAny, {
value: string;
path: (string | number)[];
operator: "matches_path";
}, {
value: string;
path: (string | number)[];
operator: "matches_path";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"range">;
value: z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>;
}, "strict", z.ZodTypeAny, {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
}, {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"values_in">;
value: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "many">;
}, "strict", z.ZodTypeAny, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
}, {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"exists">;
}, "strict", z.ZodTypeAny, {
path: (string | number)[];
operator: "exists";
}, {
path: (string | number)[];
operator: "exists";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"keys_in">;
value: z.ZodArray<z.ZodString, "many">;
}, "strict", z.ZodTypeAny, {
value: string[];
path: (string | number)[];
operator: "keys_in";
}, {
value: string[];
path: (string | number)[];
operator: "keys_in";
}>, z.ZodObject<{
path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
operator: z.ZodLiteral<"size">;
value: z.ZodUnion<[z.ZodNumber, z.ZodEffects<z.ZodObject<{
min: z.ZodOptional<z.ZodNumber>;
max: z.ZodOptional<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>, {
min?: number | undefined;
max?: number | undefined;
}, {
min?: number | undefined;
max?: number | undefined;
}>]>;
}, "strict", z.ZodTypeAny, {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
}, {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
}>]>, "many">>;
}, "strict", z.ZodTypeAny, {
effect: "allow" | "deny";
permissions: string[];
resources: string[];
conditions?: ({
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
} | {
value: string;
path: (string | number)[];
operator: "matches";
} | {
value: string;
path: (string | number)[];
operator: "matches_host";
} | {
value: string;
path: (string | number)[];
operator: "matches_path";
} | {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
} | {
path: (string | number)[];
operator: "exists";
} | {
value: string[];
path: (string | number)[];
operator: "keys_in";
} | {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
})[] | undefined;
}, {
effect: "allow" | "deny";
permissions: string[];
resources: string[];
conditions?: ({
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
} | {
value: string;
path: (string | number)[];
operator: "matches";
} | {
value: string;
path: (string | number)[];
operator: "matches_host";
} | {
value: string;
path: (string | number)[];
operator: "matches_path";
} | {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
} | {
path: (string | number)[];
operator: "exists";
} | {
value: string[];
path: (string | number)[];
operator: "keys_in";
} | {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
})[] | undefined;
}>, "many">;
}, "strict", z.ZodTypeAny, {
version: 1;
statements: {
effect: "allow" | "deny";
permissions: string[];
resources: string[];
conditions?: ({
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
} | {
value: string;
path: (string | number)[];
operator: "matches";
} | {
value: string;
path: (string | number)[];
operator: "matches_host";
} | {
value: string;
path: (string | number)[];
operator: "matches_path";
} | {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
} | {
path: (string | number)[];
operator: "exists";
} | {
value: string[];
path: (string | number)[];
operator: "keys_in";
} | {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
})[] | undefined;
}[];
}, {
version: 1;
statements: {
effect: "allow" | "deny";
permissions: string[];
resources: string[];
conditions?: ({
value: string | number | boolean;
path: (string | number)[];
operator: "equals";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "in";
} | {
value: string;
path: (string | number)[];
operator: "matches";
} | {
value: string;
path: (string | number)[];
operator: "matches_host";
} | {
value: string;
path: (string | number)[];
operator: "matches_path";
} | {
value: {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "range";
} | {
value: (string | number | boolean)[];
path: (string | number)[];
operator: "values_in";
} | {
path: (string | number)[];
operator: "exists";
} | {
value: string[];
path: (string | number)[];
operator: "keys_in";
} | {
value: number | {
min?: number | undefined;
max?: number | undefined;
};
path: (string | number)[];
operator: "size";
})[] | undefined;
}[];
}>;
/**

@@ -1108,2 +192,2 @@ * Evaluate a policy against a request.

export { type ArrayOperator, ArrayOperatorSchema, type Condition, ConditionSchema, type ConditionValue, ConditionValueSchema, type CreatePolicyHttpRequestOptions, type Effect, HppDetectedError, type Operator, OperatorSchema, type OtherOperator, OtherOperatorSchema, type ParsedUrl, type Policy, type PolicyHttpRequest, type PolicyRequest, type PolicyResult, PolicySchema, type RangeValue, RangeValueSchema, type ScalarOperator, ScalarOperatorSchema, type SizeValue, SizeValueSchema, type Statement, StatementSchema, buildUrl, createPolicyHttpRequest, doesPolicyRequireBodyInspection, evaluateCondition, evaluateConditions, evaluatePolicy, getValueAtPath, matchGlob, matchResource, matchSegments, parseUrlForPolicyContext };
export { type CreatePolicyHttpRequestOptions, HppDetectedError, buildUrl, createPolicyHttpRequest, doesPolicyRequireBodyInspection, evaluateCondition, evaluateConditions, evaluatePolicy, getValueAtPath, matchGlob, matchResource, matchSegments, parseUrlForPolicyContext };

@@ -1,122 +0,4 @@

import { z } from 'zod';
export { ArrayOperatorSchema, ConditionSchema, ConditionValueSchema, OperatorSchema, OtherOperatorSchema, PolicySchema, RangeValueSchema, ScalarOperatorSchema, SizeValueSchema, StatementSchema } from '@zapier/policy-schema';
// src/schema.ts
var ScalarSchema = z.union([z.string(), z.number(), z.boolean()]);
var PathSchema = z.array(z.union([z.string(), z.number()])).min(1);
var EqualsConditionSchema = z.object({
path: PathSchema,
operator: z.literal("equals"),
value: ScalarSchema
}).strict();
var InConditionSchema = z.object({
path: PathSchema,
operator: z.literal("in"),
value: z.array(ScalarSchema).min(1)
}).strict();
var MatchesConditionSchema = z.object({
path: PathSchema,
operator: z.literal("matches"),
value: z.string()
}).strict();
var MatchesHostConditionSchema = z.object({
path: PathSchema,
operator: z.literal("matches_host"),
value: z.string()
}).strict();
var MatchesPathConditionSchema = z.object({
path: PathSchema,
operator: z.literal("matches_path"),
value: z.string()
}).strict();
var RangeValueSchema = z.object({
min: z.number().finite().optional(),
max: z.number().finite().optional()
}).strict().refine((v) => v.min !== void 0 || v.max !== void 0, {
message: "Range must have at least min or max"
});
var RangeConditionSchema = z.object({
path: PathSchema,
operator: z.literal("range"),
value: RangeValueSchema
}).strict();
var ValuesInConditionSchema = z.object({
path: PathSchema,
operator: z.literal("values_in"),
value: z.array(ScalarSchema).min(1)
}).strict();
var ExistsConditionSchema = z.object({
path: PathSchema,
operator: z.literal("exists")
}).strict();
var KeysInConditionSchema = z.object({
path: PathSchema,
operator: z.literal("keys_in"),
value: z.array(z.string())
}).strict();
var SizeValueSchema = z.union([
z.number().int().nonnegative(),
RangeValueSchema
]);
var SizeConditionSchema = z.object({
path: PathSchema,
operator: z.literal("size"),
value: SizeValueSchema
}).strict();
var ConditionSchema = z.union([
// Scalar operators
EqualsConditionSchema,
InConditionSchema,
MatchesConditionSchema,
MatchesHostConditionSchema,
MatchesPathConditionSchema,
RangeConditionSchema,
// Array operators
ValuesInConditionSchema,
// Other operators
ExistsConditionSchema,
KeysInConditionSchema,
SizeConditionSchema
]);
var ScalarOperatorSchema = z.enum([
"equals",
"in",
"matches",
"matches_host",
"matches_path",
"range"
]);
var ArrayOperatorSchema = z.enum(["values_in"]);
var OtherOperatorSchema = z.enum(["exists", "keys_in", "size"]);
var OperatorSchema = z.enum([
// Scalar
"equals",
"in",
"matches",
"matches_host",
"matches_path",
"range",
// Array
"values_in",
// Other
"exists",
"keys_in",
"size"
]);
var ConditionValueSchema = z.union([
ScalarSchema,
z.array(ScalarSchema),
RangeValueSchema,
SizeValueSchema,
z.array(z.string())
]);
var StatementSchema = z.object({
effect: z.enum(["allow", "deny"]),
permissions: z.array(z.string()).min(1),
resources: z.array(z.string()).min(1),
conditions: z.array(ConditionSchema).optional()
}).strict();
var PolicySchema = z.object({
version: z.literal(1),
statements: z.array(StatementSchema)
}).strict();
// src/index.ts

@@ -550,2 +432,2 @@ // src/match.ts

export { ArrayOperatorSchema, ConditionSchema, ConditionValueSchema, HppDetectedError, OperatorSchema, OtherOperatorSchema, PolicySchema, RangeValueSchema, ScalarOperatorSchema, SizeValueSchema, StatementSchema, buildUrl, createPolicyHttpRequest, doesPolicyRequireBodyInspection, evaluateCondition, evaluateConditions, evaluatePolicy, getValueAtPath, matchGlob, matchResource, matchSegments, parseUrlForPolicyContext };
export { HppDetectedError, buildUrl, createPolicyHttpRequest, doesPolicyRequireBodyInspection, evaluateCondition, evaluateConditions, evaluatePolicy, getValueAtPath, matchGlob, matchResource, matchSegments, parseUrlForPolicyContext };
{
"name": "@zapier/policy",
"version": "0.1.0",
"version": "0.3.0",
"description": "IAM-inspired policy engine for JWT authorization",

@@ -29,6 +29,5 @@ "type": "module",

"dependencies": {
"zod": "3.24.1"
"@zapier/policy-schema": "0.3.0"
},
"devDependencies": {
"@changesets/cli": "^2.28.0",
"@types/node": "^22.0.0",

@@ -35,0 +34,0 @@ "prettier": "^3.5.0",