@gallop.software/canon 1.0.0 → 2.0.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/index.js CHANGED
@@ -1,109 +1,95 @@
1
- "use strict";
2
1
  /**
3
2
  * @gallop/canon
4
3
  *
5
4
  * Gallop Enterprise Architecture Canon
6
5
  * Versioned, AI-compatible, auditable web architecture patterns
7
6
  */
8
- var __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.guarantees = exports.categories = exports.patterns = exports.version = exports.canon = void 0;
13
- exports.getPattern = getPattern;
14
- exports.getPatternsByCategory = getPatternsByCategory;
15
- exports.getEnforcedPatterns = getEnforcedPatterns;
16
- exports.getPatternsByRule = getPatternsByRule;
17
- exports.getGuarantee = getGuarantee;
18
- exports.getPatternsForGuarantee = getPatternsForGuarantee;
19
- exports.isValidPattern = isValidPattern;
20
- exports.getEnforcementStats = getEnforcementStats;
21
- const schema_json_1 = __importDefault(require("../schema.json"));
7
+ import schema from '../schema.json';
22
8
  // Export the full schema
23
- exports.canon = schema_json_1.default;
9
+ export const canon = schema;
24
10
  // Export version
25
- exports.version = schema_json_1.default.version;
11
+ export const version = schema.version;
26
12
  // Export patterns array
27
- exports.patterns = schema_json_1.default.patterns;
13
+ export const patterns = schema.patterns;
28
14
  // Export categories array
29
- exports.categories = schema_json_1.default.categories;
15
+ export const categories = schema.categories;
30
16
  // Export guarantees array
31
- exports.guarantees = schema_json_1.default.guarantees;
17
+ export const guarantees = schema.guarantees;
32
18
  /**
33
19
  * Get a pattern by ID
34
20
  * @param id - Pattern ID (e.g., "001", "002")
35
21
  * @returns Pattern object or undefined if not found
36
22
  */
