@skillsmith/core 0.2.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +233 -2
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/analysis/__tests__/incremental.test.d.ts +13 -0
- package/dist/src/analysis/__tests__/incremental.test.d.ts.map +1 -0
- package/dist/src/analysis/__tests__/incremental.test.js +515 -0
- package/dist/src/analysis/__tests__/incremental.test.js.map +1 -0
- package/dist/src/analysis/__tests__/integration.test.d.ts +14 -0
- package/dist/src/analysis/__tests__/integration.test.d.ts.map +1 -0
- package/dist/src/analysis/__tests__/integration.test.js +1059 -0
- package/dist/src/analysis/__tests__/integration.test.js.map +1 -0
- package/dist/src/analysis/__tests__/metrics.test.d.ts +9 -0
- package/dist/src/analysis/__tests__/metrics.test.d.ts.map +1 -0
- package/dist/src/analysis/__tests__/metrics.test.js +369 -0
- package/dist/src/analysis/__tests__/metrics.test.js.map +1 -0
- package/dist/src/analysis/__tests__/performance.test.d.ts +15 -0
- package/dist/src/analysis/__tests__/performance.test.d.ts.map +1 -0
- package/dist/src/analysis/__tests__/performance.test.js +402 -0
- package/dist/src/analysis/__tests__/performance.test.js.map +1 -0
- package/dist/src/analysis/adapters/__tests__/go.test.d.ts +12 -0
- package/dist/src/analysis/adapters/__tests__/go.test.d.ts.map +1 -0
- package/dist/src/analysis/adapters/__tests__/go.test.js +561 -0
- package/dist/src/analysis/adapters/__tests__/go.test.js.map +1 -0
- package/dist/src/analysis/adapters/__tests__/python.test.d.ts +11 -0
- package/dist/src/analysis/adapters/__tests__/python.test.d.ts.map +1 -0
- package/dist/src/analysis/adapters/__tests__/python.test.js +669 -0
- package/dist/src/analysis/adapters/__tests__/python.test.js.map +1 -0
- package/dist/src/analysis/adapters/__tests__/rust.test.d.ts +12 -0
- package/dist/src/analysis/adapters/__tests__/rust.test.d.ts.map +1 -0
- package/dist/src/analysis/adapters/__tests__/rust.test.js +676 -0
- package/dist/src/analysis/adapters/__tests__/rust.test.js.map +1 -0
- package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts +14 -0
- package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts.map +1 -0
- package/dist/src/analysis/adapters/__tests__/typescript.test.js +381 -0
- package/dist/src/analysis/adapters/__tests__/typescript.test.js.map +1 -0
- package/dist/src/analysis/adapters/base.d.ts +83 -0
- package/dist/src/analysis/adapters/base.d.ts.map +1 -0
- package/dist/src/analysis/adapters/base.js +40 -0
- package/dist/src/analysis/adapters/base.js.map +1 -0
- package/dist/src/analysis/adapters/factory.d.ts +150 -0
- package/dist/src/analysis/adapters/factory.d.ts.map +1 -0
- package/dist/src/analysis/adapters/factory.js +244 -0
- package/dist/src/analysis/adapters/factory.js.map +1 -0
- package/dist/src/analysis/adapters/go.d.ts +131 -0
- package/dist/src/analysis/adapters/go.d.ts.map +1 -0
- package/dist/src/analysis/adapters/go.js +414 -0
- package/dist/src/analysis/adapters/go.js.map +1 -0
- package/dist/src/analysis/adapters/index.d.ts +20 -0
- package/dist/src/analysis/adapters/index.d.ts.map +1 -0
- package/dist/src/analysis/adapters/index.js +23 -0
- package/dist/src/analysis/adapters/index.js.map +1 -0
- package/dist/src/analysis/adapters/java.d.ts +154 -0
- package/dist/src/analysis/adapters/java.d.ts.map +1 -0
- package/dist/src/analysis/adapters/java.js +407 -0
- package/dist/src/analysis/adapters/java.js.map +1 -0
- package/dist/src/analysis/adapters/python.d.ts +165 -0
- package/dist/src/analysis/adapters/python.d.ts.map +1 -0
- package/dist/src/analysis/adapters/python.js +475 -0
- package/dist/src/analysis/adapters/python.js.map +1 -0
- package/dist/src/analysis/adapters/rust.d.ts +116 -0
- package/dist/src/analysis/adapters/rust.d.ts.map +1 -0
- package/dist/src/analysis/adapters/rust.js +476 -0
- package/dist/src/analysis/adapters/rust.js.map +1 -0
- package/dist/src/analysis/adapters/typescript.d.ts +68 -0
- package/dist/src/analysis/adapters/typescript.d.ts.map +1 -0
- package/dist/src/analysis/adapters/typescript.js +79 -0
- package/dist/src/analysis/adapters/typescript.js.map +1 -0
- package/dist/src/analysis/aggregator.d.ts +193 -0
- package/dist/src/analysis/aggregator.d.ts.map +1 -0
- package/dist/src/analysis/aggregator.js +283 -0
- package/dist/src/analysis/aggregator.js.map +1 -0
- package/dist/src/analysis/cache.d.ts +180 -0
- package/dist/src/analysis/cache.d.ts.map +1 -0
- package/dist/src/analysis/cache.js +279 -0
- package/dist/src/analysis/cache.js.map +1 -0
- package/dist/src/analysis/file-streamer.d.ts +136 -0
- package/dist/src/analysis/file-streamer.d.ts.map +1 -0
- package/dist/src/analysis/file-streamer.js +291 -0
- package/dist/src/analysis/file-streamer.js.map +1 -0
- package/dist/src/analysis/incremental-parser.d.ts +186 -0
- package/dist/src/analysis/incremental-parser.d.ts.map +1 -0
- package/dist/src/analysis/incremental-parser.js +291 -0
- package/dist/src/analysis/incremental-parser.js.map +1 -0
- package/dist/src/analysis/incremental.d.ts +186 -0
- package/dist/src/analysis/incremental.d.ts.map +1 -0
- package/dist/src/analysis/incremental.js +247 -0
- package/dist/src/analysis/incremental.js.map +1 -0
- package/dist/src/analysis/index.d.ts +25 -3
- package/dist/src/analysis/index.d.ts.map +1 -1
- package/dist/src/analysis/index.js +45 -3
- package/dist/src/analysis/index.js.map +1 -1
- package/dist/src/analysis/language-detector.d.ts +92 -0
- package/dist/src/analysis/language-detector.d.ts.map +1 -0
- package/dist/src/analysis/language-detector.js +602 -0
- package/dist/src/analysis/language-detector.js.map +1 -0
- package/dist/src/analysis/memory-monitor.d.ts +199 -0
- package/dist/src/analysis/memory-monitor.d.ts.map +1 -0
- package/dist/src/analysis/memory-monitor.js +271 -0
- package/dist/src/analysis/memory-monitor.js.map +1 -0
- package/dist/src/analysis/metrics.d.ts +300 -0
- package/dist/src/analysis/metrics.d.ts.map +1 -0
- package/dist/src/analysis/metrics.js +537 -0
- package/dist/src/analysis/metrics.js.map +1 -0
- package/dist/src/analysis/router.d.ts +264 -0
- package/dist/src/analysis/router.d.ts.map +1 -0
- package/dist/src/analysis/router.js +398 -0
- package/dist/src/analysis/router.js.map +1 -0
- package/dist/src/analysis/tree-cache.d.ts +208 -0
- package/dist/src/analysis/tree-cache.d.ts.map +1 -0
- package/dist/src/analysis/tree-cache.js +288 -0
- package/dist/src/analysis/tree-cache.js.map +1 -0
- package/dist/src/analysis/tree-sitter/manager.d.ts +141 -0
- package/dist/src/analysis/tree-sitter/manager.d.ts.map +1 -0
- package/dist/src/analysis/tree-sitter/manager.js +239 -0
- package/dist/src/analysis/tree-sitter/manager.js.map +1 -0
- package/dist/src/analysis/types.d.ts +69 -6
- package/dist/src/analysis/types.d.ts.map +1 -1
- package/dist/src/analysis/types.js +23 -2
- package/dist/src/analysis/types.js.map +1 -1
- package/dist/src/analysis/worker-pool.d.ts +141 -0
- package/dist/src/analysis/worker-pool.d.ts.map +1 -0
- package/dist/src/analysis/worker-pool.js +418 -0
- package/dist/src/analysis/worker-pool.js.map +1 -0
- package/dist/src/analytics/schema.d.ts +1 -1
- package/dist/src/analytics/schema.d.ts.map +1 -1
- package/dist/src/analytics/schema.js +72 -0
- package/dist/src/analytics/schema.js.map +1 -1
- package/dist/src/api/cache.d.ts +24 -1
- package/dist/src/api/cache.d.ts.map +1 -1
- package/dist/src/api/cache.js +50 -2
- package/dist/src/api/cache.js.map +1 -1
- package/dist/src/api/client.d.ts +132 -2
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.js +214 -18
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/api/index.d.ts +2 -0
- package/dist/src/api/index.d.ts.map +1 -1
- package/dist/src/api/index.js +7 -0
- package/dist/src/api/index.js.map +1 -1
- package/dist/src/api/types.d.ts +251 -0
- package/dist/src/api/types.d.ts.map +1 -0
- package/dist/src/api/types.js +9 -0
- package/dist/src/api/types.js.map +1 -0
- package/dist/src/benchmarks/memory/MemoryProfiler.d.ts.map +1 -1
- package/dist/src/benchmarks/memory/MemoryProfiler.js.map +1 -1
- package/dist/src/embeddings/index.d.ts.map +1 -1
- package/dist/src/embeddings/index.js.map +1 -1
- package/dist/src/errors.d.ts +1 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +1 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/index.d.ts +3 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
- package/dist/src/repositories/IndexerRepository.js +1 -0
- package/dist/src/repositories/IndexerRepository.js.map +1 -1
- package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
- package/dist/src/repositories/SkillRepository.js +1 -0
- package/dist/src/repositories/SkillRepository.js.map +1 -1
- package/dist/src/repositories/quarantine/QuarantineRepository.d.ts.map +1 -1
- package/dist/src/repositories/quarantine/QuarantineRepository.js.map +1 -1
- package/dist/src/repositories/quarantine/query-builder.d.ts.map +1 -1
- package/dist/src/repositories/quarantine/query-builder.js +1 -1
- package/dist/src/repositories/quarantine/query-builder.js.map +1 -1
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js +3 -3
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
- package/dist/src/scripts/github-import/index.js.map +1 -1
- package/dist/src/scripts/import-github-skills.js +1 -1
- package/dist/src/scripts/import-github-skills.js.map +1 -1
- package/dist/src/scripts/skill-scanner/reporter.d.ts.map +1 -1
- package/dist/src/scripts/skill-scanner/reporter.js.map +1 -1
- package/dist/src/scripts/skill-scanner/scanner.d.ts.map +1 -1
- package/dist/src/scripts/skill-scanner/scanner.js.map +1 -1
- package/dist/src/scripts/skill-scanner/trust-scorer.d.ts.map +1 -1
- package/dist/src/scripts/skill-scanner/trust-scorer.js.map +1 -1
- package/dist/src/scripts/validation/index.js +1 -2
- package/dist/src/scripts/validation/index.js.map +1 -1
- package/dist/src/scripts/validation/pipeline.d.ts.map +1 -1
- package/dist/src/scripts/validation/pipeline.js.map +1 -1
- package/dist/src/scripts/validation/types.d.ts +2 -2
- package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
- package/dist/src/services/SearchService.d.ts.map +1 -1
- package/dist/src/services/SearchService.js +1 -0
- package/dist/src/services/SearchService.js.map +1 -1
- package/dist/src/session/SessionHealthMonitor.d.ts +1 -1
- package/dist/src/session/SessionHealthMonitor.d.ts.map +1 -1
- package/dist/src/session/SessionHealthMonitor.js +1 -1
- package/dist/src/session/SessionHealthMonitor.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +1 -1
- package/dist/src/telemetry/index.d.ts.map +1 -1
- package/dist/src/telemetry/index.js +2 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/posthog.d.ts +27 -5
- package/dist/src/telemetry/posthog.d.ts.map +1 -1
- package/dist/src/telemetry/posthog.js +20 -5
- package/dist/src/telemetry/posthog.js.map +1 -1
- package/dist/src/types/skill.d.ts +3 -0
- package/dist/src/types/skill.d.ts.map +1 -1
- package/dist/src/types.d.ts +2 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +2 -2
- package/dist/src/types.js.map +1 -1
- package/dist/tests/adapters-factory.test.d.ts +13 -0
- package/dist/tests/adapters-factory.test.d.ts.map +1 -0
- package/dist/tests/adapters-factory.test.js +308 -0
- package/dist/tests/adapters-factory.test.js.map +1 -0
- package/dist/tests/adapters-java.test.d.ts +13 -0
- package/dist/tests/adapters-java.test.d.ts.map +1 -0
- package/dist/tests/adapters-java.test.js +925 -0
- package/dist/tests/adapters-java.test.js.map +1 -0
- package/dist/tests/api/client.validation.test.d.ts +7 -0
- package/dist/tests/api/client.validation.test.d.ts.map +1 -0
- package/dist/tests/api/client.validation.test.js +183 -0
- package/dist/tests/api/client.validation.test.js.map +1 -0
- package/dist/tests/language-detector.test.d.ts +13 -0
- package/dist/tests/language-detector.test.d.ts.map +1 -0
- package/dist/tests/language-detector.test.js +674 -0
- package/dist/tests/language-detector.test.js.map +1 -0
- package/dist/tests/telemetry/posthog.test.d.ts +13 -0
- package/dist/tests/telemetry/posthog.test.d.ts.map +1 -0
- package/dist/tests/telemetry/posthog.test.js +600 -0
- package/dist/tests/telemetry/posthog.test.js.map +1 -0
- package/package.json +5 -6
- package/dist/src/security/RateLimiter.d.ts +0 -337
- package/dist/src/security/RateLimiter.d.ts.map +0 -1
- package/dist/src/security/RateLimiter.js +0 -782
- package/dist/src/security/RateLimiter.js.map +0 -1
- package/dist/src/security/scanner.d.ts +0 -151
- package/dist/src/security/scanner.d.ts.map +0 -1
- package/dist/src/security/scanner.js +0 -599
- package/dist/src/security/scanner.js.map +0 -1
package/dist/src/api/cache.js
CHANGED
|
@@ -7,6 +7,24 @@
|
|
|
7
7
|
* Provides in-memory caching with TTL for offline support.
|
|
8
8
|
* Uses a simple LRU-like eviction strategy.
|
|
9
9
|
*/
|
|
10
|
+
/**
|
|
11
|
+
* Escape special RegExp characters in a string.
|
|
12
|
+
*
|
|
13
|
+
* This prevents RegExp injection when user-provided strings are
|
|
14
|
+
* used to construct regular expressions.
|
|
15
|
+
*
|
|
16
|
+
* @param str - The string to escape
|
|
17
|
+
* @returns The escaped string safe for use in RegExp constructor
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* escapeRegExp('foo.bar') // Returns 'foo\\.bar'
|
|
22
|
+
* escapeRegExp('a*b+c?') // Returns 'a\\*b\\+c\\?'
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
function escapeRegExp(str) {
|
|
26
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
27
|
+
}
|
|
10
28
|
/**
|
|
11
29
|
* TTL configuration for different endpoints
|
|
12
30
|
*/
|
|
@@ -38,6 +56,9 @@ export class ApiCache {
|
|
|
38
56
|
hits = 0;
|
|
39
57
|
misses = 0;
|
|
40
58
|
evictions = 0;
|
|
59
|
+
// Auto-pruning (SMI-1262)
|
|
60
|
+
operationCount = 0;
|
|
61
|
+
PRUNE_INTERVAL = 100;
|
|
41
62
|
constructor(config = {}) {
|
|
42
63
|
this.cache = new Map();
|
|
43
64
|
this.defaultTtl = config.defaultTtl ?? DEFAULT_TTL.search;
|
|
@@ -61,6 +82,7 @@ export class ApiCache {
|
|
|
61
82
|
* Get item from cache
|
|
62
83
|
*/
|
|
63
84
|
get(key) {
|
|
85
|
+
this.maybeAutoPrune();
|
|
64
86
|
const entry = this.cache.get(key);
|
|
65
87
|
if (!entry) {
|
|
66
88
|
if (this.enableStats)
|
|
@@ -84,6 +106,7 @@ export class ApiCache {
|
|
|
84
106
|
* Set item in cache
|
|
85
107
|
*/
|
|
86
108
|
set(key, data, endpointType) {
|
|
109
|
+
this.maybeAutoPrune();
|
|
87
110
|
// Evict if at capacity
|
|
88
111
|
if (this.cache.size >= this.maxEntries) {
|
|
89
112
|
this.evictLeastUsed();
|
|
@@ -140,10 +163,26 @@ export class ApiCache {
|
|
|
140
163
|
return pruned;
|
|
141
164
|
}
|
|
142
165
|
/**
|
|
143
|
-
* Invalidate entries matching a pattern
|
|
166
|
+
* Invalidate entries matching a pattern.
|
|
167
|
+
*
|
|
168
|
+
* When a string is provided, it is treated as a literal string and
|
|
169
|
+
* special RegExp characters are escaped to prevent RegExp injection.
|
|
170
|
+
* To use regex patterns, pass a RegExp object directly.
|
|
171
|
+
*
|
|
172
|
+
* @param pattern - Literal string to match or RegExp for pattern matching
|
|
173
|
+
* @returns Number of entries invalidated
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* ```typescript
|
|
177
|
+
* // Literal string matching (special chars are escaped)
|
|
178
|
+
* cache.invalidatePattern('search:user.name') // Matches exactly 'search:user.name'
|
|
179
|
+
*
|
|
180
|
+
* // RegExp for pattern matching
|
|
181
|
+
* cache.invalidatePattern(/^search:/) // Matches all keys starting with 'search:'
|
|
182
|
+
* ```
|
|
144
183
|
*/
|
|
145
184
|
invalidatePattern(pattern) {
|
|
146
|
-
const regex = typeof pattern === 'string' ? new RegExp(pattern) : pattern;
|
|
185
|
+
const regex = typeof pattern === 'string' ? new RegExp(escapeRegExp(pattern)) : pattern;
|
|
147
186
|
let invalidated = 0;
|
|
148
187
|
for (const key of this.cache.keys()) {
|
|
149
188
|
if (regex.test(key)) {
|
|
@@ -166,6 +205,15 @@ export class ApiCache {
|
|
|
166
205
|
hitRate: total > 0 ? this.hits / total : 0,
|
|
167
206
|
};
|
|
168
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* Automatically prune expired entries every PRUNE_INTERVAL operations.
|
|
210
|
+
* SMI-1262: Prevents expired entries from accumulating until maxEntries is reached.
|
|
211
|
+
*/
|
|
212
|
+
maybeAutoPrune() {
|
|
213
|
+
if (++this.operationCount % this.PRUNE_INTERVAL === 0) {
|
|
214
|
+
this.prune();
|
|
215
|
+
}
|
|
216
|
+
}
|
|
169
217
|
/**
|
|
170
218
|
* Evict least recently used entries
|
|
171
219
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/api/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/api/cache.ts"],"names":[],"mappings":"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"}
|
package/dist/src/api/client.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* @module api/client
|
|
4
4
|
*
|
|
5
5
|
* SMI-1244: API client for fetching skills from live Supabase endpoints
|
|
6
|
+
* SMI-1258: Runtime validation for API responses using zod
|
|
6
7
|
*
|
|
7
8
|
* Provides methods to interact with the Skillsmith API:
|
|
8
9
|
* - search: Search skills with filters
|
|
@@ -10,7 +11,92 @@
|
|
|
10
11
|
* - getRecommendations: Get skill recommendations based on tech stack
|
|
11
12
|
* - recordEvent: Record telemetry event
|
|
12
13
|
*/
|
|
14
|
+
import { z } from 'zod';
|
|
13
15
|
import type { Skill, TrustTier, SearchOptions } from '../types/skill.js';
|
|
16
|
+
/**
|
|
17
|
+
* Trust tier enum values
|
|
18
|
+
*/
|
|
19
|
+
declare const TrustTierSchema: z.ZodEnum<{
|
|
20
|
+
verified: "verified";
|
|
21
|
+
community: "community";
|
|
22
|
+
experimental: "experimental";
|
|
23
|
+
unknown: "unknown";
|
|
24
|
+
}>;
|
|
25
|
+
/**
|
|
26
|
+
* Schema for individual search result from API
|
|
27
|
+
*/
|
|
28
|
+
declare const ApiSearchResultSchema: z.ZodObject<{
|
|
29
|
+
id: z.ZodString;
|
|
30
|
+
name: z.ZodString;
|
|
31
|
+
description: z.ZodNullable<z.ZodString>;
|
|
32
|
+
author: z.ZodNullable<z.ZodString>;
|
|
33
|
+
repo_url: z.ZodNullable<z.ZodString>;
|
|
34
|
+
quality_score: z.ZodNullable<z.ZodNumber>;
|
|
35
|
+
trust_tier: z.ZodEnum<{
|
|
36
|
+
verified: "verified";
|
|
37
|
+
community: "community";
|
|
38
|
+
experimental: "experimental";
|
|
39
|
+
unknown: "unknown";
|
|
40
|
+
}>;
|
|
41
|
+
tags: z.ZodArray<z.ZodString>;
|
|
42
|
+
stars: z.ZodNullable<z.ZodNumber>;
|
|
43
|
+
installable: z.ZodNullable<z.ZodBoolean>;
|
|
44
|
+
created_at: z.ZodString;
|
|
45
|
+
updated_at: z.ZodString;
|
|
46
|
+
}, z.core.$strip>;
|
|
47
|
+
/**
|
|
48
|
+
* Schema for telemetry response
|
|
49
|
+
*/
|
|
50
|
+
declare const TelemetryResponseSchema: z.ZodObject<{
|
|
51
|
+
data: z.ZodObject<{
|
|
52
|
+
ok: z.ZodBoolean;
|
|
53
|
+
}, z.core.$strip>;
|
|
54
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
55
|
+
}, z.core.$strip>;
|
|
56
|
+
declare const SearchResponseSchema: z.ZodObject<{
|
|
57
|
+
data: z.ZodArray<z.ZodObject<{
|
|
58
|
+
id: z.ZodString;
|
|
59
|
+
name: z.ZodString;
|
|
60
|
+
description: z.ZodNullable<z.ZodString>;
|
|
61
|
+
author: z.ZodNullable<z.ZodString>;
|
|
62
|
+
repo_url: z.ZodNullable<z.ZodString>;
|
|
63
|
+
quality_score: z.ZodNullable<z.ZodNumber>;
|
|
64
|
+
trust_tier: z.ZodEnum<{
|
|
65
|
+
verified: "verified";
|
|
66
|
+
community: "community";
|
|
67
|
+
experimental: "experimental";
|
|
68
|
+
unknown: "unknown";
|
|
69
|
+
}>;
|
|
70
|
+
tags: z.ZodArray<z.ZodString>;
|
|
71
|
+
stars: z.ZodNullable<z.ZodNumber>;
|
|
72
|
+
installable: z.ZodNullable<z.ZodBoolean>;
|
|
73
|
+
created_at: z.ZodString;
|
|
74
|
+
updated_at: z.ZodString;
|
|
75
|
+
}, z.core.$strip>>;
|
|
76
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
77
|
+
}, z.core.$strip>;
|
|
78
|
+
declare const SingleSkillResponseSchema: z.ZodObject<{
|
|
79
|
+
data: z.ZodObject<{
|
|
80
|
+
id: z.ZodString;
|
|
81
|
+
name: z.ZodString;
|
|
82
|
+
description: z.ZodNullable<z.ZodString>;
|
|
83
|
+
author: z.ZodNullable<z.ZodString>;
|
|
84
|
+
repo_url: z.ZodNullable<z.ZodString>;
|
|
85
|
+
quality_score: z.ZodNullable<z.ZodNumber>;
|
|
86
|
+
trust_tier: z.ZodEnum<{
|
|
87
|
+
verified: "verified";
|
|
88
|
+
community: "community";
|
|
89
|
+
experimental: "experimental";
|
|
90
|
+
unknown: "unknown";
|
|
91
|
+
}>;
|
|
92
|
+
tags: z.ZodArray<z.ZodString>;
|
|
93
|
+
stars: z.ZodNullable<z.ZodNumber>;
|
|
94
|
+
installable: z.ZodNullable<z.ZodBoolean>;
|
|
95
|
+
created_at: z.ZodString;
|
|
96
|
+
updated_at: z.ZodString;
|
|
97
|
+
}, z.core.$strip>;
|
|
98
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
99
|
+
}, z.core.$strip>;
|
|
14
100
|
/**
|
|
15
101
|
* API response wrapper
|
|
16
102
|
*/
|
|
@@ -25,6 +111,15 @@ export interface ApiErrorResponse {
|
|
|
25
111
|
error: string;
|
|
26
112
|
details?: Record<string, unknown>;
|
|
27
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Custom error class for API client errors with retry control
|
|
116
|
+
* SMI-1257: Replace string-based retry skip with custom error class
|
|
117
|
+
*/
|
|
118
|
+
export declare class ApiClientError extends Error {
|
|
119
|
+
readonly retryable: boolean;
|
|
120
|
+
readonly statusCode?: number | undefined;
|
|
121
|
+
constructor(message: string, retryable?: boolean, statusCode?: number | undefined);
|
|
122
|
+
}
|
|
28
123
|
/**
|
|
29
124
|
* Search result from API
|
|
30
125
|
*/
|
|
@@ -38,6 +133,7 @@ export interface ApiSearchResult {
|
|
|
38
133
|
trust_tier: TrustTier;
|
|
39
134
|
tags: string[];
|
|
40
135
|
stars: number | null;
|
|
136
|
+
installable: boolean | null;
|
|
41
137
|
created_at: string;
|
|
42
138
|
updated_at: string;
|
|
43
139
|
}
|
|
@@ -72,9 +168,15 @@ export interface ApiClientConfig {
|
|
|
72
168
|
maxRetries?: number;
|
|
73
169
|
/** Enable debug logging */
|
|
74
170
|
debug?: boolean;
|
|
171
|
+
/** Enable offline mode (disables API calls) */
|
|
172
|
+
offlineMode?: boolean;
|
|
75
173
|
}
|
|
76
174
|
/**
|
|
77
|
-
* Generate anonymous ID for telemetry
|
|
175
|
+
* Generate anonymous ID for telemetry using cryptographic randomness.
|
|
176
|
+
* Returns a UUID v4 format string (e.g., "550e8400-e29b-41d4-a716-446655440000").
|
|
177
|
+
*
|
|
178
|
+
* Note: This generates a fresh ID per session - it is NOT stored persistently.
|
|
179
|
+
* For persistent anonymous IDs, the caller must handle storage.
|
|
78
180
|
*/
|
|
79
181
|
export declare function generateAnonymousId(): string;
|
|
80
182
|
/**
|
|
@@ -96,7 +198,12 @@ export declare class SkillsmithApiClient {
|
|
|
96
198
|
private timeout;
|
|
97
199
|
private maxRetries;
|
|
98
200
|
private debug;
|
|
201
|
+
private offlineMode;
|
|
99
202
|
constructor(config?: ApiClientConfig);
|
|
203
|
+
/**
|
|
204
|
+
* Check if client is running in offline mode
|
|
205
|
+
*/
|
|
206
|
+
isOffline(): boolean;
|
|
100
207
|
/**
|
|
101
208
|
* Log debug message
|
|
102
209
|
*/
|
|
@@ -106,11 +213,17 @@ export declare class SkillsmithApiClient {
|
|
|
106
213
|
*/
|
|
107
214
|
private buildHeaders;
|
|
108
215
|
/**
|
|
109
|
-
* Make API request with retry logic
|
|
216
|
+
* Make API request with retry logic and optional schema validation
|
|
217
|
+
* SMI-1258: Added runtime validation for API responses
|
|
218
|
+
*
|
|
219
|
+
* @param endpoint - API endpoint path
|
|
220
|
+
* @param options - Fetch options
|
|
221
|
+
* @param schema - Optional zod schema for response validation
|
|
110
222
|
*/
|
|
111
223
|
private request;
|
|
112
224
|
/**
|
|
113
225
|
* Search for skills
|
|
226
|
+
* SMI-1258: Validates response against SearchResponseSchema
|
|
114
227
|
*
|
|
115
228
|
* @param options - Search options
|
|
116
229
|
* @returns Search results
|
|
@@ -118,6 +231,7 @@ export declare class SkillsmithApiClient {
|
|
|
118
231
|
search(options: SearchOptions): Promise<ApiResponse<ApiSearchResult[]>>;
|
|
119
232
|
/**
|
|
120
233
|
* Get skill by ID
|
|
234
|
+
* SMI-1258: Validates response against SingleSkillResponseSchema
|
|
121
235
|
*
|
|
122
236
|
* @param id - Skill ID (UUID or author/name format)
|
|
123
237
|
* @returns Skill details
|
|
@@ -125,6 +239,7 @@ export declare class SkillsmithApiClient {
|
|
|
125
239
|
getSkill(id: string): Promise<ApiResponse<ApiSearchResult>>;
|
|
126
240
|
/**
|
|
127
241
|
* Get skill recommendations based on tech stack
|
|
242
|
+
* SMI-1258: Validates response against SearchResponseSchema
|
|
128
243
|
*
|
|
129
244
|
* @param request - Recommendation request
|
|
130
245
|
* @returns Recommended skills
|
|
@@ -132,6 +247,7 @@ export declare class SkillsmithApiClient {
|
|
|
132
247
|
getRecommendations(request: RecommendationRequest): Promise<ApiResponse<ApiSearchResult[]>>;
|
|
133
248
|
/**
|
|
134
249
|
* Record telemetry event
|
|
250
|
+
* SMI-1258: Validates response against TelemetryResponseSchema
|
|
135
251
|
*
|
|
136
252
|
* @param event - Telemetry event
|
|
137
253
|
* @returns Success response
|
|
@@ -139,6 +255,19 @@ export declare class SkillsmithApiClient {
|
|
|
139
255
|
recordEvent(event: TelemetryEvent): Promise<{
|
|
140
256
|
ok: boolean;
|
|
141
257
|
}>;
|
|
258
|
+
/**
|
|
259
|
+
* Check API health status
|
|
260
|
+
*
|
|
261
|
+
* Returns service health information including status, timestamp, and version.
|
|
262
|
+
* In offline mode, returns a synthetic healthy response.
|
|
263
|
+
*
|
|
264
|
+
* @returns Health status object
|
|
265
|
+
*/
|
|
266
|
+
checkHealth(): Promise<{
|
|
267
|
+
status: 'healthy' | 'degraded' | 'unhealthy';
|
|
268
|
+
timestamp: string;
|
|
269
|
+
version: string;
|
|
270
|
+
}>;
|
|
142
271
|
/**
|
|
143
272
|
* Convert API result to Skill type
|
|
144
273
|
*/
|
|
@@ -148,5 +277,6 @@ export declare class SkillsmithApiClient {
|
|
|
148
277
|
* Create a default API client instance
|
|
149
278
|
*/
|
|
150
279
|
export declare function createApiClient(config?: ApiClientConfig): SkillsmithApiClient;
|
|
280
|
+
export { ApiSearchResultSchema, SearchResponseSchema, SingleSkillResponseSchema, TelemetryResponseSchema, TrustTierSchema, };
|
|
151
281
|
export default SkillsmithApiClient;
|
|
152
282
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/client.ts"],"names":[],"mappings":"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"}
|