@powerlines/plugin-eslint 0.8.51 → 0.8.52

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 (58) hide show
  1. package/dist/format-message-B0zrT_tN.d.cts +18 -0
  2. package/dist/format-message-B0zrT_tN.d.cts.map +1 -0
  3. package/dist/format-message-BNWPERd9.mjs +3 -0
  4. package/dist/format-message-BNWPERd9.mjs.map +1 -0
  5. package/dist/format-message-C3QDTJhy.cjs +2 -0
  6. package/dist/format-message-Ck01aLfz.d.mts +18 -0
  7. package/dist/format-message-Ck01aLfz.d.mts.map +1 -0
  8. package/dist/helpers/format-message.cjs +1 -9
  9. package/dist/helpers/format-message.d.cts +2 -16
  10. package/dist/helpers/format-message.d.mts +2 -0
  11. package/dist/helpers/format-message.mjs +1 -0
  12. package/dist/helpers/index.cjs +1 -1
  13. package/dist/helpers/index.d.cts +3 -1
  14. package/dist/helpers/index.d.mts +3 -0
  15. package/dist/helpers/index.mjs +1 -0
  16. package/dist/helpers-CRPRhztf.mjs +1 -0
  17. package/dist/index-9iG2qHLe.d.mts +1 -0
  18. package/dist/index-D-CYNcT9.d.mts +1 -0
  19. package/dist/index-D4ELpJXS.d.cts +1 -0
  20. package/dist/index-DLoAMD9J.d.cts +1 -0
  21. package/dist/index.cjs +2 -8
  22. package/dist/index.d.cts +9 -28
  23. package/dist/index.d.cts.map +1 -0
  24. package/dist/index.d.mts +14 -0
  25. package/dist/index.d.mts.map +1 -0
  26. package/dist/index.mjs +3 -0
  27. package/dist/index.mjs.map +1 -0
  28. package/dist/plugin-Bdsm0MMq.d.mts +1705 -0
  29. package/dist/plugin-Bdsm0MMq.d.mts.map +1 -0
  30. package/dist/plugin-BjiGfRHE.mjs +1 -0
  31. package/dist/plugin-hH_eX6Y6.d.cts +1705 -0
  32. package/dist/plugin-hH_eX6Y6.d.cts.map +1 -0
  33. package/dist/plugin-pBKbb5K9.cjs +0 -0
  34. package/dist/types/index.cjs +1 -1
  35. package/dist/types/index.d.cts +3 -24
  36. package/dist/types/index.d.mts +3 -0
  37. package/dist/types/index.mjs +1 -0
  38. package/dist/types/plugin.cjs +1 -1
  39. package/dist/types/plugin.d.cts +2 -24
  40. package/dist/types/plugin.d.mts +2 -0
  41. package/dist/types/plugin.mjs +1 -0
  42. package/dist/types-n6NgD0QK.mjs +1 -0
  43. package/dist/types-o3zWarRp.cjs +0 -0
  44. package/package.json +30 -18
  45. package/dist/chunk-FBBMZ4NC.cjs +0 -7
  46. package/dist/chunk-UCUR73HG.js +0 -7
  47. package/dist/helpers/format-message.d.ts +0 -16
  48. package/dist/helpers/format-message.js +0 -9
  49. package/dist/helpers/index.d.ts +0 -1
  50. package/dist/helpers/index.js +0 -1
  51. package/dist/index-CKAPwB5W.d.cts +0 -1616
  52. package/dist/index-CKAPwB5W.d.ts +0 -1616
  53. package/dist/index.d.ts +0 -33
  54. package/dist/index.js +0 -8
  55. package/dist/types/index.d.ts +0 -24
  56. package/dist/types/index.js +0 -1
  57. package/dist/types/plugin.d.ts +0 -24
  58. /package/dist/{types/plugin.js → helpers-LF26RHol.cjs} +0 -0
