@gallop.software/canon 2.21.0 → 2.22.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.
@@ -28,6 +28,7 @@ declare const plugin: {
28
28
  'no-component-in-blocks': import("eslint").Rule.RuleModule;
29
29
  'prefer-list-components': import("eslint").Rule.RuleModule;
30
30
  'no-native-date': import("eslint").Rule.RuleModule;
31
+ 'require-canon-setup': import("eslint").Rule.RuleModule;
31
32
  };
32
33
  /**
33
34
  * Recommended rule configurations - spread into your ESLint config
@@ -46,6 +47,7 @@ declare const plugin: {
46
47
  readonly 'gallop/no-component-in-blocks': "warn";
47
48
  readonly 'gallop/prefer-list-components': "warn";
48
49
  readonly 'gallop/no-native-date': "warn";
50
+ readonly 'gallop/require-canon-setup': "warn";
49
51
  };
50
52
  };
51
53
  export default plugin;
@@ -10,6 +10,7 @@ import noComponentInBlocks from './rules/no-component-in-blocks.js';
10
10
  import preferListComponents from './rules/prefer-list-components.js';
11
11
  import noNativeDate from './rules/no-native-date.js';
12
12
  import blockNamingConvention from './rules/block-naming-convention.js';
13
+ import requireCanonSetup from './rules/require-canon-setup.js';
13
14
  /**
14
15
  * All Canon ESLint rules with recommended severity levels
15
16
  */
@@ -26,6 +27,7 @@ const recommended = {
26
27
  'gallop/no-component-in-blocks': 'warn',
27
28
  'gallop/prefer-list-components': 'warn',
28
29
  'gallop/no-native-date': 'warn',
30
+ 'gallop/require-canon-setup': 'warn',
29
31
  };
