@shakenbake/core 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/__tests__/errors.test.d.ts +2 -0
  2. package/dist/__tests__/errors.test.d.ts.map +1 -0
  3. package/dist/__tests__/errors.test.js +82 -0
  4. package/dist/__tests__/errors.test.js.map +1 -0
  5. package/dist/__tests__/mock-adapter.test.d.ts +2 -0
  6. package/dist/__tests__/mock-adapter.test.d.ts.map +1 -0
  7. package/dist/__tests__/mock-adapter.test.js +184 -0
  8. package/dist/__tests__/mock-adapter.test.js.map +1 -0
  9. package/dist/__tests__/plugin-registry.test.d.ts +2 -0
  10. package/dist/__tests__/plugin-registry.test.d.ts.map +1 -0
  11. package/dist/__tests__/plugin-registry.test.js +209 -0
  12. package/dist/__tests__/plugin-registry.test.js.map +1 -0
  13. package/dist/__tests__/redact.test.d.ts +2 -0
  14. package/dist/__tests__/redact.test.d.ts.map +1 -0
  15. package/dist/__tests__/redact.test.js +58 -0
  16. package/dist/__tests__/redact.test.js.map +1 -0
  17. package/dist/__tests__/report-builder.test.d.ts +2 -0
  18. package/dist/__tests__/report-builder.test.d.ts.map +1 -0
  19. package/dist/__tests__/report-builder.test.js +396 -0
  20. package/dist/__tests__/report-builder.test.js.map +1 -0
  21. package/dist/errors.d.ts +23 -0
  22. package/dist/errors.d.ts.map +1 -0
  23. package/dist/errors.js +49 -0
  24. package/dist/errors.js.map +1 -0
  25. package/dist/index.d.ts +9 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +23 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/mock-adapter.d.ts +46 -0
  30. package/dist/mock-adapter.d.ts.map +1 -0
  31. package/dist/mock-adapter.js +95 -0
  32. package/dist/mock-adapter.js.map +1 -0
  33. package/dist/plugin-registry.d.ts +36 -0
  34. package/dist/plugin-registry.d.ts.map +1 -0
  35. package/dist/plugin-registry.js +116 -0
  36. package/dist/plugin-registry.js.map +1 -0
  37. package/dist/redact.d.ts +13 -0
  38. package/dist/redact.d.ts.map +1 -0
  39. package/dist/redact.js +45 -0
  40. package/dist/redact.js.map +1 -0
  41. package/dist/report-builder.d.ts +37 -0
  42. package/dist/report-builder.d.ts.map +1 -0
  43. package/dist/report-builder.js +147 -0
  44. package/dist/report-builder.js.map +1 -0
  45. package/dist/types.d.ts +223 -0
  46. package/dist/types.d.ts.map +1 -0
  47. package/dist/types.js +6 -0
  48. package/dist/types.js.map +1 -0
  49. package/package.json +27 -0
