@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/cli/commands/audit.d.ts +7 -0
- package/dist/cli/commands/audit.js +172 -0
- package/dist/cli/commands/generate.d.ts +6 -0
- package/dist/cli/commands/generate.js +170 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +104 -0
- package/dist/eslint/configs/recommended.d.ts +13 -0
- package/dist/eslint/configs/recommended.js +15 -0
- package/dist/eslint/configs/speedwell.d.ts +13 -0
- package/dist/eslint/configs/speedwell.js +17 -0
- package/dist/eslint/index.d.ts +37 -0
- package/dist/eslint/index.js +24 -0
- package/dist/eslint/rules/no-client-blocks.d.ts +5 -0
- package/dist/eslint/rules/no-client-blocks.js +45 -0
- package/dist/eslint/rules/no-container-in-section.d.ts +5 -0
- package/dist/eslint/rules/no-container-in-section.js +50 -0
- package/dist/eslint/rules/prefer-component-props.d.ts +5 -0
- package/dist/eslint/rules/prefer-component-props.js +100 -0
- package/dist/eslint/rules/prefer-typography-components.d.ts +3 -0
- package/dist/eslint/rules/prefer-typography-components.js +76 -0
- package/dist/eslint/utils/canon.d.ts +25 -0
- package/dist/eslint/utils/canon.js +50 -0
- package/dist/index.js +28 -42
- package/package.json +33 -3
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
|
-
|
|
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
|
-
|
|
9
|
+
export const canon = schema;
|
|
24
10
|
// Export version
|
|
25
|
-
|
|
11
|
+
export const version = schema.version;
|
|
26
12
|
// Export patterns array
|
|
27
|
-
|
|
13
|
+
export const patterns = schema.patterns;
|
|
28
14
|
// Export categories array
|
|
29
|
-
|
|
15
|
+
export const categories = schema.categories;
|
|
30
16
|
// Export guarantees array
|
|
31
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
103
|
-
version
|
|
104
|
-
patterns
|
|
105
|
-
categories
|
|
106
|
-
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,
|
|
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": "
|
|
4
|
-
"
|
|
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
|
}
|