stringent 0.0.1 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +96 -0
  2. package/dist/context.d.ts +45 -0
  3. package/dist/context.d.ts.map +1 -0
  4. package/dist/context.js +14 -0
  5. package/dist/context.js.map +1 -0
  6. package/dist/createParser.d.ts +159 -0
  7. package/dist/createParser.d.ts.map +1 -0
  8. package/dist/createParser.js +118 -0
  9. package/dist/createParser.js.map +1 -0
  10. package/dist/errors.d.ts +121 -0
  11. package/dist/errors.d.ts.map +1 -0
  12. package/dist/errors.js +186 -0
  13. package/dist/errors.js.map +1 -0
  14. package/dist/grammar/index.d.ts +48 -0
  15. package/dist/grammar/index.d.ts.map +1 -0
  16. package/dist/grammar/index.js +13 -0
  17. package/dist/grammar/index.js.map +1 -0
  18. package/dist/index.d.ts +27 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +31 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/parse/index.d.ts +211 -0
  23. package/dist/parse/index.d.ts.map +1 -0
  24. package/dist/parse/index.js +16 -0
  25. package/dist/parse/index.js.map +1 -0
  26. package/dist/performance.bench.d.ts +10 -0
  27. package/dist/performance.bench.d.ts.map +1 -0
  28. package/dist/performance.bench.js +379 -0
  29. package/dist/performance.bench.js.map +1 -0
  30. package/dist/primitive/index.d.ts +96 -0
  31. package/dist/primitive/index.d.ts.map +1 -0
  32. package/dist/primitive/index.js +102 -0
  33. package/dist/primitive/index.js.map +1 -0
  34. package/dist/runtime/eval.d.ts +157 -0
  35. package/dist/runtime/eval.d.ts.map +1 -0
  36. package/dist/runtime/eval.js +206 -0
  37. package/dist/runtime/eval.js.map +1 -0
  38. package/dist/runtime/infer.d.ts +27 -0
  39. package/dist/runtime/infer.d.ts.map +1 -0
  40. package/dist/runtime/infer.js +35 -0
  41. package/dist/runtime/infer.js.map +1 -0
  42. package/dist/runtime/parser.d.ts +115 -0
  43. package/dist/runtime/parser.d.ts.map +1 -0
  44. package/dist/runtime/parser.js +746 -0
  45. package/dist/runtime/parser.js.map +1 -0
  46. package/dist/schema/index.d.ts +476 -0
  47. package/dist/schema/index.d.ts.map +1 -0
  48. package/dist/schema/index.js +137 -0
  49. package/dist/schema/index.js.map +1 -0
  50. package/dist/static/infer.d.ts +27 -0
  51. package/dist/static/infer.d.ts.map +1 -0
  52. package/dist/static/infer.js +10 -0
  53. package/dist/static/infer.js.map +1 -0
  54. package/package.json +62 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/runtime/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAY3C,OAAO,EACL,UAAU,EACV,MAAM,EACN,MAAM,EACN,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAY5B,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B,qDAAqD;AACrD,MAAM,aAAa,GAAG,UAAU,CAAC;IAC/B,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,eAAe;IAC3B,UAAU,EAAE,QAAQ;CACrB,CAAC,CAAC;AAEH,+DAA+D;AAC/D,MAAM,aAAa,GAAG,UAAU,CAAC;IAC/B,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7B,UAAU,EAAE,eAAe;IAC3B,UAAU,EAAE,QAAQ;CACrB,CAAC,CAAC;AAEH,4CAA4C;AAC5C,MAAM,cAAc,GAAG,UAAU,CAAC;IAChC,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,UAAU,EAAE,eAAe;IAC3B,UAAU,EAAE,SAAS;CACtB,CAAC,CAAC;AAEH,uDAAuD;AACvD,MAAM,WAAW,GAAG,UAAU,CAAC;IAC7B,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3D,UAAU,EAAE,eAAe;IAC3B,UAAU,EAAE,SAAS;CACtB,CAAC,CAAC;AAEH,mDAAmD;AACnD,MAAM,QAAQ,GAAG,UAAU,CAAC;IAC1B,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;IACxB,UAAU,EAAE,eAAe;IAC3B,UAAU,EAAE,MAAM;CACnB,CAAC,CAAC;AAEH,mDAAmD;AACnD,MAAM,WAAW,GAAG,UAAU,CAAC;IAC7B,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,CAAC,cAAc,EAAE,CAAC;IAC3B,UAAU,EAAE,eAAe;IAC3B,UAAU,EAAE,SAAS;CACtB,CAAC,CAAC;AAEH,6DAA6D;AAC7D,MAAM,aAAa,GAAG,UAAU,CAAC;IAC/B,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC7B,UAAU,EAAE,eAAe;IAC3B,UAAU,EAAE,WAAW;CACxB,CAAC,CAAC;AAEH,gEAAgE;AAChE,yEAAyE;AACzE,gFAAgF;AAChF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,aAAa;IACb,aAAa;IACb,QAAQ;IACR,WAAW;IACX,aAAa;IACb,cAAc;IACd,WAAW;CACH,CAAC;AAOX,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAA0B,CAAC;IAC5D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO;QACL;YACE,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YACd,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YACjB,YAAY,EAAE,QAAQ;SACW;QACnC,MAAM,CAAC,CAAC,CAAC;KACV,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACtB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACxB,kCAAkC;gBAClC,MAAM,IAAI,IAAI,CAAC;gBACf,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;YACD,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACxB,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,GAAG;oBACN,MAAM,IAAI,IAAI,CAAC;oBACf,CAAC,IAAI,CAAC,CAAC;oBACP,MAAM;gBACR,KAAK,GAAG;oBACN,MAAM,IAAI,IAAI,CAAC;oBACf,CAAC,IAAI,CAAC,CAAC;oBACP,MAAM;gBACR,KAAK,GAAG;oBACN,MAAM,IAAI,IAAI,CAAC;oBACf,CAAC,IAAI,CAAC,CAAC;oBACP,MAAM;gBACR,KAAK,IAAI;oBACP,MAAM,IAAI,IAAI,CAAC;oBACf,CAAC,IAAI,CAAC,CAAC;oBACP,MAAM;gBACR,KAAK,GAAG;oBACN,MAAM,IAAI,GAAG,CAAC;oBACd,CAAC,IAAI,CAAC,CAAC;oBACP,MAAM;gBACR,KAAK,GAAG;oBACN,MAAM,IAAI,GAAG,CAAC;oBACd,CAAC,IAAI,CAAC,CAAC;oBACP,MAAM;gBACR,KAAK,GAAG;oBACN,MAAM,IAAI,IAAI,CAAC;oBACf,CAAC,IAAI,CAAC,CAAC;oBACP,MAAM;gBACR,KAAK,GAAG;oBACN,MAAM,IAAI,IAAI,CAAC;oBACf,CAAC,IAAI,CAAC,CAAC;oBACP,MAAM;gBACR,KAAK,GAAG;oBACN,MAAM,IAAI,IAAI,CAAC;oBACf,CAAC,IAAI,CAAC,CAAC;oBACP,MAAM;gBACR,KAAK,GAAG;oBACN,MAAM,IAAI,IAAI,CAAC;oBACf,CAAC,IAAI,CAAC,CAAC;oBACP,MAAM;gBACR,KAAK,GAAG,CAAC,CAAC,CAAC;oBACT,wBAAwB;oBACxB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;wBACvB,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;wBACpC,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;4BACjC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;4BACjD,CAAC,IAAI,CAAC,CAAC;4BACP,MAAM;wBACR,CAAC;oBACH,CAAC;oBACD,iCAAiC;oBACjC,MAAM,IAAI,KAAK,CAAC;oBAChB,CAAC,IAAI,CAAC,CAAC;oBACP,MAAM;gBACR,CAAC;gBACD,KAAK,GAAG,CAAC,CAAC,CAAC;oBACT,2BAA2B;oBAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;wBACvB,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;wBACpC,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;4BACjC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;4BACjD,CAAC,IAAI,CAAC,CAAC;4BACP,MAAM;wBACR,CAAC;oBACH,CAAC;oBACD,iCAAiC;oBACjC,MAAM,IAAI,KAAK,CAAC;oBAChB,CAAC,IAAI,CAAC,CAAC;oBACP,MAAM;gBACR,CAAC;gBACD;oBACE,gDAAgD;oBAChD,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC;oBACtB,CAAC,IAAI,CAAC,CAAC;oBACP,MAAM;YACV,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CACzB,MAAyB,EACzB,KAAa;IAEb,0BAA0B;IAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,0BAA0B;IAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAE1B,kDAAkD;IAClD,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;IACzB,IAAI,UAAU,GAAG,EAAE,CAAC;IAEpB,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAExB,4BAA4B;QAC5B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC3B,sEAAsE;gBACtE,UAAU,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpC,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;YACX,CAAC;iBAAM,CAAC;gBACN,kCAAkC;gBAClC,UAAU,IAAI,IAAI,CAAC;gBACnB,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,oBAAoB;QACpB,UAAU,IAAI,IAAI,CAAC;QACnB,CAAC,EAAE,CAAC;IACN,CAAC;IAED,sBAAsB;IACtB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,WAAW,CAAC,MAAyB,EAAE,KAAa;IAC3D,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,cAAc,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACxD,OAAO;QACL;YACE,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,cAAc;YACrB,YAAY,EAAE,QAAQ;SACW;QACnC,MAAM,CAAC,CAAC,CAAC;KACV,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,OAAgB;IACjD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAA0B,CAAC;IAC3D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,SAAS,GACb,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,OAAO,CAAC,IAA+B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpF,OAAO;QACL,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAGlD;QACD,MAAM,CAAC,CAAC,CAAC;KACV,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,KAAa;IAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAA0B,CAAC;IAClE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAA0B,CAAC;IACnE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,iEAAiE;IACjE,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7D,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO;QACL;YACE,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,IAAI;YACX,YAAY,EAAE,MAAM;SACT;QACb,SAAS;KACV,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,mBAAmB;IACnB,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAA0B,CAAC;IACjE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,iEAAiE;QACjE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAChE,OAAO;gBACL;oBACE,IAAI,EAAE,SAAS;oBACf,GAAG,EAAE,MAAM;oBACX,KAAK,EAAE,IAAI;oBACX,YAAY,EAAE,SAAS;iBACD;gBACxB,SAAS;aACV,CAAC;QACJ,CAAC;IACH,CAAC;IAED,cAAc;IACd,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAA0B,CAAC;IAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,sEAAsE;QACtE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAChE,OAAO;gBACL;oBACE,IAAI,EAAE,SAAS;oBACf,GAAG,EAAE,OAAO;oBACZ,KAAK,EAAE,KAAK;oBACZ,YAAY,EAAE,SAAS;iBACA;gBACzB,SAAS;aACV,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAA0B,CAAC;IACxE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,qEAAqE;IACrE,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7D,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO;QACL;YACE,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,SAAS;YAChB,YAAY,EAAE,WAAW;SACT;QAClB,SAAS;KACV,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,0CAA0C;AAC1C,gFAAgF;AAEhF;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,SAAgC;IAC3D,MAAM,eAAe,GAA8B,IAAI,GAAG,EAAE,CAAC;IAC7D,MAAM,sBAAsB,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IAE9C,KAAK,MAAM,EAAE,IAAI,sBAAsB,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC;QAC3B,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5C,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,CAAC;IAED,6BAA6B;IAC7B,MAAM,WAAW,GAAG,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAEtE,sEAAsE;IACtE,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,0CAA0C;IAC1C,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF;;GAEG;AACH,SAAS,YAAY,CAAC,OAAsB,EAAE,KAAa,EAAE,OAAgB;IAC3E,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,QAAQ;YACX,OAAO,WAAW,CAAE,OAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9D,KAAK,OAAO;YACV,OAAO,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACpC,KAAK,OAAO;YACV,OAAO,UAAU,CAAE,OAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3D,KAAK,MAAM;YACT,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1B,KAAK,SAAS;YACZ,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7B,KAAK,WAAW;YACd,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/B;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,qBAAqB,CAC5B,OAAsB,EACtB,KAAa,EACb,OAAgB,EAChB,aAAsB,EACtB,UAAmB,EACnB,WAAoB;IAEpB,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,OAAqB,CAAC;QAC1C,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;QAC1C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;QAE9B,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,OAAO,uBAAuB,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACtF,CAAC;aAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,OAAO,uBAAuB,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACzF,CAAC;aAAM,CAAC;YACN,OAAO,uBAAuB,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CACxB,OAAiC,EACjC,KAAa,EACb,OAAgB,EAChB,aAAsB,EACtB,UAAmB,EACnB,WAAoB;IAEpB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,qBAAqB,CAClC,OAAO,EACP,SAAS,EACT,OAAO,EACP,aAAa,EACb,UAAU,EACV,WAAW,CACZ,CAAC;QACF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CACtB,OAAiC,EACjC,QAAmB;IAEnB,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAE7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE1B,sEAAsE;QACtE,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACrD,QAAQ,CAAE,OAA4B,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;GAUG;AACH;;GAEG;AACH,SAAS,iBAAiB,CAAC,UAAmB;IAC5C,OAAO,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,IAAI,OAAO,IAAI,UAAU,CAAC;AACxF,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,wBAAwB,CAC/B,QAAiC,EACjC,KAAwB;IAExB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAA0C,CAAC;QACxE,IAAI,OAAO,EAAE,YAAY,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAChE,0BAA0B;YAC1B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC5C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,2CAA2C;IAC3C,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,eAAe,CAAC,UAAsB,EAAE,QAAmB,EAAE,OAAgB;IACpF,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAE/D,qDAAqD;IACrD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,iEAAiE;IACjE,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEzF,2BAA2B;IAC3B,sFAAsF;IACtF,uFAAuF;IACvF,+CAA+C;IAC/C,IAAI,YAAY,CAAC;IAEjB,IAAI,iBAAiB,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7C,0EAA0E;QAC1E,YAAY,GAAG,wBAAwB,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACjF,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC;QACrC,oFAAoF;QACpF,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAE5C,CAAC;gBACF,IAAI,aAAa,CAAC,YAAY,EAAE,CAAC;oBAC/B,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,YAAY;QACZ,GAAG,MAAM;KACC,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,IAAgB,EAChB,KAAa,EACb,OAAgB,EAChB,aAAsB,EACtB,UAAmB,EACnB,WAAoB;IAEpB,MAAM,MAAM,GAAG,iBAAiB,CAC9B,IAAI,CAAC,OAAO,EACZ,KAAK,EACL,OAAO,EACP,aAAa,EACb,UAAU,EACV,WAAW,CACZ,CAAC;IACF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC9B,WAAoB,EACpB,KAAa,EACb,OAAgB,EAChB,UAA8B,EAC9B,WAAoB;IAEpB,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACrE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC;IAEjC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,gBAAgB,GAAI,IAAkC,CAAC,YAAY,CAAC;QAC1E,IAAI,gBAAgB,KAAK,UAAU,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CACjB,KAA4B,EAC5B,KAAa,EACb,OAAgB,EAChB,aAAsB,EACtB,UAAmB,EACnB,WAAoB;IAEpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAC9F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;IACzC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAClB,MAAe,EACf,KAAa,EACb,OAAgB,EAChB,WAAoB;IAEpB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,6BAA6B;IAC7B,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAEzF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,uCAAuC;IACvC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAKnB,KAAa,EACb,KAAa,EACb,OAAiB;IAEjB,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACpC,OAAO,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAIlD,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,4CAA4C;AAC5C,gFAAgF;AAEhF,OAAO,EAGL,YAAY,EACZ,eAAe,GAChB,MAAM,cAAc,CAAC;AAsBtB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,eAAe,CAI7B,KAAa,EAAE,KAAa,EAAE,OAAiB;IAC/C,qCAAqC;IACrC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC;YAC7B,KAAK;SACN,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAE7D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,2CAA2C;QAC3C,4CAA4C;QAC5C,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9D,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC;YACtC,KAAK;SACN,CAAC;IACJ,CAAC;IAED,kBAAkB;IAClB,OAAO;QACL,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QACd,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QACpB,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,OAAgB,EAAE,KAAa,EAAE,OAAgB;IAC1E,kEAAkE;IAClE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAEhD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,wCAAwC;IACxC,qEAAqE;IACrE,gEAAgE;IAChE,IAAI,cAAc,GAAG,SAAS,CAAC;IAE/B,yCAAyC;IACzC,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,4DAA4D;QAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACvD,cAAc,GAAG,SAAS,GAAG,YAAY,CAAC;QAE1C,oCAAoC;QACpC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,iEAAiE;YACjE,cAAc,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAqB;IACpD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC7C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,iBAAiB,QAAQ,CAAC,IAAI,YAAY,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACzE,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAE3B,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;QAC1B,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,476 @@
