@gallop.software/canon 2.15.2 → 2.16.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/index.d.ts
CHANGED
|
@@ -7,6 +7,9 @@ declare const plugin: {
|
|
|
7
7
|
'no-client-blocks': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noClientBlocks", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
|
|
8
8
|
name: string;
|
|
9
9
|
};
|
|
10
|
+
'block-naming-convention': import("@typescript-eslint/utils/ts-eslint").RuleModule<"blockNamingMismatch", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
|
|
11
|
+
name: string;
|
|
12
|
+
};
|
|
10
13
|
'no-container-in-section': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noContainerInSection", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
|
|
11
14
|
name: string;
|
|
12
15
|
};
|
|
@@ -39,6 +42,7 @@ declare const plugin: {
|
|
|
39
42
|
*/
|
|
40
43
|
recommended: {
|
|
41
44
|
readonly 'gallop/no-client-blocks': "warn";
|
|
45
|
+
readonly 'gallop/block-naming-convention': "warn";
|
|
42
46
|
readonly 'gallop/no-container-in-section': "warn";
|
|
43
47
|
readonly 'gallop/prefer-component-props': "warn";
|
|
44
48
|
readonly 'gallop/prefer-typography-components': "warn";
|
package/dist/eslint/index.js
CHANGED
|
@@ -12,11 +12,13 @@ import noNativeIntersectionObserver from './rules/no-native-intersection-observe
|
|
|
12
12
|
import noComponentInBlocks from './rules/no-component-in-blocks.js';
|
|
13
13
|
import preferListComponents from './rules/prefer-list-components.js';
|
|
14
14
|
import noNativeDate from './rules/no-native-date.js';
|
|
15
|
+
import blockNamingConvention from './rules/block-naming-convention.js';
|
|
15
16
|
/**
|
|
16
17
|
* All Canon ESLint rules with recommended severity levels
|
|
17
18
|
*/
|
|
18
19
|
const recommended = {
|
|
19
20
|
'gallop/no-client-blocks': 'warn',
|
|
21
|
+
'gallop/block-naming-convention': 'warn',
|
|
20
22
|
'gallop/no-container-in-section': 'warn',
|
|
21
23
|
'gallop/prefer-component-props': 'warn',
|
|
22
24
|
'gallop/prefer-typography-components': 'warn',
|
|
@@ -38,6 +40,7 @@ const plugin = {
|
|
|
38
40
|
},
|
|
39
41
|
rules: {
|
|
40
42
|
'no-client-blocks': noClientBlocks,
|
|
43
|
+
'block-naming-convention': blockNamingConvention,
|
|
41
44
|
'no-container-in-section': noContainerInSection,
|
|
42
45
|
'prefer-component-props': preferComponentProps,
|
|
43
46
|
'prefer-typography-components': preferTypographyComponents,
|
|
@@ -59,4 +62,4 @@ const plugin = {
|
|
|
59
62
|
recommended,
|
|
60
63
|
};
|
|
61
64
|
export default plugin;
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXNsaW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sY0FBYyxNQUFNLDZCQUE2QixDQUFBO0FBQ3hELE9BQU8sb0JBQW9CLE1BQU0sb0NBQW9DLENBQUE7QUFDckUsT0FBTyxvQkFBb0IsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNwRSxPQUFPLDBCQUEwQixNQUFNLHlDQUF5QyxDQUFBO0FBQ2hGLE9BQU8sc0JBQXNCLE1BQU0scUNBQXFDLENBQUE7QUFDeEUsT0FBTyxzQkFBc0IsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN4RSxPQUFPLGNBQWMsTUFBTSw2QkFBNkIsQ0FBQTtBQUN4RCxPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFBO0FBQzlELE9BQU8sa0JBQWtCLE1BQU0sa0NBQWtDLENBQUE7QUFDakUsT0FBTyxhQUFhLE1BQU0sNEJBQTRCLENBQUE7QUFDdEQsT0FBTyw0QkFBNEIsTUFBTSw0Q0FBNEMsQ0FBQTtBQUNyRixPQUFPLG1CQUFtQixNQUFNLG1DQUFtQyxDQUFBO0FBQ25FLE9BQU8sb0JBQW9CLE1BQU0sbUNBQW1DLENBQUE7QUFDcEUsT0FBTyxZQUFZLE1BQU0sMkJBQTJCLENBQUE7QUFDcEQsT0FBTyxxQkFBcUIsTUFBTSxvQ0FBb0MsQ0FBQTtBQUV0RTs7R0FFRztBQUNILE1BQU0sV0FBVyxHQUFHO0lBQ2xCLHlCQUF5QixFQUFFLE1BQU07SUFDakMsZ0NBQWdDLEVBQUUsTUFBTTtJQUN4QyxnQ0FBZ0MsRUFBRSxNQUFNO0lBQ3hDLCtCQUErQixFQUFFLE1BQU07SUFDdkMscUNBQXFDLEVBQUUsTUFBTTtJQUM3QyxpQ0FBaUMsRUFBRSxNQUFNO0lBQ3pDLGlDQUFpQyxFQUFFLE1BQU07SUFDekMseUJBQXlCLEVBQUUsTUFBTTtJQUNqQyw0QkFBNEIsRUFBRSxNQUFNO0lBQ3BDLDhCQUE4QixFQUFFLE1BQU07SUFDdEMsd0JBQXdCLEVBQUUsTUFBTTtJQUNoQyx3Q0FBd0MsRUFBRSxNQUFNO0lBQ2hELCtCQUErQixFQUFFLE1BQU07SUFDdkMsK0JBQStCLEVBQUUsTUFBTTtJQUN2Qyx1QkFBdUIsRUFBRSxNQUFNO0NBQ3ZCLENBQUE7QUFFVixNQUFNLE1BQU0sR0FBRztJQUNiLElBQUksRUFBRTtRQUNKLElBQUksRUFBRSxzQkFBc0I7UUFDNUIsT0FBTyxFQUFFLFFBQVE7S0FDbEI7SUFDRCxLQUFLLEVBQUU7UUFDTCxrQkFBa0IsRUFBRSxjQUFjO1FBQ2xDLHlCQUF5QixFQUFFLHFCQUFxQjtRQUNoRCx5QkFBeUIsRUFBRSxvQkFBb0I7UUFDL0Msd0JBQXdCLEVBQUUsb0JBQW9CO1FBQzlDLDhCQUE4QixFQUFFLDBCQUEwQjtRQUMxRCwwQkFBMEIsRUFBRSxzQkFBc0I7UUFDbEQsMEJBQTBCLEVBQUUsc0JBQXNCO1FBQ2xELGtCQUFrQixFQUFFLGNBQWM7UUFDbEMscUJBQXFCLEVBQUUsaUJBQWlCO1FBQ3hDLHVCQUF1QixFQUFFLGtCQUFrQjtRQUMzQyxpQkFBaUIsRUFBRSxhQUFhO1FBQ2hDLGlDQUFpQyxFQUFFLDRCQUE0QjtRQUMvRCx3QkFBd0IsRUFBRSxtQkFBbUI7UUFDN0Msd0JBQXdCLEVBQUUsb0JBQW9CO1FBQzlDLGdCQUFnQixFQUFFLFlBQVk7S0FDL0I7SUFDRDs7O09BR0c7SUFDSCxXQUFXO0NBQ1osQ0FBQTtBQUVELGVBQWUsTUFBTSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vQ2xpZW50QmxvY2tzIGZyb20gJy4vcnVsZXMvbm8tY2xpZW50LWJsb2Nrcy5qcydcbmltcG9ydCBub0NvbnRhaW5lckluU2VjdGlvbiBmcm9tICcuL3J1bGVzL25vLWNvbnRhaW5lci1pbi1zZWN0aW9uLmpzJ1xuaW1wb3J0IHByZWZlckNvbXBvbmVudFByb3BzIGZyb20gJy4vcnVsZXMvcHJlZmVyLWNvbXBvbmVudC1wcm9wcy5qcydcbmltcG9ydCBwcmVmZXJUeXBvZ3JhcGh5Q29tcG9uZW50cyBmcm9tICcuL3J1bGVzL3ByZWZlci10eXBvZ3JhcGh5LWNvbXBvbmVudHMuanMnXG5pbXBvcnQgcHJlZmVyTGF5b3V0Q29tcG9uZW50cyBmcm9tICcuL3J1bGVzL3ByZWZlci1sYXlvdXQtY29tcG9uZW50cy5qcydcbmltcG9ydCBiYWNrZ3JvdW5kSW1hZ2VSb3VuZGVkIGZyb20gJy4vcnVsZXMvYmFja2dyb3VuZC1pbWFnZS1yb3VuZGVkLmpzJ1xuaW1wb3J0IG5vSW5saW5lU3R5bGVzIGZyb20gJy4vcnVsZXMvbm8taW5saW5lLXN0eWxlcy5qcydcbmltcG9ydCBub0FyYml0cmFyeUNvbG9ycyBmcm9tICcuL3J1bGVzL25vLWFyYml0cmFyeS1jb2xvcnMuanMnXG5pbXBvcnQgbm9Dcm9zc1pvbmVJbXBvcnRzIGZyb20gJy4vcnVsZXMvbm8tY3Jvc3Mtem9uZS1pbXBvcnRzLmpzJ1xuaW1wb3J0IG5vRGF0YUltcG9ydHMgZnJvbSAnLi9ydWxlcy9uby1kYXRhLWltcG9ydHMuanMnXG5pbXBvcnQgbm9OYXRpdmVJbnRlcnNlY3Rpb25PYnNlcnZlciBmcm9tICcuL3J1bGVzL25vLW5hdGl2ZS1pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIuanMnXG5pbXBvcnQgbm9Db21wb25lbnRJbkJsb2NrcyBmcm9tICcuL3J1bGVzL25vLWNvbXBvbmVudC1pbi1ibG9ja3MuanMnXG5pbXBvcnQgcHJlZmVyTGlzdENvbXBvbmVudHMgZnJvbSAnLi9ydWxlcy9wcmVmZXItbGlzdC1jb21wb25lbnRzLmpzJ1xuaW1wb3J0IG5vTmF0aXZlRGF0ZSBmcm9tICcuL3J1bGVzL25vLW5hdGl2ZS1kYXRlLmpzJ1xuaW1wb3J0IGJsb2NrTmFtaW5nQ29udmVudGlvbiBmcm9tICcuL3J1bGVzL2Jsb2NrLW5hbWluZy1jb252ZW50aW9uLmpzJ1xuXG4vKipcbiAqIEFsbCBDYW5vbiBFU0xpbnQgcnVsZXMgd2l0aCByZWNvbW1lbmRlZCBzZXZlcml0eSBsZXZlbHNcbiAqL1xuY29uc3QgcmVjb21tZW5kZWQgPSB7XG4gICdnYWxsb3Avbm8tY2xpZW50LWJsb2Nrcyc6ICd3YXJuJyxcbiAgJ2dhbGxvcC9ibG9jay1uYW1pbmctY29udmVudGlvbic6ICd3YXJuJyxcbiAgJ2dhbGxvcC9uby1jb250YWluZXItaW4tc2VjdGlvbic6ICd3YXJuJyxcbiAgJ2dhbGxvcC9wcmVmZXItY29tcG9uZW50LXByb3BzJzogJ3dhcm4nLFxuICAnZ2FsbG9wL3ByZWZlci10eXBvZ3JhcGh5LWNvbXBvbmVudHMnOiAnd2FybicsXG4gICdnYWxsb3AvcHJlZmVyLWxheW91dC1jb21wb25lbnRzJzogJ3dhcm4nLFxuICAnZ2FsbG9wL2JhY2tncm91bmQtaW1hZ2Utcm91bmRlZCc6ICd3YXJuJyxcbiAgJ2dhbGxvcC9uby1pbmxpbmUtc3R5bGVzJzogJ3dhcm4nLFxuICAnZ2FsbG9wL25vLWFyYml0cmFyeS1jb2xvcnMnOiAnd2FybicsXG4gICdnYWxsb3Avbm8tY3Jvc3Mtem9uZS1pbXBvcnRzJzogJ3dhcm4nLFxuICAnZ2FsbG9wL25vLWRhdGEtaW1wb3J0cyc6ICd3YXJuJyxcbiAgJ2dhbGxvcC9uby1uYXRpdmUtaW50ZXJzZWN0aW9uLW9ic2VydmVyJzogJ3dhcm4nLFxuICAnZ2FsbG9wL25vLWNvbXBvbmVudC1pbi1ibG9ja3MnOiAnd2FybicsXG4gICdnYWxsb3AvcHJlZmVyLWxpc3QtY29tcG9uZW50cyc6ICd3YXJuJyxcbiAgJ2dhbGxvcC9uby1uYXRpdmUtZGF0ZSc6ICd3YXJuJyxcbn0gYXMgY29uc3RcblxuY29uc3QgcGx1Z2luID0ge1xuICBtZXRhOiB7XG4gICAgbmFtZTogJ2VzbGludC1wbHVnaW4tZ2FsbG9wJyxcbiAgICB2ZXJzaW9uOiAnMi4xMi4wJyxcbiAgfSxcbiAgcnVsZXM6IHtcbiAgICAnbm8tY2xpZW50LWJsb2Nrcyc6IG5vQ2xpZW50QmxvY2tzLFxuICAgICdibG9jay1uYW1pbmctY29udmVudGlvbic6IGJsb2NrTmFtaW5nQ29udmVudGlvbixcbiAgICAnbm8tY29udGFpbmVyLWluLXNlY3Rpb24nOiBub0NvbnRhaW5lckluU2VjdGlvbixcbiAgICAncHJlZmVyLWNvbXBvbmVudC1wcm9wcyc6IHByZWZlckNvbXBvbmVudFByb3BzLFxuICAgICdwcmVmZXItdHlwb2dyYXBoeS1jb21wb25lbnRzJzogcHJlZmVyVHlwb2dyYXBoeUNvbXBvbmVudHMsXG4gICAgJ3ByZWZlci1sYXlvdXQtY29tcG9uZW50cyc6IHByZWZlckxheW91dENvbXBvbmVudHMsXG4gICAgJ2JhY2tncm91bmQtaW1hZ2Utcm91bmRlZCc6IGJhY2tncm91bmRJbWFnZVJvdW5kZWQsXG4gICAgJ25vLWlubGluZS1zdHlsZXMnOiBub0lubGluZVN0eWxlcyxcbiAgICAnbm8tYXJiaXRyYXJ5LWNvbG9ycyc6IG5vQXJiaXRyYXJ5Q29sb3JzLFxuICAgICduby1jcm9zcy16b25lLWltcG9ydHMnOiBub0Nyb3NzWm9uZUltcG9ydHMsXG4gICAgJ25vLWRhdGEtaW1wb3J0cyc6IG5vRGF0YUltcG9ydHMsXG4gICAgJ25vLW5hdGl2ZS1pbnRlcnNlY3Rpb24tb2JzZXJ2ZXInOiBub05hdGl2ZUludGVyc2VjdGlvbk9ic2VydmVyLFxuICAgICduby1jb21wb25lbnQtaW4tYmxvY2tzJzogbm9Db21wb25lbnRJbkJsb2NrcyxcbiAgICAncHJlZmVyLWxpc3QtY29tcG9uZW50cyc6IHByZWZlckxpc3RDb21wb25lbnRzLFxuICAgICduby1uYXRpdmUtZGF0ZSc6IG5vTmF0aXZlRGF0ZSxcbiAgfSxcbiAgLyoqXG4gICAqIFJlY29tbWVuZGVkIHJ1bGUgY29uZmlndXJhdGlvbnMgLSBzcHJlYWQgaW50byB5b3VyIEVTTGludCBjb25maWdcbiAgICogQGV4YW1wbGUgcnVsZXM6IHsgLi4uZ2FsbG9wLnJlY29tbWVuZGVkIH1cbiAgICovXG4gIHJlY29tbWVuZGVkLFxufVxuXG5leHBvcnQgZGVmYXVsdCBwbHVnaW5cbiJdfQ==
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { ESLintUtils } from '@typescript-eslint/utils';
|
|
2
|
+
import { getCanonUrl, getCanonPattern } from '../utils/canon.js';
|
|
3
|
+
const RULE_NAME = 'block-naming-convention';
|
|
4
|
+
const pattern = getCanonPattern(RULE_NAME);
|
|
5
|
+
const createRule = ESLintUtils.RuleCreator(() => getCanonUrl(RULE_NAME));
|
|
6
|
+
/**
|
|
7
|
+
* Converts a block filename to its expected PascalCase export name
|
|
8
|
+
* e.g., "hero-5" -> "Hero5", "section-10" -> "Section10", "content-39" -> "Content39"
|
|
9
|
+
*/
|
|
10
|
+
function filenameToPascalCase(filename) {
|
|
11
|
+
// Remove extension and split by hyphens
|
|
12
|
+
const baseName = filename.replace(/\.tsx?$/, '');
|
|
13
|
+
// Split by hyphens and convert each part
|
|
14
|
+
return baseName
|
|
15
|
+
.split('-')
|
|
16
|
+
.map((part) => {
|
|
17
|
+
// Capitalize first letter of each part
|
|
18
|
+
return part.charAt(0).toUpperCase() + part.slice(1);
|
|
19
|
+
})
|
|
20
|
+
.join('');
|
|
21
|
+
}
|
|
22
|
+
export default createRule({
|
|
23
|
+
name: RULE_NAME,
|
|
24
|
+
meta: {
|
|
25
|
+
type: 'suggestion',
|
|
26
|
+
docs: {
|
|
27
|
+
description: pattern?.summary || 'Block export names must match filename pattern',
|
|
28
|
+
},
|
|
29
|
+
messages: {
|
|
30
|
+
blockNamingMismatch: `[Canon ${pattern?.id || '006'}] Block export "{{actual}}" should be "{{expected}}" to match the filename "{{filename}}". See: ${pattern?.title || 'Block Naming'} pattern.`,
|
|
31
|
+
},
|
|
32
|
+
schema: [],
|
|
33
|
+
},
|
|
34
|
+
defaultOptions: [],
|
|
35
|
+
create(context) {
|
|
36
|
+
const filename = context.filename || context.getFilename();
|
|
37
|
+
// Only check files in src/blocks/
|
|
38
|
+
if (!filename.includes('/blocks/') && !filename.includes('\\blocks\\')) {
|
|
39
|
+
return {};
|
|
40
|
+
}
|
|
41
|
+
// Extract just the filename (e.g., "hero-5.tsx")
|
|
42
|
+
const match = filename.match(/([^/\\]+\.tsx?)$/);
|
|
43
|
+
if (!match) {
|
|
44
|
+
return {};
|
|
45
|
+
}
|
|
46
|
+
const blockFilename = match[1];
|
|
47
|
+
const expectedName = filenameToPascalCase(blockFilename);
|
|
48
|
+
return {
|
|
49
|
+
// Check export default function declarations
|
|
50
|
+
ExportDefaultDeclaration(node) {
|
|
51
|
+
if (node.declaration.type === 'FunctionDeclaration' && node.declaration.id) {
|
|
52
|
+
const actualName = node.declaration.id.name;
|
|
53
|
+
if (actualName !== expectedName) {
|
|
54
|
+
context.report({
|
|
55
|
+
node: node.declaration.id,
|
|
56
|
+
messageId: 'blockNamingMismatch',
|
|
57
|
+
data: {
|
|
58
|
+
actual: actualName,
|
|
59
|
+
expected: expectedName,
|
|
60
|
+
filename: blockFilename,
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stbmFtaW5nLWNvbnZlbnRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXNsaW50L3J1bGVzL2Jsb2NrLW5hbWluZy1jb252ZW50aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWhFLE1BQU0sU0FBUyxHQUFHLHlCQUF5QixDQUFBO0FBQzNDLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUUxQyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO0FBSXhFOzs7R0FHRztBQUNILFNBQVMsb0JBQW9CLENBQUMsUUFBZ0I7SUFDNUMsd0NBQXdDO0lBQ3hDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBRWhELHlDQUF5QztJQUN6QyxPQUFPLFFBQVE7U0FDWixLQUFLLENBQUMsR0FBRyxDQUFDO1NBQ1YsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDWix1Q0FBdUM7UUFDdkMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckQsQ0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ2IsQ0FBQztBQUVELGVBQWUsVUFBVSxDQUFpQjtJQUN4QyxJQUFJLEVBQUUsU0FBUztJQUNmLElBQUksRUFBRTtRQUNKLElBQUksRUFBRSxZQUFZO1FBQ2xCLElBQUksRUFBRTtZQUNKLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxJQUFJLGdEQUFnRDtTQUNsRjtRQUNELFFBQVEsRUFBRTtZQUNSLG1CQUFtQixFQUFFLFVBQVUsT0FBTyxFQUFFLEVBQUUsSUFBSSxLQUFLLG1HQUFtRyxPQUFPLEVBQUUsS0FBSyxJQUFJLGNBQWMsV0FBVztTQUNsTTtRQUNELE1BQU0sRUFBRSxFQUFFO0tBQ1g7SUFDRCxjQUFjLEVBQUUsRUFBRTtJQUNsQixNQUFNLENBQUMsT0FBTztRQUNaLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBRTFELGtDQUFrQztRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUN2RSxPQUFPLEVBQUUsQ0FBQTtRQUNYLENBQUM7UUFFRCxpREFBaUQ7UUFDakQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBQ2hELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sRUFBRSxDQUFBO1FBQ1gsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM5QixNQUFNLFlBQVksR0FBRyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUV4RCxPQUFPO1lBQ0wsNkNBQTZDO1lBQzdDLHdCQUF3QixDQUFDLElBQUk7Z0JBQzNCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUsscUJBQXFCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDM0UsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFBO29CQUMzQyxJQUFJLFVBQVUsS0FBSyxZQUFZLEVBQUUsQ0FBQzt3QkFDaEMsT0FBTyxDQUFDLE1BQU0sQ0FBQzs0QkFDYixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFOzRCQUN6QixTQUFTLEVBQUUscUJBQXFCOzRCQUNoQyxJQUFJLEVBQUU7Z0NBQ0osTUFBTSxFQUFFLFVBQVU7Z0NBQ2xCLFFBQVEsRUFBRSxZQUFZO2dDQUN0QixRQUFRLEVBQUUsYUFBYTs2QkFDeEI7eUJBQ0YsQ0FBQyxDQUFBO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVTTGludFV0aWxzIH0gZnJvbSAnQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzJ1xuaW1wb3J0IHsgZ2V0Q2Fub25VcmwsIGdldENhbm9uUGF0dGVybiB9IGZyb20gJy4uL3V0aWxzL2Nhbm9uLmpzJ1xuXG5jb25zdCBSVUxFX05BTUUgPSAnYmxvY2stbmFtaW5nLWNvbnZlbnRpb24nXG5jb25zdCBwYXR0ZXJuID0gZ2V0Q2Fub25QYXR0ZXJuKFJVTEVfTkFNRSlcblxuY29uc3QgY3JlYXRlUnVsZSA9IEVTTGludFV0aWxzLlJ1bGVDcmVhdG9yKCgpID0+IGdldENhbm9uVXJsKFJVTEVfTkFNRSkpXG5cbnR5cGUgTWVzc2FnZUlkcyA9ICdibG9ja05hbWluZ01pc21hdGNoJ1xuXG4vKipcbiAqIENvbnZlcnRzIGEgYmxvY2sgZmlsZW5hbWUgdG8gaXRzIGV4cGVjdGVkIFBhc2NhbENhc2UgZXhwb3J0IG5hbWVcbiAqIGUuZy4sIFwiaGVyby01XCIgLT4gXCJIZXJvNVwiLCBcInNlY3Rpb24tMTBcIiAtPiBcIlNlY3Rpb24xMFwiLCBcImNvbnRlbnQtMzlcIiAtPiBcIkNvbnRlbnQzOVwiXG4gKi9cbmZ1bmN0aW9uIGZpbGVuYW1lVG9QYXNjYWxDYXNlKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBSZW1vdmUgZXh0ZW5zaW9uIGFuZCBzcGxpdCBieSBoeXBoZW5zXG4gIGNvbnN0IGJhc2VOYW1lID0gZmlsZW5hbWUucmVwbGFjZSgvXFwudHN4PyQvLCAnJylcbiAgXG4gIC8vIFNwbGl0IGJ5IGh5cGhlbnMgYW5kIGNvbnZlcnQgZWFjaCBwYXJ0XG4gIHJldHVybiBiYXNlTmFtZVxuICAgIC5zcGxpdCgnLScpXG4gICAgLm1hcCgocGFydCkgPT4ge1xuICAgICAgLy8gQ2FwaXRhbGl6ZSBmaXJzdCBsZXR0ZXIgb2YgZWFjaCBwYXJ0XG4gICAgICByZXR1cm4gcGFydC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHBhcnQuc2xpY2UoMSlcbiAgICB9KVxuICAgIC5qb2luKCcnKVxufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVSdWxlPFtdLCBNZXNzYWdlSWRzPih7XG4gIG5hbWU6IFJVTEVfTkFNRSxcbiAgbWV0YToge1xuICAgIHR5cGU6ICdzdWdnZXN0aW9uJyxcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogcGF0dGVybj8uc3VtbWFyeSB8fCAnQmxvY2sgZXhwb3J0IG5hbWVzIG11c3QgbWF0Y2ggZmlsZW5hbWUgcGF0dGVybicsXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgYmxvY2tOYW1pbmdNaXNtYXRjaDogYFtDYW5vbiAke3BhdHRlcm4/LmlkIHx8ICcwMDYnfV0gQmxvY2sgZXhwb3J0IFwie3thY3R1YWx9fVwiIHNob3VsZCBiZSBcInt7ZXhwZWN0ZWR9fVwiIHRvIG1hdGNoIHRoZSBmaWxlbmFtZSBcInt7ZmlsZW5hbWV9fVwiLiBTZWU6ICR7cGF0dGVybj8udGl0bGUgfHwgJ0Jsb2NrIE5hbWluZyd9IHBhdHRlcm4uYCxcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gIH0sXG4gIGRlZmF1bHRPcHRpb25zOiBbXSxcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCBmaWxlbmFtZSA9IGNvbnRleHQuZmlsZW5hbWUgfHwgY29udGV4dC5nZXRGaWxlbmFtZSgpXG5cbiAgICAvLyBPbmx5IGNoZWNrIGZpbGVzIGluIHNyYy9ibG9ja3MvXG4gICAgaWYgKCFmaWxlbmFtZS5pbmNsdWRlcygnL2Jsb2Nrcy8nKSAmJiAhZmlsZW5hbWUuaW5jbHVkZXMoJ1xcXFxibG9ja3NcXFxcJykpIHtcbiAgICAgIHJldHVybiB7fVxuICAgIH1cblxuICAgIC8vIEV4dHJhY3QganVzdCB0aGUgZmlsZW5hbWUgKGUuZy4sIFwiaGVyby01LnRzeFwiKVxuICAgIGNvbnN0IG1hdGNoID0gZmlsZW5hbWUubWF0Y2goLyhbXi9cXFxcXStcXC50c3g/KSQvKVxuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHJldHVybiB7fVxuICAgIH1cblxuICAgIGNvbnN0IGJsb2NrRmlsZW5hbWUgPSBtYXRjaFsxXVxuICAgIGNvbnN0IGV4cGVjdGVkTmFtZSA9IGZpbGVuYW1lVG9QYXNjYWxDYXNlKGJsb2NrRmlsZW5hbWUpXG5cbiAgICByZXR1cm4ge1xuICAgICAgLy8gQ2hlY2sgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVjbGFyYXRpb25zXG4gICAgICBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24obm9kZSkge1xuICAgICAgICBpZiAobm9kZS5kZWNsYXJhdGlvbi50eXBlID09PSAnRnVuY3Rpb25EZWNsYXJhdGlvbicgJiYgbm9kZS5kZWNsYXJhdGlvbi5pZCkge1xuICAgICAgICAgIGNvbnN0IGFjdHVhbE5hbWUgPSBub2RlLmRlY2xhcmF0aW9uLmlkLm5hbWVcbiAgICAgICAgICBpZiAoYWN0dWFsTmFtZSAhPT0gZXhwZWN0ZWROYW1lKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgIG5vZGU6IG5vZGUuZGVjbGFyYXRpb24uaWQsXG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogJ2Jsb2NrTmFtaW5nTWlzbWF0Y2gnLFxuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgYWN0dWFsOiBhY3R1YWxOYW1lLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBleHBlY3RlZE5hbWUsXG4gICAgICAgICAgICAgICAgZmlsZW5hbWU6IGJsb2NrRmlsZW5hbWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9XG4gIH0sXG59KVxuIl19
|
package/package.json
CHANGED
package/schema.json
CHANGED
|
@@ -97,8 +97,8 @@
|
|
|
97
97
|
"file": "patterns/006-block-naming.md",
|
|
98
98
|
"category": "structure",
|
|
99
99
|
"status": "stable",
|
|
100
|
-
"enforcement": "
|
|
101
|
-
"rule":
|
|
100
|
+
"enforcement": "eslint",
|
|
101
|
+
"rule": "gallop/block-naming-convention",
|
|
102
102
|
"summary": "{type}-{n}.tsx naming, PascalCase exports"
|
|
103
103
|
},
|
|
104
104
|
{
|