@f-o-t/rules-engine 3.0.1 → 3.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/analyzer/analysis.d.ts +72 -0
  2. package/dist/analyzer/analysis.d.ts.map +1 -0
  3. package/dist/builder/conditions.d.ts +29 -0
  4. package/dist/builder/conditions.d.ts.map +1 -0
  5. package/dist/builder/rule.d.ts +40 -0
  6. package/dist/builder/rule.d.ts.map +1 -0
  7. package/dist/cache/cache.d.ts +21 -0
  8. package/dist/cache/cache.d.ts.map +1 -0
  9. package/dist/cache/noop.d.ts +3 -0
  10. package/dist/cache/noop.d.ts.map +1 -0
  11. package/dist/core/evaluate.d.ts +21 -0
  12. package/dist/core/evaluate.d.ts.map +1 -0
  13. package/dist/core/filter.d.ts +8 -0
  14. package/dist/core/filter.d.ts.map +1 -0
  15. package/dist/core/group.d.ts +10 -0
  16. package/dist/core/group.d.ts.map +1 -0
  17. package/dist/core/sort.d.ts +14 -0
  18. package/dist/core/sort.d.ts.map +1 -0
  19. package/dist/engine/engine.d.ts +27 -0
  20. package/dist/engine/engine.d.ts.map +1 -0
  21. package/dist/engine/hooks.d.ts +16 -0
  22. package/dist/engine/hooks.d.ts.map +1 -0
  23. package/dist/engine/state.d.ts +19 -0
  24. package/dist/engine/state.d.ts.map +1 -0
  25. package/dist/index.d.ts +33 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +3083 -0
  28. package/dist/index.js.map +37 -0
  29. package/dist/optimizer/index-builder.d.ts +48 -0
  30. package/dist/optimizer/index-builder.d.ts.map +1 -0
  31. package/dist/serialization/serializer.d.ts +79 -0
  32. package/dist/serialization/serializer.d.ts.map +1 -0
  33. package/dist/simulation/simulator.d.ts +65 -0
  34. package/dist/simulation/simulator.d.ts.map +1 -0
  35. package/dist/types/config.d.ts +87 -0
  36. package/dist/types/config.d.ts.map +1 -0
  37. package/dist/types/consequence.d.ts +21 -0
  38. package/dist/types/consequence.d.ts.map +1 -0
  39. package/dist/types/evaluation.d.ts +70 -0
  40. package/dist/types/evaluation.d.ts.map +1 -0
  41. package/dist/types/rule.d.ts +114 -0
  42. package/dist/types/rule.d.ts.map +1 -0
  43. package/dist/types/state.d.ts +65 -0
  44. package/dist/types/state.d.ts.map +1 -0
  45. package/dist/utils/conditions.d.ts +24 -0
  46. package/dist/utils/conditions.d.ts.map +1 -0
  47. package/dist/utils/hash.d.ts +3 -0
  48. package/dist/utils/hash.d.ts.map +1 -0
  49. package/dist/utils/id.d.ts +2 -0
  50. package/dist/utils/id.d.ts.map +1 -0
  51. package/dist/utils/time.d.ts +8 -0
  52. package/dist/utils/time.d.ts.map +1 -0
  53. package/dist/validation/conflicts.d.ts +25 -0
  54. package/dist/validation/conflicts.d.ts.map +1 -0
  55. package/dist/validation/integrity.d.ts +38 -0
  56. package/dist/validation/integrity.d.ts.map +1 -0
  57. package/dist/validation/schema.d.ts +69 -0
  58. package/dist/validation/schema.d.ts.map +1 -0
  59. package/dist/versioning/version-store.d.ts +50 -0
  60. package/dist/versioning/version-store.d.ts.map +1 -0
  61. package/package.json +35 -34