1
+ /**
2
+ * Schema Types
3
+ *
4
+ * Pattern element schemas for defineNode. These are pure type descriptors
5
+ * that preserve literal types for compile-time grammar computation.
6
+ *
7
+ * The key insight: defineNode returns a schema object whose TYPE carries
8
+ * all the information needed for type-level parsing. No runtime magic.
9
+ */
10
+ import type { NumberNode, StringNode, IdentNode, ConstNode, NullNode, BooleanNode, UndefinedNode } from '../primitive/index.js';
11
+ import { type } from 'arktype';
12
+ export interface Schema<TKind extends string> {
13
+ readonly kind: TKind;
14
+ }
15
+ /** Number literal pattern element */
16
+ export interface NumberSchema extends Schema<'number'> {
17
+ }
18
+ /** String literal pattern element */
19
+ export interface StringSchema<TQuotes extends readonly string[] = readonly string[]> extends Schema<'string'> {
20
+ readonly quotes: TQuotes;
21
+ }
22
+ /** Identifier pattern element */
23
+ export interface IdentSchema extends Schema<'ident'> {
24
+ }
25
+ /** Constant (exact match) pattern element */
26
+ export interface ConstSchema<TValue extends string = string> extends Schema<'const'> {
27
+ readonly value: TValue;
28
+ }
29
+ /** Null literal pattern element */
30
+ export interface NullSchema extends Schema<'null'> {
31
+ }
32
+ /** Boolean literal pattern element */
33
+ export interface BooleanSchema extends Schema<'boolean'> {
34
+ }
35
+ /** Undefined literal pattern element */
36
+ export interface UndefinedSchema extends Schema<'undefined'> {
37
+ }
38
+ /** Expression role determines which grammar level is used */
39
+ export type ExprRole = 'lhs' | 'rhs' | 'expr';
40
+ /** Recursive expression pattern element with optional type constraint and role */
41
+ export interface ExprSchema<
42
+ /** This technically shouldn't require a string
43
+ * because JSON or array or other types could be used in the future.
44
+ * For now, I would prefer that we just keep it open tbh. And validate at the
45
+ * expr()/lhs()/rhs() usage site by
46
+ * using arktype.type.validate<> (see createBox example: https://arktype.io/docs/generics).
47
+ **/
48
+ TConstraint extends string = string, TRole extends ExprRole = ExprRole> extends Schema<'expr'> {
49
+ readonly constraint?: TConstraint;
50
+ readonly role: TRole;
51
+ }
52
+ /** Base pattern schema type (without NamedSchema to avoid circular reference) */
53
+ export type PatternSchemaBase = NumberSchema | StringSchema<readonly string[]> | IdentSchema | ConstSchema<string> | NullSchema | BooleanSchema | UndefinedSchema | ExprSchema<string, ExprRole>;
54
+ /**
55
+ * A pattern schema with a binding name.
56
+ * Created by calling .as(name) on any pattern element.
57
+ *
58
+ * Uses intersection so schema properties remain accessible without unwrapping.
59
+ *
60
+ * @example
61
+ * lhs("number").as("left") // ExprSchema<"number", "lhs"> & { __named: true; name: "left" }
62
+ */
63
+ export type NamedSchema<TSchema extends PatternSchemaBase = PatternSchemaBase, TName extends string = string> = TSchema & {
64
+ readonly __named: true;
65
+ readonly name: TName;
66
+ };
67
+ /** Union of all pattern element schemas (including named) */
68
+ export type PatternSchema = PatternSchemaBase | NamedSchema;
69
+ /**
70
+ * Schema wrapper with .as() method for naming bindings.
71
+ * All pattern factories return this type.
72
+ */
73
+ export type SchemaWithAs<TSchema extends PatternSchemaBase> = TSchema & {
74
+ /** Add a binding name to this pattern element */
75
+ as<TName extends string>(name: TName): NamedSchema<TSchema, TName>;
76
+ };
77
+ /** Create a number literal pattern element */
78
+ export declare const number: () => NumberSchema & {
79
+ as<TName extends string>(name: TName): NamedSchema<NumberSchema, TName>;
80
+ };
81
+ /** Create a string literal pattern element */
82
+ export declare const string: <const TQuotes extends readonly string[]>(quotes: TQuotes) => StringSchema<TQuotes> & {
83
+ as<TName extends string>(name: TName): NamedSchema<StringSchema<TQuotes>, TName>;
84
+ };
85
+ /** Create an identifier pattern element */
86
+ export declare const ident: () => IdentSchema & {
87
+ as<TName extends string>(name: TName): NamedSchema<IdentSchema, TName>;
88
+ };
89
+ /** Create a constant (exact match) pattern element */
90
+ export declare const constVal: <const TValue extends string>(value: TValue) => ConstSchema<TValue> & {
91
+ as<TName extends string>(name: TName): NamedSchema<ConstSchema<TValue>, TName>;
92
+ };
93
+ /** Create a null literal pattern element */
94
+ export declare const nullLiteral: () => NullSchema & {
95
+ as<TName extends string>(name: TName): NamedSchema<NullSchema, TName>;
96
+ };
97
+ /** Create a boolean literal pattern element */
98
+ export declare const booleanLiteral: () => BooleanSchema & {
99
+ as<TName extends string>(name: TName): NamedSchema<BooleanSchema, TName>;
100
+ };
101
+ /** Create an undefined literal pattern element */
102
+ export declare const undefinedLiteral: () => UndefinedSchema & {
103
+ as<TName extends string>(name: TName): NamedSchema<UndefinedSchema, TName>;
104
+ };
105
+ /**
106
+ * Create a LEFT-HAND SIDE expression element.
107
+ *
108
+ * Uses TNextLevel grammar to avoid left-recursion.
109
+ * Must be at position 0 in a pattern.
110
+ *
111
+ * The constraint parameter is validated at compile time using arktype.
112
+ * Invalid type strings like 'garbage' will cause TypeScript errors.
113
+ *
114
+ * @example
115
+ * ```ts
116
+ * const add = defineNode({
117
+ * pattern: [lhs("number").as("left"), constVal("+"), rhs("number").as("right")],
118
+ * // lhs parses at higher precedence to avoid infinite recursion
119
+ * });
120
+ *
121
+ * // Valid arktype constraints:
122
+ * lhs('number') // primitive
123
+ * lhs('string.email') // subtype
124
+ * lhs('number >= 0') // constraint
125
+ * lhs('string | number') // union
126
+ *
127
+ * // Invalid - causes compile error:
128
+ * // lhs('garbage')
129
+ * ```
130
+ */
131
+ export declare const lhs: <const TConstraint extends string>(constraint?: type.validate<TConstraint>) => ExprSchema<TConstraint, "lhs"> & {
132
+ as<TName extends string>(name: TName): NamedSchema<ExprSchema<TConstraint, "lhs">, TName>;
133
+ };
134
+ /**
135
+ * Create a RIGHT-HAND SIDE expression element.
136
+ *
137
+ * Uses TCurrentLevel grammar to maintain precedence and enable right-associativity.
138
+ * Used for right operands of binary operators.
139
+ *
140
+ * The constraint parameter is validated at compile time using arktype.
141
+ * Invalid type strings like 'garbage' will cause TypeScript errors.
142
+ *
143
+ * @example
144
+ * ```ts
145
+ * const add = defineNode({
146
+ * pattern: [lhs("number").as("left"), constVal("+"), rhs("number").as("right")],
147
+ * // rhs parses at same level for right-associativity: 1+2+3 = 1+(2+3)
148
+ * });
149
+ *
150
+ * // Valid arktype constraints:
151
+ * rhs('number') // primitive
152
+ * rhs('string.email') // subtype
153
+ * rhs('number >= 0') // constraint
154
+ * rhs('string | number') // union
155
+ *
156
+ * // Invalid - causes compile error:
157
+ * // rhs('garbage')
158
+ * ```
159
+ */
160
+ export declare const rhs: <const TConstraint extends string>(constraint?: type.validate<TConstraint>) => ExprSchema<TConstraint, "rhs"> & {
161
+ as<TName extends string>(name: TName): NamedSchema<ExprSchema<TConstraint, "rhs">, TName>;
162
+ };
163
+ /**
164
+ * Create a FULL expression element.
165
+ *
166
+ * Uses TFullGrammar - resets to full grammar (precedence 0).
167
+ * Used for delimited contexts like parentheses, ternary branches, function arguments.
168
+ *
169
+ * The constraint parameter is validated at compile time using arktype.
170
+ * Invalid type strings like 'garbage' will cause TypeScript errors.
171
+ *
172
+ * @example
173
+ * ```ts
174
+ * const parens = defineNode({
175
+ * pattern: [constVal("("), expr().as("inner"), constVal(")")],
176
+ * // expr() can contain ANY expression, including low-precedence operators
177
+ * });
178
+ *
179
+ * const ternary = defineNode({
180
+ * pattern: [lhs("boolean").as("cond"), constVal("?"), expr().as("then"), constVal(":"), expr().as("else")],
181
+ * // The branches can contain any expression
182
+ * });
183
+ *
184
+ * // Valid arktype constraints:
185
+ * expr('number') // primitive
186
+ * expr('string.email') // subtype
187
+ * expr('number >= 0') // constraint
188
+ * expr('string | number') // union
189
+ *
190
+ * // Invalid - causes compile error:
191
+ * // expr('garbage')
192
+ * ```
193
+ */
194
+ export declare const expr: <const TConstraint extends string>(constraint?: type.validate<TConstraint>) => ExprSchema<TConstraint, "expr"> & {
195
+ as<TName extends string>(name: TName): NamedSchema<ExprSchema<TConstraint, "expr">, TName>;
196
+ };
197
+ /** Precedence type: number for operators (lower = binds looser) */
198
+ export type Precedence = number;
199
+ /**
200
+ * Marker for computed union result types.
201
+ * When used as resultType, the outputSchema is computed at parse time
202
+ * as the union of the outputSchemas from the specified bindings.
203
+ *
204
+ * @example
205
+ * ```ts
206
+ * const ternary = defineNode({
207
+ * name: 'ternary',
208
+ * pattern: [
209
+ * lhs('boolean').as('condition'),
210
+ * constVal('?'),
211
+ * expr().as('then'),
212
+ * constVal(':'),
213
+ * rhs().as('else'),
214
+ * ],
215
+ * precedence: 1,
216
+ * resultType: { union: ['then', 'else'] }, // Computed union of then/else types
217
+ * });
218
+ *
219
+ * // Parsing 'x ? true : 0' would result in outputSchema: 'boolean | number'
220
+ * ```
221
+ */
222
+ export interface UnionResultType<TBindings extends readonly string[] = readonly string[]> {
223
+ readonly union: TBindings;
224
+ }
225
+ /**
226
+ * Result type specification for nodes.
227
+ * Can be either:
228
+ * - A string literal type (static result type validated by arktype)
229
+ * - A UnionResultType object for computed union types
230
+ */
231
+ export type ResultTypeSpec<T extends string | UnionResultType = string | UnionResultType> = T;
232
+ /**
233
+ * A node definition schema.
234
+ *
235
+ * This is the return type of defineNode. The generic parameters capture
236
+ * all the literal types needed for compile-time grammar computation:
237
+ * - TName: The unique node name (e.g., "add", "mul")
238
+ * - TPattern: The pattern elements as a tuple type
239
+ * - TPrecedence: The precedence (lower = binds looser, tried first)
240
+ * - TResultType: The result type (e.g., "number", "string", or UnionResultType)
241
+ */
242
+ export interface NodeSchema<TName extends string = string, TPattern extends readonly PatternSchema[] = readonly PatternSchema[], TPrecedence extends Precedence = Precedence, TResultType = unknown> {
243
+ readonly name: TName;
244
+ readonly pattern: TPattern;
245
+ readonly precedence: TPrecedence;
246
+ readonly resultType: TResultType;
247
+ /**
248
+ * Optional: Transform parsed bindings into node fields.
249
+ * If not provided, bindings are used directly as fields.
250
+ *
251
+ * @param bindings - The named values extracted from pattern via .as()
252
+ * @param ctx - The parse context
253
+ * @returns The fields to add to the AST node
254
+ */
255
+ readonly configure?: ConfigureFn;
256
+ /**
257
+ * Optional: Evaluate the AST node to produce a runtime value.
258
+ *
259
+ * @param node - The full AST node including name, outputSchema, and fields
260
+ * @param ctx - The evaluation context
261
+ * @returns The evaluated value
262
+ */
263
+ readonly eval?: EvalFn;
264
+ }
265
+ /** Stored function type for configure - loose for variance compatibility */
266
+ export type ConfigureFn = <$>(bindings: Record<string, unknown>, ctx: $) => Record<string, unknown>;
267
+ /** Stored function type for eval - loose for variance compatibility */
268
+ export type EvalFn = <$>(values: Record<string, unknown>, ctx: $) => unknown;
269
+ /**
270
+ * Define a node type for the grammar.
271
+ *
272
+ * The `const` modifier on generics ensures literal types are preserved:
273
+ * - name: "add" (not string)
274
+ * - pattern: readonly [ExprSchema<"number">, ConstSchema<"+">, ExprSchema<"number">]
275
+ * - precedence: 1 or "atom" (not number | "atom")
276
+ * - resultType: "number" (not string), or { union: ['then', 'else'] } for computed unions
277
+ *
278
+ * The resultType parameter is validated at compile time using arktype (for string types).
279
+ * Invalid type strings like 'garbage' will cause TypeScript errors.
280
+ * Valid arktype types include: primitives, subtypes (string.email), constraints (number >= 0), unions.
281
+ *
282
+ * For computed union types, use { union: ['bindingA', 'bindingB'] } to compute the
283
+ * outputSchema as the union of the outputSchemas of the named bindings.
284
+ *
285
+ * @example
286
+ * ```ts
287
+ * // Static result type
288
+ * const add = defineNode({
289
+ * name: "add",
290
+ * pattern: [lhs("number").as("left"), constVal("+"), rhs("number").as("right")],
291
+ * precedence: 1,
292
+ * resultType: "number",
293
+ * eval: ({ left, right }) => left + right,
294
+ * });
295
+ *
296
+ * // Computed union result type
297
+ * const ternary = defineNode({
298
+ * name: "ternary",
299
+ * pattern: [
300
+ * lhs("boolean").as("condition"),
301
+ * constVal("?"),
302
+ * expr().as("then"),
303
+ * constVal(":"),
304
+ * rhs().as("else"),
305
+ * ],
306
+ * precedence: 0,
307
+ * resultType: { union: ["then", "else"] }, // outputSchema = then | else
308
+ * eval: ({ condition, then, else: elseVal }) => (condition ? then : elseVal),
309
+ * });
310
+ *
311
+ * // Valid resultType examples:
312
+ * // resultType: 'string' // primitive
313
+ * // resultType: 'string.email' // subtype
314
+ * // resultType: 'number >= 0' // constraint
315
+ * // resultType: 'string | number' // static union
316
+ * // resultType: { union: ['a', 'b'] } // computed union from bindings
317
+ *
318
+ * // Invalid - causes compile error:
319
+ * // resultType: 'garbage'
320
+ * ```
321
+ */
322
+ export declare function defineNode<const TName extends string, const TPattern extends readonly PatternSchema[], const TPrecedence extends Precedence, const TBindings extends readonly string[]>(config: {
323
+ readonly name: TName;
324
+ readonly pattern: TPattern;
325
+ readonly precedence: TPrecedence;
326
+ readonly resultType: UnionResultType<TBindings>;
327
+ readonly configure?: <$>(bindings: InferBindings<TPattern>, ctx: $) => Record<string, unknown>;
328
+ readonly eval?: <$>(values: InferEvaluatedBindings<TPattern>, ctx: $) => unknown;
329
+ }): NodeSchema<TName, TPattern, TPrecedence, UnionResultType<TBindings>>;
330
+ export declare function defineNode<const TName extends string, const TPattern extends readonly PatternSchema[], const TPrecedence extends Precedence, const TResultType extends UnionResultType>(config: {
331
+ readonly name: TName;
332
+ readonly pattern: TPattern;
333
+ readonly precedence: TPrecedence;
334
+ readonly resultType: TResultType;
335
+ readonly configure?: <$>(bindings: InferBindings<TPattern>, ctx: $) => Record<string, unknown>;
336
+ readonly eval?: <$>(values: InferEvaluatedBindings<TPattern>, ctx: $) => unknown;
337
+ }): NodeSchema<TName, TPattern, TPrecedence, TResultType>;
338
+ export declare function defineNode<const TName extends string, const TPattern extends readonly PatternSchema[], const TPrecedence extends Precedence, const TResultType>(config: {
339
+ readonly name: TName;
340
+ readonly pattern: TPattern;
341
+ readonly precedence: TPrecedence;
342
+ readonly resultType: type.validate<TResultType>;
343
+ readonly configure?: <$>(bindings: InferBindings<TPattern>, ctx: $) => Record<string, unknown>;
344
+ readonly eval?: <$>(values: InferEvaluatedBindings<TPattern>, ctx: $) => unknown;
345
+ }): NodeSchema<TName, TPattern, TPrecedence, TResultType>;
346
+ /** Extract the operator from a binary pattern (second element should be ConstSchema) */
347
+ export type ExtractOperator<T extends readonly PatternSchema[]> = T extends readonly [
348
+ PatternSchema,
349
+ infer Op extends ConstSchema,
350
+ PatternSchema
351
+ ] ? Op['value'] : never;
352
+ /**
353
+ * Validate that a type definition string is a valid arktype definition.
354
+ * This is used at compile time to reject invalid type strings like 'garbage'.
355
+ *
356
+ * @example
357
+ * ```ts
358
+ * type Valid = ValidArkType<'number'>; // 'number' - valid
359
+ * type Valid2 = ValidArkType<'string.email'>; // 'string.email' - valid
360
+ * type Invalid = ValidArkType<'garbage'>; // never - invalid
361
+ * ```
362
+ */
363
+ export type ValidArkType<T extends string> = type.validate<T>;
364
+ /**
365
+ * Map a valid arktype schema string to its TypeScript runtime type.
366
+ * Uses arktype's type.infer directly (no fallback for invalid types).
367
+ *
368
+ * Correctly infers types for:
369
+ * - Primitives: 'number', 'string', 'boolean', 'null', 'undefined'
370
+ * - Subtypes: 'string.email', 'number.integer' → base type (string, number)
371
+ * - Constraints: 'number >= 0' → base type (number)
372
+ * - Unions: 'string | number' → union type (string | number)
373
+ *
374
+ * Returns `never` for invalid type strings (no fallback).
375
+ * Use `SchemaToType` if you need a fallback to `unknown`.
376
+ *
377
+ * @example
378
+ * ```ts
379
+ * type N = ArkTypeSchemaToType<'number'>; // number
380
+ * type S = ArkTypeSchemaToType<'string'>; // string
381
+ * type E = ArkTypeSchemaToType<'string.email'>; // string
382
+ * type C = ArkTypeSchemaToType<'number >= 0'>; // number
383
+ * type U = ArkTypeSchemaToType<'string | number'>; // string | number
384
+ * type X = ArkTypeSchemaToType<'invalid'>; // never
385
+ * ```
386
+ */
387
+ export type ArkTypeSchemaToType<T extends string> = type.infer<T>;
388
+ /**
389
+ * Map a schema type string to its TypeScript runtime type.
390
+ *
391
+ * Uses arktype's `type.infer<T>` to infer TypeScript types from ANY valid
392
+ * arktype type string.
393
+ *
394
+ * Supports ALL arktype types:
395
+ * - Primitives: 'number', 'string', 'boolean', 'null', 'undefined', 'unknown'
396
+ * - Subtypes: 'string.email', 'string.uuid', 'number.integer', etc.
397
+ * - Constraints: 'number >= 0', 'number > 0', '1 <= number <= 100', etc.
398
+ * - Unions: 'string | number', 'boolean | null', etc.
399
+ * - Arrays: 'string[]', 'number[]', '(string | number)[]', etc.
400
+ *
401
+ * Falls back to `unknown` for:
402
+ * - Generic 'string' type (not a literal)
403
+ * - Invalid arktype type strings
404
+ *
405
+ * @example
406
+ * ```ts
407
+ * type N = SchemaToType<'number'>; // number
408
+ * type S = SchemaToType<'string'>; // string
409
+ * type E = SchemaToType<'string.email'>; // string
410
+ * type C = SchemaToType<'number >= 0'>; // number
411
+ * type U = SchemaToType<'string | number'>; // string | number
412
+ * type A = SchemaToType<'string[]'>; // string[]
413
+ * type X = SchemaToType<'invalid'>; // unknown (fallback)
414
+ * ```
415
+ */
416
+ export type SchemaToType<T> = string extends T ? unknown : number extends T ? unknown : boolean extends T ? unknown : [type.infer<T>] extends [never] ? unknown : type.infer<T>;
417
+ /**
418
+ * Infer the AST node type from a pattern schema.
419
+ * This maps schema types to their corresponding node types.
420
+ *
421
+ * Note: ExprSchema maps to `unknown` since the actual type depends on the constraint
422
+ * and what's parsed. The runtime parser will fill this in.
423
+ */
424
+ export type InferNodeType<TSchema extends PatternSchemaBase> = TSchema extends NumberSchema ? NumberNode : TSchema extends StringSchema ? StringNode : TSchema extends IdentSchema ? IdentNode : TSchema extends ConstSchema ? ConstNode : TSchema extends NullSchema ? NullNode : TSchema extends BooleanSchema ? BooleanNode : TSchema extends UndefinedSchema ? UndefinedNode : TSchema extends ExprSchema<infer C> ? {
425
+ outputSchema: C;
426
+ } : never;
427
+ /**
428
+ * Infer the evaluated value type from a pattern schema.
429
+ * For ExprSchema, uses the constraint to determine the runtime type.
430
+ */
431
+ export type InferEvaluatedType<TSchema extends PatternSchemaBase> = TSchema extends NumberSchema ? number : TSchema extends StringSchema ? string : TSchema extends IdentSchema ? unknown : TSchema extends ConstSchema ? never : TSchema extends NullSchema ? null : TSchema extends BooleanSchema ? boolean : TSchema extends UndefinedSchema ? undefined : TSchema extends ExprSchema<infer C extends string> ? SchemaToType<C> : never;
432
+ /**
433
+ * Extract all NamedSchema entries from a pattern tuple as a union.
434
+ */
435
+ type ExtractNamedSchemas<TPattern extends readonly PatternSchema[]> = TPattern[number] extends infer E ? E extends NamedSchema<infer S, infer N> ? {
436
+ schema: S;
437
+ name: N;
438
+ } : never : never;
439
+ /**
440
+ * Infer bindings object type from a pattern (AST nodes).
441
+ * Used for configure() - receives parsed AST nodes.
442
+ *
443
+ * @example
444
+ * ```ts
445
+ * type Pattern = [
446
+ * NamedSchema<ExprSchema<"number", "lhs">, "left">,
447
+ * ConstSchema<"+">,
448
+ * NamedSchema<ExprSchema<"number", "rhs">, "right">
449
+ * ];
450
+ * type Bindings = InferBindings<Pattern>;
451
+ * // { left: { outputSchema: "number" }; right: { outputSchema: "number" } }
452
+ * ```
453
+ */
454
+ export type InferBindings<TPattern extends readonly PatternSchema[]> = {
455
+ [K in ExtractNamedSchemas<TPattern> as K['name']]: InferNodeType<K['schema']>;
456
+ };
457
+ /**
458
+ * Infer evaluated bindings from a pattern (runtime values).
459
+ * Used for eval() - receives already-evaluated values.
460
+ *
461
+ * @example
462
+ * ```ts
463
+ * type Pattern = [
464
+ * NamedSchema<ExprSchema<"number", "lhs">, "left">,
465
+ * ConstSchema<"+">,
466
+ * NamedSchema<ExprSchema<"number", "rhs">, "right">
467
+ * ];
468
+ * type EvalBindings = InferEvaluatedBindings<Pattern>;
469
+ * // { left: number; right: number }
470
+ * ```
471
+ */
472
+ export type InferEvaluatedBindings<TPattern extends readonly PatternSchema[]> = {
473
+ [K in ExtractNamedSchemas<TPattern> as K['name']]: InferEvaluatedType<K['schema']>;
474
+ };
475
+ export {};
476
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,QAAQ,EACR,WAAW,EACX,aAAa,EACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAK/B,MAAM,WAAW,MAAM,CAAC,KAAK,SAAS,MAAM;IAC1C,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;CACtB;AAED,qCAAqC;AACrC,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,QAAQ,CAAC;CAAG;AAEzD,qCAAqC;AACrC,MAAM,WAAW,YAAY,CAC3B,OAAO,SAAS,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,CACrD,SAAQ,MAAM,CAAC,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,iCAAiC;AACjC,MAAM,WAAW,WAAY,SAAQ,MAAM,CAAC,OAAO,CAAC;CAAG;AAEvD,6CAA6C;AAC7C,MAAM,WAAW,WAAW,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,MAAM,CAAC,OAAO,CAAC;IAClF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,mCAAmC;AACnC,MAAM,WAAW,UAAW,SAAQ,MAAM,CAAC,MAAM,CAAC;CAAG;AAErD,sCAAsC;AACtC,MAAM,WAAW,aAAc,SAAQ,MAAM,CAAC,SAAS,CAAC;CAAG;AAE3D,wCAAwC;AACxC,MAAM,WAAW,eAAgB,SAAQ,MAAM,CAAC,WAAW,CAAC;CAAG;AAE/D,6DAA6D;AAC7D,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAE9C,kFAAkF;AAClF,MAAM,WAAW,UAAU;AACzB;;;;;IAKI;AACJ,WAAW,SAAS,MAAM,GAAG,MAAM,EACnC,KAAK,SAAS,QAAQ,GAAG,QAAQ,CACjC,SAAQ,MAAM,CAAC,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;CACtB;AAED,iFAAiF;AACjF,MAAM,MAAM,iBAAiB,GACzB,YAAY,GACZ,YAAY,CAAC,SAAS,MAAM,EAAE,CAAC,GAC/B,WAAW,GACX,WAAW,CAAC,MAAM,CAAC,GACnB,UAAU,GACV,aAAa,GACb,eAAe,GACf,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAMjC;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,CACrB,OAAO,SAAS,iBAAiB,GAAG,iBAAiB,EACrD,KAAK,SAAS,MAAM,GAAG,MAAM,IAC3B,OAAO,GAAG;IACZ,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;CACtB,CAAC;AAEF,6DAA6D;AAC7D,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,WAAW,CAAC;AAE5D;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,OAAO,SAAS,iBAAiB,IAAI,OAAO,GAAG;IACtE,iDAAiD;IACjD,EAAE,CAAC,KAAK,SAAS,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;CACpE,CAAC;AAiBF,8CAA8C;AAC9C,eAAO,MAAM,MAAM;OAbD,KAAK,SAAS,MAAM;CAa8B,CAAC;AAErE,8CAA8C;AAC9C,eAAO,MAAM,MAAM,GAAI,KAAK,CAAC,OAAO,SAAS,SAAS,MAAM,EAAE,EAAE,QAAQ,OAAO;OAhB7D,KAAK,SAAS,MAAM;CAiBqB,CAAC;AAE5D,2CAA2C;AAC3C,eAAO,MAAM,KAAK;OApBA,KAAK,SAAS,MAAM;CAoB2B,CAAC;AAElE,sDAAsD;AACtD,eAAO,MAAM,QAAQ,GAAI,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,OAAO,MAAM;OAvBjD,KAAK,SAAS,MAAM;CAwBiB,CAAC;AAExD,4CAA4C;AAC5C,eAAO,MAAM,WAAW;OA3BN,KAAK,SAAS,MAAM;CA2B+B,CAAC;AAEtE,+CAA+C;AAC/C,eAAO,MAAM,cAAc;OA9BT,KAAK,SAAS,MAAM;CA8BwC,CAAC;AAE/E,kDAAkD;AAClD,eAAO,MAAM,gBAAgB;OAjCX,KAAK,SAAS,MAAM;CAiC8C,CAAC;AAErF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,GAAG,GAAI,KAAK,CAAC,WAAW,SAAS,MAAM,EAAE,aAAa,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;OA7D3E,KAAK,SAAS,MAAM;CAkElC,CAAC;AAEL;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,GAAG,GAAI,KAAK,CAAC,WAAW,SAAS,MAAM,EAAE,aAAa,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;OA9F3E,KAAK,SAAS,MAAM;CAmGlC,CAAC;AAEL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,IAAI,GAAI,KAAK,CAAC,WAAW,SAAS,MAAM,EAAE,aAAa,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;OApI5E,KAAK,SAAS,MAAM;CAyIlC,CAAC;AAML,mEAAmE;AACnE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAMhC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,eAAe,CAAC,SAAS,SAAS,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE;IACtF,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,eAAe,GAAG,MAAM,GAAG,eAAe,IAAI,CAAC,CAAC;AAE9F;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU,CACzB,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,QAAQ,SAAS,SAAS,aAAa,EAAE,GAAG,SAAS,aAAa,EAAE,EACpE,WAAW,SAAS,UAAU,GAAG,UAAU,EAC3C,WAAW,GAAG,OAAO;IAErB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IAEjC;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC;IAEjC;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAuBD,4EAA4E;AAC5E,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpG,uEAAuE;AACvE,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAGH,wBAAgB,UAAU,CACxB,KAAK,CAAC,KAAK,SAAS,MAAM,EAC1B,KAAK,CAAC,QAAQ,SAAS,SAAS,aAAa,EAAE,EAC/C,KAAK,CAAC,WAAW,SAAS,UAAU,EACpC,KAAK,CAAC,SAAS,SAAS,SAAS,MAAM,EAAE,EACzC,MAAM,EAAE;IACR,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAChD,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/F,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;CAClF,GAAG,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;AAEzE,wBAAgB,UAAU,CACxB,KAAK,CAAC,KAAK,SAAS,MAAM,EAC1B,KAAK,CAAC,QAAQ,SAAS,SAAS,aAAa,EAAE,EAC/C,KAAK,CAAC,WAAW,SAAS,UAAU,EACpC,KAAK,CAAC,WAAW,SAAS,eAAe,EACzC,MAAM,EAAE;IACR,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/F,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;CAClF,GAAG,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AAG1D,wBAAgB,UAAU,CACxB,KAAK,CAAC,KAAK,SAAS,MAAM,EAC1B,KAAK,CAAC,QAAQ,SAAS,SAAS,aAAa,EAAE,EAC/C,KAAK,CAAC,WAAW,SAAS,UAAU,EACpC,KAAK,CAAC,WAAW,EACjB,MAAM,EAAE;IACR,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAChD,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/F,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;CAClF,GAAG,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AAuB1D,wFAAwF;AACxF,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,SAAS,aAAa,EAAE,IAAI,CAAC,SAAS,SAAS;IACnF,aAAa;IACb,MAAM,EAAE,SAAS,WAAW;IAC5B,aAAa;CACd,GACG,EAAE,CAAC,OAAO,CAAC,GACX,KAAK,CAAC;AAMV;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAMlE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,MAAM,MAAM,YAAY,CAAC,CAAC,IAExB,MAAM,SAAS,CAAC,GAAG,OAAO,GACxB,MAAM,SAAS,CAAC,GAAG,OAAO,GAC1B,OAAO,SAAS,CAAC,GAAG,OAAO,GAE3B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,OAAO,GACzC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAElB;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,iBAAiB,IAAI,OAAO,SAAS,YAAY,GACvF,UAAU,GACV,OAAO,SAAS,YAAY,GAC1B,UAAU,GACV,OAAO,SAAS,WAAW,GACzB,SAAS,GACT,OAAO,SAAS,WAAW,GACzB,SAAS,GACT,OAAO,SAAS,UAAU,GACxB,QAAQ,GACR,OAAO,SAAS,aAAa,GAC3B,WAAW,GACX,OAAO,SAAS,eAAe,GAC7B,aAAa,GACb,OAAO,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GACjC;IAAE,YAAY,EAAE,CAAC,CAAA;CAAE,GACnB,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,iBAAiB,IAAI,OAAO,SAAS,YAAY,GAC5F,MAAM,GACN,OAAO,SAAS,YAAY,GAC1B,MAAM,GACN,OAAO,SAAS,WAAW,GACzB,OAAO,GACP,OAAO,SAAS,WAAW,GACzB,KAAK,GACL,OAAO,SAAS,UAAU,GACxB,IAAI,GACJ,OAAO,SAAS,aAAa,GAC3B,OAAO,GACP,OAAO,SAAS,eAAe,GAC7B,SAAS,GACT,OAAO,SAAS,UAAU,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,GAChD,YAAY,CAAC,CAAC,CAAC,GACf,KAAK,CAAC;AAExB;;GAEG;AACH,KAAK,mBAAmB,CAAC,QAAQ,SAAS,SAAS,aAAa,EAAE,IAChE,QAAQ,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,GAC5B,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GACrC;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GACtB,KAAK,GACP,KAAK,CAAC;AAEZ;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,SAAS,aAAa,EAAE,IAAI;KACpE,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;CAC9E,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,sBAAsB,CAAC,QAAQ,SAAS,SAAS,aAAa,EAAE,IAAI;KAC7E,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;CACnF,CAAC"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Schema Types
3
+ *
4
+ * Pattern element schemas for defineNode. These are pure type descriptors
5
+ * that preserve literal types for compile-time grammar computation.
6
+ *
7
+ * The key insight: defineNode returns a schema object whose TYPE carries
8
+ * all the information needed for type-level parsing. No runtime magic.
9
+ */
10
+ /** Create a schema wrapper with .as() method */
11
+ function withAs(schema) {
12
+ return Object.assign(schema, {
13
+ as(name) {
14
+ return { ...schema, __named: true, name };
15
+ },
16
+ });
17
+ }
18
+ // =============================================================================
19
+ // Pattern Element Factories
20
+ // =============================================================================
21
+ /** Create a number literal pattern element */
22
+ export const number = () => withAs({ kind: 'number' });
23
+ /** Create a string literal pattern element */
24
+ export const string = (quotes) => withAs({ kind: 'string', quotes });
25
+ /** Create an identifier pattern element */
26
+ export const ident = () => withAs({ kind: 'ident' });
27
+ /** Create a constant (exact match) pattern element */
28
+ export const constVal = (value) => withAs({ kind: 'const', value });
29
+ /** Create a null literal pattern element */
30
+ export const nullLiteral = () => withAs({ kind: 'null' });
31
+ /** Create a boolean literal pattern element */
32
+ export const booleanLiteral = () => withAs({ kind: 'boolean' });
33
+ /** Create an undefined literal pattern element */
34
+ export const undefinedLiteral = () => withAs({ kind: 'undefined' });
35
+ /**
36
+ * Create a LEFT-HAND SIDE expression element.
37
+ *
38
+ * Uses TNextLevel grammar to avoid left-recursion.
39
+ * Must be at position 0 in a pattern.
40
+ *
41
+ * The constraint parameter is validated at compile time using arktype.
42
+ * Invalid type strings like 'garbage' will cause TypeScript errors.
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * const add = defineNode({
47
+ * pattern: [lhs("number").as("left"), constVal("+"), rhs("number").as("right")],
48
+ * // lhs parses at higher precedence to avoid infinite recursion
49
+ * });
50
+ *
51
+ * // Valid arktype constraints:
52
+ * lhs('number') // primitive
53
+ * lhs('string.email') // subtype
54
+ * lhs('number >= 0') // constraint
55
+ * lhs('string | number') // union
56
+ *
57
+ * // Invalid - causes compile error:
58
+ * // lhs('garbage')
59
+ * ```
60
+ */
61
+ export const lhs = (constraint) => withAs({
62
+ kind: 'expr',
63
+ constraint: constraint,
64
+ role: 'lhs',
65
+ });
66
+ /**
67
+ * Create a RIGHT-HAND SIDE expression element.
68
+ *
69
+ * Uses TCurrentLevel grammar to maintain precedence and enable right-associativity.
70
+ * Used for right operands of binary operators.
71
+ *
72
+ * The constraint parameter is validated at compile time using arktype.
73
+ * Invalid type strings like 'garbage' will cause TypeScript errors.
74
+ *
75
+ * @example
76
+ * ```ts
77
+ * const add = defineNode({
78
+ * pattern: [lhs("number").as("left"), constVal("+"), rhs("number").as("right")],
79
+ * // rhs parses at same level for right-associativity: 1+2+3 = 1+(2+3)
80
+ * });
81
+ *
82
+ * // Valid arktype constraints:
83
+ * rhs('number') // primitive
84
+ * rhs('string.email') // subtype
85
+ * rhs('number >= 0') // constraint
86
+ * rhs('string | number') // union
87
+ *
88
+ * // Invalid - causes compile error:
89
+ * // rhs('garbage')
90
+ * ```
91
+ */
92
+ export const rhs = (constraint) => withAs({
93
+ kind: 'expr',
94
+ constraint: constraint,
95
+ role: 'rhs',
96
+ });
97
+ /**
98
+ * Create a FULL expression element.
99
+ *
100
+ * Uses TFullGrammar - resets to full grammar (precedence 0).
101
+ * Used for delimited contexts like parentheses, ternary branches, function arguments.
102
+ *
103
+ * The constraint parameter is validated at compile time using arktype.
104
+ * Invalid type strings like 'garbage' will cause TypeScript errors.
105
+ *
106
+ * @example
107
+ * ```ts
108
+ * const parens = defineNode({
109
+ * pattern: [constVal("("), expr().as("inner"), constVal(")")],
110
+ * // expr() can contain ANY expression, including low-precedence operators
111
+ * });
112
+ *
113
+ * const ternary = defineNode({
114
+ * pattern: [lhs("boolean").as("cond"), constVal("?"), expr().as("then"), constVal(":"), expr().as("else")],
115
+ * // The branches can contain any expression
116
+ * });
117
+ *
118
+ * // Valid arktype constraints:
119
+ * expr('number') // primitive
120
+ * expr('string.email') // subtype
121
+ * expr('number >= 0') // constraint
122
+ * expr('string | number') // union
123
+ *
124
+ * // Invalid - causes compile error:
125
+ * // expr('garbage')
126
+ * ```
127
+ */
128
+ export const expr = (constraint) => withAs({
129
+ kind: 'expr',
130
+ constraint: constraint,
131
+ role: 'expr',
132
+ });
133
+ // Implementation
134
+ export function defineNode(config) {
135
+ return config;
136
+ }
137
+ //# sourceMappingURL=index.js.map