aboutsummaryrefslogtreecommitdiffstats
path: root/packages/shared
diff options
context:
space:
mode:
Diffstat (limited to 'packages/shared')
-rw-r--r--packages/shared/types/rules.ts8
1 files changed, 8 insertions, 0 deletions
diff --git a/packages/shared/types/rules.ts b/packages/shared/types/rules.ts
index 92300b3c..0daec524 100644
--- a/packages/shared/types/rules.ts
+++ b/packages/shared/types/rules.ts
@@ -54,6 +54,11 @@ const zUrlContainsCondition = z.object({
str: z.string(),
});
+const zUrlDoesNotContainCondition = z.object({
+ type: z.literal("urlDoesNotContain"),
+ str: z.string(),
+});
+
const zImportedFromFeedCondition = z.object({
type: z.literal("importedFromFeed"),
feedId: z.string(),
@@ -80,6 +85,7 @@ const zIsArchivedCondition = z.object({
const nonRecursiveCondition = z.discriminatedUnion("type", [
zAlwaysTrueCondition,
zUrlContainsCondition,
+ zUrlDoesNotContainCondition,
zImportedFromFeedCondition,
zBookmarkTypeIsCondition,
zHasTagCondition,
@@ -98,6 +104,7 @@ export const zRuleEngineConditionSchema: z.ZodType<RuleEngineCondition> =
z.discriminatedUnion("type", [
zAlwaysTrueCondition,
zUrlContainsCondition,
+ zUrlDoesNotContainCondition,
zImportedFromFeedCondition,
zBookmarkTypeIsCondition,
zHasTagCondition,
@@ -227,6 +234,7 @@ const ruleValidaitorFn = (
case "isArchived":
return true;
case "urlContains":
+ case "urlDoesNotContain":
if (condition.str.length == 0) {
ctx.addIssue({
code: "custom",