@@ -0,0 +1,72 @@
1
+ import type { ConsequenceDefinitions, DefaultConsequences } from "../types/consequence";
2
+ import type { Rule } from "../types/rule";
3
+ export type RuleComplexity = {
4
+ readonly ruleId: string;
5
+ readonly ruleName: string;
6
+ readonly totalConditions: number;
7
+ readonly maxDepth: number;
8
+ readonly groupCount: number;
9
+ readonly uniqueFields: number;
10
+ readonly uniqueOperators: number;
11
+ readonly consequenceCount: number;
12
+ readonly complexityScore: number;
13
+ };
14
+ export type RuleSetAnalysis = {
15
+ readonly ruleCount: number;
16
+ readonly enabledCount: number;
17
+ readonly disabledCount: number;
18
+ readonly totalConditions: number;
19
+ readonly totalConsequences: number;
20
+ readonly uniqueFields: ReadonlyArray<string>;
21
+ readonly uniqueOperators: ReadonlyArray<string>;
22
+ readonly uniqueConsequenceTypes: ReadonlyArray<string>;
23
+ readonly uniqueCategories: ReadonlyArray<string>;
24
+ readonly uniqueTags: ReadonlyArray<string>;
25
+ readonly priorityRange: {
26
+ min: number;
27
+ max: number;
28
+ };
29
+ readonly averageComplexity: number;
30
+ readonly complexityDistribution: {
31
+ readonly low: number;
32
+ readonly medium: number;
33
+ readonly high: number;
34
+ };
35
+ readonly ruleComplexities: ReadonlyArray<RuleComplexity>;
36
+ };
37
+ export type FieldUsage = {
38
+ readonly field: string;
39
+ readonly count: number;
40
+ readonly types: ReadonlyArray<string>;
41
+ readonly operators: ReadonlyArray<string>;
42
+ readonly rules: ReadonlyArray<{
43
+ id: string;
44
+ name: string;
45
+ }>;
46
+ };
47
+ export type OperatorUsage = {
48
+ readonly operator: string;
49
+ readonly type: string;
50
+ readonly count: number;
51
+ readonly rules: ReadonlyArray<{
52
+ id: string;
53
+ name: string;
54
+ }>;
55
+ };
56
+ export type ConsequenceUsage = {
57
+ readonly type: string;
58
+ readonly count: number;
59
+ readonly rules: ReadonlyArray<{
60
+ id: string;
61
+ name: string;
62
+ }>;
63
+ };
64
+ export declare const analyzeRuleComplexity: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(rule: Rule<TContext, TConsequences>) => RuleComplexity;
65
+ export declare const analyzeRuleSet: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(rules: ReadonlyArray<Rule<TContext, TConsequences>>) => RuleSetAnalysis;
66
+ export declare const analyzeFieldUsage: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(rules: ReadonlyArray<Rule<TContext, TConsequences>>) => ReadonlyArray<FieldUsage>;
67
+ export declare const analyzeOperatorUsage: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(rules: ReadonlyArray<Rule<TContext, TConsequences>>) => ReadonlyArray<OperatorUsage>;
68
+ export declare const analyzeConsequenceUsage: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(rules: ReadonlyArray<Rule<TContext, TConsequences>>) => ReadonlyArray<ConsequenceUsage>;
69
+ export declare const findMostComplexRules: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(rules: ReadonlyArray<Rule<TContext, TConsequences>>, limit?: number) => ReadonlyArray<RuleComplexity>;
70
+ export declare const findLeastUsedFields: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(rules: ReadonlyArray<Rule<TContext, TConsequences>>, limit?: number) => ReadonlyArray<FieldUsage>;
71
+ export declare const formatRuleSetAnalysis: (analysis: RuleSetAnalysis) => string;
72
+ //# sourceMappingURL=analysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/analyzer/analysis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { Condition, ConditionGroup } from "@f-o-t/condition-evaluator";
2
+ export type ConditionBuilderState = {
3
+ readonly conditions: (Condition | ConditionGroup)[];
4
+ };
5
+ export type ConditionBuilder = {
6
+ readonly number: (field: string, operator: "gt" | "gte" | "lt" | "lte" | "eq" | "neq", value: number) => ConditionBuilder;
7
+ readonly string: (field: string, operator: "eq" | "neq" | "contains" | "not_contains" | "starts_with" | "ends_with" | "in" | "not_in" | "like" | "not_like" | "ilike" | "not_ilike" | "regex" | "not_regex", value: string | string[]) => ConditionBuilder;
8
+ readonly boolean: (field: string, operator: "eq" | "neq", value: boolean) => ConditionBuilder;
9
+ readonly date: (field: string, operator: "gt" | "gte" | "lt" | "lte" | "eq" | "neq" | "between", value: string | Date | [string | Date, string | Date]) => ConditionBuilder;
10
+ readonly array: (field: string, operator: "contains" | "not_contains" | "contains_all" | "contains_any" | "is_empty" | "is_not_empty" | "length_eq" | "length_gt" | "length_lt", value: unknown) => ConditionBuilder;
11
+ readonly ref: (field: string, operator: string, valueRef: string) => ConditionBuilder;
12
+ readonly and: (builder: (cb: ConditionBuilder) => ConditionBuilder) => ConditionBuilder;
13
+ readonly or: (builder: (cb: ConditionBuilder) => ConditionBuilder) => ConditionBuilder;
14
+ readonly raw: (condition: Condition | ConditionGroup) => ConditionBuilder;
15
+ readonly build: () => ConditionGroup;
16
+ readonly getConditions: () => ReadonlyArray<Condition | ConditionGroup>;
17
+ };
18
+ export declare const resetBuilderIds: () => void;
19
+ export declare const conditions: () => ConditionBuilder;
20
+ export declare const and: (builderFn: (cb: ConditionBuilder) => ConditionBuilder) => ConditionGroup;
21
+ export declare const or: (builderFn: (cb: ConditionBuilder) => ConditionBuilder) => ConditionGroup;
22
+ export declare const all: (...items: (Condition | ConditionGroup)[]) => ConditionGroup;
23
+ export declare const any: (...items: (Condition | ConditionGroup)[]) => ConditionGroup;
24
+ export declare const num: (field: string, operator: "gt" | "gte" | "lt" | "lte" | "eq" | "neq", value: number) => Condition;
25
+ export declare const str: (field: string, operator: "eq" | "neq" | "contains" | "not_contains" | "starts_with" | "ends_with" | "in" | "not_in" | "like" | "not_like" | "ilike" | "not_ilike" | "regex" | "not_regex", value: string | string[]) => Condition;
26
+ export declare const bool: (field: string, operator: "eq" | "neq", value: boolean) => Condition;
27
+ export declare const date: (field: string, operator: "gt" | "gte" | "lt" | "lte" | "eq" | "neq" | "between", value: string | Date | [string | Date, string | Date]) => Condition;
28
+ export declare const arr: (field: string, operator: "contains" | "not_contains" | "contains_all" | "contains_any" | "is_empty" | "is_not_empty" | "length_eq" | "length_gt" | "length_lt", value?: unknown) => Condition;
29
+ //# sourceMappingURL=conditions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditions.d.ts","sourceRoot":"","sources":["../../src/builder/conditions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { ConditionGroup } from "@f-o-t/condition-evaluator";
2
+ import type { z } from "zod";
3
+ import type { ConsequenceDefinitions, DefaultConsequences } from "../types/consequence";
4
+ import type { RuleInput } from "../types/rule";
5
+ import { type ConditionBuilder } from "./conditions";
6
+ export type RuleBuilderState<_TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences> = {
7
+ readonly id?: string;
8
+ readonly name?: string;
9
+ readonly description?: string;
10
+ readonly conditions?: ConditionGroup;
11
+ readonly consequences: Array<{
12
+ type: keyof TConsequences;
13
+ payload: z.infer<TConsequences[keyof TConsequences]>;
14
+ }>;
15
+ readonly priority: number;
16
+ readonly enabled: boolean;
17
+ readonly stopOnMatch: boolean;
18
+ readonly tags: string[];
19
+ readonly category?: string;
20
+ readonly metadata?: Record<string, unknown>;
21
+ };
22
+ export type RuleBuilder<TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences> = {
23
+ readonly id: (id: string) => RuleBuilder<TContext, TConsequences>;
24
+ readonly named: (name: string) => RuleBuilder<TContext, TConsequences>;
25
+ readonly describedAs: (description: string) => RuleBuilder<TContext, TConsequences>;
26
+ readonly when: (conditions: ConditionGroup | ((cb: ConditionBuilder) => ConditionBuilder)) => RuleBuilder<TContext, TConsequences>;
27
+ readonly then: <K extends keyof TConsequences>(type: K, payload: z.infer<TConsequences[K]>) => RuleBuilder<TContext, TConsequences>;
28
+ readonly withPriority: (priority: number) => RuleBuilder<TContext, TConsequences>;
29
+ readonly enabled: (enabled?: boolean) => RuleBuilder<TContext, TConsequences>;
30
+ readonly disabled: () => RuleBuilder<TContext, TConsequences>;
31
+ readonly stopOnMatch: (stop?: boolean) => RuleBuilder<TContext, TConsequences>;
32
+ readonly tagged: (...tags: string[]) => RuleBuilder<TContext, TConsequences>;
33
+ readonly inCategory: (category: string) => RuleBuilder<TContext, TConsequences>;
34
+ readonly withMetadata: (metadata: Record<string, unknown>) => RuleBuilder<TContext, TConsequences>;
35
+ readonly build: () => RuleInput<TContext, TConsequences>;
36
+ readonly getState: () => RuleBuilderState<TContext, TConsequences>;
37
+ };
38
+ export declare const rule: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>() => RuleBuilder<TContext, TConsequences>;
39
+ export declare const createRule: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(builderFn: (rb: RuleBuilder<TContext, TConsequences>) => RuleBuilder<TContext, TConsequences>) => RuleInput<TContext, TConsequences>;
40
+ //# sourceMappingURL=rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../src/builder/rule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { CacheStats } from "../types/state";
2
+ export type CacheEntry<T> = {
3
+ value: T;
4
+ expiresAt: number;
5
+ createdAt: number;
6
+ };
7
+ export type Cache<T> = {
8
+ readonly get: (key: string) => T | undefined;
9
+ readonly set: (key: string, value: T) => void;
10
+ readonly has: (key: string) => boolean;
11
+ readonly delete: (key: string) => boolean;
12
+ readonly clear: () => void;
13
+ readonly getStats: () => CacheStats;
14
+ };
15
+ export type CacheOptions = {
16
+ readonly ttl: number;
17
+ readonly maxSize: number;
18
+ readonly onEvict?: (key: string, value: unknown) => void;
19
+ };
20
+ export declare const createCache: <T>(options: CacheOptions) => Cache<T>;
21
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/cache/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IACzB,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;IACpB,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9C,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,UAAU,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC3D,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,SAAS,YAAY,KAAG,KAAK,CAAC,CAAC,CA+G7D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Cache } from "./cache";
2
+ export declare const createNoopCache: <T>() => Cache<T>;
3
+ //# sourceMappingURL=noop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop.d.ts","sourceRoot":"","sources":["../../src/cache/noop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,eAAO,MAAM,eAAe,GAAI,CAAC,OAAK,KAAK,CAAC,CAAC,CAgB5C,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { createEvaluator } from "@f-o-t/condition-evaluator";
2
+ import type { AggregatedConsequence, ConsequenceDefinitions, DefaultConsequences } from "../types/consequence";
3
+ import type { EvaluateConfig, EvaluationContext, RuleEvaluationResult } from "../types/evaluation";
4
+ import type { Rule } from "../types/rule";
5
+ export type EvaluateRuleOptions = {
6
+ readonly skipDisabled?: boolean;
7
+ };
8
+ export declare const evaluateRule: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(rule: Rule<TContext, TConsequences>, context: EvaluationContext<TContext>, evaluator: ReturnType<typeof createEvaluator>, options?: EvaluateRuleOptions) => RuleEvaluationResult<TContext, TConsequences>;
9
+ export type EvaluateRulesOptions<TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences> = {
10
+ readonly config?: Partial<EvaluateConfig>;
11
+ readonly onRuleEvaluated?: (result: RuleEvaluationResult<TContext, TConsequences>) => void;
12
+ };
13
+ export type EvaluateRulesResult<TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences> = {
14
+ readonly results: ReadonlyArray<RuleEvaluationResult<TContext, TConsequences>>;
15
+ readonly matchedRules: ReadonlyArray<Rule<TContext, TConsequences>>;
16
+ readonly consequences: ReadonlyArray<AggregatedConsequence<TConsequences>>;
17
+ readonly stoppedEarly: boolean;
18
+ readonly stoppedByRuleId?: string;
19
+ };
20
+ export declare const evaluateRules: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(rules: ReadonlyArray<Rule<TContext, TConsequences>>, context: EvaluationContext<TContext>, evaluator: ReturnType<typeof createEvaluator>, options?: EvaluateRulesOptions<TContext, TConsequences>) => EvaluateRulesResult<TContext, TConsequences>;
21
+ //# sourceMappingURL=evaluate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/core/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEhB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACT,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACT,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,MAAM,MAAM,mBAAmB,GAAG;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,YAAY,GACtB,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,EAElE,MAAM,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EACnC,SAAS,iBAAiB,CAAC,QAAQ,CAAC,EACpC,WAAW,UAAU,CAAC,OAAO,eAAe,CAAC,EAC7C,UAAS,mBAAwB,KACjC,oBAAoB,CAAC,QAAQ,EAAE,aAAa,CAmE9C,CAAC;AASF,MAAM,MAAM,oBAAoB,CAC7B,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,IACjE;IACD,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1C,QAAQ,CAAC,eAAe,CAAC,EAAE,CACxB,MAAM,EAAE,oBAAoB,CAAC,QAAQ,EAAE,aAAa,CAAC,KACnD,IAAI,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAC5B,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,IACjE;IACD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAC5B,oBAAoB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAC/C,CAAC;IACF,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IACpE,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3E,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,aAAa,GACvB,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,EAElE,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,EACnD,SAAS,iBAAiB,CAAC,QAAQ,CAAC,EACpC,WAAW,UAAU,CAAC,OAAO,eAAe,CAAC,EAC7C,UAAS,oBAAoB,CAAC,QAAQ,EAAE,aAAa,CAAM,KAC3D,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAgD7C,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ConsequenceDefinitions, DefaultConsequences } from "../types/consequence";
2
+ import type { Rule, RuleFilters } from "../types/rule";
3
+ export declare const filterRules: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(filters: RuleFilters) => (rules: ReadonlyArray<Rule<TContext, TConsequences>>) => ReadonlyArray<Rule<TContext, TConsequences>>;
4
+ export declare const filterByEnabled: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(enabled: boolean) => (rules: readonly Rule<TContext, TConsequences>[]) => readonly Rule<TContext, TConsequences>[];
5
+ export declare const filterByTags: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(tags: ReadonlyArray<string>) => (rules: readonly Rule<TContext, TConsequences>[]) => readonly Rule<TContext, TConsequences>[];
6
+ export declare const filterByCategory: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(category: string) => (rules: readonly Rule<TContext, TConsequences>[]) => readonly Rule<TContext, TConsequences>[];
7
+ export declare const filterByIds: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(ids: ReadonlyArray<string>) => (rules: readonly Rule<TContext, TConsequences>[]) => readonly Rule<TContext, TConsequences>[];
8
+ //# sourceMappingURL=filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/core/filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACT,sBAAsB,EACtB,mBAAmB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEvD,eAAO,MAAM,WAAW,GACrB,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,EAElE,SAAS,WAAW,MAGjB,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,KACnD,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAkChD,CAAC;AAEF,eAAO,MAAM,eAAe,GACzB,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,EAElE,SAAS,OAAO,kGAGlB,CAAC;AAEF,eAAO,MAAM,YAAY,GACtB,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,EAElE,MAAM,aAAa,CAAC,MAAM,CAAC,kGAG7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC1B,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,EAElE,UAAU,MAAM,kGAGlB,CAAC;AAEF,eAAO,MAAM,WAAW,GACrB,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,EAElE,KAAK,aAAa,CAAC,MAAM,CAAC,kGAG5B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ConsequenceDefinitions, DefaultConsequences } from "../types/consequence";
2
+ import type { Rule } from "../types/rule";
3
+ export type GroupByField = "category" | "priority" | "enabled";
4
+ export type GroupedRules<TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences> = ReadonlyMap<string | number | boolean, ReadonlyArray<Rule<TContext, TConsequences>>>;
5
+ export declare const groupRules: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(field: GroupByField) => (rules: ReadonlyArray<Rule<TContext, TConsequences>>) => GroupedRules<TContext, TConsequences>;
6
+ export declare const groupByCategory: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>() => (rules: readonly Rule<TContext, TConsequences>[]) => GroupedRules<TContext, TConsequences>;
7
+ export declare const groupByPriority: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>() => (rules: readonly Rule<TContext, TConsequences>[]) => GroupedRules<TContext, TConsequences>;
8
+ export declare const groupByEnabled: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>() => (rules: readonly Rule<TContext, TConsequences>[]) => GroupedRules<TContext, TConsequences>;
9
+ export declare const groupByCustom: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences, TKey extends string | number | boolean = string>(keyFn: (rule: Rule<TContext, TConsequences>) => TKey) => (rules: ReadonlyArray<Rule<TContext, TConsequences>>) => ReadonlyMap<TKey, ReadonlyArray<Rule<TContext, TConsequences>>>;
10
+ //# sourceMappingURL=group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../src/core/group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACT,sBAAsB,EACtB,mBAAmB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAE/D,MAAM,MAAM,YAAY,CACrB,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,IACjE,WAAW,CACZ,MAAM,GAAG,MAAM,GAAG,OAAO,EACzB,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAC9C,CAAC;AAEF,eAAO,MAAM,UAAU,GACpB,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,EAElE,OAAO,YAAY,MAGhB,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,KACnD,YAAY,CAAC,QAAQ,EAAE,aAAa,CA+BzC,CAAC;AAEF,eAAO,MAAM,eAAe,GACzB,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,iGAGpE,CAAC;AAEF,eAAO,MAAM,eAAe,GACzB,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,iGAGpE,CAAC;AAEF,eAAO,MAAM,cAAc,GACxB,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,iGAGpE,CAAC;AAEF,eAAO,MAAM,aAAa,GACvB,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,EAClE,IAAI,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAE/C,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,KAAK,IAAI,MAGjD,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,KACnD,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAenE,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { ConsequenceDefinitions, DefaultConsequences } from "../types/consequence";
2
+ import type { Rule } from "../types/rule";
3
+ export type SortField = "priority" | "name" | "createdAt" | "updatedAt";
4
+ export type SortDirection = "asc" | "desc";
5
+ export type SortOptions = {
6
+ readonly field: SortField;
7
+ readonly direction?: SortDirection;
8
+ };
9
+ export declare const sortRules: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(options: SortField | SortOptions) => (rules: ReadonlyArray<Rule<TContext, TConsequences>>) => ReadonlyArray<Rule<TContext, TConsequences>>;
10
+ export declare const sortByPriority: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(direction?: SortDirection) => (rules: readonly Rule<TContext, TConsequences>[]) => readonly Rule<TContext, TConsequences>[];
11
+ export declare const sortByName: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(direction?: SortDirection) => (rules: readonly Rule<TContext, TConsequences>[]) => readonly Rule<TContext, TConsequences>[];
12
+ export declare const sortByCreatedAt: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(direction?: SortDirection) => (rules: readonly Rule<TContext, TConsequences>[]) => readonly Rule<TContext, TConsequences>[];
13
+ export declare const sortByUpdatedAt: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(direction?: SortDirection) => (rules: readonly Rule<TContext, TConsequences>[]) => readonly Rule<TContext, TConsequences>[];
14
+ //# sourceMappingURL=sort.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["../../src/core/sort.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACT,sBAAsB,EACtB,mBAAmB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC;AACxE,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C,MAAM,MAAM,WAAW,GAAG;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;CACrC,CAAC;AAEF,eAAO,MAAM,SAAS,GACnB,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,EAElE,SAAS,SAAS,GAAG,WAAW,MAU7B,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,KACnD,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAwBhD,CAAC;AAEF,eAAO,MAAM,cAAc,GACxB,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,EAElE,YAAW,aAAsB,kGAGnC,CAAC;AAEF,eAAO,MAAM,UAAU,GACpB,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,EAElE,YAAW,aAAqB,kGAGlC,CAAC;AAEF,eAAO,MAAM,eAAe,GACzB,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,EAElE,YAAW,aAAsB,kGAGnC,CAAC;AAEF,eAAO,MAAM,eAAe,GACzB,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,EAElE,YAAW,aAAsB,kGAGnC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { type EngineConfig } from "../types/config";
2
+ import type { ConsequenceDefinitions, DefaultConsequences } from "../types/consequence";
3
+ import type { EngineExecutionResult, EvaluateOptions } from "../types/evaluation";
4
+ import type { Rule, RuleFilters, RuleInput, RuleSet, RuleSetInput } from "../types/rule";
5
+ import type { CacheStats, EngineState, EngineStats } from "../types/state";
6
+ export type Engine<TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences> = {
7
+ readonly addRule: (input: RuleInput<TContext, TConsequences>) => Rule<TContext, TConsequences>;
8
+ readonly addRules: (inputs: RuleInput<TContext, TConsequences>[]) => Rule<TContext, TConsequences>[];
9
+ readonly removeRule: (ruleId: string) => boolean;
10
+ readonly updateRule: (ruleId: string, updates: Partial<RuleInput<TContext, TConsequences>>) => Rule<TContext, TConsequences> | undefined;
11
+ readonly getRule: (ruleId: string) => Rule<TContext, TConsequences> | undefined;
12
+ readonly getRules: (filters?: RuleFilters) => ReadonlyArray<Rule<TContext, TConsequences>>;
13
+ readonly enableRule: (ruleId: string) => boolean;
14
+ readonly disableRule: (ruleId: string) => boolean;
15
+ readonly clearRules: () => void;
16
+ readonly addRuleSet: (input: RuleSetInput) => RuleSet;
17
+ readonly getRuleSet: (ruleSetId: string) => RuleSet | undefined;
18
+ readonly getRuleSets: () => ReadonlyArray<RuleSet>;
19
+ readonly removeRuleSet: (ruleSetId: string) => boolean;
20
+ readonly evaluate: (context: TContext, options?: EvaluateOptions) => Promise<EngineExecutionResult<TContext, TConsequences>>;
21
+ readonly clearCache: () => void;
22
+ readonly getCacheStats: () => CacheStats;
23
+ readonly getState: () => Readonly<EngineState<TContext, TConsequences>>;
24
+ readonly getStats: () => EngineStats;
25
+ };
26
+ export declare const createEngine: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(config?: EngineConfig<TContext, TConsequences>) => Engine<TContext, TConsequences>;
27
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/engine/engine.ts"],"names":[],"mappings":"AAIA,OAAO,EACJ,KAAK,YAAY,EAOnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAET,sBAAsB,EACtB,mBAAmB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACT,qBAAqB,EACrB,eAAe,EAEjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACT,IAAI,EACJ,WAAW,EACX,SAAS,EACT,OAAO,EACP,YAAY,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACT,UAAU,EACV,WAAW,EACX,WAAW,EAEb,MAAM,gBAAgB,CAAC;AAmCxB,MAAM,MAAM,MAAM,CACf,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,IACjE;IACD,QAAQ,CAAC,OAAO,EAAE,CACf,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,KACvC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,CAChB,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,KAC1C,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD,QAAQ,CAAC,UAAU,EAAE,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,KAClD,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,CACf,MAAM,EAAE,MAAM,KACZ,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,CAChB,OAAO,CAAC,EAAE,WAAW,KACnB,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;IAEhC,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;IACtD,QAAQ,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,CAAC;IAChE,QAAQ,CAAC,WAAW,EAAE,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IACnD,QAAQ,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAEvD,QAAQ,CAAC,QAAQ,EAAE,CAChB,OAAO,EAAE,QAAQ,EACjB,OAAO,CAAC,EAAE,eAAe,KACvB,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAE7D,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,UAAU,CAAC;IAEzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IACxE,QAAQ,CAAC,QAAQ,EAAE,MAAM,WAAW,CAAC;CACvC,CAAC;AAgDF,eAAO,MAAM,YAAY,GACtB,QAAQ,GAAG,OAAO,EAClB,aAAa,SAAS,sBAAsB,GAAG,mBAAmB,EAElE,SAAQ,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAM,KAClD,MAAM,CAAC,QAAQ,EAAE,aAAa,CA0ShC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { EngineHooks } from "../types/config";
2
+ import type { AggregatedConsequence, ConsequenceDefinitions, DefaultConsequences } from "../types/consequence";
3
+ import type { EngineExecutionResult, EvaluationContext, RuleEvaluationResult } from "../types/evaluation";
4
+ import type { Rule } from "../types/rule";
5
+ export declare const executeBeforeEvaluation: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(hooks: EngineHooks<TContext, TConsequences>, context: EvaluationContext<TContext>, rules: ReadonlyArray<Rule<TContext, TConsequences>>, timeoutMs?: number) => Promise<void>;
6
+ export declare const executeAfterEvaluation: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(hooks: EngineHooks<TContext, TConsequences>, result: EngineExecutionResult<TContext, TConsequences>, timeoutMs?: number) => Promise<void>;
7
+ export declare const executeBeforeRuleEvaluation: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(hooks: EngineHooks<TContext, TConsequences>, rule: Rule<TContext, TConsequences>, context: EvaluationContext<TContext>, timeoutMs?: number) => Promise<void>;
8
+ export declare const executeAfterRuleEvaluation: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(hooks: EngineHooks<TContext, TConsequences>, rule: Rule<TContext, TConsequences>, result: RuleEvaluationResult<TContext, TConsequences>, timeoutMs?: number) => Promise<void>;
9
+ export declare const executeOnRuleMatch: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(hooks: EngineHooks<TContext, TConsequences>, rule: Rule<TContext, TConsequences>, context: EvaluationContext<TContext>, timeoutMs?: number) => Promise<void>;
10
+ export declare const executeOnRuleSkip: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(hooks: EngineHooks<TContext, TConsequences>, rule: Rule<TContext, TConsequences>, reason: string, timeoutMs?: number) => Promise<void>;
11
+ export declare const executeOnRuleError: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(hooks: EngineHooks<TContext, TConsequences>, rule: Rule<TContext, TConsequences>, ruleError: Error, timeoutMs?: number) => Promise<void>;
12
+ export declare const executeOnConsequenceCollected: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(hooks: EngineHooks<TContext, TConsequences>, rule: Rule<TContext, TConsequences>, consequence: AggregatedConsequence<TConsequences>, timeoutMs?: number) => Promise<void>;
13
+ export declare const executeOnCacheHit: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(hooks: EngineHooks<TContext, TConsequences>, key: string, result: EngineExecutionResult<TContext, TConsequences>, timeoutMs?: number) => Promise<void>;
14
+ export declare const executeOnCacheMiss: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(hooks: EngineHooks<TContext, TConsequences>, key: string, timeoutMs?: number) => Promise<void>;
15
+ export declare const executeOnSlowRule: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(hooks: EngineHooks<TContext, TConsequences>, rule: Rule<TContext, TConsequences>, timeMs: number, threshold: number, timeoutMs?: number) => Promise<void>;
16
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/engine/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ConsequenceDefinitions, DefaultConsequences } from "../types/consequence";
2
+ import type { Rule, RuleFilters, RuleInput, RuleSet, RuleSetInput } from "../types/rule";
3
+ import type { MutableEngineState } from "../types/state";
4
+ export declare const addRule: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(state: MutableEngineState<TContext, TConsequences>, input: RuleInput<TContext, TConsequences>) => Rule<TContext, TConsequences>;
5
+ export declare const addRules: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(state: MutableEngineState<TContext, TConsequences>, inputs: RuleInput<TContext, TConsequences>[]) => Rule<TContext, TConsequences>[];
6
+ export declare const removeRule: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(state: MutableEngineState<TContext, TConsequences>, ruleId: string) => boolean;
7
+ export declare const updateRule: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(state: MutableEngineState<TContext, TConsequences>, ruleId: string, updates: Partial<RuleInput<TContext, TConsequences>>) => Rule<TContext, TConsequences> | undefined;
8
+ export declare const getRule: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(state: MutableEngineState<TContext, TConsequences>, ruleId: string) => Rule<TContext, TConsequences> | undefined;
9
+ export declare const getRules: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(state: MutableEngineState<TContext, TConsequences>, filters?: RuleFilters) => ReadonlyArray<Rule<TContext, TConsequences>>;
10
+ export declare const enableRule: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(state: MutableEngineState<TContext, TConsequences>, ruleId: string) => boolean;
11
+ export declare const disableRule: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(state: MutableEngineState<TContext, TConsequences>, ruleId: string) => boolean;
12
+ export declare const clearRules: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(state: MutableEngineState<TContext, TConsequences>) => void;
13
+ export declare const addRuleSet: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(state: MutableEngineState<TContext, TConsequences>, input: RuleSetInput) => RuleSet;
14
+ export declare const getRuleSet: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(state: MutableEngineState<TContext, TConsequences>, ruleSetId: string) => RuleSet | undefined;
15
+ export declare const getRuleSets: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(state: MutableEngineState<TContext, TConsequences>) => ReadonlyArray<RuleSet>;
16
+ export declare const removeRuleSet: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(state: MutableEngineState<TContext, TConsequences>, ruleSetId: string) => boolean;
17
+ export declare const getRulesInSet: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(state: MutableEngineState<TContext, TConsequences>, ruleSetId: string) => ReadonlyArray<Rule<TContext, TConsequences>>;
18
+ export declare const cloneState: <TContext = unknown, TConsequences extends ConsequenceDefinitions = DefaultConsequences>(state: MutableEngineState<TContext, TConsequences>) => MutableEngineState<TContext, TConsequences>;
19
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/engine/state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export type { ArrayCondition, ArrayOperator, BooleanCondition, BooleanOperator, Condition, ConditionGroup, CustomCondition, DateCondition, DateOperator, EvaluationResult, GroupEvaluationResult, LogicalOperator, NumberCondition, NumberOperator, StringCondition, StringOperator, } from "@f-o-t/condition-evaluator";
2
+ export { ConditionGroup as ConditionGroupSchema, isConditionGroup, createEvaluator, createOperator, } from "@f-o-t/condition-evaluator";
3
+ export { analyzeConsequenceUsage, analyzeFieldUsage, analyzeOperatorUsage, analyzeRuleComplexity, analyzeRuleSet, type ConsequenceUsage, type FieldUsage, findLeastUsedFields, findMostComplexRules, formatRuleSetAnalysis, type OperatorUsage, type RuleComplexity, type RuleSetAnalysis, } from "./analyzer/analysis";
4
+ export { all, and, any, arr, bool, type ConditionBuilder, type ConditionBuilderState, conditions, date, num, or, resetBuilderIds, str, } from "./builder/conditions";
5
+ export { createRule, type RuleBuilder, type RuleBuilderState, rule, } from "./builder/rule";
6
+ export { type Cache, type CacheEntry, type CacheOptions, createCache, } from "./cache/cache";
7
+ export { createNoopCache } from "./cache/noop";
8
+ export { type EvaluateRuleOptions, type EvaluateRulesOptions, type EvaluateRulesResult, evaluateRule, evaluateRules, } from "./core/evaluate";
9
+ export { filterByCategory, filterByEnabled, filterByIds, filterByTags, filterRules, } from "./core/filter";
10
+ export { type GroupByField, type GroupedRules, groupByCategory, groupByCustom, groupByEnabled, groupByPriority, groupRules, } from "./core/group";
11
+ export { type SortDirection, type SortField, type SortOptions, sortByCreatedAt, sortByName, sortByPriority, sortByUpdatedAt, sortRules, } from "./core/sort";
12
+ export { createEngine, type Engine } from "./engine/engine";
13
+ export { addRule, addRuleSet, addRules, clearRules, cloneState, disableRule, enableRule, getRule, getRuleSet, getRuleSets, getRules, getRulesInSet, removeRule, removeRuleSet, updateRule, } from "./engine/state";
14
+ export { analyzeOptimizations, buildIndex, type CategoryIndex, type FieldIndex, filterRulesForContext, getIndexStats, getRuleById, getRulesByCategory, getRulesByField, getRulesByFields, getRulesByPriority, getRulesByPriorityRange, getRulesByTag, getRulesByTags, type IndexOptions, type OptimizationSuggestion, type PriorityIndex, type RuleIndex, type TagIndex, } from "./optimizer/index-builder";
15
+ export { cloneRule, deserializeRule, deserializeRuleSet, diffRuleSets, type ExportFormat, exportRules, exportToJson, type ImportOptions, type ImportResult, importFromJson, importRules, mergeRuleSets, type OrphanedReference, type SerializedRule, type SerializedRuleSet, serializeRule, serializeRuleSet, } from "./serialization/serializer";
16
+ export { type BatchSimulationResult, batchSimulate, findRulesAffectedByContextChange, formatSimulationResult, type SimulationContext, type SimulationResult, simulate, simulateSingleRule, type WhatIfResult, whatIf, } from "./simulation/simulator";
17
+ export type { CacheConfig, EngineConfig, EngineHooks, Logger, LogLevel, ResolvedEngineConfig, ValidationConfig, VersioningConfig, } from "./types/config";
18
+ export { CacheConfigSchema, getDefaultCacheConfig, getDefaultConflictResolution, getDefaultLogLevel, getDefaultValidationConfig, getDefaultVersioningConfig, LogLevelSchema, parseCacheConfig, parseValidationConfig, parseVersioningConfig, ValidationConfigSchema, VersioningConfigSchema, } from "./types/config";
19
+ export type { AggregatedConsequence, Consequence, ConsequenceDefinitions, ConsequenceInput, DefaultConsequences, InferConsequencePayload, InferConsequenceType, } from "./types/consequence";
20
+ export type { ConflictResolutionStrategy, EngineExecutionResult, EvaluateConfig, EvaluateOptions, EvaluationContext, RuleEvaluationResult, } from "./types/evaluation";
21
+ export { ConflictResolutionStrategySchema, EvaluateConfigSchema, EvaluateOptionsSchema, } from "./types/evaluation";
22
+ export type { Rule, RuleFilters, RuleInput, RuleSchemaType, RuleSet, RuleSetInput, RuleSetSchemaType, } from "./types/rule";
23
+ export { RuleSchema, RuleSetSchema } from "./types/rule";
24
+ export type { CacheStats, EngineState, EngineStats, OptimizerState, RuleStats, } from "./types/state";
25
+ export { CacheStatsSchema, createInitialOptimizerState, createInitialRuleStats, createInitialState, EngineStatsSchema, RuleStatsSchema, } from "./types/state";
26
+ export { hashContext, hashRules } from "./utils/hash";
27
+ export { generateId } from "./utils/id";
28
+ export { measureTime, measureTimeAsync, type TimingResult, withTimeout, } from "./utils/time";
29
+ export { type Conflict, type ConflictDetectionOptions, type ConflictType, detectConflicts, formatConflicts, getConflictsBySeverity, getConflictsByType, hasConflicts, hasErrors, } from "./validation/conflicts";
30
+ export { checkIntegrity, checkRuleFieldCoverage, formatIntegrityResult, getUsedFields, getUsedOperators, type IntegrityCheckOptions, type IntegrityCheckResult, type IntegrityIssue, } from "./validation/integrity";
31
+ export { createRuleValidator, parseRule, type ResolvedValidationOptions, safeParseRule, type ValidationError, ValidationErrorSchema, type ValidationOptions, ValidationOptionsSchema, type ValidationResult, ValidationResultSchema, validateConditions, validateRule, validateRuleSet, validateRules, } from "./validation/schema";
32
+ export { addVersion, compareVersions, createVersionStore, formatVersionHistory, getAllVersions, getHistory, getLatestVersion, getVersion, getVersionsByChangeType, getVersionsByDateRange, pruneOldVersions, type RuleVersion, rollbackToVersion, type VersionHistory, type VersionStore, } from "./versioning/version-store";
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACT,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,cAAc,EACd,eAAe,EACf,cAAc,GAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACJ,cAAc,IAAI,oBAAoB,EACtC,gBAAgB,EAChB,eAAe,EACf,cAAc,GAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACJ,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACJ,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,IAAI,EACJ,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,UAAU,EACV,IAAI,EACJ,GAAG,EACH,EAAE,EACF,eAAe,EACf,GAAG,GACL,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACJ,UAAU,EACV,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,IAAI,GACN,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACJ,KAAK,KAAK,EACV,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,WAAW,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACJ,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,YAAY,EACZ,aAAa,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACJ,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,WAAW,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EACJ,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,eAAe,EACf,aAAa,EACb,cAAc,EACd,eAAe,EACf,UAAU,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EACJ,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,eAAe,EACf,UAAU,EACV,cAAc,EACd,eAAe,EACf,SAAS,GACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EACJ,OAAO,EACP,UAAU,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,OAAO,EACP,UAAU,EACV,WAAW,EACX,QAAQ,EACR,aAAa,EACb,UAAU,EACV,aAAa,EACb,UAAU,GACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACJ,oBAAoB,EACpB,UAAU,EACV,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,qBAAqB,EACrB,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,aAAa,EACb,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,QAAQ,GACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACJ,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,KAAK,YAAY,EACjB,WAAW,EACX,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,cAAc,EACd,WAAW,EACX,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,aAAa,EACb,gBAAgB,GAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACJ,KAAK,qBAAqB,EAC1B,aAAa,EACb,gCAAgC,EAChC,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,QAAQ,EACR,kBAAkB,EAClB,KAAK,YAAY,EACjB,MAAM,GACR,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACT,WAAW,EACX,YAAY,EACZ,WAAW,EACX,MAAM,EACN,QAAQ,EACR,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACJ,iBAAiB,EACjB,qBAAqB,EACrB,4BAA4B,EAC5B,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,EAC1B,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,GACxB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACT,qBAAqB,EACrB,WAAW,EACX,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACT,0BAA0B,EAC1B,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,oBAAoB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACJ,gCAAgC,EAChC,oBAAoB,EACpB,qBAAqB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACT,IAAI,EACJ,WAAW,EACX,SAAS,EACT,cAAc,EACd,OAAO,EACP,YAAY,EACZ,iBAAiB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACzD,YAAY,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACX,cAAc,EACd,SAAS,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EACJ,gBAAgB,EAChB,2BAA2B,EAC3B,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EACJ,WAAW,EACX,gBAAgB,EAChB,KAAK,YAAY,EACjB,WAAW,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EACJ,KAAK,QAAQ,EACb,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACZ,SAAS,GACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACJ,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,cAAc,GACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACJ,mBAAmB,EACnB,SAAS,EACT,KAAK,yBAAyB,EAC9B,aAAa,EACb,KAAK,eAAe,EACpB,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,aAAa,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACJ,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,WAAW,EAChB,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,YAAY,GACnB,MAAM,4BAA4B,CAAC"}