skillpkg-core 0.5.2 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/fetcher/fetcher.d.ts +26 -0
- package/dist/fetcher/fetcher.d.ts.map +1 -0
- package/dist/fetcher/fetcher.js +254 -0
- package/dist/fetcher/fetcher.js.map +1 -0
- package/dist/fetcher/index.d.ts +14 -0
- package/dist/fetcher/index.d.ts.map +1 -0
- package/dist/fetcher/index.js +14 -0
- package/dist/fetcher/index.js.map +1 -0
- package/dist/fetcher/source-parser.d.ts +35 -0
- package/dist/fetcher/source-parser.d.ts.map +1 -0
- package/dist/fetcher/source-parser.js +114 -0
- package/dist/fetcher/source-parser.js.map +1 -0
- package/dist/fetcher/types.d.ts +43 -0
- package/dist/fetcher/types.d.ts.map +1 -0
- package/dist/fetcher/types.js +13 -0
- package/dist/fetcher/types.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/resolver/dependency-resolver.d.ts.map +1 -1
- package/dist/resolver/dependency-resolver.js +3 -1
- package/dist/resolver/dependency-resolver.js.map +1 -1
- package/dist/resolver/types.d.ts +2 -0
- package/dist/resolver/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Skill } from '../types.js';
|
|
2
|
+
import type { FetchResult, FetcherOptions } from './types.js';
|
|
3
|
+
import type { SkillFetcher, SkillMetadata } from '../resolver/types.js';
|
|
4
|
+
import type { SkillFetcherAdapter } from '../installer/types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Fetch a skill from any supported source
|
|
7
|
+
*/
|
|
8
|
+
export declare function fetchSkill(source: string, options?: FetcherOptions): Promise<FetchResult>;
|
|
9
|
+
/**
|
|
10
|
+
* Parse SKILL.md content into Skill object
|
|
11
|
+
*/
|
|
12
|
+
export declare function parseSkillMd(content: string): Skill | null;
|
|
13
|
+
/**
|
|
14
|
+
* Fetch only metadata (for dependency resolution)
|
|
15
|
+
*/
|
|
16
|
+
export declare function fetchMetadata(source: string, options?: FetcherOptions): Promise<SkillMetadata | null>;
|
|
17
|
+
/**
|
|
18
|
+
* Create a SkillFetcher adapter for use with DependencyResolver
|
|
19
|
+
*/
|
|
20
|
+
export declare function createSkillFetcher(options?: FetcherOptions): SkillFetcher;
|
|
21
|
+
/**
|
|
22
|
+
* Create a SkillFetcherAdapter for use with Installer
|
|
23
|
+
* This is the recommended adapter for full installation workflows
|
|
24
|
+
*/
|
|
25
|
+
export declare function createSkillFetcherAdapter(options?: FetcherOptions): SkillFetcherAdapter;
|
|
26
|
+
//# sourceMappingURL=fetcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../src/fetcher/fetcher.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAgB,MAAM,YAAY,CAAC;AAG5E,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,WAAW,CAAC,CAuBtB;AAgLD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAsB1D;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAW/B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,cAAmB,GAAG,YAAY,CAU7E;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,cAAmB,GAAG,mBAAmB,CAiB3F"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified skill fetcher
|
|
3
|
+
*
|
|
4
|
+
* Fetches skills from various sources (GitHub, Gist, URL, local, pack)
|
|
5
|
+
*/
|
|
6
|
+
import { readFile, stat } from 'fs/promises';
|
|
7
|
+
import { existsSync } from 'fs';
|
|
8
|
+
import { join, resolve } from 'path';
|
|
9
|
+
import matter from 'gray-matter';
|
|
10
|
+
import { parseSource, normalizeSource } from './source-parser.js';
|
|
11
|
+
import { detectSkillMd } from '../github/search.js';
|
|
12
|
+
/**
|
|
13
|
+
* Fetch a skill from any supported source
|
|
14
|
+
*/
|
|
15
|
+
export async function fetchSkill(source, options = {}) {
|
|
16
|
+
try {
|
|
17
|
+
const parsed = parseSource(source);
|
|
18
|
+
const skill = await fetchByType(parsed, options);
|
|
19
|
+
if (!skill) {
|
|
20
|
+
return {
|
|
21
|
+
success: false,
|
|
22
|
+
error: `Failed to fetch skill from: ${source}`,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
success: true,
|
|
27
|
+
skill,
|
|
28
|
+
sourceUrl: normalizeSource(source),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
return {
|
|
33
|
+
success: false,
|
|
34
|
+
error: error instanceof Error ? error.message : String(error),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Fetch skill by parsed source type
|
|
40
|
+
*/
|
|
41
|
+
async function fetchByType(parsed, options) {
|
|
42
|
+
switch (parsed.type) {
|
|
43
|
+
case 'github':
|
|
44
|
+
return fetchFromGitHub(parsed.value, options);
|
|
45
|
+
case 'gist':
|
|
46
|
+
return fetchFromGist(parsed.value, options);
|
|
47
|
+
case 'url':
|
|
48
|
+
return fetchFromUrl(parsed.value, options);
|
|
49
|
+
case 'local':
|
|
50
|
+
return fetchFromLocal(parsed.value);
|
|
51
|
+
case 'pack':
|
|
52
|
+
return fetchFromPack(parsed.value);
|
|
53
|
+
default:
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Fetch skill from GitHub repository
|
|
59
|
+
*/
|
|
60
|
+
async function fetchFromGitHub(repo, options) {
|
|
61
|
+
const token = options.githubToken || process.env.GITHUB_TOKEN;
|
|
62
|
+
// Detect SKILL.md location
|
|
63
|
+
const detection = await detectSkillMd(repo, token);
|
|
64
|
+
if (!detection.hasSkill || !detection.skillFile) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
// Fetch raw content
|
|
68
|
+
const rawUrl = `https://raw.githubusercontent.com/${repo}/HEAD/${detection.skillFile}`;
|
|
69
|
+
const headers = {
|
|
70
|
+
'User-Agent': 'skillpkg',
|
|
71
|
+
};
|
|
72
|
+
if (token) {
|
|
73
|
+
headers['Authorization'] = `token ${token}`;
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
const response = await fetch(rawUrl, { headers });
|
|
77
|
+
if (!response.ok) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
const content = await response.text();
|
|
81
|
+
return parseSkillMd(content);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Fetch skill from GitHub Gist
|
|
89
|
+
*/
|
|
90
|
+
async function fetchFromGist(gistId, options) {
|
|
91
|
+
const token = options.githubToken || process.env.GITHUB_TOKEN;
|
|
92
|
+
const headers = {
|
|
93
|
+
Accept: 'application/vnd.github.v3+json',
|
|
94
|
+
'User-Agent': 'skillpkg',
|
|
95
|
+
};
|
|
96
|
+
if (token) {
|
|
97
|
+
headers.Authorization = `token ${token}`;
|
|
98
|
+
}
|
|
99
|
+
const response = await fetch(`https://api.github.com/gists/${gistId}`, {
|
|
100
|
+
headers,
|
|
101
|
+
});
|
|
102
|
+
if (!response.ok) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
const data = await response.json();
|
|
106
|
+
// Find SKILL.md file
|
|
107
|
+
const files = data.files || {};
|
|
108
|
+
const skillFile = Object.values(files).find((f) => {
|
|
109
|
+
const filename = f.filename?.toLowerCase() || '';
|
|
110
|
+
return filename === 'skill.md' || filename.endsWith('/skill.md');
|
|
111
|
+
});
|
|
112
|
+
if (!skillFile?.content) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
return parseSkillMd(skillFile.content);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Fetch skill from URL
|
|
119
|
+
*/
|
|
120
|
+
async function fetchFromUrl(url, options) {
|
|
121
|
+
const controller = new AbortController();
|
|
122
|
+
const timeoutId = options.timeout
|
|
123
|
+
? setTimeout(() => controller.abort(), options.timeout)
|
|
124
|
+
: undefined;
|
|
125
|
+
try {
|
|
126
|
+
const response = await fetch(url, {
|
|
127
|
+
redirect: 'follow',
|
|
128
|
+
signal: controller.signal,
|
|
129
|
+
});
|
|
130
|
+
if (!response.ok) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
const content = await response.text();
|
|
134
|
+
return parseSkillMd(content);
|
|
135
|
+
}
|
|
136
|
+
finally {
|
|
137
|
+
if (timeoutId) {
|
|
138
|
+
clearTimeout(timeoutId);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Fetch skill from local path
|
|
144
|
+
*/
|
|
145
|
+
async function fetchFromLocal(path) {
|
|
146
|
+
const resolvedPath = resolve(path);
|
|
147
|
+
// Check for SKILL.md in directory
|
|
148
|
+
const skillMdPaths = [
|
|
149
|
+
join(resolvedPath, 'SKILL.md'),
|
|
150
|
+
join(resolvedPath, 'skill.md'),
|
|
151
|
+
resolvedPath, // Maybe it's the file itself
|
|
152
|
+
];
|
|
153
|
+
for (const skillPath of skillMdPaths) {
|
|
154
|
+
if (existsSync(skillPath)) {
|
|
155
|
+
try {
|
|
156
|
+
const fileStat = await stat(skillPath);
|
|
157
|
+
if (fileStat.isDirectory()) {
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
const content = await readFile(skillPath, 'utf-8');
|
|
161
|
+
return parseSkillMd(content);
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Fetch skill from .skillpkg pack file
|
|
172
|
+
*/
|
|
173
|
+
async function fetchFromPack(_packPath) {
|
|
174
|
+
// Pack format is a tarball with SKILL.md inside
|
|
175
|
+
// For now, return null - implement when needed
|
|
176
|
+
// TODO: Implement pack file parsing
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Parse SKILL.md content into Skill object
|
|
181
|
+
*/
|
|
182
|
+
export function parseSkillMd(content) {
|
|
183
|
+
try {
|
|
184
|
+
const { data, content: body } = matter(content);
|
|
185
|
+
// Validate required fields
|
|
186
|
+
if (!data.name || typeof data.name !== 'string') {
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
return {
|
|
190
|
+
schema: data.schema || '1.0',
|
|
191
|
+
name: data.name,
|
|
192
|
+
version: data.version || '1.0.0',
|
|
193
|
+
description: data.description || '',
|
|
194
|
+
author: data.author,
|
|
195
|
+
keywords: data.keywords || data.tags,
|
|
196
|
+
dependencies: data.dependencies,
|
|
197
|
+
instructions: body.trim(),
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Fetch only metadata (for dependency resolution)
|
|
206
|
+
*/
|
|
207
|
+
export async function fetchMetadata(source, options = {}) {
|
|
208
|
+
const result = await fetchSkill(source, options);
|
|
209
|
+
if (!result.success || !result.skill) {
|
|
210
|
+
return null;
|
|
211
|
+
}
|
|
212
|
+
return {
|
|
213
|
+
name: result.skill.name,
|
|
214
|
+
version: result.skill.version,
|
|
215
|
+
dependencies: result.skill.dependencies,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Create a SkillFetcher adapter for use with DependencyResolver
|
|
220
|
+
*/
|
|
221
|
+
export function createSkillFetcher(options = {}) {
|
|
222
|
+
return {
|
|
223
|
+
async fetchMetadata(source) {
|
|
224
|
+
return fetchMetadata(source, options);
|
|
225
|
+
},
|
|
226
|
+
async fetchSkill(source) {
|
|
227
|
+
const result = await fetchSkill(source, options);
|
|
228
|
+
return result.success ? result.skill || null : null;
|
|
229
|
+
},
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Create a SkillFetcherAdapter for use with Installer
|
|
234
|
+
* This is the recommended adapter for full installation workflows
|
|
235
|
+
*/
|
|
236
|
+
export function createSkillFetcherAdapter(options = {}) {
|
|
237
|
+
return {
|
|
238
|
+
async fetchMetadata(source) {
|
|
239
|
+
const meta = await fetchMetadata(source, options);
|
|
240
|
+
if (!meta)
|
|
241
|
+
return null;
|
|
242
|
+
return {
|
|
243
|
+
name: meta.name,
|
|
244
|
+
version: meta.version,
|
|
245
|
+
dependencies: meta.dependencies,
|
|
246
|
+
};
|
|
247
|
+
},
|
|
248
|
+
async fetchSkill(source) {
|
|
249
|
+
const result = await fetchSkill(source, options);
|
|
250
|
+
return result.success ? result.skill || null : null;
|
|
251
|
+
},
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=fetcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../../src/fetcher/fetcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetcher module - Unified skill fetching from various sources
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* - GitHub: github:user/repo or user/repo
|
|
6
|
+
* - Gist: gist:id
|
|
7
|
+
* - URL: https://... or http://...
|
|
8
|
+
* - Local: ./path, ../path, /absolute/path
|
|
9
|
+
* - Pack: *.skillpkg files
|
|
10
|
+
*/
|
|
11
|
+
export * from './types.js';
|
|
12
|
+
export * from './source-parser.js';
|
|
13
|
+
export * from './fetcher.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fetcher/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetcher module - Unified skill fetching from various sources
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* - GitHub: github:user/repo or user/repo
|
|
6
|
+
* - Gist: gist:id
|
|
7
|
+
* - URL: https://... or http://...
|
|
8
|
+
* - Local: ./path, ../path, /absolute/path
|
|
9
|
+
* - Pack: *.skillpkg files
|
|
10
|
+
*/
|
|
11
|
+
export * from './types.js';
|
|
12
|
+
export * from './source-parser.js';
|
|
13
|
+
export * from './fetcher.js';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fetcher/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ParsedSource } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Parse a source string to determine its type and value
|
|
4
|
+
*
|
|
5
|
+
* @param source - Source string (github:user/repo, gist:id, URL, or path)
|
|
6
|
+
* @returns Parsed source with type and normalized value
|
|
7
|
+
* @throws InvalidSourceError if source format is not recognized
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* parseSource('github:user/repo') // { type: 'github', value: 'user/repo', original: 'github:user/repo' }
|
|
11
|
+
* parseSource('user/repo') // { type: 'github', value: 'user/repo', original: 'user/repo' }
|
|
12
|
+
* parseSource('gist:abc123') // { type: 'gist', value: 'abc123', original: 'gist:abc123' }
|
|
13
|
+
* parseSource('https://...') // { type: 'url', value: 'https://...', original: 'https://...' }
|
|
14
|
+
* parseSource('./path') // { type: 'local', value: './path', original: './path' }
|
|
15
|
+
* parseSource('file.skillpkg') // { type: 'pack', value: 'file.skillpkg', original: 'file.skillpkg' }
|
|
16
|
+
*/
|
|
17
|
+
export declare function parseSource(source: string): ParsedSource;
|
|
18
|
+
/**
|
|
19
|
+
* Normalize source to canonical format
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* normalizeSource('user/repo') // 'github:user/repo'
|
|
23
|
+
* normalizeSource('github:u/r') // 'github:u/r'
|
|
24
|
+
* normalizeSource('./path') // './path'
|
|
25
|
+
*/
|
|
26
|
+
export declare function normalizeSource(source: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Check if source is a remote source (requires network)
|
|
29
|
+
*/
|
|
30
|
+
export declare function isRemoteSource(source: string): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Check if source is a local source (no network needed)
|
|
33
|
+
*/
|
|
34
|
+
export declare function isLocalSource(source: string): boolean;
|
|
35
|
+
//# sourceMappingURL=source-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-parser.d.ts","sourceRoot":"","sources":["../../src/fetcher/source-parser.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAQ/C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAwDxD;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWtD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOrD"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source parser - Parse source strings into typed objects
|
|
3
|
+
*/
|
|
4
|
+
import { existsSync } from 'fs';
|
|
5
|
+
import { InvalidSourceError } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* GitHub repo pattern: user/repo or user/repo-name
|
|
8
|
+
*/
|
|
9
|
+
const GITHUB_REPO_PATTERN = /^[a-zA-Z0-9_-]+\/[a-zA-Z0-9_.-]+$/;
|
|
10
|
+
/**
|
|
11
|
+
* Parse a source string to determine its type and value
|
|
12
|
+
*
|
|
13
|
+
* @param source - Source string (github:user/repo, gist:id, URL, or path)
|
|
14
|
+
* @returns Parsed source with type and normalized value
|
|
15
|
+
* @throws InvalidSourceError if source format is not recognized
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* parseSource('github:user/repo') // { type: 'github', value: 'user/repo', original: 'github:user/repo' }
|
|
19
|
+
* parseSource('user/repo') // { type: 'github', value: 'user/repo', original: 'user/repo' }
|
|
20
|
+
* parseSource('gist:abc123') // { type: 'gist', value: 'abc123', original: 'gist:abc123' }
|
|
21
|
+
* parseSource('https://...') // { type: 'url', value: 'https://...', original: 'https://...' }
|
|
22
|
+
* parseSource('./path') // { type: 'local', value: './path', original: './path' }
|
|
23
|
+
* parseSource('file.skillpkg') // { type: 'pack', value: 'file.skillpkg', original: 'file.skillpkg' }
|
|
24
|
+
*/
|
|
25
|
+
export function parseSource(source) {
|
|
26
|
+
const trimmed = source.trim();
|
|
27
|
+
if (!trimmed) {
|
|
28
|
+
throw new InvalidSourceError(source, 'Source cannot be empty');
|
|
29
|
+
}
|
|
30
|
+
// GitHub: github:user/repo
|
|
31
|
+
if (trimmed.startsWith('github:')) {
|
|
32
|
+
const value = trimmed.slice(7);
|
|
33
|
+
if (!GITHUB_REPO_PATTERN.test(value)) {
|
|
34
|
+
throw new InvalidSourceError(source, 'Invalid GitHub repo format. Use github:user/repo');
|
|
35
|
+
}
|
|
36
|
+
return { type: 'github', value, original: source };
|
|
37
|
+
}
|
|
38
|
+
// Gist: gist:id
|
|
39
|
+
if (trimmed.startsWith('gist:')) {
|
|
40
|
+
const value = trimmed.slice(5);
|
|
41
|
+
if (!value) {
|
|
42
|
+
throw new InvalidSourceError(source, 'Gist ID cannot be empty');
|
|
43
|
+
}
|
|
44
|
+
return { type: 'gist', value, original: source };
|
|
45
|
+
}
|
|
46
|
+
// URL: http:// or https://
|
|
47
|
+
if (trimmed.startsWith('https://') || trimmed.startsWith('http://')) {
|
|
48
|
+
return { type: 'url', value: trimmed, original: source };
|
|
49
|
+
}
|
|
50
|
+
// Pack file: *.skillpkg
|
|
51
|
+
if (trimmed.endsWith('.skillpkg')) {
|
|
52
|
+
return { type: 'pack', value: trimmed, original: source };
|
|
53
|
+
}
|
|
54
|
+
// Local path: starts with ./ or ../ or / or exists on filesystem
|
|
55
|
+
if (trimmed.startsWith('./') ||
|
|
56
|
+
trimmed.startsWith('../') ||
|
|
57
|
+
trimmed.startsWith('/')) {
|
|
58
|
+
return { type: 'local', value: trimmed, original: source };
|
|
59
|
+
}
|
|
60
|
+
// GitHub shorthand: user/repo (if matches pattern and doesn't exist locally)
|
|
61
|
+
if (GITHUB_REPO_PATTERN.test(trimmed) && !existsSync(trimmed)) {
|
|
62
|
+
return { type: 'github', value: trimmed, original: source };
|
|
63
|
+
}
|
|
64
|
+
// If it exists as a local path, treat as local
|
|
65
|
+
if (existsSync(trimmed)) {
|
|
66
|
+
return { type: 'local', value: trimmed, original: source };
|
|
67
|
+
}
|
|
68
|
+
// Unknown format
|
|
69
|
+
throw new InvalidSourceError(source);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Normalize source to canonical format
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* normalizeSource('user/repo') // 'github:user/repo'
|
|
76
|
+
* normalizeSource('github:u/r') // 'github:u/r'
|
|
77
|
+
* normalizeSource('./path') // './path'
|
|
78
|
+
*/
|
|
79
|
+
export function normalizeSource(source) {
|
|
80
|
+
const parsed = parseSource(source);
|
|
81
|
+
switch (parsed.type) {
|
|
82
|
+
case 'github':
|
|
83
|
+
return `github:${parsed.value}`;
|
|
84
|
+
case 'gist':
|
|
85
|
+
return `gist:${parsed.value}`;
|
|
86
|
+
default:
|
|
87
|
+
return parsed.value;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Check if source is a remote source (requires network)
|
|
92
|
+
*/
|
|
93
|
+
export function isRemoteSource(source) {
|
|
94
|
+
try {
|
|
95
|
+
const parsed = parseSource(source);
|
|
96
|
+
return ['github', 'gist', 'url'].includes(parsed.type);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Check if source is a local source (no network needed)
|
|
104
|
+
*/
|
|
105
|
+
export function isLocalSource(source) {
|
|
106
|
+
try {
|
|
107
|
+
const parsed = parseSource(source);
|
|
108
|
+
return ['local', 'pack'].includes(parsed.type);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=source-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-parser.js","sourceRoot":"","sources":["../../src/fetcher/source-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetcher types
|
|
3
|
+
*/
|
|
4
|
+
import type { Skill } from '../types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Supported source types
|
|
7
|
+
*/
|
|
8
|
+
export type SourceType = 'github' | 'gist' | 'url' | 'local' | 'pack';
|
|
9
|
+
/**
|
|
10
|
+
* Parsed source information
|
|
11
|
+
*/
|
|
12
|
+
export interface ParsedSource {
|
|
13
|
+
type: SourceType;
|
|
14
|
+
value: string;
|
|
15
|
+
/** Original source string */
|
|
16
|
+
original: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Fetch result
|
|
20
|
+
*/
|
|
21
|
+
export interface FetchResult {
|
|
22
|
+
success: boolean;
|
|
23
|
+
skill?: Skill;
|
|
24
|
+
error?: string;
|
|
25
|
+
/** Source URL for tracking */
|
|
26
|
+
sourceUrl?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Fetcher options
|
|
30
|
+
*/
|
|
31
|
+
export interface FetcherOptions {
|
|
32
|
+
/** GitHub token for API requests */
|
|
33
|
+
githubToken?: string;
|
|
34
|
+
/** Timeout in milliseconds */
|
|
35
|
+
timeout?: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Error thrown when source format is invalid
|
|
39
|
+
*/
|
|
40
|
+
export declare class InvalidSourceError extends Error {
|
|
41
|
+
constructor(source: string, hint?: string);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/fetcher/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAO1C"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error thrown when source format is invalid
|
|
3
|
+
*/
|
|
4
|
+
export class InvalidSourceError extends Error {
|
|
5
|
+
constructor(source, hint) {
|
|
6
|
+
const message = hint
|
|
7
|
+
? `Invalid source "${source}": ${hint}`
|
|
8
|
+
: `Invalid source "${source}". Supported formats: github:user/repo, user/repo, gist:id, https://url, ./local/path, or file.skillpkg`;
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = 'InvalidSourceError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/fetcher/types.ts"],"names":[],"mappings":"AAyCA;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,MAAc,EAAE,IAAa;QACvC,MAAM,OAAO,GAAG,IAAI;YAClB,CAAC,CAAC,mBAAmB,MAAM,MAAM,IAAI,EAAE;YACvC,CAAC,CAAC,mBAAmB,MAAM,yGAAyG,CAAC;QACvI,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Core library for skillpkg - Agent Skills Package Manager
|
|
5
5
|
*/
|
|
6
|
-
export declare const VERSION = "0.
|
|
6
|
+
export declare const VERSION = "0.5.4";
|
|
7
7
|
export * from './types.js';
|
|
8
8
|
export * from './parser/index.js';
|
|
9
9
|
export * from './store/index.js';
|
|
@@ -18,4 +18,5 @@ export * from './resolver/index.js';
|
|
|
18
18
|
export * from './syncer/index.js';
|
|
19
19
|
export * from './installer/index.js';
|
|
20
20
|
export * from './skill/index.js';
|
|
21
|
+
export * from './fetcher/index.js';
|
|
21
22
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,cAAc,YAAY,CAAC;AAG3B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,cAAc,YAAY,CAAC;AAG3B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Core library for skillpkg - Agent Skills Package Manager
|
|
5
5
|
*/
|
|
6
|
-
export const VERSION = '0.
|
|
6
|
+
export const VERSION = '0.5.4';
|
|
7
7
|
// Types
|
|
8
8
|
export * from './types.js';
|
|
9
9
|
// Parser module
|
|
@@ -32,4 +32,6 @@ export * from './syncer/index.js';
|
|
|
32
32
|
export * from './installer/index.js';
|
|
33
33
|
// Skill module - Read and create SKILL.md files
|
|
34
34
|
export * from './skill/index.js';
|
|
35
|
+
// Fetcher module - Unified skill fetching from various sources
|
|
36
|
+
export * from './fetcher/index.js';
|
|
35
37
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,gBAAgB;AAChB,cAAc,mBAAmB,CAAC;AAElC,eAAe;AACf,cAAc,kBAAkB,CAAC;AAEjC,kBAAkB;AAClB,cAAc,qBAAqB,CAAC;AAEpC,kBAAkB;AAClB,cAAc,qBAAqB,CAAC;AAEpC,kBAAkB;AAClB,cAAc,qBAAqB,CAAC;AAEpC,2DAA2D;AAC3D,cAAc,qBAAqB,CAAC;AAEpC,0CAA0C;AAC1C,cAAc,mBAAmB,CAAC;AAElC,wDAAwD;AACxD,cAAc,mBAAmB,CAAC;AAElC,oEAAoE;AACpE,cAAc,kBAAkB,CAAC;AAEjC,0CAA0C;AAC1C,cAAc,qBAAqB,CAAC;AAEpC,mCAAmC;AACnC,cAAc,mBAAmB,CAAC;AAElC,mDAAmD;AACnD,cAAc,sBAAsB,CAAC;AAErC,gDAAgD;AAChD,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,gBAAgB;AAChB,cAAc,mBAAmB,CAAC;AAElC,eAAe;AACf,cAAc,kBAAkB,CAAC;AAEjC,kBAAkB;AAClB,cAAc,qBAAqB,CAAC;AAEpC,kBAAkB;AAClB,cAAc,qBAAqB,CAAC;AAEpC,kBAAkB;AAClB,cAAc,qBAAqB,CAAC;AAEpC,2DAA2D;AAC3D,cAAc,qBAAqB,CAAC;AAEpC,0CAA0C;AAC1C,cAAc,mBAAmB,CAAC;AAElC,wDAAwD;AACxD,cAAc,mBAAmB,CAAC;AAElC,oEAAoE;AACpE,cAAc,kBAAkB,CAAC;AAEjC,0CAA0C;AAC1C,cAAc,qBAAqB,CAAC;AAEpC,mCAAmC;AACnC,cAAc,mBAAmB,CAAC;AAElC,mDAAmD;AACnD,cAAc,sBAAsB,CAAC;AAErC,gDAAgD;AAChD,cAAc,kBAAkB,CAAC;AAEjC,+DAA+D;AAC/D,cAAc,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-resolver.d.ts","sourceRoot":"","sources":["../../src/resolver/dependency-resolver.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAEV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE5E;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,EAAE,YAAY;IAIjC;;;OAGG;IACG,mBAAmB,CACvB,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,GAAG,CAAC,MAAM,CAAa,GACjC,OAAO,CAAC,gBAAgB,CAAC;IAwC5B;;OAEG;YACW,gBAAgB;
|
|
1
|
+
{"version":3,"file":"dependency-resolver.d.ts","sourceRoot":"","sources":["../../src/resolver/dependency-resolver.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAEV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE5E;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,EAAE,YAAY;IAIjC;;;OAGG;IACG,mBAAmB,CACvB,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,GAAG,CAAC,MAAM,CAAa,GACjC,OAAO,CAAC,gBAAgB,CAAC;IAwC5B;;OAEG;YACW,gBAAgB;IAiF9B;;OAEG;IACG,mBAAmB,CACvB,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,GAAG,CAAC,MAAM,CAAa,GACjC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAKjC;;OAEG;YACW,kBAAkB;IAuChC;;;OAGG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAKnE;;OAEG;IACG,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQ5E;;;OAGG;IACH,OAAO,CAAC,gBAAgB;CAqBzB;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;gBAEb,KAAK,EAAE,MAAM,EAAE;CAK5B;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,YAAY,GAAG,kBAAkB,CAElF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GACjC,YAAY,CAkBd"}
|
|
@@ -80,8 +80,10 @@ export class DependencyResolver {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
// Add this skill to resolved list
|
|
83
|
+
// Use actual skill name from metadata, not extracted from source URL
|
|
84
|
+
const actualSkillName = metadata.name || skillName;
|
|
83
85
|
resolved.push({
|
|
84
|
-
name:
|
|
86
|
+
name: actualSkillName,
|
|
85
87
|
source,
|
|
86
88
|
type: 'skill',
|
|
87
89
|
transitive: requiredBy !== null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../src/resolver/dependency-resolver.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../src/resolver/dependency-resolver.ts"],"names":[],"mappings":"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"}
|
package/dist/resolver/types.d.ts
CHANGED
|
@@ -61,6 +61,8 @@ export interface McpResolutionResult {
|
|
|
61
61
|
export interface SkillFetcher {
|
|
62
62
|
/** Fetch skill metadata from source */
|
|
63
63
|
fetchMetadata(source: string): Promise<SkillMetadata | null>;
|
|
64
|
+
/** Fetch full skill from source (optional, for full installation) */
|
|
65
|
+
fetchSkill?(source: string): Promise<import('../types.js').Skill | null>;
|
|
64
66
|
}
|
|
65
67
|
/**
|
|
66
68
|
* Minimal skill metadata for dependency resolution
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/resolver/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;IACtB,8CAA8C;IAC9C,UAAU,EAAE,OAAO,CAAC;IACpB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa;IACb,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,uBAAuB;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,YAAY,EAAE,kBAAkB,EAAE,CAAC;IACnC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,qCAAqC;IACrC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,qCAAqC;IACrC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/resolver/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;IACtB,8CAA8C;IAC9C,UAAU,EAAE,OAAO,CAAC;IACpB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa;IACb,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,uBAAuB;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,YAAY,EAAE,kBAAkB,EAAE,CAAC;IACnC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,qCAAqC;IACrC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,qCAAqC;IACrC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAC7D,qEAAqE;IACrE,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,aAAa,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;CAC1E;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE;QACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;KAChB,CAAC;CACH"}
|