cloudflare-expression-lint 0.1.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/CLAUDE.md +57 -0
- package/LICENSE +21 -0
- package/README.md +375 -0
- package/dist/cli.d.ts +22 -0
- package/dist/cli.js +363 -0
- package/dist/cli.js.map +1 -0
- package/dist/eslint-plugin.d.ts +67 -0
- package/dist/eslint-plugin.js +211 -0
- package/dist/eslint-plugin.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/lexer.d.ts +11 -0
- package/dist/lexer.js +416 -0
- package/dist/lexer.js.map +1 -0
- package/dist/parser.d.ts +16 -0
- package/dist/parser.js +320 -0
- package/dist/parser.js.map +1 -0
- package/dist/schemas/fields.d.ts +44 -0
- package/dist/schemas/fields.js +282 -0
- package/dist/schemas/fields.js.map +1 -0
- package/dist/schemas/functions.d.ts +33 -0
- package/dist/schemas/functions.js +261 -0
- package/dist/schemas/functions.js.map +1 -0
- package/dist/schemas/operators.d.ts +28 -0
- package/dist/schemas/operators.js +37 -0
- package/dist/schemas/operators.js.map +1 -0
- package/dist/types.d.ts +149 -0
- package/dist/types.js +38 -0
- package/dist/types.js.map +1 -0
- package/dist/validator.d.ts +18 -0
- package/dist/validator.js +420 -0
- package/dist/validator.js.map +1 -0
- package/dist/yaml-scanner.d.ts +97 -0
- package/dist/yaml-scanner.js +175 -0
- package/dist/yaml-scanner.js.map +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAiB,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAA0B,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAOhE,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,UAAkB,EAAE,OAA0B;IACrE,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,0BAA0B;IAC1B,IAAI,UAAU,CAAC,MAAM,GAAG,qBAAqB,EAAE,CAAC;QAC9C,WAAW,CAAC,IAAI,CAAC;YACf,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,iBAAiB,UAAU,CAAC,MAAM,8BAA8B,qBAAqB,kBAAkB;YAChH,IAAI,EAAE,qBAAqB;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,eAAe;IACf,IAAI,GAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,IAAI,CAAC;YACf,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACzD,IAAI,EAAE,aAAa;SACpB,CAAC,CAAC;QACH,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IACnD,CAAC;IAED,uCAAuC;IACvC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEjB,8CAA8C;IAC9C,MAAM,CAAC,mBAAmB,EAAE,CAAC;IAC7B,MAAM,CAAC,eAAe,EAAE,CAAC;IAEzB,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAChE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,SAAS;IACL,OAAO,CAAoB;IAC3B,WAAW,CAAe;IAC1B,cAAc,GAAwB,IAAI,GAAG,EAAE,CAAC;IAChD,UAAU,GAAW,CAAC,CAAC;IAE/B,YAAY,OAA0B,EAAE,WAAyB;QAC/D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,IAAa;QAChB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,aAAa;gBAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC9C,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;gBACnC,MAAM;YAER,KAAK,cAAc;gBACjB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClF,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,CAAC;gBACD,MAAM;YAER,KAAK,YAAY;gBACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;gBACnC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBAC3B,MAAM;YAER,KAAK,SAAS;gBACZ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtB,MAAM;YAER,KAAK,KAAK;gBACR,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,MAAM;YAER,KAAK,cAAc;gBACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,CAAC;gBACD,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM;YAER,KAAK,OAAO;gBACV,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3B,MAAM;YAER,KAAK,aAAa;gBAChB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtB,MAAM;YAER,KAAK,WAAW;gBACd,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACjD,MAAM;YAER,KAAK,gBAAgB,CAAC;YACtB,KAAK,eAAe,CAAC;YACrB,KAAK,gBAAgB,CAAC;YACtB,KAAK,cAAc;gBACjB,MAAM;YAER,KAAK,WAAW;gBACd,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC5B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC9D,CAAC;gBACD,MAAM;QACV,CAAC;IACH,CAAC;IAED,sEAAsE;IAE9D,aAAa,CAAC,SAAiB,EAAE,QAAiB;QACxD,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QAEnC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;oBACpB,QAAQ,EAAE,SAAS;oBACnB,OAAO,EAAE,UAAU,SAAS,kBAAkB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,WAAW,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC/G,IAAI,EAAE,kBAAkB;oBACxB,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC/C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;wBACpB,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,UAAU,SAAS,gCAAgC,IAAI,CAAC,OAAO,CAAC,KAAK,oBAAoB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAC3H,IAAI,EAAE,oBAAoB;wBAC1B,QAAQ;qBACT,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;gBACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;oBACpB,QAAQ,EAAE,SAAS;oBACnB,OAAO,EAAE,UAAU,SAAS,CAAC,IAAI,kBAAkB,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,SAAS,CAAC,WAAW,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC5H,IAAI,EAAE,kBAAkB;oBACxB,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACpB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,kBAAkB,SAAS,GAAG;YACvC,IAAI,EAAE,eAAe;YACrB,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED,sEAAsE;IAE9D,uBAAuB,CAAC,IAAa;QAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa;YAAE,OAAO;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,4DAA4D;QAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,KAAK,sBAAsB;YACzD,IAAI,CAAC,KAAK,KAAK,uBAAuB;YACtC,IAAI,CAAC,KAAK,KAAK,0BAA0B;YACzC,IAAI,CAAC,KAAK,KAAK,2BAA2B,CAAC;QAE7C,IAAI,aAAa,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;YAC/D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,eAAe,IAAI,CAAC,MAAM,+EAA+E,IAAI,CAAC,MAAM,4BAA4B,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY;gBAC9L,IAAI,EAAE,0BAA0B;gBAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,sEAAsE;IAE9D,qBAAqB,CAAC,IAAa;QACzC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;YAAE,OAAO;QAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,KAAK,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,qCAAqC;QAEzD,iDAAiD;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,oDAAoD;QAE5E,iDAAiD;QACjD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,aAAa,KAAK,CAAC,IAAI,sBAAsB,SAAS,6BAA6B,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC7H,IAAI,EAAE,wBAAwB;gBAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,sEAAsE;IAE9D,oBAAoB,CAAC,IAAa;QACxC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;YAAE,OAAO;QAEvC,oEAAoE;QACpE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;YAAE,OAAO;QAEvC,qCAAqC;QACrC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO;QAE9E,wCAAwC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO;QAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QAC/E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACpB,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,gBAAgB,SAAS,WAAW,SAAS,IAAI,EAAE,QAAQ;YACpE,IAAI,EAAE,qBAAqB;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;IAED,sEAAsE;IAEtE;;;OAGG;IACK,gBAAgB,CAAC,IAAa;QACpC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpC,IAAI,KAAK,EAAE,CAAC;oBACV,2EAA2E;oBAC3E,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;wBAC/D,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK;4BAAE,OAAO,QAAQ,CAAC;wBAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;4BAAE,OAAO,QAAQ,CAAC;oBAC9C,CAAC;oBACD,OAAO,KAAK,CAAC,IAAI,CAAC;gBACpB,CAAC;gBACD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,IAAI,EAAE,CAAC;oBACT,kDAAkD;oBAClD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;wBAAE,OAAO,QAAQ,CAAC;oBACzC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;wBAAE,OAAO,QAAQ,CAAC;gBAC7C,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrC,OAAO,IAAI,EAAE,UAAU,CAAC;YAC1B,CAAC;YAED,KAAK,eAAe;gBAClB,OAAO,QAAQ,CAAC;YAClB,KAAK,gBAAgB;gBACnB,OAAO,SAAS,CAAC;YACnB,KAAK,cAAc;gBACjB,OAAO,OAAO,CAAC;YACjB,KAAK,gBAAgB;gBACnB,OAAO,SAAS,CAAC;YACnB,KAAK,WAAW;gBACd,OAAO,IAAI,CAAC;YAEd,KAAK,aAAa;gBAChB,+DAA+D;gBAC/D,OAAO,QAAQ,CAAC;YAElB,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEhD;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IAED,uEAAuE;IAE/D,uBAAuB,CAAC,IAAa;QAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;YAAE,OAAO;QACvC,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,KAAK,iBAAiB;YAAE,OAAO;QAEhF,qCAAqC;QACrC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,gFAAgF;gBACzF,IAAI,EAAE,0BAA0B;gBAChC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;aAC9B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,sEAAsE;IAE9D,eAAe,CAAC,IAAa;QACnC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;YAAE,OAAO;QACvC,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;YACzD,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,mBAAmB,IAAI,CAAC,UAAU,qDAAqD;gBAChG,IAAI,EAAE,gBAAgB;aACvB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,sEAAsE;IAE9D,yBAAyB,CAAC,IAAa;QAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc;YAAE,OAAO;QAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,+DAA+D;QAC/D,MAAM,gBAAgB,GAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAClE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,kCAAkC,SAAS,6BAA6B,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC9G,IAAI,EAAE,wBAAwB;gBAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,sEAAsE;IAE9D,mBAAmB,CAAC,IAAa;QACvC,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc;YAAE,OAAO;QACzC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,uDAAuD;gBAChE,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,uEAAuE;IAE/D,iBAAiB,CAAC,IAAY,EAAE,QAAiB;QACvD,sBAAsB;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7D,yDAAyD;QACzD,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO;QAEvC,qEAAqE;QACrE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,eAAe,IAAI,6GAA6G;gBACzI,IAAI,EAAE,mBAAmB;gBACzB,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,sEAAsE;IAE9D,gBAAgB,CAAC,EAAU,EAAE,IAAY,EAAE,QAAiB;QAClE,4BAA4B;QAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAElC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,sBAAsB,IAAI,QAAQ,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,uBAAuB,OAAO,EAAE;gBACnG,IAAI,EAAE,mBAAmB;gBACzB,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,sEAAsE;IAE9D,gBAAgB,CAAC,QAAgB,EAAE,QAAiB;QAC1D,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,qBAAqB,QAAQ,GAAG;gBACzC,IAAI,EAAE,kBAAkB;gBACxB,QAAQ;aACT,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,WAAW,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACjF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;oBACpB,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,aAAa,QAAQ,yBAAyB,IAAI,CAAC,OAAO,CAAC,cAAc,+BAA+B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC3I,IAAI,EAAE,yBAAyB;oBAC/B,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,mBAAmB;QACjB,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,IAAI,EAAE,gBAAgB,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC5D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;oBACpB,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,aAAa,QAAQ,sBAAsB,IAAI,CAAC,gBAAgB,yCAAyC,KAAK,QAAQ;oBAC/H,IAAI,EAAE,uBAAuB;iBAC9B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAEO,0BAA0B,CAAC,QAAwB;QACzD,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC;YAC/B,KAAK,aAAa,CAAC,CAAC,OAAO,aAAa,CAAC;YACzC,KAAK,gBAAgB,CAAC,CAAC,OAAO,gBAAgB,CAAC;YAC/C,KAAK,iBAAiB,CAAC,CAAC,OAAO,iBAAiB,CAAC;QACnD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YAML Scanner
|
|
3
|
+
*
|
|
4
|
+
* Extracts Cloudflare expressions from YAML config files,
|
|
5
|
+
* determines their context (filter vs rewrite vs redirect),
|
|
6
|
+
* and validates them.
|
|
7
|
+
*
|
|
8
|
+
* The scanner ships with minimal built-in mappings that cover
|
|
9
|
+
* standard Cloudflare Terraform provider attribute names. Users
|
|
10
|
+
* can supply custom mappings via ScannerOptions to match their
|
|
11
|
+
* own YAML schema.
|
|
12
|
+
*/
|
|
13
|
+
import type { LintResult, ExpressionType } from './types.js';
|
|
14
|
+
export interface YAMLExpressionLocation {
|
|
15
|
+
file: string;
|
|
16
|
+
yamlPath: string;
|
|
17
|
+
line?: number;
|
|
18
|
+
expressionType: ExpressionType;
|
|
19
|
+
phase?: string;
|
|
20
|
+
expression: string;
|
|
21
|
+
}
|
|
22
|
+
export interface YAMLScanResult {
|
|
23
|
+
file: string;
|
|
24
|
+
expressions: (YAMLExpressionLocation & {
|
|
25
|
+
result: LintResult;
|
|
26
|
+
})[];
|
|
27
|
+
parseError?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Defines how a YAML key containing an expression should be interpreted.
|
|
31
|
+
*/
|
|
32
|
+
export interface ExpressionKeyMapping {
|
|
33
|
+
/** The expression type (filter, rewrite_url, etc.) */
|
|
34
|
+
type: ExpressionType;
|
|
35
|
+
/** If set, overrides any parent-inferred phase for this key */
|
|
36
|
+
phaseHint?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Maps a YAML parent key to a Cloudflare ruleset phase.
|
|
40
|
+
*
|
|
41
|
+
* When the scanner encounters a YAML object with this key, all
|
|
42
|
+
* descendant `expression` values inherit the specified phase.
|
|
43
|
+
*
|
|
44
|
+
* Example: `{ "rules": "http_request_firewall_custom" }` means
|
|
45
|
+
* any `expression` found inside a `rules:` block is treated as
|
|
46
|
+
* belonging to the `http_request_firewall_custom` phase.
|
|
47
|
+
*/
|
|
48
|
+
export type PhaseMapping = Record<string, string>;
|
|
49
|
+
/**
|
|
50
|
+
* Options for customizing how the YAML scanner detects and
|
|
51
|
+
* interprets Cloudflare expressions.
|
|
52
|
+
*/
|
|
53
|
+
export interface ScannerOptions {
|
|
54
|
+
/**
|
|
55
|
+
* Map of YAML key names to expression type + optional phase.
|
|
56
|
+
* Merged with (and overrides) the built-in defaults.
|
|
57
|
+
*
|
|
58
|
+
* Built-in keys: expression, rewrite_expression,
|
|
59
|
+
* source_url_expression, target_url_expression
|
|
60
|
+
*/
|
|
61
|
+
expressionKeys?: Record<string, ExpressionKeyMapping>;
|
|
62
|
+
/**
|
|
63
|
+
* Map of YAML parent key names to Cloudflare phases.
|
|
64
|
+
* Merged with (and overrides) the built-in defaults.
|
|
65
|
+
*
|
|
66
|
+
* Example: `{ "firewall_rules": "http_request_firewall_custom" }`
|
|
67
|
+
*/
|
|
68
|
+
phaseMappings?: PhaseMapping;
|
|
69
|
+
/**
|
|
70
|
+
* If true, replaces the built-in expression key defaults
|
|
71
|
+
* instead of merging with them.
|
|
72
|
+
*/
|
|
73
|
+
replaceExpressionKeys?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* If true, replaces the built-in phase mapping defaults
|
|
76
|
+
* instead of merging with them.
|
|
77
|
+
*/
|
|
78
|
+
replacePhaseMappings?: boolean;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Scan a YAML file content for Cloudflare expressions and validate them.
|
|
82
|
+
*
|
|
83
|
+
* @param content - Raw YAML file content
|
|
84
|
+
* @param filePath - File path (used in diagnostics)
|
|
85
|
+
* @param options - Optional scanner customization
|
|
86
|
+
*/
|
|
87
|
+
export declare function scanYaml(content: string, filePath: string, options?: ScannerOptions): YAMLScanResult;
|
|
88
|
+
/**
|
|
89
|
+
* Get the current default expression key mappings.
|
|
90
|
+
* Useful for inspecting or extending the defaults.
|
|
91
|
+
*/
|
|
92
|
+
export declare function getDefaultExpressionKeys(): Record<string, ExpressionKeyMapping>;
|
|
93
|
+
/**
|
|
94
|
+
* Get the current default phase mappings.
|
|
95
|
+
* Useful for inspecting or extending the defaults.
|
|
96
|
+
*/
|
|
97
|
+
export declare function getDefaultPhaseMappings(): PhaseMapping;
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YAML Scanner
|
|
3
|
+
*
|
|
4
|
+
* Extracts Cloudflare expressions from YAML config files,
|
|
5
|
+
* determines their context (filter vs rewrite vs redirect),
|
|
6
|
+
* and validates them.
|
|
7
|
+
*
|
|
8
|
+
* The scanner ships with minimal built-in mappings that cover
|
|
9
|
+
* standard Cloudflare Terraform provider attribute names. Users
|
|
10
|
+
* can supply custom mappings via ScannerOptions to match their
|
|
11
|
+
* own YAML schema.
|
|
12
|
+
*/
|
|
13
|
+
import { parse as parseYaml } from 'yaml';
|
|
14
|
+
import { validate } from './validator.js';
|
|
15
|
+
// ── Built-in Defaults ────────────────────────────────────────────────
|
|
16
|
+
/**
|
|
17
|
+
* Default YAML keys that contain Cloudflare expressions.
|
|
18
|
+
*
|
|
19
|
+
* Only includes `expression` — the standard attribute name used by the
|
|
20
|
+
* Cloudflare Terraform provider (cloudflare_ruleset.rules.expression).
|
|
21
|
+
*
|
|
22
|
+
* Users should add their own keys if their YAML schema uses different
|
|
23
|
+
* names for filter, rewrite, or redirect expressions.
|
|
24
|
+
*/
|
|
25
|
+
const DEFAULT_EXPRESSION_KEYS = {
|
|
26
|
+
'expression': { type: 'filter' },
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Default phase inference from YAML parent keys.
|
|
30
|
+
*
|
|
31
|
+
* These are intentionally minimal — only mappings that directly
|
|
32
|
+
* correspond to Cloudflare phase names or widely-used conventions.
|
|
33
|
+
* Users should add their own mappings for custom YAML schemas.
|
|
34
|
+
*/
|
|
35
|
+
const DEFAULT_PHASE_MAPPINGS = {
|
|
36
|
+
// Direct Cloudflare phase names (if someone uses these as YAML keys)
|
|
37
|
+
'http_request_firewall_custom': 'http_request_firewall_custom',
|
|
38
|
+
'http_ratelimit': 'http_ratelimit',
|
|
39
|
+
'http_request_cache_settings': 'http_request_cache_settings',
|
|
40
|
+
'http_config_settings': 'http_config_settings',
|
|
41
|
+
'http_request_late_transform': 'http_request_late_transform',
|
|
42
|
+
'http_response_headers_transform': 'http_response_headers_transform',
|
|
43
|
+
'http_request_transform': 'http_request_transform',
|
|
44
|
+
'http_request_dynamic_redirect': 'http_request_dynamic_redirect',
|
|
45
|
+
'http_request_origin': 'http_request_origin',
|
|
46
|
+
'http_request_snippets': 'http_request_snippets',
|
|
47
|
+
'http_request_redirect': 'http_request_redirect',
|
|
48
|
+
// Common shorthand keys used in YAML configs
|
|
49
|
+
'cache_rules': 'http_request_cache_settings',
|
|
50
|
+
'rate_limit_rules': 'http_ratelimit',
|
|
51
|
+
'ratelimit_rules': 'http_ratelimit',
|
|
52
|
+
'single_redirects': 'http_request_dynamic_redirect',
|
|
53
|
+
'origin_rules': 'http_request_origin',
|
|
54
|
+
};
|
|
55
|
+
// ── Public API ───────────────────────────────────────────────────────
|
|
56
|
+
/**
|
|
57
|
+
* Scan a YAML file content for Cloudflare expressions and validate them.
|
|
58
|
+
*
|
|
59
|
+
* @param content - Raw YAML file content
|
|
60
|
+
* @param filePath - File path (used in diagnostics)
|
|
61
|
+
* @param options - Optional scanner customization
|
|
62
|
+
*/
|
|
63
|
+
export function scanYaml(content, filePath, options) {
|
|
64
|
+
const expressionKeys = buildExpressionKeys(options);
|
|
65
|
+
const phaseMappings = buildPhaseMappings(options);
|
|
66
|
+
let doc;
|
|
67
|
+
try {
|
|
68
|
+
doc = parseYaml(content);
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
return {
|
|
72
|
+
file: filePath,
|
|
73
|
+
expressions: [],
|
|
74
|
+
parseError: err instanceof Error ? err.message : String(err),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
const locations = [];
|
|
78
|
+
walkYaml(doc, [], locations, filePath, undefined, expressionKeys, phaseMappings);
|
|
79
|
+
const expressions = locations.map(loc => {
|
|
80
|
+
const ctx = {
|
|
81
|
+
expressionType: loc.expressionType,
|
|
82
|
+
phase: loc.phase,
|
|
83
|
+
allowPlaceholders: true,
|
|
84
|
+
};
|
|
85
|
+
const result = validate(loc.expression, ctx);
|
|
86
|
+
return { ...loc, result };
|
|
87
|
+
});
|
|
88
|
+
return { file: filePath, expressions };
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get the current default expression key mappings.
|
|
92
|
+
* Useful for inspecting or extending the defaults.
|
|
93
|
+
*/
|
|
94
|
+
export function getDefaultExpressionKeys() {
|
|
95
|
+
return { ...DEFAULT_EXPRESSION_KEYS };
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get the current default phase mappings.
|
|
99
|
+
* Useful for inspecting or extending the defaults.
|
|
100
|
+
*/
|
|
101
|
+
export function getDefaultPhaseMappings() {
|
|
102
|
+
return { ...DEFAULT_PHASE_MAPPINGS };
|
|
103
|
+
}
|
|
104
|
+
// ── Internal Helpers ─────────────────────────────────────────────────
|
|
105
|
+
function buildExpressionKeys(options) {
|
|
106
|
+
if (!options?.expressionKeys)
|
|
107
|
+
return DEFAULT_EXPRESSION_KEYS;
|
|
108
|
+
if (options.replaceExpressionKeys)
|
|
109
|
+
return options.expressionKeys;
|
|
110
|
+
return { ...DEFAULT_EXPRESSION_KEYS, ...options.expressionKeys };
|
|
111
|
+
}
|
|
112
|
+
function buildPhaseMappings(options) {
|
|
113
|
+
if (!options?.phaseMappings)
|
|
114
|
+
return DEFAULT_PHASE_MAPPINGS;
|
|
115
|
+
if (options.replacePhaseMappings)
|
|
116
|
+
return options.phaseMappings;
|
|
117
|
+
return { ...DEFAULT_PHASE_MAPPINGS, ...options.phaseMappings };
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Recursively walk a parsed YAML structure and extract expressions.
|
|
121
|
+
*/
|
|
122
|
+
function walkYaml(node, path, results, filePath, inferredPhase, expressionKeys, phaseMappings) {
|
|
123
|
+
if (node === null || node === undefined)
|
|
124
|
+
return;
|
|
125
|
+
if (typeof node === 'object' && !Array.isArray(node)) {
|
|
126
|
+
const obj = node;
|
|
127
|
+
// Check if any key in this object hints at a phase
|
|
128
|
+
let phase = inferredPhase;
|
|
129
|
+
for (const key of Object.keys(obj)) {
|
|
130
|
+
if (phaseMappings[key]) {
|
|
131
|
+
phase = phaseMappings[key];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
135
|
+
const keyPath = [...path, key];
|
|
136
|
+
// Check if this key is an expression key
|
|
137
|
+
const exprInfo = expressionKeys[key];
|
|
138
|
+
if (exprInfo && typeof value === 'string') {
|
|
139
|
+
const exprStr = value.trim();
|
|
140
|
+
if (exprStr) {
|
|
141
|
+
results.push({
|
|
142
|
+
file: filePath,
|
|
143
|
+
yamlPath: keyPath.join('.'),
|
|
144
|
+
expressionType: exprInfo.type,
|
|
145
|
+
phase: exprInfo.phaseHint ?? phase,
|
|
146
|
+
expression: exprStr,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Check for header expression (nested in headers array)
|
|
151
|
+
if (key === 'headers' && Array.isArray(value)) {
|
|
152
|
+
for (let i = 0; i < value.length; i++) {
|
|
153
|
+
const header = value[i];
|
|
154
|
+
if (header && typeof header === 'object' && 'expression' in header && typeof header.expression === 'string') {
|
|
155
|
+
results.push({
|
|
156
|
+
file: filePath,
|
|
157
|
+
yamlPath: [...keyPath, `${i}`, 'expression'].join('.'),
|
|
158
|
+
expressionType: 'rewrite_header',
|
|
159
|
+
phase: phase ?? 'http_request_late_transform',
|
|
160
|
+
expression: header.expression.trim(),
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// Recurse
|
|
166
|
+
walkYaml(value, keyPath, results, filePath, phase, expressionKeys, phaseMappings);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
else if (Array.isArray(node)) {
|
|
170
|
+
for (let i = 0; i < node.length; i++) {
|
|
171
|
+
walkYaml(node[i], [...path, `${i}`], results, filePath, inferredPhase, expressionKeys, phaseMappings);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=yaml-scanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yaml-scanner.js","sourceRoot":"","sources":["../src/yaml-scanner.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cloudflare-expression-lint",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A parser, validator, and linter for Cloudflare Rules Language expressions with phase-aware field and function checking",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"cf-expr-lint": "./dist/cli.js"
|
|
10
|
+
},
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"import": "./dist/index.js",
|
|
14
|
+
"types": "./dist/index.d.ts"
|
|
15
|
+
},
|
|
16
|
+
"./eslint-plugin": {
|
|
17
|
+
"import": "./dist/eslint-plugin.js",
|
|
18
|
+
"types": "./dist/eslint-plugin.d.ts"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist/",
|
|
23
|
+
"README.md",
|
|
24
|
+
"LICENSE",
|
|
25
|
+
"CLAUDE.md"
|
|
26
|
+
],
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "tsc",
|
|
29
|
+
"test": "vitest run",
|
|
30
|
+
"test:watch": "vitest",
|
|
31
|
+
"test:coverage": "vitest run --coverage",
|
|
32
|
+
"lint": "tsc --noEmit"
|
|
33
|
+
},
|
|
34
|
+
"keywords": [
|
|
35
|
+
"cloudflare",
|
|
36
|
+
"expression",
|
|
37
|
+
"lint",
|
|
38
|
+
"validator",
|
|
39
|
+
"parser",
|
|
40
|
+
"firewall",
|
|
41
|
+
"waf",
|
|
42
|
+
"terraform",
|
|
43
|
+
"wirefilter",
|
|
44
|
+
"rules-language"
|
|
45
|
+
],
|
|
46
|
+
"author": "Troy Jones",
|
|
47
|
+
"license": "MIT",
|
|
48
|
+
"repository": {
|
|
49
|
+
"type": "git",
|
|
50
|
+
"url": "git+https://github.com/troymjones/cloudflare-expression-lint.git"
|
|
51
|
+
},
|
|
52
|
+
"bugs": {
|
|
53
|
+
"url": "https://github.com/troymjones/cloudflare-expression-lint/issues"
|
|
54
|
+
},
|
|
55
|
+
"homepage": "https://github.com/troymjones/cloudflare-expression-lint#readme",
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@types/node": "^20.11.0",
|
|
58
|
+
"typescript": "^5.3.3",
|
|
59
|
+
"vitest": "^1.2.0"
|
|
60
|
+
},
|
|
61
|
+
"dependencies": {
|
|
62
|
+
"yaml": "^2.3.4",
|
|
63
|
+
"glob": "^10.3.10"
|
|
64
|
+
},
|
|
65
|
+
"peerDependencies": {
|
|
66
|
+
"eslint": ">=8.0.0",
|
|
67
|
+
"yaml-eslint-parser": ">=1.0.0"
|
|
68
|
+
},
|
|
69
|
+
"peerDependenciesMeta": {
|
|
70
|
+
"eslint": {
|
|
71
|
+
"optional": true
|
|
72
|
+
},
|
|
73
|
+
"yaml-eslint-parser": {
|
|
74
|
+
"optional": true
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"engines": {
|
|
78
|
+
"node": ">=18.0.0"
|
|
79
|
+
}
|
|
80
|
+
}
|