@higher.archi/boe 1.0.0
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.
- package/dist/core/compilers/condition.compiler.d.ts +26 -0
- package/dist/core/compilers/condition.compiler.d.ts.map +1 -0
- package/dist/core/compilers/condition.compiler.js +159 -0
- package/dist/core/compilers/condition.compiler.js.map +1 -0
- package/dist/core/compilers/index.d.ts +5 -0
- package/dist/core/compilers/index.d.ts.map +1 -0
- package/dist/core/compilers/index.js +11 -0
- package/dist/core/compilers/index.js.map +1 -0
- package/dist/core/engine/engine.interface.d.ts +44 -0
- package/dist/core/engine/engine.interface.d.ts.map +1 -0
- package/dist/core/engine/engine.interface.js +10 -0
- package/dist/core/engine/engine.interface.js.map +1 -0
- package/dist/core/engine/index.d.ts +5 -0
- package/dist/core/engine/index.d.ts.map +1 -0
- package/dist/core/engine/index.js +6 -0
- package/dist/core/engine/index.js.map +1 -0
- package/dist/core/evaluation/condition.evaluator.d.ts +18 -0
- package/dist/core/evaluation/condition.evaluator.d.ts.map +1 -0
- package/dist/core/evaluation/condition.evaluator.js +179 -0
- package/dist/core/evaluation/condition.evaluator.js.map +1 -0
- package/dist/core/evaluation/index.d.ts +7 -0
- package/dist/core/evaluation/index.d.ts.map +1 -0
- package/dist/core/evaluation/index.js +19 -0
- package/dist/core/evaluation/index.js.map +1 -0
- package/dist/core/evaluation/temporal.d.ts +52 -0
- package/dist/core/evaluation/temporal.d.ts.map +1 -0
- package/dist/core/evaluation/temporal.js +166 -0
- package/dist/core/evaluation/temporal.js.map +1 -0
- package/dist/core/index.d.ts +25 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +73 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/matching/activation.types.d.ts +11 -0
- package/dist/core/matching/activation.types.d.ts.map +1 -0
- package/dist/core/matching/activation.types.js +6 -0
- package/dist/core/matching/activation.types.js.map +1 -0
- package/dist/core/matching/index.d.ts +6 -0
- package/dist/core/matching/index.d.ts.map +1 -0
- package/dist/core/matching/index.js +10 -0
- package/dist/core/matching/index.js.map +1 -0
- package/dist/core/matching/matcher.d.ts +17 -0
- package/dist/core/matching/matcher.d.ts.map +1 -0
- package/dist/core/matching/matcher.js +93 -0
- package/dist/core/matching/matcher.js.map +1 -0
- package/dist/core/memory/index.d.ts +6 -0
- package/dist/core/memory/index.d.ts.map +1 -0
- package/dist/core/memory/index.js +9 -0
- package/dist/core/memory/index.js.map +1 -0
- package/dist/core/memory/working-memory.d.ts +26 -0
- package/dist/core/memory/working-memory.d.ts.map +1 -0
- package/dist/core/memory/working-memory.interface.d.ts +84 -0
- package/dist/core/memory/working-memory.interface.d.ts.map +1 -0
- package/dist/core/memory/working-memory.interface.js +6 -0
- package/dist/core/memory/working-memory.interface.js.map +1 -0
- package/dist/core/memory/working-memory.js +102 -0
- package/dist/core/memory/working-memory.js.map +1 -0
- package/dist/core/operators/adapters/context.adapter.d.ts +32 -0
- package/dist/core/operators/adapters/context.adapter.d.ts.map +1 -0
- package/dist/core/operators/adapters/context.adapter.js +36 -0
- package/dist/core/operators/adapters/context.adapter.js.map +1 -0
- package/dist/core/operators/adapters/index.d.ts +9 -0
- package/dist/core/operators/adapters/index.d.ts.map +1 -0
- package/dist/core/operators/adapters/index.js +22 -0
- package/dist/core/operators/adapters/index.js.map +1 -0
- package/dist/core/operators/adapters/operator.adapter.d.ts +94 -0
- package/dist/core/operators/adapters/operator.adapter.d.ts.map +1 -0
- package/dist/core/operators/adapters/operator.adapter.js +156 -0
- package/dist/core/operators/adapters/operator.adapter.js.map +1 -0
- package/dist/core/operators/arithmetic/add.d.ts +17 -0
- package/dist/core/operators/arithmetic/add.d.ts.map +1 -0
- package/dist/core/operators/arithmetic/add.js +35 -0
- package/dist/core/operators/arithmetic/add.js.map +1 -0
- package/dist/core/operators/arithmetic/average.d.ts +13 -0
- package/dist/core/operators/arithmetic/average.d.ts.map +1 -0
- package/dist/core/operators/arithmetic/average.js +21 -0
- package/dist/core/operators/arithmetic/average.js.map +1 -0
- package/dist/core/operators/arithmetic/divide.d.ts +17 -0
- package/dist/core/operators/arithmetic/divide.d.ts.map +1 -0
- package/dist/core/operators/arithmetic/divide.js +33 -0
- package/dist/core/operators/arithmetic/divide.js.map +1 -0
- package/dist/core/operators/arithmetic/index.d.ts +20 -0
- package/dist/core/operators/arithmetic/index.d.ts.map +1 -0
- package/dist/core/operators/arithmetic/index.js +59 -0
- package/dist/core/operators/arithmetic/index.js.map +1 -0
- package/dist/core/operators/arithmetic/min-max.d.ts +25 -0
- package/dist/core/operators/arithmetic/min-max.d.ts.map +1 -0
- package/dist/core/operators/arithmetic/min-max.js +51 -0
- package/dist/core/operators/arithmetic/min-max.js.map +1 -0
- package/dist/core/operators/arithmetic/multiply.d.ts +17 -0
- package/dist/core/operators/arithmetic/multiply.d.ts.map +1 -0
- package/dist/core/operators/arithmetic/multiply.js +31 -0
- package/dist/core/operators/arithmetic/multiply.js.map +1 -0
- package/dist/core/operators/arithmetic/number-checks.d.ts +41 -0
- package/dist/core/operators/arithmetic/number-checks.d.ts.map +1 -0
- package/dist/core/operators/arithmetic/number-checks.js +84 -0
- package/dist/core/operators/arithmetic/number-checks.js.map +1 -0
- package/dist/core/operators/arithmetic/power.d.ts +17 -0
- package/dist/core/operators/arithmetic/power.d.ts.map +1 -0
- package/dist/core/operators/arithmetic/power.js +31 -0
- package/dist/core/operators/arithmetic/power.js.map +1 -0
- package/dist/core/operators/arithmetic/rounding.d.ts +29 -0
- package/dist/core/operators/arithmetic/rounding.d.ts.map +1 -0
- package/dist/core/operators/arithmetic/rounding.js +59 -0
- package/dist/core/operators/arithmetic/rounding.js.map +1 -0
- package/dist/core/operators/arithmetic/subtract.d.ts +17 -0
- package/dist/core/operators/arithmetic/subtract.d.ts.map +1 -0
- package/dist/core/operators/arithmetic/subtract.js +32 -0
- package/dist/core/operators/arithmetic/subtract.js.map +1 -0
- package/dist/core/operators/array/contains.d.ts +29 -0
- package/dist/core/operators/array/contains.d.ts.map +1 -0
- package/dist/core/operators/array/contains.js +61 -0
- package/dist/core/operators/array/contains.js.map +1 -0
- package/dist/core/operators/array/index.d.ts +12 -0
- package/dist/core/operators/array/index.d.ts.map +1 -0
- package/dist/core/operators/array/index.js +35 -0
- package/dist/core/operators/array/index.js.map +1 -0
- package/dist/core/operators/comparison/approximately-equals.d.ts +17 -0
- package/dist/core/operators/comparison/approximately-equals.d.ts.map +1 -0
- package/dist/core/operators/comparison/approximately-equals.js +35 -0
- package/dist/core/operators/comparison/approximately-equals.js.map +1 -0
- package/dist/core/operators/comparison/equals.d.ts +18 -0
- package/dist/core/operators/comparison/equals.d.ts.map +1 -0
- package/dist/core/operators/comparison/equals.js +40 -0
- package/dist/core/operators/comparison/equals.js.map +1 -0
- package/dist/core/operators/comparison/greater-than.d.ts +18 -0
- package/dist/core/operators/comparison/greater-than.d.ts.map +1 -0
- package/dist/core/operators/comparison/greater-than.js +42 -0
- package/dist/core/operators/comparison/greater-than.js.map +1 -0
- package/dist/core/operators/comparison/index.d.ts +17 -0
- package/dist/core/operators/comparison/index.d.ts.map +1 -0
- package/dist/core/operators/comparison/index.js +50 -0
- package/dist/core/operators/comparison/index.js.map +1 -0
- package/dist/core/operators/comparison/less-than.d.ts +18 -0
- package/dist/core/operators/comparison/less-than.d.ts.map +1 -0
- package/dist/core/operators/comparison/less-than.js +42 -0
- package/dist/core/operators/comparison/less-than.js.map +1 -0
- package/dist/core/operators/comparison/not-equals.d.ts +18 -0
- package/dist/core/operators/comparison/not-equals.d.ts.map +1 -0
- package/dist/core/operators/comparison/not-equals.js +40 -0
- package/dist/core/operators/comparison/not-equals.js.map +1 -0
- package/dist/core/operators/comparison/nullish.d.ts +45 -0
- package/dist/core/operators/comparison/nullish.d.ts.map +1 -0
- package/dist/core/operators/comparison/nullish.js +110 -0
- package/dist/core/operators/comparison/nullish.js.map +1 -0
- package/dist/core/operators/date/arithmetic.d.ts +24 -0
- package/dist/core/operators/date/arithmetic.d.ts.map +1 -0
- package/dist/core/operators/date/arithmetic.js +170 -0
- package/dist/core/operators/date/arithmetic.js.map +1 -0
- package/dist/core/operators/date/boundaries.d.ts +18 -0
- package/dist/core/operators/date/boundaries.d.ts.map +1 -0
- package/dist/core/operators/date/boundaries.js +115 -0
- package/dist/core/operators/date/boundaries.js.map +1 -0
- package/dist/core/operators/date/checks.d.ts +16 -0
- package/dist/core/operators/date/checks.d.ts.map +1 -0
- package/dist/core/operators/date/checks.js +81 -0
- package/dist/core/operators/date/checks.js.map +1 -0
- package/dist/core/operators/date/comparisons.d.ts +16 -0
- package/dist/core/operators/date/comparisons.d.ts.map +1 -0
- package/dist/core/operators/date/comparisons.js +86 -0
- package/dist/core/operators/date/comparisons.js.map +1 -0
- package/dist/core/operators/date/constants.d.ts +38 -0
- package/dist/core/operators/date/constants.d.ts.map +1 -0
- package/dist/core/operators/date/constants.js +82 -0
- package/dist/core/operators/date/constants.js.map +1 -0
- package/dist/core/operators/date/differences.d.ts +18 -0
- package/dist/core/operators/date/differences.d.ts.map +1 -0
- package/dist/core/operators/date/differences.js +105 -0
- package/dist/core/operators/date/differences.js.map +1 -0
- package/dist/core/operators/date/extraction.d.ts +19 -0
- package/dist/core/operators/date/extraction.d.ts.map +1 -0
- package/dist/core/operators/date/extraction.js +98 -0
- package/dist/core/operators/date/extraction.js.map +1 -0
- package/dist/core/operators/date/generators.d.ts +24 -0
- package/dist/core/operators/date/generators.d.ts.map +1 -0
- package/dist/core/operators/date/generators.js +156 -0
- package/dist/core/operators/date/generators.js.map +1 -0
- package/dist/core/operators/date/index.d.ts +31 -0
- package/dist/core/operators/date/index.d.ts.map +1 -0
- package/dist/core/operators/date/index.js +80 -0
- package/dist/core/operators/date/index.js.map +1 -0
- package/dist/core/operators/date/range.d.ts +17 -0
- package/dist/core/operators/date/range.d.ts.map +1 -0
- package/dist/core/operators/date/range.js +34 -0
- package/dist/core/operators/date/range.js.map +1 -0
- package/dist/core/operators/evaluator.d.ts +71 -0
- package/dist/core/operators/evaluator.d.ts.map +1 -0
- package/dist/core/operators/evaluator.js +186 -0
- package/dist/core/operators/evaluator.js.map +1 -0
- package/dist/core/operators/examples.d.ts +8 -0
- package/dist/core/operators/examples.d.ts.map +1 -0
- package/dist/core/operators/examples.js +184 -0
- package/dist/core/operators/examples.js.map +1 -0
- package/dist/core/operators/index.d.ts +82 -0
- package/dist/core/operators/index.d.ts.map +1 -0
- package/dist/core/operators/index.js +142 -0
- package/dist/core/operators/index.js.map +1 -0
- package/dist/core/operators/logical/and.d.ts +13 -0
- package/dist/core/operators/logical/and.d.ts.map +1 -0
- package/dist/core/operators/logical/and.js +21 -0
- package/dist/core/operators/logical/and.js.map +1 -0
- package/dist/core/operators/logical/if.d.ts +19 -0
- package/dist/core/operators/logical/if.d.ts.map +1 -0
- package/dist/core/operators/logical/if.js +27 -0
- package/dist/core/operators/logical/if.js.map +1 -0
- package/dist/core/operators/logical/index.d.ts +16 -0
- package/dist/core/operators/logical/index.d.ts.map +1 -0
- package/dist/core/operators/logical/index.js +47 -0
- package/dist/core/operators/logical/index.js.map +1 -0
- package/dist/core/operators/logical/not.d.ts +13 -0
- package/dist/core/operators/logical/not.d.ts.map +1 -0
- package/dist/core/operators/logical/not.js +21 -0
- package/dist/core/operators/logical/not.js.map +1 -0
- package/dist/core/operators/logical/or.d.ts +13 -0
- package/dist/core/operators/logical/or.d.ts.map +1 -0
- package/dist/core/operators/logical/or.js +21 -0
- package/dist/core/operators/logical/or.js.map +1 -0
- package/dist/core/operators/logical/xor.d.ts +17 -0
- package/dist/core/operators/logical/xor.d.ts.map +1 -0
- package/dist/core/operators/logical/xor.js +31 -0
- package/dist/core/operators/logical/xor.js.map +1 -0
- package/dist/core/operators/operator.d.ts +171 -0
- package/dist/core/operators/operator.d.ts.map +1 -0
- package/dist/core/operators/operator.js +230 -0
- package/dist/core/operators/operator.js.map +1 -0
- package/dist/core/operators/phonetic/caverphone.d.ts +17 -0
- package/dist/core/operators/phonetic/caverphone.d.ts.map +1 -0
- package/dist/core/operators/phonetic/caverphone.js +31 -0
- package/dist/core/operators/phonetic/caverphone.js.map +1 -0
- package/dist/core/operators/phonetic/index.d.ts +14 -0
- package/dist/core/operators/phonetic/index.d.ts.map +1 -0
- package/dist/core/operators/phonetic/index.js +41 -0
- package/dist/core/operators/phonetic/index.js.map +1 -0
- package/dist/core/operators/phonetic/nysiis.d.ts +17 -0
- package/dist/core/operators/phonetic/nysiis.d.ts.map +1 -0
- package/dist/core/operators/phonetic/nysiis.js +31 -0
- package/dist/core/operators/phonetic/nysiis.js.map +1 -0
- package/dist/core/operators/phonetic/soundex.d.ts +17 -0
- package/dist/core/operators/phonetic/soundex.d.ts.map +1 -0
- package/dist/core/operators/phonetic/soundex.js +32 -0
- package/dist/core/operators/phonetic/soundex.js.map +1 -0
- package/dist/core/operators/registry.d.ts +89 -0
- package/dist/core/operators/registry.d.ts.map +1 -0
- package/dist/core/operators/registry.js +217 -0
- package/dist/core/operators/registry.js.map +1 -0
- package/dist/core/operators/similarity/cosine.d.ts +13 -0
- package/dist/core/operators/similarity/cosine.d.ts.map +1 -0
- package/dist/core/operators/similarity/cosine.js +23 -0
- package/dist/core/operators/similarity/cosine.js.map +1 -0
- package/dist/core/operators/similarity/index.d.ts +12 -0
- package/dist/core/operators/similarity/index.d.ts.map +1 -0
- package/dist/core/operators/similarity/index.js +35 -0
- package/dist/core/operators/similarity/index.js.map +1 -0
- package/dist/core/operators/string/contains.d.ts +17 -0
- package/dist/core/operators/string/contains.d.ts.map +1 -0
- package/dist/core/operators/string/contains.js +33 -0
- package/dist/core/operators/string/contains.js.map +1 -0
- package/dist/core/operators/string/empty.d.ts +21 -0
- package/dist/core/operators/string/empty.d.ts.map +1 -0
- package/dist/core/operators/string/empty.js +41 -0
- package/dist/core/operators/string/empty.js.map +1 -0
- package/dist/core/operators/string/ends-with.d.ts +17 -0
- package/dist/core/operators/string/ends-with.d.ts.map +1 -0
- package/dist/core/operators/string/ends-with.js +31 -0
- package/dist/core/operators/string/ends-with.js.map +1 -0
- package/dist/core/operators/string/index.d.ts +16 -0
- package/dist/core/operators/string/index.d.ts.map +1 -0
- package/dist/core/operators/string/index.js +47 -0
- package/dist/core/operators/string/index.js.map +1 -0
- package/dist/core/operators/string/regex.d.ts +17 -0
- package/dist/core/operators/string/regex.d.ts.map +1 -0
- package/dist/core/operators/string/regex.js +33 -0
- package/dist/core/operators/string/regex.js.map +1 -0
- package/dist/core/operators/string/starts-with.d.ts +17 -0
- package/dist/core/operators/string/starts-with.d.ts.map +1 -0
- package/dist/core/operators/string/starts-with.js +31 -0
- package/dist/core/operators/string/starts-with.js.map +1 -0
- package/dist/core/operators/transform/case.d.ts +25 -0
- package/dist/core/operators/transform/case.d.ts.map +1 -0
- package/dist/core/operators/transform/case.js +54 -0
- package/dist/core/operators/transform/case.js.map +1 -0
- package/dist/core/operators/transform/concat.d.ts +21 -0
- package/dist/core/operators/transform/concat.d.ts.map +1 -0
- package/dist/core/operators/transform/concat.js +40 -0
- package/dist/core/operators/transform/concat.js.map +1 -0
- package/dist/core/operators/transform/index.d.ts +18 -0
- package/dist/core/operators/transform/index.d.ts.map +1 -0
- package/dist/core/operators/transform/index.js +53 -0
- package/dist/core/operators/transform/index.js.map +1 -0
- package/dist/core/operators/transform/length.d.ts +17 -0
- package/dist/core/operators/transform/length.d.ts.map +1 -0
- package/dist/core/operators/transform/length.js +35 -0
- package/dist/core/operators/transform/length.js.map +1 -0
- package/dist/core/operators/transform/pad.d.ts +17 -0
- package/dist/core/operators/transform/pad.d.ts.map +1 -0
- package/dist/core/operators/transform/pad.js +31 -0
- package/dist/core/operators/transform/pad.js.map +1 -0
- package/dist/core/operators/transform/replace.d.ts +17 -0
- package/dist/core/operators/transform/replace.d.ts.map +1 -0
- package/dist/core/operators/transform/replace.js +29 -0
- package/dist/core/operators/transform/replace.js.map +1 -0
- package/dist/core/operators/transform/substring.d.ts +25 -0
- package/dist/core/operators/transform/substring.d.ts.map +1 -0
- package/dist/core/operators/transform/substring.js +50 -0
- package/dist/core/operators/transform/substring.js.map +1 -0
- package/dist/core/operators/transform/trim.d.ts +21 -0
- package/dist/core/operators/transform/trim.d.ts.map +1 -0
- package/dist/core/operators/transform/trim.js +40 -0
- package/dist/core/operators/transform/trim.js.map +1 -0
- package/dist/core/operators/types.d.ts +109 -0
- package/dist/core/operators/types.d.ts.map +1 -0
- package/dist/core/operators/types.js +9 -0
- package/dist/core/operators/types.js.map +1 -0
- package/dist/core/parser/errors.d.ts +50 -0
- package/dist/core/parser/errors.d.ts.map +1 -0
- package/dist/core/parser/errors.js +77 -0
- package/dist/core/parser/errors.js.map +1 -0
- package/dist/core/parser/index.d.ts +73 -0
- package/dist/core/parser/index.d.ts.map +1 -0
- package/dist/core/parser/index.js +120 -0
- package/dist/core/parser/index.js.map +1 -0
- package/dist/core/parser/operators/aliases.d.ts +50 -0
- package/dist/core/parser/operators/aliases.d.ts.map +1 -0
- package/dist/core/parser/operators/aliases.js +288 -0
- package/dist/core/parser/operators/aliases.js.map +1 -0
- package/dist/core/parser/operators/index.d.ts +17 -0
- package/dist/core/parser/operators/index.d.ts.map +1 -0
- package/dist/core/parser/operators/index.js +34 -0
- package/dist/core/parser/operators/index.js.map +1 -0
- package/dist/core/parser/operators/operator-table.d.ts +33 -0
- package/dist/core/parser/operators/operator-table.d.ts.map +1 -0
- package/dist/core/parser/operators/operator-table.js +91 -0
- package/dist/core/parser/operators/operator-table.js.map +1 -0
- package/dist/core/parser/operators/precedence.d.ts +58 -0
- package/dist/core/parser/operators/precedence.d.ts.map +1 -0
- package/dist/core/parser/operators/precedence.js +76 -0
- package/dist/core/parser/operators/precedence.js.map +1 -0
- package/dist/core/parser/parser/expression.parser.d.ts +34 -0
- package/dist/core/parser/parser/expression.parser.d.ts.map +1 -0
- package/dist/core/parser/parser/expression.parser.js +250 -0
- package/dist/core/parser/parser/expression.parser.js.map +1 -0
- package/dist/core/parser/parser/function.parser.d.ts +26 -0
- package/dist/core/parser/parser/function.parser.d.ts.map +1 -0
- package/dist/core/parser/parser/function.parser.js +86 -0
- package/dist/core/parser/parser/function.parser.js.map +1 -0
- package/dist/core/parser/parser/index.d.ts +19 -0
- package/dist/core/parser/parser/index.d.ts.map +1 -0
- package/dist/core/parser/parser/index.js +24 -0
- package/dist/core/parser/parser/index.js.map +1 -0
- package/dist/core/parser/parser/primary.parser.d.ts +17 -0
- package/dist/core/parser/parser/primary.parser.d.ts.map +1 -0
- package/dist/core/parser/parser/primary.parser.js +110 -0
- package/dist/core/parser/parser/primary.parser.js.map +1 -0
- package/dist/core/parser/parser/types.d.ts +36 -0
- package/dist/core/parser/parser/types.d.ts.map +1 -0
- package/dist/core/parser/parser/types.js +3 -0
- package/dist/core/parser/parser/types.js.map +1 -0
- package/dist/core/parser/tokenizer/index.d.ts +32 -0
- package/dist/core/parser/tokenizer/index.d.ts.map +1 -0
- package/dist/core/parser/tokenizer/index.js +68 -0
- package/dist/core/parser/tokenizer/index.js.map +1 -0
- package/dist/core/parser/tokenizer/readers/identifier.reader.d.ts +30 -0
- package/dist/core/parser/tokenizer/readers/identifier.reader.d.ts.map +1 -0
- package/dist/core/parser/tokenizer/readers/identifier.reader.js +109 -0
- package/dist/core/parser/tokenizer/readers/identifier.reader.js.map +1 -0
- package/dist/core/parser/tokenizer/readers/index.d.ts +20 -0
- package/dist/core/parser/tokenizer/readers/index.d.ts.map +1 -0
- package/dist/core/parser/tokenizer/readers/index.js +29 -0
- package/dist/core/parser/tokenizer/readers/index.js.map +1 -0
- package/dist/core/parser/tokenizer/readers/number.reader.d.ts +43 -0
- package/dist/core/parser/tokenizer/readers/number.reader.d.ts.map +1 -0
- package/dist/core/parser/tokenizer/readers/number.reader.js +115 -0
- package/dist/core/parser/tokenizer/readers/number.reader.js.map +1 -0
- package/dist/core/parser/tokenizer/readers/property-ref.reader.d.ts +20 -0
- package/dist/core/parser/tokenizer/readers/property-ref.reader.d.ts.map +1 -0
- package/dist/core/parser/tokenizer/readers/property-ref.reader.js +114 -0
- package/dist/core/parser/tokenizer/readers/property-ref.reader.js.map +1 -0
- package/dist/core/parser/tokenizer/readers/string.reader.d.ts +22 -0
- package/dist/core/parser/tokenizer/readers/string.reader.d.ts.map +1 -0
- package/dist/core/parser/tokenizer/readers/string.reader.js +93 -0
- package/dist/core/parser/tokenizer/readers/string.reader.js.map +1 -0
- package/dist/core/parser/tokenizer/readers/symbol.reader.d.ts +22 -0
- package/dist/core/parser/tokenizer/readers/symbol.reader.d.ts.map +1 -0
- package/dist/core/parser/tokenizer/readers/symbol.reader.js +107 -0
- package/dist/core/parser/tokenizer/readers/symbol.reader.js.map +1 -0
- package/dist/core/parser/tokenizer/readers/whitespace.reader.d.ts +12 -0
- package/dist/core/parser/tokenizer/readers/whitespace.reader.d.ts.map +1 -0
- package/dist/core/parser/tokenizer/readers/whitespace.reader.js +20 -0
- package/dist/core/parser/tokenizer/readers/whitespace.reader.js.map +1 -0
- package/dist/core/parser/tokenizer/scanner.d.ts +74 -0
- package/dist/core/parser/tokenizer/scanner.d.ts.map +1 -0
- package/dist/core/parser/tokenizer/scanner.js +137 -0
- package/dist/core/parser/tokenizer/scanner.js.map +1 -0
- package/dist/core/parser/tokenizer/types.d.ts +55 -0
- package/dist/core/parser/tokenizer/types.d.ts.map +1 -0
- package/dist/core/parser/tokenizer/types.js +3 -0
- package/dist/core/parser/tokenizer/types.js.map +1 -0
- package/dist/core/parser/types.d.ts +83 -0
- package/dist/core/parser/types.d.ts.map +1 -0
- package/dist/core/parser/types.js +3 -0
- package/dist/core/parser/types.js.map +1 -0
- package/dist/core/refraction/index.d.ts +5 -0
- package/dist/core/refraction/index.d.ts.map +1 -0
- package/dist/core/refraction/index.js +9 -0
- package/dist/core/refraction/index.js.map +1 -0
- package/dist/core/refraction/refraction.d.ts +28 -0
- package/dist/core/refraction/refraction.d.ts.map +1 -0
- package/dist/core/refraction/refraction.js +62 -0
- package/dist/core/refraction/refraction.js.map +1 -0
- package/dist/core/resolution/conflict-resolver.d.ts +12 -0
- package/dist/core/resolution/conflict-resolver.d.ts.map +1 -0
- package/dist/core/resolution/conflict-resolver.js +57 -0
- package/dist/core/resolution/conflict-resolver.js.map +1 -0
- package/dist/core/resolution/index.d.ts +5 -0
- package/dist/core/resolution/index.d.ts.map +1 -0
- package/dist/core/resolution/index.js +10 -0
- package/dist/core/resolution/index.js.map +1 -0
- package/dist/core/shapes/index.d.ts +5 -0
- package/dist/core/shapes/index.d.ts.map +1 -0
- package/dist/core/shapes/index.js +9 -0
- package/dist/core/shapes/index.js.map +1 -0
- package/dist/core/shapes/shape.normalizer.d.ts +6 -0
- package/dist/core/shapes/shape.normalizer.d.ts.map +1 -0
- package/dist/core/shapes/shape.normalizer.js +61 -0
- package/dist/core/shapes/shape.normalizer.js.map +1 -0
- package/dist/core/types/condition.d.ts +87 -0
- package/dist/core/types/condition.d.ts.map +1 -0
- package/dist/core/types/condition.js +6 -0
- package/dist/core/types/condition.js.map +1 -0
- package/dist/core/types/fact.d.ts +23 -0
- package/dist/core/types/fact.d.ts.map +1 -0
- package/dist/core/types/fact.js +6 -0
- package/dist/core/types/fact.js.map +1 -0
- package/dist/core/types/index.d.ts +8 -0
- package/dist/core/types/index.d.ts.map +1 -0
- package/dist/core/types/index.js +6 -0
- package/dist/core/types/index.js.map +1 -0
- package/dist/core/types/rule.d.ts +72 -0
- package/dist/core/types/rule.d.ts.map +1 -0
- package/dist/core/types/rule.js +8 -0
- package/dist/core/types/rule.js.map +1 -0
- package/dist/core/types/schema.d.ts +16 -0
- package/dist/core/types/schema.d.ts.map +1 -0
- package/dist/core/types/schema.js +6 -0
- package/dist/core/types/schema.js.map +1 -0
- package/dist/engines/backward/compiler.d.ts +7 -0
- package/dist/engines/backward/compiler.d.ts.map +1 -0
- package/dist/engines/backward/compiler.js +94 -0
- package/dist/engines/backward/compiler.js.map +1 -0
- package/dist/engines/backward/engine.d.ts +54 -0
- package/dist/engines/backward/engine.d.ts.map +1 -0
- package/dist/engines/backward/engine.js +96 -0
- package/dist/engines/backward/engine.js.map +1 -0
- package/dist/engines/backward/index.d.ts +12 -0
- package/dist/engines/backward/index.d.ts.map +1 -0
- package/dist/engines/backward/index.js +22 -0
- package/dist/engines/backward/index.js.map +1 -0
- package/dist/engines/backward/strategy.d.ts +37 -0
- package/dist/engines/backward/strategy.d.ts.map +1 -0
- package/dist/engines/backward/strategy.js +161 -0
- package/dist/engines/backward/strategy.js.map +1 -0
- package/dist/engines/backward/types.d.ts +97 -0
- package/dist/engines/backward/types.d.ts.map +1 -0
- package/dist/engines/backward/types.js +6 -0
- package/dist/engines/backward/types.js.map +1 -0
- package/dist/engines/bayesian/compiler.d.ts +22 -0
- package/dist/engines/bayesian/compiler.d.ts.map +1 -0
- package/dist/engines/bayesian/compiler.js +308 -0
- package/dist/engines/bayesian/compiler.js.map +1 -0
- package/dist/engines/bayesian/engine.d.ts +53 -0
- package/dist/engines/bayesian/engine.d.ts.map +1 -0
- package/dist/engines/bayesian/engine.js +95 -0
- package/dist/engines/bayesian/engine.js.map +1 -0
- package/dist/engines/bayesian/index.d.ts +11 -0
- package/dist/engines/bayesian/index.d.ts.map +1 -0
- package/dist/engines/bayesian/index.js +26 -0
- package/dist/engines/bayesian/index.js.map +1 -0
- package/dist/engines/bayesian/strategy.d.ts +13 -0
- package/dist/engines/bayesian/strategy.d.ts.map +1 -0
- package/dist/engines/bayesian/strategy.js +213 -0
- package/dist/engines/bayesian/strategy.js.map +1 -0
- package/dist/engines/bayesian/types.d.ts +145 -0
- package/dist/engines/bayesian/types.d.ts.map +1 -0
- package/dist/engines/bayesian/types.js +25 -0
- package/dist/engines/bayesian/types.js.map +1 -0
- package/dist/engines/constraint/compiler.d.ts +9 -0
- package/dist/engines/constraint/compiler.d.ts.map +1 -0
- package/dist/engines/constraint/compiler.js +188 -0
- package/dist/engines/constraint/compiler.js.map +1 -0
- package/dist/engines/constraint/engine.d.ts +95 -0
- package/dist/engines/constraint/engine.d.ts.map +1 -0
- package/dist/engines/constraint/engine.js +144 -0
- package/dist/engines/constraint/engine.js.map +1 -0
- package/dist/engines/constraint/index.d.ts +11 -0
- package/dist/engines/constraint/index.d.ts.map +1 -0
- package/dist/engines/constraint/index.js +36 -0
- package/dist/engines/constraint/index.js.map +1 -0
- package/dist/engines/constraint/strategy.d.ts +22 -0
- package/dist/engines/constraint/strategy.d.ts.map +1 -0
- package/dist/engines/constraint/strategy.js +529 -0
- package/dist/engines/constraint/strategy.js.map +1 -0
- package/dist/engines/constraint/types.d.ts +332 -0
- package/dist/engines/constraint/types.d.ts.map +1 -0
- package/dist/engines/constraint/types.js +26 -0
- package/dist/engines/constraint/types.js.map +1 -0
- package/dist/engines/defeasible/compiler.d.ts +34 -0
- package/dist/engines/defeasible/compiler.d.ts.map +1 -0
- package/dist/engines/defeasible/compiler.js +251 -0
- package/dist/engines/defeasible/compiler.js.map +1 -0
- package/dist/engines/defeasible/engine.d.ts +73 -0
- package/dist/engines/defeasible/engine.d.ts.map +1 -0
- package/dist/engines/defeasible/engine.js +115 -0
- package/dist/engines/defeasible/engine.js.map +1 -0
- package/dist/engines/defeasible/index.d.ts +10 -0
- package/dist/engines/defeasible/index.d.ts.map +1 -0
- package/dist/engines/defeasible/index.js +20 -0
- package/dist/engines/defeasible/index.js.map +1 -0
- package/dist/engines/defeasible/strategy.d.ts +25 -0
- package/dist/engines/defeasible/strategy.d.ts.map +1 -0
- package/dist/engines/defeasible/strategy.js +459 -0
- package/dist/engines/defeasible/strategy.js.map +1 -0
- package/dist/engines/defeasible/types.d.ts +316 -0
- package/dist/engines/defeasible/types.d.ts.map +1 -0
- package/dist/engines/defeasible/types.js +35 -0
- package/dist/engines/defeasible/types.js.map +1 -0
- package/dist/engines/expert/compiler.d.ts +16 -0
- package/dist/engines/expert/compiler.d.ts.map +1 -0
- package/dist/engines/expert/compiler.js +205 -0
- package/dist/engines/expert/compiler.js.map +1 -0
- package/dist/engines/expert/doc/expert-loan-approval.d.ts +17 -0
- package/dist/engines/expert/doc/expert-loan-approval.d.ts.map +1 -0
- package/dist/engines/expert/doc/expert-loan-approval.js +430 -0
- package/dist/engines/expert/doc/expert-loan-approval.js.map +1 -0
- package/dist/engines/expert/engine.d.ts +159 -0
- package/dist/engines/expert/engine.d.ts.map +1 -0
- package/dist/engines/expert/engine.js +201 -0
- package/dist/engines/expert/engine.js.map +1 -0
- package/dist/engines/expert/formatter.d.ts +56 -0
- package/dist/engines/expert/formatter.d.ts.map +1 -0
- package/dist/engines/expert/formatter.js +182 -0
- package/dist/engines/expert/formatter.js.map +1 -0
- package/dist/engines/expert/index.d.ts +37 -0
- package/dist/engines/expert/index.d.ts.map +1 -0
- package/dist/engines/expert/index.js +59 -0
- package/dist/engines/expert/index.js.map +1 -0
- package/dist/engines/expert/interpolation.d.ts +83 -0
- package/dist/engines/expert/interpolation.d.ts.map +1 -0
- package/dist/engines/expert/interpolation.js +218 -0
- package/dist/engines/expert/interpolation.js.map +1 -0
- package/dist/engines/expert/strategy.d.ts +13 -0
- package/dist/engines/expert/strategy.d.ts.map +1 -0
- package/dist/engines/expert/strategy.js +281 -0
- package/dist/engines/expert/strategy.js.map +1 -0
- package/dist/engines/expert/types.d.ts +346 -0
- package/dist/engines/expert/types.d.ts.map +1 -0
- package/dist/engines/expert/types.js +30 -0
- package/dist/engines/expert/types.js.map +1 -0
- package/dist/engines/forward/compiler.d.ts +7 -0
- package/dist/engines/forward/compiler.d.ts.map +1 -0
- package/dist/engines/forward/compiler.js +160 -0
- package/dist/engines/forward/compiler.js.map +1 -0
- package/dist/engines/forward/engine.d.ts +69 -0
- package/dist/engines/forward/engine.d.ts.map +1 -0
- package/dist/engines/forward/engine.js +111 -0
- package/dist/engines/forward/engine.js.map +1 -0
- package/dist/engines/forward/index.d.ts +12 -0
- package/dist/engines/forward/index.d.ts.map +1 -0
- package/dist/engines/forward/index.js +22 -0
- package/dist/engines/forward/index.js.map +1 -0
- package/dist/engines/forward/strategy.d.ts +15 -0
- package/dist/engines/forward/strategy.d.ts.map +1 -0
- package/dist/engines/forward/strategy.js +139 -0
- package/dist/engines/forward/strategy.js.map +1 -0
- package/dist/engines/forward/types.d.ts +152 -0
- package/dist/engines/forward/types.d.ts.map +1 -0
- package/dist/engines/forward/types.js +6 -0
- package/dist/engines/forward/types.js.map +1 -0
- package/dist/engines/fuzzy/compiler.d.ts +29 -0
- package/dist/engines/fuzzy/compiler.d.ts.map +1 -0
- package/dist/engines/fuzzy/compiler.js +136 -0
- package/dist/engines/fuzzy/compiler.js.map +1 -0
- package/dist/engines/fuzzy/defuzzify.d.ts +7 -0
- package/dist/engines/fuzzy/defuzzify.d.ts.map +1 -0
- package/dist/engines/fuzzy/defuzzify.js +34 -0
- package/dist/engines/fuzzy/defuzzify.js.map +1 -0
- package/dist/engines/fuzzy/engine.d.ts +55 -0
- package/dist/engines/fuzzy/engine.d.ts.map +1 -0
- package/dist/engines/fuzzy/engine.js +96 -0
- package/dist/engines/fuzzy/engine.js.map +1 -0
- package/dist/engines/fuzzy/fuzzy.defuzzify.d.ts +116 -0
- package/dist/engines/fuzzy/fuzzy.defuzzify.d.ts.map +1 -0
- package/dist/engines/fuzzy/fuzzy.defuzzify.js +454 -0
- package/dist/engines/fuzzy/fuzzy.defuzzify.js.map +1 -0
- package/dist/engines/fuzzy/fuzzy.membership.d.ts +162 -0
- package/dist/engines/fuzzy/fuzzy.membership.d.ts.map +1 -0
- package/dist/engines/fuzzy/fuzzy.membership.js +492 -0
- package/dist/engines/fuzzy/fuzzy.membership.js.map +1 -0
- package/dist/engines/fuzzy/fuzzy.types.d.ts +213 -0
- package/dist/engines/fuzzy/fuzzy.types.d.ts.map +1 -0
- package/dist/engines/fuzzy/fuzzy.types.js +71 -0
- package/dist/engines/fuzzy/fuzzy.types.js.map +1 -0
- package/dist/engines/fuzzy/index.d.ts +16 -0
- package/dist/engines/fuzzy/index.d.ts.map +1 -0
- package/dist/engines/fuzzy/index.js +46 -0
- package/dist/engines/fuzzy/index.js.map +1 -0
- package/dist/engines/fuzzy/membership.d.ts +7 -0
- package/dist/engines/fuzzy/membership.d.ts.map +1 -0
- package/dist/engines/fuzzy/membership.js +19 -0
- package/dist/engines/fuzzy/membership.js.map +1 -0
- package/dist/engines/fuzzy/strategy.d.ts +59 -0
- package/dist/engines/fuzzy/strategy.d.ts.map +1 -0
- package/dist/engines/fuzzy/strategy.js +255 -0
- package/dist/engines/fuzzy/strategy.js.map +1 -0
- package/dist/engines/fuzzy/types.d.ts +24 -0
- package/dist/engines/fuzzy/types.d.ts.map +1 -0
- package/dist/engines/fuzzy/types.js +17 -0
- package/dist/engines/fuzzy/types.js.map +1 -0
- package/dist/engines/index.d.ts +20 -0
- package/dist/engines/index.d.ts.map +1 -0
- package/dist/engines/index.js +49 -0
- package/dist/engines/index.js.map +1 -0
- package/dist/engines/monte-carlo/compiler.d.ts +12 -0
- package/dist/engines/monte-carlo/compiler.d.ts.map +1 -0
- package/dist/engines/monte-carlo/compiler.js +378 -0
- package/dist/engines/monte-carlo/compiler.js.map +1 -0
- package/dist/engines/monte-carlo/engine.d.ts +62 -0
- package/dist/engines/monte-carlo/engine.d.ts.map +1 -0
- package/dist/engines/monte-carlo/engine.js +106 -0
- package/dist/engines/monte-carlo/engine.js.map +1 -0
- package/dist/engines/monte-carlo/index.d.ts +12 -0
- package/dist/engines/monte-carlo/index.d.ts.map +1 -0
- package/dist/engines/monte-carlo/index.js +21 -0
- package/dist/engines/monte-carlo/index.js.map +1 -0
- package/dist/engines/monte-carlo/sobol.d.ts +39 -0
- package/dist/engines/monte-carlo/sobol.d.ts.map +1 -0
- package/dist/engines/monte-carlo/sobol.js +267 -0
- package/dist/engines/monte-carlo/sobol.js.map +1 -0
- package/dist/engines/monte-carlo/strategy.d.ts +20 -0
- package/dist/engines/monte-carlo/strategy.d.ts.map +1 -0
- package/dist/engines/monte-carlo/strategy.js +443 -0
- package/dist/engines/monte-carlo/strategy.js.map +1 -0
- package/dist/engines/monte-carlo/types.d.ts +230 -0
- package/dist/engines/monte-carlo/types.d.ts.map +1 -0
- package/dist/engines/monte-carlo/types.js +40 -0
- package/dist/engines/monte-carlo/types.js.map +1 -0
- package/dist/engines/pricing/calculator.d.ts +100 -0
- package/dist/engines/pricing/calculator.d.ts.map +1 -0
- package/dist/engines/pricing/calculator.js +210 -0
- package/dist/engines/pricing/calculator.js.map +1 -0
- package/dist/engines/pricing/compiler.d.ts +18 -0
- package/dist/engines/pricing/compiler.d.ts.map +1 -0
- package/dist/engines/pricing/compiler.js +275 -0
- package/dist/engines/pricing/compiler.js.map +1 -0
- package/dist/engines/pricing/engine.d.ts +102 -0
- package/dist/engines/pricing/engine.d.ts.map +1 -0
- package/dist/engines/pricing/engine.js +131 -0
- package/dist/engines/pricing/engine.js.map +1 -0
- package/dist/engines/pricing/index.d.ts +66 -0
- package/dist/engines/pricing/index.d.ts.map +1 -0
- package/dist/engines/pricing/index.js +89 -0
- package/dist/engines/pricing/index.js.map +1 -0
- package/dist/engines/pricing/strategy.d.ts +22 -0
- package/dist/engines/pricing/strategy.d.ts.map +1 -0
- package/dist/engines/pricing/strategy.js +517 -0
- package/dist/engines/pricing/strategy.js.map +1 -0
- package/dist/engines/pricing/types.d.ts +620 -0
- package/dist/engines/pricing/types.d.ts.map +1 -0
- package/dist/engines/pricing/types.js +68 -0
- package/dist/engines/pricing/types.js.map +1 -0
- package/dist/engines/scoring/compiler.d.ts +7 -0
- package/dist/engines/scoring/compiler.d.ts.map +1 -0
- package/dist/engines/scoring/compiler.js +113 -0
- package/dist/engines/scoring/compiler.js.map +1 -0
- package/dist/engines/scoring/engine.d.ts +52 -0
- package/dist/engines/scoring/engine.d.ts.map +1 -0
- package/dist/engines/scoring/engine.js +94 -0
- package/dist/engines/scoring/engine.js.map +1 -0
- package/dist/engines/scoring/index.d.ts +11 -0
- package/dist/engines/scoring/index.d.ts.map +1 -0
- package/dist/engines/scoring/index.js +21 -0
- package/dist/engines/scoring/index.js.map +1 -0
- package/dist/engines/scoring/strategy.d.ts +13 -0
- package/dist/engines/scoring/strategy.d.ts.map +1 -0
- package/dist/engines/scoring/strategy.js +158 -0
- package/dist/engines/scoring/strategy.js.map +1 -0
- package/dist/engines/scoring/types.d.ts +159 -0
- package/dist/engines/scoring/types.d.ts.map +1 -0
- package/dist/engines/scoring/types.js +6 -0
- package/dist/engines/scoring/types.js.map +1 -0
- package/dist/engines/sequential/compiler.d.ts +7 -0
- package/dist/engines/sequential/compiler.d.ts.map +1 -0
- package/dist/engines/sequential/compiler.js +156 -0
- package/dist/engines/sequential/compiler.js.map +1 -0
- package/dist/engines/sequential/engine.d.ts +55 -0
- package/dist/engines/sequential/engine.d.ts.map +1 -0
- package/dist/engines/sequential/engine.js +97 -0
- package/dist/engines/sequential/engine.js.map +1 -0
- package/dist/engines/sequential/index.d.ts +11 -0
- package/dist/engines/sequential/index.d.ts.map +1 -0
- package/dist/engines/sequential/index.js +21 -0
- package/dist/engines/sequential/index.js.map +1 -0
- package/dist/engines/sequential/strategy.d.ts +13 -0
- package/dist/engines/sequential/strategy.d.ts.map +1 -0
- package/dist/engines/sequential/strategy.js +96 -0
- package/dist/engines/sequential/strategy.js.map +1 -0
- package/dist/engines/sequential/types.d.ts +65 -0
- package/dist/engines/sequential/types.d.ts.map +1 -0
- package/dist/engines/sequential/types.js +6 -0
- package/dist/engines/sequential/types.js.map +1 -0
- package/dist/engines/state-machine/compiler.d.ts +12 -0
- package/dist/engines/state-machine/compiler.d.ts.map +1 -0
- package/dist/engines/state-machine/compiler.js +205 -0
- package/dist/engines/state-machine/compiler.js.map +1 -0
- package/dist/engines/state-machine/engine.d.ts +83 -0
- package/dist/engines/state-machine/engine.d.ts.map +1 -0
- package/dist/engines/state-machine/engine.js +107 -0
- package/dist/engines/state-machine/engine.js.map +1 -0
- package/dist/engines/state-machine/index.d.ts +11 -0
- package/dist/engines/state-machine/index.d.ts.map +1 -0
- package/dist/engines/state-machine/index.js +21 -0
- package/dist/engines/state-machine/index.js.map +1 -0
- package/dist/engines/state-machine/strategy.d.ts +19 -0
- package/dist/engines/state-machine/strategy.d.ts.map +1 -0
- package/dist/engines/state-machine/strategy.js +535 -0
- package/dist/engines/state-machine/strategy.js.map +1 -0
- package/dist/engines/state-machine/types.d.ts +229 -0
- package/dist/engines/state-machine/types.d.ts.map +1 -0
- package/dist/engines/state-machine/types.js +9 -0
- package/dist/engines/state-machine/types.js.map +1 -0
- package/dist/engines/utility/compiler.d.ts +7 -0
- package/dist/engines/utility/compiler.d.ts.map +1 -0
- package/dist/engines/utility/compiler.js +170 -0
- package/dist/engines/utility/compiler.js.map +1 -0
- package/dist/engines/utility/engine.d.ts +108 -0
- package/dist/engines/utility/engine.d.ts.map +1 -0
- package/dist/engines/utility/engine.js +152 -0
- package/dist/engines/utility/engine.js.map +1 -0
- package/dist/engines/utility/index.d.ts +17 -0
- package/dist/engines/utility/index.d.ts.map +1 -0
- package/dist/engines/utility/index.js +30 -0
- package/dist/engines/utility/index.js.map +1 -0
- package/dist/engines/utility/strategy.d.ts +30 -0
- package/dist/engines/utility/strategy.d.ts.map +1 -0
- package/dist/engines/utility/strategy.js +248 -0
- package/dist/engines/utility/strategy.js.map +1 -0
- package/dist/engines/utility/types.d.ts +176 -0
- package/dist/engines/utility/types.d.ts.map +1 -0
- package/dist/engines/utility/types.js +35 -0
- package/dist/engines/utility/types.js.map +1 -0
- package/dist/functions/index.d.ts +9 -0
- package/dist/functions/index.d.ts.map +1 -0
- package/dist/functions/index.js +27 -0
- package/dist/functions/index.js.map +1 -0
- package/dist/functions/phonetic/caverphone2.d.ts +36 -0
- package/dist/functions/phonetic/caverphone2.d.ts.map +1 -0
- package/dist/functions/phonetic/caverphone2.js +151 -0
- package/dist/functions/phonetic/caverphone2.js.map +1 -0
- package/dist/functions/phonetic/index.d.ts +9 -0
- package/dist/functions/phonetic/index.d.ts.map +1 -0
- package/dist/functions/phonetic/index.js +18 -0
- package/dist/functions/phonetic/index.js.map +1 -0
- package/dist/functions/phonetic/nysiis.d.ts +38 -0
- package/dist/functions/phonetic/nysiis.d.ts.map +1 -0
- package/dist/functions/phonetic/nysiis.js +162 -0
- package/dist/functions/phonetic/nysiis.js.map +1 -0
- package/dist/functions/phonetic/soundex.d.ts +48 -0
- package/dist/functions/phonetic/soundex.d.ts.map +1 -0
- package/dist/functions/phonetic/soundex.js +103 -0
- package/dist/functions/phonetic/soundex.js.map +1 -0
- package/dist/functions/similarity/cosine-similarity.d.ts +31 -0
- package/dist/functions/similarity/cosine-similarity.d.ts.map +1 -0
- package/dist/functions/similarity/cosine-similarity.js +75 -0
- package/dist/functions/similarity/cosine-similarity.js.map +1 -0
- package/dist/functions/similarity/index.d.ts +7 -0
- package/dist/functions/similarity/index.d.ts.map +1 -0
- package/dist/functions/similarity/index.js +11 -0
- package/dist/functions/similarity/index.js.map +1 -0
- package/dist/index.d.ts +56 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +172 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/index.d.ts +15 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +17 -0
- package/dist/runtime/index.js.map +1 -0
- package/package.json +41 -0
- package/src/core/compilers/condition.compiler.ts +176 -0
- package/src/core/compilers/index.ts +9 -0
- package/src/core/engine/engine.interface.ts +49 -0
- package/src/core/engine/index.ts +5 -0
- package/src/core/evaluation/condition.evaluator.ts +185 -0
- package/src/core/evaluation/index.ts +20 -0
- package/src/core/evaluation/temporal.ts +222 -0
- package/src/core/index.ts +75 -0
- package/src/core/matching/activation.types.ts +12 -0
- package/src/core/matching/index.ts +6 -0
- package/src/core/matching/matcher.ts +127 -0
- package/src/core/memory/index.ts +6 -0
- package/src/core/memory/working-memory.interface.ts +95 -0
- package/src/core/memory/working-memory.ts +123 -0
- package/src/core/operators/adapters/context.adapter.ts +53 -0
- package/src/core/operators/adapters/index.ts +25 -0
- package/src/core/operators/adapters/operator.adapter.ts +173 -0
- package/src/core/operators/arithmetic/add.ts +44 -0
- package/src/core/operators/arithmetic/average.ts +25 -0
- package/src/core/operators/arithmetic/divide.ts +42 -0
- package/src/core/operators/arithmetic/index.ts +42 -0
- package/src/core/operators/arithmetic/min-max.ts +70 -0
- package/src/core/operators/arithmetic/multiply.ts +40 -0
- package/src/core/operators/arithmetic/number-checks.ts +123 -0
- package/src/core/operators/arithmetic/power.ts +40 -0
- package/src/core/operators/arithmetic/rounding.ts +83 -0
- package/src/core/operators/arithmetic/subtract.ts +41 -0
- package/src/core/operators/array/contains.ts +85 -0
- package/src/core/operators/array/index.ts +18 -0
- package/src/core/operators/comparison/approximately-equals.ts +45 -0
- package/src/core/operators/comparison/equals.ts +49 -0
- package/src/core/operators/comparison/greater-than.ts +53 -0
- package/src/core/operators/comparison/index.ts +33 -0
- package/src/core/operators/comparison/less-than.ts +53 -0
- package/src/core/operators/comparison/not-equals.ts +49 -0
- package/src/core/operators/comparison/nullish.ts +155 -0
- package/src/core/operators/date/arithmetic.ts +246 -0
- package/src/core/operators/date/boundaries.ts +155 -0
- package/src/core/operators/date/checks.ts +116 -0
- package/src/core/operators/date/comparisons.ts +124 -0
- package/src/core/operators/date/constants.ts +102 -0
- package/src/core/operators/date/differences.ts +150 -0
- package/src/core/operators/date/extraction.ts +145 -0
- package/src/core/operators/date/generators.ts +232 -0
- package/src/core/operators/date/index.ts +63 -0
- package/src/core/operators/date/range.ts +39 -0
- package/src/core/operators/evaluator.ts +245 -0
- package/src/core/operators/examples.ts +233 -0
- package/src/core/operators/index.ts +135 -0
- package/src/core/operators/logical/and.ts +25 -0
- package/src/core/operators/logical/if.ts +31 -0
- package/src/core/operators/logical/index.ts +30 -0
- package/src/core/operators/logical/not.ts +25 -0
- package/src/core/operators/logical/or.ts +25 -0
- package/src/core/operators/logical/xor.ts +40 -0
- package/src/core/operators/operator.ts +338 -0
- package/src/core/operators/phonetic/caverphone.ts +40 -0
- package/src/core/operators/phonetic/index.ts +24 -0
- package/src/core/operators/phonetic/nysiis.ts +40 -0
- package/src/core/operators/phonetic/soundex.ts +41 -0
- package/src/core/operators/registry.ts +254 -0
- package/src/core/operators/similarity/cosine.ts +27 -0
- package/src/core/operators/similarity/index.ts +18 -0
- package/src/core/operators/string/contains.ts +42 -0
- package/src/core/operators/string/empty.ts +55 -0
- package/src/core/operators/string/ends-with.ts +40 -0
- package/src/core/operators/string/index.ts +30 -0
- package/src/core/operators/string/regex.ts +42 -0
- package/src/core/operators/string/starts-with.ts +40 -0
- package/src/core/operators/transform/case.ts +74 -0
- package/src/core/operators/transform/concat.ts +54 -0
- package/src/core/operators/transform/index.ts +36 -0
- package/src/core/operators/transform/length.ts +37 -0
- package/src/core/operators/transform/pad.ts +40 -0
- package/src/core/operators/transform/replace.ts +38 -0
- package/src/core/operators/transform/substring.ts +69 -0
- package/src/core/operators/transform/trim.ts +54 -0
- package/src/core/operators/types.ts +140 -0
- package/src/core/parser/errors.ts +77 -0
- package/src/core/parser/index.ts +133 -0
- package/src/core/parser/operators/aliases.ts +358 -0
- package/src/core/parser/operators/index.ts +35 -0
- package/src/core/parser/operators/operator-table.ts +107 -0
- package/src/core/parser/operators/precedence.ts +94 -0
- package/src/core/parser/parser/expression.parser.ts +308 -0
- package/src/core/parser/parser/function.parser.ts +113 -0
- package/src/core/parser/parser/index.ts +20 -0
- package/src/core/parser/parser/primary.parser.ts +149 -0
- package/src/core/parser/parser/types.ts +51 -0
- package/src/core/parser/tokenizer/index.ts +85 -0
- package/src/core/parser/tokenizer/readers/identifier.reader.ts +118 -0
- package/src/core/parser/tokenizer/readers/index.ts +20 -0
- package/src/core/parser/tokenizer/readers/number.reader.ts +132 -0
- package/src/core/parser/tokenizer/readers/property-ref.reader.ts +130 -0
- package/src/core/parser/tokenizer/readers/string.reader.ts +110 -0
- package/src/core/parser/tokenizer/readers/symbol.reader.ts +118 -0
- package/src/core/parser/tokenizer/readers/whitespace.reader.ts +18 -0
- package/src/core/parser/tokenizer/scanner.ts +137 -0
- package/src/core/parser/tokenizer/types.ts +63 -0
- package/src/core/parser/types.ts +102 -0
- package/src/core/refraction/index.ts +5 -0
- package/src/core/refraction/refraction.ts +71 -0
- package/src/core/resolution/conflict-resolver.ts +87 -0
- package/src/core/resolution/index.ts +10 -0
- package/src/core/shapes/index.ts +5 -0
- package/src/core/shapes/shape.normalizer.ts +68 -0
- package/src/core/types/condition.ts +185 -0
- package/src/core/types/fact.ts +26 -0
- package/src/core/types/index.ts +55 -0
- package/src/core/types/rule.ts +108 -0
- package/src/core/types/schema.ts +18 -0
- package/src/engines/backward/compiler.ts +118 -0
- package/src/engines/backward/engine.ts +123 -0
- package/src/engines/backward/index.ts +39 -0
- package/src/engines/backward/strategy.ts +229 -0
- package/src/engines/backward/types.ts +125 -0
- package/src/engines/bayesian/compiler.ts +402 -0
- package/src/engines/bayesian/engine.ts +122 -0
- package/src/engines/bayesian/index.ts +50 -0
- package/src/engines/bayesian/strategy.ts +273 -0
- package/src/engines/bayesian/types.ts +219 -0
- package/src/engines/constraint/compiler.ts +267 -0
- package/src/engines/constraint/engine.ts +175 -0
- package/src/engines/constraint/index.ts +18 -0
- package/src/engines/constraint/strategy.ts +725 -0
- package/src/engines/constraint/types.ts +415 -0
- package/src/engines/defeasible/compiler.ts +306 -0
- package/src/engines/defeasible/engine.ts +142 -0
- package/src/engines/defeasible/index.ts +48 -0
- package/src/engines/defeasible/strategy.ts +573 -0
- package/src/engines/defeasible/types.ts +409 -0
- package/src/engines/expert/README.md +343 -0
- package/src/engines/expert/compiler.ts +277 -0
- package/src/engines/expert/doc/expert-loan-approval.ts +458 -0
- package/src/engines/expert/engine.ts +228 -0
- package/src/engines/expert/formatter.ts +242 -0
- package/src/engines/expert/index.ts +85 -0
- package/src/engines/expert/interpolation.ts +278 -0
- package/src/engines/expert/strategy.ts +413 -0
- package/src/engines/expert/types.ts +442 -0
- package/src/engines/forward/compiler.ts +205 -0
- package/src/engines/forward/engine.ts +138 -0
- package/src/engines/forward/index.ts +51 -0
- package/src/engines/forward/strategy.ts +197 -0
- package/src/engines/forward/types.ts +205 -0
- package/src/engines/fuzzy/compiler.ts +182 -0
- package/src/engines/fuzzy/defuzzify.ts +39 -0
- package/src/engines/fuzzy/engine.ts +124 -0
- package/src/engines/fuzzy/fuzzy.defuzzify.ts +564 -0
- package/src/engines/fuzzy/fuzzy.membership.ts +604 -0
- package/src/engines/fuzzy/fuzzy.types.ts +357 -0
- package/src/engines/fuzzy/index.ts +38 -0
- package/src/engines/fuzzy/membership.ts +22 -0
- package/src/engines/fuzzy/strategy.ts +373 -0
- package/src/engines/fuzzy/types.ts +84 -0
- package/src/engines/index.ts +45 -0
- package/src/engines/monte-carlo/compiler.ts +459 -0
- package/src/engines/monte-carlo/engine.ts +134 -0
- package/src/engines/monte-carlo/index.ts +44 -0
- package/src/engines/monte-carlo/strategy.ts +565 -0
- package/src/engines/monte-carlo/types.ts +320 -0
- package/src/engines/pricing/calculator.ts +272 -0
- package/src/engines/pricing/compiler.ts +381 -0
- package/src/engines/pricing/engine.ts +152 -0
- package/src/engines/pricing/index.ts +156 -0
- package/src/engines/pricing/strategy.ts +736 -0
- package/src/engines/pricing/types.ts +782 -0
- package/src/engines/scoring/compiler.ts +139 -0
- package/src/engines/scoring/engine.ts +121 -0
- package/src/engines/scoring/index.ts +46 -0
- package/src/engines/scoring/strategy.ts +190 -0
- package/src/engines/scoring/types.ts +201 -0
- package/src/engines/sequential/compiler.ts +201 -0
- package/src/engines/sequential/engine.ts +124 -0
- package/src/engines/sequential/index.ts +38 -0
- package/src/engines/sequential/strategy.ts +125 -0
- package/src/engines/sequential/types.ts +101 -0
- package/src/engines/state-machine/compiler.ts +266 -0
- package/src/engines/state-machine/engine.ts +128 -0
- package/src/engines/state-machine/index.ts +45 -0
- package/src/engines/state-machine/strategy.ts +634 -0
- package/src/engines/state-machine/types.ts +254 -0
- package/src/engines/utility/compiler.ts +208 -0
- package/src/engines/utility/engine.ts +200 -0
- package/src/engines/utility/index.ts +53 -0
- package/src/engines/utility/strategy.ts +315 -0
- package/src/engines/utility/types.ts +225 -0
- package/src/functions/README.md +63 -0
- package/src/functions/index.ts +12 -0
- package/src/functions/phonetic/caverphone2.ts +172 -0
- package/src/functions/phonetic/index.ts +9 -0
- package/src/functions/phonetic/nysiis.ts +164 -0
- package/src/functions/phonetic/soundex.ts +111 -0
- package/src/functions/similarity/cosine-similarity.ts +83 -0
- package/src/functions/similarity/index.ts +7 -0
- package/src/index.ts +362 -0
- package/src/runtime/index.ts +16 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { OperatorTable } from '../../types';
|
|
2
|
+
import type { ReaderResult, ScannerState } from '../types';
|
|
3
|
+
import { advanceBy, remainingInput } from '../scanner';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Symbol operators and punctuation that we recognize.
|
|
7
|
+
*
|
|
8
|
+
* Order matters! Longer symbols must come first so ">=" is
|
|
9
|
+
* matched before ">". We sort by length descending.
|
|
10
|
+
*
|
|
11
|
+
* Categories:
|
|
12
|
+
* - Comparison: ==, !=, >=, <=, >, <
|
|
13
|
+
* - Logical: &&, ||
|
|
14
|
+
* - Arithmetic: +, -, *, /, %
|
|
15
|
+
* - Punctuation: (, ), ,
|
|
16
|
+
* - Negation: !
|
|
17
|
+
*/
|
|
18
|
+
const PUNCTUATION = ['(', ')', ','] as const;
|
|
19
|
+
|
|
20
|
+
const SYMBOL_OPERATORS = [
|
|
21
|
+
// Two-character (must check first)
|
|
22
|
+
'==',
|
|
23
|
+
'!=',
|
|
24
|
+
'>=',
|
|
25
|
+
'<=',
|
|
26
|
+
'&&',
|
|
27
|
+
'||',
|
|
28
|
+
// Single-character
|
|
29
|
+
'>',
|
|
30
|
+
'<',
|
|
31
|
+
'+',
|
|
32
|
+
'-',
|
|
33
|
+
'*',
|
|
34
|
+
'/',
|
|
35
|
+
'%',
|
|
36
|
+
'!'
|
|
37
|
+
] as const;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Reads symbolic operators and punctuation.
|
|
41
|
+
*
|
|
42
|
+
* This reader handles:
|
|
43
|
+
* - Comparison symbols: >, >=, <, <=, ==, !=
|
|
44
|
+
* - Logical symbols: &&, ||, !
|
|
45
|
+
* - Arithmetic symbols: +, -, *, /, %
|
|
46
|
+
* - Punctuation: (, ), ,
|
|
47
|
+
*
|
|
48
|
+
* Important: Multi-character symbols (>=, <=, ==, !=, &&, ||)
|
|
49
|
+
* must be checked BEFORE their single-character prefixes.
|
|
50
|
+
*
|
|
51
|
+
* Examples:
|
|
52
|
+
* > → OPERATOR('>', canonical: 'greaterThan')
|
|
53
|
+
* >= → OPERATOR('>=', canonical: 'greaterThanOrEquals')
|
|
54
|
+
* ( → LPAREN('(')
|
|
55
|
+
* , → COMMA(',')
|
|
56
|
+
*/
|
|
57
|
+
export function readSymbol(
|
|
58
|
+
state: ScannerState,
|
|
59
|
+
operatorTable: OperatorTable
|
|
60
|
+
): ReaderResult | null {
|
|
61
|
+
const startPosition = state.position;
|
|
62
|
+
const remaining = remainingInput(state);
|
|
63
|
+
|
|
64
|
+
// Check punctuation first (these are not operators)
|
|
65
|
+
for (const punct of PUNCTUATION) {
|
|
66
|
+
if (remaining.startsWith(punct)) {
|
|
67
|
+
const tokenType =
|
|
68
|
+
punct === '('
|
|
69
|
+
? 'LPAREN'
|
|
70
|
+
: punct === ')'
|
|
71
|
+
? 'RPAREN'
|
|
72
|
+
: 'COMMA';
|
|
73
|
+
|
|
74
|
+
return {
|
|
75
|
+
token: {
|
|
76
|
+
type: tokenType,
|
|
77
|
+
value: punct,
|
|
78
|
+
position: startPosition
|
|
79
|
+
},
|
|
80
|
+
newState: advanceBy(state, punct.length)
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Check symbol operators (longer ones first)
|
|
86
|
+
for (const symbol of SYMBOL_OPERATORS) {
|
|
87
|
+
if (remaining.startsWith(symbol)) {
|
|
88
|
+
// Look up in operator table to get canonical name
|
|
89
|
+
const operatorInfo = operatorTable.get(symbol);
|
|
90
|
+
|
|
91
|
+
if (operatorInfo) {
|
|
92
|
+
return {
|
|
93
|
+
token: {
|
|
94
|
+
type: 'OPERATOR',
|
|
95
|
+
value: symbol,
|
|
96
|
+
canonical: operatorInfo.canonical,
|
|
97
|
+
position: startPosition
|
|
98
|
+
},
|
|
99
|
+
newState: advanceBy(state, symbol.length)
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Symbol exists but not in operator table
|
|
104
|
+
// Still return it as operator, parser will validate
|
|
105
|
+
return {
|
|
106
|
+
token: {
|
|
107
|
+
type: 'OPERATOR',
|
|
108
|
+
value: symbol,
|
|
109
|
+
position: startPosition
|
|
110
|
+
},
|
|
111
|
+
newState: advanceBy(state, symbol.length)
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Not a recognized symbol
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ScannerState } from '../types';
|
|
2
|
+
import { advance, isAtEnd, isWhitespace, peek } from '../scanner';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Skips whitespace characters (spaces, tabs, newlines).
|
|
6
|
+
*
|
|
7
|
+
* Unlike other readers, this doesn't return a token.
|
|
8
|
+
* It simply advances the scanner past any whitespace.
|
|
9
|
+
*
|
|
10
|
+
* Whitespace is semantically insignificant in expressions,
|
|
11
|
+
* so we just consume it and move on.
|
|
12
|
+
*/
|
|
13
|
+
export function skipWhitespace(state: ScannerState): ScannerState {
|
|
14
|
+
while (!isAtEnd(state) && isWhitespace(peek(state))) {
|
|
15
|
+
state = advance(state);
|
|
16
|
+
}
|
|
17
|
+
return state;
|
|
18
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import type { ScannerState } from './types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Low-level character scanning utilities.
|
|
5
|
+
*
|
|
6
|
+
* These functions provide the basic operations for moving through
|
|
7
|
+
* the input string. All functions are pure - they don't mutate
|
|
8
|
+
* state but instead return new values.
|
|
9
|
+
*
|
|
10
|
+
* Usage pattern:
|
|
11
|
+
* let state = createScanner("$age > 18");
|
|
12
|
+
* while (!isAtEnd(state)) {
|
|
13
|
+
* const char = peek(state);
|
|
14
|
+
* // process char...
|
|
15
|
+
* state = advance(state);
|
|
16
|
+
* }
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Creates a new scanner state starting at position 0.
|
|
21
|
+
*/
|
|
22
|
+
export function createScanner(input: string): ScannerState {
|
|
23
|
+
return {
|
|
24
|
+
input,
|
|
25
|
+
position: 0
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Returns the character at the current position without advancing.
|
|
31
|
+
* Returns empty string if at end of input.
|
|
32
|
+
*/
|
|
33
|
+
export function peek(state: ScannerState): string {
|
|
34
|
+
if (isAtEnd(state)) {
|
|
35
|
+
return '';
|
|
36
|
+
}
|
|
37
|
+
return state.input[state.position];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Returns the character n positions ahead of current position.
|
|
42
|
+
* Returns empty string if that position is past end of input.
|
|
43
|
+
*
|
|
44
|
+
* Useful for lookahead when deciding between tokens like '>' vs '>='.
|
|
45
|
+
*/
|
|
46
|
+
export function peekAhead(state: ScannerState, n: number): string {
|
|
47
|
+
const position = state.position + n;
|
|
48
|
+
if (position >= state.input.length) {
|
|
49
|
+
return '';
|
|
50
|
+
}
|
|
51
|
+
return state.input[position];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Returns a new state with position advanced by 1.
|
|
56
|
+
* Does not advance past the end of input.
|
|
57
|
+
*/
|
|
58
|
+
export function advance(state: ScannerState): ScannerState {
|
|
59
|
+
if (isAtEnd(state)) {
|
|
60
|
+
return state;
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
...state,
|
|
64
|
+
position: state.position + 1
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Returns a new state with position advanced by n characters.
|
|
70
|
+
* Will not advance past the end of input.
|
|
71
|
+
*/
|
|
72
|
+
export function advanceBy(state: ScannerState, n: number): ScannerState {
|
|
73
|
+
const newPosition = Math.min(state.position + n, state.input.length);
|
|
74
|
+
return {
|
|
75
|
+
...state,
|
|
76
|
+
position: newPosition
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Checks if we've reached the end of the input.
|
|
82
|
+
*/
|
|
83
|
+
export function isAtEnd(state: ScannerState): boolean {
|
|
84
|
+
return state.position >= state.input.length;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Returns the current character (same as peek, but more descriptive name).
|
|
89
|
+
*/
|
|
90
|
+
export function currentChar(state: ScannerState): string {
|
|
91
|
+
return peek(state);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Returns the remaining unprocessed input from current position.
|
|
96
|
+
* Useful for debugging and lookahead matching.
|
|
97
|
+
*/
|
|
98
|
+
export function remainingInput(state: ScannerState): string {
|
|
99
|
+
return state.input.slice(state.position);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Helper predicates for character classification.
|
|
104
|
+
* Used by the individual readers to identify token boundaries.
|
|
105
|
+
*/
|
|
106
|
+
|
|
107
|
+
export function isWhitespace(char: string): boolean {
|
|
108
|
+
return char === ' ' || char === '\t' || char === '\n' || char === '\r';
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export function isDigit(char: string): boolean {
|
|
112
|
+
return char >= '0' && char <= '9';
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export function isAlpha(char: string): boolean {
|
|
116
|
+
return (char >= 'a' && char <= 'z') || (char >= 'A' && char <= 'Z');
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export function isAlphaNumeric(char: string): boolean {
|
|
120
|
+
return isAlpha(char) || isDigit(char);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Checks if a character can start an identifier.
|
|
125
|
+
* Identifiers start with a letter or underscore.
|
|
126
|
+
*/
|
|
127
|
+
export function isIdentifierStart(char: string): boolean {
|
|
128
|
+
return isAlpha(char) || char === '_';
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Checks if a character can continue an identifier.
|
|
133
|
+
* Identifiers can contain letters, digits, and underscores.
|
|
134
|
+
*/
|
|
135
|
+
export function isIdentifierPart(char: string): boolean {
|
|
136
|
+
return isAlphaNumeric(char) || char === '_';
|
|
137
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Token } from '../types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Represents the current state of the scanner as it moves through input.
|
|
5
|
+
*
|
|
6
|
+
* Design Decision: Immutable State
|
|
7
|
+
* --------------------------------
|
|
8
|
+
* We use immutable state rather than mutating a scanner object.
|
|
9
|
+
* Each operation returns a new state instead of modifying the current one.
|
|
10
|
+
*
|
|
11
|
+
* Benefits:
|
|
12
|
+
* - Easier to test: Each function is pure and predictable
|
|
13
|
+
* - Easier to debug: Can inspect state at any point
|
|
14
|
+
* - Backtracking is simple: Just use an earlier state
|
|
15
|
+
* - No hidden side effects between reader calls
|
|
16
|
+
*/
|
|
17
|
+
export interface ScannerState {
|
|
18
|
+
/** The complete input string being tokenized */
|
|
19
|
+
readonly input: string;
|
|
20
|
+
|
|
21
|
+
/** Current position in the input (0-indexed) */
|
|
22
|
+
readonly position: number;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Result returned by a token reader when it successfully matches input.
|
|
27
|
+
*
|
|
28
|
+
* Each reader is a pure function that:
|
|
29
|
+
* 1. Takes the current scanner state
|
|
30
|
+
* 2. Returns null if it doesn't match at this position
|
|
31
|
+
* 3. Returns { token, newState } if it does match
|
|
32
|
+
*
|
|
33
|
+
* The newState has the position advanced past the consumed characters.
|
|
34
|
+
*/
|
|
35
|
+
export interface ReaderResult {
|
|
36
|
+
/** The token that was read */
|
|
37
|
+
token: Token;
|
|
38
|
+
|
|
39
|
+
/** Scanner state with position advanced past the token */
|
|
40
|
+
newState: ScannerState;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Type signature for a token reader function.
|
|
45
|
+
*
|
|
46
|
+
* Readers are tried in a specific order (see tokenizer/index.ts).
|
|
47
|
+
* The first reader to return a non-null result "wins" and its
|
|
48
|
+
* token is added to the output stream.
|
|
49
|
+
*/
|
|
50
|
+
export type TokenReader = (state: ScannerState) => ReaderResult | null;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Type signature for readers that need access to the operator table.
|
|
54
|
+
*
|
|
55
|
+
* The identifier reader needs this to determine if a word is:
|
|
56
|
+
* - A known operator (and, or, contains, etc.)
|
|
57
|
+
* - A function name (when followed by parentheses)
|
|
58
|
+
* - An unknown identifier (error)
|
|
59
|
+
*/
|
|
60
|
+
export type TokenReaderWithContext<T> = (
|
|
61
|
+
state: ScannerState,
|
|
62
|
+
context: T
|
|
63
|
+
) => ReaderResult | null;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token types produced by the tokenizer.
|
|
3
|
+
* Each token represents a meaningful unit in the expression.
|
|
4
|
+
*
|
|
5
|
+
* The tokenizer converts a string like "$age > 18 and $active"
|
|
6
|
+
* into a stream of tokens that the parser can process.
|
|
7
|
+
*/
|
|
8
|
+
export type TokenType =
|
|
9
|
+
| 'PROPERTY_REF' // $var, $user.name - variable references starting with $
|
|
10
|
+
| 'NUMBER' // 42, 3.14, -5 - numeric literals (integers and decimals)
|
|
11
|
+
| 'STRING' // 'hello', "world" - string literals with single or double quotes
|
|
12
|
+
| 'BOOLEAN' // true, false - boolean literals
|
|
13
|
+
| 'NULL' // null - null literal
|
|
14
|
+
| 'OPERATOR' // >, and, contains - infix/prefix operators
|
|
15
|
+
| 'FUNCTION' // daysAgo, now - function names (followed by parentheses)
|
|
16
|
+
| 'LPAREN' // ( - left parenthesis for grouping or function calls
|
|
17
|
+
| 'RPAREN' // ) - right parenthesis
|
|
18
|
+
| 'COMMA' // , - argument separator in function calls
|
|
19
|
+
| 'EOF'; // End of input marker
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Represents a single token in the expression.
|
|
23
|
+
*
|
|
24
|
+
* The `canonical` field is used for operators to store the
|
|
25
|
+
* normalized operator name (e.g., '>' becomes 'greaterThan').
|
|
26
|
+
* This allows the parser to work with consistent operator names
|
|
27
|
+
* regardless of which alias was used in the input.
|
|
28
|
+
*/
|
|
29
|
+
export interface Token {
|
|
30
|
+
/** The type of token */
|
|
31
|
+
type: TokenType;
|
|
32
|
+
|
|
33
|
+
/** The raw value as it appeared in the input */
|
|
34
|
+
value: string;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* For operators: the canonical operator name.
|
|
38
|
+
* e.g., '>' → 'greaterThan', 'gt' → 'greaterThan'
|
|
39
|
+
* This ensures consistent handling regardless of alias used.
|
|
40
|
+
*/
|
|
41
|
+
canonical?: string;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Character position in the input string where this token starts.
|
|
45
|
+
* Used for error reporting to show the user where a problem occurred.
|
|
46
|
+
*/
|
|
47
|
+
position: number;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Information about an operator for parsing purposes.
|
|
52
|
+
*
|
|
53
|
+
* This is used by the Pratt parser to determine how to
|
|
54
|
+
* handle operators with different precedences and associativities.
|
|
55
|
+
*/
|
|
56
|
+
export interface OperatorInfo {
|
|
57
|
+
/** The canonical operator name (e.g., 'greaterThan', not '>' or 'gt') */
|
|
58
|
+
canonical: string;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Operator precedence (1-8 scale, higher binds tighter).
|
|
62
|
+
*
|
|
63
|
+
* Precedence levels:
|
|
64
|
+
* 1 - or, ||
|
|
65
|
+
* 2 - and, &&
|
|
66
|
+
* 3 - not, ! (unary prefix)
|
|
67
|
+
* 4 - comparison: >, >=, <, <=, ==, !=, contains, etc.
|
|
68
|
+
* 5 - addition: +, -
|
|
69
|
+
* 6 - multiplication: *, /, %
|
|
70
|
+
* 7 - unary minus (negation)
|
|
71
|
+
* 8 - function calls, literals, parentheses
|
|
72
|
+
*/
|
|
73
|
+
precedence: number;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Determines how operators of the same precedence group.
|
|
77
|
+
* - 'left': a op b op c = (a op b) op c (most common)
|
|
78
|
+
* - 'right': a op b op c = a op (b op c) (e.g., assignment)
|
|
79
|
+
* - 'none': cannot chain without parentheses
|
|
80
|
+
*/
|
|
81
|
+
associativity: 'left' | 'right' | 'none';
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* The arity of the operator.
|
|
85
|
+
* - 'unary': single operand (not, !)
|
|
86
|
+
* - 'binary': two operands (most operators)
|
|
87
|
+
* - 'ternary': three operands (between...and)
|
|
88
|
+
* - 'variadic': variable number of operands (and, or)
|
|
89
|
+
*/
|
|
90
|
+
arity: 'unary' | 'binary' | 'ternary' | 'variadic';
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Lookup table mapping operator aliases to their info.
|
|
95
|
+
* The key can be any alias (symbol, word, or full name).
|
|
96
|
+
*
|
|
97
|
+
* Example entries:
|
|
98
|
+
* '>' → { canonical: 'greaterThan', precedence: 4, ... }
|
|
99
|
+
* 'gt' → { canonical: 'greaterThan', precedence: 4, ... }
|
|
100
|
+
* 'greaterThan' → { canonical: 'greaterThan', precedence: 4, ... }
|
|
101
|
+
*/
|
|
102
|
+
export type OperatorTable = Map<string, OperatorInfo>;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core refraction (rule firing tracking) - shared across engines
|
|
3
|
+
*
|
|
4
|
+
* Refraction prevents the same rule from firing multiple times
|
|
5
|
+
* with the same set of facts.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { Activation } from '../matching';
|
|
9
|
+
import { CompiledBaseRule } from '../types';
|
|
10
|
+
|
|
11
|
+
export class Refraction {
|
|
12
|
+
private fired: Set<string> = new Set();
|
|
13
|
+
|
|
14
|
+
private getKey<TRule extends CompiledBaseRule>(activation: Activation<TRule>): string {
|
|
15
|
+
return `${activation.rule.id}:${activation.factIds.join(',')}`;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
hasFired<TRule extends CompiledBaseRule>(activation: Activation<TRule>): boolean {
|
|
19
|
+
return this.fired.has(this.getKey(activation));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
markFired<TRule extends CompiledBaseRule>(activation: Activation<TRule>): void {
|
|
23
|
+
this.fired.add(this.getKey(activation));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
retract<TRule extends CompiledBaseRule>(activation: Activation<TRule>): void {
|
|
27
|
+
this.fired.delete(this.getKey(activation));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
retractByFactId(factId: string): void {
|
|
31
|
+
for (const key of this.fired) {
|
|
32
|
+
if (key.includes(factId)) {
|
|
33
|
+
this.fired.delete(key);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Retract all refraction entries for a fact, except for a specific rule.
|
|
40
|
+
* This prevents infinite loops when a rule modifies a fact it matched on.
|
|
41
|
+
* The rule that made the modification should remain in refraction (won't re-fire),
|
|
42
|
+
* but other rules should be allowed to re-evaluate the modified fact.
|
|
43
|
+
*/
|
|
44
|
+
retractByFactIdExcludingRule(factId: string, excludeRuleId: string): void {
|
|
45
|
+
for (const key of this.fired) {
|
|
46
|
+
if (key.includes(factId) && !key.startsWith(`${excludeRuleId}:`)) {
|
|
47
|
+
this.fired.delete(key);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
retractByRuleId(ruleId: string): void {
|
|
53
|
+
for (const key of this.fired) {
|
|
54
|
+
if (key.startsWith(`${ruleId}:`)) {
|
|
55
|
+
this.fired.delete(key);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
filter<TRule extends CompiledBaseRule>(activations: Activation<TRule>[]): Activation<TRule>[] {
|
|
61
|
+
return activations.filter(a => !this.hasFired(a));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
clear(): void {
|
|
65
|
+
this.fired.clear();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
size(): number {
|
|
69
|
+
return this.fired.size;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core conflict resolution - shared across engines that need ordering
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { Activation } from '../matching';
|
|
6
|
+
import { CompiledBaseRule } from '../types';
|
|
7
|
+
|
|
8
|
+
export type ConflictStrategy =
|
|
9
|
+
| 'salience'
|
|
10
|
+
| 'specificity'
|
|
11
|
+
| 'complexity'
|
|
12
|
+
| 'simplicity'
|
|
13
|
+
| 'fifo'
|
|
14
|
+
| 'lifo'
|
|
15
|
+
| 'random'
|
|
16
|
+
| 'ruleOrder';
|
|
17
|
+
|
|
18
|
+
export const DEFAULT_STRATEGIES: ConflictStrategy[] = [
|
|
19
|
+
'salience',
|
|
20
|
+
'complexity',
|
|
21
|
+
'ruleOrder',
|
|
22
|
+
'fifo'
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
function normalize(value: number): number {
|
|
26
|
+
if (value < 0) return -1;
|
|
27
|
+
if (value > 0) return 1;
|
|
28
|
+
return 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function compareByStrategy<TRule extends CompiledBaseRule>(
|
|
32
|
+
a: Activation<TRule>,
|
|
33
|
+
b: Activation<TRule>,
|
|
34
|
+
strategy: ConflictStrategy
|
|
35
|
+
): number {
|
|
36
|
+
switch (strategy) {
|
|
37
|
+
case 'salience':
|
|
38
|
+
return normalize(b.rule.salience - a.rule.salience);
|
|
39
|
+
|
|
40
|
+
case 'specificity':
|
|
41
|
+
return normalize(b.rule.inputs.length - a.rule.inputs.length);
|
|
42
|
+
|
|
43
|
+
case 'complexity':
|
|
44
|
+
return normalize(b.rule.complexity - a.rule.complexity);
|
|
45
|
+
|
|
46
|
+
case 'simplicity':
|
|
47
|
+
return normalize(a.rule.complexity - b.rule.complexity);
|
|
48
|
+
|
|
49
|
+
case 'fifo':
|
|
50
|
+
return normalize(a.matchedAt - b.matchedAt);
|
|
51
|
+
|
|
52
|
+
case 'lifo':
|
|
53
|
+
return normalize(b.matchedAt - a.matchedAt);
|
|
54
|
+
|
|
55
|
+
case 'random':
|
|
56
|
+
return normalize(Math.random() - 0.5);
|
|
57
|
+
|
|
58
|
+
case 'ruleOrder':
|
|
59
|
+
return normalize(a.rule.index - b.rule.index);
|
|
60
|
+
|
|
61
|
+
default:
|
|
62
|
+
return 0;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export type ResolveOptions = {
|
|
67
|
+
strategies?: ConflictStrategy | ConflictStrategy[];
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export function resolveConflicts<TRule extends CompiledBaseRule>(
|
|
71
|
+
activations: Activation<TRule>[],
|
|
72
|
+
options: ResolveOptions = {}
|
|
73
|
+
): Activation<TRule>[] {
|
|
74
|
+
if (activations.length <= 1) return activations;
|
|
75
|
+
|
|
76
|
+
const { strategies = DEFAULT_STRATEGIES } = options;
|
|
77
|
+
|
|
78
|
+
const strategyList = Array.isArray(strategies) ? strategies : [strategies];
|
|
79
|
+
|
|
80
|
+
return [...activations].sort((a, b) => {
|
|
81
|
+
for (const strategy of strategyList) {
|
|
82
|
+
const result = compareByStrategy(a, b, strategy);
|
|
83
|
+
if (result !== 0) return result;
|
|
84
|
+
}
|
|
85
|
+
return 0;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core shape normalization - converts shorthand to JSONSchema
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { Shape, ShapeShorthand, JSONSchema } from '../types';
|
|
6
|
+
|
|
7
|
+
function isJSONSchema(shape: Shape): shape is JSONSchema {
|
|
8
|
+
return typeof shape === 'object' && 'type' in shape;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function parseArrayType(str: string): JSONSchema | null {
|
|
12
|
+
if (str.endsWith('[]')) {
|
|
13
|
+
const itemType = str.slice(0, -2);
|
|
14
|
+
return {
|
|
15
|
+
type: 'array',
|
|
16
|
+
items: normalizeShape(itemType)
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function normalizeShorthand(shorthand: ShapeShorthand): JSONSchema {
|
|
23
|
+
// String shorthand: "string", "number", "string[]"
|
|
24
|
+
if (typeof shorthand === 'string') {
|
|
25
|
+
const arrayType = parseArrayType(shorthand);
|
|
26
|
+
if (arrayType) return arrayType;
|
|
27
|
+
|
|
28
|
+
return { type: shorthand as JSONSchema['type'] };
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Object shorthand: { age: "number", address: { city: "string" } }
|
|
32
|
+
const properties: Record<string, JSONSchema> = {};
|
|
33
|
+
|
|
34
|
+
for (const [key, value] of Object.entries(shorthand)) {
|
|
35
|
+
properties[key] = normalizeShape(value);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return {
|
|
39
|
+
type: 'object',
|
|
40
|
+
properties
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function normalizeShape(shape: Shape): JSONSchema {
|
|
45
|
+
if (isJSONSchema(shape)) {
|
|
46
|
+
// Already JSON Schema, normalize nested
|
|
47
|
+
const result: JSONSchema = { type: shape.type };
|
|
48
|
+
|
|
49
|
+
if (shape.properties) {
|
|
50
|
+
result.properties = {};
|
|
51
|
+
for (const [key, value] of Object.entries(shape.properties)) {
|
|
52
|
+
result.properties[key] = normalizeShape(value);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (shape.items) {
|
|
57
|
+
result.items = normalizeShape(shape.items);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (shape.minimum !== undefined) result.minimum = shape.minimum;
|
|
61
|
+
if (shape.maximum !== undefined) result.maximum = shape.maximum;
|
|
62
|
+
if (shape['x-unit']) result['x-unit'] = shape['x-unit'];
|
|
63
|
+
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return normalizeShorthand(shape);
|
|
68
|
+
}
|