@mytechtoday/augment-extensions 0.2.0 → 0.4.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/README.md +614 -39
- package/augment-extensions/coding-standards/bash/README.md +196 -0
- package/augment-extensions/coding-standards/bash/module.json +163 -0
- package/augment-extensions/coding-standards/bash/rules/naming-conventions.md +336 -0
- package/augment-extensions/coding-standards/bash/rules/universal-standards.md +289 -0
- package/augment-extensions/coding-standards/css/README.md +40 -0
- package/augment-extensions/coding-standards/css/examples/css-examples.css +550 -0
- package/augment-extensions/coding-standards/css/module.json +44 -0
- package/augment-extensions/coding-standards/css/rules/css-modern-features.md +448 -0
- package/augment-extensions/coding-standards/css/rules/css-standards.md +492 -0
- package/augment-extensions/coding-standards/html/README.md +40 -0
- package/augment-extensions/coding-standards/html/examples/html-examples.html +267 -0
- package/augment-extensions/coding-standards/html/examples/responsive-layout.html +505 -0
- package/augment-extensions/coding-standards/html/module.json +44 -0
- package/augment-extensions/coding-standards/html/rules/html-standards.md +349 -0
- package/augment-extensions/coding-standards/html-css-js/README.md +194 -0
- package/augment-extensions/coding-standards/html-css-js/examples/async-examples.js +487 -0
- package/augment-extensions/coding-standards/html-css-js/examples/css-examples.css +550 -0
- package/augment-extensions/coding-standards/html-css-js/examples/dom-examples.js +667 -0
- package/augment-extensions/coding-standards/html-css-js/examples/html-examples.html +267 -0
- package/augment-extensions/coding-standards/html-css-js/examples/javascript-examples.js +612 -0
- package/augment-extensions/coding-standards/html-css-js/examples/responsive-layout.html +505 -0
- package/augment-extensions/coding-standards/html-css-js/module.json +48 -0
- package/augment-extensions/coding-standards/html-css-js/rules/async-patterns.md +515 -0
- package/augment-extensions/coding-standards/html-css-js/rules/css-modern-features.md +448 -0
- package/augment-extensions/coding-standards/html-css-js/rules/css-standards.md +492 -0
- package/augment-extensions/coding-standards/html-css-js/rules/dom-manipulation.md +439 -0
- package/augment-extensions/coding-standards/html-css-js/rules/html-standards.md +349 -0
- package/augment-extensions/coding-standards/html-css-js/rules/javascript-standards.md +486 -0
- package/augment-extensions/coding-standards/html-css-js/rules/performance.md +463 -0
- package/augment-extensions/coding-standards/html-css-js/rules/tooling.md +543 -0
- package/augment-extensions/coding-standards/js/README.md +46 -0
- package/augment-extensions/coding-standards/js/examples/async-examples.js +487 -0
- package/augment-extensions/coding-standards/js/examples/dom-examples.js +667 -0
- package/augment-extensions/coding-standards/js/examples/javascript-examples.js +612 -0
- package/augment-extensions/coding-standards/js/module.json +49 -0
- package/augment-extensions/coding-standards/js/rules/async-patterns.md +515 -0
- package/augment-extensions/coding-standards/js/rules/dom-manipulation.md +439 -0
- package/augment-extensions/coding-standards/js/rules/javascript-standards.md +486 -0
- package/augment-extensions/coding-standards/js/rules/performance.md +463 -0
- package/augment-extensions/coding-standards/js/rules/tooling.md +543 -0
- package/augment-extensions/coding-standards/php/README.md +248 -0
- package/augment-extensions/coding-standards/php/examples/api-endpoint-example.php +204 -0
- package/augment-extensions/coding-standards/php/examples/cli-command-example.php +206 -0
- package/augment-extensions/coding-standards/php/examples/legacy-refactoring-example.php +234 -0
- package/augment-extensions/coding-standards/php/examples/web-application-example.php +211 -0
- package/augment-extensions/coding-standards/php/examples/woocommerce-extension-example.php +215 -0
- package/augment-extensions/coding-standards/php/examples/wordpress-plugin-example.php +189 -0
- package/augment-extensions/coding-standards/php/module.json +166 -0
- package/augment-extensions/coding-standards/php/rules/api-development.md +480 -0
- package/augment-extensions/coding-standards/php/rules/category-configuration.md +332 -0
- package/augment-extensions/coding-standards/php/rules/cli-tools.md +472 -0
- package/augment-extensions/coding-standards/php/rules/cms-integration.md +561 -0
- package/augment-extensions/coding-standards/php/rules/code-quality.md +402 -0
- package/augment-extensions/coding-standards/php/rules/documentation.md +425 -0
- package/augment-extensions/coding-standards/php/rules/ecommerce.md +627 -0
- package/augment-extensions/coding-standards/php/rules/error-handling.md +336 -0
- package/augment-extensions/coding-standards/php/rules/legacy-migration.md +677 -0
- package/augment-extensions/coding-standards/php/rules/naming-conventions.md +279 -0
- package/augment-extensions/coding-standards/php/rules/performance.md +392 -0
- package/augment-extensions/coding-standards/php/rules/psr-standards.md +186 -0
- package/augment-extensions/coding-standards/php/rules/security.md +358 -0
- package/augment-extensions/coding-standards/php/rules/testing.md +403 -0
- package/augment-extensions/coding-standards/php/rules/type-declarations.md +331 -0
- package/augment-extensions/coding-standards/php/rules/web-applications.md +426 -0
- package/augment-extensions/coding-standards/powershell/README.md +154 -0
- package/augment-extensions/coding-standards/powershell/examples/admin-example.ps1 +272 -0
- package/augment-extensions/coding-standards/powershell/examples/automation-example.ps1 +173 -0
- package/augment-extensions/coding-standards/powershell/examples/cloud-example.ps1 +243 -0
- package/augment-extensions/coding-standards/powershell/examples/cross-platform-example.ps1 +297 -0
- package/augment-extensions/coding-standards/powershell/examples/dsc-example.ps1 +224 -0
- package/augment-extensions/coding-standards/powershell/examples/legacy-migration-example.ps1 +340 -0
- package/augment-extensions/coding-standards/powershell/examples/module-example.psm1 +255 -0
- package/augment-extensions/coding-standards/powershell/module.json +165 -0
- package/augment-extensions/coding-standards/powershell/rules/administrative-tools.md +439 -0
- package/augment-extensions/coding-standards/powershell/rules/automation-scripts.md +240 -0
- package/augment-extensions/coding-standards/powershell/rules/cloud-orchestration.md +384 -0
- package/augment-extensions/coding-standards/powershell/rules/configuration-schema.md +383 -0
- package/augment-extensions/coding-standards/powershell/rules/cross-platform-scripts.md +482 -0
- package/augment-extensions/coding-standards/powershell/rules/dsc-configurations.md +296 -0
- package/augment-extensions/coding-standards/powershell/rules/error-handling.md +314 -0
- package/augment-extensions/coding-standards/powershell/rules/legacy-migrations.md +466 -0
- package/augment-extensions/coding-standards/powershell/rules/modules-functions.md +244 -0
- package/augment-extensions/coding-standards/powershell/rules/naming-conventions.md +266 -0
- package/augment-extensions/coding-standards/powershell/rules/performance-optimization.md +209 -0
- package/augment-extensions/coding-standards/powershell/rules/security-practices.md +314 -0
- package/augment-extensions/coding-standards/powershell/rules/testing-guidelines.md +268 -0
- package/augment-extensions/coding-standards/powershell/rules/universal-standards.md +197 -0
- package/augment-extensions/coding-standards/python/README.md +12 -8
- package/augment-extensions/coding-standards/python/examples/best-practices.py +373 -0
- package/augment-extensions/coding-standards/python/module.json +8 -4
- package/augment-extensions/coding-standards/python/rules/async-patterns.md +884 -0
- package/augment-extensions/coding-standards/python/rules/documentation.md +831 -0
- package/augment-extensions/coding-standards/python/rules/error-handling.md +855 -68
- package/augment-extensions/coding-standards/python/rules/testing.md +409 -0
- package/augment-extensions/coding-standards/python/rules/tooling.md +446 -0
- package/augment-extensions/coding-standards/python/rules/type-hints.md +115 -50
- package/augment-extensions/collections/html-css-js/README.md +82 -0
- package/augment-extensions/collections/html-css-js/collection.json +41 -0
- package/augment-extensions/domain-rules/database/README.md +161 -0
- package/augment-extensions/domain-rules/database/examples/flat-database-example.md +793 -0
- package/augment-extensions/domain-rules/database/examples/hybrid-database-example.md +1132 -0
- package/augment-extensions/domain-rules/database/examples/nosql-document-example.md +868 -0
- package/augment-extensions/domain-rules/database/examples/nosql-graph-example.md +805 -0
- package/augment-extensions/domain-rules/database/examples/relational-schema-example.md +621 -0
- package/augment-extensions/domain-rules/database/examples/vector-database-example.md +965 -0
- package/augment-extensions/domain-rules/database/module.json +28 -0
- package/augment-extensions/domain-rules/database/rules/flat-databases.md +624 -0
- package/augment-extensions/domain-rules/database/rules/nosql-databases.md +588 -0
- package/augment-extensions/domain-rules/database/rules/nosql-document-stores.md +856 -0
- package/augment-extensions/domain-rules/database/rules/nosql-graph-databases.md +778 -0
- package/augment-extensions/domain-rules/database/rules/nosql-key-value-stores.md +963 -0
- package/augment-extensions/domain-rules/database/rules/performance-optimization.md +1076 -0
- package/augment-extensions/domain-rules/database/rules/relational-databases.md +697 -0
- package/augment-extensions/domain-rules/database/rules/relational-indexing.md +671 -0
- package/augment-extensions/domain-rules/database/rules/relational-query-optimization.md +607 -0
- package/augment-extensions/domain-rules/database/rules/relational-schema-design.md +907 -0
- package/augment-extensions/domain-rules/database/rules/relational-transactions.md +783 -0
- package/augment-extensions/domain-rules/database/rules/security-standards.md +980 -0
- package/augment-extensions/domain-rules/database/rules/universal-best-practices.md +485 -0
- package/augment-extensions/domain-rules/database/rules/vector-databases.md +521 -0
- package/augment-extensions/domain-rules/database/rules/vector-embeddings.md +858 -0
- package/augment-extensions/domain-rules/database/rules/vector-indexing.md +934 -0
- package/augment-extensions/domain-rules/mcp/README.md +150 -0
- package/augment-extensions/domain-rules/mcp/examples/compressed-example.md +522 -0
- package/augment-extensions/domain-rules/mcp/examples/graph-augmented-example.md +520 -0
- package/augment-extensions/domain-rules/mcp/examples/hybrid-example.md +570 -0
- package/augment-extensions/domain-rules/mcp/examples/state-based-example.md +427 -0
- package/augment-extensions/domain-rules/mcp/examples/token-based-example.md +435 -0
- package/augment-extensions/domain-rules/mcp/examples/vector-based-example.md +502 -0
- package/augment-extensions/domain-rules/mcp/module.json +49 -0
- package/augment-extensions/domain-rules/mcp/rules/compressed-mcp.md +595 -0
- package/augment-extensions/domain-rules/mcp/rules/configuration.md +345 -0
- package/augment-extensions/domain-rules/mcp/rules/graph-augmented-mcp.md +687 -0
- package/augment-extensions/domain-rules/mcp/rules/hybrid-mcp.md +636 -0
- package/augment-extensions/domain-rules/mcp/rules/state-based-mcp.md +484 -0
- package/augment-extensions/domain-rules/mcp/rules/testing-validation.md +360 -0
- package/augment-extensions/domain-rules/mcp/rules/token-based-mcp.md +393 -0
- package/augment-extensions/domain-rules/mcp/rules/universal-rules.md +194 -0
- package/augment-extensions/domain-rules/mcp/rules/vector-based-mcp.md +625 -0
- package/augment-extensions/workflows/beads/module.json +4 -3
- package/augment-extensions/workflows/database/README.md +195 -0
- package/augment-extensions/workflows/database/ai-prompt-testing.md +295 -0
- package/augment-extensions/workflows/database/examples/migration-example.md +498 -0
- package/augment-extensions/workflows/database/examples/optimization-example.md +496 -0
- package/augment-extensions/workflows/database/examples/schema-design-example.md +444 -0
- package/augment-extensions/workflows/database/module.json +42 -0
- package/augment-extensions/workflows/database/rules/data-migration.md +249 -0
- package/augment-extensions/workflows/database/rules/documentation-standards.md +339 -0
- package/augment-extensions/workflows/database/rules/migration-workflow.md +352 -0
- package/augment-extensions/workflows/database/rules/optimization-workflow.md +435 -0
- package/augment-extensions/workflows/database/rules/schema-design-workflow.md +535 -0
- package/augment-extensions/workflows/database/rules/testing-patterns.md +305 -0
- package/augment-extensions/workflows/database/rules/workflow.md +458 -0
- package/augment-extensions/workflows/openspec/module.json +4 -3
- package/augment-extensions/writing-standards/screenplay/README.md +171 -0
- package/augment-extensions/writing-standards/screenplay/examples/aaa-hollywood-scene.fountain +164 -0
- package/augment-extensions/writing-standards/screenplay/module.json +124 -0
- package/augment-extensions/writing-standards/screenplay/rules/universal-formatting.md +339 -0
- package/cli/MODULES.md +302 -0
- package/cli/dist/cli.js +142 -9
- package/cli/dist/cli.js.map +1 -1
- package/cli/dist/commands/catalog.d.ts +13 -0
- package/cli/dist/commands/catalog.d.ts.map +1 -0
- package/cli/dist/commands/catalog.js +104 -0
- package/cli/dist/commands/catalog.js.map +1 -0
- package/cli/dist/commands/gui.d.ts +6 -0
- package/cli/dist/commands/gui.d.ts.map +1 -0
- package/cli/dist/commands/gui.js +211 -0
- package/cli/dist/commands/gui.js.map +1 -0
- package/cli/dist/commands/init.d.ts.map +1 -1
- package/cli/dist/commands/init.js +12 -0
- package/cli/dist/commands/init.js.map +1 -1
- package/cli/dist/commands/install-rules.d.ts +14 -0
- package/cli/dist/commands/install-rules.d.ts.map +1 -0
- package/cli/dist/commands/install-rules.js +127 -0
- package/cli/dist/commands/install-rules.js.map +1 -0
- package/cli/dist/commands/link.d.ts.map +1 -1
- package/cli/dist/commands/link.js +9 -11
- package/cli/dist/commands/link.js.map +1 -1
- package/cli/dist/commands/list.d.ts.map +1 -1
- package/cli/dist/commands/list.js +11 -28
- package/cli/dist/commands/list.js.map +1 -1
- package/cli/dist/commands/mcp.d.ts +48 -0
- package/cli/dist/commands/mcp.d.ts.map +1 -0
- package/cli/dist/commands/mcp.js +229 -0
- package/cli/dist/commands/mcp.js.map +1 -0
- package/cli/dist/commands/self-remove.d.ts +7 -0
- package/cli/dist/commands/self-remove.d.ts.map +1 -0
- package/cli/dist/commands/self-remove.js +179 -0
- package/cli/dist/commands/self-remove.js.map +1 -0
- package/cli/dist/commands/show.d.ts.map +1 -1
- package/cli/dist/commands/show.js +29 -99
- package/cli/dist/commands/show.js.map +1 -1
- package/cli/dist/commands/skill.d.ts +67 -0
- package/cli/dist/commands/skill.d.ts.map +1 -0
- package/cli/dist/commands/skill.js +513 -0
- package/cli/dist/commands/skill.js.map +1 -0
- package/cli/dist/commands/unlink.d.ts +6 -0
- package/cli/dist/commands/unlink.d.ts.map +1 -0
- package/cli/dist/commands/unlink.js +115 -0
- package/cli/dist/commands/unlink.js.map +1 -0
- package/cli/dist/commands/validate.d.ts +6 -0
- package/cli/dist/commands/validate.d.ts.map +1 -0
- package/cli/dist/commands/validate.js +159 -0
- package/cli/dist/commands/validate.js.map +1 -0
- package/cli/dist/utils/catalog-sync.d.ts +22 -0
- package/cli/dist/utils/catalog-sync.d.ts.map +1 -0
- package/cli/dist/utils/catalog-sync.js +157 -0
- package/cli/dist/utils/catalog-sync.js.map +1 -0
- package/cli/dist/utils/character-count.d.ts +56 -0
- package/cli/dist/utils/character-count.d.ts.map +1 -0
- package/cli/dist/utils/character-count.js +190 -0
- package/cli/dist/utils/character-count.js.map +1 -0
- package/cli/dist/utils/documentation-validator.d.ts +18 -0
- package/cli/dist/utils/documentation-validator.d.ts.map +1 -0
- package/cli/dist/utils/documentation-validator.js +233 -0
- package/cli/dist/utils/documentation-validator.js.map +1 -0
- package/cli/dist/utils/install-rules.d.ts +32 -0
- package/cli/dist/utils/install-rules.d.ts.map +1 -0
- package/cli/dist/utils/install-rules.js +375 -0
- package/cli/dist/utils/install-rules.js.map +1 -0
- package/cli/dist/utils/mcp-integration.d.ts +70 -0
- package/cli/dist/utils/mcp-integration.d.ts.map +1 -0
- package/cli/dist/utils/mcp-integration.js +292 -0
- package/cli/dist/utils/mcp-integration.js.map +1 -0
- package/cli/dist/utils/module-system.d.ts +153 -0
- package/cli/dist/utils/module-system.d.ts.map +1 -0
- package/cli/dist/utils/module-system.js +528 -0
- package/cli/dist/utils/module-system.js.map +1 -0
- package/cli/dist/utils/modules-catalog.d.ts +33 -0
- package/cli/dist/utils/modules-catalog.d.ts.map +1 -0
- package/cli/dist/utils/modules-catalog.js +163 -0
- package/cli/dist/utils/modules-catalog.js.map +1 -0
- package/cli/dist/utils/rule-install-hooks.d.ts +19 -0
- package/cli/dist/utils/rule-install-hooks.d.ts.map +1 -0
- package/cli/dist/utils/rule-install-hooks.js +224 -0
- package/cli/dist/utils/rule-install-hooks.js.map +1 -0
- package/cli/dist/utils/skill-system.d.ts +95 -0
- package/cli/dist/utils/skill-system.d.ts.map +1 -0
- package/cli/dist/utils/skill-system.js +313 -0
- package/cli/dist/utils/skill-system.js.map +1 -0
- package/modules.md +518 -106
- package/package.json +12 -3
|
@@ -0,0 +1,528 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getModulesDir = getModulesDir;
|
|
37
|
+
exports.validateModuleMetadata = validateModuleMetadata;
|
|
38
|
+
exports.isValidSemanticVersion = isValidSemanticVersion;
|
|
39
|
+
exports.parseSemanticVersion = parseSemanticVersion;
|
|
40
|
+
exports.compareSemanticVersions = compareSemanticVersions;
|
|
41
|
+
exports.satisfiesVersionRange = satisfiesVersionRange;
|
|
42
|
+
exports.loadModule = loadModule;
|
|
43
|
+
exports.discoverModules = discoverModules;
|
|
44
|
+
exports.discoverCollections = discoverCollections;
|
|
45
|
+
exports.findModule = findModule;
|
|
46
|
+
exports.findCollection = findCollection;
|
|
47
|
+
exports.resolveCollection = resolveCollection;
|
|
48
|
+
exports.resolveCollectionByName = resolveCollectionByName;
|
|
49
|
+
exports.isCollection = isCollection;
|
|
50
|
+
exports.isModule = isModule;
|
|
51
|
+
exports.validateModuleStructure = validateModuleStructure;
|
|
52
|
+
exports.validateModuleCategory = validateModuleCategory;
|
|
53
|
+
exports.calculateModuleCharacterCount = calculateModuleCharacterCount;
|
|
54
|
+
exports.validateProjectAgnostic = validateProjectAgnostic;
|
|
55
|
+
const fs = __importStar(require("fs"));
|
|
56
|
+
const path = __importStar(require("path"));
|
|
57
|
+
/**
|
|
58
|
+
* Get the modules directory path
|
|
59
|
+
*/
|
|
60
|
+
function getModulesDir() {
|
|
61
|
+
return path.join(__dirname, '../../../augment-extensions');
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Validate module.json structure
|
|
65
|
+
*/
|
|
66
|
+
function validateModuleMetadata(metadata) {
|
|
67
|
+
const errors = [];
|
|
68
|
+
const warnings = [];
|
|
69
|
+
// Required fields
|
|
70
|
+
if (!metadata.name)
|
|
71
|
+
errors.push('Missing required field: name');
|
|
72
|
+
if (!metadata.version)
|
|
73
|
+
errors.push('Missing required field: version');
|
|
74
|
+
if (!metadata.displayName)
|
|
75
|
+
errors.push('Missing required field: displayName');
|
|
76
|
+
if (!metadata.description)
|
|
77
|
+
errors.push('Missing required field: description');
|
|
78
|
+
if (!metadata.type)
|
|
79
|
+
errors.push('Missing required field: type');
|
|
80
|
+
// Validate type
|
|
81
|
+
const validTypes = ['coding-standards', 'domain-rules', 'workflows', 'examples'];
|
|
82
|
+
if (metadata.type && !validTypes.includes(metadata.type)) {
|
|
83
|
+
errors.push(`Invalid type: ${metadata.type}. Must be one of: ${validTypes.join(', ')}`);
|
|
84
|
+
}
|
|
85
|
+
// Validate version format (semantic versioning)
|
|
86
|
+
if (metadata.version && !isValidSemanticVersion(metadata.version)) {
|
|
87
|
+
errors.push(`Invalid version format: ${metadata.version}. Must follow MAJOR.MINOR.PATCH`);
|
|
88
|
+
}
|
|
89
|
+
// Validate augment.characterCount if present
|
|
90
|
+
if (metadata.augment?.characterCount !== undefined) {
|
|
91
|
+
if (typeof metadata.augment.characterCount !== 'number' || metadata.augment.characterCount < 0) {
|
|
92
|
+
errors.push('augment.characterCount must be a positive number');
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Validate augment.priority if present
|
|
96
|
+
if (metadata.augment?.priority) {
|
|
97
|
+
const validPriorities = ['high', 'medium', 'low'];
|
|
98
|
+
if (!validPriorities.includes(metadata.augment.priority)) {
|
|
99
|
+
warnings.push(`Invalid priority: ${metadata.augment.priority}. Should be one of: ${validPriorities.join(', ')}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
valid: errors.length === 0,
|
|
104
|
+
errors,
|
|
105
|
+
warnings
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Validate semantic version format
|
|
110
|
+
* Supports: MAJOR.MINOR.PATCH[-prerelease][+build]
|
|
111
|
+
* Examples: 1.0.0, 1.0.0-alpha, 1.0.0-beta.1, 1.0.0+20130313144700, 1.0.0-beta+exp.sha.5114f85
|
|
112
|
+
*/
|
|
113
|
+
function isValidSemanticVersion(version) {
|
|
114
|
+
// Full semver pattern with optional pre-release and build metadata
|
|
115
|
+
const semverPattern = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
|
|
116
|
+
return semverPattern.test(version);
|
|
117
|
+
}
|
|
118
|
+
function parseSemanticVersion(version) {
|
|
119
|
+
if (!isValidSemanticVersion(version)) {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
const match = version.match(/^(\d+)\.(\d+)\.(\d+)(?:-([0-9a-zA-Z-.]+))?(?:\+([0-9a-zA-Z-.]+))?$/);
|
|
123
|
+
if (!match) {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
major: parseInt(match[1], 10),
|
|
128
|
+
minor: parseInt(match[2], 10),
|
|
129
|
+
patch: parseInt(match[3], 10),
|
|
130
|
+
prerelease: match[4],
|
|
131
|
+
build: match[5]
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Compare two semantic versions
|
|
136
|
+
* Returns: -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2
|
|
137
|
+
*/
|
|
138
|
+
function compareSemanticVersions(v1, v2) {
|
|
139
|
+
const parsed1 = parseSemanticVersion(v1);
|
|
140
|
+
const parsed2 = parseSemanticVersion(v2);
|
|
141
|
+
if (!parsed1 || !parsed2) {
|
|
142
|
+
throw new Error('Invalid semantic version format');
|
|
143
|
+
}
|
|
144
|
+
// Compare major, minor, patch
|
|
145
|
+
if (parsed1.major !== parsed2.major) {
|
|
146
|
+
return parsed1.major > parsed2.major ? 1 : -1;
|
|
147
|
+
}
|
|
148
|
+
if (parsed1.minor !== parsed2.minor) {
|
|
149
|
+
return parsed1.minor > parsed2.minor ? 1 : -1;
|
|
150
|
+
}
|
|
151
|
+
if (parsed1.patch !== parsed2.patch) {
|
|
152
|
+
return parsed1.patch > parsed2.patch ? 1 : -1;
|
|
153
|
+
}
|
|
154
|
+
// Handle pre-release versions
|
|
155
|
+
// Version without pre-release > version with pre-release
|
|
156
|
+
if (!parsed1.prerelease && parsed2.prerelease)
|
|
157
|
+
return 1;
|
|
158
|
+
if (parsed1.prerelease && !parsed2.prerelease)
|
|
159
|
+
return -1;
|
|
160
|
+
if (parsed1.prerelease && parsed2.prerelease) {
|
|
161
|
+
return parsed1.prerelease.localeCompare(parsed2.prerelease);
|
|
162
|
+
}
|
|
163
|
+
// Build metadata is ignored in version precedence
|
|
164
|
+
return 0;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Check if version satisfies a range (simple implementation)
|
|
168
|
+
* Supports: ^1.0.0 (compatible), ~1.0.0 (patch), >=1.0.0, >1.0.0, <=1.0.0, <1.0.0, 1.0.0 (exact)
|
|
169
|
+
*/
|
|
170
|
+
function satisfiesVersionRange(version, range) {
|
|
171
|
+
const parsed = parseSemanticVersion(version);
|
|
172
|
+
if (!parsed)
|
|
173
|
+
return false;
|
|
174
|
+
// Exact match
|
|
175
|
+
if (!range.match(/^[~^<>=]/)) {
|
|
176
|
+
return version === range;
|
|
177
|
+
}
|
|
178
|
+
// Caret (^) - compatible with version
|
|
179
|
+
if (range.startsWith('^')) {
|
|
180
|
+
const rangeVersion = range.slice(1);
|
|
181
|
+
const rangeParsed = parseSemanticVersion(rangeVersion);
|
|
182
|
+
if (!rangeParsed)
|
|
183
|
+
return false;
|
|
184
|
+
if (parsed.major !== rangeParsed.major)
|
|
185
|
+
return false;
|
|
186
|
+
if (parsed.major === 0) {
|
|
187
|
+
// For 0.x.y, minor version must match
|
|
188
|
+
if (parsed.minor !== rangeParsed.minor)
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
return compareSemanticVersions(version, rangeVersion) >= 0;
|
|
192
|
+
}
|
|
193
|
+
// Tilde (~) - patch updates
|
|
194
|
+
if (range.startsWith('~')) {
|
|
195
|
+
const rangeVersion = range.slice(1);
|
|
196
|
+
const rangeParsed = parseSemanticVersion(rangeVersion);
|
|
197
|
+
if (!rangeParsed)
|
|
198
|
+
return false;
|
|
199
|
+
if (parsed.major !== rangeParsed.major || parsed.minor !== rangeParsed.minor) {
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
return compareSemanticVersions(version, rangeVersion) >= 0;
|
|
203
|
+
}
|
|
204
|
+
// Comparison operators
|
|
205
|
+
if (range.startsWith('>=')) {
|
|
206
|
+
return compareSemanticVersions(version, range.slice(2)) >= 0;
|
|
207
|
+
}
|
|
208
|
+
if (range.startsWith('>')) {
|
|
209
|
+
return compareSemanticVersions(version, range.slice(1)) > 0;
|
|
210
|
+
}
|
|
211
|
+
if (range.startsWith('<=')) {
|
|
212
|
+
return compareSemanticVersions(version, range.slice(2)) <= 0;
|
|
213
|
+
}
|
|
214
|
+
if (range.startsWith('<')) {
|
|
215
|
+
return compareSemanticVersions(version, range.slice(1)) < 0;
|
|
216
|
+
}
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Load module from path
|
|
221
|
+
*/
|
|
222
|
+
function loadModule(modulePath) {
|
|
223
|
+
const moduleJsonPath = path.join(modulePath, 'module.json');
|
|
224
|
+
if (!fs.existsSync(moduleJsonPath)) {
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
try {
|
|
228
|
+
const metadata = JSON.parse(fs.readFileSync(moduleJsonPath, 'utf-8'));
|
|
229
|
+
// Get rules
|
|
230
|
+
const rulesDir = path.join(modulePath, 'rules');
|
|
231
|
+
const rules = fs.existsSync(rulesDir)
|
|
232
|
+
? fs.readdirSync(rulesDir).filter(f => f.endsWith('.md'))
|
|
233
|
+
: [];
|
|
234
|
+
// Get examples
|
|
235
|
+
const examplesDir = path.join(modulePath, 'examples');
|
|
236
|
+
const examples = fs.existsSync(examplesDir)
|
|
237
|
+
? fs.readdirSync(examplesDir)
|
|
238
|
+
: [];
|
|
239
|
+
// Extract full name from path
|
|
240
|
+
const modulesDir = getModulesDir();
|
|
241
|
+
const relativePath = path.relative(modulesDir, modulePath);
|
|
242
|
+
const fullName = relativePath.replace(/\\/g, '/');
|
|
243
|
+
return {
|
|
244
|
+
metadata,
|
|
245
|
+
path: modulePath,
|
|
246
|
+
fullName,
|
|
247
|
+
rules,
|
|
248
|
+
examples
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
catch (error) {
|
|
252
|
+
return null;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Discover all modules in the modules directory
|
|
257
|
+
*/
|
|
258
|
+
function discoverModules() {
|
|
259
|
+
const modules = [];
|
|
260
|
+
const modulesDir = getModulesDir();
|
|
261
|
+
if (!fs.existsSync(modulesDir)) {
|
|
262
|
+
return modules;
|
|
263
|
+
}
|
|
264
|
+
const categories = fs.readdirSync(modulesDir, { withFileTypes: true })
|
|
265
|
+
.filter(dirent => dirent.isDirectory())
|
|
266
|
+
.filter(dirent => dirent.name !== 'collections') // Exclude collections directory
|
|
267
|
+
.map(dirent => dirent.name);
|
|
268
|
+
for (const category of categories) {
|
|
269
|
+
const categoryPath = path.join(modulesDir, category);
|
|
270
|
+
const moduleNames = fs.readdirSync(categoryPath, { withFileTypes: true })
|
|
271
|
+
.filter(dirent => dirent.isDirectory())
|
|
272
|
+
.map(dirent => dirent.name);
|
|
273
|
+
for (const moduleName of moduleNames) {
|
|
274
|
+
const modulePath = path.join(categoryPath, moduleName);
|
|
275
|
+
const module = loadModule(modulePath);
|
|
276
|
+
if (module) {
|
|
277
|
+
modules.push(module);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
return modules;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Discover all collections in the collections directory
|
|
285
|
+
*/
|
|
286
|
+
function discoverCollections() {
|
|
287
|
+
const collections = [];
|
|
288
|
+
const modulesDir = getModulesDir();
|
|
289
|
+
const collectionsDir = path.join(modulesDir, 'collections');
|
|
290
|
+
if (!fs.existsSync(collectionsDir)) {
|
|
291
|
+
return collections;
|
|
292
|
+
}
|
|
293
|
+
const collectionNames = fs.readdirSync(collectionsDir, { withFileTypes: true })
|
|
294
|
+
.filter(dirent => dirent.isDirectory())
|
|
295
|
+
.map(dirent => dirent.name);
|
|
296
|
+
for (const collectionName of collectionNames) {
|
|
297
|
+
const collectionPath = path.join(collectionsDir, collectionName);
|
|
298
|
+
const collectionJsonPath = path.join(collectionPath, 'collection.json');
|
|
299
|
+
if (fs.existsSync(collectionJsonPath)) {
|
|
300
|
+
try {
|
|
301
|
+
const metadata = JSON.parse(fs.readFileSync(collectionJsonPath, 'utf-8'));
|
|
302
|
+
collections.push({
|
|
303
|
+
metadata,
|
|
304
|
+
path: collectionPath,
|
|
305
|
+
fullName: `collections/${collectionName}`
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
catch (error) {
|
|
309
|
+
console.error(`Error loading collection ${collectionName}:`, error);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
return collections;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Find module by name (supports both "category/module" and "module" formats)
|
|
317
|
+
*/
|
|
318
|
+
function findModule(moduleName) {
|
|
319
|
+
const modulesDir = getModulesDir();
|
|
320
|
+
// If moduleName includes category (e.g., "coding-standards/typescript")
|
|
321
|
+
if (moduleName.includes('/')) {
|
|
322
|
+
const modulePath = path.join(modulesDir, moduleName);
|
|
323
|
+
return loadModule(modulePath);
|
|
324
|
+
}
|
|
325
|
+
// Search all categories for the module
|
|
326
|
+
const modules = discoverModules();
|
|
327
|
+
return modules.find(m => m.fullName.endsWith(`/${moduleName}`)) || null;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Find collection by name (supports both "collections/name" and "name" formats)
|
|
331
|
+
*/
|
|
332
|
+
function findCollection(collectionName) {
|
|
333
|
+
const modulesDir = getModulesDir();
|
|
334
|
+
const collectionsDir = path.join(modulesDir, 'collections');
|
|
335
|
+
// Remove "collections/" prefix if present
|
|
336
|
+
const name = collectionName.replace(/^collections\//, '');
|
|
337
|
+
const collectionPath = path.join(collectionsDir, name);
|
|
338
|
+
const collectionJsonPath = path.join(collectionPath, 'collection.json');
|
|
339
|
+
if (!fs.existsSync(collectionJsonPath)) {
|
|
340
|
+
return null;
|
|
341
|
+
}
|
|
342
|
+
try {
|
|
343
|
+
const metadata = JSON.parse(fs.readFileSync(collectionJsonPath, 'utf-8'));
|
|
344
|
+
return {
|
|
345
|
+
metadata,
|
|
346
|
+
path: collectionPath,
|
|
347
|
+
fullName: `collections/${name}`
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
catch (error) {
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Resolve collection to its constituent modules
|
|
356
|
+
* Returns array of module IDs that are part of the collection
|
|
357
|
+
*/
|
|
358
|
+
function resolveCollection(collection) {
|
|
359
|
+
return collection.metadata.modules.map(m => m.id);
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Resolve collection by name to its constituent modules
|
|
363
|
+
*/
|
|
364
|
+
function resolveCollectionByName(collectionName) {
|
|
365
|
+
const collection = findCollection(collectionName);
|
|
366
|
+
if (!collection) {
|
|
367
|
+
return null;
|
|
368
|
+
}
|
|
369
|
+
return resolveCollection(collection);
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Check if a name refers to a collection
|
|
373
|
+
*/
|
|
374
|
+
function isCollection(name) {
|
|
375
|
+
return findCollection(name) !== null;
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Check if a name refers to a module
|
|
379
|
+
*/
|
|
380
|
+
function isModule(name) {
|
|
381
|
+
return findModule(name) !== null;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Validate module structure
|
|
385
|
+
*/
|
|
386
|
+
function validateModuleStructure(modulePath) {
|
|
387
|
+
const errors = [];
|
|
388
|
+
const warnings = [];
|
|
389
|
+
// Check module.json exists
|
|
390
|
+
const moduleJsonPath = path.join(modulePath, 'module.json');
|
|
391
|
+
if (!fs.existsSync(moduleJsonPath)) {
|
|
392
|
+
errors.push('Missing required file: module.json');
|
|
393
|
+
return { valid: false, errors, warnings };
|
|
394
|
+
}
|
|
395
|
+
// Validate module.json content
|
|
396
|
+
try {
|
|
397
|
+
const metadata = JSON.parse(fs.readFileSync(moduleJsonPath, 'utf-8'));
|
|
398
|
+
const metadataValidation = validateModuleMetadata(metadata);
|
|
399
|
+
errors.push(...metadataValidation.errors);
|
|
400
|
+
warnings.push(...metadataValidation.warnings);
|
|
401
|
+
}
|
|
402
|
+
catch (error) {
|
|
403
|
+
errors.push(`Invalid JSON in module.json: ${error instanceof Error ? error.message : error}`);
|
|
404
|
+
return { valid: false, errors, warnings };
|
|
405
|
+
}
|
|
406
|
+
// Check README.md exists
|
|
407
|
+
const readmePath = path.join(modulePath, 'README.md');
|
|
408
|
+
if (!fs.existsSync(readmePath)) {
|
|
409
|
+
errors.push('Missing required file: README.md');
|
|
410
|
+
}
|
|
411
|
+
// Check rules directory exists
|
|
412
|
+
const rulesDir = path.join(modulePath, 'rules');
|
|
413
|
+
if (!fs.existsSync(rulesDir)) {
|
|
414
|
+
errors.push('Missing required directory: rules/');
|
|
415
|
+
}
|
|
416
|
+
else {
|
|
417
|
+
// Check that rules directory has at least one .md file
|
|
418
|
+
const ruleFiles = fs.readdirSync(rulesDir).filter(f => f.endsWith('.md'));
|
|
419
|
+
if (ruleFiles.length === 0) {
|
|
420
|
+
warnings.push('rules/ directory is empty - should contain at least one .md file');
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
// Check examples directory (optional, but warn if missing)
|
|
424
|
+
const examplesDir = path.join(modulePath, 'examples');
|
|
425
|
+
if (!fs.existsSync(examplesDir)) {
|
|
426
|
+
warnings.push('Optional directory missing: examples/');
|
|
427
|
+
}
|
|
428
|
+
return {
|
|
429
|
+
valid: errors.length === 0,
|
|
430
|
+
errors,
|
|
431
|
+
warnings
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Validate module category matches directory structure
|
|
436
|
+
*/
|
|
437
|
+
function validateModuleCategory(module) {
|
|
438
|
+
const errors = [];
|
|
439
|
+
const warnings = [];
|
|
440
|
+
const modulesDir = getModulesDir();
|
|
441
|
+
const relativePath = path.relative(modulesDir, module.path);
|
|
442
|
+
const category = relativePath.split(path.sep)[0];
|
|
443
|
+
if (module.metadata.type !== category) {
|
|
444
|
+
errors.push(`Module type "${module.metadata.type}" does not match directory category "${category}"`);
|
|
445
|
+
}
|
|
446
|
+
return {
|
|
447
|
+
valid: errors.length === 0,
|
|
448
|
+
errors,
|
|
449
|
+
warnings
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* Calculate character count for a module
|
|
454
|
+
*/
|
|
455
|
+
function calculateModuleCharacterCount(modulePath) {
|
|
456
|
+
let totalChars = 0;
|
|
457
|
+
function countFilesRecursively(dir) {
|
|
458
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
459
|
+
for (const entry of entries) {
|
|
460
|
+
const fullPath = path.join(dir, entry.name);
|
|
461
|
+
if (entry.isDirectory()) {
|
|
462
|
+
countFilesRecursively(fullPath);
|
|
463
|
+
}
|
|
464
|
+
else if (entry.isFile()) {
|
|
465
|
+
const content = fs.readFileSync(fullPath, 'utf-8');
|
|
466
|
+
totalChars += content.length;
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
if (fs.existsSync(modulePath)) {
|
|
471
|
+
countFilesRecursively(modulePath);
|
|
472
|
+
}
|
|
473
|
+
return totalChars;
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Validate module is project-agnostic (no hardcoded paths or URLs)
|
|
477
|
+
*/
|
|
478
|
+
function validateProjectAgnostic(modulePath) {
|
|
479
|
+
const errors = [];
|
|
480
|
+
const warnings = [];
|
|
481
|
+
// Patterns to detect project-specific content
|
|
482
|
+
const pathPatterns = [
|
|
483
|
+
/[A-Z]:\\/g, // Windows absolute paths (C:\, D:\, etc.)
|
|
484
|
+
/\/home\/[a-zA-Z0-9_-]+\//g, // Linux home paths
|
|
485
|
+
/\/Users\/[a-zA-Z0-9_-]+\//g, // macOS home paths
|
|
486
|
+
];
|
|
487
|
+
const urlPatterns = [
|
|
488
|
+
/https?:\/\/(?!github\.com|npmjs\.com|pypi\.org|crates\.io)[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g, // URLs (excluding common registries)
|
|
489
|
+
];
|
|
490
|
+
function scanFile(filePath) {
|
|
491
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
492
|
+
// Check for hardcoded paths
|
|
493
|
+
for (const pattern of pathPatterns) {
|
|
494
|
+
const matches = content.match(pattern);
|
|
495
|
+
if (matches) {
|
|
496
|
+
warnings.push(`Potential hardcoded path in ${path.basename(filePath)}: ${matches[0]}`);
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
// Check for project-specific URLs
|
|
500
|
+
for (const pattern of urlPatterns) {
|
|
501
|
+
const matches = content.match(pattern);
|
|
502
|
+
if (matches) {
|
|
503
|
+
warnings.push(`Potential project-specific URL in ${path.basename(filePath)}: ${matches[0]}`);
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
function scanDirectory(dir) {
|
|
508
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
509
|
+
for (const entry of entries) {
|
|
510
|
+
const fullPath = path.join(dir, entry.name);
|
|
511
|
+
if (entry.isDirectory()) {
|
|
512
|
+
scanDirectory(fullPath);
|
|
513
|
+
}
|
|
514
|
+
else if (entry.isFile() && (entry.name.endsWith('.md') || entry.name.endsWith('.json'))) {
|
|
515
|
+
scanFile(fullPath);
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
if (fs.existsSync(modulePath)) {
|
|
520
|
+
scanDirectory(modulePath);
|
|
521
|
+
}
|
|
522
|
+
return {
|
|
523
|
+
valid: errors.length === 0,
|
|
524
|
+
errors,
|
|
525
|
+
warnings
|
|
526
|
+
};
|
|
527
|
+
}
|
|
528
|
+
//# sourceMappingURL=module-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-system.js","sourceRoot":"","sources":["../../src/utils/module-system.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Module } from './module-system';
|
|
2
|
+
/**
|
|
3
|
+
* Module catalog entry interface
|
|
4
|
+
*/
|
|
5
|
+
export interface ModuleCatalogEntry {
|
|
6
|
+
module: Module;
|
|
7
|
+
displayName: string;
|
|
8
|
+
version: string;
|
|
9
|
+
characterCount: number;
|
|
10
|
+
description: string;
|
|
11
|
+
contents: string[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Generate catalog entry for a module
|
|
15
|
+
*/
|
|
16
|
+
export declare function generateCatalogEntry(module: Module): ModuleCatalogEntry;
|
|
17
|
+
/**
|
|
18
|
+
* Generate markdown for a catalog entry
|
|
19
|
+
*/
|
|
20
|
+
export declare function generateCatalogMarkdown(entry: ModuleCatalogEntry): string;
|
|
21
|
+
/**
|
|
22
|
+
* Group modules by category
|
|
23
|
+
*/
|
|
24
|
+
export declare function groupModulesByCategory(modules: Module[]): Map<string, Module[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Generate complete MODULES.md content
|
|
27
|
+
*/
|
|
28
|
+
export declare function generateModulesCatalog(): string;
|
|
29
|
+
/**
|
|
30
|
+
* Update MODULES.md file
|
|
31
|
+
*/
|
|
32
|
+
export declare function updateModulesCatalog(catalogPath?: string): void;
|
|
33
|
+
//# sourceMappingURL=modules-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modules-catalog.d.ts","sourceRoot":"","sources":["../../src/utils/modules-catalog.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAmB,MAAM,iBAAiB,CAAC;AAG1D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAuBvE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAoBzE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAiB/E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAuD/C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,GAAE,MAAqB,GAAG,IAAI,CAG7E"}
|