@gallop.software/canon 2.19.0 → 2.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/eslint/rules/prefer-layout-components.js +2 -2
- package/dist/eslint/rules/prefer-list-components.js +3 -3
- package/dist/eslint/rules/prefer-typography-components.js +4 -4
- package/package.json +1 -1
- package/patterns/007-import-paths.md +46 -19
- package/patterns/012-icon-system.md +2 -2
- package/patterns/018-layout-components.md +2 -1
- package/patterns/025-no-component-in-blocks.md +1 -1
- package/schema.json +1 -1
|
@@ -10,7 +10,7 @@ const rule = {
|
|
|
10
10
|
url: getCanonUrl(RULE_NAME),
|
|
11
11
|
},
|
|
12
12
|
messages: {
|
|
13
|
-
useLayoutComponent: `[Canon ${pattern?.id || '018'}] Use the Grid or Columns component instead of <div className="grid ...">. Import: import {
|
|
13
|
+
useLayoutComponent: `[Canon ${pattern?.id || '018'}] Use the Grid or Columns component instead of <div className="grid ...">. Import: import { Columns, Column } from "@/components/columns"`,
|
|
14
14
|
},
|
|
15
15
|
schema: [],
|
|
16
16
|
},
|
|
@@ -110,4 +110,4 @@ function hasGridClass(classString) {
|
|
|
110
110
|
return false;
|
|
111
111
|
}
|
|
112
112
|
export default rule;
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyLWxheW91dC1jb21wb25lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VzbGludC9ydWxlcy9wcmVmZXItbGF5b3V0LWNvbXBvbmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUVoRSxNQUFNLFNBQVMsR0FBRywwQkFBMEIsQ0FBQTtBQUM1QyxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUE7QUFFMUMsTUFBTSxJQUFJLEdBQW9CO0lBQzVCLElBQUksRUFBRTtRQUNKLElBQUksRUFBRSxZQUFZO1FBQ2xCLElBQUksRUFBRTtZQUNKLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxJQUFJLHlDQUF5QztZQUMxRSxXQUFXLEVBQUUsSUFBSTtZQUNqQixHQUFHLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQztTQUM1QjtRQUNELFFBQVEsRUFBRTtZQUNSLGtCQUFrQixFQUFFLFVBQVUsT0FBTyxFQUFFLEVBQUUsSUFBSSxLQUFLLDJJQUEySTtTQUM5TDtRQUNELE1BQU0sRUFBRSxFQUFFO0tBQ1g7SUFFRCxNQUFNLENBQUMsT0FBTztRQUNaLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBRTFELDRCQUE0QjtRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ25DLE9BQU8sRUFBRSxDQUFBO1FBQ1gsQ0FBQztRQUVELE9BQU87WUFDTCxpQkFBaUIsQ0FBQyxJQUFTO2dCQUN6QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQTtnQkFFbkMsMEJBQTBCO2dCQUMxQixJQUFJLFdBQVcsS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDMUIsT0FBTTtn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QkFDSCxDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUE7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxZQUFZLENBQUMsV0FBbUI7SUFDdkMsMkNBQTJDO0lBQzNDLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFeEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUMxQixvREFBb0Q7UUFDcEQsSUFBSSxHQUFHLEtBQUssTUFBTSxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUNuRCxPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDO0FBRUQsZUFBZSxJQUFJLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnXG5pbXBvcnQgeyBnZXRDYW5vblVybCwgZ2V0Q2Fub25QYXR0ZXJuIH0gZnJvbSAnLi4vdXRpbHMvY2Fub24uanMnXG5cbmNvbnN0IFJVTEVfTkFNRSA9ICdwcmVmZXItbGF5b3V0LWNvbXBvbmVudHMnXG5jb25zdCBwYXR0ZXJuID0gZ2V0Q2Fub25QYXR0ZXJuKFJVTEVfTkFNRSlcblxuY29uc3QgcnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nLFxuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiBwYXR0ZXJuPy5zdW1tYXJ5IHx8ICdVc2UgR3JpZC9Db2x1bW5zLCBub3QgcmF3IGRpdiB3aXRoIGdyaWQnLFxuICAgICAgcmVjb21tZW5kZWQ6IHRydWUsXG4gICAgICB1cmw6IGdldENhbm9uVXJsKFJVTEVfTkFNRSksXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgdXNlTGF5b3V0Q29tcG9uZW50OiBgW0Nhbm9uICR7cGF0dGVybj8uaWQgfHwgJzAxOCd9XSBVc2UgdGhlIEdyaWQgb3IgQ29sdW1ucyBjb21wb25lbnQgaW5zdGVhZCBvZiA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgLi4uXCI+LiBJbXBvcnQ6IGltcG9ydCB7IENvbHVtbnMsIENvbHVtbiB9IGZyb20gXCJAL2NvbXBvbmVudHMvY29sdW1uc1wiYCxcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gIH0sXG5cbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCBmaWxlbmFtZSA9IGNvbnRleHQuZmlsZW5hbWUgfHwgY29udGV4dC5nZXRGaWxlbmFtZSgpXG5cbiAgICAvLyBPbmx5IGFwcGx5IHRvIGJsb2NrIGZpbGVzXG4gICAgaWYgKCFmaWxlbmFtZS5pbmNsdWRlcygnL2Jsb2Nrcy8nKSkge1xuICAgICAgcmV0dXJuIHt9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIEpTWE9wZW5pbmdFbGVtZW50KG5vZGU6IGFueSkge1xuICAgICAgICBjb25zdCBlbGVtZW50TmFtZSA9IG5vZGUubmFtZT8ubmFtZVxuXG4gICAgICAgIC8vIE9ubHkgY2hlY2sgZGl2IGVsZW1lbnRzXG4gICAgICAgIGlmIChlbGVtZW50TmFtZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGlmIGNsYXNzTmFtZSBjb250YWlucyAnZ3JpZCdcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lQXR0ciA9IG5vZGUuYXR0cmlidXRlcz8uZmluZChcbiAgICAgICAgICAoYXR0cjogYW55KSA9PlxuICAgICAgICAgICAgYXR0ci50eXBlID09PSAnSlNYQXR0cmlidXRlJyAmJlxuICAgICAgICAgICAgYXR0ci5uYW1lPy5uYW1lID09PSAnY2xhc3NOYW1lJ1xuICAgICAgICApXG5cbiAgICAgICAgaWYgKCFjbGFzc05hbWVBdHRyKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvLyBIYW5kbGUgc3RyaW5nIGxpdGVyYWwgY2xhc3NOYW1lXG4gICAgICAgIGlmIChjbGFzc05hbWVBdHRyLnZhbHVlPy50eXBlID09PSAnTGl0ZXJhbCcpIHtcbiAgICAgICAgICBjb25zdCBjbGFzc1ZhbHVlID0gY2xhc3NOYW1lQXR0ci52YWx1ZS52YWx1ZVxuICAgICAgICAgIGlmICh0eXBlb2YgY2xhc3NWYWx1ZSA9PT0gJ3N0cmluZycgJiYgaGFzR3JpZENsYXNzKGNsYXNzVmFsdWUpKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogJ3VzZUxheW91dENvbXBvbmVudCcsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmRsZSB0ZW1wbGF0ZSBsaXRlcmFsIGNsYXNzTmFtZVxuICAgICAgICBpZiAoY2xhc3NOYW1lQXR0ci52YWx1ZT8udHlwZSA9PT0gJ0pTWEV4cHJlc3Npb25Db250YWluZXInKSB7XG4gICAgICAgICAgY29uc3QgZXhwciA9IGNsYXNzTmFtZUF0dHIudmFsdWUuZXhwcmVzc2lvblxuXG4gICAgICAgICAgLy8gRGlyZWN0IHRlbXBsYXRlIGxpdGVyYWw6IGNsYXNzTmFtZT17YGdyaWQgLi4uYH1cbiAgICAgICAgICBpZiAoZXhwci50eXBlID09PSAnVGVtcGxhdGVMaXRlcmFsJykge1xuICAgICAgICAgICAgY29uc3QgcXVhc2lzID0gZXhwci5xdWFzaXMgfHwgW11cbiAgICAgICAgICAgIGZvciAoY29uc3QgcXVhc2kgb2YgcXVhc2lzKSB7XG4gICAgICAgICAgICAgIGlmIChxdWFzaS52YWx1ZT8ucmF3ICYmIGhhc0dyaWRDbGFzcyhxdWFzaS52YWx1ZS5yYXcpKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2VJZDogJ3VzZUxheW91dENvbXBvbmVudCcsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGNsc3ggY2FsbDogY2xhc3NOYW1lPXtjbHN4KCdncmlkJywgLi4uKX1cbiAgICAgICAgICBpZiAoZXhwci50eXBlID09PSAnQ2FsbEV4cHJlc3Npb24nKSB7XG4gICAgICAgICAgICBjb25zdCBhcmdzID0gZXhwci5hcmd1bWVudHMgfHwgW11cbiAgICAgICAgICAgIGZvciAoY29uc3QgYXJnIG9mIGFyZ3MpIHtcbiAgICAgICAgICAgICAgaWYgKGFyZy50eXBlID09PSAnTGl0ZXJhbCcgJiYgdHlwZW9mIGFyZy52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzR3JpZENsYXNzKGFyZy52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZUlkOiAndXNlTGF5b3V0Q29tcG9uZW50JyxcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy8gQ2hlY2sgdGVtcGxhdGUgbGl0ZXJhbHMgaW4gY2xzeCBhcmdzXG4gICAgICAgICAgICAgIGlmIChhcmcudHlwZSA9PT0gJ1RlbXBsYXRlTGl0ZXJhbCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBxdWFzaXMgPSBhcmcucXVhc2lzIHx8IFtdXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBxdWFzaSBvZiBxdWFzaXMpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChxdWFzaS52YWx1ZT8ucmF3ICYmIGhhc0dyaWRDbGFzcyhxdWFzaS52YWx1ZS5yYXcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VJZDogJ3VzZUxheW91dENvbXBvbmVudCcsXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9XG4gIH0sXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBjbGFzc05hbWUgc3RyaW5nIGNvbnRhaW5zIGdyaWQgY2xhc3Nlc1xuICogTWF0Y2hlczogJ2dyaWQnLCAnZ3JpZC1jb2xzLScsIGV0Yy5cbiAqIERvZXMgTk9UIG1hdGNoOiAnZ3JpZC1hcmVhJywgY29tcG9uZW50IG5hbWVzIHdpdGggJ2dyaWQnIGluIHRoZW1cbiAqL1xuZnVuY3Rpb24gaGFzR3JpZENsYXNzKGNsYXNzU3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gU3BsaXQgYnkgd2hpdGVzcGFjZSBhbmQgY2hlY2sgZWFjaCBjbGFzc1xuICBjb25zdCBjbGFzc2VzID0gY2xhc3NTdHJpbmcuc3BsaXQoL1xccysvKVxuICBcbiAgZm9yIChjb25zdCBjbHMgb2YgY2xhc3Nlcykge1xuICAgIC8vIE1hdGNoIHN0YW5kYWxvbmUgJ2dyaWQnIG9yICdncmlkLWNvbHMtKicgcGF0dGVybnNcbiAgICBpZiAoY2xzID09PSAnZ3JpZCcgfHwgY2xzLnN0YXJ0c1dpdGgoJ2dyaWQtY29scy0nKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cbiAgXG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgZGVmYXVsdCBydWxlXG4iXX0=
|
|
@@ -10,8 +10,8 @@ const rule = {
|
|
|
10
10
|
url: getCanonUrl(RULE_NAME),
|
|
11
11
|
},
|
|
12
12
|
messages: {
|
|
13
|
-
useList: `[Canon ${pattern?.id || '026'}] Use the List component instead of <ul>. Import: import { List } from "@/components"`,
|
|
14
|
-
useLi: `[Canon ${pattern?.id || '026'}] Use the Li component instead of <li>. Import: import { Li } from "@/components"`,
|
|
13
|
+
useList: `[Canon ${pattern?.id || '026'}] Use the List component instead of <ul>. Import: import { List } from "@/components/list"`,
|
|
14
|
+
useLi: `[Canon ${pattern?.id || '026'}] Use the Li component instead of <li>. Import: import { Li } from "@/components/list"`,
|
|
15
15
|
},
|
|
16
16
|
schema: [],
|
|
17
17
|
},
|
|
@@ -45,4 +45,4 @@ const rule = {
|
|
|
45
45
|
},
|
|
46
46
|
};
|
|
47
47
|
export default rule;
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyLWxpc3QtY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lc2xpbnQvcnVsZXMvcHJlZmVyLWxpc3QtY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWhFLE1BQU0sU0FBUyxHQUFHLHdCQUF3QixDQUFBO0FBQzFDLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUUxQyxNQUFNLElBQUksR0FBb0I7SUFDNUIsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLFlBQVk7UUFDbEIsSUFBSSxFQUFFO1lBQ0osV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLElBQUksaUNBQWlDO1lBQ2xFLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLEdBQUcsRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDO1NBQzVCO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsT0FBTyxFQUFFLFVBQVUsT0FBTyxFQUFFLEVBQUUsSUFBSSxLQUFLLDRGQUE0RjtZQUNuSSxLQUFLLEVBQUUsVUFBVSxPQUFPLEVBQUUsRUFBRSxJQUFJLEtBQUssd0ZBQXdGO1NBQzlIO1FBQ0QsTUFBTSxFQUFFLEVBQUU7S0FDWDtJQUVELE1BQU0sQ0FBQyxPQUFPO1FBQ1osTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUE7UUFFMUQsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDbkMsT0FBTyxFQUFFLENBQUE7UUFDWCxDQUFDO1FBRUQsT0FBTztZQUNMLGlCQUFpQixDQUFDLElBQVM7Z0JBQ3pCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFBO2dCQUVuQyxrQkFBa0I7Z0JBQ2xCLElBQUksV0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO29CQUN6QixPQUFPLENBQUMsTUFBTSxDQUFDO3dCQUNiLElBQUk7d0JBQ0osU0FBUyxFQUFFLFNBQVM7cUJBQ3JCLENBQUMsQ0FBQTtvQkFDRixPQUFNO2dCQUNSLENBQUM7Z0JBRUQsa0JBQWtCO2dCQUNsQixJQUFJLFdBQVcsS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDekIsT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDYixJQUFJO3dCQUNKLFNBQVMsRUFBRSxPQUFPO3FCQUNuQixDQUFDLENBQUE7b0JBQ0YsT0FBTTtnQkFDUixDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUE7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQUVELGVBQWUsSUFBSSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50J1xuaW1wb3J0IHsgZ2V0Q2Fub25VcmwsIGdldENhbm9uUGF0dGVybiB9IGZyb20gJy4uL3V0aWxzL2Nhbm9uLmpzJ1xuXG5jb25zdCBSVUxFX05BTUUgPSAncHJlZmVyLWxpc3QtY29tcG9uZW50cydcbmNvbnN0IHBhdHRlcm4gPSBnZXRDYW5vblBhdHRlcm4oUlVMRV9OQU1FKVxuXG5jb25zdCBydWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIG1ldGE6IHtcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbicsXG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246IHBhdHRlcm4/LnN1bW1hcnkgfHwgJ1VzZSBMaXN0L0xpLCBub3QgcmF3IHVsL2xpIHRhZ3MnLFxuICAgICAgcmVjb21tZW5kZWQ6IHRydWUsXG4gICAgICB1cmw6IGdldENhbm9uVXJsKFJVTEVfTkFNRSksXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgdXNlTGlzdDogYFtDYW5vbiAke3BhdHRlcm4/LmlkIHx8ICcwMjYnfV0gVXNlIHRoZSBMaXN0IGNvbXBvbmVudCBpbnN0ZWFkIG9mIDx1bD4uIEltcG9ydDogaW1wb3J0IHsgTGlzdCB9IGZyb20gXCJAL2NvbXBvbmVudHMvbGlzdFwiYCxcbiAgICAgIHVzZUxpOiBgW0Nhbm9uICR7cGF0dGVybj8uaWQgfHwgJzAyNid9XSBVc2UgdGhlIExpIGNvbXBvbmVudCBpbnN0ZWFkIG9mIDxsaT4uIEltcG9ydDogaW1wb3J0IHsgTGkgfSBmcm9tIFwiQC9jb21wb25lbnRzL2xpc3RcImAsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICB9LFxuXG4gIGNyZWF0ZShjb250ZXh0KSB7XG4gICAgY29uc3QgZmlsZW5hbWUgPSBjb250ZXh0LmZpbGVuYW1lIHx8IGNvbnRleHQuZ2V0RmlsZW5hbWUoKVxuXG4gICAgLy8gT25seSBhcHBseSB0byBibG9jayBmaWxlc1xuICAgIGlmICghZmlsZW5hbWUuaW5jbHVkZXMoJy9ibG9ja3MvJykpIHtcbiAgICAgIHJldHVybiB7fVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBKU1hPcGVuaW5nRWxlbWVudChub2RlOiBhbnkpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudE5hbWUgPSBub2RlLm5hbWU/Lm5hbWVcblxuICAgICAgICAvLyBDaGVjayA8dWw+IHRhZ3NcbiAgICAgICAgaWYgKGVsZW1lbnROYW1lID09PSAndWwnKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogJ3VzZUxpc3QnLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayA8bGk+IHRhZ3NcbiAgICAgICAgaWYgKGVsZW1lbnROYW1lID09PSAnbGknKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogJ3VzZUxpJyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH1cbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgcnVsZVxuIl19
|
|
@@ -10,9 +10,9 @@ const rule = {
|
|
|
10
10
|
url: getCanonUrl(RULE_NAME),
|
|
11
11
|
},
|
|
12
12
|
messages: {
|
|
13
|
-
useParagraph: `[Canon ${pattern?.id || '003'}] Use the Paragraph component instead of <p>. Import: import { Paragraph } from "@/components"`,
|
|
14
|
-
useSpan: `[Canon ${pattern?.id || '003'}] Use the Span component instead of <span> for text content. Import: import { Span } from "@/components"`,
|
|
15
|
-
useQuote: `[Canon ${pattern?.id || '003'}] Use the Quote component instead of <blockquote>. Import: import { Quote } from "@/components"`,
|
|
13
|
+
useParagraph: `[Canon ${pattern?.id || '003'}] Use the Paragraph component instead of <p>. Import: import { Paragraph } from "@/components/paragraph"`,
|
|
14
|
+
useSpan: `[Canon ${pattern?.id || '003'}] Use the Span component instead of <span> for text content. Import: import { Span } from "@/components/span"`,
|
|
15
|
+
useQuote: `[Canon ${pattern?.id || '003'}] Use the Quote component instead of <blockquote>. Import: import { Quote } from "@/components/quote"`,
|
|
16
16
|
useTypographyForDiv: `[Canon ${pattern?.id || '003'}] Use a typography component (Heading, Paragraph, Label, etc.) instead of <div> with text content.`,
|
|
17
17
|
},
|
|
18
18
|
schema: [],
|
|
@@ -141,4 +141,4 @@ const rule = {
|
|
|
141
141
|
},
|
|
142
142
|
};
|
|
143
143
|
export default rule;
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyLXR5cG9ncmFwaHktY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lc2xpbnQvcnVsZXMvcHJlZmVyLXR5cG9ncmFwaHktY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWhFLE1BQU0sU0FBUyxHQUFHLDhCQUE4QixDQUFBO0FBQ2hELE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUUxQyxNQUFNLElBQUksR0FBb0I7SUFDNUIsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLFlBQVk7UUFDbEIsSUFBSSxFQUFFO1lBQ0osV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLElBQUksa0NBQWtDO1lBQ25FLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLEdBQUcsRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDO1NBQzVCO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsWUFBWSxFQUFFLFVBQVUsT0FBTyxFQUFFLEVBQUUsSUFBSSxLQUFLLGdHQUFnRztZQUM1SSxPQUFPLEVBQUUsVUFBVSxPQUFPLEVBQUUsRUFBRSxJQUFJLEtBQUssMEdBQTBHO1lBQ2pKLFFBQVEsRUFBRSxVQUFVLE9BQU8sRUFBRSxFQUFFLElBQUksS0FBSyxpR0FBaUc7WUFDekksbUJBQW1CLEVBQUUsVUFBVSxPQUFPLEVBQUUsRUFBRSxJQUFJLEtBQUssb0dBQW9HO1NBQ3hKO1FBQ0QsTUFBTSxFQUFFLEVBQUU7S0FDWDtJQUVELE1BQU0sQ0FBQyxPQUFPO1FBQ1osTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUE7UUFFMUQsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDbkMsT0FBTyxFQUFFLENBQUE7UUFDWCxDQUFDO1FBRUQsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBRXZHOztXQUVHO1FBQ0gsU0FBUywyQkFBMkIsQ0FBQyxJQUFTO1lBQzVDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUE7WUFDeEIsT0FBTyxNQUFNLEVBQUUsQ0FBQztnQkFDZCxJQUNFLE1BQU0sQ0FBQyxJQUFJLEtBQUssWUFBWTtvQkFDNUIsTUFBTSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsSUFBSTtvQkFDakMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUM5RCxDQUFDO29CQUNELE9BQU8sSUFBSSxDQUFBO2dCQUNiLENBQUM7Z0JBQ0QsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUE7WUFDeEIsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFBO1FBQ2QsQ0FBQztRQUVEOztXQUVHO1FBQ0gsU0FBUyxvQkFBb0IsQ0FBQyxJQUFTO1lBQ3JDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUE7WUFDOUIsSUFBSSxVQUFVLEVBQUUsSUFBSSxLQUFLLFlBQVk7Z0JBQUUsT0FBTyxLQUFLLENBQUE7WUFFbkQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUE7WUFDMUMsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ2xDLGdDQUFnQztnQkFDaEMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUM3QixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtnQkFDdEMsQ0FBQztnQkFDRCwyQ0FBMkM7Z0JBQzNDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyx3QkFBd0IsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDcEYsT0FBTyxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO2dCQUMvRixDQUFDO2dCQUNELE9BQU8sS0FBSyxDQUFBO1lBQ2QsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBRUQ7O1dBRUc7UUFDSCxTQUFTLGdCQUFnQixDQUFDLElBQVM7WUFDakMsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFBO1lBQzFCLElBQUksZUFBZSxHQUFHLEtBQUssQ0FBQTtZQUMzQixJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUE7WUFFMUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGNBQWMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxXQUFXLEVBQUUsQ0FBQztvQkFDcEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLElBQUksRUFBRSxDQUFBO29CQUNyQyxzRUFBc0U7b0JBQ3RFLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ25DLGNBQWMsR0FBRyxJQUFJLENBQUE7b0JBQ3ZCLENBQUM7b0JBQ0QsNkVBQTZFO29CQUM3RSxJQUFJLDhCQUE4QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQzt3QkFDekUsZUFBZSxHQUFHLElBQUksQ0FBQTtvQkFDeEIsQ0FBQztvQkFDRCwyQkFBMkI7b0JBQzNCLElBQUksb0NBQW9DLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ3JELGNBQWMsR0FBRyxJQUFJLENBQUE7b0JBQ3ZCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFBO1lBRUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLENBQUE7UUFDNUQsQ0FBQztRQUVELE9BQU87WUFDTCxpQkFBaUIsQ0FBQyxJQUFTO2dCQUN6QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQTtnQkFFbkMsaUJBQWlCO2dCQUNqQixJQUFJLFdBQVcsS0FBSyxHQUFHLEVBQUUsQ0FBQztvQkFDeEIsT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDYixJQUFJO3dCQUNKLFNBQVMsRUFBRSxjQUFjO3FCQUMxQixDQUFDLENBQUE7b0JBQ0YsT0FBTTtnQkFDUixDQUFDO2dCQUVELDBCQUEwQjtnQkFDMUIsSUFBSSxXQUFXLEtBQUssWUFBWSxFQUFFLENBQUM7b0JBQ2pDLE9BQU8sQ0FBQyxNQUFNLENBQUM7d0JBQ2IsSUFBSTt3QkFDSixTQUFTLEVBQUUsVUFBVTtxQkFDdEIsQ0FBQyxDQUFBO29CQUNGLE9BQU07Z0JBQ1IsQ0FBQztnQkFFRCxvQkFBb0I7Z0JBQ3BCLElBQUksV0FBVyxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUMzQixJQUFJLDJCQUEyQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ3RDLE9BQU07b0JBQ1IsQ0FBQztvQkFFRCxNQUFNLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFBO29CQUVsRSxJQUFJLGNBQWMsSUFBSSxlQUFlLEVBQUUsQ0FBQzt3QkFDdEMsT0FBTTtvQkFDUixDQUFDO29CQUVELElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDL0IsT0FBTyxDQUFDLE1BQU0sQ0FBQzs0QkFDYixJQUFJOzRCQUNKLFNBQVMsRUFBRSxTQUFTO3lCQUNyQixDQUFDLENBQUE7b0JBQ0osQ0FBQztvQkFDRCxPQUFNO2dCQUNSLENBQUM7Z0JBRUQsc0RBQXNEO2dCQUN0RCxJQUFJLFdBQVcsS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO3dCQUN0QyxPQUFNO29CQUNSLENBQUM7b0JBRUQsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFBO29CQUVqRCxzRUFBc0U7b0JBQ3RFLG1FQUFtRTtvQkFDbkUsSUFBSSxjQUFjLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDakQsT0FBTyxDQUFDLE1BQU0sQ0FBQzs0QkFDYixJQUFJOzRCQUNKLFNBQVMsRUFBRSxxQkFBcUI7eUJBQ2pDLENBQUMsQ0FBQTtvQkFDSixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1NBQ0YsQ0FBQTtJQUNILENBQUM7Q0FDRixDQUFBO0FBRUQsZUFBZSxJQUFJLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnXG5pbXBvcnQgeyBnZXRDYW5vblVybCwgZ2V0Q2Fub25QYXR0ZXJuIH0gZnJvbSAnLi4vdXRpbHMvY2Fub24uanMnXG5cbmNvbnN0IFJVTEVfTkFNRSA9ICdwcmVmZXItdHlwb2dyYXBoeS1jb21wb25lbnRzJ1xuY29uc3QgcGF0dGVybiA9IGdldENhbm9uUGF0dGVybihSVUxFX05BTUUpXG5cbmNvbnN0IHJ1bGU6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgbWV0YToge1xuICAgIHR5cGU6ICdzdWdnZXN0aW9uJyxcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogcGF0dGVybj8uc3VtbWFyeSB8fCAnVXNlIFBhcmFncmFwaC9TcGFuLCBub3QgcmF3IHRhZ3MnLFxuICAgICAgcmVjb21tZW5kZWQ6IHRydWUsXG4gICAgICB1cmw6IGdldENhbm9uVXJsKFJVTEVfTkFNRSksXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgdXNlUGFyYWdyYXBoOiBgW0Nhbm9uICR7cGF0dGVybj8uaWQgfHwgJzAwMyd9XSBVc2UgdGhlIFBhcmFncmFwaCBjb21wb25lbnQgaW5zdGVhZCBvZiA8cD4uIEltcG9ydDogaW1wb3J0IHsgUGFyYWdyYXBoIH0gZnJvbSBcIkAvY29tcG9uZW50c1wiYCxcbiAgICAgIHVzZVNwYW46IGBbQ2Fub24gJHtwYXR0ZXJuPy5pZCB8fCAnMDAzJ31dIFVzZSB0aGUgU3BhbiBjb21wb25lbnQgaW5zdGVhZCBvZiA8c3Bhbj4gZm9yIHRleHQgY29udGVudC4gSW1wb3J0OiBpbXBvcnQgeyBTcGFuIH0gZnJvbSBcIkAvY29tcG9uZW50c1wiYCxcbiAgICAgIHVzZVF1b3RlOiBgW0Nhbm9uICR7cGF0dGVybj8uaWQgfHwgJzAwMyd9XSBVc2UgdGhlIFF1b3RlIGNvbXBvbmVudCBpbnN0ZWFkIG9mIDxibG9ja3F1b3RlPi4gSW1wb3J0OiBpbXBvcnQgeyBRdW90ZSB9IGZyb20gXCJAL2NvbXBvbmVudHNcImAsXG4gICAgICB1c2VUeXBvZ3JhcGh5Rm9yRGl2OiBgW0Nhbm9uICR7cGF0dGVybj8uaWQgfHwgJzAwMyd9XSBVc2UgYSB0eXBvZ3JhcGh5IGNvbXBvbmVudCAoSGVhZGluZywgUGFyYWdyYXBoLCBMYWJlbCwgZXRjLikgaW5zdGVhZCBvZiA8ZGl2PiB3aXRoIHRleHQgY29udGVudC5gLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgfSxcblxuICBjcmVhdGUoY29udGV4dCkge1xuICAgIGNvbnN0IGZpbGVuYW1lID0gY29udGV4dC5maWxlbmFtZSB8fCBjb250ZXh0LmdldEZpbGVuYW1lKClcblxuICAgIC8vIE9ubHkgYXBwbHkgdG8gYmxvY2sgZmlsZXNcbiAgICBpZiAoIWZpbGVuYW1lLmluY2x1ZGVzKCcvYmxvY2tzLycpKSB7XG4gICAgICByZXR1cm4ge31cbiAgICB9XG5cbiAgICBjb25zdCB0eXBvZ3JhcGh5Q29tcG9uZW50cyA9IFsnSGVhZGluZycsICdQYXJhZ3JhcGgnLCAnTGFiZWwnLCAnU3BhbicsICdRdW90ZScsICdTdWJoZWFkaW5nJywgJ0FjY2VudCddXG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBlbGVtZW50IGlzIGluc2lkZSBhIHR5cG9ncmFwaHkgY29tcG9uZW50XG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNJbnNpZGVUeXBvZ3JhcGh5Q29tcG9uZW50KG5vZGU6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgbGV0IHBhcmVudCA9IG5vZGUucGFyZW50XG4gICAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYXJlbnQudHlwZSA9PT0gJ0pTWEVsZW1lbnQnICYmXG4gICAgICAgICAgcGFyZW50Lm9wZW5pbmdFbGVtZW50Py5uYW1lPy5uYW1lICYmXG4gICAgICAgICAgdHlwb2dyYXBoeUNvbXBvbmVudHMuaW5jbHVkZXMocGFyZW50Lm9wZW5pbmdFbGVtZW50Lm5hbWUubmFtZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBlbGVtZW50IGhhcyBkaXJlY3QgdGV4dCBjb250ZW50XG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzRGlyZWN0VGV4dENvbnRlbnQobm9kZTogYW55KTogYm9vbGVhbiB7XG4gICAgICBjb25zdCBqc3hFbGVtZW50ID0gbm9kZS5wYXJlbnRcbiAgICAgIGlmIChqc3hFbGVtZW50Py50eXBlICE9PSAnSlNYRWxlbWVudCcpIHJldHVybiBmYWxzZVxuXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGpzeEVsZW1lbnQuY2hpbGRyZW4gfHwgW11cbiAgICAgIHJldHVybiBjaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgIC8vIENoZWNrIGZvciBkaXJlY3QgdGV4dCBjb250ZW50XG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAnSlNYVGV4dCcpIHtcbiAgICAgICAgICByZXR1cm4gY2hpbGQudmFsdWUudHJpbSgpLmxlbmd0aCA+IDBcbiAgICAgICAgfVxuICAgICAgICAvLyBDaGVjayBmb3IgZXhwcmVzc2lvbiB3aXRoIGxpdGVyYWwgc3RyaW5nXG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAnSlNYRXhwcmVzc2lvbkNvbnRhaW5lcicgJiYgY2hpbGQuZXhwcmVzc2lvbj8udHlwZSA9PT0gJ0xpdGVyYWwnKSB7XG4gICAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZC5leHByZXNzaW9uLnZhbHVlID09PSAnc3RyaW5nJyAmJiBjaGlsZC5leHByZXNzaW9uLnZhbHVlLnRyaW0oKS5sZW5ndGggPiAwXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGNsYXNzTmFtZSBmb3Igc3BlY2lmaWMgcGF0dGVybnNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRDbGFzc05hbWVJbmZvKG5vZGU6IGFueSk6IHsgaXNHcmFkaWVudFRleHQ6IGJvb2xlYW47IGlzVmlzdWFsRWxlbWVudDogYm9vbGVhbjsgaGFzVGV4dENsYXNzZXM6IGJvb2xlYW4gfSB7XG4gICAgICBsZXQgaXNHcmFkaWVudFRleHQgPSBmYWxzZVxuICAgICAgbGV0IGlzVmlzdWFsRWxlbWVudCA9IGZhbHNlXG4gICAgICBsZXQgaGFzVGV4dENsYXNzZXMgPSBmYWxzZVxuXG4gICAgICBub2RlLmF0dHJpYnV0ZXM/LmZvckVhY2goKGF0dHI6IGFueSkgPT4ge1xuICAgICAgICBpZiAoYXR0ci50eXBlID09PSAnSlNYQXR0cmlidXRlJyAmJiBhdHRyLm5hbWU/Lm5hbWUgPT09ICdjbGFzc05hbWUnKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBhdHRyLnZhbHVlPy52YWx1ZSB8fCAnJ1xuICAgICAgICAgIC8vIFNraXAgZ3JhZGllbnQgdGV4dCAoYmctY2xpcC10ZXh0IGlzIHVzZWQgZm9yIGdyYWRpZW50IHRleHQgZWZmZWN0cylcbiAgICAgICAgICBpZiAoL1xcYmJnLWNsaXAtdGV4dFxcYi8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGlzR3JhZGllbnRUZXh0ID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBWaXN1YWwgZWxlbWVudHMgKGRvdHMsIGRlY29yYXRpdmUgZWxlbWVudHMgd2l0aCB3LS9oLSBidXQgbm8gdGV4dCBjbGFzc2VzKVxuICAgICAgICAgIGlmICgvXFxiKHctXFxkfGgtXFxkfHJvdW5kZWQtZnVsbClcXGIvLnRlc3QodmFsdWUpICYmICEvXFxidGV4dC0vLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICBpc1Zpc3VhbEVsZW1lbnQgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEhhcyB0ZXh0LXJlbGF0ZWQgY2xhc3Nlc1xuICAgICAgICAgIGlmICgvXFxiKHRleHQtfGZvbnQtfGxlYWRpbmctfHRyYWNraW5nLSkvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICBoYXNUZXh0Q2xhc3NlcyA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHJldHVybiB7IGlzR3JhZGllbnRUZXh0LCBpc1Zpc3VhbEVsZW1lbnQsIGhhc1RleHRDbGFzc2VzIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgSlNYT3BlbmluZ0VsZW1lbnQobm9kZTogYW55KSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnROYW1lID0gbm9kZS5uYW1lPy5uYW1lXG5cbiAgICAgICAgLy8gQ2hlY2sgPHA+IHRhZ3NcbiAgICAgICAgaWYgKGVsZW1lbnROYW1lID09PSAncCcpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbWVzc2FnZUlkOiAndXNlUGFyYWdyYXBoJyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgPGJsb2NrcXVvdGU+IHRhZ3NcbiAgICAgICAgaWYgKGVsZW1lbnROYW1lID09PSAnYmxvY2txdW90ZScpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbWVzc2FnZUlkOiAndXNlUXVvdGUnLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayA8c3Bhbj4gdGFnc1xuICAgICAgICBpZiAoZWxlbWVudE5hbWUgPT09ICdzcGFuJykge1xuICAgICAgICAgIGlmIChpc0luc2lkZVR5cG9ncmFwaHlDb21wb25lbnQobm9kZSkpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHsgaXNHcmFkaWVudFRleHQsIGlzVmlzdWFsRWxlbWVudCB9ID0gZ2V0Q2xhc3NOYW1lSW5mbyhub2RlKVxuXG4gICAgICAgICAgaWYgKGlzR3JhZGllbnRUZXh0IHx8IGlzVmlzdWFsRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGhhc0RpcmVjdFRleHRDb250ZW50KG5vZGUpKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogJ3VzZVNwYW4nLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayA8ZGl2PiB0YWdzIHdpdGggdGV4dCBjb250ZW50IGFuZCB0ZXh0IHN0eWxpbmdcbiAgICAgICAgaWYgKGVsZW1lbnROYW1lID09PSAnZGl2Jykge1xuICAgICAgICAgIGlmIChpc0luc2lkZVR5cG9ncmFwaHlDb21wb25lbnQobm9kZSkpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHsgaGFzVGV4dENsYXNzZXMgfSA9IGdldENsYXNzTmFtZUluZm8obm9kZSlcblxuICAgICAgICAgIC8vIE9ubHkgZmxhZyBkaXZzIHRoYXQgaGF2ZSBib3RoIHRleHQgY29udGVudCBBTkQgdGV4dC1yZWxhdGVkIGNsYXNzZXNcbiAgICAgICAgICAvLyBUaGlzIGluZGljYXRlcyBpdCdzIGJlaW5nIHVzZWQgZm9yIHR5cG9ncmFwaHkgcmF0aGVyIHRoYW4gbGF5b3V0XG4gICAgICAgICAgaWYgKGhhc1RleHRDbGFzc2VzICYmIGhhc0RpcmVjdFRleHRDb250ZW50KG5vZGUpKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogJ3VzZVR5cG9ncmFwaHlGb3JEaXYnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfVxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBydWxlXG4iXX0=
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyLXR5cG9ncmFwaHktY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lc2xpbnQvcnVsZXMvcHJlZmVyLXR5cG9ncmFwaHktY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWhFLE1BQU0sU0FBUyxHQUFHLDhCQUE4QixDQUFBO0FBQ2hELE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUUxQyxNQUFNLElBQUksR0FBb0I7SUFDNUIsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLFlBQVk7UUFDbEIsSUFBSSxFQUFFO1lBQ0osV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLElBQUksa0NBQWtDO1lBQ25FLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLEdBQUcsRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDO1NBQzVCO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsWUFBWSxFQUFFLFVBQVUsT0FBTyxFQUFFLEVBQUUsSUFBSSxLQUFLLDBHQUEwRztZQUN0SixPQUFPLEVBQUUsVUFBVSxPQUFPLEVBQUUsRUFBRSxJQUFJLEtBQUssK0dBQStHO1lBQ3RKLFFBQVEsRUFBRSxVQUFVLE9BQU8sRUFBRSxFQUFFLElBQUksS0FBSyx1R0FBdUc7WUFDL0ksbUJBQW1CLEVBQUUsVUFBVSxPQUFPLEVBQUUsRUFBRSxJQUFJLEtBQUssb0dBQW9HO1NBQ3hKO1FBQ0QsTUFBTSxFQUFFLEVBQUU7S0FDWDtJQUVELE1BQU0sQ0FBQyxPQUFPO1FBQ1osTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUE7UUFFMUQsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDbkMsT0FBTyxF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QztvQkFDRCxPQUFNO2dCQUNSLENBQUM7Z0JBRUQsc0RBQXNEO2dCQUN0RCxJQUFJLFdBQVcsS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO3dCQUN0QyxPQUFNO29CQUNSLENBQUM7b0JBRUQsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFBO29CQUVqRCxzRUFBc0U7b0JBQ3RFLG1FQUFtRTtvQkFDbkUsSUFBSSxjQUFjLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDakQsT0FBTyxDQUFDLE1BQU0sQ0FBQzs0QkFDYixJQUFJOzRCQUNKLFNBQVMsRUFBRSxxQkFBcUI7eUJBQ2pDLENBQUMsQ0FBQTtvQkFDSixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1NBQ0YsQ0FBQTtJQUNILENBQUM7Q0FDRixDQUFBO0FBRUQsZUFBZSxJQUFJLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnXG5pbXBvcnQgeyBnZXRDYW5vblVybCwgZ2V0Q2Fub25QYXR0ZXJuIH0gZnJvbSAnLi4vdXRpbHMvY2Fub24uanMnXG5cbmNvbnN0IFJVTEVfTkFNRSA9ICdwcmVmZXItdHlwb2dyYXBoeS1jb21wb25lbnRzJ1xuY29uc3QgcGF0dGVybiA9IGdldENhbm9uUGF0dGVybihSVUxFX05BTUUpXG5cbmNvbnN0IHJ1bGU6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgbWV0YToge1xuICAgIHR5cGU6ICdzdWdnZXN0aW9uJyxcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogcGF0dGVybj8uc3VtbWFyeSB8fCAnVXNlIFBhcmFncmFwaC9TcGFuLCBub3QgcmF3IHRhZ3MnLFxuICAgICAgcmVjb21tZW5kZWQ6IHRydWUsXG4gICAgICB1cmw6IGdldENhbm9uVXJsKFJVTEVfTkFNRSksXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgdXNlUGFyYWdyYXBoOiBgW0Nhbm9uICR7cGF0dGVybj8uaWQgfHwgJzAwMyd9XSBVc2UgdGhlIFBhcmFncmFwaCBjb21wb25lbnQgaW5zdGVhZCBvZiA8cD4uIEltcG9ydDogaW1wb3J0IHsgUGFyYWdyYXBoIH0gZnJvbSBcIkAvY29tcG9uZW50cy9wYXJhZ3JhcGhcImAsXG4gICAgICB1c2VTcGFuOiBgW0Nhbm9uICR7cGF0dGVybj8uaWQgfHwgJzAwMyd9XSBVc2UgdGhlIFNwYW4gY29tcG9uZW50IGluc3RlYWQgb2YgPHNwYW4+IGZvciB0ZXh0IGNvbnRlbnQuIEltcG9ydDogaW1wb3J0IHsgU3BhbiB9IGZyb20gXCJAL2NvbXBvbmVudHMvc3BhblwiYCxcbiAgICAgIHVzZVF1b3RlOiBgW0Nhbm9uICR7cGF0dGVybj8uaWQgfHwgJzAwMyd9XSBVc2UgdGhlIFF1b3RlIGNvbXBvbmVudCBpbnN0ZWFkIG9mIDxibG9ja3F1b3RlPi4gSW1wb3J0OiBpbXBvcnQgeyBRdW90ZSB9IGZyb20gXCJAL2NvbXBvbmVudHMvcXVvdGVcImAsXG4gICAgICB1c2VUeXBvZ3JhcGh5Rm9yRGl2OiBgW0Nhbm9uICR7cGF0dGVybj8uaWQgfHwgJzAwMyd9XSBVc2UgYSB0eXBvZ3JhcGh5IGNvbXBvbmVudCAoSGVhZGluZywgUGFyYWdyYXBoLCBMYWJlbCwgZXRjLikgaW5zdGVhZCBvZiA8ZGl2PiB3aXRoIHRleHQgY29udGVudC5gLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgfSxcblxuICBjcmVhdGUoY29udGV4dCkge1xuICAgIGNvbnN0IGZpbGVuYW1lID0gY29udGV4dC5maWxlbmFtZSB8fCBjb250ZXh0LmdldEZpbGVuYW1lKClcblxuICAgIC8vIE9ubHkgYXBwbHkgdG8gYmxvY2sgZmlsZXNcbiAgICBpZiAoIWZpbGVuYW1lLmluY2x1ZGVzKCcvYmxvY2tzLycpKSB7XG4gICAgICByZXR1cm4ge31cbiAgICB9XG5cbiAgICBjb25zdCB0eXBvZ3JhcGh5Q29tcG9uZW50cyA9IFsnSGVhZGluZycsICdQYXJhZ3JhcGgnLCAnTGFiZWwnLCAnU3BhbicsICdRdW90ZScsICdTdWJoZWFkaW5nJywgJ0FjY2VudCddXG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBlbGVtZW50IGlzIGluc2lkZSBhIHR5cG9ncmFwaHkgY29tcG9uZW50XG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNJbnNpZGVUeXBvZ3JhcGh5Q29tcG9uZW50KG5vZGU6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgbGV0IHBhcmVudCA9IG5vZGUucGFyZW50XG4gICAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYXJlbnQudHlwZSA9PT0gJ0pTWEVsZW1lbnQnICYmXG4gICAgICAgICAgcGFyZW50Lm9wZW5pbmdFbGVtZW50Py5uYW1lPy5uYW1lICYmXG4gICAgICAgICAgdHlwb2dyYXBoeUNvbXBvbmVudHMuaW5jbHVkZXMocGFyZW50Lm9wZW5pbmdFbGVtZW50Lm5hbWUubmFtZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBlbGVtZW50IGhhcyBkaXJlY3QgdGV4dCBjb250ZW50XG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzRGlyZWN0VGV4dENvbnRlbnQobm9kZTogYW55KTogYm9vbGVhbiB7XG4gICAgICBjb25zdCBqc3hFbGVtZW50ID0gbm9kZS5wYXJlbnRcbiAgICAgIGlmIChqc3hFbGVtZW50Py50eXBlICE9PSAnSlNYRWxlbWVudCcpIHJldHVybiBmYWxzZVxuXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGpzeEVsZW1lbnQuY2hpbGRyZW4gfHwgW11cbiAgICAgIHJldHVybiBjaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgIC8vIENoZWNrIGZvciBkaXJlY3QgdGV4dCBjb250ZW50XG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAnSlNYVGV4dCcpIHtcbiAgICAgICAgICByZXR1cm4gY2hpbGQudmFsdWUudHJpbSgpLmxlbmd0aCA+IDBcbiAgICAgICAgfVxuICAgICAgICAvLyBDaGVjayBmb3IgZXhwcmVzc2lvbiB3aXRoIGxpdGVyYWwgc3RyaW5nXG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAnSlNYRXhwcmVzc2lvbkNvbnRhaW5lcicgJiYgY2hpbGQuZXhwcmVzc2lvbj8udHlwZSA9PT0gJ0xpdGVyYWwnKSB7XG4gICAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZC5leHByZXNzaW9uLnZhbHVlID09PSAnc3RyaW5nJyAmJiBjaGlsZC5leHByZXNzaW9uLnZhbHVlLnRyaW0oKS5sZW5ndGggPiAwXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGNsYXNzTmFtZSBmb3Igc3BlY2lmaWMgcGF0dGVybnNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRDbGFzc05hbWVJbmZvKG5vZGU6IGFueSk6IHsgaXNHcmFkaWVudFRleHQ6IGJvb2xlYW47IGlzVmlzdWFsRWxlbWVudDogYm9vbGVhbjsgaGFzVGV4dENsYXNzZXM6IGJvb2xlYW4gfSB7XG4gICAgICBsZXQgaXNHcmFkaWVudFRleHQgPSBmYWxzZVxuICAgICAgbGV0IGlzVmlzdWFsRWxlbWVudCA9IGZhbHNlXG4gICAgICBsZXQgaGFzVGV4dENsYXNzZXMgPSBmYWxzZVxuXG4gICAgICBub2RlLmF0dHJpYnV0ZXM/LmZvckVhY2goKGF0dHI6IGFueSkgPT4ge1xuICAgICAgICBpZiAoYXR0ci50eXBlID09PSAnSlNYQXR0cmlidXRlJyAmJiBhdHRyLm5hbWU/Lm5hbWUgPT09ICdjbGFzc05hbWUnKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBhdHRyLnZhbHVlPy52YWx1ZSB8fCAnJ1xuICAgICAgICAgIC8vIFNraXAgZ3JhZGllbnQgdGV4dCAoYmctY2xpcC10ZXh0IGlzIHVzZWQgZm9yIGdyYWRpZW50IHRleHQgZWZmZWN0cylcbiAgICAgICAgICBpZiAoL1xcYmJnLWNsaXAtdGV4dFxcYi8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGlzR3JhZGllbnRUZXh0ID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBWaXN1YWwgZWxlbWVudHMgKGRvdHMsIGRlY29yYXRpdmUgZWxlbWVudHMgd2l0aCB3LS9oLSBidXQgbm8gdGV4dCBjbGFzc2VzKVxuICAgICAgICAgIGlmICgvXFxiKHctXFxkfGgtXFxkfHJvdW5kZWQtZnVsbClcXGIvLnRlc3QodmFsdWUpICYmICEvXFxidGV4dC0vLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICBpc1Zpc3VhbEVsZW1lbnQgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEhhcyB0ZXh0LXJlbGF0ZWQgY2xhc3Nlc1xuICAgICAgICAgIGlmICgvXFxiKHRleHQtfGZvbnQtfGxlYWRpbmctfHRyYWNraW5nLSkvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICBoYXNUZXh0Q2xhc3NlcyA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHJldHVybiB7IGlzR3JhZGllbnRUZXh0LCBpc1Zpc3VhbEVsZW1lbnQsIGhhc1RleHRDbGFzc2VzIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgSlNYT3BlbmluZ0VsZW1lbnQobm9kZTogYW55KSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnROYW1lID0gbm9kZS5uYW1lPy5uYW1lXG5cbiAgICAgICAgLy8gQ2hlY2sgPHA+IHRhZ3NcbiAgICAgICAgaWYgKGVsZW1lbnROYW1lID09PSAncCcpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbWVzc2FnZUlkOiAndXNlUGFyYWdyYXBoJyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgPGJsb2NrcXVvdGU+IHRhZ3NcbiAgICAgICAgaWYgKGVsZW1lbnROYW1lID09PSAnYmxvY2txdW90ZScpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbWVzc2FnZUlkOiAndXNlUXVvdGUnLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayA8c3Bhbj4gdGFnc1xuICAgICAgICBpZiAoZWxlbWVudE5hbWUgPT09ICdzcGFuJykge1xuICAgICAgICAgIGlmIChpc0luc2lkZVR5cG9ncmFwaHlDb21wb25lbnQobm9kZSkpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHsgaXNHcmFkaWVudFRleHQsIGlzVmlzdWFsRWxlbWVudCB9ID0gZ2V0Q2xhc3NOYW1lSW5mbyhub2RlKVxuXG4gICAgICAgICAgaWYgKGlzR3JhZGllbnRUZXh0IHx8IGlzVmlzdWFsRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGhhc0RpcmVjdFRleHRDb250ZW50KG5vZGUpKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogJ3VzZVNwYW4nLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayA8ZGl2PiB0YWdzIHdpdGggdGV4dCBjb250ZW50IGFuZCB0ZXh0IHN0eWxpbmdcbiAgICAgICAgaWYgKGVsZW1lbnROYW1lID09PSAnZGl2Jykge1xuICAgICAgICAgIGlmIChpc0luc2lkZVR5cG9ncmFwaHlDb21wb25lbnQobm9kZSkpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHsgaGFzVGV4dENsYXNzZXMgfSA9IGdldENsYXNzTmFtZUluZm8obm9kZSlcblxuICAgICAgICAgIC8vIE9ubHkgZmxhZyBkaXZzIHRoYXQgaGF2ZSBib3RoIHRleHQgY29udGVudCBBTkQgdGV4dC1yZWxhdGVkIGNsYXNzZXNcbiAgICAgICAgICAvLyBUaGlzIGluZGljYXRlcyBpdCdzIGJlaW5nIHVzZWQgZm9yIHR5cG9ncmFwaHkgcmF0aGVyIHRoYW4gbGF5b3V0XG4gICAgICAgICAgaWYgKGhhc1RleHRDbGFzc2VzICYmIGhhc0RpcmVjdFRleHRDb250ZW50KG5vZGUpKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogJ3VzZVR5cG9ncmFwaHlGb3JEaXYnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfVxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBydWxlXG4iXX0=
|
package/package.json
CHANGED
|
@@ -7,20 +7,21 @@
|
|
|
7
7
|
|
|
8
8
|
## Decision
|
|
9
9
|
|
|
10
|
-
Use `@/` path aliases for all internal imports. Use
|
|
10
|
+
Use `@/` path aliases for all internal imports. Use direct file imports for components (no barrel exports).
|
|
11
11
|
|
|
12
12
|
## Rationale
|
|
13
13
|
|
|
14
14
|
1. **Consistent paths** — No relative path gymnastics (`../../..`)
|
|
15
15
|
2. **Refactoring safe** — Moving files doesn't break imports
|
|
16
16
|
3. **Clear origin** — `@/` indicates project source
|
|
17
|
-
4. **
|
|
17
|
+
4. **AI-readable** — Direct imports show exactly where each component lives
|
|
18
|
+
5. **Explicit dependencies** — No hidden re-exports through barrel files
|
|
18
19
|
|
|
19
20
|
## Path Aliases
|
|
20
21
|
|
|
21
22
|
| Alias | Resolves To | Example |
|
|
22
23
|
|-------|-------------|---------|
|
|
23
|
-
| `@/components` | `src/components` | `import { Heading } from '@/components'` |
|
|
24
|
+
| `@/components` | `src/components` | `import { Heading } from '@/components/heading'` |
|
|
24
25
|
| `@/blocks` | `src/blocks` | `import Hero1 from '@/blocks/hero-1'` |
|
|
25
26
|
| `@/hooks` | `src/hooks` | `import { useInView } from '@/hooks/use-in-view'` |
|
|
26
27
|
| `@/template` | `src/template` | `import PageFooter from '@/template/page-footer'` |
|
|
@@ -28,15 +29,33 @@ Use `@/` path aliases for all internal imports. Use destructured imports for com
|
|
|
28
29
|
|
|
29
30
|
## Import Patterns
|
|
30
31
|
|
|
31
|
-
### Components (
|
|
32
|
+
### Components (Direct File Imports)
|
|
32
33
|
|
|
33
34
|
```tsx
|
|
34
|
-
// Good:
|
|
35
|
-
import { Heading, Paragraph, Button, Section, Columns, Column } from '@/components'
|
|
36
|
-
|
|
37
|
-
// Bad: Individual file imports
|
|
35
|
+
// Good: Direct file imports
|
|
38
36
|
import { Heading } from '@/components/heading'
|
|
39
37
|
import { Paragraph } from '@/components/paragraph'
|
|
38
|
+
import { Button } from '@/components/button'
|
|
39
|
+
import { Section } from '@/components/section'
|
|
40
|
+
import { Columns, Column } from '@/components/columns'
|
|
41
|
+
|
|
42
|
+
// Bad: Barrel imports (don't use)
|
|
43
|
+
import { Heading, Paragraph, Button } from '@/components'
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Component Subfolders
|
|
47
|
+
|
|
48
|
+
For components in subfolders (like `navbar/`, `form/`):
|
|
49
|
+
|
|
50
|
+
```tsx
|
|
51
|
+
// Good: Import from subfolder
|
|
52
|
+
import { Navbar } from '@/components/navbar'
|
|
53
|
+
import { Form, FormInput } from '@/components/form'
|
|
54
|
+
|
|
55
|
+
// Within subfolders, same-folder imports can use relative paths
|
|
56
|
+
// In navbar/mobile-nav.tsx:
|
|
57
|
+
import { links } from './config'
|
|
58
|
+
import type { NavLink } from './types'
|
|
40
59
|
```
|
|
41
60
|
|
|
42
61
|
### Blocks (Default Export)
|
|
@@ -77,15 +96,12 @@ import playCircleIcon from '@iconify/icons-lucide/play-circle'
|
|
|
77
96
|
### Good
|
|
78
97
|
|
|
79
98
|
```tsx
|
|
80
|
-
import {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
Column,
|
|
87
|
-
Image,
|
|
88
|
-
} from '@/components'
|
|
99
|
+
import { Heading } from '@/components/heading'
|
|
100
|
+
import { Paragraph } from '@/components/paragraph'
|
|
101
|
+
import { Button } from '@/components/button'
|
|
102
|
+
import { Section } from '@/components/section'
|
|
103
|
+
import { Columns, Column } from '@/components/columns'
|
|
104
|
+
import { Image } from '@/components/image'
|
|
89
105
|
import Hero1 from '@/blocks/hero-1'
|
|
90
106
|
import arrowDownIcon from '@iconify/icons-heroicons/arrow-down-20-solid'
|
|
91
107
|
```
|
|
@@ -93,7 +109,10 @@ import arrowDownIcon from '@iconify/icons-heroicons/arrow-down-20-solid'
|
|
|
93
109
|
### Bad
|
|
94
110
|
|
|
95
111
|
```tsx
|
|
96
|
-
//
|
|
112
|
+
// Barrel imports (no longer used)
|
|
113
|
+
import { Heading, Paragraph, Button } from '@/components'
|
|
114
|
+
|
|
115
|
+
// Relative imports outside component subfolders
|
|
97
116
|
import { Heading } from '../../components/heading'
|
|
98
117
|
import Hero1 from '../blocks/hero-1'
|
|
99
118
|
|
|
@@ -102,6 +121,15 @@ import { Heading } from 'components/heading'
|
|
|
102
121
|
import { Heading } from '~/components/heading'
|
|
103
122
|
```
|
|
104
123
|
|
|
124
|
+
## Why Not Barrel Exports?
|
|
125
|
+
|
|
126
|
+
Barrel exports (`src/components/index.ts`) were previously used but removed because:
|
|
127
|
+
|
|
128
|
+
1. **AI tools** must trace through the barrel to find actual component files
|
|
129
|
+
2. **Hidden complexity** — Re-exports obscure where code actually lives
|
|
130
|
+
3. **Maintenance burden** — Must update barrel when adding/removing components
|
|
131
|
+
4. **No real benefit** — Direct imports are equally concise and more explicit
|
|
132
|
+
|
|
105
133
|
## Enforcement
|
|
106
134
|
|
|
107
135
|
- **Method:** Code review / ESLint import rules
|
|
@@ -110,4 +138,3 @@ import { Heading } from '~/components/heading'
|
|
|
110
138
|
## References
|
|
111
139
|
|
|
112
140
|
- `tsconfig.json` — Path alias configuration
|
|
113
|
-
- `src/components/index.ts` — Component barrel file
|
|
@@ -38,7 +38,7 @@ import twitterIcon from '@iconify/icons-simple-icons/twitter'
|
|
|
38
38
|
### Render with Icon Component
|
|
39
39
|
|
|
40
40
|
```tsx
|
|
41
|
-
import { Icon } from '@/components'
|
|
41
|
+
import { Icon } from '@/components/icon'
|
|
42
42
|
|
|
43
43
|
<Icon icon={arrowRightIcon} className="w-5 h-5" />
|
|
44
44
|
<Icon icon={playCircleIcon} className="w-6 h-6 text-accent" />
|
|
@@ -75,7 +75,7 @@ import { Icon } from '@/components'
|
|
|
75
75
|
|
|
76
76
|
```tsx
|
|
77
77
|
import arrowRightIcon from '@iconify/icons-heroicons/arrow-right-20-solid'
|
|
78
|
-
import { Icon } from '@/components'
|
|
78
|
+
import { Icon } from '@/components/icon'
|
|
79
79
|
|
|
80
80
|
<button className="flex items-center gap-2">
|
|
81
81
|
Next
|
|
@@ -35,7 +35,8 @@ Raw `<div>` elements with grid classes bypass the design system's layout abstrac
|
|
|
35
35
|
## Good
|
|
36
36
|
|
|
37
37
|
```tsx
|
|
38
|
-
import { Grid
|
|
38
|
+
import { Grid } from '@/components/grid'
|
|
39
|
+
import { Columns, Column } from '@/components/columns'
|
|
39
40
|
|
|
40
41
|
<Grid cols="grid-cols-3" gap="gap-6">
|
|
41
42
|
<Card>...</Card>
|