@git.zone/tsdoc 1.12.0 → 2.0.1
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_ts/00_commitinfo_data.js +2 -2
- package/dist_ts/aidocs_classes/commit.js +53 -86
- package/dist_ts/aidocs_classes/description.js +36 -55
- package/dist_ts/aidocs_classes/projectcontext.js +2 -2
- package/dist_ts/aidocs_classes/readme.js +60 -98
- package/dist_ts/classes.aidoc.d.ts +2 -7
- package/dist_ts/classes.aidoc.js +14 -24
- package/dist_ts/plugins.d.ts +3 -2
- package/dist_ts/plugins.js +4 -3
- package/package.json +14 -14
- package/readme.md +137 -313
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/aidocs_classes/commit.ts +52 -88
- package/ts/aidocs_classes/description.ts +38 -58
- package/ts/aidocs_classes/projectcontext.ts +1 -1
- package/ts/aidocs_classes/readme.ts +60 -99
- package/ts/classes.aidoc.ts +18 -29
- package/ts/plugins.ts +3 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/tsdoc',
|
|
6
|
-
version: '
|
|
6
|
+
version: '2.0.1',
|
|
7
7
|
description: 'A comprehensive TypeScript documentation tool that leverages AI to generate and enhance project documentation, including dynamic README creation, API docs via TypeDoc, and smart commit message generation.'
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxpQkFBaUI7SUFDdkIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLDhNQUE4TTtDQUM1TixDQUFBIn0=
|
|
@@ -75,14 +75,14 @@ export class Commit {
|
|
|
75
75
|
// Diagnostic logging for raw diff statistics
|
|
76
76
|
const totalChars = diffStringArray.join('\n\n').length;
|
|
77
77
|
const estimatedTokens = Math.ceil(totalChars / 4);
|
|
78
|
-
console.log(
|
|
78
|
+
console.log(`Raw git diff statistics:`);
|
|
79
79
|
console.log(` Files changed: ${diffStringArray.length}`);
|
|
80
80
|
console.log(` Total characters: ${totalChars.toLocaleString()}`);
|
|
81
81
|
console.log(` Estimated tokens: ${estimatedTokens.toLocaleString()}`);
|
|
82
82
|
console.log(` Exclusion patterns: ${excludePatterns.length}`);
|
|
83
83
|
// Calculate available tokens for diff based on total budget
|
|
84
84
|
const maxDiffTokens = calculateMaxDiffTokens();
|
|
85
|
-
console.log(
|
|
85
|
+
console.log(`Token budget: ${maxDiffTokens.toLocaleString()} tokens for diff (limit: ${TOKEN_BUDGET.OPENAI_CONTEXT_LIMIT.toLocaleString()}, overhead: ${(TOKEN_BUDGET.SMARTAGENT_OVERHEAD + TOKEN_BUDGET.TASK_PROMPT_OVERHEAD).toLocaleString()})`);
|
|
86
86
|
// Use DiffProcessor to intelligently handle large diffs
|
|
87
87
|
const diffProcessor = new DiffProcessor({
|
|
88
88
|
maxDiffTokens, // Dynamic based on total budget
|
|
@@ -93,81 +93,55 @@ export class Commit {
|
|
|
93
93
|
});
|
|
94
94
|
const processedDiff = diffProcessor.processDiffs(diffStringArray);
|
|
95
95
|
processedDiffString = diffProcessor.formatForContext(processedDiff);
|
|
96
|
-
console.log(
|
|
96
|
+
console.log(`Processed diff statistics:`);
|
|
97
97
|
console.log(` Full diffs: ${processedDiff.fullDiffs.length} files`);
|
|
98
98
|
console.log(` Summarized: ${processedDiff.summarizedDiffs.length} files`);
|
|
99
99
|
console.log(` Metadata only: ${processedDiff.metadataOnly.length} files`);
|
|
100
100
|
console.log(` Final tokens: ${processedDiff.totalTokens.toLocaleString()}`);
|
|
101
101
|
if (estimatedTokens > 50000) {
|
|
102
|
-
console.log(
|
|
102
|
+
console.log(`DiffProcessor reduced token usage: ${estimatedTokens.toLocaleString()} -> ${processedDiff.totalTokens.toLocaleString()}`);
|
|
103
103
|
}
|
|
104
104
|
// Validate total tokens won't exceed limit
|
|
105
105
|
const totalEstimatedTokens = processedDiff.totalTokens
|
|
106
106
|
+ TOKEN_BUDGET.SMARTAGENT_OVERHEAD
|
|
107
107
|
+ TOKEN_BUDGET.TASK_PROMPT_OVERHEAD;
|
|
108
108
|
if (totalEstimatedTokens > TOKEN_BUDGET.OPENAI_CONTEXT_LIMIT - TOKEN_BUDGET.SAFETY_MARGIN) {
|
|
109
|
-
console.log(
|
|
109
|
+
console.log(`Warning: Estimated tokens (${totalEstimatedTokens.toLocaleString()}) approaching limit`);
|
|
110
110
|
console.log(` Consider splitting into smaller commits`);
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
113
|
else {
|
|
114
114
|
processedDiffString = 'No changes.';
|
|
115
115
|
}
|
|
116
|
-
// Use
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
-
|
|
127
|
-
-
|
|
128
|
-
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
- Writing, deleting, or modifying any files
|
|
133
|
-
- Any destructive operations
|
|
134
|
-
|
|
135
|
-
APPROVE final output if:
|
|
136
|
-
- Version level (fix/feat/BREAKING CHANGE) matches the scope of changes in the diff
|
|
137
|
-
- Commit message is clear, professional, and follows conventional commit conventions
|
|
138
|
-
- No personal information, licensing details, or AI mentions (Claude/Codex) included
|
|
139
|
-
- JSON structure is valid with all required fields
|
|
140
|
-
- Scope accurately reflects the changed modules/files
|
|
141
|
-
|
|
142
|
-
REJECT final output if:
|
|
143
|
-
- Version level doesn't match the scope of changes (e.g., "feat" for a typo fix should be "fix")
|
|
144
|
-
- Message is vague, unprofessional, or contains sensitive information
|
|
145
|
-
- JSON is malformed or missing required fields
|
|
146
|
-
`,
|
|
147
|
-
});
|
|
148
|
-
// Register scoped filesystem tool for agent exploration
|
|
149
|
-
commitOrchestrator.registerScopedFilesystemTool(this.projectDir, [
|
|
150
|
-
'.nogit/**',
|
|
151
|
-
'node_modules/**',
|
|
152
|
-
'.git/**',
|
|
153
|
-
'dist/**',
|
|
154
|
-
'dist_*/**',
|
|
155
|
-
]);
|
|
156
|
-
await commitOrchestrator.start();
|
|
116
|
+
// Use runAgent for commit message generation with filesystem tool
|
|
117
|
+
const fsTools = plugins.smartagentTools.filesystemTool({ rootDir: this.projectDir });
|
|
118
|
+
const commitSystemPrompt = `
|
|
119
|
+
You create commit messages for git commits following semantic versioning conventions.
|
|
120
|
+
|
|
121
|
+
You have access to filesystem tools to explore the project if needed.
|
|
122
|
+
|
|
123
|
+
IMPORTANT RULES:
|
|
124
|
+
- Only READ files (package.json, source files) for context
|
|
125
|
+
- Do NOT write, delete, or modify any files
|
|
126
|
+
- Version level (fix/feat/BREAKING CHANGE) must match the scope of changes
|
|
127
|
+
- Commit message must be clear, professional, and follow conventional commit conventions
|
|
128
|
+
- Do NOT include personal information, licensing details, or AI mentions (Claude/Codex)
|
|
129
|
+
- JSON structure must be valid with all required fields
|
|
130
|
+
- Scope must accurately reflect the changed modules/files
|
|
131
|
+
`;
|
|
157
132
|
const commitTaskPrompt = `
|
|
158
|
-
You create a commit message for a git commit.
|
|
159
133
|
Project directory: ${this.projectDir}
|
|
160
134
|
|
|
161
|
-
You have access to
|
|
162
|
-
- Use
|
|
163
|
-
- Use
|
|
135
|
+
You have access to filesystem tools to explore the project if needed:
|
|
136
|
+
- Use list_directory to see project structure
|
|
137
|
+
- Use read_file to read package.json or source files for context
|
|
164
138
|
|
|
165
139
|
Analyze the git diff below to understand what changed and generate a commit message.
|
|
166
140
|
|
|
167
141
|
You should not include any licensing information or personal information.
|
|
168
142
|
Never mention CLAUDE code, or codex.
|
|
169
143
|
|
|
170
|
-
Your final
|
|
144
|
+
Your final response must be ONLY valid JSON - the raw JSON object, nothing else.
|
|
171
145
|
No explanations, no summaries, no markdown - just the JSON object that can be parsed with JSON.parse().
|
|
172
146
|
|
|
173
147
|
Here is the structure of the JSON you must return:
|
|
@@ -188,13 +162,17 @@ ${processedDiffString}
|
|
|
188
162
|
|
|
189
163
|
Analyze these changes and output the JSON commit message object.
|
|
190
164
|
`;
|
|
191
|
-
|
|
192
|
-
await
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
165
|
+
logger.log('info', 'Starting commit message generation with agent...');
|
|
166
|
+
const commitResult = await plugins.smartagent.runAgent({
|
|
167
|
+
model: this.aiDocsRef.model,
|
|
168
|
+
prompt: commitTaskPrompt,
|
|
169
|
+
system: commitSystemPrompt,
|
|
170
|
+
tools: fsTools,
|
|
171
|
+
maxSteps: 10,
|
|
172
|
+
onToolCall: (toolName) => logger.log('info', `[Commit] Tool call: ${toolName}`),
|
|
173
|
+
});
|
|
196
174
|
// Extract JSON from result - handle cases where AI adds text around it
|
|
197
|
-
let jsonString = commitResult.
|
|
175
|
+
let jsonString = commitResult.text
|
|
198
176
|
.replace(/```json\n?/gi, '')
|
|
199
177
|
.replace(/```\n?/gi, '');
|
|
200
178
|
// Try to find JSON object in the result
|
|
@@ -213,29 +191,16 @@ Analyze these changes and output the JSON commit message object.
|
|
|
213
191
|
// lets build the changelog based on that
|
|
214
192
|
const commitMessages = await gitRepo.getAllCommitMessages();
|
|
215
193
|
console.log(JSON.stringify(commitMessages, null, 2));
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
smartAiInstance: this.aiDocsRef.smartAiInstance,
|
|
219
|
-
defaultProvider: 'openai',
|
|
220
|
-
logPrefix: '[Changelog]',
|
|
221
|
-
onProgress: (event) => logger.log(event.logLevel, event.logMessage),
|
|
222
|
-
guardianPolicyPrompt: `
|
|
223
|
-
You validate changelog generation.
|
|
194
|
+
const changelogSystemPrompt = `
|
|
195
|
+
You generate changelog.md files for software projects.
|
|
224
196
|
|
|
225
|
-
|
|
226
|
-
- Changelog
|
|
227
|
-
- Entries
|
|
228
|
-
- Version ranges for trivial commits
|
|
197
|
+
RULES:
|
|
198
|
+
- Changelog must follow proper markdown format with ## headers for each version
|
|
199
|
+
- Entries must be chronologically ordered (newest first)
|
|
200
|
+
- Version ranges for trivial commits should be properly summarized
|
|
229
201
|
- No duplicate or empty entries
|
|
230
|
-
- Format
|
|
231
|
-
|
|
232
|
-
REJECT with feedback if:
|
|
233
|
-
- Markdown formatting is incorrect
|
|
234
|
-
- Entries are not meaningful or helpful
|
|
235
|
-
- Dates or versions are malformed
|
|
236
|
-
`,
|
|
237
|
-
});
|
|
238
|
-
await changelogOrchestrator.start();
|
|
202
|
+
- Format: ## yyyy-mm-dd - x.x.x - scope
|
|
203
|
+
`;
|
|
239
204
|
const changelogTaskPrompt = `
|
|
240
205
|
You are building a changelog.md file for the project.
|
|
241
206
|
Omit commits and versions that lack relevant changes, but make sure to mention them as a range with a summarizing message instead.
|
|
@@ -243,7 +208,7 @@ Omit commits and versions that lack relevant changes, but make sure to mention t
|
|
|
243
208
|
A changelog entry should look like this:
|
|
244
209
|
|
|
245
210
|
## yyyy-mm-dd - x.x.x - scope here
|
|
246
|
-
main
|
|
211
|
+
main description here
|
|
247
212
|
|
|
248
213
|
- detailed bullet points follow
|
|
249
214
|
|
|
@@ -256,12 +221,14 @@ Here are the commit messages:
|
|
|
256
221
|
|
|
257
222
|
${JSON.stringify(commitMessages, null, 2)}
|
|
258
223
|
`;
|
|
259
|
-
const changelogResult = await
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
224
|
+
const changelogResult = await plugins.smartagent.runAgent({
|
|
225
|
+
model: this.aiDocsRef.model,
|
|
226
|
+
prompt: changelogTaskPrompt,
|
|
227
|
+
system: changelogSystemPrompt,
|
|
228
|
+
maxSteps: 1,
|
|
229
|
+
onToolCall: (toolName) => logger.log('info', `[Changelog] Tool call: ${toolName}`),
|
|
230
|
+
});
|
|
231
|
+
previousChangelog = plugins.smartfileFactory.fromString(previousChangelogPath, changelogResult.text.replaceAll('```markdown', '').replaceAll('```', ''), 'utf8');
|
|
265
232
|
}
|
|
266
233
|
let oldChangelog = previousChangelog.contents.toString().replace('# Changelog\n\n', '');
|
|
267
234
|
if (oldChangelog.startsWith('\n')) {
|
|
@@ -276,4 +243,4 @@ ${JSON.stringify(commitMessages, null, 2)}
|
|
|
276
243
|
return resultObject;
|
|
277
244
|
}
|
|
278
245
|
}
|
|
279
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvYWlkb2NzX2NsYXNzZXMvY29tbWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsbURBQW1EO0FBQ25ELE1BQU0sWUFBWSxHQUFHO0lBQ25CLG9CQUFvQixFQUFFLE1BQU0sRUFBSSw0QkFBNEI7SUFDNUQsYUFBYSxFQUFFLEtBQUssRUFBYSxzQ0FBc0M7SUFDdkUsbUJBQW1CLEVBQUUsTUFBTSxFQUFNLDBDQUEwQztJQUMzRSxvQkFBb0IsRUFBRSxJQUFJLEVBQU8sNEJBQTRCO0NBQ3JELENBQUM7QUFFWDs7R0FFRztBQUNILFNBQVMsc0JBQXNCO0lBQzdCLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxvQkFBb0I7VUFDL0MsWUFBWSxDQUFDLGFBQWE7VUFDMUIsWUFBWSxDQUFDLG1CQUFtQjtVQUNoQyxZQUFZLENBQUMsb0JBQW9CLENBQUM7SUFDdEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBV0QsTUFBTSxPQUFPLE1BQU07SUFJakIsWUFBWSxTQUFnQixFQUFFLGFBQXFCO1FBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxLQUFLLENBQUMscUJBQXFCO1FBQ2hDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxPQUFPLENB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
|
|
@@ -7,50 +7,27 @@ export class Description {
|
|
|
7
7
|
this.projectDir = projectDirArg;
|
|
8
8
|
}
|
|
9
9
|
async build() {
|
|
10
|
-
// Use
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
maxIterations: 15,
|
|
15
|
-
maxResultChars: 10000, // Limit tool output to prevent token explosion
|
|
16
|
-
maxHistoryMessages: 15, // Limit history window
|
|
17
|
-
logPrefix: '[Description]',
|
|
18
|
-
onProgress: (event) => logger.log(event.logLevel, event.logMessage),
|
|
19
|
-
guardianPolicyPrompt: `
|
|
20
|
-
You validate description generation tool calls and outputs.
|
|
10
|
+
// Use runAgent with filesystem tool for agent-driven exploration
|
|
11
|
+
const fsTools = plugins.smartagentTools.filesystemTool({ rootDir: this.projectDir });
|
|
12
|
+
const descriptionSystemPrompt = `
|
|
13
|
+
You create project descriptions and keywords for npm packages.
|
|
21
14
|
|
|
22
|
-
|
|
23
|
-
- Reading package.json, npmextra.json, or source files in the ts/ directory
|
|
24
|
-
- Listing directory contents to understand project structure
|
|
25
|
-
- Using tree to see project structure
|
|
15
|
+
You have access to filesystem tools to explore the project.
|
|
26
16
|
|
|
27
|
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
- Both description and keywords fields are present
|
|
37
|
-
|
|
38
|
-
REJECT final output if:
|
|
39
|
-
- JSON is malformed or wrapped in markdown code blocks
|
|
40
|
-
- Description is too long or vague
|
|
41
|
-
- Keywords are irrelevant or generic
|
|
42
|
-
`,
|
|
43
|
-
});
|
|
44
|
-
// Register scoped filesystem tool for agent exploration
|
|
45
|
-
descriptionOrchestrator.registerScopedFilesystemTool(this.projectDir);
|
|
46
|
-
await descriptionOrchestrator.start();
|
|
17
|
+
IMPORTANT RULES:
|
|
18
|
+
- Only READ files (package.json, npmextra.json, source files in ts/)
|
|
19
|
+
- Do NOT write, delete, or modify any files
|
|
20
|
+
- Your final response must be valid JSON only
|
|
21
|
+
- Description must be a clear, concise one-sentence summary
|
|
22
|
+
- Keywords must be relevant to the project's use cases
|
|
23
|
+
- Both description and keywords fields must be present
|
|
24
|
+
- Do NOT wrap JSON in markdown code blocks
|
|
25
|
+
`;
|
|
47
26
|
const descriptionTaskPrompt = `
|
|
48
|
-
You create a project description and keywords for an npm package.
|
|
49
|
-
|
|
50
27
|
PROJECT DIRECTORY: ${this.projectDir}
|
|
51
28
|
|
|
52
|
-
Use the filesystem
|
|
53
|
-
1. First, use
|
|
29
|
+
Use the filesystem tools to explore the project and understand what it does:
|
|
30
|
+
1. First, use list_directory to see the project structure
|
|
54
31
|
2. Read package.json to understand the package name and current description
|
|
55
32
|
3. Read npmextra.json if it exists for additional metadata
|
|
56
33
|
4. Read key source files in ts/ directory to understand the implementation
|
|
@@ -67,23 +44,27 @@ Important: Answer only in valid JSON.
|
|
|
67
44
|
Your answer should be parseable with JSON.parse() without modifying anything.
|
|
68
45
|
Don't wrap the JSON in \`\`\`json\`\`\` - just return the raw JSON object.
|
|
69
46
|
`;
|
|
70
|
-
|
|
71
|
-
await
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
47
|
+
logger.log('info', 'Starting description generation with agent...');
|
|
48
|
+
const descriptionResult = await plugins.smartagent.runAgent({
|
|
49
|
+
model: this.aiDocsRef.model,
|
|
50
|
+
prompt: descriptionTaskPrompt,
|
|
51
|
+
system: descriptionSystemPrompt,
|
|
52
|
+
tools: fsTools,
|
|
53
|
+
maxSteps: 15,
|
|
54
|
+
onToolCall: (toolName) => logger.log('info', `[Description] Tool call: ${toolName}`),
|
|
55
|
+
});
|
|
56
|
+
console.log(descriptionResult.text);
|
|
57
|
+
const resultObject = JSON.parse(descriptionResult.text.replace('```json', '').replace('```', ''));
|
|
77
58
|
// Use ProjectContext to get file handles for writing
|
|
78
59
|
const projectContext = new ProjectContext(this.projectDir);
|
|
79
60
|
const files = await projectContext.gatherFiles();
|
|
80
|
-
// Update
|
|
81
|
-
const
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
await
|
|
61
|
+
// Update smartconfig.json
|
|
62
|
+
const smartconfigJson = files.smartfilesNpmextraJSON;
|
|
63
|
+
const smartconfigJsonContent = JSON.parse(smartconfigJson.contents.toString());
|
|
64
|
+
smartconfigJsonContent['@git.zone/cli'].module.description = resultObject.description;
|
|
65
|
+
smartconfigJsonContent['@git.zone/cli'].module.keywords = resultObject.keywords;
|
|
66
|
+
smartconfigJson.contents = Buffer.from(JSON.stringify(smartconfigJsonContent, null, 2));
|
|
67
|
+
await smartconfigJson.write();
|
|
87
68
|
// Update package.json
|
|
88
69
|
const packageJson = files.smartfilePackageJSON;
|
|
89
70
|
const packageJsonContent = JSON.parse(packageJson.contents.toString());
|
|
@@ -94,7 +75,7 @@ Don't wrap the JSON in \`\`\`json\`\`\` - just return the raw JSON object.
|
|
|
94
75
|
console.log(`\n======================\n`);
|
|
95
76
|
console.log(JSON.stringify(resultObject, null, 2));
|
|
96
77
|
console.log(`\n======================\n`);
|
|
97
|
-
return descriptionResult.
|
|
78
|
+
return descriptionResult.text;
|
|
98
79
|
}
|
|
99
80
|
}
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9haWRvY3NfY2xhc3Nlcy9kZXNjcmlwdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU92QyxNQUFNLE9BQU8sV0FBVztJQUt0QixZQUFZLFNBQWdCLEVBQUUsYUFBcUI7UUFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7SUFDbEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLGlFQUFpRTtRQUNqRSxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUVyRixNQUFNLHVCQUF1QixHQUFHOzs7Ozs7Ozs7Ozs7O0NBYW5DLENBQUM7UUFFRSxNQUFNLHFCQUFxQixHQUFHO3FCQUNiLElBQUksQ0FBQyxVQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBbUJuQyxDQUFDO1FBRUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsK0NBQStDLENBQUMsQ0FBQztRQUVwRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDMUQsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSztZQUMzQixNQUFNLEVBQUUscUJBQXFCO1lBQzdCLE1BQU0sRUFBRSx1QkFBdUI7WUFDL0IsS0FBSyxFQUFFLE9BQU87WUFDZCxRQUFRLEVBQUUsRUFBRTtZQUNaLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsNEJBQTRCLFFBQVEsRUFBRSxDQUFDO1NBQ3JGLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsTUFBTSxZQUFZLEdBQTBCLElBQUksQ0FBQyxLQUFLLENBQ3BELGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQ2pFLENBQUM7UUFFRixxREFBcUQ7UUFDckQsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNELE1BQU0sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpELDBCQUEwQjtRQUMxQixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsc0JBQXNCLENBQUM7UUFDckQsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUUvRSxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUM7UUFDdEYsc0JBQXNCLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBRWhGLGVBQWUsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTlCLHNCQUFzQjtRQUN0QixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsb0JBQW9CLENBQUM7UUFDL0MsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN2RSxrQkFBa0IsQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQztRQUMxRCxrQkFBa0IsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUNwRCxXQUFXLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRixNQUFNLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUxQixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDMUMsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztDQUNGIn0=
|
|
@@ -10,7 +10,7 @@ export class ProjectContext {
|
|
|
10
10
|
const smartfilePackageJSON = await plugins.smartfileFactory.fromFilePath(plugins.path.join(this.projectDir, 'package.json'), this.projectDir);
|
|
11
11
|
const smartfilesReadme = await plugins.smartfileFactory.fromFilePath(plugins.path.join(this.projectDir, 'readme.md'), this.projectDir);
|
|
12
12
|
const smartfilesReadmeHints = await plugins.smartfileFactory.fromFilePath(plugins.path.join(this.projectDir, 'readme.hints.md'), this.projectDir);
|
|
13
|
-
const smartfilesNpmextraJSON = await plugins.smartfileFactory.fromFilePath(plugins.path.join(this.projectDir, '
|
|
13
|
+
const smartfilesNpmextraJSON = await plugins.smartfileFactory.fromFilePath(plugins.path.join(this.projectDir, 'smartconfig.json'), this.projectDir);
|
|
14
14
|
const smartfilesMod = await plugins.smartfileFactory.virtualDirectoryFromPath(this.projectDir).then(vd => vd.filter(f => f.relative.startsWith('ts') && f.relative.endsWith('.ts')).listFiles());
|
|
15
15
|
const smartfilesTest = await plugins.smartfileFactory.virtualDirectoryFromPath(this.projectDir).then(vd => vd.filter(f => f.relative.startsWith('test/') && f.relative.endsWith('.ts')).listFiles());
|
|
16
16
|
return {
|
|
@@ -86,4 +86,4 @@ ${smartfile.contents.toString()}
|
|
|
86
86
|
return result;
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdGNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9haWRvY3NfY2xhc3Nlcy9wcm9qZWN0Y29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxNQUFNLE9BQU8sY0FBYztJQUNsQixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFjLElBQUcsQ0FBQztJQU85QyxZQUFZLGFBQXFCO1FBSHpCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFHakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7SUFDbEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXO1FBQ3RCLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUN0RSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxFQUNsRCxJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO1FBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQ2xFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLEVBQy9DLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7UUFFRixNQUFNLHFCQUFxQixHQUFHLE1BQU0sT0FBTyxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FDdkUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxFQUNyRCxJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO1FBQ0YsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQ3hFLE9B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
|