cmp-standards 3.4.3 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/db/migrations.d.ts +1 -1
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +56 -0
- package/dist/db/migrations.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/schema/ecosystem-types.d.ts +372 -0
- package/dist/schema/ecosystem-types.d.ts.map +1 -0
- package/dist/schema/ecosystem-types.js +157 -0
- package/dist/schema/ecosystem-types.js.map +1 -0
- package/dist/services/DocsGenerator.d.ts +3 -1
- package/dist/services/DocsGenerator.d.ts.map +1 -1
- package/dist/services/DocsGenerator.js +15 -1
- package/dist/services/DocsGenerator.js.map +1 -1
- package/dist/services/EcosystemStatsService.d.ts +64 -0
- package/dist/services/EcosystemStatsService.d.ts.map +1 -0
- package/dist/services/EcosystemStatsService.js +318 -0
- package/dist/services/EcosystemStatsService.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file EcosystemStatsService - cmp-standards v3.5
|
|
3
|
+
* @description Aggregates statistics across all projects for the landing page
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Queries all project_doc items from Turso
|
|
7
|
+
* - Aggregates totals (LOC, files, symbols, features)
|
|
8
|
+
* - Calculates language breakdown across ecosystem
|
|
9
|
+
* - Detects AI integrations and frameworks
|
|
10
|
+
* - Stores aggregated stats as ecosystem_stats item
|
|
11
|
+
*
|
|
12
|
+
* Integration:
|
|
13
|
+
* - Called by DocsGenerator after generating/updating a project_doc
|
|
14
|
+
* - Provides data for /api/ecosystem/stats endpoint
|
|
15
|
+
* - Auto-regenerates when any project_doc changes
|
|
16
|
+
*/
|
|
17
|
+
import { turso, getTurso, create } from '../db/turso-client.js';
|
|
18
|
+
import { getLogger } from '../utils/logger.js';
|
|
19
|
+
import { createEmptyEcosystemStats, createPublicProjectSummary, } from '../schema/ecosystem-types.js';
|
|
20
|
+
const logger = getLogger();
|
|
21
|
+
// AI-related feature IDs to detect AI integrations
|
|
22
|
+
const AI_FEATURE_IDS = [
|
|
23
|
+
'ai-integration',
|
|
24
|
+
'claude-integration',
|
|
25
|
+
'openai',
|
|
26
|
+
'llm',
|
|
27
|
+
'embeddings',
|
|
28
|
+
'vector-search',
|
|
29
|
+
'semantic-search',
|
|
30
|
+
'machine-learning',
|
|
31
|
+
'ml',
|
|
32
|
+
'ai',
|
|
33
|
+
];
|
|
34
|
+
// =============================================================================
|
|
35
|
+
// EcosystemStatsService
|
|
36
|
+
// =============================================================================
|
|
37
|
+
export class EcosystemStatsService {
|
|
38
|
+
ecosystemSystem;
|
|
39
|
+
constructor(options = {}) {
|
|
40
|
+
this.ecosystemSystem = options.ecosystemSystem ?? 'ECOSYSTEM';
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Regenerate ecosystem stats from all project_docs
|
|
44
|
+
*/
|
|
45
|
+
async regenerate() {
|
|
46
|
+
const errors = [];
|
|
47
|
+
logger.info('[EcosystemStats] Starting regeneration');
|
|
48
|
+
try {
|
|
49
|
+
// Fetch all project_docs
|
|
50
|
+
const projectDocs = await this.getAllProjectDocs();
|
|
51
|
+
logger.info(`[EcosystemStats] Found ${projectDocs.length} project docs`);
|
|
52
|
+
if (projectDocs.length === 0) {
|
|
53
|
+
const emptyStats = createEmptyEcosystemStats();
|
|
54
|
+
return {
|
|
55
|
+
stats: emptyStats,
|
|
56
|
+
projectCount: 0,
|
|
57
|
+
stored: false,
|
|
58
|
+
errors: ['No project docs found'],
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// Aggregate stats
|
|
62
|
+
const stats = this.aggregateStats(projectDocs);
|
|
63
|
+
// Store stats
|
|
64
|
+
let stored = false;
|
|
65
|
+
try {
|
|
66
|
+
await this.storeStats(stats);
|
|
67
|
+
stored = true;
|
|
68
|
+
logger.info('[EcosystemStats] Stats stored successfully');
|
|
69
|
+
}
|
|
70
|
+
catch (storeError) {
|
|
71
|
+
const msg = storeError instanceof Error ? storeError.message : String(storeError);
|
|
72
|
+
errors.push(`Failed to store stats: ${msg}`);
|
|
73
|
+
logger.error(`[EcosystemStats] Store error: ${msg}`);
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
stats,
|
|
77
|
+
projectCount: projectDocs.length,
|
|
78
|
+
stored,
|
|
79
|
+
errors,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
84
|
+
errors.push(`Regeneration failed: ${msg}`);
|
|
85
|
+
logger.error(`[EcosystemStats] Regeneration error: ${msg}`);
|
|
86
|
+
return {
|
|
87
|
+
stats: createEmptyEcosystemStats(),
|
|
88
|
+
projectCount: 0,
|
|
89
|
+
stored: false,
|
|
90
|
+
errors,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get current ecosystem stats
|
|
96
|
+
*/
|
|
97
|
+
async getStats() {
|
|
98
|
+
try {
|
|
99
|
+
getTurso();
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
try {
|
|
105
|
+
const items = await turso.query({
|
|
106
|
+
system: this.ecosystemSystem,
|
|
107
|
+
type: 'ecosystem_stats',
|
|
108
|
+
limit: 1,
|
|
109
|
+
orderBy: 'updated_at',
|
|
110
|
+
orderDir: 'DESC',
|
|
111
|
+
});
|
|
112
|
+
if (items.length === 0)
|
|
113
|
+
return null;
|
|
114
|
+
const item = items[0];
|
|
115
|
+
return item.content;
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
logger.error(`[EcosystemStats] Failed to get stats: ${error}`);
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Get all featured projects with public-safe summaries
|
|
124
|
+
*/
|
|
125
|
+
async getFeaturedProjects() {
|
|
126
|
+
const projectDocs = await this.getAllProjectDocs();
|
|
127
|
+
// Filter to active projects and sort by LOC
|
|
128
|
+
// Valid statuses: 'active', 'beta', 'stable', 'deprecated', 'internal'
|
|
129
|
+
const activeProjects = projectDocs
|
|
130
|
+
.filter(p => p.content.status === 'active' || p.content.status === 'beta' || p.content.status === 'stable')
|
|
131
|
+
.sort((a, b) => (b.content.stats?.totalLOC ?? 0) - (a.content.stats?.totalLOC ?? 0));
|
|
132
|
+
// Convert to public summaries
|
|
133
|
+
return activeProjects.map(p => {
|
|
134
|
+
const doc = p.content;
|
|
135
|
+
return createPublicProjectSummary(p.system, doc.name, {
|
|
136
|
+
category: doc.category,
|
|
137
|
+
status: doc.status,
|
|
138
|
+
description: doc.description,
|
|
139
|
+
stats: {
|
|
140
|
+
totalLOC: doc.stats?.totalLOC ?? 0,
|
|
141
|
+
totalFiles: doc.stats?.totalFiles ?? 0,
|
|
142
|
+
totalSymbols: doc.stats?.totalSymbols ?? 0,
|
|
143
|
+
components: doc.stats?.components ?? 0,
|
|
144
|
+
tests: doc.stats?.tests ?? 0,
|
|
145
|
+
languages: doc.stats?.languages,
|
|
146
|
+
frameworks: doc.stats?.frameworks,
|
|
147
|
+
},
|
|
148
|
+
features: doc.features?.map(f => ({
|
|
149
|
+
id: f.id,
|
|
150
|
+
name: f.name,
|
|
151
|
+
category: f.category,
|
|
152
|
+
description: f.description,
|
|
153
|
+
})),
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
// ===========================================================================
|
|
158
|
+
// Private Methods
|
|
159
|
+
// ===========================================================================
|
|
160
|
+
async getAllProjectDocs() {
|
|
161
|
+
try {
|
|
162
|
+
getTurso();
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
return [];
|
|
166
|
+
}
|
|
167
|
+
try {
|
|
168
|
+
// Query all project_docs across all systems
|
|
169
|
+
const db = getTurso();
|
|
170
|
+
const result = await db.execute({
|
|
171
|
+
sql: `SELECT system, content FROM items WHERE type = 'project_doc' ORDER BY updated_at DESC`,
|
|
172
|
+
args: [],
|
|
173
|
+
});
|
|
174
|
+
return result.rows.map(row => ({
|
|
175
|
+
system: row.system,
|
|
176
|
+
content: JSON.parse(row.content),
|
|
177
|
+
}));
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
logger.error(`[EcosystemStats] Failed to get project docs: ${error}`);
|
|
181
|
+
return [];
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
aggregateStats(projectDocs) {
|
|
185
|
+
const stats = createEmptyEcosystemStats();
|
|
186
|
+
// Language breakdown accumulator
|
|
187
|
+
const languageTotals = new Map();
|
|
188
|
+
// Features accumulator
|
|
189
|
+
const featureCounts = new Map();
|
|
190
|
+
const featuresByCategory = new Map();
|
|
191
|
+
// Framework accumulator (framework -> project count)
|
|
192
|
+
const frameworkProjects = new Map();
|
|
193
|
+
// Technology usage (package name -> count)
|
|
194
|
+
const technologyUsage = new Map();
|
|
195
|
+
// AI integrations count
|
|
196
|
+
let aiIntegrations = 0;
|
|
197
|
+
// Process each project
|
|
198
|
+
for (const { system, content } of projectDocs) {
|
|
199
|
+
stats.totalProjects++;
|
|
200
|
+
stats.projectsIncluded.push(system);
|
|
201
|
+
const projectStats = content.stats;
|
|
202
|
+
if (!projectStats)
|
|
203
|
+
continue;
|
|
204
|
+
// Accumulate totals
|
|
205
|
+
stats.totalLOC += projectStats.totalLOC ?? 0;
|
|
206
|
+
stats.totalFiles += projectStats.totalFiles ?? 0;
|
|
207
|
+
stats.totalSymbols += projectStats.totalSymbols ?? 0;
|
|
208
|
+
stats.totalComponents += projectStats.components ?? 0;
|
|
209
|
+
stats.totalTests += projectStats.tests ?? 0;
|
|
210
|
+
// Accumulate languages
|
|
211
|
+
if (projectStats.languages) {
|
|
212
|
+
for (const [lang, loc] of Object.entries(projectStats.languages)) {
|
|
213
|
+
languageTotals.set(lang, (languageTotals.get(lang) ?? 0) + loc);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Accumulate frameworks
|
|
217
|
+
if (projectStats.frameworks) {
|
|
218
|
+
for (const framework of projectStats.frameworks) {
|
|
219
|
+
frameworkProjects.set(framework, (frameworkProjects.get(framework) ?? 0) + 1);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// Accumulate top packages as technologies
|
|
223
|
+
if (projectStats.topPackages) {
|
|
224
|
+
for (const pkg of projectStats.topPackages) {
|
|
225
|
+
technologyUsage.set(pkg.name, (technologyUsage.get(pkg.name) ?? 0) + pkg.usageCount);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
// Process features
|
|
229
|
+
const features = content.features ?? [];
|
|
230
|
+
for (const feature of features) {
|
|
231
|
+
featureCounts.set(feature.id, (featureCounts.get(feature.id) ?? 0) + 1);
|
|
232
|
+
featuresByCategory.set(feature.category, (featuresByCategory.get(feature.category) ?? 0) + 1);
|
|
233
|
+
// Check for AI integrations
|
|
234
|
+
if (AI_FEATURE_IDS.some(ai => feature.id.toLowerCase().includes(ai))) {
|
|
235
|
+
aiIntegrations++;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
// Build final stats object
|
|
240
|
+
stats.languageBreakdown = Object.fromEntries(languageTotals);
|
|
241
|
+
stats.uniqueFeatures = featureCounts.size;
|
|
242
|
+
stats.featuresByCategory = Object.fromEntries(featuresByCategory);
|
|
243
|
+
stats.frameworksUsed = Array.from(frameworkProjects.keys());
|
|
244
|
+
stats.aiIntegrations = aiIntegrations;
|
|
245
|
+
stats.generatedAt = new Date().toISOString();
|
|
246
|
+
// Top technologies by project count
|
|
247
|
+
stats.topTechnologies = Array.from(frameworkProjects.entries())
|
|
248
|
+
.map(([name, projectCount]) => ({
|
|
249
|
+
name,
|
|
250
|
+
projectCount,
|
|
251
|
+
totalUsages: technologyUsage.get(name),
|
|
252
|
+
}))
|
|
253
|
+
.sort((a, b) => b.projectCount - a.projectCount)
|
|
254
|
+
.slice(0, 15);
|
|
255
|
+
return stats;
|
|
256
|
+
}
|
|
257
|
+
async storeStats(stats) {
|
|
258
|
+
getTurso();
|
|
259
|
+
// Check for existing stats
|
|
260
|
+
try {
|
|
261
|
+
const db = getTurso();
|
|
262
|
+
const existing = await db.execute({
|
|
263
|
+
sql: `SELECT id FROM items WHERE system = ? AND type = 'ecosystem_stats' LIMIT 1`,
|
|
264
|
+
args: [this.ecosystemSystem],
|
|
265
|
+
});
|
|
266
|
+
if (existing.rows.length > 0) {
|
|
267
|
+
// Update existing
|
|
268
|
+
const id = existing.rows[0].id;
|
|
269
|
+
await db.execute({
|
|
270
|
+
sql: `UPDATE items SET content = ?, updated_at = ? WHERE id = ?`,
|
|
271
|
+
args: [JSON.stringify(stats), new Date().toISOString(), id],
|
|
272
|
+
});
|
|
273
|
+
logger.info(`[EcosystemStats] Updated existing stats ${id}`);
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
catch (queryErr) {
|
|
278
|
+
logger.warn(`[EcosystemStats] Query for existing stats failed: ${queryErr}`);
|
|
279
|
+
}
|
|
280
|
+
// Create new stats
|
|
281
|
+
try {
|
|
282
|
+
const id = await create('ecosystem_stats', this.ecosystemSystem, stats, 'active');
|
|
283
|
+
logger.info(`[EcosystemStats] Created new stats ${id}`);
|
|
284
|
+
}
|
|
285
|
+
catch (createErr) {
|
|
286
|
+
const errMsg = createErr instanceof Error ? createErr.message : String(createErr);
|
|
287
|
+
logger.error(`[EcosystemStats] Create failed: ${errMsg}`);
|
|
288
|
+
throw createErr;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
// =============================================================================
|
|
293
|
+
// Singleton Management
|
|
294
|
+
// =============================================================================
|
|
295
|
+
let instance = null;
|
|
296
|
+
/**
|
|
297
|
+
* Get EcosystemStatsService singleton
|
|
298
|
+
*/
|
|
299
|
+
export function getEcosystemStatsService(options) {
|
|
300
|
+
if (!instance) {
|
|
301
|
+
instance = new EcosystemStatsService(options);
|
|
302
|
+
}
|
|
303
|
+
return instance;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Create new EcosystemStatsService instance
|
|
307
|
+
*/
|
|
308
|
+
export function createEcosystemStatsService(options) {
|
|
309
|
+
return new EcosystemStatsService(options);
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Reset singleton (for testing)
|
|
313
|
+
*/
|
|
314
|
+
export function resetEcosystemStatsService() {
|
|
315
|
+
instance = null;
|
|
316
|
+
}
|
|
317
|
+
export default EcosystemStatsService;
|
|
318
|
+
//# sourceMappingURL=EcosystemStatsService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EcosystemStatsService.js","sourceRoot":"","sources":["../../src/services/EcosystemStatsService.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED