gthinking 1.2.1 → 2.1.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/.eslintrc.js +34 -0
- package/ANALYSIS_SUMMARY.md +363 -0
- package/README.md +230 -245
- package/dist/analysis/analysis-engine.d.ts +63 -0
- package/dist/analysis/analysis-engine.d.ts.map +1 -0
- package/dist/analysis/analysis-engine.js +322 -0
- package/dist/analysis/analysis-engine.js.map +1 -0
- package/dist/core/config.d.ts +1419 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +361 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/engine.d.ts +176 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/engine.js +604 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/core/errors.d.ts +153 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +287 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/{types.js → core/index.js} +8 -4
- package/dist/core/index.js.map +1 -0
- package/dist/core/pipeline.d.ts +121 -0
- package/dist/core/pipeline.d.ts.map +1 -0
- package/dist/core/pipeline.js +289 -0
- package/dist/core/pipeline.js.map +1 -0
- package/dist/core/rate-limiter.d.ts +58 -0
- package/dist/core/rate-limiter.d.ts.map +1 -0
- package/dist/core/rate-limiter.js +133 -0
- package/dist/core/rate-limiter.js.map +1 -0
- package/dist/core/session-manager.d.ts +96 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +223 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/creativity/creativity-engine.d.ts +6 -0
- package/dist/creativity/creativity-engine.d.ts.map +1 -0
- package/dist/creativity/creativity-engine.js +17 -0
- package/dist/creativity/creativity-engine.js.map +1 -0
- package/dist/index.d.ts +24 -32
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +130 -104
- package/dist/index.js.map +1 -1
- package/dist/learning/learning-engine.d.ts +6 -0
- package/dist/learning/learning-engine.d.ts.map +1 -0
- package/dist/learning/learning-engine.js +17 -0
- package/dist/learning/learning-engine.js.map +1 -0
- package/dist/llm/index.d.ts +10 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +26 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/llm-service.d.ts +109 -0
- package/dist/llm/llm-service.d.ts.map +1 -0
- package/dist/llm/llm-service.js +224 -0
- package/dist/llm/llm-service.js.map +1 -0
- package/dist/llm/providers/base.d.ts +85 -0
- package/dist/llm/providers/base.d.ts.map +1 -0
- package/dist/llm/providers/base.js +57 -0
- package/dist/llm/providers/base.js.map +1 -0
- package/dist/llm/providers/cli.d.ts +23 -0
- package/dist/llm/providers/cli.d.ts.map +1 -0
- package/dist/llm/providers/cli.js +158 -0
- package/dist/llm/providers/cli.js.map +1 -0
- package/dist/llm/providers/gemini.d.ts +30 -0
- package/dist/llm/providers/gemini.d.ts.map +1 -0
- package/dist/llm/providers/gemini.js +168 -0
- package/dist/llm/providers/gemini.js.map +1 -0
- package/dist/llm/sanitization.d.ts +50 -0
- package/dist/llm/sanitization.d.ts.map +1 -0
- package/dist/llm/sanitization.js +149 -0
- package/dist/llm/sanitization.js.map +1 -0
- package/dist/{server.d.ts.map → mcp/server.d.ts.map} +1 -1
- package/dist/mcp/server.js +108 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/planning/planning-engine.d.ts +6 -0
- package/dist/planning/planning-engine.d.ts.map +1 -0
- package/dist/planning/planning-engine.js +17 -0
- package/dist/planning/planning-engine.js.map +1 -0
- package/dist/reasoning/reasoning-engine.d.ts +6 -0
- package/dist/reasoning/reasoning-engine.d.ts.map +1 -0
- package/dist/reasoning/reasoning-engine.js +17 -0
- package/dist/reasoning/reasoning-engine.js.map +1 -0
- package/dist/search/search-engine.d.ts +99 -0
- package/dist/search/search-engine.d.ts.map +1 -0
- package/dist/search/search-engine.js +271 -0
- package/dist/search/search-engine.js.map +1 -0
- package/dist/synthesis/synthesis-engine.d.ts +6 -0
- package/dist/synthesis/synthesis-engine.d.ts.map +1 -0
- package/dist/synthesis/synthesis-engine.js +17 -0
- package/dist/synthesis/synthesis-engine.js.map +1 -0
- package/dist/types/analysis.d.ts +1534 -49
- package/dist/types/analysis.d.ts.map +1 -1
- package/dist/types/analysis.js +250 -0
- package/dist/types/analysis.js.map +1 -1
- package/dist/types/core.d.ts +257 -30
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/core.js +148 -18
- package/dist/types/core.js.map +1 -1
- package/dist/types/creativity.d.ts +2871 -56
- package/dist/types/creativity.d.ts.map +1 -1
- package/dist/types/creativity.js +195 -0
- package/dist/types/creativity.js.map +1 -1
- package/dist/types/index.d.ts +6 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +17 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/learning.d.ts +851 -61
- package/dist/types/learning.d.ts.map +1 -1
- package/dist/types/learning.js +155 -0
- package/dist/types/learning.js.map +1 -1
- package/dist/types/planning.d.ts +2223 -71
- package/dist/types/planning.d.ts.map +1 -1
- package/dist/types/planning.js +190 -0
- package/dist/types/planning.js.map +1 -1
- package/dist/types/reasoning.d.ts +2209 -72
- package/dist/types/reasoning.d.ts.map +1 -1
- package/dist/types/reasoning.js +200 -1
- package/dist/types/reasoning.js.map +1 -1
- package/dist/types/search.d.ts +981 -53
- package/dist/types/search.d.ts.map +1 -1
- package/dist/types/search.js +137 -0
- package/dist/types/search.js.map +1 -1
- package/dist/types/synthesis.d.ts +583 -37
- package/dist/types/synthesis.d.ts.map +1 -1
- package/dist/types/synthesis.js +138 -0
- package/dist/types/synthesis.js.map +1 -1
- package/dist/utils/cache.d.ts +144 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +288 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/id-generator.d.ts +89 -0
- package/dist/utils/id-generator.d.ts.map +1 -0
- package/dist/utils/id-generator.js +132 -0
- package/dist/utils/id-generator.js.map +1 -0
- package/dist/utils/index.d.ts +11 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +33 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +142 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +248 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/metrics.d.ts +149 -0
- package/dist/utils/metrics.d.ts.map +1 -0
- package/dist/utils/metrics.js +296 -0
- package/dist/utils/metrics.js.map +1 -0
- package/dist/utils/timer.d.ts +7 -0
- package/dist/utils/timer.d.ts.map +1 -0
- package/dist/utils/timer.js +17 -0
- package/dist/utils/timer.js.map +1 -0
- package/dist/utils/validation.d.ts +147 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +275 -0
- package/dist/utils/validation.js.map +1 -0
- package/docs/API.md +411 -0
- package/docs/ARCHITECTURE.md +271 -0
- package/docs/CHANGELOG.md +283 -0
- package/jest.config.js +28 -0
- package/package.json +43 -30
- package/src/analysis/analysis-engine.ts +383 -0
- package/src/core/config.ts +406 -0
- package/src/core/engine.ts +785 -0
- package/src/core/errors.ts +349 -0
- package/src/core/index.ts +12 -0
- package/src/core/pipeline.ts +424 -0
- package/src/core/rate-limiter.ts +155 -0
- package/src/core/session-manager.ts +269 -0
- package/src/creativity/creativity-engine.ts +14 -0
- package/src/index.ts +178 -0
- package/src/learning/learning-engine.ts +14 -0
- package/src/llm/index.ts +10 -0
- package/src/llm/llm-service.ts +285 -0
- package/src/llm/providers/base.ts +146 -0
- package/src/llm/providers/cli.ts +186 -0
- package/src/llm/providers/gemini.ts +201 -0
- package/src/llm/sanitization.ts +178 -0
- package/src/mcp/server.ts +117 -0
- package/src/planning/planning-engine.ts +14 -0
- package/src/reasoning/reasoning-engine.ts +14 -0
- package/src/search/search-engine.ts +333 -0
- package/src/synthesis/synthesis-engine.ts +14 -0
- package/src/types/analysis.ts +337 -0
- package/src/types/core.ts +342 -0
- package/src/types/creativity.ts +268 -0
- package/src/types/index.ts +31 -0
- package/src/types/learning.ts +215 -0
- package/src/types/planning.ts +251 -0
- package/src/types/reasoning.ts +288 -0
- package/src/types/search.ts +192 -0
- package/src/types/synthesis.ts +187 -0
- package/src/utils/cache.ts +363 -0
- package/src/utils/id-generator.ts +135 -0
- package/src/utils/index.ts +22 -0
- package/src/utils/logger.ts +290 -0
- package/src/utils/metrics.ts +380 -0
- package/src/utils/timer.ts +15 -0
- package/src/utils/validation.ts +297 -0
- package/tests/setup.ts +22 -0
- package/tests/unit/cache.test.ts +189 -0
- package/tests/unit/engine.test.ts +179 -0
- package/tests/unit/validation.test.ts +218 -0
- package/tsconfig.json +17 -12
- package/GEMINI.md +0 -68
- package/analysis.ts +0 -1063
- package/creativity.ts +0 -1055
- package/dist/analysis.d.ts +0 -54
- package/dist/analysis.d.ts.map +0 -1
- package/dist/analysis.js +0 -866
- package/dist/analysis.js.map +0 -1
- package/dist/creativity.d.ts +0 -81
- package/dist/creativity.d.ts.map +0 -1
- package/dist/creativity.js +0 -828
- package/dist/creativity.js.map +0 -1
- package/dist/engine.d.ts +0 -90
- package/dist/engine.d.ts.map +0 -1
- package/dist/engine.js +0 -677
- package/dist/engine.js.map +0 -1
- package/dist/examples.d.ts +0 -7
- package/dist/examples.d.ts.map +0 -1
- package/dist/examples.js +0 -506
- package/dist/examples.js.map +0 -1
- package/dist/learning.d.ts +0 -72
- package/dist/learning.d.ts.map +0 -1
- package/dist/learning.js +0 -615
- package/dist/learning.js.map +0 -1
- package/dist/llm-service.d.ts +0 -21
- package/dist/llm-service.d.ts.map +0 -1
- package/dist/llm-service.js +0 -100
- package/dist/llm-service.js.map +0 -1
- package/dist/planning.d.ts +0 -58
- package/dist/planning.d.ts.map +0 -1
- package/dist/planning.js +0 -824
- package/dist/planning.js.map +0 -1
- package/dist/reasoning.d.ts +0 -73
- package/dist/reasoning.d.ts.map +0 -1
- package/dist/reasoning.js +0 -845
- package/dist/reasoning.js.map +0 -1
- package/dist/search-discovery.d.ts +0 -73
- package/dist/search-discovery.d.ts.map +0 -1
- package/dist/search-discovery.js +0 -548
- package/dist/search-discovery.js.map +0 -1
- package/dist/server.js +0 -113
- package/dist/server.js.map +0 -1
- package/dist/types/engine.d.ts +0 -55
- package/dist/types/engine.d.ts.map +0 -1
- package/dist/types/engine.js +0 -3
- package/dist/types/engine.js.map +0 -1
- package/dist/types.d.ts +0 -6
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/engine.ts +0 -947
- package/examples.ts +0 -717
- package/index.ts +0 -106
- package/learning.ts +0 -779
- package/llm-service.ts +0 -120
- package/planning.ts +0 -1028
- package/reasoning.ts +0 -1079
- package/search-discovery.ts +0 -700
- package/server.ts +0 -115
- package/types/analysis.ts +0 -69
- package/types/core.ts +0 -90
- package/types/creativity.ts +0 -72
- package/types/engine.ts +0 -60
- package/types/index.ts +0 -9
- package/types/learning.ts +0 -69
- package/types/planning.ts +0 -85
- package/types/reasoning.ts +0 -92
- package/types/search.ts +0 -58
- package/types/synthesis.ts +0 -42
- package/types.ts +0 -6
- /package/dist/{server.d.ts → mcp/server.d.ts} +0 -0
package/dist/types/synthesis.js
CHANGED
|
@@ -1,3 +1,141 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Synthesis Types for gthinking v2.0.0
|
|
4
|
+
* Types for synthesis and final output generation
|
|
5
|
+
*/
|
|
2
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.FormattedOutputSchema = exports.FormatOptionsSchema = exports.OutputFormatSchema = exports.OutputFormat = exports.SynthesisResultSchema = exports.ConfidenceBreakdownSchema = exports.DevilsAdvocatePointSchema = exports.EvaluationResultSchema = exports.RecommendationSchema = exports.SynthesisRequestSchema = void 0;
|
|
8
|
+
const zod_1 = require("zod");
|
|
9
|
+
const core_1 = require("./core");
|
|
10
|
+
/**
|
|
11
|
+
* Synthesis Request Schema
|
|
12
|
+
*/
|
|
13
|
+
exports.SynthesisRequestSchema = zod_1.z.object({
|
|
14
|
+
query: zod_1.z.string().min(1),
|
|
15
|
+
stageResults: zod_1.z.array(zod_1.z.object({
|
|
16
|
+
stage: zod_1.z.string(),
|
|
17
|
+
result: zod_1.z.unknown(),
|
|
18
|
+
confidence: zod_1.z.number().min(0).max(1),
|
|
19
|
+
})).min(1),
|
|
20
|
+
options: zod_1.z.object({
|
|
21
|
+
includeDevilsAdvocate: zod_1.z.boolean().default(true),
|
|
22
|
+
includeConfidenceBreakdown: zod_1.z.boolean().default(true),
|
|
23
|
+
maxRecommendations: zod_1.z.number().positive().default(5),
|
|
24
|
+
format: zod_1.z.enum(['detailed', 'summary', 'structured', 'narrative']).default('detailed'),
|
|
25
|
+
language: zod_1.z.string().default('en'),
|
|
26
|
+
}).default({}),
|
|
27
|
+
});
|
|
28
|
+
/**
|
|
29
|
+
* Recommendation Schema
|
|
30
|
+
*/
|
|
31
|
+
exports.RecommendationSchema = zod_1.z.object({
|
|
32
|
+
id: zod_1.z.string().uuid(),
|
|
33
|
+
priority: zod_1.z.number().min(1).max(5),
|
|
34
|
+
title: zod_1.z.string(),
|
|
35
|
+
description: zod_1.z.string(),
|
|
36
|
+
rationale: zod_1.z.string(),
|
|
37
|
+
confidence: zod_1.z.number().min(0).max(1),
|
|
38
|
+
actions: zod_1.z.array(zod_1.z.string()),
|
|
39
|
+
expectedOutcome: zod_1.z.string(),
|
|
40
|
+
risks: zod_1.z.array(zod_1.z.string()).default([]),
|
|
41
|
+
resources: zod_1.z.array(zod_1.z.string()).default([]),
|
|
42
|
+
timeline: zod_1.z.string().optional(),
|
|
43
|
+
});
|
|
44
|
+
/**
|
|
45
|
+
* Evaluation Result Schema
|
|
46
|
+
*/
|
|
47
|
+
exports.EvaluationResultSchema = zod_1.z.object({
|
|
48
|
+
criterion: zod_1.z.string(),
|
|
49
|
+
score: zod_1.z.number().min(0).max(1),
|
|
50
|
+
weight: zod_1.z.number().min(0).max(1),
|
|
51
|
+
explanation: zod_1.z.string(),
|
|
52
|
+
confidence: zod_1.z.number().min(0).max(1),
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* Devil's Advocate Point Schema
|
|
56
|
+
*/
|
|
57
|
+
exports.DevilsAdvocatePointSchema = zod_1.z.object({
|
|
58
|
+
id: zod_1.z.string().uuid(),
|
|
59
|
+
target: zod_1.z.string(), // What is being challenged
|
|
60
|
+
challenge: zod_1.z.string(),
|
|
61
|
+
reasoning: zod_1.z.string(),
|
|
62
|
+
severity: zod_1.z.enum(['low', 'medium', 'high', 'critical']),
|
|
63
|
+
suggestedAlternative: zod_1.z.string().optional(),
|
|
64
|
+
confidence: zod_1.z.number().min(0).max(1),
|
|
65
|
+
});
|
|
66
|
+
/**
|
|
67
|
+
* Confidence Breakdown Schema
|
|
68
|
+
*/
|
|
69
|
+
exports.ConfidenceBreakdownSchema = zod_1.z.object({
|
|
70
|
+
overall: zod_1.z.number().min(0).max(1),
|
|
71
|
+
byStage: zod_1.z.record(zod_1.z.number().min(0).max(1)),
|
|
72
|
+
bySource: zod_1.z.record(zod_1.z.number().min(0).max(1)),
|
|
73
|
+
factors: zod_1.z.array(zod_1.z.object({
|
|
74
|
+
factor: zod_1.z.string(),
|
|
75
|
+
impact: zod_1.z.number().min(-1).max(1),
|
|
76
|
+
description: zod_1.z.string(),
|
|
77
|
+
})),
|
|
78
|
+
});
|
|
79
|
+
/**
|
|
80
|
+
* Synthesis Result Schema
|
|
81
|
+
*/
|
|
82
|
+
exports.SynthesisResultSchema = core_1.BaseResultSchema.extend({
|
|
83
|
+
query: zod_1.z.string(),
|
|
84
|
+
summary: zod_1.z.string(),
|
|
85
|
+
keyFindings: zod_1.z.array(zod_1.z.string()),
|
|
86
|
+
recommendations: zod_1.z.array(exports.RecommendationSchema),
|
|
87
|
+
evaluation: zod_1.z.array(exports.EvaluationResultSchema),
|
|
88
|
+
devilsAdvocate: zod_1.z.array(exports.DevilsAdvocatePointSchema).default([]),
|
|
89
|
+
confidenceBreakdown: exports.ConfidenceBreakdownSchema,
|
|
90
|
+
nextSteps: zod_1.z.array(zod_1.z.string()).default([]),
|
|
91
|
+
additionalConsiderations: zod_1.z.array(zod_1.z.string()).default([]),
|
|
92
|
+
sources: zod_1.z.array(zod_1.z.object({
|
|
93
|
+
id: zod_1.z.string(),
|
|
94
|
+
name: zod_1.z.string(),
|
|
95
|
+
type: zod_1.z.string(),
|
|
96
|
+
credibility: zod_1.z.number().min(0).max(1),
|
|
97
|
+
})).default([]),
|
|
98
|
+
metadata: zod_1.z.record(zod_1.z.unknown()).default({}),
|
|
99
|
+
});
|
|
100
|
+
/**
|
|
101
|
+
* Output Format Enum
|
|
102
|
+
*/
|
|
103
|
+
var OutputFormat;
|
|
104
|
+
(function (OutputFormat) {
|
|
105
|
+
OutputFormat["JSON"] = "json";
|
|
106
|
+
OutputFormat["MARKDOWN"] = "markdown";
|
|
107
|
+
OutputFormat["HTML"] = "html";
|
|
108
|
+
OutputFormat["PLAIN"] = "plain";
|
|
109
|
+
OutputFormat["STRUCTURED"] = "structured";
|
|
110
|
+
})(OutputFormat || (exports.OutputFormat = OutputFormat = {}));
|
|
111
|
+
/**
|
|
112
|
+
* Output Format Schema
|
|
113
|
+
*/
|
|
114
|
+
exports.OutputFormatSchema = zod_1.z.nativeEnum(OutputFormat);
|
|
115
|
+
/**
|
|
116
|
+
* Format Options Schema
|
|
117
|
+
*/
|
|
118
|
+
exports.FormatOptionsSchema = zod_1.z.object({
|
|
119
|
+
format: exports.OutputFormatSchema.default(OutputFormat.MARKDOWN),
|
|
120
|
+
includeMetadata: zod_1.z.boolean().default(false),
|
|
121
|
+
includeTimestamps: zod_1.z.boolean().default(true),
|
|
122
|
+
includeConfidence: zod_1.z.boolean().default(true),
|
|
123
|
+
maxLength: zod_1.z.number().positive().optional(),
|
|
124
|
+
language: zod_1.z.string().default('en'),
|
|
125
|
+
template: zod_1.z.string().optional(),
|
|
126
|
+
});
|
|
127
|
+
/**
|
|
128
|
+
* Formatted Output Schema
|
|
129
|
+
*/
|
|
130
|
+
exports.FormattedOutputSchema = zod_1.z.object({
|
|
131
|
+
content: zod_1.z.string(),
|
|
132
|
+
format: exports.OutputFormatSchema,
|
|
133
|
+
metadata: zod_1.z.object({
|
|
134
|
+
generatedAt: zod_1.z.date(),
|
|
135
|
+
version: zod_1.z.string(),
|
|
136
|
+
confidence: zod_1.z.number().min(0).max(1),
|
|
137
|
+
wordCount: zod_1.z.number().nonnegative(),
|
|
138
|
+
charCount: zod_1.z.number().nonnegative(),
|
|
139
|
+
}),
|
|
140
|
+
});
|
|
3
141
|
//# sourceMappingURL=synthesis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synthesis.js","sourceRoot":"","sources":["../../types/synthesis.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"synthesis.js","sourceRoot":"","sources":["../../src/types/synthesis.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache Utility for gthinking v2.0.0
|
|
3
|
+
* In-memory caching with TTL support
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Cache statistics interface
|
|
7
|
+
*/
|
|
8
|
+
export interface CacheStats {
|
|
9
|
+
size: number;
|
|
10
|
+
hits: number;
|
|
11
|
+
misses: number;
|
|
12
|
+
hitRate: number;
|
|
13
|
+
evictions: number;
|
|
14
|
+
totalAccesses: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Cache configuration interface
|
|
18
|
+
*/
|
|
19
|
+
export interface CacheConfig {
|
|
20
|
+
maxSize: number;
|
|
21
|
+
defaultTTL: number;
|
|
22
|
+
checkInterval: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* In-memory cache with TTL support
|
|
26
|
+
*/
|
|
27
|
+
export declare class Cache<T> {
|
|
28
|
+
private cache;
|
|
29
|
+
private config;
|
|
30
|
+
private stats;
|
|
31
|
+
private cleanupInterval;
|
|
32
|
+
constructor(config?: Partial<CacheConfig>);
|
|
33
|
+
/**
|
|
34
|
+
* Get a value from the cache
|
|
35
|
+
* @param key - The cache key
|
|
36
|
+
* @returns The cached value or undefined
|
|
37
|
+
*/
|
|
38
|
+
get(key: string): T | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Set a value in the cache
|
|
41
|
+
* @param key - The cache key
|
|
42
|
+
* @param value - The value to cache
|
|
43
|
+
* @param ttl - Time to live in milliseconds (optional)
|
|
44
|
+
*/
|
|
45
|
+
set(key: string, value: T, ttl?: number): void;
|
|
46
|
+
/**
|
|
47
|
+
* Check if a key exists in the cache
|
|
48
|
+
* @param key - The cache key
|
|
49
|
+
* @returns True if the key exists and hasn't expired
|
|
50
|
+
*/
|
|
51
|
+
has(key: string): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Delete a key from the cache
|
|
54
|
+
* @param key - The cache key
|
|
55
|
+
* @returns True if the key was deleted
|
|
56
|
+
*/
|
|
57
|
+
delete(key: string): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Clear all entries from the cache
|
|
60
|
+
*/
|
|
61
|
+
clear(): void;
|
|
62
|
+
/**
|
|
63
|
+
* Get cache statistics
|
|
64
|
+
* @returns Cache statistics
|
|
65
|
+
*/
|
|
66
|
+
getStats(): CacheStats;
|
|
67
|
+
/**
|
|
68
|
+
* Reset cache statistics
|
|
69
|
+
*/
|
|
70
|
+
resetStats(): void;
|
|
71
|
+
/**
|
|
72
|
+
* Get all keys in the cache
|
|
73
|
+
* @returns Array of cache keys
|
|
74
|
+
*/
|
|
75
|
+
keys(): string[];
|
|
76
|
+
/**
|
|
77
|
+
* Get the number of entries in the cache
|
|
78
|
+
* @returns Number of entries
|
|
79
|
+
*/
|
|
80
|
+
size(): number;
|
|
81
|
+
/**
|
|
82
|
+
* Dispose of the cache and stop cleanup interval
|
|
83
|
+
*/
|
|
84
|
+
dispose(): void;
|
|
85
|
+
/**
|
|
86
|
+
* Check if an entry has expired
|
|
87
|
+
* @param entry - The cache entry
|
|
88
|
+
* @returns True if the entry has expired
|
|
89
|
+
*/
|
|
90
|
+
private isExpired;
|
|
91
|
+
/**
|
|
92
|
+
* Evict the least recently used entry
|
|
93
|
+
*/
|
|
94
|
+
private evictLRU;
|
|
95
|
+
/**
|
|
96
|
+
* Clean up expired entries
|
|
97
|
+
*/
|
|
98
|
+
private cleanup;
|
|
99
|
+
/**
|
|
100
|
+
* Start the cleanup interval
|
|
101
|
+
*/
|
|
102
|
+
private startCleanupInterval;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Cache manager for managing multiple cache instances
|
|
106
|
+
*/
|
|
107
|
+
export declare class CacheManager {
|
|
108
|
+
private caches;
|
|
109
|
+
/**
|
|
110
|
+
* Get or create a cache instance
|
|
111
|
+
* @param name - The cache name
|
|
112
|
+
* @param config - Cache configuration
|
|
113
|
+
* @returns Cache instance
|
|
114
|
+
*/
|
|
115
|
+
getCache<T>(name: string, config?: Partial<CacheConfig>): Cache<T>;
|
|
116
|
+
/**
|
|
117
|
+
* Delete a cache instance
|
|
118
|
+
* @param name - The cache name
|
|
119
|
+
*/
|
|
120
|
+
deleteCache(name: string): void;
|
|
121
|
+
/**
|
|
122
|
+
* Clear all caches
|
|
123
|
+
*/
|
|
124
|
+
clearAll(): void;
|
|
125
|
+
/**
|
|
126
|
+
* Dispose of all caches
|
|
127
|
+
*/
|
|
128
|
+
dispose(): void;
|
|
129
|
+
/**
|
|
130
|
+
* Get all cache names
|
|
131
|
+
* @returns Array of cache names
|
|
132
|
+
*/
|
|
133
|
+
getCacheNames(): string[];
|
|
134
|
+
}
|
|
135
|
+
export declare const cacheManager: CacheManager;
|
|
136
|
+
/**
|
|
137
|
+
* Memoize decorator for caching function results
|
|
138
|
+
* @param fn - The function to memoize
|
|
139
|
+
* @param keyGenerator - Function to generate cache key from arguments
|
|
140
|
+
* @param ttl - Time to live in milliseconds
|
|
141
|
+
* @returns Memoized function
|
|
142
|
+
*/
|
|
143
|
+
export declare function memoize<T extends (...args: unknown[]) => unknown>(fn: T, keyGenerator?: (...args: Parameters<T>) => string, ttl?: number): T;
|
|
144
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAWD;;GAEG;AACH,qBAAa,KAAK,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,KAAK,CAKX;IACF,OAAO,CAAC,eAAe,CAA+B;gBAE1C,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM;IAK7C;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAwBtC;;;;;OAKG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBrD;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAehC;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACI,KAAK,IAAI,IAAI;IAKpB;;;OAGG;IACI,QAAQ,IAAI,UAAU;IAc7B;;OAEG;IACI,UAAU,IAAI,IAAI;IASzB;;;OAGG;IACI,IAAI,IAAI,MAAM,EAAE;IAIvB;;;OAGG;IACI,IAAI,IAAI,MAAM;IAIrB;;OAEG;IACI,OAAO,IAAI,IAAI;IAQtB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAkBhB;;OAEG;IACH,OAAO,CAAC,OAAO;IAgBf;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAK7B;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA0C;IAExD;;;;;OAKG;IACI,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAOzE;;;OAGG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQtC;;OAEG;IACI,QAAQ,IAAI,IAAI;IAMvB;;OAEG;IACI,OAAO,IAAI,IAAI;IAOtB;;;OAGG;IACI,aAAa,IAAI,MAAM,EAAE;CAGjC;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC;AAE/C;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAC/D,EAAE,EAAE,CAAC,EACL,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,EACjD,GAAG,CAAC,EAAE,MAAM,GACX,CAAC,CAgBH"}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cache Utility for gthinking v2.0.0
|
|
4
|
+
* In-memory caching with TTL support
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.cacheManager = exports.CacheManager = exports.Cache = void 0;
|
|
8
|
+
exports.memoize = memoize;
|
|
9
|
+
const logger_1 = require("./logger");
|
|
10
|
+
const logger = new logger_1.Logger('Cache');
|
|
11
|
+
/**
|
|
12
|
+
* Default cache configuration
|
|
13
|
+
*/
|
|
14
|
+
const defaultConfig = {
|
|
15
|
+
maxSize: 1000,
|
|
16
|
+
defaultTTL: 3600000, // 1 hour
|
|
17
|
+
checkInterval: 60000, // 1 minute
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* In-memory cache with TTL support
|
|
21
|
+
*/
|
|
22
|
+
class Cache {
|
|
23
|
+
cache = new Map();
|
|
24
|
+
config;
|
|
25
|
+
stats = {
|
|
26
|
+
hits: 0,
|
|
27
|
+
misses: 0,
|
|
28
|
+
evictions: 0,
|
|
29
|
+
totalAccesses: 0,
|
|
30
|
+
};
|
|
31
|
+
cleanupInterval = null;
|
|
32
|
+
constructor(config = {}) {
|
|
33
|
+
this.config = { ...defaultConfig, ...config };
|
|
34
|
+
this.startCleanupInterval();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get a value from the cache
|
|
38
|
+
* @param key - The cache key
|
|
39
|
+
* @returns The cached value or undefined
|
|
40
|
+
*/
|
|
41
|
+
get(key) {
|
|
42
|
+
this.stats.totalAccesses++;
|
|
43
|
+
const entry = this.cache.get(key);
|
|
44
|
+
if (!entry) {
|
|
45
|
+
this.stats.misses++;
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
// Check if entry has expired
|
|
49
|
+
if (this.isExpired(entry)) {
|
|
50
|
+
this.cache.delete(key);
|
|
51
|
+
this.stats.misses++;
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
// Update access count
|
|
55
|
+
entry.accessCount++;
|
|
56
|
+
this.stats.hits++;
|
|
57
|
+
return entry.value;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Set a value in the cache
|
|
61
|
+
* @param key - The cache key
|
|
62
|
+
* @param value - The value to cache
|
|
63
|
+
* @param ttl - Time to live in milliseconds (optional)
|
|
64
|
+
*/
|
|
65
|
+
set(key, value, ttl) {
|
|
66
|
+
// Evict entries if cache is full
|
|
67
|
+
if (this.cache.size >= this.config.maxSize && !this.cache.has(key)) {
|
|
68
|
+
this.evictLRU();
|
|
69
|
+
}
|
|
70
|
+
const entry = {
|
|
71
|
+
value,
|
|
72
|
+
timestamp: Date.now(),
|
|
73
|
+
ttl: ttl ?? this.config.defaultTTL,
|
|
74
|
+
accessCount: 0,
|
|
75
|
+
};
|
|
76
|
+
this.cache.set(key, entry);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Check if a key exists in the cache
|
|
80
|
+
* @param key - The cache key
|
|
81
|
+
* @returns True if the key exists and hasn't expired
|
|
82
|
+
*/
|
|
83
|
+
has(key) {
|
|
84
|
+
const entry = this.cache.get(key);
|
|
85
|
+
if (!entry) {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
if (this.isExpired(entry)) {
|
|
89
|
+
this.cache.delete(key);
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Delete a key from the cache
|
|
96
|
+
* @param key - The cache key
|
|
97
|
+
* @returns True if the key was deleted
|
|
98
|
+
*/
|
|
99
|
+
delete(key) {
|
|
100
|
+
return this.cache.delete(key);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Clear all entries from the cache
|
|
104
|
+
*/
|
|
105
|
+
clear() {
|
|
106
|
+
this.cache.clear();
|
|
107
|
+
logger.info('Cache cleared');
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Get cache statistics
|
|
111
|
+
* @returns Cache statistics
|
|
112
|
+
*/
|
|
113
|
+
getStats() {
|
|
114
|
+
const totalAccesses = this.stats.totalAccesses;
|
|
115
|
+
const hitRate = totalAccesses > 0 ? this.stats.hits / totalAccesses : 0;
|
|
116
|
+
return {
|
|
117
|
+
size: this.cache.size,
|
|
118
|
+
hits: this.stats.hits,
|
|
119
|
+
misses: this.stats.misses,
|
|
120
|
+
hitRate,
|
|
121
|
+
evictions: this.stats.evictions,
|
|
122
|
+
totalAccesses,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Reset cache statistics
|
|
127
|
+
*/
|
|
128
|
+
resetStats() {
|
|
129
|
+
this.stats = {
|
|
130
|
+
hits: 0,
|
|
131
|
+
misses: 0,
|
|
132
|
+
evictions: 0,
|
|
133
|
+
totalAccesses: 0,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Get all keys in the cache
|
|
138
|
+
* @returns Array of cache keys
|
|
139
|
+
*/
|
|
140
|
+
keys() {
|
|
141
|
+
return Array.from(this.cache.keys());
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get the number of entries in the cache
|
|
145
|
+
* @returns Number of entries
|
|
146
|
+
*/
|
|
147
|
+
size() {
|
|
148
|
+
return this.cache.size;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Dispose of the cache and stop cleanup interval
|
|
152
|
+
*/
|
|
153
|
+
dispose() {
|
|
154
|
+
if (this.cleanupInterval) {
|
|
155
|
+
clearInterval(this.cleanupInterval);
|
|
156
|
+
this.cleanupInterval = null;
|
|
157
|
+
}
|
|
158
|
+
this.clear();
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Check if an entry has expired
|
|
162
|
+
* @param entry - The cache entry
|
|
163
|
+
* @returns True if the entry has expired
|
|
164
|
+
*/
|
|
165
|
+
isExpired(entry) {
|
|
166
|
+
return Date.now() - entry.timestamp > entry.ttl;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Evict the least recently used entry
|
|
170
|
+
*/
|
|
171
|
+
evictLRU() {
|
|
172
|
+
let oldestKey = null;
|
|
173
|
+
let oldestTimestamp = Infinity;
|
|
174
|
+
for (const [key, entry] of this.cache.entries()) {
|
|
175
|
+
if (entry.timestamp < oldestTimestamp) {
|
|
176
|
+
oldestTimestamp = entry.timestamp;
|
|
177
|
+
oldestKey = key;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (oldestKey) {
|
|
181
|
+
this.cache.delete(oldestKey);
|
|
182
|
+
this.stats.evictions++;
|
|
183
|
+
logger.debug(`Evicted LRU entry: ${oldestKey}`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Clean up expired entries
|
|
188
|
+
*/
|
|
189
|
+
cleanup() {
|
|
190
|
+
const now = Date.now();
|
|
191
|
+
let expiredCount = 0;
|
|
192
|
+
for (const [key, entry] of this.cache.entries()) {
|
|
193
|
+
if (now - entry.timestamp > entry.ttl) {
|
|
194
|
+
this.cache.delete(key);
|
|
195
|
+
expiredCount++;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
if (expiredCount > 0) {
|
|
199
|
+
logger.debug(`Cleaned up ${expiredCount} expired entries`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Start the cleanup interval
|
|
204
|
+
*/
|
|
205
|
+
startCleanupInterval() {
|
|
206
|
+
this.cleanupInterval = setInterval(() => {
|
|
207
|
+
this.cleanup();
|
|
208
|
+
}, this.config.checkInterval);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
exports.Cache = Cache;
|
|
212
|
+
/**
|
|
213
|
+
* Cache manager for managing multiple cache instances
|
|
214
|
+
*/
|
|
215
|
+
class CacheManager {
|
|
216
|
+
caches = new Map();
|
|
217
|
+
/**
|
|
218
|
+
* Get or create a cache instance
|
|
219
|
+
* @param name - The cache name
|
|
220
|
+
* @param config - Cache configuration
|
|
221
|
+
* @returns Cache instance
|
|
222
|
+
*/
|
|
223
|
+
getCache(name, config) {
|
|
224
|
+
if (!this.caches.has(name)) {
|
|
225
|
+
this.caches.set(name, new Cache(config));
|
|
226
|
+
}
|
|
227
|
+
return this.caches.get(name);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Delete a cache instance
|
|
231
|
+
* @param name - The cache name
|
|
232
|
+
*/
|
|
233
|
+
deleteCache(name) {
|
|
234
|
+
const cache = this.caches.get(name);
|
|
235
|
+
if (cache) {
|
|
236
|
+
cache.dispose();
|
|
237
|
+
this.caches.delete(name);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Clear all caches
|
|
242
|
+
*/
|
|
243
|
+
clearAll() {
|
|
244
|
+
for (const cache of this.caches.values()) {
|
|
245
|
+
cache.clear();
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Dispose of all caches
|
|
250
|
+
*/
|
|
251
|
+
dispose() {
|
|
252
|
+
for (const [name, cache] of this.caches.entries()) {
|
|
253
|
+
cache.dispose();
|
|
254
|
+
}
|
|
255
|
+
this.caches.clear();
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Get all cache names
|
|
259
|
+
* @returns Array of cache names
|
|
260
|
+
*/
|
|
261
|
+
getCacheNames() {
|
|
262
|
+
return Array.from(this.caches.keys());
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
exports.CacheManager = CacheManager;
|
|
266
|
+
// Export a singleton cache manager
|
|
267
|
+
exports.cacheManager = new CacheManager();
|
|
268
|
+
/**
|
|
269
|
+
* Memoize decorator for caching function results
|
|
270
|
+
* @param fn - The function to memoize
|
|
271
|
+
* @param keyGenerator - Function to generate cache key from arguments
|
|
272
|
+
* @param ttl - Time to live in milliseconds
|
|
273
|
+
* @returns Memoized function
|
|
274
|
+
*/
|
|
275
|
+
function memoize(fn, keyGenerator, ttl) {
|
|
276
|
+
const cache = new Cache();
|
|
277
|
+
return function (...args) {
|
|
278
|
+
const key = keyGenerator ? keyGenerator(...args) : JSON.stringify(args);
|
|
279
|
+
const cached = cache.get(key);
|
|
280
|
+
if (cached !== undefined) {
|
|
281
|
+
return cached;
|
|
282
|
+
}
|
|
283
|
+
const result = fn(...args);
|
|
284
|
+
cache.set(key, result, ttl);
|
|
285
|
+
return result;
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAmVH,0BAoBC;AApWD,qCAAkC;AAElC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,OAAO,CAAC,CAAC;AAiCnC;;GAEG;AACH,MAAM,aAAa,GAAgB;IACjC,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,OAAO,EAAE,SAAS;IAC9B,aAAa,EAAE,KAAK,EAAE,WAAW;CAClC,CAAC;AAEF;;GAEG;AACH,MAAa,KAAK;IACR,KAAK,GAA+B,IAAI,GAAG,EAAE,CAAC;IAC9C,MAAM,CAAc;IACpB,KAAK,GAAG;QACd,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,CAAC;QACZ,aAAa,EAAE,CAAC;KACjB,CAAC;IACM,eAAe,GAA0B,IAAI,CAAC;IAEtD,YAAY,SAA+B,EAAE;QAC3C,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;QAC9C,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,GAAW;QACpB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAE3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,6BAA6B;QAC7B,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,sBAAsB;QACtB,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAElB,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,GAAW,EAAE,KAAQ,EAAE,GAAY;QAC5C,iCAAiC;QACjC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,KAAK,GAAkB;YAC3B,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,WAAW,EAAE,CAAC;SACf,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,GAAW;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,GAAW;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACI,QAAQ;QACb,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;QAC/C,MAAM,OAAO,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAExE,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,OAAO;YACP,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC/B,aAAa;SACd,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,UAAU;QACf,IAAI,CAAC,KAAK,GAAG;YACX,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,CAAC;YACZ,aAAa,EAAE,CAAC;SACjB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,IAAI;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACI,IAAI;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,OAAO;QACZ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACpC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED;;;;OAIG;IACK,SAAS,CAAC,KAAoB;QACpC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC;IAClD,CAAC;IAED;;OAEG;IACK,QAAQ;QACd,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,eAAe,GAAG,QAAQ,CAAC;QAE/B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAChD,IAAI,KAAK,CAAC,SAAS,GAAG,eAAe,EAAE,CAAC;gBACtC,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC;gBAClC,SAAS,GAAG,GAAG,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,OAAO;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAChD,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACvB,YAAY,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;QAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,KAAK,CAAC,cAAc,YAAY,kBAAkB,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,oBAAoB;QAC1B,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;YACtC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAChC,CAAC;CACF;AA1ND,sBA0NC;AAED;;GAEG;AACH,MAAa,YAAY;IACf,MAAM,GAAgC,IAAI,GAAG,EAAE,CAAC;IAExD;;;;;OAKG;IACI,QAAQ,CAAI,IAAY,EAAE,MAA6B;QAC5D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,CAAI,MAAM,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAa,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACI,WAAW,CAAC,IAAY;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACI,OAAO;QACZ,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;;OAGG;IACI,aAAa;QAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;CACF;AAtDD,oCAsDC;AAED,mCAAmC;AACtB,QAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AAE/C;;;;;;GAMG;AACH,SAAgB,OAAO,CACrB,EAAK,EACL,YAAiD,EACjD,GAAY;IAEZ,MAAM,KAAK,GAAG,IAAI,KAAK,EAAiB,CAAC;IAEzC,OAAO,UAAU,GAAG,IAAmB;QACrC,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAExE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAkB,CAAC;QAC5C,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAE5B,OAAO,MAAM,CAAC;IAChB,CAAM,CAAC;AACT,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ID Generator Utility for gthinking v2.0.0
|
|
3
|
+
* Secure and collision-resistant ID generation
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Generate a random UUID v4
|
|
7
|
+
* @returns A random UUID string
|
|
8
|
+
*/
|
|
9
|
+
export declare function generateUUID(): string;
|
|
10
|
+
/**
|
|
11
|
+
* Generate a deterministic UUID v5 based on a namespace and name
|
|
12
|
+
* @param namespace - The namespace UUID
|
|
13
|
+
* @param name - The name to hash
|
|
14
|
+
* @returns A deterministic UUID string
|
|
15
|
+
*/
|
|
16
|
+
export declare function generateDeterministicUUID(namespace: string, name: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Generate a short ID (8 characters) for internal use
|
|
19
|
+
* Note: This is not cryptographically secure, use only for non-sensitive IDs
|
|
20
|
+
* @returns A short random string
|
|
21
|
+
*/
|
|
22
|
+
export declare function generateShortId(): string;
|
|
23
|
+
/**
|
|
24
|
+
* Generate a timestamp-based ID with random suffix
|
|
25
|
+
* @param prefix - Optional prefix for the ID
|
|
26
|
+
* @returns A timestamp-based ID string
|
|
27
|
+
*/
|
|
28
|
+
export declare function generateTimestampId(prefix?: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Generate a sequential ID with padding
|
|
31
|
+
* @param sequence - The sequence number
|
|
32
|
+
* @param padding - The number of digits to pad to
|
|
33
|
+
* @returns A padded sequential ID string
|
|
34
|
+
*/
|
|
35
|
+
export declare function generateSequentialId(sequence: number, padding?: number): string;
|
|
36
|
+
/**
|
|
37
|
+
* Generate a compound ID from multiple parts
|
|
38
|
+
* @param parts - The parts to combine
|
|
39
|
+
* @param separator - The separator to use (default: '_')
|
|
40
|
+
* @returns A compound ID string
|
|
41
|
+
*/
|
|
42
|
+
export declare function generateCompoundId(parts: string[], separator?: string): string;
|
|
43
|
+
/**
|
|
44
|
+
* Validate if a string is a valid UUID
|
|
45
|
+
* @param id - The string to validate
|
|
46
|
+
* @returns True if the string is a valid UUID
|
|
47
|
+
*/
|
|
48
|
+
export declare function isValidUUID(id: string): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Namespace UUIDs for deterministic ID generation
|
|
51
|
+
*/
|
|
52
|
+
export declare const Namespaces: {
|
|
53
|
+
readonly DNS: "6ba7b810-9dad-11d1-80b4-00c04fd430c8";
|
|
54
|
+
readonly URL: "6ba7b811-9dad-11d1-80b4-00c04fd430c8";
|
|
55
|
+
readonly OID: "6ba7b812-9dad-11d1-80b4-00c04fd430c8";
|
|
56
|
+
readonly X500: "6ba7b814-9dad-11d1-80b4-00c04fd430c8";
|
|
57
|
+
readonly SESSION: "a7b8c9d0-e1f2-4a3b-8c4d-5e6f7a8b9c0d";
|
|
58
|
+
readonly TASK: "b8c9d0e1-f2a3-5b4c-9d5e-6f7a8b9c0d1e";
|
|
59
|
+
readonly IDEA: "c9d0e1f2-a3b4-6c5d-0e6f-7a8b9c0d1e2f";
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* ID Generator class for managing ID generation with prefixes
|
|
63
|
+
*/
|
|
64
|
+
export declare class IdGenerator {
|
|
65
|
+
private counters;
|
|
66
|
+
/**
|
|
67
|
+
* Generate a prefixed ID with an auto-incrementing counter
|
|
68
|
+
* @param prefix - The prefix for the ID
|
|
69
|
+
* @returns A prefixed ID string
|
|
70
|
+
*/
|
|
71
|
+
generatePrefixedId(prefix: string): string;
|
|
72
|
+
/**
|
|
73
|
+
* Reset the counter for a specific prefix
|
|
74
|
+
* @param prefix - The prefix to reset
|
|
75
|
+
*/
|
|
76
|
+
resetCounter(prefix: string): void;
|
|
77
|
+
/**
|
|
78
|
+
* Reset all counters
|
|
79
|
+
*/
|
|
80
|
+
resetAllCounters(): void;
|
|
81
|
+
/**
|
|
82
|
+
* Get the current counter value for a prefix
|
|
83
|
+
* @param prefix - The prefix to check
|
|
84
|
+
* @returns The current counter value
|
|
85
|
+
*/
|
|
86
|
+
getCounter(prefix: string): number;
|
|
87
|
+
}
|
|
88
|
+
export declare const idGenerator: IdGenerator;
|
|
89
|
+
//# sourceMappingURL=id-generator.d.ts.map
|