@@ -0,0 +1,396 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const report_builder_js_1 = require("../report-builder.js");
5
+ const plugin_registry_js_1 = require("../plugin-registry.js");
6
+ const errors_js_1 = require("../errors.js");
7
+ const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
8
+ const ISO_REGEX = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/;
9
+ function makeAdapter(overrides) {
10
+ return {
11
+ name: 'mock',
12
+ uploadImage: vitest_1.vi.fn().mockResolvedValue('https://cdn.example.com/img.png'),
13
+ createIssue: vitest_1.vi
14
+ .fn()
15
+ .mockResolvedValue({ url: 'https://linear.app/1', id: 'ISS-1', success: true }),
16
+ testConnection: vitest_1.vi.fn().mockResolvedValue(true),
17
+ ...overrides,
18
+ };
19
+ }
20
+ function makeCapturePlugin() {
21
+ return {
22
+ name: 'mock-capture',
23
+ platform: 'universal',
24
+ capture: vitest_1.vi.fn().mockResolvedValue({
25
+ imageData: 'base64screenshot',
26
+ dimensions: { width: 1920, height: 1080 },
27
+ mimeType: 'image/png',
28
+ }),
29
+ };
30
+ }
31
+ function makeDeviceContext() {
32
+ return {
33
+ platform: { os: 'web' },
34
+ device: {},
35
+ screen: { width: 1920, height: 1080 },
36
+ network: {},
37
+ battery: {},
38
+ locale: {},
39
+ app: {},
40
+ accessibility: {},
41
+ performance: {},
42
+ navigation: {},
43
+ console: {},
44
+ };
45
+ }
46
+ function makeInput(overrides) {
47
+ return {
48
+ title: 'Button is broken',
49
+ description: 'The submit button does nothing when clicked',
50
+ severity: 'high',
51
+ category: 'bug',
52
+ annotatedScreenshot: 'YW5ub3RhdGVk', // "annotated" in base64
53
+ originalScreenshot: 'b3JpZ2luYWw=', // "original" in base64
54
+ ...overrides,
55
+ };
56
+ }
57
+ function makeCollector(name, partial) {
58
+ return {
59
+ name,
60
+ platform: 'universal',
61
+ collect: vitest_1.vi.fn().mockResolvedValue(partial),
62
+ };
63
+ }
64
+ (0, vitest_1.describe)('ReportBuilder', () => {
65
+ (0, vitest_1.describe)('build()', () => {
66
+ (0, vitest_1.it)('builds a BugReport with UUID and ISO timestamp', () => {
67
+ const registry = new plugin_registry_js_1.PluginRegistry();
68
+ const adapter = makeAdapter();
69
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
70
+ const ctx = makeDeviceContext();
71
+ const input = makeInput();
72
+ const report = builder.build(input, ctx);
73
+ (0, vitest_1.expect)(report.id).toMatch(UUID_REGEX);
74
+ (0, vitest_1.expect)(report.timestamp).toMatch(ISO_REGEX);
75
+ (0, vitest_1.expect)(report.title).toBe('Button is broken');
76
+ (0, vitest_1.expect)(report.description).toBe('The submit button does nothing when clicked');
77
+ (0, vitest_1.expect)(report.severity).toBe('high');
78
+ (0, vitest_1.expect)(report.category).toBe('bug');
79
+ (0, vitest_1.expect)(report.screenshot.annotated).toBe('YW5ub3RhdGVk');
80
+ (0, vitest_1.expect)(report.screenshot.original).toBe('b3JpZ2luYWw=');
81
+ (0, vitest_1.expect)(report.context).toBe(ctx);
82
+ });
83
+ (0, vitest_1.it)('generates unique IDs for different reports', () => {
84
+ const registry = new plugin_registry_js_1.PluginRegistry();
85
+ const adapter = makeAdapter();
86
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
87
+ const ctx = makeDeviceContext();
88
+ const report1 = builder.build(makeInput(), ctx);
89
+ const report2 = builder.build(makeInput(), ctx);
90
+ (0, vitest_1.expect)(report1.id).not.toBe(report2.id);
91
+ });
92
+ (0, vitest_1.it)('includes audio when provided', () => {
93
+ const registry = new plugin_registry_js_1.PluginRegistry();
94
+ const adapter = makeAdapter();
95
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
96
+ const ctx = makeDeviceContext();
97
+ const input = makeInput({ audio: 'YXVkaW8=' });
98
+ const report = builder.build(input, ctx);
99
+ (0, vitest_1.expect)(report.audio).toBeDefined();
100
+ (0, vitest_1.expect)(report.audio?.data).toBe('YXVkaW8=');
101
+ (0, vitest_1.expect)(report.audio?.mimeType).toBe('audio/webm');
102
+ (0, vitest_1.expect)(report.audio?.durationMs).toBe(0);
103
+ });
104
+ (0, vitest_1.it)('omits audio when not provided', () => {
105
+ const registry = new plugin_registry_js_1.PluginRegistry();
106
+ const adapter = makeAdapter();
107
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
108
+ const ctx = makeDeviceContext();
109
+ const input = makeInput();
110
+ const report = builder.build(input, ctx);
111
+ (0, vitest_1.expect)(report.audio).toBeUndefined();
112
+ });
113
+ (0, vitest_1.it)('throws ShakeNbakeError when title is empty', () => {
114
+ const registry = new plugin_registry_js_1.PluginRegistry();
115
+ const adapter = makeAdapter();
116
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
117
+ const ctx = makeDeviceContext();
118
+ const input = makeInput({ title: ' ' });
119
+ (0, vitest_1.expect)(() => builder.build(input, ctx)).toThrow(errors_js_1.ShakeNbakeError);
120
+ });
121
+ (0, vitest_1.it)('throws ShakeNbakeError when annotatedScreenshot is missing', () => {
122
+ const registry = new plugin_registry_js_1.PluginRegistry();
123
+ const adapter = makeAdapter();
124
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
125
+ const ctx = makeDeviceContext();
126
+ const input = makeInput({ annotatedScreenshot: '' });
127
+ (0, vitest_1.expect)(() => builder.build(input, ctx)).toThrow(errors_js_1.ShakeNbakeError);
128
+ });
129
+ (0, vitest_1.it)('includes all input fields in the report', () => {
130
+ const registry = new plugin_registry_js_1.PluginRegistry();
131
+ const adapter = makeAdapter();
132
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
133
+ const ctx = makeDeviceContext();
134
+ const input = makeInput({
135
+ title: 'Custom title',
136
+ description: 'Custom description',
137
+ severity: 'critical',
138
+ category: 'crash',
139
+ });
140
+ const report = builder.build(input, ctx);
141
+ (0, vitest_1.expect)(report.title).toBe('Custom title');
142
+ (0, vitest_1.expect)(report.description).toBe('Custom description');
143
+ (0, vitest_1.expect)(report.severity).toBe('critical');
144
+ (0, vitest_1.expect)(report.category).toBe('crash');
145
+ });
146
+ });
147
+ (0, vitest_1.describe)('startCapture()', () => {
148
+ (0, vitest_1.it)('delegates to the registered CapturePlugin', async () => {
149
+ const registry = new plugin_registry_js_1.PluginRegistry();
150
+ const capture = makeCapturePlugin();
151
+ registry.registerCapture(capture);
152
+ const adapter = makeAdapter();
153
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
154
+ const result = await builder.startCapture();
155
+ (0, vitest_1.expect)(result.imageData).toBe('base64screenshot');
156
+ (0, vitest_1.expect)(result.dimensions).toEqual({ width: 1920, height: 1080 });
157
+ (0, vitest_1.expect)(capture.capture).toHaveBeenCalled();
158
+ });
159
+ (0, vitest_1.it)('throws ShakeNbakeError when no CapturePlugin is registered', async () => {
160
+ const registry = new plugin_registry_js_1.PluginRegistry();
161
+ const adapter = makeAdapter();
162
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
163
+ await (0, vitest_1.expect)(builder.startCapture()).rejects.toThrow(errors_js_1.ShakeNbakeError);
164
+ });
165
+ (0, vitest_1.it)('throws ShakeNbakeError with UNKNOWN code when no capture plugin', async () => {
166
+ const registry = new plugin_registry_js_1.PluginRegistry();
167
+ const adapter = makeAdapter();
168
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
169
+ try {
170
+ await builder.startCapture();
171
+ vitest_1.expect.fail('Should have thrown');
172
+ }
173
+ catch (err) {
174
+ (0, vitest_1.expect)(err).toBeInstanceOf(errors_js_1.ShakeNbakeError);
175
+ (0, vitest_1.expect)(err.code).toBe('UNKNOWN');
176
+ }
177
+ });
178
+ });
179
+ (0, vitest_1.describe)('collectContext()', () => {
180
+ (0, vitest_1.it)('returns a full DeviceContext with empty defaults when no collectors', async () => {
181
+ const registry = new plugin_registry_js_1.PluginRegistry();
182
+ const adapter = makeAdapter();
183
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
184
+ const ctx = await builder.collectContext();
185
+ (0, vitest_1.expect)(ctx.platform.os).toBe('unknown');
186
+ (0, vitest_1.expect)(ctx.screen.width).toBe(0);
187
+ (0, vitest_1.expect)(ctx.screen.height).toBe(0);
188
+ });
189
+ (0, vitest_1.it)('merges context from multiple collectors', async () => {
190
+ const registry = new plugin_registry_js_1.PluginRegistry();
191
+ registry.registerCollector(makeCollector('platform', {
192
+ platform: { os: 'ios', osVersion: '17.0' },
193
+ }));
194
+ registry.registerCollector(makeCollector('network', {
195
+ network: { isConnected: true, type: 'wifi' },
196
+ }));
197
+ const adapter = makeAdapter();
198
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
199
+ const ctx = await builder.collectContext();
200
+ (0, vitest_1.expect)(ctx.platform.os).toBe('ios');
201
+ (0, vitest_1.expect)(ctx.platform.osVersion).toBe('17.0');
202
+ (0, vitest_1.expect)(ctx.network.isConnected).toBe(true);
203
+ (0, vitest_1.expect)(ctx.network.type).toBe('wifi');
204
+ // Non-collected sections should have defaults
205
+ (0, vitest_1.expect)(ctx.device).toEqual({});
206
+ (0, vitest_1.expect)(ctx.battery).toEqual({});
207
+ });
208
+ (0, vitest_1.it)('handles collector errors gracefully', async () => {
209
+ const registry = new plugin_registry_js_1.PluginRegistry();
210
+ registry.registerCollector(makeCollector('platform', { platform: { os: 'web' } }));
211
+ registry.registerCollector({
212
+ name: 'broken',
213
+ platform: 'universal',
214
+ collect: vitest_1.vi.fn().mockRejectedValue(new Error('boom')),
215
+ });
216
+ registry.registerCollector(makeCollector('network', { network: { isConnected: true } }));
217
+ const adapter = makeAdapter();
218
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
219
+ // Should not throw — broken collector is skipped
220
+ const ctx = await builder.collectContext();
221
+ (0, vitest_1.expect)(ctx.platform.os).toBe('web');
222
+ (0, vitest_1.expect)(ctx.network.isConnected).toBe(true);
223
+ });
224
+ });
225
+ (0, vitest_1.describe)('submit()', () => {
226
+ (0, vitest_1.it)('delegates to adapter.createIssue', async () => {
227
+ const registry = new plugin_registry_js_1.PluginRegistry();
228
+ const adapter = makeAdapter();
229
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
230
+ const report = {
231
+ id: 'test-id',
232
+ timestamp: new Date().toISOString(),
233
+ title: 'Test',
234
+ description: 'Desc',
235
+ severity: 'low',
236
+ category: 'bug',
237
+ screenshot: {
238
+ annotated: 'YW5ub3RhdGVk',
239
+ original: 'b3JpZ2luYWw=',
240
+ dimensions: { width: 800, height: 600 },
241
+ },
242
+ context: makeDeviceContext(),
243
+ };
244
+ const result = await builder.submit(report);
245
+ (0, vitest_1.expect)(adapter.createIssue).toHaveBeenCalledWith(report);
246
+ (0, vitest_1.expect)(result.success).toBe(true);
247
+ (0, vitest_1.expect)(result.url).toBe('https://linear.app/1');
248
+ });
249
+ (0, vitest_1.it)('does not call uploadImage separately (adapter handles uploads internally)', async () => {
250
+ const registry = new plugin_registry_js_1.PluginRegistry();
251
+ const adapter = makeAdapter();
252
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
253
+ const report = {
254
+ id: 'no-upload-test',
255
+ timestamp: new Date().toISOString(),
256
+ title: 'Test',
257
+ description: 'Desc',
258
+ severity: 'low',
259
+ category: 'bug',
260
+ screenshot: {
261
+ annotated: 'YW5ub3RhdGVk',
262
+ original: 'b3JpZ2luYWw=',
263
+ dimensions: { width: 800, height: 600 },
264
+ },
265
+ context: makeDeviceContext(),
266
+ };
267
+ await builder.submit(report);
268
+ // uploadImage should NOT be called by submit — the adapter's
269
+ // createIssue handles uploads internally
270
+ (0, vitest_1.expect)(adapter.uploadImage).not.toHaveBeenCalled();
271
+ });
272
+ (0, vitest_1.it)('wraps non-ShakeNbakeError adapter errors as ShakeNbakeError', async () => {
273
+ const registry = new plugin_registry_js_1.PluginRegistry();
274
+ const adapter = makeAdapter({
275
+ createIssue: vitest_1.vi.fn().mockRejectedValue(new Error('network timeout')),
276
+ });
277
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
278
+ const report = {
279
+ id: 'error-test',
280
+ timestamp: new Date().toISOString(),
281
+ title: 'Test',
282
+ description: 'Desc',
283
+ severity: 'low',
284
+ category: 'bug',
285
+ screenshot: {
286
+ annotated: 'YW5ub3RhdGVk',
287
+ original: 'b3JpZ2luYWw=',
288
+ dimensions: { width: 800, height: 600 },
289
+ },
290
+ context: makeDeviceContext(),
291
+ };
292
+ try {
293
+ await builder.submit(report);
294
+ vitest_1.expect.fail('Should have thrown');
295
+ }
296
+ catch (err) {
297
+ (0, vitest_1.expect)(err).toBeInstanceOf(errors_js_1.ShakeNbakeError);
298
+ const snbErr = err;
299
+ (0, vitest_1.expect)(snbErr.code).toBe('UPLOAD_FAILED');
300
+ (0, vitest_1.expect)(snbErr.message).toBe('network timeout');
301
+ (0, vitest_1.expect)(snbErr.originalError).toBeInstanceOf(Error);
302
+ }
303
+ });
304
+ (0, vitest_1.it)('re-throws ShakeNbakeError without wrapping', async () => {
305
+ const original = new errors_js_1.ShakeNbakeError('auth bad', 'AUTH_FAILED');
306
+ const registry = new plugin_registry_js_1.PluginRegistry();
307
+ const adapter = makeAdapter({
308
+ createIssue: vitest_1.vi.fn().mockRejectedValue(original),
309
+ });
310
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
311
+ const report = {
312
+ id: 'snb-error-test',
313
+ timestamp: new Date().toISOString(),
314
+ title: 'Test',
315
+ description: 'Desc',
316
+ severity: 'low',
317
+ category: 'bug',
318
+ screenshot: {
319
+ annotated: 'YW5ub3RhdGVk',
320
+ original: 'b3JpZ2luYWw=',
321
+ dimensions: { width: 800, height: 600 },
322
+ },
323
+ context: makeDeviceContext(),
324
+ };
325
+ try {
326
+ await builder.submit(report);
327
+ vitest_1.expect.fail('Should have thrown');
328
+ }
329
+ catch (err) {
330
+ (0, vitest_1.expect)(err).toBe(original);
331
+ (0, vitest_1.expect)(err.code).toBe('AUTH_FAILED');
332
+ }
333
+ });
334
+ (0, vitest_1.it)('wraps createIssue errors as ShakeNbakeError', async () => {
335
+ const registry = new plugin_registry_js_1.PluginRegistry();
336
+ const adapter = makeAdapter({
337
+ createIssue: vitest_1.vi.fn().mockRejectedValue(new Error('issue creation failed')),
338
+ });
339
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
340
+ const report = {
341
+ id: 'create-error-test',
342
+ timestamp: new Date().toISOString(),
343
+ title: 'Test',
344
+ description: 'Desc',
345
+ severity: 'low',
346
+ category: 'bug',
347
+ screenshot: {
348
+ annotated: 'YW5ub3RhdGVk',
349
+ original: 'b3JpZ2luYWw=',
350
+ dimensions: { width: 800, height: 600 },
351
+ },
352
+ context: makeDeviceContext(),
353
+ };
354
+ try {
355
+ await builder.submit(report);
356
+ vitest_1.expect.fail('Should have thrown');
357
+ }
358
+ catch (err) {
359
+ (0, vitest_1.expect)(err).toBeInstanceOf(errors_js_1.ShakeNbakeError);
360
+ (0, vitest_1.expect)(err.code).toBe('UPLOAD_FAILED');
361
+ (0, vitest_1.expect)(err.message).toBe('issue creation failed');
362
+ }
363
+ });
364
+ (0, vitest_1.it)('handles non-Error thrown values in submit', async () => {
365
+ const registry = new plugin_registry_js_1.PluginRegistry();
366
+ const adapter = makeAdapter({
367
+ createIssue: vitest_1.vi.fn().mockRejectedValue('string error'),
368
+ });
369
+ const builder = new report_builder_js_1.ReportBuilder(registry, adapter);
370
+ const report = {
371
+ id: 'non-error-test',
372
+ timestamp: new Date().toISOString(),
373
+ title: 'Test',
374
+ description: 'Desc',
375
+ severity: 'low',
376
+ category: 'bug',
377
+ screenshot: {
378
+ annotated: 'YW5ub3RhdGVk',
379
+ original: 'b3JpZ2luYWw=',
380
+ dimensions: { width: 800, height: 600 },
381
+ },
382
+ context: makeDeviceContext(),
383
+ };
384
+ try {
385
+ await builder.submit(report);
386
+ vitest_1.expect.fail('Should have thrown');
387
+ }
388
+ catch (err) {
389
+ (0, vitest_1.expect)(err).toBeInstanceOf(errors_js_1.ShakeNbakeError);
390
+ (0, vitest_1.expect)(err.message).toBe('Failed to submit report');
391
+ (0, vitest_1.expect)(err.originalError).toBe('string error');
392
+ }
393
+ });
394
+ });
395
+ });
396
+ //# sourceMappingURL=report-builder.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-builder.test.js","sourceRoot":"","sources":["../../src/__tests__/report-builder.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export type ErrorCode = 'AUTH_FAILED' | 'RATE_LIMITED' | 'UPLOAD_FAILED' | 'NETWORK_ERROR' | 'UNKNOWN';
2
+ /**
3
+ * Mapping from error code to a user-facing message.
4
+ */
5
+ export declare const ERROR_MESSAGES: Record<ErrorCode, string>;
6
+ export interface ShakeNbakeErrorOptions {
7
+ retryable?: boolean;
8
+ originalError?: unknown;
9
+ }
10
+ /**
11
+ * Typed error thrown by all ShakeNbake adapters and internal code.
12
+ */
13
+ export declare class ShakeNbakeError extends Error {
14
+ readonly code: ErrorCode;
15
+ readonly retryable: boolean;
16
+ readonly originalError?: unknown;
17
+ constructor(message: string, code: ErrorCode, options?: ShakeNbakeErrorOptions);
18
+ /** Returns true for error codes that are safe to auto-retry. */
19
+ static isRetryable(code: ErrorCode): boolean;
20
+ /** Returns the default user-facing message for a given error code. */
21
+ static messageForCode(code: ErrorCode): string;
22
+ }
23
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GACjB,aAAa,GACb,cAAc,GACd,eAAe,GACf,eAAe,GACf,SAAS,CAAC;AAEd;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAWpD,CAAC;AAQF,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;gBAG/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,EACf,OAAO,CAAC,EAAE,sBAAsB;IAalC,gEAAgE;IAChE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAI5C,sEAAsE;IACtE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;CAG/C"}
package/dist/errors.js ADDED
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ // ---------------------------------------------------------------------------
3
+ // @shakenbake/core — Error types and ShakeNbakeError class
4
+ // ---------------------------------------------------------------------------
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ShakeNbakeError = exports.ERROR_MESSAGES = void 0;
7
+ /**
8
+ * Mapping from error code to a user-facing message.
9
+ */
10
+ exports.ERROR_MESSAGES = {
11
+ AUTH_FAILED: 'Unable to submit report. Check your API key configuration.',
12
+ RATE_LIMITED: 'Too many reports submitted. Please try again in a moment.',
13
+ UPLOAD_FAILED: 'Screenshot upload failed. The image will be embedded in the issue description as a fallback.',
14
+ NETWORK_ERROR: "You're offline. Report saved locally -- it will be submitted when you reconnect.",
15
+ UNKNOWN: 'An unexpected error occurred while submitting the report.',
16
+ };
17
+ /** Codes that are safe to auto-retry. */
18
+ const RETRYABLE_CODES = new Set([
19
+ 'NETWORK_ERROR',
20
+ 'RATE_LIMITED',
21
+ ]);
22
+ /**
23
+ * Typed error thrown by all ShakeNbake adapters and internal code.
24
+ */
25
+ class ShakeNbakeError extends Error {
26
+ code;
27
+ retryable;
28
+ originalError;
29
+ constructor(message, code, options) {
30
+ super(message);
31
+ this.name = 'ShakeNbakeError';
32
+ this.code = code;
33
+ this.retryable =
34
+ options?.retryable ?? ShakeNbakeError.isRetryable(code);
35
+ this.originalError = options?.originalError;
36
+ // Maintain proper prototype chain for instanceof checks
37
+ Object.setPrototypeOf(this, ShakeNbakeError.prototype);
38
+ }
39
+ /** Returns true for error codes that are safe to auto-retry. */
40
+ static isRetryable(code) {
41
+ return RETRYABLE_CODES.has(code);
42
+ }
43
+ /** Returns the default user-facing message for a given error code. */
44
+ static messageForCode(code) {
45
+ return exports.ERROR_MESSAGES[code];
46
+ }
47
+ }
48
+ exports.ShakeNbakeError = ShakeNbakeError;
49
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,2DAA2D;AAC3D,8EAA8E;;;AAS9E;;GAEG;AACU,QAAA,cAAc,GAA8B;IACvD,WAAW,EACT,4DAA4D;IAC9D,YAAY,EACV,2DAA2D;IAC7D,aAAa,EACX,8FAA8F;IAChG,aAAa,EACX,kFAAkF;IACpF,OAAO,EACL,2DAA2D;CAC9D,CAAC;AAEF,yCAAyC;AACzC,MAAM,eAAe,GAA2B,IAAI,GAAG,CAAY;IACjE,eAAe;IACf,cAAc;CACf,CAAC,CAAC;AAOH;;GAEG;AACH,MAAa,eAAgB,SAAQ,KAAK;IAC/B,IAAI,CAAY;IAChB,SAAS,CAAU;IACnB,aAAa,CAAW;IAEjC,YACE,OAAe,EACf,IAAe,EACf,OAAgC;QAEhC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS;YACZ,OAAO,EAAE,SAAS,IAAI,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,aAAa,GAAG,OAAO,EAAE,aAAa,CAAC;QAE5C,wDAAwD;QACxD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,gEAAgE;IAChE,MAAM,CAAC,WAAW,CAAC,IAAe;QAChC,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,sEAAsE;IACtE,MAAM,CAAC,cAAc,CAAC,IAAe;QACnC,OAAO,sBAAc,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF;AA9BD,0CA8BC"}
@@ -0,0 +1,9 @@
1
+ export type { Severity, Category, Platform, PlatformContext, DeviceInfo, ScreenInfo, NetworkInfo, BatteryInfo, LocaleInfo, AppInfo, AccessibilityInfo, PerformanceInfo, NavigationInfo, ConsoleInfo, DeviceContext, CaptureResult, AudioData, BugReport, ReportInput, SubmitResult, TriggerPlugin, CapturePlugin, ContextCollector, DestinationAdapter, ShakeNbakeConfig, } from './types.js';
2
+ export { ShakeNbakeError, ERROR_MESSAGES, } from './errors.js';
3
+ export type { ErrorCode, ShakeNbakeErrorOptions, } from './errors.js';
4
+ export { PluginRegistry } from './plugin-registry.js';
5
+ export { ReportBuilder } from './report-builder.js';
6
+ export { MockAdapter } from './mock-adapter.js';
7
+ export type { MockAdapterConfig } from './mock-adapter.js';
8
+ export { redactContext } from './redact.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,OAAO,EACP,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,WAAW,EACX,aAAa,EACb,aAAa,EACb,SAAS,EACT,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,eAAe,EACf,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,SAAS,EACT,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ // ---------------------------------------------------------------------------
3
+ // @shakenbake/core — Public API
4
+ // ---------------------------------------------------------------------------
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.redactContext = exports.MockAdapter = exports.ReportBuilder = exports.PluginRegistry = exports.ERROR_MESSAGES = exports.ShakeNbakeError = void 0;
7
+ // Errors
8
+ var errors_js_1 = require("./errors.js");
9
+ Object.defineProperty(exports, "ShakeNbakeError", { enumerable: true, get: function () { return errors_js_1.ShakeNbakeError; } });
10
+ Object.defineProperty(exports, "ERROR_MESSAGES", { enumerable: true, get: function () { return errors_js_1.ERROR_MESSAGES; } });
11
+ // Plugin Registry
12
+ var plugin_registry_js_1 = require("./plugin-registry.js");
13
+ Object.defineProperty(exports, "PluginRegistry", { enumerable: true, get: function () { return plugin_registry_js_1.PluginRegistry; } });
14
+ // Report Builder
15
+ var report_builder_js_1 = require("./report-builder.js");
16
+ Object.defineProperty(exports, "ReportBuilder", { enumerable: true, get: function () { return report_builder_js_1.ReportBuilder; } });
17
+ // Mock Adapter (testing / development)
18
+ var mock_adapter_js_1 = require("./mock-adapter.js");
19
+ Object.defineProperty(exports, "MockAdapter", { enumerable: true, get: function () { return mock_adapter_js_1.MockAdapter; } });
20
+ // Privacy / Redaction
21
+ var redact_js_1 = require("./redact.js");
22
+ Object.defineProperty(exports, "redactContext", { enumerable: true, get: function () { return redact_js_1.redactContext; } });
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;;;AA+B9E,SAAS;AACT,yCAGqB;AAFnB,4GAAA,eAAe,OAAA;AACf,2GAAA,cAAc,OAAA;AAOhB,kBAAkB;AAClB,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AAEvB,iBAAiB;AACjB,yDAAoD;AAA3C,kHAAA,aAAa,OAAA;AAEtB,uCAAuC;AACvC,qDAAgD;AAAvC,8GAAA,WAAW,OAAA;AAGpB,sBAAsB;AACtB,yCAA4C;AAAnC,0GAAA,aAAa,OAAA"}
@@ -0,0 +1,46 @@
1
+ import type { BugReport, DestinationAdapter, SubmitResult } from './types.js';
2
+ /**
3
+ * Configuration options for the MockAdapter.
4
+ */
5
+ export interface MockAdapterConfig {
6
+ /** Simulated network latency in milliseconds (default: 0). */
7
+ delay?: number;
8
+ }
9
+ /**
10
+ * A no-op DestinationAdapter that stores submitted reports in memory.
11
+ *
12
+ * Useful for:
13
+ * - Unit and integration tests (assert on submitted reports)
14
+ * - Local development without a real Linear API key
15
+ * - Demo / example apps
16
+ */
17
+ export declare class MockAdapter implements DestinationAdapter {
18
+ readonly name = "mock";
19
+ private readonly config;
20
+ private submittedReports;
21
+ constructor(config?: MockAdapterConfig);
22
+ /**
23
+ * Simulates uploading an image. Logs the filename and size, then returns
24
+ * a fake URL on mock.shakenbake.dev.
25
+ */
26
+ uploadImage(imageData: Buffer | Blob, filename: string): Promise<string>;
27
+ /**
28
+ * Simulates creating an issue. Stores the report in memory and logs a
29
+ * summary to the console.
30
+ */
31
+ createIssue(report: BugReport): Promise<SubmitResult>;
32
+ /**
33
+ * Always resolves to `true` -- the mock connection is always healthy.
34
+ */
35
+ testConnection(): Promise<boolean>;
36
+ /**
37
+ * Returns a shallow copy of all reports submitted via `createIssue`.
38
+ */
39
+ getSubmittedReports(): BugReport[];
40
+ /**
41
+ * Clears the internal list of submitted reports.
42
+ */
43
+ clearReports(): void;
44
+ private simulateDelay;
45
+ }
46
+ //# sourceMappingURL=mock-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-adapter.d.ts","sourceRoot":"","sources":["../src/mock-adapter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,qBAAa,WAAY,YAAW,kBAAkB;IACpD,QAAQ,CAAC,IAAI,UAAU;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,gBAAgB,CAAmB;gBAE/B,MAAM,CAAC,EAAE,iBAAiB;IAItC;;;OAGG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IAclB;;;OAGG;IACG,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC;IAiB3D;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAOxC;;OAEG;IACH,mBAAmB,IAAI,SAAS,EAAE;IAIlC;;OAEG;IACH,YAAY,IAAI,IAAI;YAMN,aAAa;CAM5B"}