@skillsmith/mcp-server 0.3.4 → 0.3.6
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 +1 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/__tests__/LocalIndexer.test.d.ts +5 -0
- package/dist/src/__tests__/LocalIndexer.test.d.ts.map +1 -0
- package/dist/src/__tests__/LocalIndexer.test.js +396 -0
- package/dist/src/__tests__/LocalIndexer.test.js.map +1 -0
- package/dist/src/__tests__/get-skill.test.js +195 -0
- package/dist/src/__tests__/get-skill.test.js.map +1 -1
- package/dist/src/__tests__/index-local.test.d.ts +5 -0
- package/dist/src/__tests__/index-local.test.d.ts.map +1 -0
- package/dist/src/__tests__/index-local.test.js +203 -0
- package/dist/src/__tests__/index-local.test.js.map +1 -0
- package/dist/src/__tests__/recommend.test.d.ts +7 -0
- package/dist/src/__tests__/recommend.test.d.ts.map +1 -0
- package/dist/src/__tests__/recommend.test.js +277 -0
- package/dist/src/__tests__/recommend.test.js.map +1 -0
- package/dist/src/__tests__/search.test.js +138 -0
- package/dist/src/__tests__/search.test.js.map +1 -1
- package/dist/src/context.d.ts +6 -0
- package/dist/src/context.d.ts.map +1 -1
- package/dist/src/context.js +7 -1
- package/dist/src/context.js.map +1 -1
- package/dist/src/index.js +14 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/indexer/FrontmatterParser.d.ts +30 -0
- package/dist/src/indexer/FrontmatterParser.d.ts.map +1 -0
- package/dist/src/indexer/FrontmatterParser.js +109 -0
- package/dist/src/indexer/FrontmatterParser.js.map +1 -0
- package/dist/src/indexer/LocalIndexer.d.ts +136 -0
- package/dist/src/indexer/LocalIndexer.d.ts.map +1 -0
- package/dist/src/indexer/LocalIndexer.js +271 -0
- package/dist/src/indexer/LocalIndexer.js.map +1 -0
- package/dist/src/indexer/index.d.ts +8 -0
- package/dist/src/indexer/index.d.ts.map +1 -0
- package/dist/src/indexer/index.js +8 -0
- package/dist/src/indexer/index.js.map +1 -0
- package/dist/src/llm/failover.d.ts +11 -1
- package/dist/src/llm/failover.d.ts.map +1 -1
- package/dist/src/llm/failover.js.map +1 -1
- package/dist/src/middleware/errorFormatter.d.ts +27 -0
- package/dist/src/middleware/errorFormatter.d.ts.map +1 -1
- package/dist/src/middleware/errorFormatter.js +95 -0
- package/dist/src/middleware/errorFormatter.js.map +1 -1
- package/dist/src/middleware/index.d.ts +1 -1
- package/dist/src/middleware/index.d.ts.map +1 -1
- package/dist/src/middleware/index.js.map +1 -1
- package/dist/src/middleware/quota-helpers.d.ts +40 -0
- package/dist/src/middleware/quota-helpers.d.ts.map +1 -0
- package/dist/src/middleware/quota-helpers.js +90 -0
- package/dist/src/middleware/quota-helpers.js.map +1 -0
- package/dist/src/middleware/quota-types.d.ts +105 -0
- package/dist/src/middleware/quota-types.d.ts.map +1 -0
- package/dist/src/middleware/quota-types.js +4 -0
- package/dist/src/middleware/quota-types.js.map +1 -0
- package/dist/src/middleware/quota.d.ts +3 -97
- package/dist/src/middleware/quota.d.ts.map +1 -1
- package/dist/src/middleware/quota.js +2 -87
- package/dist/src/middleware/quota.js.map +1 -1
- package/dist/src/tools/LocalSkillSearch.d.ts +32 -0
- package/dist/src/tools/LocalSkillSearch.d.ts.map +1 -0
- package/dist/src/tools/LocalSkillSearch.js +74 -0
- package/dist/src/tools/LocalSkillSearch.js.map +1 -0
- package/dist/src/tools/compare.helpers.js.map +1 -1
- package/dist/src/tools/compare.types.d.ts +1 -0
- package/dist/src/tools/compare.types.d.ts.map +1 -1
- package/dist/src/tools/compare.types.js +2 -0
- package/dist/src/tools/compare.types.js.map +1 -1
- package/dist/src/tools/get-skill.js +3 -0
- package/dist/src/tools/get-skill.js.map +1 -1
- package/dist/src/tools/index-local.d.ts +117 -0
- package/dist/src/tools/index-local.d.ts.map +1 -0
- package/dist/src/tools/index-local.js +126 -0
- package/dist/src/tools/index-local.js.map +1 -0
- package/dist/src/tools/index.d.ts +2 -0
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +2 -0
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/install.conflict-helpers.d.ts +64 -0
- package/dist/src/tools/install.conflict-helpers.d.ts.map +1 -0
- package/dist/src/tools/install.conflict-helpers.js +165 -0
- package/dist/src/tools/install.conflict-helpers.js.map +1 -0
- package/dist/src/tools/install.conflict-helpers.test.d.ts +15 -0
- package/dist/src/tools/install.conflict-helpers.test.d.ts.map +1 -0
- package/dist/src/tools/install.conflict-helpers.test.js +243 -0
- package/dist/src/tools/install.conflict-helpers.test.js.map +1 -0
- package/dist/src/tools/install.conflict.d.ts +58 -0
- package/dist/src/tools/install.conflict.d.ts.map +1 -0
- package/dist/src/tools/install.conflict.js +160 -0
- package/dist/src/tools/install.conflict.js.map +1 -0
- package/dist/src/tools/install.conflict.test.d.ts +15 -0
- package/dist/src/tools/install.conflict.test.d.ts.map +1 -0
- package/dist/src/tools/install.conflict.test.js +354 -0
- package/dist/src/tools/install.conflict.test.js.map +1 -0
- package/dist/src/tools/install.d.ts +5 -0
- package/dist/src/tools/install.d.ts.map +1 -1
- package/dist/src/tools/install.helpers.d.ts +5 -4
- package/dist/src/tools/install.helpers.d.ts.map +1 -1
- package/dist/src/tools/install.helpers.js +13 -4
- package/dist/src/tools/install.helpers.js.map +1 -1
- package/dist/src/tools/install.js +96 -17
- package/dist/src/tools/install.js.map +1 -1
- package/dist/src/tools/install.types.d.ts +75 -11
- package/dist/src/tools/install.types.d.ts.map +1 -1
- package/dist/src/tools/install.types.js +15 -1
- package/dist/src/tools/install.types.js.map +1 -1
- package/dist/src/tools/merge.d.ts +53 -0
- package/dist/src/tools/merge.d.ts.map +1 -0
- package/dist/src/tools/merge.js +276 -0
- package/dist/src/tools/merge.js.map +1 -0
- package/dist/src/tools/merge.test.d.ts +11 -0
- package/dist/src/tools/merge.test.d.ts.map +1 -0
- package/dist/src/tools/merge.test.js +224 -0
- package/dist/src/tools/merge.test.js.map +1 -0
- package/dist/src/tools/recommend.d.ts +1 -0
- package/dist/src/tools/recommend.d.ts.map +1 -1
- package/dist/src/tools/recommend.js +165 -38
- package/dist/src/tools/recommend.js.map +1 -1
- package/dist/src/tools/search.d.ts.map +1 -1
- package/dist/src/tools/search.js +31 -4
- package/dist/src/tools/search.js.map +1 -1
- package/dist/src/utils/validation.d.ts +6 -2
- package/dist/src/utils/validation.d.ts.map +1 -1
- package/dist/src/utils/validation.js +11 -2
- package/dist/src/utils/validation.js.map +1 -1
- package/dist/src/webhooks/webhook-endpoint.d.ts +4 -49
- package/dist/src/webhooks/webhook-endpoint.d.ts.map +1 -1
- package/dist/src/webhooks/webhook-endpoint.js +3 -125
- package/dist/src/webhooks/webhook-endpoint.js.map +1 -1
- package/dist/src/webhooks/webhook-helpers.d.ts +69 -0
- package/dist/src/webhooks/webhook-helpers.d.ts.map +1 -0
- package/dist/src/webhooks/webhook-helpers.js +146 -0
- package/dist/src/webhooks/webhook-helpers.js.map +1 -0
- package/dist/tests/e2e/conflict-resolution.e2e.test.d.ts +12 -0
- package/dist/tests/e2e/conflict-resolution.e2e.test.d.ts.map +1 -0
- package/dist/tests/e2e/conflict-resolution.e2e.test.js +343 -0
- package/dist/tests/e2e/conflict-resolution.e2e.test.js.map +1 -0
- package/dist/tests/integration/fixtures/development-skills.d.ts +22 -0
- package/dist/tests/integration/fixtures/development-skills.d.ts.map +1 -0
- package/dist/tests/integration/fixtures/development-skills.js +165 -0
- package/dist/tests/integration/fixtures/development-skills.js.map +1 -0
- package/dist/tests/integration/fixtures/devops-skills.d.ts +10 -0
- package/dist/tests/integration/fixtures/devops-skills.d.ts.map +1 -0
- package/dist/tests/integration/fixtures/devops-skills.js +70 -0
- package/dist/tests/integration/fixtures/devops-skills.js.map +1 -0
- package/dist/tests/integration/fixtures/experimental-skills.d.ts +14 -0
- package/dist/tests/integration/fixtures/experimental-skills.d.ts.map +1 -0
- package/dist/tests/integration/fixtures/experimental-skills.js +255 -0
- package/dist/tests/integration/fixtures/experimental-skills.js.map +1 -0
- package/dist/tests/integration/fixtures/skill-types.d.ts +18 -0
- package/dist/tests/integration/fixtures/skill-types.d.ts.map +1 -0
- package/dist/tests/integration/fixtures/skill-types.js +6 -0
- package/dist/tests/integration/fixtures/skill-types.js.map +1 -0
- package/dist/tests/integration/fixtures/test-skills.d.ts +10 -14
- package/dist/tests/integration/fixtures/test-skills.d.ts.map +1 -1
- package/dist/tests/integration/fixtures/test-skills.js +23 -590
- package/dist/tests/integration/fixtures/test-skills.js.map +1 -1
- package/dist/tests/integration/fixtures/testing-skills.d.ts +10 -0
- package/dist/tests/integration/fixtures/testing-skills.d.ts.map +1 -0
- package/dist/tests/integration/fixtures/testing-skills.js +70 -0
- package/dist/tests/integration/fixtures/testing-skills.js.map +1 -0
- package/dist/tests/integration/fixtures/verified-skills.d.ts +11 -0
- package/dist/tests/integration/fixtures/verified-skills.d.ts.map +1 -0
- package/dist/tests/integration/fixtures/verified-skills.js +91 -0
- package/dist/tests/integration/fixtures/verified-skills.js.map +1 -0
- package/dist/tests/integration/install-conflict.integration.test.d.ts +8 -0
- package/dist/tests/integration/install-conflict.integration.test.d.ts.map +1 -0
- package/dist/tests/integration/install-conflict.integration.test.js +384 -0
- package/dist/tests/integration/install-conflict.integration.test.js.map +1 -0
- package/dist/tests/integration/install-trust-parsing.integration.test.d.ts +13 -0
- package/dist/tests/integration/install-trust-parsing.integration.test.d.ts.map +1 -0
- package/dist/tests/integration/install-trust-parsing.integration.test.js +290 -0
- package/dist/tests/integration/install-trust-parsing.integration.test.js.map +1 -0
- package/dist/tests/integration/install.integration.test.js +3 -0
- package/dist/tests/integration/install.integration.test.js.map +1 -1
- package/package.json +7 -6
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Elastic-2.0
|
|
2
|
+
// Copyright 2024-2025 Smith Horn Group Ltd
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// In-Memory Storage (Default)
|
|
5
|
+
// ============================================================================
|
|
6
|
+
/**
|
|
7
|
+
* Simple in-memory storage for quota tracking
|
|
8
|
+
* Note: This resets on server restart. Use a database-backed storage
|
|
9
|
+
* in production via the storage option.
|
|
10
|
+
*/
|
|
11
|
+
export class InMemoryQuotaStorage {
|
|
12
|
+
usage = new Map();
|
|
13
|
+
async getUsage(customerId) {
|
|
14
|
+
const now = new Date();
|
|
15
|
+
const existing = this.usage.get(customerId);
|
|
16
|
+
// If we have existing data and it's still in the current period, return it
|
|
17
|
+
if (existing && existing.periodEnd > now) {
|
|
18
|
+
return existing;
|
|
19
|
+
}
|
|
20
|
+
// Otherwise, create a new period
|
|
21
|
+
const periodStart = this.getMonthStart(now);
|
|
22
|
+
const periodEnd = this.getMonthEnd(now);
|
|
23
|
+
const newUsage = { used: 0, periodStart, periodEnd };
|
|
24
|
+
this.usage.set(customerId, newUsage);
|
|
25
|
+
return newUsage;
|
|
26
|
+
}
|
|
27
|
+
async incrementUsage(customerId, cost) {
|
|
28
|
+
const usage = await this.getUsage(customerId);
|
|
29
|
+
usage.used += cost;
|
|
30
|
+
}
|
|
31
|
+
async initializePeriod(customerId, _limit) {
|
|
32
|
+
const now = new Date();
|
|
33
|
+
this.usage.set(customerId, {
|
|
34
|
+
used: 0,
|
|
35
|
+
periodStart: this.getMonthStart(now),
|
|
36
|
+
periodEnd: this.getMonthEnd(now),
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
getMonthStart(date) {
|
|
40
|
+
return new Date(date.getFullYear(), date.getMonth(), 1);
|
|
41
|
+
}
|
|
42
|
+
getMonthEnd(date) {
|
|
43
|
+
return new Date(date.getFullYear(), date.getMonth() + 1, 1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// ============================================================================
|
|
47
|
+
// Helper Functions
|
|
48
|
+
// ============================================================================
|
|
49
|
+
/**
|
|
50
|
+
* Get the warning level based on percentage used
|
|
51
|
+
*/
|
|
52
|
+
export function getWarningLevel(percentUsed) {
|
|
53
|
+
if (percentUsed >= 100)
|
|
54
|
+
return 100;
|
|
55
|
+
if (percentUsed >= 90)
|
|
56
|
+
return 90;
|
|
57
|
+
if (percentUsed >= 80)
|
|
58
|
+
return 80;
|
|
59
|
+
return 0;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get warning message based on level and current usage
|
|
63
|
+
*/
|
|
64
|
+
export function getWarningMessage(warningLevel, used, limit, _tier) {
|
|
65
|
+
if (warningLevel === 0)
|
|
66
|
+
return undefined;
|
|
67
|
+
const remaining = Math.max(0, limit - used);
|
|
68
|
+
switch (warningLevel) {
|
|
69
|
+
case 100:
|
|
70
|
+
return `API quota exceeded (${used.toLocaleString()}/${limit.toLocaleString()} calls). Upgrade to continue.`;
|
|
71
|
+
case 90:
|
|
72
|
+
return `Warning: 90% of API quota used (${remaining.toLocaleString()} calls remaining). Consider upgrading.`;
|
|
73
|
+
case 80:
|
|
74
|
+
return `Notice: 80% of API quota used (${remaining.toLocaleString()} calls remaining).`;
|
|
75
|
+
default:
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Generate a customer ID from license info
|
|
81
|
+
* Falls back to 'anonymous' for community users without an organization ID
|
|
82
|
+
*/
|
|
83
|
+
export function getCustomerId(licenseInfo, providedId) {
|
|
84
|
+
if (providedId)
|
|
85
|
+
return providedId;
|
|
86
|
+
if (licenseInfo?.organizationId)
|
|
87
|
+
return licenseInfo.organizationId;
|
|
88
|
+
return 'anonymous';
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=quota-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quota-helpers.js","sourceRoot":"","sources":["../../../src/middleware/quota-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-1091: Quota Types - Type definitions for quota enforcement
|
|
3
|
+
*
|
|
4
|
+
* Extracted from quota.ts to reduce file size.
|
|
5
|
+
*
|
|
6
|
+
* @see quota.ts for main middleware implementation
|
|
7
|
+
*/
|
|
8
|
+
import type { LicenseInfo } from './license.js';
|
|
9
|
+
import type { MCPErrorResponse } from './errorFormatter.js';
|
|
10
|
+
/**
|
|
11
|
+
* Warning threshold type for quota levels
|
|
12
|
+
*/
|
|
13
|
+
export type WarningLevel = 0 | 80 | 90 | 100;
|
|
14
|
+
/**
|
|
15
|
+
* Quota check result returned after validating usage
|
|
16
|
+
*/
|
|
17
|
+
export interface QuotaCheckResult {
|
|
18
|
+
/** Whether the tool call is allowed */
|
|
19
|
+
allowed: boolean;
|
|
20
|
+
/** Remaining API calls in the current period */
|
|
21
|
+
remaining: number;
|
|
22
|
+
/** Total limit for the current tier (-1 for unlimited) */
|
|
23
|
+
limit: number;
|
|
24
|
+
/** Percentage of quota used (0-100+) */
|
|
25
|
+
percentUsed: number;
|
|
26
|
+
/** Current warning level (0, 80, 90, or 100) */
|
|
27
|
+
warningLevel: WarningLevel;
|
|
28
|
+
/** When the quota resets (start of next billing period) */
|
|
29
|
+
resetAt: Date;
|
|
30
|
+
/** Warning or error message if applicable */
|
|
31
|
+
message?: string;
|
|
32
|
+
/** Upgrade URL if quota is exceeded or near limit */
|
|
33
|
+
upgradeUrl?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Quota information to include in response metadata
|
|
37
|
+
*/
|
|
38
|
+
export interface QuotaMetadata {
|
|
39
|
+
/** Remaining API calls */
|
|
40
|
+
remaining: number;
|
|
41
|
+
/** Total limit (-1 for unlimited) */
|
|
42
|
+
limit: number;
|
|
43
|
+
/** When the quota resets */
|
|
44
|
+
resetAt: string;
|
|
45
|
+
/** Warning message if approaching limit */
|
|
46
|
+
warning?: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Interface for quota storage adapters
|
|
50
|
+
*/
|
|
51
|
+
export interface QuotaStorage {
|
|
52
|
+
/** Get current usage for a customer in the current period */
|
|
53
|
+
getUsage(customerId: string): Promise<{
|
|
54
|
+
used: number;
|
|
55
|
+
periodStart: Date;
|
|
56
|
+
periodEnd: Date;
|
|
57
|
+
}>;
|
|
58
|
+
/** Increment usage count */
|
|
59
|
+
incrementUsage(customerId: string, cost: number): Promise<void>;
|
|
60
|
+
/** Initialize quota for a new billing period */
|
|
61
|
+
initializePeriod(customerId: string, limit: number): Promise<void>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Quota middleware configuration options
|
|
65
|
+
*/
|
|
66
|
+
export interface QuotaMiddlewareOptions {
|
|
67
|
+
/**
|
|
68
|
+
* Cost of each API call (default: 1)
|
|
69
|
+
* Can be customized per tool if some tools are more expensive
|
|
70
|
+
*/
|
|
71
|
+
defaultCost?: number;
|
|
72
|
+
/**
|
|
73
|
+
* Whether to track usage even for unlimited tiers (enterprise)
|
|
74
|
+
* Useful for analytics purposes
|
|
75
|
+
*/
|
|
76
|
+
trackUnlimited?: boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Custom storage adapter for quota tracking
|
|
79
|
+
* If not provided, uses in-memory storage (resets on restart)
|
|
80
|
+
*/
|
|
81
|
+
storage?: QuotaStorage;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Quota middleware instance
|
|
85
|
+
*/
|
|
86
|
+
export interface QuotaMiddleware {
|
|
87
|
+
/**
|
|
88
|
+
* Check if a tool call is allowed and track usage
|
|
89
|
+
* Call this BEFORE executing the tool
|
|
90
|
+
*/
|
|
91
|
+
checkAndTrack(toolName: string, licenseInfo: LicenseInfo | null, customerId?: string): Promise<QuotaCheckResult>;
|
|
92
|
+
/**
|
|
93
|
+
* Get current quota status without incrementing
|
|
94
|
+
*/
|
|
95
|
+
getStatus(licenseInfo: LicenseInfo | null, customerId?: string): Promise<QuotaCheckResult>;
|
|
96
|
+
/**
|
|
97
|
+
* Build quota metadata for response _meta field
|
|
98
|
+
*/
|
|
99
|
+
buildMetadata(result: QuotaCheckResult): QuotaMetadata;
|
|
100
|
+
/**
|
|
101
|
+
* Build error response for quota exceeded
|
|
102
|
+
*/
|
|
103
|
+
buildExceededResponse(result: QuotaCheckResult): MCPErrorResponse;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=quota-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quota-types.d.ts","sourceRoot":"","sources":["../../../src/middleware/quota-types.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE3D;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;AAE5C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAA;IAChB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAA;IACjB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAA;IACb,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAA;IACnB,gDAAgD;IAChD,YAAY,EAAE,YAAY,CAAA;IAC1B,2DAA2D;IAC3D,OAAO,EAAE,IAAI,CAAA;IACb,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,IAAI,CAAC;QAAC,SAAS,EAAE,IAAI,CAAA;KAAE,CAAC,CAAA;IAC3F,4BAA4B;IAC5B,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,gDAAgD;IAChD,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IAExB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAE5B;;OAEG;IACH,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAE1F;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,aAAa,CAAA;IAEtD;;OAEG;IACH,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAAA;CAClE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quota-types.js","sourceRoot":"","sources":["../../../src/middleware/quota-types.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,2CAA2C"}
|
|
@@ -13,103 +13,10 @@
|
|
|
13
13
|
* @see SMI-1055: Add license middleware to MCP server
|
|
14
14
|
* @see packages/enterprise/src/quota/QuotaEnforcementService.ts
|
|
15
15
|
*/
|
|
16
|
-
import type { LicenseMiddleware,
|
|
16
|
+
import type { LicenseMiddleware, LicenseTier } from './license.js';
|
|
17
17
|
import { type MCPErrorResponse } from './errorFormatter.js';
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
*/
|
|
21
|
-
type WarningLevel = 0 | 80 | 90 | 100;
|
|
22
|
-
/**
|
|
23
|
-
* Quota check result returned after validating usage
|
|
24
|
-
*/
|
|
25
|
-
export interface QuotaCheckResult {
|
|
26
|
-
/** Whether the tool call is allowed */
|
|
27
|
-
allowed: boolean;
|
|
28
|
-
/** Remaining API calls in the current period */
|
|
29
|
-
remaining: number;
|
|
30
|
-
/** Total limit for the current tier (-1 for unlimited) */
|
|
31
|
-
limit: number;
|
|
32
|
-
/** Percentage of quota used (0-100+) */
|
|
33
|
-
percentUsed: number;
|
|
34
|
-
/** Current warning level (0, 80, 90, or 100) */
|
|
35
|
-
warningLevel: WarningLevel;
|
|
36
|
-
/** When the quota resets (start of next billing period) */
|
|
37
|
-
resetAt: Date;
|
|
38
|
-
/** Warning or error message if applicable */
|
|
39
|
-
message?: string;
|
|
40
|
-
/** Upgrade URL if quota is exceeded or near limit */
|
|
41
|
-
upgradeUrl?: string;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Quota information to include in response metadata
|
|
45
|
-
*/
|
|
46
|
-
export interface QuotaMetadata {
|
|
47
|
-
/** Remaining API calls */
|
|
48
|
-
remaining: number;
|
|
49
|
-
/** Total limit (-1 for unlimited) */
|
|
50
|
-
limit: number;
|
|
51
|
-
/** When the quota resets */
|
|
52
|
-
resetAt: string;
|
|
53
|
-
/** Warning message if approaching limit */
|
|
54
|
-
warning?: string;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Quota middleware configuration options
|
|
58
|
-
*/
|
|
59
|
-
export interface QuotaMiddlewareOptions {
|
|
60
|
-
/**
|
|
61
|
-
* Cost of each API call (default: 1)
|
|
62
|
-
* Can be customized per tool if some tools are more expensive
|
|
63
|
-
*/
|
|
64
|
-
defaultCost?: number;
|
|
65
|
-
/**
|
|
66
|
-
* Whether to track usage even for unlimited tiers (enterprise)
|
|
67
|
-
* Useful for analytics purposes
|
|
68
|
-
*/
|
|
69
|
-
trackUnlimited?: boolean;
|
|
70
|
-
/**
|
|
71
|
-
* Custom storage adapter for quota tracking
|
|
72
|
-
* If not provided, uses in-memory storage (resets on restart)
|
|
73
|
-
*/
|
|
74
|
-
storage?: QuotaStorage;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Interface for quota storage adapters
|
|
78
|
-
*/
|
|
79
|
-
export interface QuotaStorage {
|
|
80
|
-
/** Get current usage for a customer in the current period */
|
|
81
|
-
getUsage(customerId: string): Promise<{
|
|
82
|
-
used: number;
|
|
83
|
-
periodStart: Date;
|
|
84
|
-
periodEnd: Date;
|
|
85
|
-
}>;
|
|
86
|
-
/** Increment usage count */
|
|
87
|
-
incrementUsage(customerId: string, cost: number): Promise<void>;
|
|
88
|
-
/** Initialize quota for a new billing period */
|
|
89
|
-
initializePeriod(customerId: string, limit: number): Promise<void>;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Quota middleware instance
|
|
93
|
-
*/
|
|
94
|
-
export interface QuotaMiddleware {
|
|
95
|
-
/**
|
|
96
|
-
* Check if a tool call is allowed and track usage
|
|
97
|
-
* Call this BEFORE executing the tool
|
|
98
|
-
*/
|
|
99
|
-
checkAndTrack(toolName: string, licenseInfo: LicenseInfo | null, customerId?: string): Promise<QuotaCheckResult>;
|
|
100
|
-
/**
|
|
101
|
-
* Get current quota status without incrementing
|
|
102
|
-
*/
|
|
103
|
-
getStatus(licenseInfo: LicenseInfo | null, customerId?: string): Promise<QuotaCheckResult>;
|
|
104
|
-
/**
|
|
105
|
-
* Build quota metadata for response _meta field
|
|
106
|
-
*/
|
|
107
|
-
buildMetadata(result: QuotaCheckResult): QuotaMetadata;
|
|
108
|
-
/**
|
|
109
|
-
* Build error response for quota exceeded
|
|
110
|
-
*/
|
|
111
|
-
buildExceededResponse(result: QuotaCheckResult): MCPErrorResponse;
|
|
112
|
-
}
|
|
18
|
+
export type { QuotaCheckResult, QuotaMetadata, QuotaMiddlewareOptions, QuotaStorage, QuotaMiddleware, WarningLevel, } from './quota-types.js';
|
|
19
|
+
import type { QuotaMiddlewareOptions, QuotaMiddleware } from './quota-types.js';
|
|
113
20
|
/**
|
|
114
21
|
* Create a quota enforcement middleware
|
|
115
22
|
*
|
|
@@ -178,5 +85,4 @@ export declare function getQuotaLimit(tier: LicenseTier): number;
|
|
|
178
85
|
* Format quota remaining for display
|
|
179
86
|
*/
|
|
180
87
|
export declare function formatQuotaRemaining(remaining: number, limit: number): string;
|
|
181
|
-
export {};
|
|
182
88
|
//# sourceMappingURL=quota.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../../../src/middleware/quota.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../../../src/middleware/quota.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAe,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/E,OAAO,EAA8B,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAGvF,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,sBAAsB,EACtB,YAAY,EACZ,eAAe,EACf,YAAY,GACb,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EAGV,sBAAsB,EACtB,eAAe,EAChB,MAAM,kBAAkB,CAAA;AAkCzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,sBAA2B,GAAG,eAAe,CA6H3F;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EACnD,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EAC9C,iBAAiB,EAAE,iBAAiB,EACpC,eAAe,EAAE,eAAe,GAC/B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,GAAG,gBAAgB,CAAC,CAgB5E;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAE1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAEvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK7E"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Elastic-2.0
|
|
2
2
|
// Copyright 2024-2025 Smith Horn Group Ltd
|
|
3
3
|
import { buildQuotaExceededResponse } from './errorFormatter.js';
|
|
4
|
+
// Import helpers from quota-helpers.ts
|
|
5
|
+
import { InMemoryQuotaStorage, getWarningLevel, getWarningMessage, getCustomerId, } from './quota-helpers.js';
|
|
4
6
|
// ============================================================================
|
|
5
7
|
// Configuration
|
|
6
8
|
// ============================================================================
|
|
@@ -19,93 +21,6 @@ const TIER_QUOTAS = {
|
|
|
19
21
|
*/
|
|
20
22
|
const UPGRADE_URL = 'https://skillsmith.app/upgrade';
|
|
21
23
|
// ============================================================================
|
|
22
|
-
// In-Memory Storage (Default)
|
|
23
|
-
// ============================================================================
|
|
24
|
-
/**
|
|
25
|
-
* Simple in-memory storage for quota tracking
|
|
26
|
-
* Note: This resets on server restart. Use a database-backed storage
|
|
27
|
-
* in production via the storage option.
|
|
28
|
-
*/
|
|
29
|
-
class InMemoryQuotaStorage {
|
|
30
|
-
usage = new Map();
|
|
31
|
-
async getUsage(customerId) {
|
|
32
|
-
const now = new Date();
|
|
33
|
-
const existing = this.usage.get(customerId);
|
|
34
|
-
// If we have existing data and it's still in the current period, return it
|
|
35
|
-
if (existing && existing.periodEnd > now) {
|
|
36
|
-
return existing;
|
|
37
|
-
}
|
|
38
|
-
// Otherwise, create a new period
|
|
39
|
-
const periodStart = this.getMonthStart(now);
|
|
40
|
-
const periodEnd = this.getMonthEnd(now);
|
|
41
|
-
const newUsage = { used: 0, periodStart, periodEnd };
|
|
42
|
-
this.usage.set(customerId, newUsage);
|
|
43
|
-
return newUsage;
|
|
44
|
-
}
|
|
45
|
-
async incrementUsage(customerId, cost) {
|
|
46
|
-
const usage = await this.getUsage(customerId);
|
|
47
|
-
usage.used += cost;
|
|
48
|
-
}
|
|
49
|
-
async initializePeriod(customerId, _limit) {
|
|
50
|
-
const now = new Date();
|
|
51
|
-
this.usage.set(customerId, {
|
|
52
|
-
used: 0,
|
|
53
|
-
periodStart: this.getMonthStart(now),
|
|
54
|
-
periodEnd: this.getMonthEnd(now),
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
getMonthStart(date) {
|
|
58
|
-
return new Date(date.getFullYear(), date.getMonth(), 1);
|
|
59
|
-
}
|
|
60
|
-
getMonthEnd(date) {
|
|
61
|
-
return new Date(date.getFullYear(), date.getMonth() + 1, 1);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
// ============================================================================
|
|
65
|
-
// Helper Functions
|
|
66
|
-
// ============================================================================
|
|
67
|
-
/**
|
|
68
|
-
* Get the warning level based on percentage used
|
|
69
|
-
*/
|
|
70
|
-
function getWarningLevel(percentUsed) {
|
|
71
|
-
if (percentUsed >= 100)
|
|
72
|
-
return 100;
|
|
73
|
-
if (percentUsed >= 90)
|
|
74
|
-
return 90;
|
|
75
|
-
if (percentUsed >= 80)
|
|
76
|
-
return 80;
|
|
77
|
-
return 0;
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Get warning message based on level and current usage
|
|
81
|
-
*/
|
|
82
|
-
function getWarningMessage(warningLevel, used, limit, _tier) {
|
|
83
|
-
if (warningLevel === 0)
|
|
84
|
-
return undefined;
|
|
85
|
-
const remaining = Math.max(0, limit - used);
|
|
86
|
-
switch (warningLevel) {
|
|
87
|
-
case 100:
|
|
88
|
-
return `API quota exceeded (${used.toLocaleString()}/${limit.toLocaleString()} calls). Upgrade to continue.`;
|
|
89
|
-
case 90:
|
|
90
|
-
return `Warning: 90% of API quota used (${remaining.toLocaleString()} calls remaining). Consider upgrading.`;
|
|
91
|
-
case 80:
|
|
92
|
-
return `Notice: 80% of API quota used (${remaining.toLocaleString()} calls remaining).`;
|
|
93
|
-
default:
|
|
94
|
-
return undefined;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Generate a customer ID from license info
|
|
99
|
-
* Falls back to 'anonymous' for community users without an organization ID
|
|
100
|
-
*/
|
|
101
|
-
function getCustomerId(licenseInfo, providedId) {
|
|
102
|
-
if (providedId)
|
|
103
|
-
return providedId;
|
|
104
|
-
if (licenseInfo?.organizationId)
|
|
105
|
-
return licenseInfo.organizationId;
|
|
106
|
-
return 'anonymous';
|
|
107
|
-
}
|
|
108
|
-
// ============================================================================
|
|
109
24
|
// Quota Middleware Factory
|
|
110
25
|
// ============================================================================
|
|
111
26
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota.js","sourceRoot":"","sources":["../../../src/middleware/quota.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,2CAA2C;AAmB3C,OAAO,EAAE,0BAA0B,EAAyB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"quota.js","sourceRoot":"","sources":["../../../src/middleware/quota.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Local skill search functionality for MCP Search Tool
|
|
3
|
+
* @module @skillsmith/mcp-server/tools/LocalSkillSearch
|
|
4
|
+
* @see SMI-1809: Local skill search integration
|
|
5
|
+
* @see SMI-1830: Extracted from search.ts to comply with 500-line limit
|
|
6
|
+
*
|
|
7
|
+
* Provides local skill indexing and search:
|
|
8
|
+
* - Singleton LocalIndexer management
|
|
9
|
+
* - Local skill to search result conversion
|
|
10
|
+
* - Filtered local skill search
|
|
11
|
+
*/
|
|
12
|
+
import { type SkillSearchResult, type SearchFilters } from '@skillsmith/core';
|
|
13
|
+
import { LocalIndexer, type LocalSkill } from '../indexer/LocalIndexer.js';
|
|
14
|
+
/**
|
|
15
|
+
* Get or create the local indexer instance
|
|
16
|
+
*/
|
|
17
|
+
export declare function getLocalIndexer(): LocalIndexer;
|
|
18
|
+
/**
|
|
19
|
+
* Convert a LocalSkill to SkillSearchResult format.
|
|
20
|
+
* SMI-1809: Marks local skills with source: "local" for identification.
|
|
21
|
+
*/
|
|
22
|
+
export declare function localSkillToSearchResult(skill: LocalSkill): SkillSearchResult;
|
|
23
|
+
/**
|
|
24
|
+
* Search local skills and convert to SkillSearchResult format.
|
|
25
|
+
* SMI-1809: Returns matching local skills for search integration.
|
|
26
|
+
*
|
|
27
|
+
* @param query - Search query string
|
|
28
|
+
* @param filters - Search filters to apply
|
|
29
|
+
* @returns Array of matching local skills as SkillSearchResult
|
|
30
|
+
*/
|
|
31
|
+
export declare function searchLocalSkills(query: string, filters: SearchFilters): Promise<SkillSearchResult[]>;
|
|
32
|
+
//# sourceMappingURL=LocalSkillSearch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocalSkillSearch.d.ts","sourceRoot":"","sources":["../../../src/tools/LocalSkillSearch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAEnB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAK1E;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAK9C;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,UAAU,GAAG,iBAAiB,CAW7E;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA8B9B"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Local skill search functionality for MCP Search Tool
|
|
3
|
+
* @module @skillsmith/mcp-server/tools/LocalSkillSearch
|
|
4
|
+
* @see SMI-1809: Local skill search integration
|
|
5
|
+
* @see SMI-1830: Extracted from search.ts to comply with 500-line limit
|
|
6
|
+
*
|
|
7
|
+
* Provides local skill indexing and search:
|
|
8
|
+
* - Singleton LocalIndexer management
|
|
9
|
+
* - Local skill to search result conversion
|
|
10
|
+
* - Filtered local skill search
|
|
11
|
+
*/
|
|
12
|
+
import { extractCategoryFromTags } from '../utils/validation.js';
|
|
13
|
+
import { LocalIndexer } from '../indexer/LocalIndexer.js';
|
|
14
|
+
// Singleton local indexer for performance
|
|
15
|
+
let localIndexer = null;
|
|
16
|
+
/**
|
|
17
|
+
* Get or create the local indexer instance
|
|
18
|
+
*/
|
|
19
|
+
export function getLocalIndexer() {
|
|
20
|
+
if (!localIndexer) {
|
|
21
|
+
localIndexer = new LocalIndexer();
|
|
22
|
+
}
|
|
23
|
+
return localIndexer;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Convert a LocalSkill to SkillSearchResult format.
|
|
27
|
+
* SMI-1809: Marks local skills with source: "local" for identification.
|
|
28
|
+
*/
|
|
29
|
+
export function localSkillToSearchResult(skill) {
|
|
30
|
+
return {
|
|
31
|
+
id: skill.id,
|
|
32
|
+
name: skill.name,
|
|
33
|
+
description: skill.description || '',
|
|
34
|
+
author: skill.author,
|
|
35
|
+
category: extractCategoryFromTags(skill.tags),
|
|
36
|
+
trustTier: 'local',
|
|
37
|
+
score: skill.qualityScore,
|
|
38
|
+
source: 'local',
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Search local skills and convert to SkillSearchResult format.
|
|
43
|
+
* SMI-1809: Returns matching local skills for search integration.
|
|
44
|
+
*
|
|
45
|
+
* @param query - Search query string
|
|
46
|
+
* @param filters - Search filters to apply
|
|
47
|
+
* @returns Array of matching local skills as SkillSearchResult
|
|
48
|
+
*/
|
|
49
|
+
export async function searchLocalSkills(query, filters) {
|
|
50
|
+
const indexer = getLocalIndexer();
|
|
51
|
+
// Index local skills (uses cache if valid)
|
|
52
|
+
const localSkills = await indexer.index();
|
|
53
|
+
// If no local skills, return empty
|
|
54
|
+
if (localSkills.length === 0) {
|
|
55
|
+
return [];
|
|
56
|
+
}
|
|
57
|
+
// Filter by query if provided
|
|
58
|
+
let matchingSkills = query ? indexer.search(query, localSkills) : localSkills;
|
|
59
|
+
// Apply min_score filter
|
|
60
|
+
if (filters.minScore !== undefined) {
|
|
61
|
+
const minScorePercent = filters.minScore * 100; // Convert from 0-1 to 0-100
|
|
62
|
+
matchingSkills = matchingSkills.filter((skill) => skill.qualityScore >= minScorePercent);
|
|
63
|
+
}
|
|
64
|
+
// Apply category filter
|
|
65
|
+
if (filters.category) {
|
|
66
|
+
matchingSkills = matchingSkills.filter((skill) => {
|
|
67
|
+
const skillCategory = extractCategoryFromTags(skill.tags);
|
|
68
|
+
return skillCategory === filters.category;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
// Convert to SkillSearchResult format
|
|
72
|
+
return matchingSkills.map(localSkillToSearchResult);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=LocalSkillSearch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocalSkillSearch.js","sourceRoot":"","sources":["../../../src/tools/LocalSkillSearch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,YAAY,EAAmB,MAAM,4BAA4B,CAAA;AAE1E,0CAA0C;AAC1C,IAAI,YAAY,GAAwB,IAAI,CAAA;AAE5C;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,IAAI,YAAY,EAAE,CAAA;IACnC,CAAC;IACD,OAAO,YAAY,CAAA;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAiB;IACxD,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;QACpC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7C,SAAS,EAAE,OAAoB;QAC/B,KAAK,EAAE,KAAK,CAAC,YAAY;QACzB,MAAM,EAAE,OAAO;KAChB,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAa,EACb,OAAsB;IAEtB,MAAM,OAAO,GAAG,eAAe,EAAE,CAAA;IAEjC,2CAA2C;IAC3C,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAA;IAEzC,mCAAmC;IACnC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,8BAA8B;IAC9B,IAAI,cAAc,GAAiB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;IAE3F,yBAAyB;IACzB,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAA,CAAC,4BAA4B;QAC3E,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,IAAI,eAAe,CAAC,CAAA;IAC1F,CAAC;IAED,wBAAwB;IACxB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/C,MAAM,aAAa,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACzD,OAAO,aAAa,KAAK,OAAO,CAAC,QAAQ,CAAA;QAC3C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,sCAAsC;IACtC,OAAO,cAAc,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;AACrD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare.helpers.js","sourceRoot":"","sources":["../../../src/tools/compare.helpers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"compare.helpers.js","sourceRoot":"","sources":["../../../src/tools/compare.helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAOpF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAoB;IAC5C,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,aAAa,EAAE,KAAK,CAAC,KAAK;QAC1B,eAAe,EAAE,KAAK,CAAC,cAAc,IAAI,IAAI;QAC7C,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;KACjC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAqB,EACrB,MAAqB;IAErB,MAAM,WAAW,GAAsB,EAAE,CAAA;IAEzC,2BAA2B;IAC3B,WAAW,CAAC,IAAI,CAAC;QACf,KAAK,EAAE,eAAe;QACtB,OAAO,EAAE,MAAM,CAAC,KAAK;QACrB,OAAO,EAAE,MAAM,CAAC,KAAK;QACrB,MAAM,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;KACtF,CAAC,CAAA;IAEF,wBAAwB;IACxB,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACpD,WAAW,CAAC,IAAI,CAAC;QACf,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,MAAM,CAAC,SAAS;QACzB,OAAO,EAAE,MAAM,CAAC,SAAS;QACzB,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;KAC9E,CAAC,CAAA;IAEF,yCAAyC;IACzC,WAAW,CAAC,IAAI,CAAC;QACf,KAAK,EAAE,oBAAoB;QAC3B,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM;QACnC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM;QACnC,MAAM,EACJ,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM;YACrD,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM;gBACvD,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,KAAK;KACd,CAAC,CAAA;IAEF,oCAAoC;IACpC,WAAW,CAAC,IAAI,CAAC;QACf,KAAK,EAAE,gBAAgB;QACvB,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;QAC/B,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;QAC/B,MAAM,EACJ,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM;YAC7C,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM;gBAC/C,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,KAAK;KACd,CAAC,CAAA;IAEF,6BAA6B;IAC7B,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QACnD,KAAK,MAAM,GAAG,IAAI;YAChB,SAAS;YACT,YAAY;YACZ,aAAa;YACb,UAAU;YACV,eAAe;SACP,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;YACvC,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;YACvC,WAAW,CAAC,IAAI,CAAC;gBACf,KAAK,EAAE,SAAS,GAAG,EAAE;gBACrB,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;aACtD,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,WAAW;IACX,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxC,WAAW,CAAC,IAAI,CAAC;YACf,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,MAAM,CAAC,QAAQ;YACxB,OAAO,EAAE,MAAM,CAAC,QAAQ;SACzB,CAAC,CAAA;IACJ,CAAC;IAED,SAAS;IACT,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QACpC,WAAW,CAAC,IAAI,CAAC;YACf,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,MAAM,CAAC,MAAM;YACtB,OAAO,EAAE,MAAM,CAAC,MAAM;SACvB,CAAC,CAAA;IACJ,CAAC;IAED,kBAAkB;IAClB,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/E,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,WAAW,CAAC,IAAI,CAAC;YACf,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,WAAW;SACrB,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAqB,EACrB,MAAqB,EACrB,WAA8B;IAE9B,aAAa;IACb,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG;YAAE,KAAK,EAAE,CAAA;aAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG;YAAE,KAAK,EAAE,CAAA;IACvC,CAAC;IAED,sCAAsC;IACtC,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAEpD,qCAAqC;IACrC,IAAI,UAAU,KAAK,CAAC;QAAE,KAAK,IAAI,CAAC,CAAA;IAChC,IAAI,UAAU,KAAK,CAAC;QAAE,KAAK,IAAI,CAAC,CAAA;IAEhC,kCAAkC;IAClC,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC;QAAE,KAAK,IAAI,CAAC,CAAA;IAC/C,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC;QAAE,KAAK,IAAI,CAAC,CAAA;IAE/C,IAAI,MAAyB,CAAA;IAC7B,IAAI,cAAsB,CAAA;IAE1B,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,CAAA;QACZ,cAAc,GAAG,GAAG,MAAM,CAAC,IAAI,0BAA0B,CAAA;QACzD,MAAM,OAAO,GAAa,EAAE,CAAA;QAE5B,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC,KAAK,GAAG,CAAC,CAAA;QAC3E,CAAC;QACD,IAAI,UAAU,GAAG,UAAU,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,SAAS,GAAG,CAAC,CAAA;QACzD,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QACpC,CAAC;QAED,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,yBAAyB,CAAA;QAE3F,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpD,cAAc,IAAI,aAAa,MAAM,CAAC,IAAI,wBAAwB,CAAA;QACpE,CAAC;IACH,CAAC;SAAM,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,CAAA;QACZ,cAAc,GAAG,GAAG,MAAM,CAAC,IAAI,0BAA0B,CAAA;QACzD,MAAM,OAAO,GAAa,EAAE,CAAA;QAE5B,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC,KAAK,GAAG,CAAC,CAAA;QAC3E,CAAC;QACD,IAAI,UAAU,GAAG,UAAU,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,SAAS,GAAG,CAAC,CAAA;QACzD,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QACpC,CAAC;QAED,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,yBAAyB,CAAA;QAE3F,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpD,cAAc,IAAI,aAAa,MAAM,CAAC,IAAI,wBAAwB,CAAA;QACpE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,KAAK,CAAA;QACd,cAAc,GAAG,8BAA8B,CAAA;QAE/C,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxC,cAAc,IAAI,UAAU,MAAM,CAAC,IAAI,QAAQ,MAAM,CAAC,IAAI;iBACvD,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;iBAC/C,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBACX,IAAI,CAAC,GAAG,CAAC,cAAc,CAAA;YAC1B,cAAc,IAAI,MAAM,MAAM,CAAC,IAAI,QAAQ,MAAM,CAAC,IAAI;iBACnD,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;iBAC/C,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBACX,IAAI,CAAC,GAAG,CAAC,aAAa,CAAA;QAC3B,CAAC;aAAM,CAAC;YACN,cAAc,IAAI,GAAG,MAAM,CAAC,IAAI,kBAAkB,MAAM,CAAC,QAAQ,WAAW,MAAM,CAAC,IAAI,cAAc,MAAM,CAAC,QAAQ,GAAG,CAAA;QACzH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,CAAA;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAsB;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAA;IAC/B,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;QACtC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,SAAS;QACnC,UAAU,EAAE,OAAO,CAAC,OAAO,IAAI,SAAS;QACxC,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,uBAAuB,CAAC,IAAI,CAAC;QACvC,SAAS,EAAE,kBAAkB,CAAC,OAAO,CAAC,SAAsB,CAAC;QAC7D,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;QACpD,cAAc,EAAE,SAAS;QACzB,IAAI;QACJ,cAAc,EAAE,mBAAmB,GAAG,OAAO,CAAC,EAAE;QAChD,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,gFAAgF;QAChF,YAAY,EAAE,EAAE;QAChB,8CAA8C;QAC9C,QAAQ,EAAE,IAAI,CAAC,MAAM,CACnB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC;YACC,aAAa;YACb,SAAS;YACT,eAAe;YACf,QAAQ;YACR,UAAU;YACV,UAAU;YACV,cAAc;YACd,aAAa;YACb,OAAO;YACP,OAAO;SACR,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAC9B;KACF,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,GAAW,EAAE,MAAc;IAChD,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,KAAa;IACzD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;IAC7C,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,CAAA;IACxD,OAAO,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC1C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare.types.d.ts","sourceRoot":"","sources":["../../../src/tools/compare.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,QAAQ,IAAI,KAAK,EAAE,YAAY,IAAI,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEpG;;GAEG;AACH,eAAO,MAAM,kBAAkB;IAC7B,gCAAgC;;IAEhC,iCAAiC;;;;;;;;EAEjC,CAAA;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa;IACb,MAAM,EAAE,MAAM,CAAA;IACd,4BAA4B;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,kCAAkC;IAClC,eAAe,EAAE,cAAc,GAAG,IAAI,CAAA;IACtC,iBAAiB;IACjB,UAAU,EAAE,SAAS,CAAA;IACrB,eAAe;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW;IACX,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,2BAA2B;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,mBAAmB;IACnB,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,yBAAyB;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,yBAAyB;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,UAAU,EAAE;QACV,CAAC,EAAE,YAAY,CAAA;QACf,CAAC,EAAE,YAAY,CAAA;KAChB,CAAA;IACD,yCAAyC;IACzC,WAAW,EAAE,eAAe,EAAE,CAAA;IAC9B,0BAA0B;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,qCAAqC;IACrC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAA;IACzB,yBAAyB;IACzB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;CACF;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAkB7B,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG;IAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAElF
|
|
1
|
+
{"version":3,"file":"compare.types.d.ts","sourceRoot":"","sources":["../../../src/tools/compare.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,QAAQ,IAAI,KAAK,EAAE,YAAY,IAAI,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEpG;;GAEG;AACH,eAAO,MAAM,kBAAkB;IAC7B,gCAAgC;;IAEhC,iCAAiC;;;;;;;;EAEjC,CAAA;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa;IACb,MAAM,EAAE,MAAM,CAAA;IACd,4BAA4B;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,kCAAkC;IAClC,eAAe,EAAE,cAAc,GAAG,IAAI,CAAA;IACtC,iBAAiB;IACjB,UAAU,EAAE,SAAS,CAAA;IACrB,eAAe;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW;IACX,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,2BAA2B;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,mBAAmB;IACnB,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,yBAAyB;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,yBAAyB;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,UAAU,EAAE;QACV,CAAC,EAAE,YAAY,CAAA;QACf,CAAC,EAAE,YAAY,CAAA;KAChB,CAAA;IACD,yCAAyC;IACzC,WAAW,EAAE,eAAe,EAAE,CAAA;IAC9B,0BAA0B;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,qCAAqC;IACrC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAA;IACzB,yBAAyB;IACzB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;CACF;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAkB7B,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG;IAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAElF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAMrD,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB"}
|