@@ -0,0 +1,18 @@
1
+ //#region src/helpers/format-message.d.ts
2
+ declare enum MessageSeverity {
3
+ Warning = 1,
4
+ Error = 2,
5
+ }
6
+ interface LintMessage {
7
+ ruleId: string | null;
8
+ severity: MessageSeverity;
9
+ message: string;
10
+ line: number;
11
+ column: number;
12
+ }
13
+ declare function formatMessage(dir: string, messages: LintMessage[], filePath: string): string;
14
+ declare type __ΩMessageSeverity = any[];
15
+ declare type __ΩLintMessage = any[];
16
+ //#endregion
17
+ export { formatMessage as a, __ΩMessageSeverity as i, MessageSeverity as n, __ΩLintMessage as r, LintMessage as t };
18
+ //# sourceMappingURL=format-message-B0zrT_tN.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-message-B0zrT_tN.d.cts","names":[],"sources":["../src/helpers/format-message.ts"],"sourcesContent":[],"mappings":";aAqBY,eAAA;EAAA,OAAA,GAAA,CAAA;EAKK,KAAA,GAAA,CAAA;AAQjB;UARiB,WAAA;;YAEL;;;;;iBAMI,aAAA,wBAEJ"}
@@ -0,0 +1,3 @@
1
+ import{relative as e}from"@stryke/path/find";import{correctPath as t}from"@stryke/path/normalize";let n=function(e){return e[e.Warning=1]=`Warning`,e[e.Error=2]=`Error`,e}({});function r(r,i,a){let o=t(e(r,a));o.startsWith(`.`)||(o=`./${o}`);let s=`\n${o}`;for(let e=0;e<i.length;e++){let{message:t,severity:r,line:a,column:o,ruleId:c}=i[e];s+=`
2
+ `,a&&o&&(s=`${s+a.toString()}:${o.toString()} `),r===n.Warning?s+=`Warning: `:s+=`Error: `,s+=t,c&&(s+=` ${c}`)}return s}export{r as n,n as t};
3
+ //# sourceMappingURL=format-message-BNWPERd9.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-message-BNWPERd9.mjs","names":[],"sources":["../src/helpers/format-message.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { relative } from \"@stryke/path/find\";\nimport { correctPath } from \"@stryke/path/normalize\";\n\nexport enum MessageSeverity {\n Warning = 1,\n Error = 2\n}\n\nexport interface LintMessage {\n ruleId: string | null;\n severity: MessageSeverity;\n message: string;\n line: number;\n column: number;\n}\n\nexport function formatMessage(\n dir: string,\n messages: LintMessage[],\n filePath: string\n): string {\n let fileName = correctPath(relative(dir, filePath));\n if (!fileName.startsWith(\".\")) {\n fileName = `./${fileName}`;\n }\n\n let output = `\\n${fileName}`;\n\n for (let i = 0; i < messages.length; i++) {\n const { message, severity, line, column, ruleId } = messages[i]!;\n\n output += \"\\n\";\n\n if (line && column) {\n output = `${output + line.toString()}:${column.toString()} `;\n }\n\n if (severity === MessageSeverity.Warning) {\n output += `Warning: `;\n } else {\n output += `Error: `;\n }\n\n output += message;\n\n if (ruleId) {\n output += ` ${ruleId}`;\n }\n }\n\n return output;\n}\n"],"mappings":"kGAqBA,IAAY,EAAA,SAAA,EAAL,OACL,GAAA,EAAA,QAAA,GAAA,UACA,EAAA,EAAA,MAAA,GAAA,eAWF,SAAgB,EACd,EACA,EACA,EACQ,CACR,IAAI,EAAW,EAAY,EAAS,EAAK,EAAS,CAAC,CAC9C,EAAS,WAAW,IAAI,GAC3B,EAAW,KAAK,KAGlB,IAAI,EAAS,KAAK,IAElB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAS,OAAQ,IAAK,CACxC,GAAM,CAAE,UAAS,WAAU,OAAM,SAAQ,UAAW,EAAS,GAE7D,GAAU;EAEN,GAAQ,IACV,EAAS,GAAG,EAAS,EAAK,UAAU,CAAC,GAAG,EAAO,UAAU,CAAC,KAGxD,IAAa,EAAgB,QAC/B,GAAU,YAEV,GAAU,UAGZ,GAAU,EAEN,IACF,GAAU,KAAK,KAInB,OAAO"}
@@ -0,0 +1,2 @@
1
+ let e=require(`@stryke/path/find`),t=require(`@stryke/path/normalize`),n=function(e){return e[e.Warning=1]=`Warning`,e[e.Error=2]=`Error`,e}({});function r(r,i,a){let o=(0,t.correctPath)((0,e.relative)(r,a));o.startsWith(`.`)||(o=`./${o}`);let s=`\n${o}`;for(let e=0;e<i.length;e++){let{message:t,severity:r,line:a,column:o,ruleId:c}=i[e];s+=`
2
+ `,a&&o&&(s=`${s+a.toString()}:${o.toString()} `),r===n.Warning?s+=`Warning: `:s+=`Error: `,s+=t,c&&(s+=` ${c}`)}return s}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return n}});
@@ -0,0 +1,18 @@
1
+ //#region src/helpers/format-message.d.ts
2
+ declare enum MessageSeverity {
3
+ Warning = 1,
4
+ Error = 2,
5
+ }
6
+ interface LintMessage {
7
+ ruleId: string | null;
8
+ severity: MessageSeverity;
9
+ message: string;
10
+ line: number;
11
+ column: number;
12
+ }
13
+ declare function formatMessage(dir: string, messages: LintMessage[], filePath: string): string;
14
+ declare type __ΩMessageSeverity = any[];
15
+ declare type __ΩLintMessage = any[];
16
+ //#endregion
17
+ export { formatMessage as a, __ΩMessageSeverity as i, MessageSeverity as n, __ΩLintMessage as r, LintMessage as t };
18
+ //# sourceMappingURL=format-message-Ck01aLfz.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-message-Ck01aLfz.d.mts","names":[],"sources":["../src/helpers/format-message.ts"],"sourcesContent":[],"mappings":";aAqBY,eAAA;EAAA,OAAA,GAAA,CAAA;EAKK,KAAA,GAAA,CAAA;AAQjB;UARiB,WAAA;;YAEL;;;;;iBAMI,aAAA,wBAEJ"}
@@ -1,9 +1 @@
1
- 'use strict';var chunkFBBMZ4NC_cjs=require('../chunk-FBBMZ4NC.cjs'),find=require('@stryke/path/find'),normalize=require('@stryke/path/normalize');/*****************************************
2
- *
3
- * ⚡ Built by Storm Software
4
- *
5
- *****************************************/
6
-
7
- var p=(t=>(t[t.Warning=1]="Warning",t[t.Error=2]="Error",t))(p||{});function x(m,i,t){let n=normalize.correctPath(find.relative(m,t));n.startsWith(".")||(n=`./${n}`);let r=`
8
- ${n}`;for(let e=0;e<i.length;e++){const{message:u,severity:a,line:o,column:l,ruleId:s}=i[e];r+=`
9
- `,o&&l&&(r=`${r+o.toString()}:${l.toString()} `),a===1?r+="Warning: ":r+="Error: ",r+=u,s&&(r+=` ${s}`);}return r}chunkFBBMZ4NC_cjs.a(x,"formatMessage");exports.MessageSeverity=p;exports.formatMessage=x;
1
+ const e=require(`../format-message-C3QDTJhy.cjs`);exports.MessageSeverity=e.t,exports.formatMessage=e.n;
@@ -1,16 +1,2 @@
1
- declare enum MessageSeverity {
2
- Warning = 1,
3
- Error = 2
4
- }
5
- interface LintMessage {
6
- ruleId: string | null;
7
- severity: MessageSeverity;
8
- message: string;
9
- line: number;
10
- column: number;
11
- }
12
- declare function formatMessage(dir: string, messages: LintMessage[], filePath: string): string;
13
- declare type __ΩMessageSeverity = any[];
14
- declare type __ΩLintMessage = any[];
15
-
16
- export { type LintMessage, MessageSeverity, type __ΩLintMessage, type __ΩMessageSeverity, formatMessage };
1
+ import { a as formatMessage, i as __ΩMessageSeverity, n as MessageSeverity, r as __ΩLintMessage, t as LintMessage } from "../format-message-B0zrT_tN.cjs";
2
+ export { LintMessage, MessageSeverity, __ΩLintMessage, __ΩMessageSeverity, formatMessage };
@@ -0,0 +1,2 @@
1
+ import { a as formatMessage, i as __ΩMessageSeverity, n as MessageSeverity, r as __ΩLintMessage, t as LintMessage } from "../format-message-Ck01aLfz.mjs";
2
+ export { LintMessage, MessageSeverity, __ΩLintMessage, __ΩMessageSeverity, formatMessage };
@@ -0,0 +1 @@
1
+ import{n as e,t}from"../format-message-BNWPERd9.mjs";export{t as MessageSeverity,e as formatMessage};
@@ -1 +1 @@
1
- 'use strict';var formatMessage=require('./format-message');Object.keys(formatMessage).forEach(function(k){if(k!=='default'&&!Object.prototype.hasOwnProperty.call(exports,k))Object.defineProperty(exports,k,{enumerable:true,get:function(){return formatMessage[k]}})});
1
+ const e=require(`../format-message-C3QDTJhy.cjs`);require(`../helpers-LF26RHol.cjs`),exports.MessageSeverity=e.t,exports.formatMessage=e.n;
@@ -1 +1,3 @@
1
- export { LintMessage, MessageSeverity, __ΩLintMessage, __ΩMessageSeverity, formatMessage } from './format-message.cjs';
1
+ import { a as formatMessage, i as __ΩMessageSeverity, n as MessageSeverity, r as __ΩLintMessage, t as LintMessage } from "../format-message-B0zrT_tN.cjs";
2
+ import "../index-DLoAMD9J.cjs";
3
+ export { LintMessage, MessageSeverity, __ΩLintMessage, __ΩMessageSeverity, formatMessage };
@@ -0,0 +1,3 @@
1
+ import { a as formatMessage, i as __ΩMessageSeverity, n as MessageSeverity, r as __ΩLintMessage, t as LintMessage } from "../format-message-Ck01aLfz.mjs";
2
+ import "../index-D-CYNcT9.mjs";
3
+ export { LintMessage, MessageSeverity, __ΩLintMessage, __ΩMessageSeverity, formatMessage };
@@ -0,0 +1 @@
1
+ import{n as e,t}from"../format-message-BNWPERd9.mjs";import"../helpers-CRPRhztf.mjs";export{t as MessageSeverity,e as formatMessage};
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1 @@
1
+ export { };
package/dist/index.cjs CHANGED
@@ -1,8 +1,2 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkFBBMZ4NC_cjs=require('./chunk-FBBMZ4NC.cjs'),types$1=require('@storm-software/config-tools/types'),exists=require('@stryke/fs/exists'),getParentPath=require('@stryke/fs/get-parent-path'),packageFns=require('@stryke/fs/package-fns'),readFile=require('@stryke/fs/read-file'),semverFns=require('@stryke/fs/semver-fns'),find=require('@stryke/path/find'),isSetObject=require('@stryke/type-checks/is-set-object'),defu=require('defu'),formatMessage=require('./helpers/format-message'),helpers=require('./helpers'),types=require('./types');/*****************************************
2
- *
3
- * ⚡ Built by Storm Software
4
- *
5
- *****************************************/
6
-
7
- function S(g={}){return {name:"eslint",async config(){this.log(types$1.LogLevelLabel.TRACE,"Providing default configuration for the Powerlines `eslint` build plugin.");const n=getParentPath.getParentPath(["eslint.config.js","eslint.config.mjs","eslint.config.cjs","eslint.config.ts","eslint.config.mts","eslint.config.cts",".eslintrc.js",".eslintrc.cjs",".eslintrc.yaml",".eslintrc.yml",".eslintrc.json",".eslintrc"],this.config.projectRoot,{ignoreCase:true,skipCwd:false,includeNameInResults:true});return {lint:{eslint:defu.defu(g,{configFile:n,reportErrorsOnly:false,maxWarnings:5,fix:true,outputFile:null,type:"recommended"})}}},async configResolved(){if(!isSetObject.isSetObject(this.packageJson.eslintConfig)&&(!this.config.lint.eslint.configFile||!exists.existsSync(this.config.lint.eslint.configFile)))throw new Error("No ESLint configuration file could be found");if(this.config.lint.eslint.configFile&&exists.existsSync(this.config.lint.eslint.configFile)){const e=await readFile.readFile(this.config.lint.eslint.configFile);if(e?.trim().replace(/\s/g,"")||e?.trim().replace(/\s/g,"")==="---"||e?.trim().replace(/\s/g,"")==="{}"||e?.trim().replace(/\s/g,"")==="module.exports={}")throw new Error(`The ESLint configuration file at "${this.config.lint.eslint.configFile}" is empty`)}if(!packageFns.isPackageExists("eslint",{paths:[this.workspaceConfig.workspaceRoot,this.config.projectRoot]}))throw new Error("ESLint must be installed to use the Powerlines ESLint plugin. Please run: npm install --save-dev eslint");const o=await this.resolver.import(this.resolver.esmResolve("eslint")),s=this.config.lint.eslint.configFile?find.findFileName(this.config.lint.eslint.configFile).startsWith("eslint.config."):true;let l;"loadESLint"in o&&(l=await o.loadESLint({useFlatConfig:s}));const i=semverFns.parseVersion(l?.version);if(!i||i.compare("8.57.0")<0)throw new Error(`Error - Your project has an older version of ESLint installed${i?` (${i.major}.${i.minor}.${i.patch})`:""}. Please upgrade to ESLint version 8.57.0 or above`);const t={useEslintrc:!s,baseConfig:{},errorOnUnmatchedPattern:false,extensions:[".js",".jsx",".ts",".tsx"],cache:true};if(i?.compare("9.0.0")&&s)for(const e of ["useEslintrc","extensions","ignorePath","reportUnusedDisableDirectives","resolvePluginsRelativeTo","rulePaths","inlineConfig","maxWarnings"])e in t&&delete t[e];this.eslint=new l(t);},async lint(){this.log(types$1.LogLevelLabel.TRACE,"Linting project files with ESLint.");let n=await this.eslint.lintFiles(this.tsconfig.fileNames.filter(t=>!t.includes(this.artifactsPath)&&!t.includes("node_modules")));const o=await this.resolver.import(this.resolver.esmResolve("eslint"));let s;"loadESLint"in o&&(s=await o.loadESLint({useFlatConfig:this.config.lint.eslint.configFile?find.findFileName(this.config.lint.eslint.configFile).startsWith("eslint.config."):true})),this.config.lint.eslint.fix&&await s.outputFixes(n),this.config.lint.eslint.reportErrorsOnly&&(n=s.getErrorResults(n));const i=n.filter(({messages:t})=>t?.length).map(({messages:t,filePath:e})=>formatMessage.formatMessage(this.config.projectRoot,t,e)).join(`
8
- `);this.config.lint.eslint.outputFile?await this.fs.write(this.config.lint.eslint.outputFile,i):this.log(types$1.LogLevelLabel.INFO,i);}}}chunkFBBMZ4NC_cjs.a(S,"plugin");var T=S;exports.default=T;exports.plugin=S;Object.keys(helpers).forEach(function(k){if(k!=='default'&&!Object.prototype.hasOwnProperty.call(exports,k))Object.defineProperty(exports,k,{enumerable:true,get:function(){return helpers[k]}})});Object.keys(types).forEach(function(k){if(k!=='default'&&!Object.prototype.hasOwnProperty.call(exports,k))Object.defineProperty(exports,k,{enumerable:true,get:function(){return types[k]}})});
1
+ Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`./format-message-C3QDTJhy.cjs`);require(`./helpers-LF26RHol.cjs`),require(`./plugin-pBKbb5K9.cjs`),require(`./types-o3zWarRp.cjs`);let t=require(`@storm-software/config-tools/types`),n=require(`@stryke/fs/exists`),r=require(`@stryke/fs/get-parent-path`),i=require(`@stryke/fs/package-fns`),a=require(`@stryke/fs/read-file`),o=require(`@stryke/fs/semver-fns`),s=require(`@stryke/path/find`),c=require(`@stryke/type-checks/is-set-object`),l=require(`defu`);function u(u={}){return{name:`eslint`,async config(){return this.log(t.LogLevelLabel.TRACE,"Providing default configuration for the Powerlines `eslint` build plugin."),{lint:{eslint:(0,l.defu)(u,{configFile:(0,r.getParentPath)([`eslint.config.js`,`eslint.config.mjs`,`eslint.config.cjs`,`eslint.config.ts`,`eslint.config.mts`,`eslint.config.cts`,`.eslintrc.js`,`.eslintrc.cjs`,`.eslintrc.yaml`,`.eslintrc.yml`,`.eslintrc.json`,`.eslintrc`],this.config.projectRoot,{ignoreCase:!0,skipCwd:!1,includeNameInResults:!0}),reportErrorsOnly:!1,maxWarnings:5,fix:!0,outputFile:null,type:`recommended`})}}},async configResolved(){if(!(0,c.isSetObject)(this.packageJson.eslintConfig)&&(!this.config.lint.eslint.configFile||!(0,n.existsSync)(this.config.lint.eslint.configFile)))throw Error(`No ESLint configuration file could be found`);if(this.config.lint.eslint.configFile&&(0,n.existsSync)(this.config.lint.eslint.configFile)){let e=await(0,a.readFile)(this.config.lint.eslint.configFile);if(e?.trim().replace(/\s/g,``)||e?.trim().replace(/\s/g,``)===`---`||e?.trim().replace(/\s/g,``)===`{}`||e?.trim().replace(/\s/g,``)===`module.exports={}`)throw Error(`The ESLint configuration file at "${this.config.lint.eslint.configFile}" is empty`)}if(!(0,i.isPackageExists)(`eslint`,{paths:[this.workspaceConfig.workspaceRoot,this.config.projectRoot]}))throw Error(`ESLint must be installed to use the Powerlines ESLint plugin. Please run: npm install --save-dev eslint`);let e=await this.resolver.import(this.resolver.esmResolve(`eslint`)),t=this.config.lint.eslint.configFile?(0,s.findFileName)(this.config.lint.eslint.configFile).startsWith(`eslint.config.`):!0,r;`loadESLint`in e&&(r=await e.loadESLint({useFlatConfig:t}));let l=(0,o.parseVersion)(r?.version);if(!l||l.compare(`8.57.0`)<0)throw Error(`Error - Your project has an older version of ESLint installed${l?` (${l.major}.${l.minor}.${l.patch})`:``}. Please upgrade to ESLint version 8.57.0 or above`);let u={useEslintrc:!t,baseConfig:{},errorOnUnmatchedPattern:!1,extensions:[`.js`,`.jsx`,`.ts`,`.tsx`],cache:!0};if(l?.compare(`9.0.0`)&&t)for(let e of[`useEslintrc`,`extensions`,`ignorePath`,`reportUnusedDisableDirectives`,`resolvePluginsRelativeTo`,`rulePaths`,`inlineConfig`,`maxWarnings`])e in u&&delete u[e];this.eslint=new r(u)},async lint(){this.log(t.LogLevelLabel.TRACE,`Linting project files with ESLint.`);let n=await this.eslint.lintFiles(this.tsconfig.fileNames.filter(e=>!e.includes(this.artifactsPath)&&!e.includes(`node_modules`))),r=await this.resolver.import(this.resolver.esmResolve(`eslint`)),i;`loadESLint`in r&&(i=await r.loadESLint({useFlatConfig:this.config.lint.eslint.configFile?(0,s.findFileName)(this.config.lint.eslint.configFile).startsWith(`eslint.config.`):!0})),this.config.lint.eslint.fix&&await i.outputFixes(n),this.config.lint.eslint.reportErrorsOnly&&(n=i.getErrorResults(n));let a=n.filter(({messages:e})=>e?.length).map(({messages:t,filePath:n})=>e.n(this.config.projectRoot,t,n)).join(`
2
+ `);this.config.lint.eslint.outputFile?await this.fs.write(this.config.lint.eslint.outputFile,a):this.log(t.LogLevelLabel.INFO,a)}}}var d=u;exports.MessageSeverity=e.t,exports.default=d,exports.formatMessage=e.n,exports.plugin=u;
package/dist/index.d.cts CHANGED
@@ -1,33 +1,14 @@
1
- import { E as ESLintPluginOptions, P as Plugin, a as ESLintPluginContext } from './index-CKAPwB5W.cjs';
2
- export { c as ESLintPluginResolvedConfig, b as ESLintPluginUserConfig, f as __ΩESLintPluginContext, _ as __ΩESLintPluginOptions, e as __ΩESLintPluginResolvedConfig, d as __ΩESLintPluginUserConfig } from './index-CKAPwB5W.cjs';
3
- export { LintMessage, MessageSeverity, __ΩLintMessage, __ΩMessageSeverity, formatMessage } from './helpers/format-message.cjs';
4
- import 'eslint';
5
- import 'eslint/use-at-your-own-risk';
6
- import '@storm-software/build-tools/types';
7
- import '@storm-software/config-tools/types';
8
- import '@storm-software/config/types';
9
- import '@stryke/types/base';
10
- import '@stryke/types/configuration';
11
- import '@stryke/types/file';
12
- import 'vite';
13
- import '@stryke/env/get-env-paths';
14
- import '@stryke/http/fetch';
15
- import '@stryke/types/package-json';
16
- import 'jiti';
17
- import 'magic-string';
18
- import 'oxc-parser';
19
- import 'semver';
20
- import 'ts-morph';
21
- import 'undici';
22
- import 'unplugin';
23
- import '@stryke/fs/resolve';
24
- import '@stryke/types/tsconfig';
25
- import 'typescript';
26
- import '@stryke/types/array';
1
+ import { a as formatMessage, i as __ΩMessageSeverity, n as MessageSeverity, r as __ΩLintMessage, t as LintMessage } from "./format-message-B0zrT_tN.cjs";
2
+ import "./index-DLoAMD9J.cjs";
3
+ import { a as __ΩESLintPluginContext, c as __ΩESLintPluginUserConfig, i as ESLintPluginUserConfig, l as Plugin, n as ESLintPluginOptions, o as __ΩESLintPluginOptions, r as ESLintPluginResolvedConfig, s as __ΩESLintPluginResolvedConfig, t as ESLintPluginContext } from "./plugin-hH_eX6Y6.cjs";
4
+ import "./index-D4ELpJXS.cjs";
5
+
6
+ //#region src/index.d.ts
27
7
 
