@schnick371/devsteps-shared 0.0.1 → 0.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/README.md +66 -7
- package/dist/core/add.d.ts +23 -0
- package/dist/core/add.d.ts.map +1 -0
- package/dist/core/add.js +102 -0
- package/dist/core/add.js.map +1 -0
- package/dist/core/archive.d.ts +24 -0
- package/dist/core/archive.d.ts.map +1 -0
- package/dist/core/archive.js +109 -0
- package/dist/core/archive.js.map +1 -0
- package/dist/core/bulk-update.d.ts +34 -0
- package/dist/core/bulk-update.d.ts.map +1 -0
- package/dist/core/bulk-update.js +141 -0
- package/dist/core/bulk-update.js.map +1 -0
- package/dist/core/context.d.ts +54 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +198 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/get.d.ts +10 -0
- package/dist/core/get.d.ts.map +1 -0
- package/dist/core/get.js +28 -0
- package/dist/core/get.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +9 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/list.d.ts +19 -0
- package/dist/core/list.d.ts.map +1 -0
- package/dist/core/list.js +64 -0
- package/dist/core/list.js.map +1 -0
- package/dist/core/update.d.ts +23 -0
- package/dist/core/update.d.ts.map +1 -0
- package/dist/core/update.js +118 -0
- package/dist/core/update.js.map +1 -0
- package/dist/core/validation.d.ts +28 -0
- package/dist/core/validation.d.ts.map +1 -0
- package/dist/core/validation.js +205 -0
- package/dist/core/validation.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/index.d.ts +286 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +200 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/project.d.ts +134 -0
- package/dist/schemas/project.d.ts.map +1 -0
- package/dist/schemas/project.js +54 -0
- package/dist/schemas/project.js.map +1 -0
- package/dist/schemas/relationships.d.ts +30 -0
- package/dist/schemas/relationships.d.ts.map +1 -0
- package/dist/schemas/relationships.js +41 -0
- package/dist/schemas/relationships.js.map +1 -0
- package/dist/types/commands.d.ts +92 -0
- package/dist/types/commands.d.ts.map +1 -0
- package/dist/types/commands.js +14 -0
- package/dist/types/commands.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/cache.d.ts +80 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +169 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/index.d.ts +72 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +148 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +48 -15
- package/src/core/add.js.map +1 -0
- package/src/core/add.ts +145 -0
- package/src/core/archive.js.map +1 -0
- package/src/core/archive.ts +153 -0
- package/src/core/bulk-update.js.map +1 -0
- package/src/core/bulk-update.ts +180 -0
- package/src/core/context.js.map +1 -0
- package/src/core/context.ts +269 -0
- package/src/core/get.js.map +1 -0
- package/src/core/get.ts +39 -0
- package/src/core/index.js.map +1 -0
- package/src/core/index.ts +26 -0
- package/src/core/list.js.map +1 -0
- package/src/core/list.ts +96 -0
- package/src/core/update.js.map +1 -0
- package/src/core/update.ts +154 -0
- package/src/core/validation.ts +252 -0
- package/src/index.js +21 -0
- package/src/index.js.map +1 -0
- package/src/index.ts +4 -0
- package/src/schemas/index.js.map +1 -0
- package/src/schemas/index.ts +226 -0
- package/src/schemas/project.js.map +1 -0
- package/src/schemas/project.ts +73 -0
- package/src/schemas/relationships.ts +48 -0
- package/src/types/commands.js.map +1 -0
- package/src/types/commands.ts +116 -0
- package/src/types/index.js.map +1 -0
- package/src/types/index.ts +13 -0
- package/src/utils/cache.js.map +1 -0
- package/src/utils/cache.ts +200 -0
- package/src/utils/index.js.map +1 -0
- package/src/utils/index.ts +170 -0
- package/index.js +0 -6
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export interface CacheStats {
|
|
2
|
+
size: number;
|
|
3
|
+
keys: string[];
|
|
4
|
+
hits: number;
|
|
5
|
+
misses: number;
|
|
6
|
+
hitRate: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Cache configuration
|
|
10
|
+
*/
|
|
11
|
+
export declare const CACHE_CONFIG: {
|
|
12
|
+
PROJECT_MD_TTL: number;
|
|
13
|
+
PACKAGE_ANALYSIS_TTL: number;
|
|
14
|
+
ITEM_COUNTS_TTL: number;
|
|
15
|
+
RECENT_UPDATES_TTL: number;
|
|
16
|
+
MAX_CACHE_SIZE: number;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Smart context cache with TTL and file-based invalidation
|
|
20
|
+
*/
|
|
21
|
+
export declare class ContextCache {
|
|
22
|
+
private cache;
|
|
23
|
+
private hits;
|
|
24
|
+
private misses;
|
|
25
|
+
/**
|
|
26
|
+
* Get cached value
|
|
27
|
+
* @param key Cache key
|
|
28
|
+
* @param maxAge Maximum age in milliseconds
|
|
29
|
+
* @param filePath Optional file path for mtime-based invalidation
|
|
30
|
+
* @returns Cached value or null if invalid/expired
|
|
31
|
+
*/
|
|
32
|
+
get<T>(key: string, maxAge: number, filePath?: string): T | null;
|
|
33
|
+
/**
|
|
34
|
+
* Set cached value
|
|
35
|
+
* @param key Cache key
|
|
36
|
+
* @param data Data to cache
|
|
37
|
+
* @param filePath Optional file path for mtime tracking
|
|
38
|
+
*/
|
|
39
|
+
set<T>(key: string, data: T, filePath?: string): void;
|
|
40
|
+
/**
|
|
41
|
+
* Check if key exists and is valid
|
|
42
|
+
* @param key Cache key
|
|
43
|
+
* @param maxAge Maximum age in milliseconds
|
|
44
|
+
* @param filePath Optional file path for mtime-based invalidation
|
|
45
|
+
* @returns true if valid cached value exists
|
|
46
|
+
*/
|
|
47
|
+
has(key: string, maxAge: number, filePath?: string): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Clear entire cache
|
|
50
|
+
*/
|
|
51
|
+
clear(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Clear specific cache key
|
|
54
|
+
* @param key Cache key to clear
|
|
55
|
+
*/
|
|
56
|
+
delete(key: string): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Clear cache entries matching pattern
|
|
59
|
+
* @param pattern Regex pattern to match keys
|
|
60
|
+
*/
|
|
61
|
+
clearPattern(pattern: RegExp): number;
|
|
62
|
+
/**
|
|
63
|
+
* Get cache statistics
|
|
64
|
+
* @returns Cache statistics including hit rate
|
|
65
|
+
*/
|
|
66
|
+
stats(): CacheStats;
|
|
67
|
+
/**
|
|
68
|
+
* Reset hit/miss counters
|
|
69
|
+
*/
|
|
70
|
+
resetStats(): void;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get or create global cache instance
|
|
74
|
+
*/
|
|
75
|
+
export declare function getCache(): ContextCache;
|
|
76
|
+
/**
|
|
77
|
+
* Clear global cache
|
|
78
|
+
*/
|
|
79
|
+
export declare function clearGlobalCache(): void;
|
|
80
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;CAMxB,CAAC;AAEF;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAA0C;IACvD,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,MAAM,CAAK;IAEnB;;;;;;OAMG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAoChE;;;;;OAKG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IA0BrD;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAI5D;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAWrC;;;OAGG;IACH,KAAK,IAAI,UAAU;IAanB;;OAEG;IACH,UAAU,IAAI,IAAI;CAInB;AAKD;;GAEG;AACH,wBAAgB,QAAQ,IAAI,YAAY,CAKvC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { statSync } from 'node:fs';
|
|
2
|
+
/**
|
|
3
|
+
* Cache configuration
|
|
4
|
+
*/
|
|
5
|
+
export const CACHE_CONFIG = {
|
|
6
|
+
PROJECT_MD_TTL: 60 * 60 * 1000, // 1 hour
|
|
7
|
+
PACKAGE_ANALYSIS_TTL: 30 * 60 * 1000, // 30 minutes
|
|
8
|
+
ITEM_COUNTS_TTL: 5 * 60 * 1000, // 5 minutes
|
|
9
|
+
RECENT_UPDATES_TTL: 1 * 60 * 1000, // 1 minute
|
|
10
|
+
MAX_CACHE_SIZE: 1000, // Maximum number of cache entries
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Smart context cache with TTL and file-based invalidation
|
|
14
|
+
*/
|
|
15
|
+
export class ContextCache {
|
|
16
|
+
cache = new Map();
|
|
17
|
+
hits = 0;
|
|
18
|
+
misses = 0;
|
|
19
|
+
/**
|
|
20
|
+
* Get cached value
|
|
21
|
+
* @param key Cache key
|
|
22
|
+
* @param maxAge Maximum age in milliseconds
|
|
23
|
+
* @param filePath Optional file path for mtime-based invalidation
|
|
24
|
+
* @returns Cached value or null if invalid/expired
|
|
25
|
+
*/
|
|
26
|
+
get(key, maxAge, filePath) {
|
|
27
|
+
const entry = this.cache.get(key);
|
|
28
|
+
if (!entry) {
|
|
29
|
+
this.misses++;
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
// Check file modification time
|
|
33
|
+
if (filePath && entry.mtime !== undefined) {
|
|
34
|
+
try {
|
|
35
|
+
const currentMtime = statSync(filePath).mtimeMs;
|
|
36
|
+
if (currentMtime > entry.mtime) {
|
|
37
|
+
this.cache.delete(key);
|
|
38
|
+
this.misses++;
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// File doesn't exist anymore, invalidate cache
|
|
44
|
+
this.cache.delete(key);
|
|
45
|
+
this.misses++;
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Check TTL
|
|
50
|
+
if (Date.now() - entry.timestamp > maxAge) {
|
|
51
|
+
this.cache.delete(key);
|
|
52
|
+
this.misses++;
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
this.hits++;
|
|
56
|
+
return entry.data;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Set cached value
|
|
60
|
+
* @param key Cache key
|
|
61
|
+
* @param data Data to cache
|
|
62
|
+
* @param filePath Optional file path for mtime tracking
|
|
63
|
+
*/
|
|
64
|
+
set(key, data, filePath) {
|
|
65
|
+
// Enforce max cache size (simple LRU: remove oldest)
|
|
66
|
+
if (this.cache.size >= CACHE_CONFIG.MAX_CACHE_SIZE) {
|
|
67
|
+
const firstKey = this.cache.keys().next().value;
|
|
68
|
+
if (firstKey) {
|
|
69
|
+
this.cache.delete(firstKey);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
let mtime;
|
|
73
|
+
if (filePath) {
|
|
74
|
+
try {
|
|
75
|
+
mtime = statSync(filePath).mtimeMs;
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// File doesn't exist, don't track mtime
|
|
79
|
+
mtime = undefined;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
this.cache.set(key, {
|
|
83
|
+
data,
|
|
84
|
+
timestamp: Date.now(),
|
|
85
|
+
mtime,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Check if key exists and is valid
|
|
90
|
+
* @param key Cache key
|
|
91
|
+
* @param maxAge Maximum age in milliseconds
|
|
92
|
+
* @param filePath Optional file path for mtime-based invalidation
|
|
93
|
+
* @returns true if valid cached value exists
|
|
94
|
+
*/
|
|
95
|
+
has(key, maxAge, filePath) {
|
|
96
|
+
return this.get(key, maxAge, filePath) !== null;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Clear entire cache
|
|
100
|
+
*/
|
|
101
|
+
clear() {
|
|
102
|
+
this.cache.clear();
|
|
103
|
+
this.hits = 0;
|
|
104
|
+
this.misses = 0;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Clear specific cache key
|
|
108
|
+
* @param key Cache key to clear
|
|
109
|
+
*/
|
|
110
|
+
delete(key) {
|
|
111
|
+
return this.cache.delete(key);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Clear cache entries matching pattern
|
|
115
|
+
* @param pattern Regex pattern to match keys
|
|
116
|
+
*/
|
|
117
|
+
clearPattern(pattern) {
|
|
118
|
+
let cleared = 0;
|
|
119
|
+
for (const key of this.cache.keys()) {
|
|
120
|
+
if (pattern.test(key)) {
|
|
121
|
+
this.cache.delete(key);
|
|
122
|
+
cleared++;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return cleared;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Get cache statistics
|
|
129
|
+
* @returns Cache statistics including hit rate
|
|
130
|
+
*/
|
|
131
|
+
stats() {
|
|
132
|
+
const total = this.hits + this.misses;
|
|
133
|
+
const hitRate = total > 0 ? this.hits / total : 0;
|
|
134
|
+
return {
|
|
135
|
+
size: this.cache.size,
|
|
136
|
+
keys: Array.from(this.cache.keys()),
|
|
137
|
+
hits: this.hits,
|
|
138
|
+
misses: this.misses,
|
|
139
|
+
hitRate: Math.round(hitRate * 100) / 100,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Reset hit/miss counters
|
|
144
|
+
*/
|
|
145
|
+
resetStats() {
|
|
146
|
+
this.hits = 0;
|
|
147
|
+
this.misses = 0;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Global singleton instance
|
|
151
|
+
let globalCache = null;
|
|
152
|
+
/**
|
|
153
|
+
* Get or create global cache instance
|
|
154
|
+
*/
|
|
155
|
+
export function getCache() {
|
|
156
|
+
if (!globalCache) {
|
|
157
|
+
globalCache = new ContextCache();
|
|
158
|
+
}
|
|
159
|
+
return globalCache;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Clear global cache
|
|
163
|
+
*/
|
|
164
|
+
export function clearGlobalCache() {
|
|
165
|
+
if (globalCache) {
|
|
166
|
+
globalCache.clear();
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { ItemType, Methodology } from '../schemas/index.js';
|
|
2
|
+
export { ContextCache, CACHE_CONFIG, getCache, clearGlobalCache, type CacheStats, } from './cache.js';
|
|
3
|
+
/**
|
|
4
|
+
* Type to plural directory mapping
|
|
5
|
+
*/
|
|
6
|
+
export declare const TYPE_TO_DIRECTORY: Record<ItemType, string>;
|
|
7
|
+
/**
|
|
8
|
+
* Get methodology configuration
|
|
9
|
+
*/
|
|
10
|
+
export declare function getMethodologyConfig(methodology: Methodology): {
|
|
11
|
+
item_types: ItemType[];
|
|
12
|
+
item_prefixes: {
|
|
13
|
+
epic: string;
|
|
14
|
+
story: string;
|
|
15
|
+
task: string;
|
|
16
|
+
bug: string;
|
|
17
|
+
spike: string;
|
|
18
|
+
test: string;
|
|
19
|
+
};
|
|
20
|
+
directories: string[];
|
|
21
|
+
} | {
|
|
22
|
+
item_types: ItemType[];
|
|
23
|
+
item_prefixes: {
|
|
24
|
+
requirement: string;
|
|
25
|
+
feature: string;
|
|
26
|
+
task: string;
|
|
27
|
+
bug: string;
|
|
28
|
+
test: string;
|
|
29
|
+
};
|
|
30
|
+
directories: string[];
|
|
31
|
+
} | {
|
|
32
|
+
item_types: ItemType[];
|
|
33
|
+
item_prefixes: {
|
|
34
|
+
epic: string;
|
|
35
|
+
story: string;
|
|
36
|
+
requirement: string;
|
|
37
|
+
feature: string;
|
|
38
|
+
task: string;
|
|
39
|
+
bug: string;
|
|
40
|
+
spike: string;
|
|
41
|
+
test: string;
|
|
42
|
+
};
|
|
43
|
+
directories: string[];
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Generates a new item ID with proper prefix and number
|
|
47
|
+
*/
|
|
48
|
+
export declare function generateItemId(type: string, counter: number, prefixes?: Record<string, string>): string;
|
|
49
|
+
/**
|
|
50
|
+
* Parses an item ID into type and number
|
|
51
|
+
*/
|
|
52
|
+
export declare function parseItemId(id: string): {
|
|
53
|
+
type: ItemType;
|
|
54
|
+
number: number;
|
|
55
|
+
} | null;
|
|
56
|
+
/**
|
|
57
|
+
* Formats a date for display
|
|
58
|
+
*/
|
|
59
|
+
export declare function formatDate(date: string | Date): string;
|
|
60
|
+
/**
|
|
61
|
+
* Gets current timestamp in ISO format
|
|
62
|
+
*/
|
|
63
|
+
export declare function getCurrentTimestamp(): string;
|
|
64
|
+
/**
|
|
65
|
+
* Validates email format
|
|
66
|
+
*/
|
|
67
|
+
export declare function isValidEmail(email: string): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Sanitizes a string for use in filenames
|
|
70
|
+
*/
|
|
71
|
+
export declare function sanitizeFilename(name: string): string;
|
|
72
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGjE,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAStD,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW;gBAGU,QAAQ,EAAE;;;;;;;;;;;gBAYV,QAAQ,EAAE;;;;;;;;;;gBAoBtE,QAAQ,EAAE;;;;;;;;;;;;EAyBpB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,MAAM,CAgBR;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAmBjF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGtD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKrD"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
// Export cache utilities
|
|
2
|
+
export { ContextCache, CACHE_CONFIG, getCache, clearGlobalCache, } from './cache.js';
|
|
3
|
+
/**
|
|
4
|
+
* Type to plural directory mapping
|
|
5
|
+
*/
|
|
6
|
+
export const TYPE_TO_DIRECTORY = {
|
|
7
|
+
epic: 'epics',
|
|
8
|
+
story: 'stories',
|
|
9
|
+
task: 'tasks',
|
|
10
|
+
requirement: 'requirements',
|
|
11
|
+
feature: 'features',
|
|
12
|
+
bug: 'bugs',
|
|
13
|
+
spike: 'spikes',
|
|
14
|
+
test: 'tests',
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Get methodology configuration
|
|
18
|
+
*/
|
|
19
|
+
export function getMethodologyConfig(methodology) {
|
|
20
|
+
const configs = {
|
|
21
|
+
scrum: {
|
|
22
|
+
item_types: ['epic', 'story', 'task', 'bug', 'spike', 'test'],
|
|
23
|
+
item_prefixes: {
|
|
24
|
+
epic: 'EPIC',
|
|
25
|
+
story: 'STORY',
|
|
26
|
+
task: 'TASK',
|
|
27
|
+
bug: 'BUG',
|
|
28
|
+
spike: 'SPIKE',
|
|
29
|
+
test: 'TEST',
|
|
30
|
+
},
|
|
31
|
+
directories: ['epics', 'stories', 'tasks', 'bugs', 'spikes', 'tests'],
|
|
32
|
+
},
|
|
33
|
+
waterfall: {
|
|
34
|
+
item_types: ['requirement', 'feature', 'task', 'bug', 'test'],
|
|
35
|
+
item_prefixes: {
|
|
36
|
+
requirement: 'REQ',
|
|
37
|
+
feature: 'FEAT',
|
|
38
|
+
task: 'TASK',
|
|
39
|
+
bug: 'BUG',
|
|
40
|
+
test: 'TEST',
|
|
41
|
+
},
|
|
42
|
+
directories: ['requirements', 'features', 'tasks', 'bugs', 'tests'],
|
|
43
|
+
},
|
|
44
|
+
hybrid: {
|
|
45
|
+
item_types: [
|
|
46
|
+
'epic',
|
|
47
|
+
'story',
|
|
48
|
+
'requirement',
|
|
49
|
+
'feature',
|
|
50
|
+
'task',
|
|
51
|
+
'bug',
|
|
52
|
+
'spike',
|
|
53
|
+
'test',
|
|
54
|
+
],
|
|
55
|
+
item_prefixes: {
|
|
56
|
+
epic: 'EPIC',
|
|
57
|
+
story: 'STORY',
|
|
58
|
+
requirement: 'REQ',
|
|
59
|
+
feature: 'FEAT',
|
|
60
|
+
task: 'TASK',
|
|
61
|
+
bug: 'BUG',
|
|
62
|
+
spike: 'SPIKE',
|
|
63
|
+
test: 'TEST',
|
|
64
|
+
},
|
|
65
|
+
directories: [
|
|
66
|
+
'epics',
|
|
67
|
+
'stories',
|
|
68
|
+
'requirements',
|
|
69
|
+
'features',
|
|
70
|
+
'tasks',
|
|
71
|
+
'bugs',
|
|
72
|
+
'spikes',
|
|
73
|
+
'tests',
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
return configs[methodology];
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Generates a new item ID with proper prefix and number
|
|
81
|
+
*/
|
|
82
|
+
export function generateItemId(type, counter, prefixes) {
|
|
83
|
+
const defaultPrefixes = {
|
|
84
|
+
epic: 'EPIC',
|
|
85
|
+
story: 'STORY',
|
|
86
|
+
task: 'TASK',
|
|
87
|
+
requirement: 'REQ',
|
|
88
|
+
feature: 'FEAT',
|
|
89
|
+
bug: 'BUG',
|
|
90
|
+
spike: 'SPIKE',
|
|
91
|
+
test: 'TEST',
|
|
92
|
+
};
|
|
93
|
+
const prefixMap = prefixes || defaultPrefixes;
|
|
94
|
+
const prefix = prefixMap[type] || 'ITEM';
|
|
95
|
+
const paddedNumber = counter.toString().padStart(3, '0');
|
|
96
|
+
return `${prefix}-${paddedNumber}`;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Parses an item ID into type and number
|
|
100
|
+
*/
|
|
101
|
+
export function parseItemId(id) {
|
|
102
|
+
const match = id.match(/^(EPIC|STORY|TASK|REQ|FEAT|BUG|SPIKE|TEST)-(\d+)$/);
|
|
103
|
+
if (!match)
|
|
104
|
+
return null;
|
|
105
|
+
const typeMap = {
|
|
106
|
+
EPIC: 'epic',
|
|
107
|
+
STORY: 'story',
|
|
108
|
+
TASK: 'task',
|
|
109
|
+
REQ: 'requirement',
|
|
110
|
+
FEAT: 'feature',
|
|
111
|
+
BUG: 'bug',
|
|
112
|
+
SPIKE: 'spike',
|
|
113
|
+
TEST: 'test',
|
|
114
|
+
};
|
|
115
|
+
return {
|
|
116
|
+
type: typeMap[match[1]],
|
|
117
|
+
number: Number.parseInt(match[2], 10),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Formats a date for display
|
|
122
|
+
*/
|
|
123
|
+
export function formatDate(date) {
|
|
124
|
+
const d = typeof date === 'string' ? new Date(date) : date;
|
|
125
|
+
return d.toISOString();
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Gets current timestamp in ISO format
|
|
129
|
+
*/
|
|
130
|
+
export function getCurrentTimestamp() {
|
|
131
|
+
return new Date().toISOString();
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Validates email format
|
|
135
|
+
*/
|
|
136
|
+
export function isValidEmail(email) {
|
|
137
|
+
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Sanitizes a string for use in filenames
|
|
141
|
+
*/
|
|
142
|
+
export function sanitizeFilename(name) {
|
|
143
|
+
return name
|
|
144
|
+
.toLowerCase()
|
|
145
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
146
|
+
.replace(/^-|-$/g, '');
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,18 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@schnick371/devsteps-shared",
|
|
3
|
-
"version": "0.0
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
"task-tracking",
|
|
8
|
-
"project-management",
|
|
9
|
-
"agile",
|
|
10
|
-
"scrum",
|
|
11
|
-
"waterfall",
|
|
12
|
-
"ai-assisted",
|
|
13
|
-
"development-workflow"
|
|
14
|
-
],
|
|
15
|
-
"author": "Thomas Hertel <thomas.hantke@devcrumbs.dev>",
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"license": "Apache-2.0",
|
|
5
|
+
"description": "Never Code Alone. Shared types, schemas, and utilities for DevSteps task tracking.",
|
|
6
|
+
"author": "Thomas Hertel <thomas.hantke@devsteps.dev>",
|
|
16
7
|
"homepage": "https://devsteps.dev",
|
|
17
8
|
"repository": {
|
|
18
9
|
"type": "git",
|
|
@@ -22,9 +13,51 @@
|
|
|
22
13
|
"bugs": {
|
|
23
14
|
"url": "https://github.com/Schnick371/devsteps/issues"
|
|
24
15
|
},
|
|
25
|
-
"
|
|
16
|
+
"keywords": [
|
|
17
|
+
"devsteps",
|
|
18
|
+
"task-tracking",
|
|
19
|
+
"project-management",
|
|
20
|
+
"agile",
|
|
21
|
+
"scrum",
|
|
22
|
+
"waterfall"
|
|
23
|
+
],
|
|
24
|
+
"type": "module",
|
|
25
|
+
"main": "./dist/index.js",
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"exports": {
|
|
28
|
+
".": {
|
|
29
|
+
"types": "./dist/index.d.ts",
|
|
30
|
+
"default": "./dist/index.js"
|
|
31
|
+
},
|
|
32
|
+
"./schemas": {
|
|
33
|
+
"types": "./dist/schemas/index.d.ts",
|
|
34
|
+
"default": "./dist/schemas/index.js"
|
|
35
|
+
},
|
|
36
|
+
"./types": {
|
|
37
|
+
"types": "./dist/types/index.d.ts",
|
|
38
|
+
"default": "./dist/types/index.js"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"files": [
|
|
42
|
+
"dist",
|
|
43
|
+
"src",
|
|
44
|
+
"README.md",
|
|
45
|
+
"LICENSE.md"
|
|
46
|
+
],
|
|
26
47
|
"publishConfig": {
|
|
27
48
|
"access": "public"
|
|
28
49
|
},
|
|
29
|
-
"
|
|
50
|
+
"scripts": {
|
|
51
|
+
"build": "tsc",
|
|
52
|
+
"dev": "tsc --watch",
|
|
53
|
+
"typecheck": "tsc --noEmit",
|
|
54
|
+
"clean": "rm -rf dist"
|
|
55
|
+
},
|
|
56
|
+
"dependencies": {
|
|
57
|
+
"zod": "latest"
|
|
58
|
+
},
|
|
59
|
+
"devDependencies": {
|
|
60
|
+
"@types/bun": "latest",
|
|
61
|
+
"typescript": "latest"
|
|
62
|
+
}
|
|
30
63
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["add.ts"],"names":[],"mappings":";;AAkCA,0BA8GC;AAhJD,qCAAkE;AAClE,yCAAiC;AASjC,gDAA2F;AAoB3F;;;GAGG;AACI,KAAK,UAAU,OAAO,CAAC,SAAiB,EAAE,IAAiB;IAChE,uBAAuB;IACvB,IAAI,CAAC,IAAA,oBAAU,EAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,wBAAwB;IACxB,MAAM,UAAU,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAiB,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAgB,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAExE,kEAAkE;IAClE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpB,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;QACpB,sCAAsC;QACtC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC1C,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,MAAM,UAAU,GAAG,4BAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAElD,qDAAqD;IACrD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjD,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,0BAA0B,MAAM,gFAAgF,CACjH,CAAC;IACJ,CAAC;IAED,oBAAoB;IACpB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IAEpC,kBAAkB;IAClB,MAAM,GAAG,GAAG,IAAA,8BAAmB,GAAE,CAAC;IAClC,MAAM,QAAQ,GAAiB;QAC7B,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,SAAS;QACpC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ;QACnC,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc;QACvD,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,EAAE;QACzC,YAAY,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,gBAAgB,EAAE,EAAE;YACpB,WAAW,EAAE,EAAE;YACf,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;YAChB,aAAa,EAAE,EAAE;YACjB,UAAU,EAAE,EAAE;YACd,eAAe,EAAE,EAAE;SACpB;QACD,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;QACrB,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,gBAAgB;IAChB,MAAM,OAAO,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAA,gBAAI,EAAC,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,IAAA,gBAAI,EAAC,OAAO,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC;IAEtD,IAAA,uBAAa,EAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAE/D,mBAAmB;IACnB,MAAM,WAAW,GACf,IAAI,CAAC,WAAW,IAAI,KAAK,IAAI,CAAC,KAAK,8CAA8C,CAAC;IACpF,IAAA,uBAAa,EAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAE5C,eAAe;IACf,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QACf,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ;QACnC,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IAEH,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;IACzB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACtE,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;IACvC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3E,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAErE,IAAA,uBAAa,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAEzD,OAAO;QACL,MAAM;QACN,QAAQ;QACR,MAAM;KACP,CAAC;AACJ,CAAC"}
|