@nimblebrain/mpak-sdk 0.1.0 → 0.1.2
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 +93 -45
- package/dist/index.cjs +519 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +292 -0
- package/dist/index.d.ts +288 -35
- package/dist/index.js +477 -35
- package/dist/index.js.map +1 -1
- package/package.json +46 -41
- package/LICENSE +0 -190
- package/dist/client.d.ts +0 -138
- package/dist/client.d.ts.map +0 -1
- package/dist/client.integration.test.d.ts +0 -11
- package/dist/client.integration.test.d.ts.map +0 -1
- package/dist/client.integration.test.js +0 -121
- package/dist/client.integration.test.js.map +0 -1
- package/dist/client.js +0 -430
- package/dist/client.js.map +0 -1
- package/dist/client.test.d.ts +0 -2
- package/dist/client.test.d.ts.map +0 -1
- package/dist/client.test.js +0 -344
- package/dist/client.test.js.map +0 -1
- package/dist/errors.d.ts +0 -30
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -46
- package/dist/errors.js.map +0 -1
- package/dist/errors.test.d.ts +0 -2
- package/dist/errors.test.d.ts.map +0 -1
- package/dist/errors.test.js +0 -136
- package/dist/errors.test.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/types.d.ts +0 -146
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -7
- package/dist/types.js.map +0 -1
package/dist/client.test.js
DELETED
|
@@ -1,344 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
2
|
-
import { createHash } from 'crypto';
|
|
3
|
-
import { MpakClient } from './client.js';
|
|
4
|
-
import { MpakNotFoundError, MpakIntegrityError, MpakNetworkError, } from './errors.js';
|
|
5
|
-
// Helper to compute SHA256 hash (same as client implementation)
|
|
6
|
-
function sha256(content) {
|
|
7
|
-
return createHash('sha256').update(content, 'utf8').digest('hex');
|
|
8
|
-
}
|
|
9
|
-
// Helper to create a mock Response
|
|
10
|
-
function mockResponse(body, init = {}) {
|
|
11
|
-
const bodyStr = typeof body === 'string' ? body : JSON.stringify(body);
|
|
12
|
-
return {
|
|
13
|
-
text: () => Promise.resolve(bodyStr),
|
|
14
|
-
json: () => Promise.resolve(typeof body === 'string' ? JSON.parse(body) : body),
|
|
15
|
-
status: init.status ?? 200,
|
|
16
|
-
ok: init.ok ?? (init.status === undefined || init.status < 400),
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
describe('MpakClient', () => {
|
|
20
|
-
let fetchMock;
|
|
21
|
-
beforeEach(() => {
|
|
22
|
-
fetchMock = vi.fn();
|
|
23
|
-
vi.stubGlobal('fetch', fetchMock);
|
|
24
|
-
});
|
|
25
|
-
afterEach(() => {
|
|
26
|
-
vi.unstubAllGlobals();
|
|
27
|
-
});
|
|
28
|
-
describe('constructor', () => {
|
|
29
|
-
it('uses default registry URL when not specified', async () => {
|
|
30
|
-
const client = new MpakClient();
|
|
31
|
-
fetchMock.mockResolvedValueOnce(mockResponse({ bundles: [], total: 0, pagination: {} }));
|
|
32
|
-
await client.searchBundles();
|
|
33
|
-
expect(fetchMock).toHaveBeenCalledWith(expect.stringContaining('https://api.mpak.dev'), expect.any(Object));
|
|
34
|
-
});
|
|
35
|
-
it('uses custom registry URL when specified', async () => {
|
|
36
|
-
const client = new MpakClient({
|
|
37
|
-
registryUrl: 'https://custom.registry.com',
|
|
38
|
-
});
|
|
39
|
-
fetchMock.mockResolvedValueOnce(mockResponse({ bundles: [], total: 0, pagination: {} }));
|
|
40
|
-
await client.searchBundles();
|
|
41
|
-
expect(fetchMock).toHaveBeenCalledWith(expect.stringContaining('https://custom.registry.com'), expect.any(Object));
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
describe('searchBundles', () => {
|
|
45
|
-
it('returns search results', async () => {
|
|
46
|
-
const client = new MpakClient();
|
|
47
|
-
const searchResponse = {
|
|
48
|
-
bundles: [
|
|
49
|
-
{ name: '@test/bundle-1', latest_version: '1.0.0', downloads: 100, published_at: '2024-01-01', verified: true },
|
|
50
|
-
],
|
|
51
|
-
total: 1,
|
|
52
|
-
pagination: { limit: 20, offset: 0, has_more: false },
|
|
53
|
-
};
|
|
54
|
-
fetchMock.mockResolvedValueOnce(mockResponse(searchResponse));
|
|
55
|
-
const result = await client.searchBundles({ q: 'test' });
|
|
56
|
-
expect(result.bundles).toHaveLength(1);
|
|
57
|
-
expect(result.total).toBe(1);
|
|
58
|
-
});
|
|
59
|
-
it('passes query parameters correctly', async () => {
|
|
60
|
-
const client = new MpakClient();
|
|
61
|
-
fetchMock.mockResolvedValueOnce(mockResponse({ bundles: [], total: 0, pagination: {} }));
|
|
62
|
-
await client.searchBundles({
|
|
63
|
-
q: 'mcp',
|
|
64
|
-
type: 'python',
|
|
65
|
-
sort: 'downloads',
|
|
66
|
-
limit: 10,
|
|
67
|
-
offset: 5,
|
|
68
|
-
});
|
|
69
|
-
const calledUrl = fetchMock.mock.calls[0]?.[0];
|
|
70
|
-
expect(calledUrl).toContain('q=mcp');
|
|
71
|
-
expect(calledUrl).toContain('type=python');
|
|
72
|
-
expect(calledUrl).toContain('sort=downloads');
|
|
73
|
-
expect(calledUrl).toContain('limit=10');
|
|
74
|
-
expect(calledUrl).toContain('offset=5');
|
|
75
|
-
});
|
|
76
|
-
it('calls /v1/bundles/search endpoint', async () => {
|
|
77
|
-
const client = new MpakClient();
|
|
78
|
-
fetchMock.mockResolvedValueOnce(mockResponse({ bundles: [], total: 0, pagination: {} }));
|
|
79
|
-
await client.searchBundles();
|
|
80
|
-
const calledUrl = fetchMock.mock.calls[0]?.[0];
|
|
81
|
-
expect(calledUrl).toContain('/v1/bundles/search');
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
describe('getBundle', () => {
|
|
85
|
-
it('returns bundle details', async () => {
|
|
86
|
-
const client = new MpakClient();
|
|
87
|
-
const bundleResponse = {
|
|
88
|
-
name: '@test/bundle',
|
|
89
|
-
latest_version: '1.0.0',
|
|
90
|
-
downloads: 100,
|
|
91
|
-
published_at: '2024-01-01',
|
|
92
|
-
verified: true,
|
|
93
|
-
versions: [],
|
|
94
|
-
};
|
|
95
|
-
fetchMock.mockResolvedValueOnce(mockResponse(bundleResponse));
|
|
96
|
-
const result = await client.getBundle('@test/bundle');
|
|
97
|
-
expect(result.name).toBe('@test/bundle');
|
|
98
|
-
});
|
|
99
|
-
it('throws error for unscoped name', async () => {
|
|
100
|
-
const client = new MpakClient();
|
|
101
|
-
await expect(client.getBundle('invalid-name')).rejects.toThrow('Package name must be scoped');
|
|
102
|
-
});
|
|
103
|
-
it('throws MpakNotFoundError on 404', async () => {
|
|
104
|
-
const client = new MpakClient();
|
|
105
|
-
fetchMock.mockResolvedValueOnce(mockResponse('', { status: 404 }));
|
|
106
|
-
await expect(client.getBundle('@test/nonexistent')).rejects.toThrow(MpakNotFoundError);
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
describe('getBundleVersions', () => {
|
|
110
|
-
it('returns versions list', async () => {
|
|
111
|
-
const client = new MpakClient();
|
|
112
|
-
const versionsResponse = {
|
|
113
|
-
name: '@test/bundle',
|
|
114
|
-
latest: '1.0.0',
|
|
115
|
-
versions: [
|
|
116
|
-
{ version: '1.0.0', artifacts_count: 1, platforms: [], published_at: '2024-01-01', downloads: 50, publish_method: null },
|
|
117
|
-
],
|
|
118
|
-
};
|
|
119
|
-
fetchMock.mockResolvedValueOnce(mockResponse(versionsResponse));
|
|
120
|
-
const result = await client.getBundleVersions('@test/bundle');
|
|
121
|
-
expect(result.versions).toHaveLength(1);
|
|
122
|
-
expect(result.latest).toBe('1.0.0');
|
|
123
|
-
});
|
|
124
|
-
});
|
|
125
|
-
describe('getBundleDownload', () => {
|
|
126
|
-
it('returns download info with URL', async () => {
|
|
127
|
-
const client = new MpakClient();
|
|
128
|
-
const downloadResponse = {
|
|
129
|
-
url: 'https://storage.example.com/bundle.mcpb',
|
|
130
|
-
bundle: {
|
|
131
|
-
name: '@test/bundle',
|
|
132
|
-
version: '1.0.0',
|
|
133
|
-
platform: { os: 'darwin', arch: 'arm64' },
|
|
134
|
-
sha256: 'abc123',
|
|
135
|
-
size: 12345,
|
|
136
|
-
},
|
|
137
|
-
expires_at: '2024-01-02T00:00:00Z',
|
|
138
|
-
};
|
|
139
|
-
fetchMock.mockResolvedValueOnce(mockResponse(downloadResponse));
|
|
140
|
-
const result = await client.getBundleDownload('@test/bundle', '1.0.0');
|
|
141
|
-
expect(result.url).toBe('https://storage.example.com/bundle.mcpb');
|
|
142
|
-
expect(result.bundle.sha256).toBe('abc123');
|
|
143
|
-
});
|
|
144
|
-
it('passes platform parameters', async () => {
|
|
145
|
-
const client = new MpakClient();
|
|
146
|
-
fetchMock.mockResolvedValueOnce(mockResponse({
|
|
147
|
-
url: 'https://example.com',
|
|
148
|
-
bundle: { name: '@test/bundle', version: '1.0.0', platform: {}, sha256: '', size: 0 },
|
|
149
|
-
}));
|
|
150
|
-
await client.getBundleDownload('@test/bundle', '1.0.0', { os: 'linux', arch: 'x64' });
|
|
151
|
-
const calledUrl = fetchMock.mock.calls[0]?.[0];
|
|
152
|
-
expect(calledUrl).toContain('os=linux');
|
|
153
|
-
expect(calledUrl).toContain('arch=x64');
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
describe('searchSkills', () => {
|
|
157
|
-
it('returns search results', async () => {
|
|
158
|
-
const client = new MpakClient();
|
|
159
|
-
const searchResponse = {
|
|
160
|
-
skills: [
|
|
161
|
-
{ name: '@test/skill-1', description: 'Test skill', latest_version: '1.0.0', downloads: 50, published_at: '2024-01-01' },
|
|
162
|
-
],
|
|
163
|
-
total: 1,
|
|
164
|
-
pagination: { limit: 20, offset: 0, has_more: false },
|
|
165
|
-
};
|
|
166
|
-
fetchMock.mockResolvedValueOnce(mockResponse(searchResponse));
|
|
167
|
-
const result = await client.searchSkills({ q: 'test' });
|
|
168
|
-
expect(result.skills).toHaveLength(1);
|
|
169
|
-
expect(result.total).toBe(1);
|
|
170
|
-
});
|
|
171
|
-
it('passes all query parameters', async () => {
|
|
172
|
-
const client = new MpakClient();
|
|
173
|
-
fetchMock.mockResolvedValueOnce(mockResponse({ skills: [], total: 0, pagination: {} }));
|
|
174
|
-
await client.searchSkills({
|
|
175
|
-
q: 'crm',
|
|
176
|
-
tags: 'sales,contacts',
|
|
177
|
-
category: 'development',
|
|
178
|
-
surface: 'claude-code',
|
|
179
|
-
sort: 'recent',
|
|
180
|
-
limit: 10,
|
|
181
|
-
offset: 5,
|
|
182
|
-
});
|
|
183
|
-
const calledUrl = fetchMock.mock.calls[0]?.[0];
|
|
184
|
-
expect(calledUrl).toContain('q=crm');
|
|
185
|
-
expect(calledUrl).toContain('tags=sales%2Ccontacts');
|
|
186
|
-
expect(calledUrl).toContain('category=development');
|
|
187
|
-
expect(calledUrl).toContain('surface=claude-code');
|
|
188
|
-
expect(calledUrl).toContain('sort=recent');
|
|
189
|
-
});
|
|
190
|
-
it('calls /v1/skills/search endpoint', async () => {
|
|
191
|
-
const client = new MpakClient();
|
|
192
|
-
fetchMock.mockResolvedValueOnce(mockResponse({ skills: [], total: 0, pagination: {} }));
|
|
193
|
-
await client.searchSkills();
|
|
194
|
-
const calledUrl = fetchMock.mock.calls[0]?.[0];
|
|
195
|
-
expect(calledUrl).toContain('/v1/skills/search');
|
|
196
|
-
});
|
|
197
|
-
});
|
|
198
|
-
describe('getSkill', () => {
|
|
199
|
-
it('returns skill details', async () => {
|
|
200
|
-
const client = new MpakClient();
|
|
201
|
-
const skillResponse = {
|
|
202
|
-
name: '@test/skill',
|
|
203
|
-
description: 'A test skill',
|
|
204
|
-
latest_version: '1.0.0',
|
|
205
|
-
downloads: 100,
|
|
206
|
-
published_at: '2024-01-01',
|
|
207
|
-
versions: [],
|
|
208
|
-
};
|
|
209
|
-
fetchMock.mockResolvedValueOnce(mockResponse(skillResponse));
|
|
210
|
-
const result = await client.getSkill('@test/skill');
|
|
211
|
-
expect(result.name).toBe('@test/skill');
|
|
212
|
-
expect(result.description).toBe('A test skill');
|
|
213
|
-
});
|
|
214
|
-
it('throws MpakNotFoundError on 404', async () => {
|
|
215
|
-
const client = new MpakClient();
|
|
216
|
-
fetchMock.mockResolvedValueOnce(mockResponse('', { status: 404 }));
|
|
217
|
-
await expect(client.getSkill('@test/nonexistent')).rejects.toThrow(MpakNotFoundError);
|
|
218
|
-
});
|
|
219
|
-
});
|
|
220
|
-
describe('getSkillDownload', () => {
|
|
221
|
-
it('returns download info', async () => {
|
|
222
|
-
const client = new MpakClient();
|
|
223
|
-
const downloadResponse = {
|
|
224
|
-
url: 'https://storage.example.com/skill.skill',
|
|
225
|
-
skill: {
|
|
226
|
-
name: '@test/skill',
|
|
227
|
-
version: '1.0.0',
|
|
228
|
-
sha256: 'abc123def456',
|
|
229
|
-
size: 1024,
|
|
230
|
-
},
|
|
231
|
-
expires_at: '2024-01-02T00:00:00Z',
|
|
232
|
-
};
|
|
233
|
-
fetchMock.mockResolvedValueOnce(mockResponse(downloadResponse));
|
|
234
|
-
const result = await client.getSkillDownload('@test/skill');
|
|
235
|
-
expect(result.url).toBe('https://storage.example.com/skill.skill');
|
|
236
|
-
expect(result.skill.sha256).toBe('abc123def456');
|
|
237
|
-
});
|
|
238
|
-
});
|
|
239
|
-
describe('getSkillVersionDownload', () => {
|
|
240
|
-
it('returns download info for specific version', async () => {
|
|
241
|
-
const client = new MpakClient();
|
|
242
|
-
const downloadResponse = {
|
|
243
|
-
url: 'https://storage.example.com/skill-v1.skill',
|
|
244
|
-
skill: {
|
|
245
|
-
name: '@test/skill',
|
|
246
|
-
version: '1.0.0',
|
|
247
|
-
sha256: 'version1hash',
|
|
248
|
-
size: 1024,
|
|
249
|
-
},
|
|
250
|
-
expires_at: '2024-01-02T00:00:00Z',
|
|
251
|
-
};
|
|
252
|
-
fetchMock.mockResolvedValueOnce(mockResponse(downloadResponse));
|
|
253
|
-
const result = await client.getSkillVersionDownload('@test/skill', '1.0.0');
|
|
254
|
-
expect(result.skill.version).toBe('1.0.0');
|
|
255
|
-
});
|
|
256
|
-
it('calls correct versioned endpoint', async () => {
|
|
257
|
-
const client = new MpakClient();
|
|
258
|
-
fetchMock.mockResolvedValueOnce(mockResponse({
|
|
259
|
-
url: 'https://example.com',
|
|
260
|
-
skill: { name: '@test/skill', version: '2.0.0', sha256: '', size: 0 },
|
|
261
|
-
expires_at: '',
|
|
262
|
-
}));
|
|
263
|
-
await client.getSkillVersionDownload('@test/skill', '2.0.0');
|
|
264
|
-
const calledUrl = fetchMock.mock.calls[0]?.[0];
|
|
265
|
-
expect(calledUrl).toContain('/versions/2.0.0/download');
|
|
266
|
-
});
|
|
267
|
-
});
|
|
268
|
-
describe('downloadSkillContent', () => {
|
|
269
|
-
it('downloads content without verification', async () => {
|
|
270
|
-
const client = new MpakClient();
|
|
271
|
-
const content = '# My Skill\n\nSkill content here';
|
|
272
|
-
fetchMock.mockResolvedValueOnce(mockResponse(content));
|
|
273
|
-
const result = await client.downloadSkillContent('https://example.com/skill.skill');
|
|
274
|
-
expect(result.content).toBe(content);
|
|
275
|
-
expect(result.verified).toBe(false);
|
|
276
|
-
});
|
|
277
|
-
it('verifies integrity when hash provided', async () => {
|
|
278
|
-
const client = new MpakClient();
|
|
279
|
-
const content = 'skill content';
|
|
280
|
-
const hash = sha256(content);
|
|
281
|
-
fetchMock.mockResolvedValueOnce(mockResponse(content));
|
|
282
|
-
const result = await client.downloadSkillContent('https://example.com/skill.skill', hash);
|
|
283
|
-
expect(result.content).toBe(content);
|
|
284
|
-
expect(result.verified).toBe(true);
|
|
285
|
-
});
|
|
286
|
-
it('throws MpakIntegrityError on hash mismatch (fail-closed)', async () => {
|
|
287
|
-
const client = new MpakClient();
|
|
288
|
-
const content = 'actual content';
|
|
289
|
-
fetchMock.mockResolvedValueOnce(mockResponse(content));
|
|
290
|
-
await expect(client.downloadSkillContent('https://example.com/skill.skill', 'wrong_hash')).rejects.toThrow(MpakIntegrityError);
|
|
291
|
-
});
|
|
292
|
-
it('does not return content when integrity fails', async () => {
|
|
293
|
-
const client = new MpakClient();
|
|
294
|
-
const secretContent = 'sensitive skill content';
|
|
295
|
-
fetchMock.mockResolvedValueOnce(mockResponse(secretContent));
|
|
296
|
-
let leakedContent;
|
|
297
|
-
try {
|
|
298
|
-
const result = await client.downloadSkillContent('https://example.com/skill.skill', 'wrong_hash');
|
|
299
|
-
leakedContent = result.content;
|
|
300
|
-
}
|
|
301
|
-
catch {
|
|
302
|
-
// Expected
|
|
303
|
-
}
|
|
304
|
-
expect(leakedContent).toBeUndefined();
|
|
305
|
-
});
|
|
306
|
-
});
|
|
307
|
-
describe('detectPlatform', () => {
|
|
308
|
-
it('returns current platform', () => {
|
|
309
|
-
const platform = MpakClient.detectPlatform();
|
|
310
|
-
expect(platform).toHaveProperty('os');
|
|
311
|
-
expect(platform).toHaveProperty('arch');
|
|
312
|
-
expect(['darwin', 'linux', 'win32', 'any']).toContain(platform.os);
|
|
313
|
-
expect(['x64', 'arm64', 'any']).toContain(platform.arch);
|
|
314
|
-
});
|
|
315
|
-
});
|
|
316
|
-
describe('timeout handling', () => {
|
|
317
|
-
it('throws MpakNetworkError on timeout', async () => {
|
|
318
|
-
const client = new MpakClient({ timeout: 100 });
|
|
319
|
-
fetchMock.mockImplementationOnce(() => new Promise((_, reject) => {
|
|
320
|
-
setTimeout(() => {
|
|
321
|
-
const error = new Error('AbortError');
|
|
322
|
-
error.name = 'AbortError';
|
|
323
|
-
reject(error);
|
|
324
|
-
}, 50);
|
|
325
|
-
}));
|
|
326
|
-
await expect(client.searchBundles()).rejects.toThrow(MpakNetworkError);
|
|
327
|
-
});
|
|
328
|
-
it('includes timeout duration in error message', async () => {
|
|
329
|
-
const client = new MpakClient({ timeout: 5000 });
|
|
330
|
-
fetchMock.mockImplementationOnce(() => {
|
|
331
|
-
const error = new Error('AbortError');
|
|
332
|
-
error.name = 'AbortError';
|
|
333
|
-
return Promise.reject(error);
|
|
334
|
-
});
|
|
335
|
-
await expect(client.searchBundles()).rejects.toThrow('5000ms');
|
|
336
|
-
});
|
|
337
|
-
it('wraps generic fetch errors as MpakNetworkError', async () => {
|
|
338
|
-
const client = new MpakClient();
|
|
339
|
-
fetchMock.mockRejectedValueOnce(new Error('ECONNREFUSED'));
|
|
340
|
-
await expect(client.searchBundles()).rejects.toThrow(MpakNetworkError);
|
|
341
|
-
});
|
|
342
|
-
});
|
|
343
|
-
});
|
|
344
|
-
//# sourceMappingURL=client.test.js.map
|
package/dist/client.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.test.js","sourceRoot":"","sources":["../src/client.test.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Base error class for mpak SDK errors
|
|
3
|
-
*/
|
|
4
|
-
export declare class MpakError extends Error {
|
|
5
|
-
code: string;
|
|
6
|
-
statusCode?: number;
|
|
7
|
-
constructor(message: string, code: string, statusCode?: number);
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Thrown when a requested resource is not found (404)
|
|
11
|
-
*/
|
|
12
|
-
export declare class MpakNotFoundError extends MpakError {
|
|
13
|
-
constructor(resource: string);
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Thrown when integrity verification fails (hash mismatch)
|
|
17
|
-
* This is a fail-closed error - content is NOT returned when this is thrown
|
|
18
|
-
*/
|
|
19
|
-
export declare class MpakIntegrityError extends MpakError {
|
|
20
|
-
expected: string;
|
|
21
|
-
actual: string;
|
|
22
|
-
constructor(expected: string, actual: string);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Thrown for network-related failures (timeouts, connection errors)
|
|
26
|
-
*/
|
|
27
|
-
export declare class MpakNetworkError extends MpakError {
|
|
28
|
-
constructor(message: string);
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=errors.d.ts.map
|
package/dist/errors.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;gBAER,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAM/D;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,SAAS;gBAClC,QAAQ,EAAE,MAAM;CAI7B;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,SAAS;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;gBAEH,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAS7C;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,SAAS;gBACjC,OAAO,EAAE,MAAM;CAI5B"}
|
package/dist/errors.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Base error class for mpak SDK errors
|
|
3
|
-
*/
|
|
4
|
-
export class MpakError extends Error {
|
|
5
|
-
code;
|
|
6
|
-
statusCode;
|
|
7
|
-
constructor(message, code, statusCode) {
|
|
8
|
-
super(message);
|
|
9
|
-
this.name = 'MpakError';
|
|
10
|
-
this.code = code;
|
|
11
|
-
this.statusCode = statusCode;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Thrown when a requested resource is not found (404)
|
|
16
|
-
*/
|
|
17
|
-
export class MpakNotFoundError extends MpakError {
|
|
18
|
-
constructor(resource) {
|
|
19
|
-
super(`Resource not found: ${resource}`, 'NOT_FOUND', 404);
|
|
20
|
-
this.name = 'MpakNotFoundError';
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Thrown when integrity verification fails (hash mismatch)
|
|
25
|
-
* This is a fail-closed error - content is NOT returned when this is thrown
|
|
26
|
-
*/
|
|
27
|
-
export class MpakIntegrityError extends MpakError {
|
|
28
|
-
expected;
|
|
29
|
-
actual;
|
|
30
|
-
constructor(expected, actual) {
|
|
31
|
-
super(`Integrity mismatch: expected ${expected}, got ${actual}`, 'INTEGRITY_MISMATCH');
|
|
32
|
-
this.name = 'MpakIntegrityError';
|
|
33
|
-
this.expected = expected;
|
|
34
|
-
this.actual = actual;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Thrown for network-related failures (timeouts, connection errors)
|
|
39
|
-
*/
|
|
40
|
-
export class MpakNetworkError extends MpakError {
|
|
41
|
-
constructor(message) {
|
|
42
|
-
super(message, 'NETWORK_ERROR');
|
|
43
|
-
this.name = 'MpakNetworkError';
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,IAAI,CAAS;IACb,UAAU,CAAU;IAEpB,YAAY,OAAe,EAAE,IAAY,EAAE,UAAmB;QAC5D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,SAAS;IAC9C,YAAY,QAAgB;QAC1B,KAAK,CAAC,uBAAuB,QAAQ,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAC/C,QAAQ,CAAS;IACjB,MAAM,CAAS;IAEf,YAAY,QAAgB,EAAE,MAAc;QAC1C,KAAK,CACH,gCAAgC,QAAQ,SAAS,MAAM,EAAE,EACzD,oBAAoB,CACrB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,SAAS;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF"}
|
package/dist/errors.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.test.d.ts","sourceRoot":"","sources":["../src/errors.test.ts"],"names":[],"mappings":""}
|
package/dist/errors.test.js
DELETED
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { MpakError, MpakNotFoundError, MpakIntegrityError, MpakNetworkError, } from './errors.js';
|
|
3
|
-
describe('MpakError', () => {
|
|
4
|
-
it('inherits from Error', () => {
|
|
5
|
-
const error = new MpakError('test message', 'TEST_CODE');
|
|
6
|
-
expect(error).toBeInstanceOf(Error);
|
|
7
|
-
});
|
|
8
|
-
it('can be caught as Error', () => {
|
|
9
|
-
const throwAndCatch = () => {
|
|
10
|
-
try {
|
|
11
|
-
throw new MpakError('test', 'TEST');
|
|
12
|
-
}
|
|
13
|
-
catch (e) {
|
|
14
|
-
if (e instanceof Error) {
|
|
15
|
-
return e.message;
|
|
16
|
-
}
|
|
17
|
-
return 'not an error';
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
expect(throwAndCatch()).toBe('test');
|
|
21
|
-
});
|
|
22
|
-
it('stores status code when provided', () => {
|
|
23
|
-
const error = new MpakError('test', 'TEST', 500);
|
|
24
|
-
expect(error.statusCode).toBe(500);
|
|
25
|
-
});
|
|
26
|
-
it('leaves status code undefined when not provided', () => {
|
|
27
|
-
const error = new MpakError('test', 'TEST');
|
|
28
|
-
expect(error.statusCode).toBeUndefined();
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
describe('MpakNotFoundError', () => {
|
|
32
|
-
it('formats resource name in message', () => {
|
|
33
|
-
const error = new MpakNotFoundError('@nimbletools/folk-crm@1.0.0');
|
|
34
|
-
expect(error.message).toContain('@nimbletools/folk-crm@1.0.0');
|
|
35
|
-
});
|
|
36
|
-
it('uses NOT_FOUND code', () => {
|
|
37
|
-
const error = new MpakNotFoundError('test');
|
|
38
|
-
expect(error.code).toBe('NOT_FOUND');
|
|
39
|
-
});
|
|
40
|
-
it('sets HTTP 404 status', () => {
|
|
41
|
-
const error = new MpakNotFoundError('test');
|
|
42
|
-
expect(error.statusCode).toBe(404);
|
|
43
|
-
});
|
|
44
|
-
it('can be caught as MpakError', () => {
|
|
45
|
-
const throwAndCatch = () => {
|
|
46
|
-
try {
|
|
47
|
-
throw new MpakNotFoundError('resource');
|
|
48
|
-
}
|
|
49
|
-
catch (e) {
|
|
50
|
-
if (e instanceof MpakError) {
|
|
51
|
-
return e.code;
|
|
52
|
-
}
|
|
53
|
-
return 'not MpakError';
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
expect(throwAndCatch()).toBe('NOT_FOUND');
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
describe('MpakIntegrityError', () => {
|
|
60
|
-
it('stores expected and actual hashes', () => {
|
|
61
|
-
const error = new MpakIntegrityError('abc123expected', 'def456actual');
|
|
62
|
-
expect(error.expected).toBe('abc123expected');
|
|
63
|
-
expect(error.actual).toBe('def456actual');
|
|
64
|
-
});
|
|
65
|
-
it('includes both hashes in message', () => {
|
|
66
|
-
const error = new MpakIntegrityError('expected', 'actual');
|
|
67
|
-
expect(error.message).toContain('expected');
|
|
68
|
-
expect(error.message).toContain('actual');
|
|
69
|
-
});
|
|
70
|
-
it('uses INTEGRITY_MISMATCH code', () => {
|
|
71
|
-
const error = new MpakIntegrityError('a', 'b');
|
|
72
|
-
expect(error.code).toBe('INTEGRITY_MISMATCH');
|
|
73
|
-
});
|
|
74
|
-
it('enables fail-closed error handling pattern', () => {
|
|
75
|
-
// This test verifies the error can be used for fail-closed integrity checks
|
|
76
|
-
// where content should NOT be returned on mismatch
|
|
77
|
-
const performIntegrityCheck = (content, expectedHash) => {
|
|
78
|
-
const actualHash = 'computed_hash';
|
|
79
|
-
if (actualHash !== expectedHash) {
|
|
80
|
-
throw new MpakIntegrityError(expectedHash, actualHash);
|
|
81
|
-
}
|
|
82
|
-
return content;
|
|
83
|
-
};
|
|
84
|
-
expect(() => performIntegrityCheck('secret', 'wrong_hash')).toThrow(MpakIntegrityError);
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
describe('MpakNetworkError', () => {
|
|
88
|
-
it('uses NETWORK_ERROR code', () => {
|
|
89
|
-
const error = new MpakNetworkError('Connection refused');
|
|
90
|
-
expect(error.code).toBe('NETWORK_ERROR');
|
|
91
|
-
});
|
|
92
|
-
it('preserves original error message', () => {
|
|
93
|
-
const error = new MpakNetworkError('ETIMEDOUT');
|
|
94
|
-
expect(error.message).toBe('ETIMEDOUT');
|
|
95
|
-
});
|
|
96
|
-
it('can be distinguished from other MpakErrors', () => {
|
|
97
|
-
const networkError = new MpakNetworkError('timeout');
|
|
98
|
-
const notFoundError = new MpakNotFoundError('resource');
|
|
99
|
-
expect(networkError).toBeInstanceOf(MpakNetworkError);
|
|
100
|
-
expect(networkError).not.toBeInstanceOf(MpakNotFoundError);
|
|
101
|
-
expect(notFoundError).not.toBeInstanceOf(MpakNetworkError);
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
describe('Error hierarchy', () => {
|
|
105
|
-
it('all errors inherit from MpakError', () => {
|
|
106
|
-
const errors = [
|
|
107
|
-
new MpakNotFoundError('test'),
|
|
108
|
-
new MpakIntegrityError('a', 'b'),
|
|
109
|
-
new MpakNetworkError('test'),
|
|
110
|
-
];
|
|
111
|
-
for (const error of errors) {
|
|
112
|
-
expect(error).toBeInstanceOf(MpakError);
|
|
113
|
-
expect(error).toBeInstanceOf(Error);
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
it('allows catching all SDK errors with MpakError', () => {
|
|
117
|
-
const errorFactories = [
|
|
118
|
-
() => new MpakNotFoundError('test'),
|
|
119
|
-
() => new MpakIntegrityError('a', 'b'),
|
|
120
|
-
() => new MpakNetworkError('test'),
|
|
121
|
-
];
|
|
122
|
-
for (const createError of errorFactories) {
|
|
123
|
-
expect(() => {
|
|
124
|
-
try {
|
|
125
|
-
throw createError();
|
|
126
|
-
}
|
|
127
|
-
catch (e) {
|
|
128
|
-
if (e instanceof MpakError) {
|
|
129
|
-
throw e;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}).toThrow(MpakError);
|
|
133
|
-
}
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
//# sourceMappingURL=errors.test.js.map
|
package/dist/errors.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.test.js","sourceRoot":"","sources":["../src/errors.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnD,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,MAAM,EACN,YAAY,EACZ,aAAa,EACb,cAAc,EACd,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,EACL,WAAW,EACX,iBAAiB,EACjB,YAAY,EAEZ,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,MAAM,GACP,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAC"}
|