28
8
  /**
29
9
  * A Powerlines plugin to lint a project's source code with ESLint.
30
10
  */
31
11
  declare function plugin(options?: ESLintPluginOptions): Plugin<ESLintPluginContext>;
32
-
33
- export { ESLintPluginContext, ESLintPluginOptions, plugin as default, plugin };
12
+ //#endregion
13
+ export { ESLintPluginContext, ESLintPluginOptions, ESLintPluginResolvedConfig, ESLintPluginUserConfig, LintMessage, MessageSeverity, __ΩESLintPluginContext, __ΩESLintPluginOptions, __ΩESLintPluginResolvedConfig, __ΩESLintPluginUserConfig, __ΩLintMessage, __ΩMessageSeverity, plugin as default, plugin, formatMessage };
14
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAuCA;AACW,iBADK,MAAA,CACL,OAAA,CAAA,EAAA,mBAAA,CAAA,EACR,MADQ,CACD,mBADC,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { a as formatMessage, i as __ΩMessageSeverity, n as MessageSeverity, r as __ΩLintMessage, t as LintMessage } from "./format-message-Ck01aLfz.mjs";
2
+ import "./index-D-CYNcT9.mjs";
3
+ import { a as __ΩESLintPluginContext, c as __ΩESLintPluginUserConfig, i as ESLintPluginUserConfig, l as Plugin, n as ESLintPluginOptions, o as __ΩESLintPluginOptions, r as ESLintPluginResolvedConfig, s as __ΩESLintPluginResolvedConfig, t as ESLintPluginContext } from "./plugin-Bdsm0MMq.mjs";
4
+ import "./index-9iG2qHLe.mjs";
5
+
6
+ //#region src/index.d.ts
7
+
8
+ /**
9
+ * A Powerlines plugin to lint a project's source code with ESLint.
10
+ */
11
+ declare function plugin(options?: ESLintPluginOptions): Plugin<ESLintPluginContext>;
12
+ //#endregion
13
+ export { ESLintPluginContext, ESLintPluginOptions, ESLintPluginResolvedConfig, ESLintPluginUserConfig, LintMessage, MessageSeverity, __ΩESLintPluginContext, __ΩESLintPluginOptions, __ΩESLintPluginResolvedConfig, __ΩESLintPluginUserConfig, __ΩLintMessage, __ΩMessageSeverity, plugin as default, plugin, formatMessage };
14
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAuCA;AACW,iBADK,MAAA,CACL,OAAA,CAAA,EAAA,mBAAA,CAAA,EACR,MADQ,CACD,mBADC,CAAA"}
package/dist/index.mjs ADDED
@@ -0,0 +1,3 @@
1
+ import{n as e,t}from"./format-message-BNWPERd9.mjs";import"./helpers-CRPRhztf.mjs";import"./plugin-BjiGfRHE.mjs";import"./types-n6NgD0QK.mjs";import{LogLevelLabel as n}from"@storm-software/config-tools/types";import{existsSync as r}from"@stryke/fs/exists";import{getParentPath as i}from"@stryke/fs/get-parent-path";import{isPackageExists as a}from"@stryke/fs/package-fns";import{readFile as o}from"@stryke/fs/read-file";import{parseVersion as s}from"@stryke/fs/semver-fns";import{findFileName as c}from"@stryke/path/find";import{isSetObject as l}from"@stryke/type-checks/is-set-object";import{defu as u}from"defu";function d(t={}){return{name:`eslint`,async config(){return this.log(n.TRACE,"Providing default configuration for the Powerlines `eslint` build plugin."),{lint:{eslint:u(t,{configFile:i([`eslint.config.js`,`eslint.config.mjs`,`eslint.config.cjs`,`eslint.config.ts`,`eslint.config.mts`,`eslint.config.cts`,`.eslintrc.js`,`.eslintrc.cjs`,`.eslintrc.yaml`,`.eslintrc.yml`,`.eslintrc.json`,`.eslintrc`],this.config.projectRoot,{ignoreCase:!0,skipCwd:!1,includeNameInResults:!0}),reportErrorsOnly:!1,maxWarnings:5,fix:!0,outputFile:null,type:`recommended`})}}},async configResolved(){if(!l(this.packageJson.eslintConfig)&&(!this.config.lint.eslint.configFile||!r(this.config.lint.eslint.configFile)))throw Error(`No ESLint configuration file could be found`);if(this.config.lint.eslint.configFile&&r(this.config.lint.eslint.configFile)){let e=await o(this.config.lint.eslint.configFile);if(e?.trim().replace(/\s/g,``)||e?.trim().replace(/\s/g,``)===`---`||e?.trim().replace(/\s/g,``)===`{}`||e?.trim().replace(/\s/g,``)===`module.exports={}`)throw Error(`The ESLint configuration file at "${this.config.lint.eslint.configFile}" is empty`)}if(!a(`eslint`,{paths:[this.workspaceConfig.workspaceRoot,this.config.projectRoot]}))throw Error(`ESLint must be installed to use the Powerlines ESLint plugin. Please run: npm install --save-dev eslint`);let e=await this.resolver.import(this.resolver.esmResolve(`eslint`)),t=this.config.lint.eslint.configFile?c(this.config.lint.eslint.configFile).startsWith(`eslint.config.`):!0,n;`loadESLint`in e&&(n=await e.loadESLint({useFlatConfig:t}));let i=s(n?.version);if(!i||i.compare(`8.57.0`)<0)throw Error(`Error - Your project has an older version of ESLint installed${i?` (${i.major}.${i.minor}.${i.patch})`:``}. Please upgrade to ESLint version 8.57.0 or above`);let u={useEslintrc:!t,baseConfig:{},errorOnUnmatchedPattern:!1,extensions:[`.js`,`.jsx`,`.ts`,`.tsx`],cache:!0};if(i?.compare(`9.0.0`)&&t)for(let e of[`useEslintrc`,`extensions`,`ignorePath`,`reportUnusedDisableDirectives`,`resolvePluginsRelativeTo`,`rulePaths`,`inlineConfig`,`maxWarnings`])e in u&&delete u[e];this.eslint=new n(u)},async lint(){this.log(n.TRACE,`Linting project files with ESLint.`);let t=await this.eslint.lintFiles(this.tsconfig.fileNames.filter(e=>!e.includes(this.artifactsPath)&&!e.includes(`node_modules`))),r=await this.resolver.import(this.resolver.esmResolve(`eslint`)),i;`loadESLint`in r&&(i=await r.loadESLint({useFlatConfig:this.config.lint.eslint.configFile?c(this.config.lint.eslint.configFile).startsWith(`eslint.config.`):!0})),this.config.lint.eslint.fix&&await i.outputFixes(t),this.config.lint.eslint.reportErrorsOnly&&(t=i.getErrorResults(t));let a=t.filter(({messages:e})=>e?.length).map(({messages:t,filePath:n})=>e(this.config.projectRoot,t,n)).join(`
2
+ `);this.config.lint.eslint.outputFile?await this.fs.write(this.config.lint.eslint.outputFile,a):this.log(n.INFO,a)}}}var f=d;export{t as MessageSeverity,f as default,e as formatMessage,d as plugin};
3
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["ESLint!: typeof FlatESLint | typeof LegacyESLint","options: any","options"],"sources":["../src/index.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { LogLevelLabel } from \"@storm-software/config-tools/types\";\nimport { existsSync } from \"@stryke/fs/exists\";\nimport { getParentPath } from \"@stryke/fs/get-parent-path\";\nimport { isPackageExists } from \"@stryke/fs/package-fns\";\nimport { readFile } from \"@stryke/fs/read-file\";\nimport { parseVersion } from \"@stryke/fs/semver-fns\";\nimport { findFileName } from \"@stryke/path/find\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport { defu } from \"defu\";\nimport type { ESLint as FlatESLint } from \"eslint\";\nimport type { LegacyESLint } from \"eslint/use-at-your-own-risk\";\nimport { Plugin } from \"powerlines/types/plugin\";\nimport { formatMessage } from \"./helpers/format-message\";\nimport { ESLintPluginContext, ESLintPluginOptions } from \"./types/plugin\";\n\nexport * from \"./helpers\";\nexport * from \"./types\";\n\n/**\n * A Powerlines plugin to lint a project's source code with ESLint.\n */\nexport function plugin(\n options: ESLintPluginOptions = {}\n): Plugin<ESLintPluginContext> {\n return {\n name: \"eslint\",\n async config() {\n this.log(\n LogLevelLabel.TRACE,\n \"Providing default configuration for the Powerlines `eslint` build plugin.\"\n );\n\n const configFile = getParentPath(\n [\n \"eslint.config.js\",\n \"eslint.config.mjs\",\n \"eslint.config.cjs\",\n \"eslint.config.ts\",\n \"eslint.config.mts\",\n \"eslint.config.cts\",\n \".eslintrc.js\",\n \".eslintrc.cjs\",\n \".eslintrc.yaml\",\n \".eslintrc.yml\",\n \".eslintrc.json\",\n \".eslintrc\"\n ],\n this.config.projectRoot,\n {\n ignoreCase: true,\n skipCwd: false,\n includeNameInResults: true\n }\n );\n\n return {\n lint: {\n eslint: defu(options, {\n configFile,\n reportErrorsOnly: false,\n maxWarnings: 5,\n fix: true,\n outputFile: null,\n type: \"recommended\"\n })\n }\n };\n },\n async configResolved() {\n if (\n !isSetObject(this.packageJson.eslintConfig) &&\n (!this.config.lint.eslint.configFile ||\n !existsSync(this.config.lint.eslint.configFile))\n ) {\n throw new Error(\"No ESLint configuration file could be found\");\n } else if (\n this.config.lint.eslint.configFile &&\n existsSync(this.config.lint.eslint.configFile)\n ) {\n const content = await readFile(this.config.lint.eslint.configFile);\n if (\n content?.trim().replace(/\\s/g, \"\") ||\n content?.trim().replace(/\\s/g, \"\") === \"---\" ||\n content?.trim().replace(/\\s/g, \"\") === \"{}\" ||\n content?.trim().replace(/\\s/g, \"\") === \"module.exports={}\"\n ) {\n throw new Error(\n `The ESLint configuration file at \"${this.config.lint.eslint.configFile}\" is empty`\n );\n }\n }\n\n const isInstalled = isPackageExists(\"eslint\", {\n paths: [this.workspaceConfig.workspaceRoot, this.config.projectRoot]\n });\n if (!isInstalled) {\n throw new Error(\n `ESLint must be installed to use the Powerlines ESLint plugin. Please run: npm install --save-dev eslint`\n );\n }\n\n // if (generateReason) {\n // this.log(\n // LogLevelLabel.WARN,\n // `${generateReason}. Generating a default configuration at the project root.`\n // );\n\n // this.devDependencies[\"eslint-config-powerlines\"] = \"*\";\n // this.config.lint.eslint.configFile = joinPaths(\n // this.config.projectRoot,\n // \"eslint.config.js\"\n // );\n\n // await writeFile(\n // this.config.lint.eslint.configFile,\n // `import { defineConfig } from \"eslint-config-powerlines\";\n\n // Error.stackTraceLimit = Number.POSITIVE_INFINITY;\n\n // /** @type {import('eslint').Linter.Config[]} */\n // export default defineConfig({${\n // this.config.name\n // ? `\n // name: \"${this.config.name}\", `\n // : \"\"\n // }\n // powerlines: ${this.config.lint.eslint.type}\n // });\n\n // `\n // );\n // }\n\n const module = await this.resolver.import<typeof import(\"eslint\")>(\n this.resolver.esmResolve(\"eslint\")\n );\n\n const useFlatConfig = this.config.lint.eslint.configFile\n ? findFileName(this.config.lint.eslint.configFile).startsWith(\n \"eslint.config.\"\n )\n : true;\n\n let ESLint!: typeof FlatESLint | typeof LegacyESLint;\n // loadESLint is >= 8.57.0\n // PR https://github.com/eslint/eslint/pull/18098\n // Release https://github.com/eslint/eslint/releases/tag/v8.57.0\n if (\"loadESLint\" in module) {\n // By default, configType is `flat`. If `useFlatConfig` is false, the return value is `LegacyESLint`.\n // https://github.com/eslint/eslint/blob/1def4cdfab1f067c5089df8b36242cdf912b0eb6/lib/types/index.d.ts#L1609-L1613\n ESLint = await module.loadESLint({\n useFlatConfig\n });\n }\n\n const eslintVersion = parseVersion(ESLint?.version);\n if (!eslintVersion || eslintVersion.compare(\"8.57.0\") < 0) {\n throw new Error(\n `Error - Your project has an older version of ESLint installed${\n eslintVersion\n ? ` (${eslintVersion.major}.${eslintVersion.minor}.${eslintVersion.patch})`\n : \"\"\n }. Please upgrade to ESLint version 8.57.0 or above`\n );\n }\n\n const options: any = {\n useEslintrc: !useFlatConfig,\n baseConfig: {},\n errorOnUnmatchedPattern: false,\n extensions: [\".js\", \".jsx\", \".ts\", \".tsx\"],\n cache: true\n };\n\n if (eslintVersion?.compare(\"9.0.0\") && useFlatConfig) {\n for (const option of [\n \"useEslintrc\",\n \"extensions\",\n \"ignorePath\",\n \"reportUnusedDisableDirectives\",\n \"resolvePluginsRelativeTo\",\n \"rulePaths\",\n \"inlineConfig\",\n \"maxWarnings\"\n ]) {\n if (option in options) {\n delete options[option];\n }\n }\n }\n\n this.eslint = new ESLint(options);\n },\n async lint() {\n this.log(LogLevelLabel.TRACE, `Linting project files with ESLint.`);\n\n let results = await this.eslint.lintFiles(\n this.tsconfig.fileNames.filter(\n fileName =>\n !fileName.includes(this.artifactsPath) &&\n !fileName.includes(\"node_modules\")\n )\n );\n\n const module = await this.resolver.import<typeof import(\"eslint\")>(\n this.resolver.esmResolve(\"eslint\")\n );\n\n let ESLint!: typeof FlatESLint | typeof LegacyESLint;\n // loadESLint is >= 8.57.0\n // PR https://github.com/eslint/eslint/pull/18098\n // Release https://github.com/eslint/eslint/releases/tag/v8.57.0\n if (\"loadESLint\" in module) {\n // By default, configType is `flat`. If `useFlatConfig` is false, the return value is `LegacyESLint`.\n // https://github.com/eslint/eslint/blob/1def4cdfab1f067c5089df8b36242cdf912b0eb6/lib/types/index.d.ts#L1609-L1613\n ESLint = await module.loadESLint({\n useFlatConfig: this.config.lint.eslint.configFile\n ? findFileName(this.config.lint.eslint.configFile).startsWith(\n \"eslint.config.\"\n )\n : true\n });\n }\n\n if (this.config.lint.eslint.fix) {\n await ESLint.outputFixes(results);\n }\n\n if (this.config.lint.eslint.reportErrorsOnly) {\n results = ESLint.getErrorResults(results);\n }\n\n const resultsWithMessages = results.filter(\n ({ messages }) => messages?.length\n );\n\n const output = resultsWithMessages\n .map(({ messages, filePath }) =>\n formatMessage(this.config.projectRoot, messages, filePath)\n )\n .join(\"\\n\");\n\n if (this.config.lint.eslint.outputFile) {\n await this.fs.write(this.config.lint.eslint.outputFile, output);\n } else {\n this.log(LogLevelLabel.INFO, output);\n }\n }\n };\n}\n\nexport default plugin;\n"],"mappings":"smBAuCA,SAAgB,EACd,EAA+B,EAAE,CACJ,CAC7B,MAAO,CACL,KAAM,SACN,MAAM,QAAS,CA6Bb,OA5BA,KAAK,IACH,EAAc,MACd,4EACD,CAyBM,CACL,KAAM,CACJ,OAAQ,EAAK,EAAS,CACpB,WA1Ba,EACjB,CACE,mBACA,oBACA,oBACA,mBACA,oBACA,oBACA,eACA,gBACA,iBACA,gBACA,iBACA,YACD,CACD,KAAK,OAAO,YACZ,CACE,WAAY,GACZ,QAAS,GACT,qBAAsB,GACvB,CACF,CAMK,iBAAkB,GAClB,YAAa,EACb,IAAK,GACL,WAAY,KACZ,KAAM,cACP,CAAC,CACH,CACF,EAEH,MAAM,gBAAiB,CACrB,GACE,CAAC,EAAY,KAAK,YAAY,aAAa,GAC1C,CAAC,KAAK,OAAO,KAAK,OAAO,YACxB,CAAC,EAAW,KAAK,OAAO,KAAK,OAAO,WAAW,EAEjD,MAAU,MAAM,8CAA8C,IAE9D,KAAK,OAAO,KAAK,OAAO,YACxB,EAAW,KAAK,OAAO,KAAK,OAAO,WAAW,CAC9C,CACA,IAAM,EAAU,MAAM,EAAS,KAAK,OAAO,KAAK,OAAO,WAAW,CAClE,GACE,GAAS,MAAM,CAAC,QAAQ,MAAO,GAAG,EAClC,GAAS,MAAM,CAAC,QAAQ,MAAO,GAAG,GAAK,OACvC,GAAS,MAAM,CAAC,QAAQ,MAAO,GAAG,GAAK,MACvC,GAAS,MAAM,CAAC,QAAQ,MAAO,GAAG,GAAK,oBAEvC,MAAU,MACR,qCAAqC,KAAK,OAAO,KAAK,OAAO,WAAW,YACzE,CAOL,GAAI,CAHgB,EAAgB,SAAU,CAC5C,MAAO,CAAC,KAAK,gBAAgB,cAAe,KAAK,OAAO,YAAY,CACrE,CAAC,CAEA,MAAU,MACR,0GACD,CAmCH,IAAM,EAAS,MAAM,KAAK,SAAS,OACjC,KAAK,SAAS,WAAW,SAAS,CACnC,CAEK,EAAgB,KAAK,OAAO,KAAK,OAAO,WAC1C,EAAa,KAAK,OAAO,KAAK,OAAO,WAAW,CAAC,WAC/C,iBACD,CACD,GAEAA,EAIA,eAAgB,IAGlB,EAAS,MAAM,EAAO,WAAW,CAC/B,gBACD,CAAC,EAGJ,IAAM,EAAgB,EAAa,GAAQ,QAAQ,CACnD,GAAI,CAAC,GAAiB,EAAc,QAAQ,SAAS,CAAG,EACtD,MAAU,MACR,gEACE,EACI,KAAK,EAAc,MAAM,GAAG,EAAc,MAAM,GAAG,EAAc,MAAM,GACvE,GACL,oDACF,CAGH,IAAMC,EAAe,CACnB,YAAa,CAAC,EACd,WAAY,EAAE,CACd,wBAAyB,GACzB,WAAY,CAAC,MAAO,OAAQ,MAAO,OAAO,CAC1C,MAAO,GACR,CAED,GAAI,GAAe,QAAQ,QAAQ,EAAI,MAChC,IAAM,IAAU,CACnB,cACA,aACA,aACA,gCACA,2BACA,YACA,eACA,cACD,CACK,KAAUC,GACZ,OAAOA,EAAQ,GAKrB,KAAK,OAAS,IAAI,EAAOA,EAAQ,EAEnC,MAAM,MAAO,CACX,KAAK,IAAI,EAAc,MAAO,qCAAqC,CAEnE,IAAI,EAAU,MAAM,KAAK,OAAO,UAC9B,KAAK,SAAS,UAAU,OACtB,GACE,CAAC,EAAS,SAAS,KAAK,cAAc,EACtC,CAAC,EAAS,SAAS,eAAe,CACrC,CACF,CAEK,EAAS,MAAM,KAAK,SAAS,OACjC,KAAK,SAAS,WAAW,SAAS,CACnC,CAEGF,EAIA,eAAgB,IAGlB,EAAS,MAAM,EAAO,WAAW,CAC/B,cAAe,KAAK,OAAO,KAAK,OAAO,WACnC,EAAa,KAAK,OAAO,KAAK,OAAO,WAAW,CAAC,WAC/C,iBACD,CACD,GACL,CAAC,EAGA,KAAK,OAAO,KAAK,OAAO,KAC1B,MAAM,EAAO,YAAY,EAAQ,CAG/B,KAAK,OAAO,KAAK,OAAO,mBAC1B,EAAU,EAAO,gBAAgB,EAAQ,EAO3C,IAAM,EAJsB,EAAQ,QACjC,CAAE,cAAe,GAAU,OAC7B,CAGE,KAAK,CAAE,WAAU,cAChB,EAAc,KAAK,OAAO,YAAa,EAAU,EAAS,CAC3D,CACA,KAAK;EAAK,CAET,KAAK,OAAO,KAAK,OAAO,WAC1B,MAAM,KAAK,GAAG,MAAM,KAAK,OAAO,KAAK,OAAO,WAAY,EAAO,CAE/D,KAAK,IAAI,EAAc,KAAM,EAAO,EAGzC,CAGH,IAAA,EAAe"}