37
- function getPattern(id) {
38
- return exports.patterns.find((p) => p.id === id);
23
+ export function getPattern(id) {
24
+ return patterns.find((p) => p.id === id);
39
25
  }
40
26
  /**
41
27
  * Get all patterns in a category
42
28
  * @param category - Category ID (e.g., "rendering", "typography")
43
29
  * @returns Array of patterns in that category
44
30
  */
45
- function getPatternsByCategory(category) {
46
- return exports.patterns.filter((p) => p.category === category);
31
+ export function getPatternsByCategory(category) {
32
+ return patterns.filter((p) => p.category === category);
47
33
  }
48
34
  /**
49
35
  * Get all patterns enforced by ESLint
50
36
  * @returns Array of ESLint-enforced patterns
51
37
  */
52
- function getEnforcedPatterns() {
53
- return exports.patterns.filter((p) => p.enforcement === 'eslint');
38
+ export function getEnforcedPatterns() {
39
+ return patterns.filter((p) => p.enforcement === 'eslint');
54
40
  }
55
41
  /**
56
42
  * Get all patterns with a specific ESLint rule
57
43
  * @param rule - ESLint rule name (e.g., "gallop/no-client-blocks")
58
44
  * @returns Array of patterns using that rule
59
45
  */
60
- function getPatternsByRule(rule) {
61
- return exports.patterns.filter((p) => p.rule === rule);
46
+ export function getPatternsByRule(rule) {
47
+ return patterns.filter((p) => p.rule === rule);
62
48
  }
63
49
  /**
64
50
  * Get a guarantee by ID
65
51
  * @param id - Guarantee ID (e.g., "SEO_STABLE")
66
52
  * @returns Guarantee object or undefined if not found
67
53
  */
68
- function getGuarantee(id) {
69
- return exports.guarantees.find((g) => g.id === id);
54
+ export function getGuarantee(id) {
55
+ return guarantees.find((g) => g.id === id);
70
56
  }
71
57
  /**
72
58
  * Get all patterns associated with a guarantee
73
59
  * @param guaranteeId - Guarantee ID (e.g., "SEO_STABLE")
74
60
  * @returns Array of patterns that support this guarantee
75
61
  */
76
- function getPatternsForGuarantee(guaranteeId) {
62
+ export function getPatternsForGuarantee(guaranteeId) {
77
63
  const guarantee = getGuarantee(guaranteeId);
78
64
  if (!guarantee)
79
65
  return [];
80
- return exports.patterns.filter((p) => guarantee.patterns.includes(p.id));
66
+ return patterns.filter((p) => guarantee.patterns.includes(p.id));
81
67
  }
82
68
  /**
83
69
  * Check if a pattern ID is valid
84
70
  * @param id - Pattern ID to check
85
71
  * @returns true if valid, false otherwise
86
72
  */
87
- function isValidPattern(id) {
88
- return exports.patterns.some((p) => p.id === id);
73
+ export function isValidPattern(id) {
74
+ return patterns.some((p) => p.id === id);
89
75
  }
90
76
  /**
91
77
  * Get pattern count by enforcement type
92
78
  * @returns Object with counts per enforcement type
93
79
  */
94
- function getEnforcementStats() {
80
+ export function getEnforcementStats() {
95
81
  const stats = {};
96
- for (const pattern of exports.patterns) {
82
+ for (const pattern of patterns) {
97
83
  stats[pattern.enforcement] = (stats[pattern.enforcement] || 0) + 1;
98
84
  }
99
85
  return stats;
100
86
  }
101
87
  // Default export
102
- exports.default = {
103
- version: exports.version,
104
- patterns: exports.patterns,
105
- categories: exports.categories,
106
- guarantees: exports.guarantees,
88
+ export default {
89
+ version,
90
+ patterns,
91
+ categories,
92
+ guarantees,
107
93
  getPattern,
108
94
  getPatternsByCategory,
109
95
  getEnforcedPatterns,
@@ -113,4 +99,4 @@ exports.default = {
113
99
  isValidPattern,
114
100
  getEnforcementStats,
115
101
  };
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHOzs7Ozs7QUFvRUgsZ0NBRUM7QUFPRCxzREFFQztBQU1ELGtEQUVDO0FBT0QsOENBRUM7QUFPRCxvQ0FFQztBQU9ELDBEQUlDO0FBT0Qsd0NBRUM7QUFNRCxrREFNQztBQXZJRCxpRUFBbUM7QUE4Q25DLHlCQUF5QjtBQUNaLFFBQUEsS0FBSyxHQUFnQixxQkFBcUIsQ0FBQTtBQUV2RCxpQkFBaUI7QUFDSixRQUFBLE9BQU8sR0FBRyxxQkFBTSxDQUFDLE9BQU8sQ0FBQTtBQUVyQyx3QkFBd0I7QUFDWCxRQUFBLFFBQVEsR0FBYyxxQkFBTSxDQUFDLFFBQXFCLENBQUE7QUFFL0QsMEJBQTBCO0FBQ2IsUUFBQSxVQUFVLEdBQWUscUJBQU0sQ0FBQyxVQUFVLENBQUE7QUFFdkQsMEJBQTBCO0FBQ2IsUUFBQSxVQUFVLEdBQWdCLHFCQUFNLENBQUMsVUFBeUIsQ0FBQTtBQUV2RTs7OztHQUlHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLEVBQVU7SUFDbkMsT0FBTyxnQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtBQUMxQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLFFBQXlCO0lBQzdELE9BQU8sZ0JBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUE7QUFDeEQsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLG1CQUFtQjtJQUNqQyxPQUFPLGdCQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxLQUFLLFFBQVEsQ0FBQyxDQUFBO0FBQzNELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsSUFBWTtJQUM1QyxPQUFPLGdCQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFBO0FBQ2hELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLEVBQVU7SUFDckMsT0FBTyxrQkFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtBQUM1QyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLHVCQUF1QixDQUFDLFdBQW1CO0lBQ3pELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUMzQyxJQUFJLENBQUMsU0FBUztRQUFFLE9BQU8sRUFBRSxDQUFBO0lBQ3pCLE9BQU8sZ0JBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ2xFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLEVBQVU7SUFDdkMsT0FBTyxnQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtBQUMxQyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsbUJBQW1CO0lBQ2pDLE1BQU0sS0FBSyxHQUEyQixFQUFFLENBQUE7SUFDeEMsS0FBSyxNQUFNLE9BQU8sSUFBSSxnQkFBUSxFQUFFLENBQUM7UUFDL0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3BFLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUM7QUFFRCxpQkFBaUI7QUFDakIsa0JBQWU7SUFDYixPQUFPLEVBQVAsZUFBTztJQUNQLFFBQVEsRUFBUixnQkFBUTtJQUNSLFVBQVUsRUFBVixrQkFBVTtJQUNWLFVBQVUsRUFBVixrQkFBVTtJQUNWLFVBQVU7SUFDVixxQkFBcUI7SUFDckIsbUJBQW1CO0lBQ25CLGlCQUFpQjtJQUNqQixZQUFZO0lBQ1osdUJBQXVCO0lBQ3ZCLGNBQWM7SUFDZCxtQkFBbUI7Q0FDcEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGdhbGxvcC9jYW5vblxuICpcbiAqIEdhbGxvcCBFbnRlcnByaXNlIEFyY2hpdGVjdHVyZSBDYW5vblxuICogVmVyc2lvbmVkLCBBSS1jb21wYXRpYmxlLCBhdWRpdGFibGUgd2ViIGFyY2hpdGVjdHVyZSBwYXR0ZXJuc1xuICovXG5cbmltcG9ydCBzY2hlbWEgZnJvbSAnLi4vc2NoZW1hLmpzb24nXG5cbi8vIFR5cGVzXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm4ge1xuICBpZDogc3RyaW5nXG4gIHRpdGxlOiBzdHJpbmdcbiAgZmlsZTogc3RyaW5nXG4gIGNhdGVnb3J5OiBQYXR0ZXJuQ2F0ZWdvcnlcbiAgc3RhdHVzOiAnc3RhYmxlJyB8ICdwcm9wb3NlZCcgfCAnZGVwcmVjYXRlZCdcbiAgZW5mb3JjZW1lbnQ6ICdlc2xpbnQnIHwgJ2RvY3VtZW50YXRpb24nIHwgJ2NpJ1xuICBydWxlOiBzdHJpbmcgfCBudWxsXG4gIHN1bW1hcnk6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhdGVnb3J5IHtcbiAgaWQ6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgZGVzY3JpcHRpb246IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEd1YXJhbnRlZSB7XG4gIGlkOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIHNpbmNlOiBzdHJpbmdcbiAgc3RhdHVzOiAnc3RhYmxlJyB8ICdwcm9wb3NlZCcgfCAnZGVwcmVjYXRlZCdcbiAgcGF0dGVybnM6IHN0cmluZ1tdXG59XG5cbmV4cG9ydCB0eXBlIFBhdHRlcm5DYXRlZ29yeSA9XG4gIHwgJ3JlbmRlcmluZydcbiAgfCAnbGF5b3V0J1xuICB8ICd0eXBvZ3JhcGh5J1xuICB8ICdzdHJ1Y3R1cmUnXG4gIHwgJ3N0eWxpbmcnXG4gIHwgJ2NvbXBvbmVudHMnXG4gIHwgJ3NlbydcblxuZXhwb3J0IGludGVyZmFjZSBDYW5vblNjaGVtYSB7XG4gIG5hbWU6IHN0cmluZ1xuICB2ZXJzaW9uOiBzdHJpbmdcbiAgZGVzY3JpcHRpb246IHN0cmluZ1xuICBjYXRlZ29yaWVzOiBDYXRlZ29yeVtdXG4gIHBhdHRlcm5zOiBQYXR0ZXJuW11cbiAgZ3VhcmFudGVlczogR3VhcmFudGVlW11cbn1cblxuLy8gRXhwb3J0IHRoZSBmdWxsIHNjaGVtYVxuZXhwb3J0IGNvbnN0IGNhbm9uOiBDYW5vblNjaGVtYSA9IHNjaGVtYSBhcyBDYW5vblNjaGVtYVxuXG4vLyBFeHBvcnQgdmVyc2lvblxuZXhwb3J0IGNvbnN0IHZlcnNpb24gPSBzY2hlbWEudmVyc2lvblxuXG4vLyBFeHBvcnQgcGF0dGVybnMgYXJyYXlcbmV4cG9ydCBjb25zdCBwYXR0ZXJuczogUGF0dGVybltdID0gc2NoZW1hLnBhdHRlcm5zIGFzIFBhdHRlcm5bXVxuXG4vLyBFeHBvcnQgY2F0ZWdvcmllcyBhcnJheVxuZXhwb3J0IGNvbnN0IGNhdGVnb3JpZXM6IENhdGVnb3J5W10gPSBzY2hlbWEuY2F0ZWdvcmllc1xuXG4vLyBFeHBvcnQgZ3VhcmFudGVlcyBhcnJheVxuZXhwb3J0IGNvbnN0IGd1YXJhbnRlZXM6IEd1YXJhbnRlZVtdID0gc2NoZW1hLmd1YXJhbnRlZXMgYXMgR3VhcmFudGVlW11cblxuLyoqXG4gKiBHZXQgYSBwYXR0ZXJuIGJ5IElEXG4gKiBAcGFyYW0gaWQgLSBQYXR0ZXJuIElEIChlLmcuLCBcIjAwMVwiLCBcIjAwMlwiKVxuICogQHJldHVybnMgUGF0dGVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGF0dGVybihpZDogc3RyaW5nKTogUGF0dGVybiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBwYXR0ZXJucy5maW5kKChwKSA9PiBwLmlkID09PSBpZClcbn1cblxuLyoqXG4gKiBHZXQgYWxsIHBhdHRlcm5zIGluIGEgY2F0ZWdvcnlcbiAqIEBwYXJhbSBjYXRlZ29yeSAtIENhdGVnb3J5IElEIChlLmcuLCBcInJlbmRlcmluZ1wiLCBcInR5cG9ncmFwaHlcIilcbiAqIEByZXR1cm5zIEFycmF5IG9mIHBhdHRlcm5zIGluIHRoYXQgY2F0ZWdvcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhdHRlcm5zQnlDYXRlZ29yeShjYXRlZ29yeTogUGF0dGVybkNhdGVnb3J5KTogUGF0dGVybltdIHtcbiAgcmV0dXJuIHBhdHRlcm5zLmZpbHRlcigocCkgPT4gcC5jYXRlZ29yeSA9PT0gY2F0ZWdvcnkpXG59XG5cbi8qKlxuICogR2V0IGFsbCBwYXR0ZXJucyBlbmZvcmNlZCBieSBFU0xpbnRcbiAqIEByZXR1cm5zIEFycmF5IG9mIEVTTGludC1lbmZvcmNlZCBwYXR0ZXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW5mb3JjZWRQYXR0ZXJucygpOiBQYXR0ZXJuW10ge1xuICByZXR1cm4gcGF0dGVybnMuZmlsdGVyKChwKSA9PiBwLmVuZm9yY2VtZW50ID09PSAnZXNsaW50Jylcbn1cblxuLyoqXG4gKiBHZXQgYWxsIHBhdHRlcm5zIHdpdGggYSBzcGVjaWZpYyBFU0xpbnQgcnVsZVxuICogQHBhcmFtIHJ1bGUgLSBFU0xpbnQgcnVsZSBuYW1lIChlLmcuLCBcImdhbGxvcC9uby1jbGllbnQtYmxvY2tzXCIpXG4gKiBAcmV0dXJucyBBcnJheSBvZiBwYXR0ZXJucyB1c2luZyB0aGF0IHJ1bGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhdHRlcm5zQnlSdWxlKHJ1bGU6IHN0cmluZyk6IFBhdHRlcm5bXSB7XG4gIHJldHVybiBwYXR0ZXJucy5maWx0ZXIoKHApID0+IHAucnVsZSA9PT0gcnVsZSlcbn1cblxuLyoqXG4gKiBHZXQgYSBndWFyYW50ZWUgYnkgSURcbiAqIEBwYXJhbSBpZCAtIEd1YXJhbnRlZSBJRCAoZS5nLiwgXCJTRU9fU1RBQkxFXCIpXG4gKiBAcmV0dXJucyBHdWFyYW50ZWUgb2JqZWN0IG9yIHVuZGVmaW5lZCBpZiBub3QgZm91bmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEd1YXJhbnRlZShpZDogc3RyaW5nKTogR3VhcmFudGVlIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGd1YXJhbnRlZXMuZmluZCgoZykgPT4gZy5pZCA9PT0gaWQpXG59XG5cbi8qKlxuICogR2V0IGFsbCBwYXR0ZXJucyBhc3NvY2lhdGVkIHdpdGggYSBndWFyYW50ZWVcbiAqIEBwYXJhbSBndWFyYW50ZWVJZCAtIEd1YXJhbnRlZSBJRCAoZS5nLiwgXCJTRU9fU1RBQkxFXCIpXG4gKiBAcmV0dXJucyBBcnJheSBvZiBwYXR0ZXJucyB0aGF0IHN1cHBvcnQgdGhpcyBndWFyYW50ZWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhdHRlcm5zRm9yR3VhcmFudGVlKGd1YXJhbnRlZUlkOiBzdHJpbmcpOiBQYXR0ZXJuW10ge1xuICBjb25zdCBndWFyYW50ZWUgPSBnZXRHdWFyYW50ZWUoZ3VhcmFudGVlSWQpXG4gIGlmICghZ3VhcmFudGVlKSByZXR1cm4gW11cbiAgcmV0dXJuIHBhdHRlcm5zLmZpbHRlcigocCkgPT4gZ3VhcmFudGVlLnBhdHRlcm5zLmluY2x1ZGVzKHAuaWQpKVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgcGF0dGVybiBJRCBpcyB2YWxpZFxuICogQHBhcmFtIGlkIC0gUGF0dGVybiBJRCB0byBjaGVja1xuICogQHJldHVybnMgdHJ1ZSBpZiB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUGF0dGVybihpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBwYXR0ZXJucy5zb21lKChwKSA9PiBwLmlkID09PSBpZClcbn1cblxuLyoqXG4gKiBHZXQgcGF0dGVybiBjb3VudCBieSBlbmZvcmNlbWVudCB0eXBlXG4gKiBAcmV0dXJucyBPYmplY3Qgd2l0aCBjb3VudHMgcGVyIGVuZm9yY2VtZW50IHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVuZm9yY2VtZW50U3RhdHMoKTogUmVjb3JkPHN0cmluZywgbnVtYmVyPiB7XG4gIGNvbnN0IHN0YXRzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge31cbiAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIHBhdHRlcm5zKSB7XG4gICAgc3RhdHNbcGF0dGVybi5lbmZvcmNlbWVudF0gPSAoc3RhdHNbcGF0dGVybi5lbmZvcmNlbWVudF0gfHwgMCkgKyAxXG4gIH1cbiAgcmV0dXJuIHN0YXRzXG59XG5cbi8vIERlZmF1bHQgZXhwb3J0XG5leHBvcnQgZGVmYXVsdCB7XG4gIHZlcnNpb24sXG4gIHBhdHRlcm5zLFxuICBjYXRlZ29yaWVzLFxuICBndWFyYW50ZWVzLFxuICBnZXRQYXR0ZXJuLFxuICBnZXRQYXR0ZXJuc0J5Q2F0ZWdvcnksXG4gIGdldEVuZm9yY2VkUGF0dGVybnMsXG4gIGdldFBhdHRlcm5zQnlSdWxlLFxuICBnZXRHdWFyYW50ZWUsXG4gIGdldFBhdHRlcm5zRm9yR3VhcmFudGVlLFxuICBpc1ZhbGlkUGF0dGVybixcbiAgZ2V0RW5mb3JjZW1lbnRTdGF0cyxcbn1cbiJdfQ==
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLE1BQU0sTUFBTSxnQkFBZ0IsQ0FBQTtBQThDbkMseUJBQXlCO0FBQ3pCLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBZ0IsTUFBcUIsQ0FBQTtBQUV2RCxpQkFBaUI7QUFDakIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUE7QUFFckMsd0JBQXdCO0FBQ3hCLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBYyxNQUFNLENBQUMsUUFBcUIsQ0FBQTtBQUUvRCwwQkFBMEI7QUFDMUIsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFlLE1BQU0sQ0FBQyxVQUFVLENBQUE7QUFFdkQsMEJBQTBCO0FBQzFCLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBZ0IsTUFBTSxDQUFDLFVBQXlCLENBQUE7QUFFdkU7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsRUFBVTtJQUNuQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7QUFDMUMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsUUFBeUI7SUFDN0QsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFBO0FBQ3hELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxRQUFRLENBQUMsQ0FBQTtBQUMzRCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUFZO0lBQzVDLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQTtBQUNoRCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsRUFBVTtJQUNyQyxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7QUFDNUMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsV0FBbUI7SUFDekQsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQzNDLElBQUksQ0FBQyxTQUFTO1FBQUUsT0FBTyxFQUFFLENBQUE7SUFDekIsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUNsRSxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsRUFBVTtJQUN2QyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7QUFDMUMsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsTUFBTSxLQUFLLEdBQTJCLEVBQUUsQ0FBQTtJQUN4QyxLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQy9CLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDO0FBRUQsaUJBQWlCO0FBQ2pCLGVBQWU7SUFDYixPQUFPO0lBQ1AsUUFBUTtJQUNSLFVBQVU7SUFDVixVQUFVO0lBQ1YsVUFBVTtJQUNWLHFCQUFxQjtJQUNyQixtQkFBbUI7SUFDbkIsaUJBQWlCO0lBQ2pCLFlBQVk7SUFDWix1QkFBdUI7SUFDdkIsY0FBYztJQUNkLG1CQUFtQjtDQUNwQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZ2FsbG9wL2Nhbm9uXG4gKlxuICogR2FsbG9wIEVudGVycHJpc2UgQXJjaGl0ZWN0dXJlIENhbm9uXG4gKiBWZXJzaW9uZWQsIEFJLWNvbXBhdGlibGUsIGF1ZGl0YWJsZSB3ZWIgYXJjaGl0ZWN0dXJlIHBhdHRlcm5zXG4gKi9cblxuaW1wb3J0IHNjaGVtYSBmcm9tICcuLi9zY2hlbWEuanNvbidcblxuLy8gVHlwZXNcbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVybiB7XG4gIGlkOiBzdHJpbmdcbiAgdGl0bGU6IHN0cmluZ1xuICBmaWxlOiBzdHJpbmdcbiAgY2F0ZWdvcnk6IFBhdHRlcm5DYXRlZ29yeVxuICBzdGF0dXM6ICdzdGFibGUnIHwgJ3Byb3Bvc2VkJyB8ICdkZXByZWNhdGVkJ1xuICBlbmZvcmNlbWVudDogJ2VzbGludCcgfCAnZG9jdW1lbnRhdGlvbicgfCAnY2knXG4gIHJ1bGU6IHN0cmluZyB8IG51bGxcbiAgc3VtbWFyeTogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2F0ZWdvcnkge1xuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBkZXNjcmlwdGlvbjogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3VhcmFudGVlIHtcbiAgaWQ6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgc2luY2U6IHN0cmluZ1xuICBzdGF0dXM6ICdzdGFibGUnIHwgJ3Byb3Bvc2VkJyB8ICdkZXByZWNhdGVkJ1xuICBwYXR0ZXJuczogc3RyaW5nW11cbn1cblxuZXhwb3J0IHR5cGUgUGF0dGVybkNhdGVnb3J5ID1cbiAgfCAncmVuZGVyaW5nJ1xuICB8ICdsYXlvdXQnXG4gIHwgJ3R5cG9ncmFwaHknXG4gIHwgJ3N0cnVjdHVyZSdcbiAgfCAnc3R5bGluZydcbiAgfCAnY29tcG9uZW50cydcbiAgfCAnc2VvJ1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbm9uU2NoZW1hIHtcbiAgbmFtZTogc3RyaW5nXG4gIHZlcnNpb246IHN0cmluZ1xuICBkZXNjcmlwdGlvbjogc3RyaW5nXG4gIGNhdGVnb3JpZXM6IENhdGVnb3J5W11cbiAgcGF0dGVybnM6IFBhdHRlcm5bXVxuICBndWFyYW50ZWVzOiBHdWFyYW50ZWVbXVxufVxuXG4vLyBFeHBvcnQgdGhlIGZ1bGwgc2NoZW1hXG5leHBvcnQgY29uc3QgY2Fub246IENhbm9uU2NoZW1hID0gc2NoZW1hIGFzIENhbm9uU2NoZW1hXG5cbi8vIEV4cG9ydCB2ZXJzaW9uXG5leHBvcnQgY29uc3QgdmVyc2lvbiA9IHNjaGVtYS52ZXJzaW9uXG5cbi8vIEV4cG9ydCBwYXR0ZXJucyBhcnJheVxuZXhwb3J0IGNvbnN0IHBhdHRlcm5zOiBQYXR0ZXJuW10gPSBzY2hlbWEucGF0dGVybnMgYXMgUGF0dGVybltdXG5cbi8vIEV4cG9ydCBjYXRlZ29yaWVzIGFycmF5XG5leHBvcnQgY29uc3QgY2F0ZWdvcmllczogQ2F0ZWdvcnlbXSA9IHNjaGVtYS5jYXRlZ29yaWVzXG5cbi8vIEV4cG9ydCBndWFyYW50ZWVzIGFycmF5XG5leHBvcnQgY29uc3QgZ3VhcmFudGVlczogR3VhcmFudGVlW10gPSBzY2hlbWEuZ3VhcmFudGVlcyBhcyBHdWFyYW50ZWVbXVxuXG4vKipcbiAqIEdldCBhIHBhdHRlcm4gYnkgSURcbiAqIEBwYXJhbSBpZCAtIFBhdHRlcm4gSUQgKGUuZy4sIFwiMDAxXCIsIFwiMDAyXCIpXG4gKiBAcmV0dXJucyBQYXR0ZXJuIG9iamVjdCBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXR0ZXJuKGlkOiBzdHJpbmcpOiBQYXR0ZXJuIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHBhdHRlcm5zLmZpbmQoKHApID0+IHAuaWQgPT09IGlkKVxufVxuXG4vKipcbiAqIEdldCBhbGwgcGF0dGVybnMgaW4gYSBjYXRlZ29yeVxuICogQHBhcmFtIGNhdGVnb3J5IC0gQ2F0ZWdvcnkgSUQgKGUuZy4sIFwicmVuZGVyaW5nXCIsIFwidHlwb2dyYXBoeVwiKVxuICogQHJldHVybnMgQXJyYXkgb2YgcGF0dGVybnMgaW4gdGhhdCBjYXRlZ29yeVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGF0dGVybnNCeUNhdGVnb3J5KGNhdGVnb3J5OiBQYXR0ZXJuQ2F0ZWdvcnkpOiBQYXR0ZXJuW10ge1xuICByZXR1cm4gcGF0dGVybnMuZmlsdGVyKChwKSA9PiBwLmNhdGVnb3J5ID09PSBjYXRlZ29yeSlcbn1cblxuLyoqXG4gKiBHZXQgYWxsIHBhdHRlcm5zIGVuZm9yY2VkIGJ5IEVTTGludFxuICogQHJldHVybnMgQXJyYXkgb2YgRVNMaW50LWVuZm9yY2VkIHBhdHRlcm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbmZvcmNlZFBhdHRlcm5zKCk6IFBhdHRlcm5bXSB7XG4gIHJldHVybiBwYXR0ZXJucy5maWx0ZXIoKHApID0+IHAuZW5mb3JjZW1lbnQgPT09ICdlc2xpbnQnKVxufVxuXG4vKipcbiAqIEdldCBhbGwgcGF0dGVybnMgd2l0aCBhIHNwZWNpZmljIEVTTGludCBydWxlXG4gKiBAcGFyYW0gcnVsZSAtIEVTTGludCBydWxlIG5hbWUgKGUuZy4sIFwiZ2FsbG9wL25vLWNsaWVudC1ibG9ja3NcIilcbiAqIEByZXR1cm5zIEFycmF5IG9mIHBhdHRlcm5zIHVzaW5nIHRoYXQgcnVsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGF0dGVybnNCeVJ1bGUocnVsZTogc3RyaW5nKTogUGF0dGVybltdIHtcbiAgcmV0dXJuIHBhdHRlcm5zLmZpbHRlcigocCkgPT4gcC5ydWxlID09PSBydWxlKVxufVxuXG4vKipcbiAqIEdldCBhIGd1YXJhbnRlZSBieSBJRFxuICogQHBhcmFtIGlkIC0gR3VhcmFudGVlIElEIChlLmcuLCBcIlNFT19TVEFCTEVcIilcbiAqIEByZXR1cm5zIEd1YXJhbnRlZSBvYmplY3Qgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R3VhcmFudGVlKGlkOiBzdHJpbmcpOiBHdWFyYW50ZWUgfCB1bmRlZmluZWQge1xuICByZXR1cm4gZ3VhcmFudGVlcy5maW5kKChnKSA9PiBnLmlkID09PSBpZClcbn1cblxuLyoqXG4gKiBHZXQgYWxsIHBhdHRlcm5zIGFzc29jaWF0ZWQgd2l0aCBhIGd1YXJhbnRlZVxuICogQHBhcmFtIGd1YXJhbnRlZUlkIC0gR3VhcmFudGVlIElEIChlLmcuLCBcIlNFT19TVEFCTEVcIilcbiAqIEByZXR1cm5zIEFycmF5IG9mIHBhdHRlcm5zIHRoYXQgc3VwcG9ydCB0aGlzIGd1YXJhbnRlZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGF0dGVybnNGb3JHdWFyYW50ZWUoZ3VhcmFudGVlSWQ6IHN0cmluZyk6IFBhdHRlcm5bXSB7XG4gIGNvbnN0IGd1YXJhbnRlZSA9IGdldEd1YXJhbnRlZShndWFyYW50ZWVJZClcbiAgaWYgKCFndWFyYW50ZWUpIHJldHVybiBbXVxuICByZXR1cm4gcGF0dGVybnMuZmlsdGVyKChwKSA9PiBndWFyYW50ZWUucGF0dGVybnMuaW5jbHVkZXMocC5pZCkpXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBwYXR0ZXJuIElEIGlzIHZhbGlkXG4gKiBAcGFyYW0gaWQgLSBQYXR0ZXJuIElEIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB0cnVlIGlmIHZhbGlkLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQYXR0ZXJuKGlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHBhdHRlcm5zLnNvbWUoKHApID0+IHAuaWQgPT09IGlkKVxufVxuXG4vKipcbiAqIEdldCBwYXR0ZXJuIGNvdW50IGJ5IGVuZm9yY2VtZW50IHR5cGVcbiAqIEByZXR1cm5zIE9iamVjdCB3aXRoIGNvdW50cyBwZXIgZW5mb3JjZW1lbnQgdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW5mb3JjZW1lbnRTdGF0cygpOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+IHtcbiAgY29uc3Qgc3RhdHM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fVxuICBmb3IgKGNvbnN0IHBhdHRlcm4gb2YgcGF0dGVybnMpIHtcbiAgICBzdGF0c1twYXR0ZXJuLmVuZm9yY2VtZW50XSA9IChzdGF0c1twYXR0ZXJuLmVuZm9yY2VtZW50XSB8fCAwKSArIDFcbiAgfVxuICByZXR1cm4gc3RhdHNcbn1cblxuLy8gRGVmYXVsdCBleHBvcnRcbmV4cG9ydCBkZWZhdWx0IHtcbiAgdmVyc2lvbixcbiAgcGF0dGVybnMsXG4gIGNhdGVnb3JpZXMsXG4gIGd1YXJhbnRlZXMsXG4gIGdldFBhdHRlcm4sXG4gIGdldFBhdHRlcm5zQnlDYXRlZ29yeSxcbiAgZ2V0RW5mb3JjZWRQYXR0ZXJucyxcbiAgZ2V0UGF0dGVybnNCeVJ1bGUsXG4gIGdldEd1YXJhbnRlZSxcbiAgZ2V0UGF0dGVybnNGb3JHdWFyYW50ZWUsXG4gIGlzVmFsaWRQYXR0ZXJuLFxuICBnZXRFbmZvcmNlbWVudFN0YXRzLFxufVxuIl19
package/package.json CHANGED
@@ -1,9 +1,23 @@
1
1
  {
2
2
  "name": "@gallop.software/canon",
3
- "version": "1.0.0",
4
- "description": "Gallop Enterprise Architecture Canon - Versioned, AI-compatible, auditable web architecture patterns",
3
+ "version": "2.0.0",
4
+ "type": "module",
5
+ "description": "Gallop Canon - Architecture patterns, ESLint plugin, and CLI for template governance",
5
6
  "main": "dist/index.js",
6
7
  "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ },
13
+ "./eslint": {
14
+ "types": "./dist/eslint/index.d.ts",
15
+ "import": "./dist/eslint/index.js"
16
+ }
17
+ },
18
+ "bin": {
19
+ "gallop": "./dist/cli/index.js"
20
+ },
7
21
  "files": [
8
22
  "dist",
9
23
  "patterns",
@@ -20,10 +34,13 @@
20
34
  "architecture",
21
35
  "patterns",
22
36
  "canon",
37
+ "eslint",
38
+ "eslintplugin",
23
39
  "nextjs",
24
40
  "react",
25
41
  "governance",
26
- "ai-compatible"
42
+ "ai-compatible",
43
+ "cli"
27
44
  ],
28
45
  "author": {
29
46
  "name": "Gallop",
@@ -35,7 +52,20 @@
35
52
  "url": "https://github.com/gallop-software/gallop",
36
53
  "directory": "canon"
37
54
  },
55
+ "peerDependencies": {
56
+ "eslint": ">=8.0.0"
57
+ },
58
+ "peerDependenciesMeta": {
59
+ "eslint": {
60
+ "optional": true
61
+ }
62
+ },
63
+ "dependencies": {
64
+ "@typescript-eslint/utils": "^8.0.0"
65
+ },
38
66
  "devDependencies": {
67
+ "@types/eslint": "^9.6.0",
68
+ "@types/node": "^20.0.0",
39
69
  "typescript": "^5.0.0"
40
70
  }
41
71
  }