specpilot 1.2.1 ā 1.3.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 +90 -419
- package/dist/cli.js +13 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/add-specs.d.ts.map +1 -1
- package/dist/commands/add-specs.js +2 -9
- package/dist/commands/add-specs.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +41 -35
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +3 -31
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +16 -11
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/specify.d.ts.map +1 -1
- package/dist/commands/specify.js +18 -9
- package/dist/commands/specify.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +35 -19
- package/dist/commands/validate.js.map +1 -1
- package/dist/utils/logger.d.ts +19 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +149 -0
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/specGenerator.d.ts.map +1 -1
- package/dist/utils/specGenerator.js +1 -0
- package/dist/utils/specGenerator.js.map +1 -1
- package/package.json +5 -4
|
@@ -106,15 +106,8 @@ async function addSpecsCommand(options) {
|
|
|
106
106
|
});
|
|
107
107
|
logger.success('ā
.specs folder created successfully!');
|
|
108
108
|
logger.info(`š Location: ${specsDir}`);
|
|
109
|
-
// Show next steps
|
|
110
|
-
|
|
111
|
-
š Next steps to populate your specs with AI:
|
|
112
|
-
1. Open .specs/README.md for full guidance
|
|
113
|
-
2. Copy the onboarding prompt from .specs/development/prompts.md
|
|
114
|
-
3. Paste into your AI agent and run it
|
|
115
|
-
4. Review the generated spec files
|
|
116
|
-
|
|
117
|
-
Your project is now ready for AI-assisted development!`));
|
|
109
|
+
// Show next steps with logo
|
|
110
|
+
logger.displayInitSuccess(projectInfo?.name || 'Project', projectDir, specsDir);
|
|
118
111
|
}
|
|
119
112
|
catch (error) {
|
|
120
113
|
logger.error(`ā Failed to add specs: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-specs.js","sourceRoot":"","sources":["../../src/commands/add-specs.ts"],"names":[],"mappings":";;;;;AAmBA,
|
|
1
|
+
{"version":3,"file":"add-specs.js","sourceRoot":"","sources":["../../src/commands/add-specs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,iBA8InE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -48,25 +48,21 @@ const logger_1 = require("../utils/logger");
|
|
|
48
48
|
async function initCommand(name, options) {
|
|
49
49
|
const logger = new logger_1.Logger();
|
|
50
50
|
try {
|
|
51
|
-
logger.info('š Initializing SDD project...');
|
|
52
51
|
// Validate project name
|
|
53
52
|
if (!name || name.trim() === '') {
|
|
54
|
-
logger.
|
|
55
|
-
logger.info('š” Usage: specpilot init <project-name>');
|
|
53
|
+
logger.displayError('Invalid Project Name', 'Project name is required and cannot be empty\n\nš” Usage: specpilot init <project-name>');
|
|
56
54
|
process.exit(1);
|
|
57
55
|
}
|
|
58
56
|
const projectName = name.trim();
|
|
59
57
|
// Validate project name doesn't contain invalid characters
|
|
60
58
|
if (/[<>:"/\\|?*]/.test(projectName)) {
|
|
61
|
-
logger.
|
|
62
|
-
logger.info('š” Please use only letters, numbers, hyphens, and underscores');
|
|
59
|
+
logger.displayError('Invalid Project Name', 'Project name contains invalid characters: < > : " / \\ | ? *\n\nš” Please use only letters, numbers, hyphens, and underscores');
|
|
63
60
|
process.exit(1);
|
|
64
61
|
}
|
|
65
62
|
// Validate supported language
|
|
66
63
|
const supportedLanguages = ['typescript', 'javascript', 'python'];
|
|
67
64
|
if (!supportedLanguages.includes(options.lang)) {
|
|
68
|
-
logger.
|
|
69
|
-
logger.info(`š” Supported languages: ${supportedLanguages.join(', ')}`);
|
|
65
|
+
logger.displayError('Unsupported Language', `Language "${options.lang}" is not supported\n\nš” Supported languages: ${supportedLanguages.join(', ')}`);
|
|
70
66
|
process.exit(1);
|
|
71
67
|
}
|
|
72
68
|
// Get framework if not provided and prompts enabled
|
|
@@ -74,6 +70,18 @@ async function initCommand(name, options) {
|
|
|
74
70
|
if (!framework && options.prompts) {
|
|
75
71
|
const frameworks = getFrameworksForLanguage(options.lang);
|
|
76
72
|
if (frameworks.length > 0) {
|
|
73
|
+
// Display logo before framework selection
|
|
74
|
+
const frameworkPromptContent = [
|
|
75
|
+
chalk_1.default.blue('š Initializing SDD project...'),
|
|
76
|
+
'',
|
|
77
|
+
chalk_1.default.blue.bold('Framework Selection'),
|
|
78
|
+
'',
|
|
79
|
+
chalk_1.default.white(`Project: ${projectName}`),
|
|
80
|
+
chalk_1.default.white(`Language: ${options.lang}`),
|
|
81
|
+
'',
|
|
82
|
+
chalk_1.default.cyan('Please choose a framework for your project:')
|
|
83
|
+
];
|
|
84
|
+
logger.displayWithLogo(frameworkPromptContent);
|
|
77
85
|
const response = await inquirer_1.default.prompt([{
|
|
78
86
|
type: 'list',
|
|
79
87
|
name: 'framework',
|
|
@@ -102,39 +110,47 @@ async function initCommand(name, options) {
|
|
|
102
110
|
// Check for existing .specs folder
|
|
103
111
|
const specsDir = (0, path_1.join)(targetDir, options.specsName);
|
|
104
112
|
if ((0, fs_1.existsSync)(specsDir)) {
|
|
105
|
-
logger.error(`ā Cannot initialize: ${options.specsName} folder already exists in ${targetDir}`);
|
|
106
113
|
// Try to read existing project info
|
|
107
114
|
const projectYamlPath = (0, path_1.join)(specsDir, 'project', 'project.yaml');
|
|
108
115
|
const requirementsMdPath = (0, path_1.join)(specsDir, 'project', 'requirements.md');
|
|
109
|
-
let projectInfo =
|
|
116
|
+
let projectInfo = `Project "${projectName}" already exists at ${targetDir}`;
|
|
110
117
|
if ((0, fs_1.existsSync)(projectYamlPath)) {
|
|
111
118
|
try {
|
|
112
119
|
const projectData = yaml.load((0, fs_1.readFileSync)(projectYamlPath, 'utf8'));
|
|
113
|
-
projectInfo += `\nš Existing Project
|
|
114
|
-
projectInfo += `\n
|
|
115
|
-
projectInfo += `\n
|
|
116
|
-
projectInfo += `\n
|
|
117
|
-
projectInfo += `\n
|
|
120
|
+
projectInfo += `\n\nš Existing Project Details:`;
|
|
121
|
+
projectInfo += `\n Name: ${projectData.name || 'Unknown'}`;
|
|
122
|
+
projectInfo += `\n Version: ${projectData.version || 'Unknown'}`;
|
|
123
|
+
projectInfo += `\n Language: ${projectData.language || 'Unknown'}`;
|
|
124
|
+
projectInfo += `\n Framework: ${projectData.framework || 'Unknown'}`;
|
|
125
|
+
projectInfo += `\n Author: ${projectData.author || 'Unknown'}`;
|
|
118
126
|
}
|
|
119
127
|
catch (error) {
|
|
120
|
-
projectInfo += '\nā ļø Could not read project.yaml';
|
|
128
|
+
projectInfo += '\n\nā ļø Could not read project.yaml';
|
|
121
129
|
}
|
|
122
130
|
}
|
|
123
131
|
if ((0, fs_1.existsSync)(requirementsMdPath)) {
|
|
124
132
|
try {
|
|
125
133
|
const requirementsContent = (0, fs_1.readFileSync)(requirementsMdPath, 'utf8');
|
|
126
134
|
const lines = requirementsContent.split('\n').slice(0, 5); // First 5 lines
|
|
127
|
-
projectInfo += `\nš Requirements Preview:\n${lines.join('\n')}`;
|
|
135
|
+
projectInfo += `\n\nš Requirements Preview:\n${lines.map(line => ` ${line}`).join('\n')}`;
|
|
128
136
|
}
|
|
129
137
|
catch (error) {
|
|
130
|
-
projectInfo += '\nā ļø Could not read requirements.md';
|
|
138
|
+
projectInfo += '\n\nā ļø Could not read requirements.md';
|
|
131
139
|
}
|
|
132
140
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
141
|
+
const existingProjectContent = [
|
|
142
|
+
chalk_1.default.blue('š Initializing SDD project...'),
|
|
143
|
+
'',
|
|
144
|
+
chalk_1.default.red.bold('Project Already Exists'),
|
|
145
|
+
'',
|
|
146
|
+
chalk_1.default.yellow(projectInfo),
|
|
147
|
+
'',
|
|
148
|
+
chalk_1.default.cyan('š” To continue with this project:'),
|
|
149
|
+
chalk_1.default.white(` cd ${targetDir}`),
|
|
150
|
+
chalk_1.default.white(' specpilot validate # Check current specs'),
|
|
151
|
+
chalk_1.default.white(` # Edit ${options.specsName}/project/requirements.md`)
|
|
152
|
+
];
|
|
153
|
+
logger.displayWithLogo(existingProjectContent);
|
|
138
154
|
process.exit(1);
|
|
139
155
|
}
|
|
140
156
|
// Initialize template engine and spec generator
|
|
@@ -149,21 +165,11 @@ async function initCommand(name, options) {
|
|
|
149
165
|
specsName: options.specsName,
|
|
150
166
|
author: developerName
|
|
151
167
|
});
|
|
152
|
-
|
|
153
|
-
logger.
|
|
154
|
-
logger.info(`š Specs: ${(0, path_1.join)(targetDir, options.specsName)}`);
|
|
155
|
-
// Show next steps
|
|
156
|
-
console.log(chalk_1.default.cyan(`
|
|
157
|
-
š Next steps to populate your specs with AI:
|
|
158
|
-
1. Open .specs/README.md for full guidance
|
|
159
|
-
2. Copy the onboarding prompt from .specs/development/prompts.md
|
|
160
|
-
3. Paste into your AI agent and run it
|
|
161
|
-
4. Review the generated spec files
|
|
162
|
-
|
|
163
|
-
Your project is now ready for AI-assisted development!`));
|
|
168
|
+
// Show success with logo (includes initialization message and all details)
|
|
169
|
+
logger.displayInitSuccess(projectName, targetDir, (0, path_1.join)(targetDir, options.specsName));
|
|
164
170
|
}
|
|
165
171
|
catch (error) {
|
|
166
|
-
logger.
|
|
172
|
+
logger.displayError('Initialization Failed', error instanceof Error ? error.message : 'Unknown error');
|
|
167
173
|
process.exit(1);
|
|
168
174
|
}
|
|
169
175
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,kCA8IC;AA/JD,+BAA4B;AAC5B,2BAAyD;AACzD,kDAA0B;AAC1B,wDAAgC;AAChC,8CAAgC;AAChC,4DAAyD;AACzD,0DAAuD;AACvD,4CAAyC;AAUlC,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,OAAoB;IAClE,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;IAE5B,IAAI,CAAC;QACH,wBAAwB;QACxB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAChC,MAAM,CAAC,YAAY,CAAC,sBAAsB,EAAE,yFAAyF,CAAC,CAAC;YACvI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAEhC,2DAA2D;QAC3D,IAAI,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,YAAY,CAAC,sBAAsB,EAAE,+HAA+H,CAAC,CAAC;YAC7K,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,8BAA8B;QAC9B,MAAM,kBAAkB,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAClE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,YAAY,CAAC,sBAAsB,EAAE,aAAa,OAAO,CAAC,IAAI,iDAAiD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,oDAAoD;QACpD,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,0CAA0C;gBAC1C,MAAM,sBAAsB,GAAG;oBAC7B,eAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC;oBAC5C,EAAE;oBACF,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC;oBACtC,EAAE;oBACF,eAAK,CAAC,KAAK,CAAC,YAAY,WAAW,EAAE,CAAC;oBACtC,eAAK,CAAC,KAAK,CAAC,aAAa,OAAO,CAAC,IAAI,EAAE,CAAC;oBACxC,EAAE;oBACF,eAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC;iBAC1D,CAAC;gBACF,MAAM,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;gBAE/C,MAAM,QAAQ,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;wBACtC,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,qBAAqB;wBAC9B,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC;qBACjC,CAAC,CAAC,CAAC;gBACJ,SAAS,GAAG,QAAQ,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,IAAI,aAAa,GAAG,WAAW,CAAC,CAAC,UAAU;QAC3C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;oBAC1C,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,8CAA8C;oBACvD,OAAO,EAAE,WAAW;iBACrB,CAAC,CAAC,CAAC;YACJ,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC;QACnE,CAAC;QAED,2BAA2B;QAC3B,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,IAAA,eAAU,EAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,IAAA,cAAS,EAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,mCAAmC;QACnC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,oCAAoC;YACpC,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;YAClE,MAAM,kBAAkB,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAExE,IAAI,WAAW,GAAG,YAAY,WAAW,uBAAuB,SAAS,EAAE,CAAC;YAE5E,IAAI,IAAA,eAAU,EAAC,eAAe,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAA,iBAAY,EAAC,eAAe,EAAE,MAAM,CAAC,CAAQ,CAAC;oBAC5E,WAAW,IAAI,kCAAkC,CAAC;oBAClD,WAAW,IAAI,aAAa,WAAW,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;oBAC5D,WAAW,IAAI,gBAAgB,WAAW,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC;oBAClE,WAAW,IAAI,iBAAiB,WAAW,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC;oBACpE,WAAW,IAAI,kBAAkB,WAAW,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;oBACtE,WAAW,IAAI,eAAe,WAAW,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;gBAClE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,WAAW,IAAI,oCAAoC,CAAC;gBACtD,CAAC;YACH,CAAC;YAED,IAAI,IAAA,eAAU,EAAC,kBAAkB,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC;oBACH,MAAM,mBAAmB,GAAG,IAAA,iBAAY,EAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;oBACrE,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB;oBAC3E,WAAW,IAAI,iCAAiC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9F,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,WAAW,IAAI,uCAAuC,CAAC;gBACzD,CAAC;YACH,CAAC;YAED,MAAM,sBAAsB,GAAG;gBAC7B,eAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC;gBAC5C,EAAE;gBACF,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC;gBACxC,EAAE;gBACF,eAAK,CAAC,MAAM,CAAC,WAAW,CAAC;gBACzB,EAAE;gBACF,eAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC;gBAC/C,eAAK,CAAC,KAAK,CAAC,QAAQ,SAAS,EAAE,CAAC;gBAChC,eAAK,CAAC,KAAK,CAAC,6CAA6C,CAAC;gBAC1D,eAAK,CAAC,KAAK,CAAC,YAAY,OAAO,CAAC,SAAS,0BAA0B,CAAC;aACrE,CAAC;YAEF,MAAM,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,gDAAgD;QAChD,MAAM,cAAc,GAAG,IAAI,+BAAc,EAAE,CAAC;QAC5C,MAAM,aAAa,GAAG,IAAI,6BAAa,CAAC,cAAc,CAAC,CAAC;QAExD,sCAAsC;QACtC,MAAM,aAAa,CAAC,aAAa,CAAC;YAChC,WAAW;YACX,QAAQ,EAAE,OAAO,CAAC,IAAI;YACtB,SAAS;YACT,SAAS;YACT,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,aAAa;SACtB,CAAC,CAAC;QAEH,2EAA2E;QAC3E,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE,SAAS,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAExF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,YAAY,CAAC,uBAAuB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QACvG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,QAAgB;IAChD,MAAM,UAAU,GAA6B;QAC3C,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC;QAClE,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC;KACpD,CAAC;IAEF,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,iBAkBrD"}
|
package/dist/commands/list.js
CHANGED
|
@@ -1,49 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.listCommand = listCommand;
|
|
7
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
8
4
|
const templateRegistry_1 = require("../utils/templateRegistry");
|
|
9
5
|
const logger_1 = require("../utils/logger");
|
|
10
6
|
async function listCommand(options) {
|
|
11
7
|
const logger = new logger_1.Logger();
|
|
12
8
|
try {
|
|
13
|
-
logger.info('š Available Templates:');
|
|
14
9
|
const registry = new templateRegistry_1.TemplateRegistry();
|
|
15
10
|
const templates = await registry.getTemplates(options.lang);
|
|
16
11
|
if (templates.length === 0) {
|
|
17
|
-
logger.
|
|
12
|
+
logger.displayInfo('No Templates Found', 'ā ļø No templates found matching your criteria');
|
|
18
13
|
return;
|
|
19
14
|
}
|
|
20
|
-
|
|
21
|
-
const grouped = templates.reduce((acc, template) => {
|
|
22
|
-
if (!acc[template.language]) {
|
|
23
|
-
acc[template.language] = [];
|
|
24
|
-
}
|
|
25
|
-
acc[template.language].push(template);
|
|
26
|
-
return acc;
|
|
27
|
-
}, {});
|
|
28
|
-
Object.entries(grouped).forEach(([language, langTemplates]) => {
|
|
29
|
-
console.log(chalk_1.default.blue(`\nš¦ ${language.toUpperCase()}`));
|
|
30
|
-
langTemplates.forEach(template => {
|
|
31
|
-
const name = template.framework ?
|
|
32
|
-
`${template.name} (${template.framework})` :
|
|
33
|
-
template.name;
|
|
34
|
-
if (options.verbose) {
|
|
35
|
-
console.log(chalk_1.default.green(` ā ${name}`));
|
|
36
|
-
console.log(chalk_1.default.gray(` Description: ${template.description}`));
|
|
37
|
-
console.log(chalk_1.default.gray(` Files: ${template.files.join(', ')}`));
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
console.log(chalk_1.default.green(` ā ${name} - ${template.description}`));
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
});
|
|
15
|
+
logger.displayTemplates(templates, options.verbose);
|
|
44
16
|
}
|
|
45
17
|
catch (error) {
|
|
46
|
-
logger.
|
|
18
|
+
logger.displayError('Failed to List Templates', error instanceof Error ? error.message : 'Unknown error');
|
|
47
19
|
process.exit(1);
|
|
48
20
|
}
|
|
49
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":";;AAUA,kCAkBC;AA1BD,gEAA6D;AAC7D,4CAAyC;AAOlC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,mCAAgB,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE5D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,WAAW,CAAC,oBAAoB,EAAE,+CAA+C,CAAC,CAAC;YAC1F,OAAO;QACT,CAAC;QAED,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,YAAY,CAAC,0BAA0B,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC1G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,iBAoF3D"}
|
package/dist/commands/migrate.js
CHANGED
|
@@ -55,21 +55,26 @@ async function migrateCommand(options) {
|
|
|
55
55
|
to: options.to
|
|
56
56
|
});
|
|
57
57
|
logger.success('ā
Migration completed successfully!');
|
|
58
|
-
// Show migration summary
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
// Show migration summary with logo
|
|
59
|
+
const summaryContent = [
|
|
60
|
+
chalk_1.default.blue.bold('Migration Summary'),
|
|
61
|
+
'',
|
|
62
|
+
chalk_1.default.white(`Files migrated: ${results.filesMigrated}`),
|
|
63
|
+
chalk_1.default.white(`Files merged: ${results.filesMerged}`),
|
|
64
|
+
chalk_1.default.white(`Files created: ${results.filesCreated}`)
|
|
65
|
+
];
|
|
63
66
|
if (results.warnings.length > 0) {
|
|
64
|
-
|
|
67
|
+
summaryContent.push('');
|
|
68
|
+
summaryContent.push(chalk_1.default.yellow('ā ļø Warnings:'));
|
|
65
69
|
results.warnings.forEach((warning) => {
|
|
66
|
-
|
|
70
|
+
summaryContent.push(chalk_1.default.yellow(` ⢠${warning}`));
|
|
67
71
|
});
|
|
68
72
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
+
summaryContent.push('');
|
|
74
|
+
summaryContent.push(chalk_1.default.cyan('š Next steps:'));
|
|
75
|
+
summaryContent.push(chalk_1.default.white(' specpilot validate # Validate migrated structure'));
|
|
76
|
+
summaryContent.push(chalk_1.default.white(' # Review .specs/ files and update as needed'));
|
|
77
|
+
logger.displayWithLogo(summaryContent);
|
|
73
78
|
}
|
|
74
79
|
catch (error) {
|
|
75
80
|
logger.error(`ā Migration failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":";;;;;AAcA,
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specify.d.ts","sourceRoot":"","sources":["../../src/commands/specify.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"specify.d.ts","sourceRoot":"","sources":["../../src/commands/specify.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,cAAc,iBAmH5F"}
|
package/dist/commands/specify.js
CHANGED
|
@@ -38,7 +38,7 @@ async function specifyCommand(description, options) {
|
|
|
38
38
|
process.exit(1);
|
|
39
39
|
}
|
|
40
40
|
// Read existing project.yaml to get current context
|
|
41
|
-
const projectYamlPath = (0, path_1.join)(specsDir, 'project.yaml');
|
|
41
|
+
const projectYamlPath = (0, path_1.join)(specsDir, 'project', 'project.yaml');
|
|
42
42
|
if (!(0, fs_1.existsSync)(projectYamlPath)) {
|
|
43
43
|
logger.error('ā project.yaml not found. Please ensure this is a valid SDD project.');
|
|
44
44
|
process.exit(1);
|
|
@@ -49,7 +49,7 @@ async function specifyCommand(description, options) {
|
|
|
49
49
|
const framework = extractFramework(projectYaml);
|
|
50
50
|
logger.info(`š Found project: ${projectName} (${language}${framework ? ` + ${framework}` : ''})`);
|
|
51
51
|
// Update requirements.md with the new description
|
|
52
|
-
const requirementsPath = (0, path_1.join)(specsDir, 'requirements.md');
|
|
52
|
+
const requirementsPath = (0, path_1.join)(specsDir, 'project', 'requirements.md');
|
|
53
53
|
if ((0, fs_1.existsSync)(requirementsPath)) {
|
|
54
54
|
const currentContent = (0, fs_1.readFileSync)(requirementsPath, 'utf-8');
|
|
55
55
|
const updatedContent = updateRequirementsWithDescription(currentContent, projectDescription, options.update);
|
|
@@ -57,7 +57,7 @@ async function specifyCommand(description, options) {
|
|
|
57
57
|
logger.success('ā
Updated requirements.md with new description');
|
|
58
58
|
}
|
|
59
59
|
// Update context.md with the specification
|
|
60
|
-
const contextPath = (0, path_1.join)(specsDir, 'context.md');
|
|
60
|
+
const contextPath = (0, path_1.join)(specsDir, 'development', 'context.md');
|
|
61
61
|
if ((0, fs_1.existsSync)(contextPath)) {
|
|
62
62
|
const currentContent = (0, fs_1.readFileSync)(contextPath, 'utf-8');
|
|
63
63
|
const updatedContent = updateContextWithSpecification(currentContent, projectDescription);
|
|
@@ -65,7 +65,7 @@ async function specifyCommand(description, options) {
|
|
|
65
65
|
logger.success('ā
Updated context.md with specification details');
|
|
66
66
|
}
|
|
67
67
|
// Update prompts.md to log this interaction
|
|
68
|
-
const promptsPath = (0, path_1.join)(specsDir, 'prompts.md');
|
|
68
|
+
const promptsPath = (0, path_1.join)(specsDir, 'development', 'prompts.md');
|
|
69
69
|
if ((0, fs_1.existsSync)(promptsPath)) {
|
|
70
70
|
const currentContent = (0, fs_1.readFileSync)(promptsPath, 'utf-8');
|
|
71
71
|
const updatedContent = updatePromptsLog(currentContent, projectDescription);
|
|
@@ -90,11 +90,20 @@ async function specifyCommand(description, options) {
|
|
|
90
90
|
logger.success(`šÆ Specification processed successfully!`);
|
|
91
91
|
logger.info(`š Specs location: ${specsDir}`);
|
|
92
92
|
logger.info(`š Description: "${projectDescription}"`);
|
|
93
|
-
// Show next steps
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
93
|
+
// Show next steps with logo
|
|
94
|
+
const nextStepsContent = [
|
|
95
|
+
chalk_1.default.blue.bold('Specification Processed'),
|
|
96
|
+
'',
|
|
97
|
+
chalk_1.default.green('ā
Successfully updated project specifications'),
|
|
98
|
+
chalk_1.default.white(`š Location: ${specsDir}`),
|
|
99
|
+
chalk_1.default.white(`š Description: "${projectDescription}"`),
|
|
100
|
+
'',
|
|
101
|
+
chalk_1.default.cyan('š Next steps:'),
|
|
102
|
+
chalk_1.default.white(` # Review updated specifications in ${options.specsName}/`),
|
|
103
|
+
chalk_1.default.white(' specpilot validate # Validate your specifications'),
|
|
104
|
+
chalk_1.default.white(' # Continue development based on the updated requirements')
|
|
105
|
+
];
|
|
106
|
+
logger.displayWithLogo(nextStepsContent);
|
|
98
107
|
}
|
|
99
108
|
catch (error) {
|
|
100
109
|
logger.error(`ā Failed to process specification: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specify.js","sourceRoot":"","sources":["../../src/commands/specify.ts"],"names":[],"mappings":";;;;;AAgBA,
|
|
1
|
+
{"version":3,"file":"specify.js","sourceRoot":"","sources":["../../src/commands/specify.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,iBA6D7D"}
|
|
@@ -17,37 +17,53 @@ async function validateCommand(options) {
|
|
|
17
17
|
verbose: options.verbose
|
|
18
18
|
});
|
|
19
19
|
if (results.isValid) {
|
|
20
|
-
logger.success('ā
All specifications are valid!');
|
|
21
20
|
if (results.warnings.length > 0) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
logger.displayValidationResults(true, [], results.warnings, options.verbose ? {
|
|
22
|
+
filesChecked: results.filesChecked,
|
|
23
|
+
errors: results.errors.length,
|
|
24
|
+
warnings: results.warnings.length,
|
|
25
|
+
mandatesVerified: results.mandatesVerified
|
|
26
|
+
} : undefined);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
logger.displayValidationResults(true, [], [], options.verbose ? {
|
|
30
|
+
filesChecked: results.filesChecked,
|
|
31
|
+
errors: results.errors.length,
|
|
32
|
+
warnings: results.warnings.length,
|
|
33
|
+
mandatesVerified: results.mandatesVerified
|
|
34
|
+
} : undefined);
|
|
26
35
|
}
|
|
27
36
|
}
|
|
28
37
|
else {
|
|
29
|
-
logger.error('ā Validation failed!');
|
|
30
|
-
console.log(chalk_1.default.red('\nš« Errors:'));
|
|
31
|
-
results.errors.forEach(error => {
|
|
32
|
-
console.log(chalk_1.default.red(` ⢠${error}`));
|
|
33
|
-
});
|
|
34
38
|
if (options.fix && results.fixable.length > 0) {
|
|
35
39
|
console.log(chalk_1.default.blue('\nš§ Auto-fixing issues...'));
|
|
36
40
|
const fixed = await validator.autoFix(options.dir, results.fixable);
|
|
37
41
|
console.log(chalk_1.default.green(`ā
Fixed ${fixed.length} issues`));
|
|
42
|
+
// Re-validate after fixing
|
|
43
|
+
const reResults = await validator.validate(options.dir, {
|
|
44
|
+
fix: false,
|
|
45
|
+
verbose: options.verbose
|
|
46
|
+
});
|
|
47
|
+
logger.displayValidationResults(reResults.isValid, reResults.errors, reResults.warnings, options.verbose ? {
|
|
48
|
+
filesChecked: reResults.filesChecked,
|
|
49
|
+
errors: reResults.errors.length,
|
|
50
|
+
warnings: reResults.warnings.length,
|
|
51
|
+
mandatesVerified: reResults.mandatesVerified
|
|
52
|
+
} : undefined);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
logger.displayValidationResults(false, results.errors, results.warnings, options.verbose ? {
|
|
56
|
+
filesChecked: results.filesChecked,
|
|
57
|
+
errors: results.errors.length,
|
|
58
|
+
warnings: results.warnings.length,
|
|
59
|
+
mandatesVerified: results.mandatesVerified
|
|
60
|
+
} : undefined);
|
|
61
|
+
process.exit(1);
|
|
38
62
|
}
|
|
39
|
-
process.exit(1);
|
|
40
|
-
}
|
|
41
|
-
if (options.verbose) {
|
|
42
|
-
console.log(chalk_1.default.blue('\nš Validation Summary:'));
|
|
43
|
-
console.log(` Files checked: ${results.filesChecked}`);
|
|
44
|
-
console.log(` Errors: ${results.errors.length}`);
|
|
45
|
-
console.log(` Warnings: ${results.warnings.length}`);
|
|
46
|
-
console.log(` Mandates verified: ${results.mandatesVerified}`);
|
|
47
63
|
}
|
|
48
64
|
}
|
|
49
65
|
catch (error) {
|
|
50
|
-
logger.
|
|
66
|
+
logger.displayError('Validation Failed', error instanceof Error ? error.message : 'Unknown error');
|
|
51
67
|
process.exit(1);
|
|
52
68
|
}
|
|
53
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":";;;;;AAaA,
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/logger.d.ts
CHANGED
|
@@ -1,8 +1,27 @@
|
|
|
1
1
|
export declare class Logger {
|
|
2
|
+
private readonly logo;
|
|
2
3
|
info(message: string): void;
|
|
3
4
|
success(message: string): void;
|
|
4
5
|
warn(message: string): void;
|
|
5
6
|
error(message: string): void;
|
|
6
7
|
debug(message: string): void;
|
|
8
|
+
displayWithLogo(content: string[]): void;
|
|
9
|
+
displayWelcome(): void;
|
|
10
|
+
displayValidationResults(isValid: boolean, errors: string[], warnings: string[], summary?: {
|
|
11
|
+
filesChecked: number;
|
|
12
|
+
errors: number;
|
|
13
|
+
warnings: number;
|
|
14
|
+
mandatesVerified: number;
|
|
15
|
+
}): void;
|
|
16
|
+
displayTemplates(templates: Array<{
|
|
17
|
+
language: string;
|
|
18
|
+
name: string;
|
|
19
|
+
framework?: string;
|
|
20
|
+
description: string;
|
|
21
|
+
files: string[];
|
|
22
|
+
}>, verbose: boolean): void;
|
|
23
|
+
displayInitSuccess(projectName: string, targetDir: string, specsPath: string): void;
|
|
24
|
+
displayError(title: string, message: string, showInitMessage?: boolean): void;
|
|
25
|
+
displayInfo(title: string, message: string): void;
|
|
7
26
|
}
|
|
8
27
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,qBAAa,MAAM;IACjB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAcnB;IAEF,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO5B,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAYxC,cAAc,IAAI,IAAI;IAqBtB,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAoCtL,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAsCxJ,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAuBnF,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,GAAE,OAAc,GAAG,IAAI;IAgBnF,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;CASlD"}
|