30
32
  const plugin = {
31
33
  meta: {
@@ -45,6 +47,7 @@ const plugin = {
45
47
  'no-component-in-blocks': noComponentInBlocks,
46
48
  'prefer-list-components': preferListComponents,
47
49
  'no-native-date': noNativeDate,
50
+ 'require-canon-setup': requireCanonSetup,
48
51
  },
49
52
  /**
50
53
  * Recommended rule configurations - spread into your ESLint config
@@ -53,4 +56,4 @@ const plugin = {
53
56
  recommended,
54
57
  };
55
58
  export default plugin;
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXNsaW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sY0FBYyxNQUFNLDZCQUE2QixDQUFBO0FBQ3hELE9BQU8sb0JBQW9CLE1BQU0sb0NBQW9DLENBQUE7QUFDckUsT0FBTyxvQkFBb0IsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNwRSxPQUFPLDBCQUEwQixNQUFNLHlDQUF5QyxDQUFBO0FBQ2hGLE9BQU8sc0JBQXNCLE1BQU0scUNBQXFDLENBQUE7QUFDeEUsT0FBTyxpQkFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUM5RCxPQUFPLGtCQUFrQixNQUFNLGtDQUFrQyxDQUFBO0FBQ2pFLE9BQU8sNEJBQTRCLE1BQU0sNENBQTRDLENBQUE7QUFDckYsT0FBTyxtQkFBbUIsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNuRSxPQUFPLG9CQUFvQixNQUFNLG1DQUFtQyxDQUFBO0FBQ3BFLE9BQU8sWUFBWSxNQUFNLDJCQUEyQixDQUFBO0FBQ3BELE9BQU8scUJBQXFCLE1BQU0sb0NBQW9DLENBQUE7QUFFdEU7O0dBRUc7QUFDSCxNQUFNLFdBQVcsR0FBRztJQUNsQix5QkFBeUIsRUFBRSxNQUFNO0lBQ2pDLGdDQUFnQyxFQUFFLE1BQU07SUFDeEMsZ0NBQWdDLEVBQUUsTUFBTTtJQUN4QywrQkFBK0IsRUFBRSxNQUFNO0lBQ3ZDLHFDQUFxQyxFQUFFLE1BQU07SUFDN0MsaUNBQWlDLEVBQUUsTUFBTTtJQUN6Qyw0QkFBNEIsRUFBRSxNQUFNO0lBQ3BDLDhCQUE4QixFQUFFLE1BQU07SUFDdEMsd0NBQXdDLEVBQUUsTUFBTTtJQUNoRCwrQkFBK0IsRUFBRSxNQUFNO0lBQ3ZDLCtCQUErQixFQUFFLE1BQU07SUFDdkMsdUJBQXVCLEVBQUUsTUFBTTtDQUN2QixDQUFBO0FBRVYsTUFBTSxNQUFNLEdBQUc7SUFDYixJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsc0JBQXNCO1FBQzVCLE9BQU8sRUFBRSxRQUFRO0tBQ2xCO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsa0JBQWtCLEVBQUUsY0FBYztRQUNsQyx5QkFBeUIsRUFBRSxxQkFBcUI7UUFDaEQseUJBQXlCLEVBQUUsb0JBQW9CO1FBQy9DLHdCQUF3QixFQUFFLG9CQUFvQjtRQUM5Qyw4QkFBOEIsRUFBRSwwQkFBMEI7UUFDMUQsMEJBQTBCLEVBQUUsc0JBQXNCO1FBQ2xELHFCQUFxQixFQUFFLGlCQUFpQjtRQUN4Qyx1QkFBdUIsRUFBRSxrQkFBa0I7UUFDM0MsaUNBQWlDLEVBQUUsNEJBQTRCO1FBQy9ELHdCQUF3QixFQUFFLG1CQUFtQjtRQUM3Qyx3QkFBd0IsRUFBRSxvQkFBb0I7UUFDOUMsZ0JBQWdCLEVBQUUsWUFBWTtLQUMvQjtJQUNEOzs7T0FHRztJQUNILFdBQVc7Q0FDWixDQUFBO0FBRUQsZUFBZSxNQUFNLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9DbGllbnRCbG9ja3MgZnJvbSAnLi9ydWxlcy9uby1jbGllbnQtYmxvY2tzLmpzJ1xuaW1wb3J0IG5vQ29udGFpbmVySW5TZWN0aW9uIGZyb20gJy4vcnVsZXMvbm8tY29udGFpbmVyLWluLXNlY3Rpb24uanMnXG5pbXBvcnQgcHJlZmVyQ29tcG9uZW50UHJvcHMgZnJvbSAnLi9ydWxlcy9wcmVmZXItY29tcG9uZW50LXByb3BzLmpzJ1xuaW1wb3J0IHByZWZlclR5cG9ncmFwaHlDb21wb25lbnRzIGZyb20gJy4vcnVsZXMvcHJlZmVyLXR5cG9ncmFwaHktY29tcG9uZW50cy5qcydcbmltcG9ydCBwcmVmZXJMYXlvdXRDb21wb25lbnRzIGZyb20gJy4vcnVsZXMvcHJlZmVyLWxheW91dC1jb21wb25lbnRzLmpzJ1xuaW1wb3J0IG5vQXJiaXRyYXJ5Q29sb3JzIGZyb20gJy4vcnVsZXMvbm8tYXJiaXRyYXJ5LWNvbG9ycy5qcydcbmltcG9ydCBub0Nyb3NzWm9uZUltcG9ydHMgZnJvbSAnLi9ydWxlcy9uby1jcm9zcy16b25lLWltcG9ydHMuanMnXG5pbXBvcnQgbm9OYXRpdmVJbnRlcnNlY3Rpb25PYnNlcnZlciBmcm9tICcuL3J1bGVzL25vLW5hdGl2ZS1pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIuanMnXG5pbXBvcnQgbm9Db21wb25lbnRJbkJsb2NrcyBmcm9tICcuL3J1bGVzL25vLWNvbXBvbmVudC1pbi1ibG9ja3MuanMnXG5pbXBvcnQgcHJlZmVyTGlzdENvbXBvbmVudHMgZnJvbSAnLi9ydWxlcy9wcmVmZXItbGlzdC1jb21wb25lbnRzLmpzJ1xuaW1wb3J0IG5vTmF0aXZlRGF0ZSBmcm9tICcuL3J1bGVzL25vLW5hdGl2ZS1kYXRlLmpzJ1xuaW1wb3J0IGJsb2NrTmFtaW5nQ29udmVudGlvbiBmcm9tICcuL3J1bGVzL2Jsb2NrLW5hbWluZy1jb252ZW50aW9uLmpzJ1xuXG4vKipcbiAqIEFsbCBDYW5vbiBFU0xpbnQgcnVsZXMgd2l0aCByZWNvbW1lbmRlZCBzZXZlcml0eSBsZXZlbHNcbiAqL1xuY29uc3QgcmVjb21tZW5kZWQgPSB7XG4gICdnYWxsb3Avbm8tY2xpZW50LWJsb2Nrcyc6ICd3YXJuJyxcbiAgJ2dhbGxvcC9ibG9jay1uYW1pbmctY29udmVudGlvbic6ICd3YXJuJyxcbiAgJ2dhbGxvcC9uby1jb250YWluZXItaW4tc2VjdGlvbic6ICd3YXJuJyxcbiAgJ2dhbGxvcC9wcmVmZXItY29tcG9uZW50LXByb3BzJzogJ3dhcm4nLFxuICAnZ2FsbG9wL3ByZWZlci10eXBvZ3JhcGh5LWNvbXBvbmVudHMnOiAnd2FybicsXG4gICdnYWxsb3AvcHJlZmVyLWxheW91dC1jb21wb25lbnRzJzogJ3dhcm4nLFxuICAnZ2FsbG9wL25vLWFyYml0cmFyeS1jb2xvcnMnOiAnd2FybicsXG4gICdnYWxsb3Avbm8tY3Jvc3Mtem9uZS1pbXBvcnRzJzogJ3dhcm4nLFxuICAnZ2FsbG9wL25vLW5hdGl2ZS1pbnRlcnNlY3Rpb24tb2JzZXJ2ZXInOiAnd2FybicsXG4gICdnYWxsb3Avbm8tY29tcG9uZW50LWluLWJsb2Nrcyc6ICd3YXJuJyxcbiAgJ2dhbGxvcC9wcmVmZXItbGlzdC1jb21wb25lbnRzJzogJ3dhcm4nLFxuICAnZ2FsbG9wL25vLW5hdGl2ZS1kYXRlJzogJ3dhcm4nLFxufSBhcyBjb25zdFxuXG5jb25zdCBwbHVnaW4gPSB7XG4gIG1ldGE6IHtcbiAgICBuYW1lOiAnZXNsaW50LXBsdWdpbi1nYWxsb3AnLFxuICAgIHZlcnNpb246ICcyLjEyLjAnLFxuICB9LFxuICBydWxlczoge1xuICAgICduby1jbGllbnQtYmxvY2tzJzogbm9DbGllbnRCbG9ja3MsXG4gICAgJ2Jsb2NrLW5hbWluZy1jb252ZW50aW9uJzogYmxvY2tOYW1pbmdDb252ZW50aW9uLFxuICAgICduby1jb250YWluZXItaW4tc2VjdGlvbic6IG5vQ29udGFpbmVySW5TZWN0aW9uLFxuICAgICdwcmVmZXItY29tcG9uZW50LXByb3BzJzogcHJlZmVyQ29tcG9uZW50UHJvcHMsXG4gICAgJ3ByZWZlci10eXBvZ3JhcGh5LWNvbXBvbmVudHMnOiBwcmVmZXJUeXBvZ3JhcGh5Q29tcG9uZW50cyxcbiAgICAncHJlZmVyLWxheW91dC1jb21wb25lbnRzJzogcHJlZmVyTGF5b3V0Q29tcG9uZW50cyxcbiAgICAnbm8tYXJiaXRyYXJ5LWNvbG9ycyc6IG5vQXJiaXRyYXJ5Q29sb3JzLFxuICAgICduby1jcm9zcy16b25lLWltcG9ydHMnOiBub0Nyb3NzWm9uZUltcG9ydHMsXG4gICAgJ25vLW5hdGl2ZS1pbnRlcnNlY3Rpb24tb2JzZXJ2ZXInOiBub05hdGl2ZUludGVyc2VjdGlvbk9ic2VydmVyLFxuICAgICduby1jb21wb25lbnQtaW4tYmxvY2tzJzogbm9Db21wb25lbnRJbkJsb2NrcyxcbiAgICAncHJlZmVyLWxpc3QtY29tcG9uZW50cyc6IHByZWZlckxpc3RDb21wb25lbnRzLFxuICAgICduby1uYXRpdmUtZGF0ZSc6IG5vTmF0aXZlRGF0ZSxcbiAgfSxcbiAgLyoqXG4gICAqIFJlY29tbWVuZGVkIHJ1bGUgY29uZmlndXJhdGlvbnMgLSBzcHJlYWQgaW50byB5b3VyIEVTTGludCBjb25maWdcbiAgICogQGV4YW1wbGUgcnVsZXM6IHsgLi4uZ2FsbG9wLnJlY29tbWVuZGVkIH1cbiAgICovXG4gIHJlY29tbWVuZGVkLFxufVxuXG5leHBvcnQgZGVmYXVsdCBwbHVnaW5cbiJdfQ==
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXNsaW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sY0FBYyxNQUFNLDZCQUE2QixDQUFBO0FBQ3hELE9BQU8sb0JBQW9CLE1BQU0sb0NBQW9DLENBQUE7QUFDckUsT0FBTyxvQkFBb0IsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNwRSxPQUFPLDBCQUEwQixNQUFNLHlDQUF5QyxDQUFBO0FBQ2hGLE9BQU8sc0JBQXNCLE1BQU0scUNBQXFDLENBQUE7QUFDeEUsT0FBTyxpQkFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUM5RCxPQUFPLGtCQUFrQixNQUFNLGtDQUFrQyxDQUFBO0FBQ2pFLE9BQU8sNEJBQTRCLE1BQU0sNENBQTRDLENBQUE7QUFDckYsT0FBTyxtQkFBbUIsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNuRSxPQUFPLG9CQUFvQixNQUFNLG1DQUFtQyxDQUFBO0FBQ3BFLE9BQU8sWUFBWSxNQUFNLDJCQUEyQixDQUFBO0FBQ3BELE9BQU8scUJBQXFCLE1BQU0sb0NBQW9DLENBQUE7QUFDdEUsT0FBTyxpQkFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUU5RDs7R0FFRztBQUNILE1BQU0sV0FBVyxHQUFHO0lBQ2xCLHlCQUF5QixFQUFFLE1BQU07SUFDakMsZ0NBQWdDLEVBQUUsTUFBTTtJQUN4QyxnQ0FBZ0MsRUFBRSxNQUFNO0lBQ3hDLCtCQUErQixFQUFFLE1BQU07SUFDdkMscUNBQXFDLEVBQUUsTUFBTTtJQUM3QyxpQ0FBaUMsRUFBRSxNQUFNO0lBQ3pDLDRCQUE0QixFQUFFLE1BQU07SUFDcEMsOEJBQThCLEVBQUUsTUFBTTtJQUN0Qyx3Q0FBd0MsRUFBRSxNQUFNO0lBQ2hELCtCQUErQixFQUFFLE1BQU07SUFDdkMsK0JBQStCLEVBQUUsTUFBTTtJQUN2Qyx1QkFBdUIsRUFBRSxNQUFNO0lBQy9CLDRCQUE0QixFQUFFLE1BQU07Q0FDNUIsQ0FBQTtBQUVWLE1BQU0sTUFBTSxHQUFHO0lBQ2IsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLHNCQUFzQjtRQUM1QixPQUFPLEVBQUUsUUFBUTtLQUNsQjtJQUNELEtBQUssRUFBRTtRQUNMLGtCQUFrQixFQUFFLGNBQWM7UUFDbEMseUJBQXlCLEVBQUUscUJBQXFCO1FBQ2hELHlCQUF5QixFQUFFLG9CQUFvQjtRQUMvQyx3QkFBd0IsRUFBRSxvQkFBb0I7UUFDOUMsOEJBQThCLEVBQUUsMEJBQTBCO1FBQzFELDBCQUEwQixFQUFFLHNCQUFzQjtRQUNsRCxxQkFBcUIsRUFBRSxpQkFBaUI7UUFDeEMsdUJBQXVCLEVBQUUsa0JBQWtCO1FBQzNDLGlDQUFpQyxFQUFFLDRCQUE0QjtRQUMvRCx3QkFBd0IsRUFBRSxtQkFBbUI7UUFDN0Msd0JBQXdCLEVBQUUsb0JBQW9CO1FBQzlDLGdCQUFnQixFQUFFLFlBQVk7UUFDOUIscUJBQXFCLEVBQUUsaUJBQWlCO0tBQ3pDO0lBQ0Q7OztPQUdHO0lBQ0gsV0FBVztDQUNaLENBQUE7QUFFRCxlQUFlLE1BQU0sQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub0NsaWVudEJsb2NrcyBmcm9tICcuL3J1bGVzL25vLWNsaWVudC1ibG9ja3MuanMnXG5pbXBvcnQgbm9Db250YWluZXJJblNlY3Rpb24gZnJvbSAnLi9ydWxlcy9uby1jb250YWluZXItaW4tc2VjdGlvbi5qcydcbmltcG9ydCBwcmVmZXJDb21wb25lbnRQcm9wcyBmcm9tICcuL3J1bGVzL3ByZWZlci1jb21wb25lbnQtcHJvcHMuanMnXG5pbXBvcnQgcHJlZmVyVHlwb2dyYXBoeUNvbXBvbmVudHMgZnJvbSAnLi9ydWxlcy9wcmVmZXItdHlwb2dyYXBoeS1jb21wb25lbnRzLmpzJ1xuaW1wb3J0IHByZWZlckxheW91dENvbXBvbmVudHMgZnJvbSAnLi9ydWxlcy9wcmVmZXItbGF5b3V0LWNvbXBvbmVudHMuanMnXG5pbXBvcnQgbm9BcmJpdHJhcnlDb2xvcnMgZnJvbSAnLi9ydWxlcy9uby1hcmJpdHJhcnktY29sb3JzLmpzJ1xuaW1wb3J0IG5vQ3Jvc3Nab25lSW1wb3J0cyBmcm9tICcuL3J1bGVzL25vLWNyb3NzLXpvbmUtaW1wb3J0cy5qcydcbmltcG9ydCBub05hdGl2ZUludGVyc2VjdGlvbk9ic2VydmVyIGZyb20gJy4vcnVsZXMvbm8tbmF0aXZlLWludGVyc2VjdGlvbi1vYnNlcnZlci5qcydcbmltcG9ydCBub0NvbXBvbmVudEluQmxvY2tzIGZyb20gJy4vcnVsZXMvbm8tY29tcG9uZW50LWluLWJsb2Nrcy5qcydcbmltcG9ydCBwcmVmZXJMaXN0Q29tcG9uZW50cyBmcm9tICcuL3J1bGVzL3ByZWZlci1saXN0LWNvbXBvbmVudHMuanMnXG5pbXBvcnQgbm9OYXRpdmVEYXRlIGZyb20gJy4vcnVsZXMvbm8tbmF0aXZlLWRhdGUuanMnXG5pbXBvcnQgYmxvY2tOYW1pbmdDb252ZW50aW9uIGZyb20gJy4vcnVsZXMvYmxvY2stbmFtaW5nLWNvbnZlbnRpb24uanMnXG5pbXBvcnQgcmVxdWlyZUNhbm9uU2V0dXAgZnJvbSAnLi9ydWxlcy9yZXF1aXJlLWNhbm9uLXNldHVwLmpzJ1xuXG4vKipcbiAqIEFsbCBDYW5vbiBFU0xpbnQgcnVsZXMgd2l0aCByZWNvbW1lbmRlZCBzZXZlcml0eSBsZXZlbHNcbiAqL1xuY29uc3QgcmVjb21tZW5kZWQgPSB7XG4gICdnYWxsb3Avbm8tY2xpZW50LWJsb2Nrcyc6ICd3YXJuJyxcbiAgJ2dhbGxvcC9ibG9jay1uYW1pbmctY29udmVudGlvbic6ICd3YXJuJyxcbiAgJ2dhbGxvcC9uby1jb250YWluZXItaW4tc2VjdGlvbic6ICd3YXJuJyxcbiAgJ2dhbGxvcC9wcmVmZXItY29tcG9uZW50LXByb3BzJzogJ3dhcm4nLFxuICAnZ2FsbG9wL3ByZWZlci10eXBvZ3JhcGh5LWNvbXBvbmVudHMnOiAnd2FybicsXG4gICdnYWxsb3AvcHJlZmVyLWxheW91dC1jb21wb25lbnRzJzogJ3dhcm4nLFxuICAnZ2FsbG9wL25vLWFyYml0cmFyeS1jb2xvcnMnOiAnd2FybicsXG4gICdnYWxsb3Avbm8tY3Jvc3Mtem9uZS1pbXBvcnRzJzogJ3dhcm4nLFxuICAnZ2FsbG9wL25vLW5hdGl2ZS1pbnRlcnNlY3Rpb24tb2JzZXJ2ZXInOiAnd2FybicsXG4gICdnYWxsb3Avbm8tY29tcG9uZW50LWluLWJsb2Nrcyc6ICd3YXJuJyxcbiAgJ2dhbGxvcC9wcmVmZXItbGlzdC1jb21wb25lbnRzJzogJ3dhcm4nLFxuICAnZ2FsbG9wL25vLW5hdGl2ZS1kYXRlJzogJ3dhcm4nLFxuICAnZ2FsbG9wL3JlcXVpcmUtY2Fub24tc2V0dXAnOiAnd2FybicsXG59IGFzIGNvbnN0XG5cbmNvbnN0IHBsdWdpbiA9IHtcbiAgbWV0YToge1xuICAgIG5hbWU6ICdlc2xpbnQtcGx1Z2luLWdhbGxvcCcsXG4gICAgdmVyc2lvbjogJzIuMTIuMCcsXG4gIH0sXG4gIHJ1bGVzOiB7XG4gICAgJ25vLWNsaWVudC1ibG9ja3MnOiBub0NsaWVudEJsb2NrcyxcbiAgICAnYmxvY2stbmFtaW5nLWNvbnZlbnRpb24nOiBibG9ja05hbWluZ0NvbnZlbnRpb24sXG4gICAgJ25vLWNvbnRhaW5lci1pbi1zZWN0aW9uJzogbm9Db250YWluZXJJblNlY3Rpb24sXG4gICAgJ3ByZWZlci1jb21wb25lbnQtcHJvcHMnOiBwcmVmZXJDb21wb25lbnRQcm9wcyxcbiAgICAncHJlZmVyLXR5cG9ncmFwaHktY29tcG9uZW50cyc6IHByZWZlclR5cG9ncmFwaHlDb21wb25lbnRzLFxuICAgICdwcmVmZXItbGF5b3V0LWNvbXBvbmVudHMnOiBwcmVmZXJMYXlvdXRDb21wb25lbnRzLFxuICAgICduby1hcmJpdHJhcnktY29sb3JzJzogbm9BcmJpdHJhcnlDb2xvcnMsXG4gICAgJ25vLWNyb3NzLXpvbmUtaW1wb3J0cyc6IG5vQ3Jvc3Nab25lSW1wb3J0cyxcbiAgICAnbm8tbmF0aXZlLWludGVyc2VjdGlvbi1vYnNlcnZlcic6IG5vTmF0aXZlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIsXG4gICAgJ25vLWNvbXBvbmVudC1pbi1ibG9ja3MnOiBub0NvbXBvbmVudEluQmxvY2tzLFxuICAgICdwcmVmZXItbGlzdC1jb21wb25lbnRzJzogcHJlZmVyTGlzdENvbXBvbmVudHMsXG4gICAgJ25vLW5hdGl2ZS1kYXRlJzogbm9OYXRpdmVEYXRlLFxuICAgICdyZXF1aXJlLWNhbm9uLXNldHVwJzogcmVxdWlyZUNhbm9uU2V0dXAsXG4gIH0sXG4gIC8qKlxuICAgKiBSZWNvbW1lbmRlZCBydWxlIGNvbmZpZ3VyYXRpb25zIC0gc3ByZWFkIGludG8geW91ciBFU0xpbnQgY29uZmlnXG4gICAqIEBleGFtcGxlIHJ1bGVzOiB7IC4uLmdhbGxvcC5yZWNvbW1lbmRlZCB9XG4gICAqL1xuICByZWNvbW1lbmRlZCxcbn1cblxuZXhwb3J0IGRlZmF1bHQgcGx1Z2luXG4iXX0=
@@ -0,0 +1,4 @@
1
+ import type { Rule } from 'eslint';
2
+ declare const rule: Rule.RuleModule;
3
+ export declare function resetReported(): void;
4
+ export default rule;
@@ -0,0 +1,106 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { getCanonUrl, getCanonPattern } from '../utils/canon.js';
4
+ const RULE_NAME = 'require-canon-setup';
5
+ const pattern = getCanonPattern(RULE_NAME);
6
+ // Track if we've already reported for this lint run
7
+ let hasReported = false;
8
+ // Required dev dependencies
9
+ const REQUIRED_DEPENDENCIES = ['knip', '@gallop.software/canon'];
10
+ // Required npm scripts (key = script name, value = must contain this string)
11
+ const REQUIRED_SCRIPTS = {
12
+ unused: 'knip',
13
+ check: 'npm run',
14
+ lint: 'eslint',
15
+ ts: 'tsc',
16
+ audit: 'gallop',
17
+ 'generate:ai-rules': 'gallop',
18
+ };
19
+ const rule = {
20
+ meta: {
21
+ type: 'suggestion',
22
+ docs: {
23
+ description: pattern?.summary || 'Require Canon setup in package.json',
24
+ recommended: true,
25
+ url: getCanonUrl(RULE_NAME),
26
+ },
27
+ messages: {
28
+ missingDependency: `[Canon] Missing required dependency: "{{dep}}". Run: npm install -D {{dep}}`,
29
+ missingScript: `[Canon] Missing required npm script: "{{script}}". Add to package.json scripts.`,
30
+ invalidScript: `[Canon] Script "{{script}}" should contain "{{expected}}".`,
31
+ },
32
+ schema: [],
33
+ },
34
+ create(context) {
35
+ // Only check once per lint run, on the first file
36
+ if (hasReported) {
37
+ return {};
38
+ }
39
+ // Find the project root (where package.json is)
40
+ const filename = context.filename || context.getFilename();
41
+ let dir = path.dirname(filename);
42
+ let packageJsonPath = '';
43
+ // Walk up to find package.json
44
+ while (dir !== path.dirname(dir)) {
45
+ const candidate = path.join(dir, 'package.json');
46
+ if (fs.existsSync(candidate)) {
47
+ packageJsonPath = candidate;
48
+ break;
49
+ }
50
+ dir = path.dirname(dir);
51
+ }
52
+ if (!packageJsonPath) {
53
+ return {};
54
+ }
55
+ return {
56
+ Program(node) {
57
+ if (hasReported)
58
+ return;
59
+ hasReported = true;
60
+ try {
61
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
62
+ const devDeps = packageJson.devDependencies || {};
63
+ const deps = packageJson.dependencies || {};
64
+ const allDeps = { ...deps, ...devDeps };
65
+ const scripts = packageJson.scripts || {};
66
+ // Check dependencies
67
+ for (const dep of REQUIRED_DEPENDENCIES) {
68
+ if (!allDeps[dep]) {
69
+ context.report({
70
+ node,
71
+ messageId: 'missingDependency',
72
+ data: { dep },
73
+ });
74
+ }
75
+ }
76
+ // Check scripts
77
+ for (const [scriptName, expectedContains] of Object.entries(REQUIRED_SCRIPTS)) {
78
+ if (!scripts[scriptName]) {
79
+ context.report({
80
+ node,
81
+ messageId: 'missingScript',
82
+ data: { script: scriptName },
83
+ });
84
+ }
85
+ else if (!scripts[scriptName].includes(expectedContains)) {
86
+ context.report({
87
+ node,
88
+ messageId: 'invalidScript',
89
+ data: { script: scriptName, expected: expectedContains },
90
+ });
91
+ }
92
+ }
93
+ }
94
+ catch {
95
+ // Ignore parse errors
96
+ }
97
+ },
98
+ };
99
+ },
100
+ };
101
+ // Reset the flag when the module is reloaded (for watch mode)
102
+ export function resetReported() {
103
+ hasReported = false;
104
+ }
105
+ export default rule;
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZS1jYW5vbi1zZXR1cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lc2xpbnQvcnVsZXMvcmVxdWlyZS1jYW5vbi1zZXR1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQTtBQUN4QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWhFLE1BQU0sU0FBUyxHQUFHLHFCQUFxQixDQUFBO0FBQ3ZDLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUUxQyxvREFBb0Q7QUFDcEQsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFBO0FBRXZCLDRCQUE0QjtBQUM1QixNQUFNLHFCQUFxQixHQUFHLENBQUMsTUFBTSxFQUFFLHdCQUF3QixDQUFDLENBQUE7QUFFaEUsNkVBQTZFO0FBQzdFLE1BQU0sZ0JBQWdCLEdBQTJCO0lBQy9DLE1BQU0sRUFBRSxNQUFNO0lBQ2QsS0FBSyxFQUFFLFNBQVM7SUFDaEIsSUFBSSxFQUFFLFFBQVE7SUFDZCxFQUFFLEVBQUUsS0FBSztJQUNULEtBQUssRUFBRSxRQUFRO0lBQ2YsbUJBQW1CLEVBQUUsUUFBUTtDQUM5QixDQUFBO0FBRUQsTUFBTSxJQUFJLEdBQW9CO0lBQzVCLElBQUksRUFBRTtRQUNKLElBQUksRUFBRSxZQUFZO1FBQ2xCLElBQUksRUFBRTtZQUNKLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxJQUFJLHFDQUFxQztZQUN0RSxXQUFXLEVBQUUsSUFBSTtZQUNqQixHQUFHLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQztTQUM1QjtRQUNELFFBQVEsRUFBRTtZQUNSLGlCQUFpQixFQUFFLDZFQUE2RTtZQUNoRyxhQUFhLEVBQUUsaUZBQWlGO1lBQ2hHLGFBQWEsRUFBRSw0REFBNEQ7U0FD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Q0FBQztnQkFDSCxDQUFDO2dCQUFDLE1BQU0sQ0FBQztvQkFDUCxzQkFBc0I7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO1NBQ0YsQ0FBQTtJQUNILENBQUM7Q0FDRixDQUFBO0FBRUQsOERBQThEO0FBQzlELE1BQU0sVUFBVSxhQUFhO0lBQzNCLFdBQVcsR0FBRyxLQUFLLENBQUE7QUFDckIsQ0FBQztBQUVELGVBQWUsSUFBSSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50J1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgeyBnZXRDYW5vblVybCwgZ2V0Q2Fub25QYXR0ZXJuIH0gZnJvbSAnLi4vdXRpbHMvY2Fub24uanMnXG5cbmNvbnN0IFJVTEVfTkFNRSA9ICdyZXF1aXJlLWNhbm9uLXNldHVwJ1xuY29uc3QgcGF0dGVybiA9IGdldENhbm9uUGF0dGVybihSVUxFX05BTUUpXG5cbi8vIFRyYWNrIGlmIHdlJ3ZlIGFscmVhZHkgcmVwb3J0ZWQgZm9yIHRoaXMgbGludCBydW5cbmxldCBoYXNSZXBvcnRlZCA9IGZhbHNlXG5cbi8vIFJlcXVpcmVkIGRldiBkZXBlbmRlbmNpZXNcbmNvbnN0IFJFUVVJUkVEX0RFUEVOREVOQ0lFUyA9IFsna25pcCcsICdAZ2FsbG9wLnNvZnR3YXJlL2Nhbm9uJ11cblxuLy8gUmVxdWlyZWQgbnBtIHNjcmlwdHMgKGtleSA9IHNjcmlwdCBuYW1lLCB2YWx1ZSA9IG11c3QgY29udGFpbiB0aGlzIHN0cmluZylcbmNvbnN0IFJFUVVJUkVEX1NDUklQVFM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIHVudXNlZDogJ2tuaXAnLFxuICBjaGVjazogJ25wbSBydW4nLFxuICBsaW50OiAnZXNsaW50JyxcbiAgdHM6ICd0c2MnLFxuICBhdWRpdDogJ2dhbGxvcCcsXG4gICdnZW5lcmF0ZTphaS1ydWxlcyc6ICdnYWxsb3AnLFxufVxuXG5jb25zdCBydWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIG1ldGE6IHtcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbicsXG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246IHBhdHRlcm4/LnN1bW1hcnkgfHwgJ1JlcXVpcmUgQ2Fub24gc2V0dXAgaW4gcGFja2FnZS5qc29uJyxcbiAgICAgIHJlY29tbWVuZGVkOiB0cnVlLFxuICAgICAgdXJsOiBnZXRDYW5vblVybChSVUxFX05BTUUpLFxuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIG1pc3NpbmdEZXBlbmRlbmN5OiBgW0Nhbm9uXSBNaXNzaW5nIHJlcXVpcmVkIGRlcGVuZGVuY3k6IFwie3tkZXB9fVwiLiBSdW46IG5wbSBpbnN0YWxsIC1EIHt7ZGVwfX1gLFxuICAgICAgbWlzc2luZ1NjcmlwdDogYFtDYW5vbl0gTWlzc2luZyByZXF1aXJlZCBucG0gc2NyaXB0OiBcInt7c2NyaXB0fX1cIi4gQWRkIHRvIHBhY2thZ2UuanNvbiBzY3JpcHRzLmAsXG4gICAgICBpbnZhbGlkU2NyaXB0OiBgW0Nhbm9uXSBTY3JpcHQgXCJ7e3NjcmlwdH19XCIgc2hvdWxkIGNvbnRhaW4gXCJ7e2V4cGVjdGVkfX1cIi5gLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgfSxcblxuICBjcmVhdGUoY29udGV4dCkge1xuICAgIC8vIE9ubHkgY2hlY2sgb25jZSBwZXIgbGludCBydW4sIG9uIHRoZSBmaXJzdCBmaWxlXG4gICAgaWYgKGhhc1JlcG9ydGVkKSB7XG4gICAgICByZXR1cm4ge31cbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBwcm9qZWN0IHJvb3QgKHdoZXJlIHBhY2thZ2UuanNvbiBpcylcbiAgICBjb25zdCBmaWxlbmFtZSA9IGNvbnRleHQuZmlsZW5hbWUgfHwgY29udGV4dC5nZXRGaWxlbmFtZSgpXG4gICAgbGV0IGRpciA9IHBhdGguZGlybmFtZShmaWxlbmFtZSlcbiAgICBsZXQgcGFja2FnZUpzb25QYXRoID0gJydcbiAgICBcbiAgICAvLyBXYWxrIHVwIHRvIGZpbmQgcGFja2FnZS5qc29uXG4gICAgd2hpbGUgKGRpciAhPT0gcGF0aC5kaXJuYW1lKGRpcikpIHtcbiAgICAgIGNvbnN0IGNhbmRpZGF0ZSA9IHBhdGguam9pbihkaXIsICdwYWNrYWdlLmpzb24nKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoY2FuZGlkYXRlKSkge1xuICAgICAgICBwYWNrYWdlSnNvblBhdGggPSBjYW5kaWRhdGVcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGRpciA9IHBhdGguZGlybmFtZShkaXIpXG4gICAgfVxuXG4gICAgaWYgKCFwYWNrYWdlSnNvblBhdGgpIHtcbiAgICAgIHJldHVybiB7fVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBQcm9ncmFtKG5vZGUpIHtcbiAgICAgICAgaWYgKGhhc1JlcG9ydGVkKSByZXR1cm5cbiAgICAgICAgaGFzUmVwb3J0ZWQgPSB0cnVlXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBhY2thZ2VKc29uUGF0aCwgJ3V0ZjgnKSlcbiAgICAgICAgICBjb25zdCBkZXZEZXBzID0gcGFja2FnZUpzb24uZGV2RGVwZW5kZW5jaWVzIHx8IHt9XG4gICAgICAgICAgY29uc3QgZGVwcyA9IHBhY2thZ2VKc29uLmRlcGVuZGVuY2llcyB8fCB7fVxuICAgICAgICAgIGNvbnN0IGFsbERlcHMgPSB7IC4uLmRlcHMsIC4uLmRldkRlcHMgfVxuICAgICAgICAgIGNvbnN0IHNjcmlwdHMgPSBwYWNrYWdlSnNvbi5zY3JpcHRzIHx8IHt9XG5cbiAgICAgICAgICAvLyBDaGVjayBkZXBlbmRlbmNpZXNcbiAgICAgICAgICBmb3IgKGNvbnN0IGRlcCBvZiBSRVFVSVJFRF9ERVBFTkRFTkNJRVMpIHtcbiAgICAgICAgICAgIGlmICghYWxsRGVwc1tkZXBdKSB7XG4gICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VJZDogJ21pc3NpbmdEZXBlbmRlbmN5JyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7IGRlcCB9LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENoZWNrIHNjcmlwdHNcbiAgICAgICAgICBmb3IgKGNvbnN0IFtzY3JpcHROYW1lLCBleHBlY3RlZENvbnRhaW5zXSBvZiBPYmplY3QuZW50cmllcyhSRVFVSVJFRF9TQ1JJUFRTKSkge1xuICAgICAgICAgICAgaWYgKCFzY3JpcHRzW3NjcmlwdE5hbWVdKSB7XG4gICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VJZDogJ21pc3NpbmdTY3JpcHQnLFxuICAgICAgICAgICAgICAgIGRhdGE6IHsgc2NyaXB0OiBzY3JpcHROYW1lIH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFzY3JpcHRzW3NjcmlwdE5hbWVdLmluY2x1ZGVzKGV4cGVjdGVkQ29udGFpbnMpKSB7XG4gICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VJZDogJ2ludmFsaWRTY3JpcHQnLFxuICAgICAgICAgICAgICAgIGRhdGE6IHsgc2NyaXB0OiBzY3JpcHROYW1lLCBleHBlY3RlZDogZXhwZWN0ZWRDb250YWlucyB9LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSWdub3JlIHBhcnNlIGVycm9yc1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH1cbiAgfSxcbn1cblxuLy8gUmVzZXQgdGhlIGZsYWcgd2hlbiB0aGUgbW9kdWxlIGlzIHJlbG9hZGVkIChmb3Igd2F0Y2ggbW9kZSlcbmV4cG9ydCBmdW5jdGlvbiByZXNldFJlcG9ydGVkKCkge1xuICBoYXNSZXBvcnRlZCA9IGZhbHNlXG59XG5cbmV4cG9ydCBkZWZhdWx0IHJ1bGVcbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gallop.software/canon",
3
- "version": "2.21.0",
3
+ "version": "2.22.0",
4
4
  "type": "module",
5
5
  "description": "Gallop Canon - Architecture patterns, ESLint plugin, and CLI for template governance",
6
6
  "main": "dist/index.js",