{"_id":"@bpmn-sdk/feel","_rev":"7-94c5ccf80bd47ed46fe03e0e380d9d73","name":"@bpmn-sdk/feel","dist-tags":{"latest":"0.0.8"},"versions":{"0.0.1":{"name":"@bpmn-sdk/feel","version":"0.0.1","_id":"@bpmn-sdk/feel@0.0.1","maintainers":[{"name":"urbanisierung","email":"adam.urban@gmail.com"}],"dist":{"shasum":"8cea7da17aeff9a833ceef46bc72616354292d07","tarball":"https://registry.npmjs.org/@bpmn-sdk/feel/-/feel-0.0.1.tgz","fileCount":37,"integrity":"sha512-UTGYOF6JbImZfU+hgV+53dVXEvq9oBBylYm9AWEvNHB0v9xe1fFbt+N3u/4yXYrVzxssFtCsGp2BF/ICuk4oYA==","signatures":[{"sig":"MEUCIAinGuVS63axgUbuW20FIwQGoV6zcWoUXsUaWCbXKTJfAiEAnNWfp/fDWnNhZXYSF84Gpve4dm6D4wc+mu6jZr/Y/gc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":251223},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"075957a1ebf1e65ddf72a5e42b43a6709074380b","private":false,"scripts":{"test":"vitest run","build":"tsc","check":"biome check .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"urbanisierung","email":"adam.urban@gmail.com"},"_npmVersion":"11.6.1","directories":{},"_nodeVersion":"24.11.0","dependencies":{},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/feel_0.0.1_1772906643592_0.1298212160262453","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@bpmn-sdk/feel","version":"0.0.3","_id":"@bpmn-sdk/feel@0.0.3","maintainers":[{"name":"urbanisierung","email":"adam.urban@gmail.com"}],"homepage":"https://github.com/bpmn-sdk/monorepo#readme","bugs":{"url":"https://github.com/bpmn-sdk/monorepo/issues"},"dist":{"shasum":"aff67db6698703989a577d9d5c60803d1c5a004f","tarball":"https://registry.npmjs.org/@bpmn-sdk/feel/-/feel-0.0.3.tgz","fileCount":20,"integrity":"sha512-Ylbd+cYftXzvQQsGRMvnkPCDKk+4zDIol3rn7x3DBBaBiUGWy0CIL8PZhxGPdXsVvaee0QvlpUZj952L/lmqUw==","signatures":[{"sig":"MEYCIQCpB9hgVg7tIsHAQuXAchm7LoaSLprWE1wRj6SNoUb32gIhAIS+zfhyULz6TsZnAnfd/Z1y5EPb/SDaUjyZuvyI/A/z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bpmn-sdk%2ffeel@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":116585},"main":"./dist/index.js","type":"module","_from":"file:bpmn-sdk-feel-0.0.3.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"private":false,"scripts":{"test":"vitest run","build":"tsc","check":"biome check .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:31d28806-6e93-4abb-b99e-9ef07d764e7a"}},"_resolved":"/tmp/0b8ccb7822f9c7839773b10c7690ec4a/bpmn-sdk-feel-0.0.3.tgz","_integrity":"sha512-Ylbd+cYftXzvQQsGRMvnkPCDKk+4zDIol3rn7x3DBBaBiUGWy0CIL8PZhxGPdXsVvaee0QvlpUZj952L/lmqUw==","repository":{"url":"git+https://github.com/bpmn-sdk/monorepo.git","type":"git"},"_npmVersion":"11.9.0","directories":{},"_nodeVersion":"24.14.0","dependencies":{},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/feel_0.0.3_1772992007145_0.6975094192893372","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@bpmn-sdk/feel","version":"0.0.4","_id":"@bpmn-sdk/feel@0.0.4","maintainers":[{"name":"urbanisierung","email":"adam.urban@gmail.com"}],"homepage":"https://github.com/bpmn-sdk/monorepo#readme","bugs":{"url":"https://github.com/bpmn-sdk/monorepo/issues"},"dist":{"shasum":"c16b127f3d04fc5d5e42bf8759895ccb150562df","tarball":"https://registry.npmjs.org/@bpmn-sdk/feel/-/feel-0.0.4.tgz","fileCount":21,"integrity":"sha512-bP0q+2XVw3PLIa3VEgjhf+126RVfu7ni+brsUkwDutUP/Hlvei7gycqEt0hog4tZBLomwzHtaS5lX2uynlZTsA==","signatures":[{"sig":"MEUCIQCg4smSppab6xxtzdpb7kn0kAIj8mu+6AUKpo6qu3Qn3gIgT4uuK8gy/B0OnACrXRT9d9UBUs+lQHHxYaEV+YyF3mI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bpmn-sdk%2ffeel@0.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":120971},"main":"./dist/index.js","type":"module","_from":"file:bpmn-sdk-feel-0.0.4.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"private":false,"scripts":{"test":"vitest run","build":"tsc","check":"biome check .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:31d28806-6e93-4abb-b99e-9ef07d764e7a"}},"_resolved":"/tmp/798e3a15df6847842874dd8c5c4cd5bf/bpmn-sdk-feel-0.0.4.tgz","_integrity":"sha512-bP0q+2XVw3PLIa3VEgjhf+126RVfu7ni+brsUkwDutUP/Hlvei7gycqEt0hog4tZBLomwzHtaS5lX2uynlZTsA==","repository":{"url":"git+https://github.com/bpmn-sdk/monorepo.git","type":"git"},"_npmVersion":"11.9.0","description":"<div align=\"center\">   <img src=\"https://raw.githubusercontent.com/bpmn-sdk/monorepo/main/doc/logos/logo-2-gateway.svg\" width=\"72\" height=\"72\" alt=\"BPMN SDK logo\">   <h1>@bpmn-sdk/feel</h1>   <p>Complete FEEL (Friendly Enough Expression Language) implemen","directories":{},"_nodeVersion":"24.14.0","dependencies":{},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/feel_0.0.4_1773080900068_0.6182202389663372","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@bpmn-sdk/feel","version":"0.0.5","keywords":["feel","dmn","expression","camunda","bpmn","typescript"],"license":"MIT","_id":"@bpmn-sdk/feel@0.0.5","maintainers":[{"name":"urbanisierung","email":"adam.urban@gmail.com"}],"homepage":"https://github.com/bpmn-sdk/monorepo#readme","bugs":{"url":"https://github.com/bpmn-sdk/monorepo/issues"},"dist":{"shasum":"dd40c2bb5da7e2a4ab91913f55b99b3a89b37e04","tarball":"https://registry.npmjs.org/@bpmn-sdk/feel/-/feel-0.0.5.tgz","fileCount":21,"integrity":"sha512-xN0CCU+P9eAppjMWfgsP26/7GtbW9IDnBlgOHYBIIi9u+QBMEKEDJ+0BIQvSr4s/3nVvV5DP+rxygVreEp7Jfw==","signatures":[{"sig":"MEYCIQDVPWMxZURUlRpmHp29ihFqffp6GrVOo9aloHbwxjBHzwIhANyFL2/mfHZzOPuYSsRN0XoCh91qlsZ1SEL66EnOn3s0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bpmn-sdk%2ffeel@0.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":121500},"main":"./dist/index.js","type":"module","_from":"file:bpmn-sdk-feel-0.0.5.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"private":false,"scripts":{"test":"vitest run","build":"tsc","check":"biome check .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:31d28806-6e93-4abb-b99e-9ef07d764e7a"}},"_resolved":"/tmp/b94bf40984b2f9d8a7a630914b419bf9/bpmn-sdk-feel-0.0.5.tgz","_integrity":"sha512-xN0CCU+P9eAppjMWfgsP26/7GtbW9IDnBlgOHYBIIi9u+QBMEKEDJ+0BIQvSr4s/3nVvV5DP+rxygVreEp7Jfw==","repository":{"url":"git+https://github.com/bpmn-sdk/monorepo.git","type":"git"},"_npmVersion":"11.9.0","description":"Complete FEEL (Friendly Enough Expression Language) implementation — parser, evaluator, and highlighter","directories":{},"_nodeVersion":"24.14.0","dependencies":{},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/feel_0.0.5_1773173858833_0.8709881290237802","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@bpmn-sdk/feel","version":"0.0.6","keywords":["feel","dmn","expression","camunda","bpmn","typescript"],"license":"MIT","_id":"@bpmn-sdk/feel@0.0.6","maintainers":[{"name":"urbanisierung","email":"adam.urban@gmail.com"}],"homepage":"https://github.com/bpmn-sdk/monorepo#readme","bugs":{"url":"https://github.com/bpmn-sdk/monorepo/issues"},"dist":{"shasum":"f620f0064b221b2c388c32a1539a8f138995984b","tarball":"https://registry.npmjs.org/@bpmn-sdk/feel/-/feel-0.0.6.tgz","fileCount":21,"integrity":"sha512-EPrSHHe4BhhX4UX5KaeduEjy6HiaPM3LJ30eO5itVoyYCgjd65K7cq1ZXBgXZvHOzWByHAgsT4/Iz39FOKFiDg==","signatures":[{"sig":"MEQCIBRUczj5fLxEOLvRAYnyD9DM1RJNNJCXggE5ZsCOWW+oAiBdpP6nL6txvSqBV2BRoMCxI/l4j6VL8Y5xIwtxUjaG3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bpmn-sdk%2ffeel@0.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":121500},"main":"./dist/index.js","type":"module","_from":"file:bpmn-sdk-feel-0.0.6.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"private":false,"scripts":{"test":"vitest run","build":"tsc","check":"biome check .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:31d28806-6e93-4abb-b99e-9ef07d764e7a"}},"_resolved":"/tmp/2cb5008e02149cdaaffb49696c084aa0/bpmn-sdk-feel-0.0.6.tgz","_integrity":"sha512-EPrSHHe4BhhX4UX5KaeduEjy6HiaPM3LJ30eO5itVoyYCgjd65K7cq1ZXBgXZvHOzWByHAgsT4/Iz39FOKFiDg==","repository":{"url":"git+https://github.com/bpmn-sdk/monorepo.git","type":"git"},"_npmVersion":"11.9.0","description":"Complete FEEL (Friendly Enough Expression Language) implementation — parser, evaluator, and highlighter","directories":{},"_nodeVersion":"24.14.0","dependencies":{},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/feel_0.0.6_1773258778776_0.28568816329793734","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@bpmn-sdk/feel","version":"0.0.7","keywords":["feel","dmn","expression","camunda","bpmn","typescript"],"license":"MIT","_id":"@bpmn-sdk/feel@0.0.7","maintainers":[{"name":"urbanisierung","email":"adam.urban@gmail.com"}],"homepage":"https://github.com/bpmn-sdk/monorepo#readme","bugs":{"url":"https://github.com/bpmn-sdk/monorepo/issues"},"dist":{"shasum":"237eb0110ce12779f09e1cd455e0bf87b01de963","tarball":"https://registry.npmjs.org/@bpmn-sdk/feel/-/feel-0.0.7.tgz","fileCount":21,"integrity":"sha512-dzJJwyEfJGsxvdEs36GwK3ZqrFW2960X9K6ojJQFdbTV9rZaq6Y2aHvlm0/bYz1o0AvEKvtSIOpWbuju+z3ScA==","signatures":[{"sig":"MEYCIQDj7YEwFiz13TB/Zi++yD/0FC3IkNhZFsG5QiaWt0j+wgIhALqG0oTm41hE9JBxlRMGQ3pf6Rck4URkaYkEsSbkdtHo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bpmn-sdk%2ffeel@0.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":121500},"main":"./dist/index.js","type":"module","_from":"file:bpmn-sdk-feel-0.0.7.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"private":false,"scripts":{"test":"vitest run","build":"tsc","check":"biome check .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:31d28806-6e93-4abb-b99e-9ef07d764e7a"}},"_resolved":"/tmp/43dcde0fefd28366fd20126e849fe149/bpmn-sdk-feel-0.0.7.tgz","_integrity":"sha512-dzJJwyEfJGsxvdEs36GwK3ZqrFW2960X9K6ojJQFdbTV9rZaq6Y2aHvlm0/bYz1o0AvEKvtSIOpWbuju+z3ScA==","repository":{"url":"git+https://github.com/bpmn-sdk/monorepo.git","type":"git"},"_npmVersion":"11.9.0","description":"Complete FEEL (Friendly Enough Expression Language) implementation — parser, evaluator, and highlighter","directories":{},"_nodeVersion":"24.14.0","dependencies":{},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/feel_0.0.7_1773341678152_0.4224391753901968","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@bpmn-sdk/feel","version":"0.0.8","private":false,"type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"main":"./dist/index.js","types":"./dist/index.d.ts","dependencies":{},"description":"Complete FEEL (Friendly Enough Expression Language) implementation — parser, evaluator, and highlighter","keywords":["feel","dmn","expression","camunda","bpmn","typescript"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bpmn-sdk/monorepo.git"},"scripts":{"build":"tsc","typecheck":"tsc --noEmit","check":"biome check .","test":"vitest run"},"_id":"@bpmn-sdk/feel@0.0.8","bugs":{"url":"https://github.com/bpmn-sdk/monorepo/issues"},"homepage":"https://github.com/bpmn-sdk/monorepo#readme","_integrity":"sha512-13EaYaWaxUUkiPDvov9FkLDcehR/43TsKFpALTx6yeiDf6inYV621EDhUK7cGQ7ii1y3SpUtwTFoYvoCoTKikw==","_resolved":"/tmp/9a4edfab6cb1b88c55c82465278ba045/bpmn-sdk-feel-0.0.8.tgz","_from":"file:bpmn-sdk-feel-0.0.8.tgz","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-13EaYaWaxUUkiPDvov9FkLDcehR/43TsKFpALTx6yeiDf6inYV621EDhUK7cGQ7ii1y3SpUtwTFoYvoCoTKikw==","shasum":"62c6606b3f3db7dcd08d8c8a48603e1879969416","tarball":"https://registry.npmjs.org/@bpmn-sdk/feel/-/feel-0.0.8.tgz","fileCount":21,"unpackedSize":121500,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bpmn-sdk%2ffeel@0.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAQTh2qZEoEL74lwivja5fD23QNf3M7ROCV/XOXcCUr0AiAekdpTih4wL9CecJxCbMi7rFxGi3Dn+1By+Krk8iJgmQ=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:31d28806-6e93-4abb-b99e-9ef07d764e7a"}},"directories":{},"maintainers":[{"name":"urbanisierung","email":"adam.urban@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/feel_0.0.8_1773428384311_0.3879039304283711"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-07T18:04:03.523Z","modified":"2026-03-13T18:59:44.754Z","0.0.1":"2026-03-07T18:04:03.773Z","0.0.3":"2026-03-08T17:46:47.279Z","0.0.4":"2026-03-09T18:28:20.241Z","0.0.5":"2026-03-10T20:17:38.988Z","0.0.6":"2026-03-11T19:52:58.934Z","0.0.7":"2026-03-12T18:54:38.343Z","0.0.8":"2026-03-13T18:59:44.455Z"},"bugs":{"url":"https://github.com/bpmn-sdk/monorepo/issues"},"license":"MIT","homepage":"https://github.com/bpmn-sdk/monorepo#readme","keywords":["feel","dmn","expression","camunda","bpmn","typescript"],"repository":{"type":"git","url":"git+https://github.com/bpmn-sdk/monorepo.git"},"description":"Complete FEEL (Friendly Enough Expression Language) implementation — parser, evaluator, and highlighter","maintainers":[{"name":"urbanisierung","email":"adam.urban@gmail.com"}],"readme":"<div align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/bpmn-sdk/monorepo/main/doc/logos/logo-2-gateway.svg\" width=\"72\" height=\"72\" alt=\"BPMN SDK logo\">\n  <h1>@bpmn-sdk/feel</h1>\n  <p>Complete FEEL (Friendly Enough Expression Language) implementation — parser, evaluator, and highlighter</p>\n\n  [![npm](https://img.shields.io/npm/v/@bpmn-sdk/feel?style=flat-square&color=6244d7)](https://www.npmjs.com/package/@bpmn-sdk/feel)\n  [![license](https://img.shields.io/npm/l/@bpmn-sdk/feel?style=flat-square)](https://github.com/bpmn-sdk/monorepo/blob/main/LICENSE)\n  [![typescript](https://img.shields.io/badge/TypeScript-strict-6244d7?style=flat-square&logo=typescript&logoColor=white)](https://github.com/bpmn-sdk/monorepo)\n\n  [Documentation](https://bpmn-sdk-docs.pages.dev) · [GitHub](https://github.com/bpmn-sdk/monorepo) · [Changelog](https://github.com/bpmn-sdk/monorepo/blob/main/packages/feel/CHANGELOG.md)\n</div>\n\n---\n\n## Overview\n\n`@bpmn-sdk/feel` is a complete implementation of the FEEL expression language used in DMN decision tables and BPMN condition expressions. It includes a tokenizer, recursive-descent parser, AST evaluator, formatter, and syntax highlighter.\n\n## Features\n\n- **Full FEEL grammar** — arithmetic, comparisons, logic, function calls, paths, filters\n- **Temporal types** — date, time, datetime, duration (ISO 8601, full spec compliance)\n- **Unary tests** — DMN input expression syntax (`> 5`, `\"gold\", \"silver\"`, `[1..10]`)\n- **Built-in functions** — 50+ standard FEEL functions (string, list, numeric, date, context)\n- **Range expressions** — `[1..10]`, `(0..1)`, `[today..end]`\n- **Context literals** — `{ key: value, nested: { x: 1 } }`\n- **Syntax highlighting** — semantic token classification for editors\n- **Zero dependencies**\n\n## Installation\n\n```sh\nnpm install @bpmn-sdk/feel\n```\n\n## Quick Start\n\n### Evaluate an expression\n\n```typescript\nimport { parseExpression, evaluate } from \"@bpmn-sdk/feel\"\n\nconst parsed = parseExpression(\"amount * 1.2 + fee\")\nif (!parsed.errors.length) {\n  const result = evaluate(parsed.ast!, { amount: 100, fee: 5 })\n  console.log(result) // 125\n}\n```\n\n### Evaluate unary tests (DMN input expressions)\n\n```typescript\nimport { parseUnaryTests, evaluateUnaryTests } from \"@bpmn-sdk/feel\"\n\n// Does input value match any listed condition?\nconst parsed = parseUnaryTests('\"gold\",\"silver\"')\nconst matches = evaluateUnaryTests(parsed.ast!, \"gold\", { /* context */ })\nconsole.log(matches) // true\n```\n\n### Syntax highlighting\n\n```typescript\nimport { highlightFeel } from \"@bpmn-sdk/feel\"\n\nconst tokens = highlightFeel('if x > 10 then \"high\" else \"low\"')\nfor (const token of tokens) {\n  console.log(token.type, token.value) // keyword, number, string, ...\n}\n```\n\n## API Reference\n\n| Export | Description |\n|--------|-------------|\n| `parseExpression(src)` | Parse a FEEL expression → `ParseResult` |\n| `parseUnaryTests(src)` | Parse unary tests → `ParseResult` |\n| `evaluate(ast, ctx)` | Evaluate a parsed expression |\n| `evaluateUnaryTests(ast, input, ctx)` | Test input against unary tests |\n| `formatFeel(src)` | Pretty-print a FEEL expression |\n| `highlightFeel(src)` | Tokenize with semantic types for highlighting |\n| `tokenize(src)` | Raw token stream |\n| `annotate(src)` | Full AST with position metadata |\n\n### ParseResult\n\n```typescript\ninterface ParseResult {\n  ast: FeelNode | null\n  errors: ParseError[]   // { message, position }\n}\n```\n\n---\n\n## Related Packages\n\n| Package | Description |\n|---------|-------------|\n| [`@bpmn-sdk/core`](https://www.npmjs.com/package/@bpmn-sdk/core) | BPMN/DMN/Form parser, builder, layout engine |\n| [`@bpmn-sdk/canvas`](https://www.npmjs.com/package/@bpmn-sdk/canvas) | Zero-dependency SVG BPMN viewer |\n| [`@bpmn-sdk/editor`](https://www.npmjs.com/package/@bpmn-sdk/editor) | Full-featured interactive BPMN editor |\n| [`@bpmn-sdk/engine`](https://www.npmjs.com/package/@bpmn-sdk/engine) | Lightweight BPMN process execution engine |\n| [`@bpmn-sdk/plugins`](https://www.npmjs.com/package/@bpmn-sdk/plugins) | 22 composable canvas plugins |\n| [`@bpmn-sdk/api`](https://www.npmjs.com/package/@bpmn-sdk/api) | Camunda 8 REST API TypeScript client |\n| [`@bpmn-sdk/ascii`](https://www.npmjs.com/package/@bpmn-sdk/ascii) | Render BPMN diagrams as Unicode ASCII art |\n| [`@bpmn-sdk/profiles`](https://www.npmjs.com/package/@bpmn-sdk/profiles) | Shared auth, profile storage, and client factories for CLI & proxy |\n| [`@bpmn-sdk/operate`](https://www.npmjs.com/package/@bpmn-sdk/operate) | Monitoring & operations frontend for Camunda clusters |\n\n## License\n\n[MIT](https://github.com/bpmn-sdk/monorepo/blob/main/LICENSE) © bpmn-sdk\n","readmeFilename":"README.md"}