safari-devtools-mcp 1.6.0 → 1.7.0
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/build/src/index.d.ts.map +1 -1
- package/build/src/index.js +2 -1
- package/build/src/index.js.map +1 -1
- package/build/src/tools/emulation.d.ts +1 -0
- package/build/src/tools/emulation.d.ts.map +1 -1
- package/build/src/tools/emulation.js +239 -0
- package/build/src/tools/emulation.js.map +1 -1
- package/build/src/version.d.ts +1 -1
- package/build/src/version.js +1 -1
- package/package.json +1 -1
package/build/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAqC/C,MAAM,WAAW,aAAa;IAC5B,gDAAgD;IAChD,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,aAAkB,GAAG;IAClE,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;CACtB,CA2CA"}
|
package/build/src/index.js
CHANGED
|
@@ -21,7 +21,7 @@ import { tools as cssTools } from './tools/css.js';
|
|
|
21
21
|
import { tools as cookieTools } from './tools/cookies.js';
|
|
22
22
|
import { tools as storageTools } from './tools/storage.js';
|
|
23
23
|
import { tools as inputTools } from './tools/input.js';
|
|
24
|
-
import { tools as emulationTools } from './tools/emulation.js';
|
|
24
|
+
import { tools as emulationTools, deviceTools } from './tools/emulation.js';
|
|
25
25
|
const allTools = [
|
|
26
26
|
...consoleTools,
|
|
27
27
|
...networkTools,
|
|
@@ -36,6 +36,7 @@ const allTools = [
|
|
|
36
36
|
...storageTools,
|
|
37
37
|
...inputTools,
|
|
38
38
|
...emulationTools,
|
|
39
|
+
...deviceTools,
|
|
39
40
|
];
|
|
40
41
|
export function createSafariMcpServer(options = {}) {
|
|
41
42
|
const { slim = false } = options;
|
package/build/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAGrC,8CAA8C;AAC9C,OAAO,EAAC,KAAK,IAAI,YAAY,EAAC,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAC,KAAK,IAAI,YAAY,EAAC,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAC,KAAK,IAAI,WAAW,EAAC,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAC,KAAK,IAAI,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAC,KAAK,IAAI,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAC,KAAK,IAAI,UAAU,EAAC,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAC,KAAK,IAAI,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAC,KAAK,IAAI,WAAW,EAAC,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAC,KAAK,IAAI,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAC,KAAK,IAAI,WAAW,EAAC,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAC,KAAK,IAAI,YAAY,EAAC,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAC,KAAK,IAAI,UAAU,EAAC,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAC,KAAK,IAAI,cAAc,EAAC,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emulation.d.ts","sourceRoot":"","sources":["../../../src/tools/emulation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAStB,eAAO,MAAM,KAAK,+CA2LjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"emulation.d.ts","sourceRoot":"","sources":["../../../src/tools/emulation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAStB,eAAO,MAAM,KAAK,+CA2LjB,CAAC;AAiFF,eAAO,MAAM,WAAW,+CAoMvB,CAAC"}
|
|
@@ -193,4 +193,243 @@ export const tools = [
|
|
|
193
193
|
},
|
|
194
194
|
}),
|
|
195
195
|
];
|
|
196
|
+
const SAFARI_VERSION = '605.1.15';
|
|
197
|
+
const WEBKIT_VERSION = '605.1.15';
|
|
198
|
+
const OS_VERSION_IOS = '18_0';
|
|
199
|
+
const OS_VERSION_IPAD = '18_0';
|
|
200
|
+
const DEVICE_PRESETS = {
|
|
201
|
+
'iPhone SE': {
|
|
202
|
+
width: 375,
|
|
203
|
+
height: 667,
|
|
204
|
+
devicePixelRatio: 2,
|
|
205
|
+
userAgent: `Mozilla/5.0 (iPhone; CPU iPhone OS ${OS_VERSION_IOS} like Mac OS X) AppleWebKit/${WEBKIT_VERSION} (KHTML, like Gecko) Version/18.0 Mobile/${SAFARI_VERSION} Safari/${SAFARI_VERSION}`,
|
|
206
|
+
mobile: true,
|
|
207
|
+
},
|
|
208
|
+
'iPhone 14': {
|
|
209
|
+
width: 390,
|
|
210
|
+
height: 844,
|
|
211
|
+
devicePixelRatio: 3,
|
|
212
|
+
userAgent: `Mozilla/5.0 (iPhone; CPU iPhone OS ${OS_VERSION_IOS} like Mac OS X) AppleWebKit/${WEBKIT_VERSION} (KHTML, like Gecko) Version/18.0 Mobile/${SAFARI_VERSION} Safari/${SAFARI_VERSION}`,
|
|
213
|
+
mobile: true,
|
|
214
|
+
},
|
|
215
|
+
'iPhone 15 Pro': {
|
|
216
|
+
width: 393,
|
|
217
|
+
height: 852,
|
|
218
|
+
devicePixelRatio: 3,
|
|
219
|
+
userAgent: `Mozilla/5.0 (iPhone; CPU iPhone OS ${OS_VERSION_IOS} like Mac OS X) AppleWebKit/${WEBKIT_VERSION} (KHTML, like Gecko) Version/18.0 Mobile/${SAFARI_VERSION} Safari/${SAFARI_VERSION}`,
|
|
220
|
+
mobile: true,
|
|
221
|
+
},
|
|
222
|
+
'iPhone 16 Pro Max': {
|
|
223
|
+
width: 440,
|
|
224
|
+
height: 956,
|
|
225
|
+
devicePixelRatio: 3,
|
|
226
|
+
userAgent: `Mozilla/5.0 (iPhone; CPU iPhone OS ${OS_VERSION_IOS} like Mac OS X) AppleWebKit/${WEBKIT_VERSION} (KHTML, like Gecko) Version/18.0 Mobile/${SAFARI_VERSION} Safari/${SAFARI_VERSION}`,
|
|
227
|
+
mobile: true,
|
|
228
|
+
},
|
|
229
|
+
'iPad Mini': {
|
|
230
|
+
width: 744,
|
|
231
|
+
height: 1133,
|
|
232
|
+
devicePixelRatio: 2,
|
|
233
|
+
userAgent: `Mozilla/5.0 (iPad; CPU OS ${OS_VERSION_IPAD} like Mac OS X) AppleWebKit/${WEBKIT_VERSION} (KHTML, like Gecko) Version/18.0 Mobile/${SAFARI_VERSION} Safari/${SAFARI_VERSION}`,
|
|
234
|
+
mobile: true,
|
|
235
|
+
},
|
|
236
|
+
'iPad Air': {
|
|
237
|
+
width: 820,
|
|
238
|
+
height: 1180,
|
|
239
|
+
devicePixelRatio: 2,
|
|
240
|
+
userAgent: `Mozilla/5.0 (iPad; CPU OS ${OS_VERSION_IPAD} like Mac OS X) AppleWebKit/${WEBKIT_VERSION} (KHTML, like Gecko) Version/18.0 Mobile/${SAFARI_VERSION} Safari/${SAFARI_VERSION}`,
|
|
241
|
+
mobile: true,
|
|
242
|
+
},
|
|
243
|
+
'iPad Pro 11': {
|
|
244
|
+
width: 834,
|
|
245
|
+
height: 1194,
|
|
246
|
+
devicePixelRatio: 2,
|
|
247
|
+
userAgent: `Mozilla/5.0 (iPad; CPU OS ${OS_VERSION_IPAD} like Mac OS X) AppleWebKit/${WEBKIT_VERSION} (KHTML, like Gecko) Version/18.0 Mobile/${SAFARI_VERSION} Safari/${SAFARI_VERSION}`,
|
|
248
|
+
mobile: true,
|
|
249
|
+
},
|
|
250
|
+
'iPad Pro 13': {
|
|
251
|
+
width: 1024,
|
|
252
|
+
height: 1366,
|
|
253
|
+
devicePixelRatio: 2,
|
|
254
|
+
userAgent: `Mozilla/5.0 (iPad; CPU OS ${OS_VERSION_IPAD} like Mac OS X) AppleWebKit/${WEBKIT_VERSION} (KHTML, like Gecko) Version/18.0 Mobile/${SAFARI_VERSION} Safari/${SAFARI_VERSION}`,
|
|
255
|
+
mobile: true,
|
|
256
|
+
},
|
|
257
|
+
};
|
|
258
|
+
const PRESET_NAMES = Object.keys(DEVICE_PRESETS);
|
|
259
|
+
export const deviceTools = [
|
|
260
|
+
defineTool({
|
|
261
|
+
name: 'set_device_emulation',
|
|
262
|
+
description: 'Emulate an Apple device by resizing the viewport and overriding ' +
|
|
263
|
+
'device pixel ratio and touch support at the JS level. The user agent ' +
|
|
264
|
+
'is overridden via navigator.userAgent (JS-level only — HTTP request ' +
|
|
265
|
+
'headers are not affected). Choose a preset ' +
|
|
266
|
+
`(${PRESET_NAMES.join(', ')}) or provide custom values. ` +
|
|
267
|
+
'Use reset_device_emulation to restore defaults.',
|
|
268
|
+
slimDescription: 'Emulate iPhone/iPad viewport and UA.',
|
|
269
|
+
schema: {
|
|
270
|
+
device: z
|
|
271
|
+
.enum(PRESET_NAMES)
|
|
272
|
+
.optional()
|
|
273
|
+
.describe('Apple device preset name. Overrides width/height/dpr/userAgent if provided.'),
|
|
274
|
+
width: z
|
|
275
|
+
.number()
|
|
276
|
+
.min(200)
|
|
277
|
+
.max(3840)
|
|
278
|
+
.optional()
|
|
279
|
+
.describe('Viewport width in CSS pixels.'),
|
|
280
|
+
height: z
|
|
281
|
+
.number()
|
|
282
|
+
.min(200)
|
|
283
|
+
.max(2160)
|
|
284
|
+
.optional()
|
|
285
|
+
.describe('Viewport height in CSS pixels.'),
|
|
286
|
+
devicePixelRatio: z
|
|
287
|
+
.number()
|
|
288
|
+
.min(1)
|
|
289
|
+
.max(4)
|
|
290
|
+
.optional()
|
|
291
|
+
.describe('Device pixel ratio (e.g. 2 for Retina).'),
|
|
292
|
+
userAgent: z
|
|
293
|
+
.string()
|
|
294
|
+
.optional()
|
|
295
|
+
.describe('Custom user agent string (JS-level override only; HTTP headers unchanged).'),
|
|
296
|
+
},
|
|
297
|
+
handler: async (params, driver) => {
|
|
298
|
+
const preset = params.device ? DEVICE_PRESETS[params.device] : undefined;
|
|
299
|
+
const width = params.width ?? preset?.width;
|
|
300
|
+
const height = params.height ?? preset?.height;
|
|
301
|
+
const dpr = params.devicePixelRatio ?? preset?.devicePixelRatio;
|
|
302
|
+
const ua = params.userAgent ?? preset?.userAgent;
|
|
303
|
+
const mobile = preset?.mobile ?? false;
|
|
304
|
+
if (!width || !height) {
|
|
305
|
+
return {
|
|
306
|
+
content: [
|
|
307
|
+
{
|
|
308
|
+
type: 'text',
|
|
309
|
+
text: 'Provide a device preset or both width and height.',
|
|
310
|
+
},
|
|
311
|
+
],
|
|
312
|
+
isError: true,
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
// Save original window size before resizing
|
|
316
|
+
const originalSize = await driver.runScript(`({w: window.outerWidth, h: window.outerHeight})`);
|
|
317
|
+
// Resize the browser window
|
|
318
|
+
await driver.resizePage(width, height);
|
|
319
|
+
// Inject JS overrides for DPR, UA, and touch
|
|
320
|
+
const overrides = [];
|
|
321
|
+
if (dpr)
|
|
322
|
+
overrides.push(`dpr: ${dpr}`);
|
|
323
|
+
if (ua)
|
|
324
|
+
overrides.push(`ua: ${JSON.stringify(ua)}`);
|
|
325
|
+
overrides.push(`mobile: ${mobile}`);
|
|
326
|
+
overrides.push(`origW: ${originalSize.w}`);
|
|
327
|
+
overrides.push(`origH: ${originalSize.h}`);
|
|
328
|
+
await driver.runScript(`((opts) => {
|
|
329
|
+
// Save originals for reset (only on first call)
|
|
330
|
+
if (!window.__safariMcpDeviceOriginals) {
|
|
331
|
+
window.__safariMcpDeviceOriginals = {
|
|
332
|
+
windowWidth: opts.origW,
|
|
333
|
+
windowHeight: opts.origH,
|
|
334
|
+
hadOntouchstart: 'ontouchstart' in window,
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
if (opts.dpr) {
|
|
339
|
+
Object.defineProperty(window, 'devicePixelRatio', {
|
|
340
|
+
get: () => opts.dpr, configurable: true
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
if (opts.ua) {
|
|
345
|
+
Object.defineProperty(navigator, 'userAgent', {
|
|
346
|
+
get: () => opts.ua, configurable: true
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
if (opts.mobile) {
|
|
351
|
+
Object.defineProperty(navigator, 'maxTouchPoints', {
|
|
352
|
+
get: () => 5, configurable: true
|
|
353
|
+
});
|
|
354
|
+
if (!window.__safariMcpDeviceOriginals.hadOntouchstart) {
|
|
355
|
+
window.ontouchstart = null;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
})({${overrides.join(', ')}})`);
|
|
359
|
+
const label = params.device ?? `${width}×${height}`;
|
|
360
|
+
const details = [
|
|
361
|
+
`viewport: ${width}×${height}`,
|
|
362
|
+
dpr ? `dpr: ${dpr}` : null,
|
|
363
|
+
ua ? 'user agent: overridden (JS-level)' : null,
|
|
364
|
+
mobile ? 'touch: enabled' : null,
|
|
365
|
+
]
|
|
366
|
+
.filter(Boolean)
|
|
367
|
+
.join(', ');
|
|
368
|
+
return {
|
|
369
|
+
content: [
|
|
370
|
+
{
|
|
371
|
+
type: 'text',
|
|
372
|
+
text: `Device emulation set to ${label} (${details}).`,
|
|
373
|
+
},
|
|
374
|
+
],
|
|
375
|
+
};
|
|
376
|
+
},
|
|
377
|
+
}),
|
|
378
|
+
defineTool({
|
|
379
|
+
name: 'reset_device_emulation',
|
|
380
|
+
description: 'Remove all device emulation overrides and restore the original ' +
|
|
381
|
+
'viewport size, JS-level user agent, device pixel ratio, and touch settings.',
|
|
382
|
+
slimDescription: 'Reset device emulation.',
|
|
383
|
+
schema: {},
|
|
384
|
+
handler: async (_params, driver) => {
|
|
385
|
+
const result = await driver.runScript(`(() => {
|
|
386
|
+
const orig = window.__safariMcpDeviceOriginals;
|
|
387
|
+
if (!orig) return { restored: false, windowWidth: 0, windowHeight: 0 };
|
|
388
|
+
|
|
389
|
+
// Delete own property overrides to expose prototype originals
|
|
390
|
+
const dprDesc = Object.getOwnPropertyDescriptor(window, 'devicePixelRatio');
|
|
391
|
+
if (dprDesc && dprDesc.configurable) delete window.devicePixelRatio;
|
|
392
|
+
|
|
393
|
+
const uaDesc = Object.getOwnPropertyDescriptor(navigator, 'userAgent');
|
|
394
|
+
if (uaDesc && uaDesc.configurable) delete navigator.userAgent;
|
|
395
|
+
|
|
396
|
+
const touchDesc = Object.getOwnPropertyDescriptor(navigator, 'maxTouchPoints');
|
|
397
|
+
if (touchDesc && touchDesc.configurable) delete navigator.maxTouchPoints;
|
|
398
|
+
|
|
399
|
+
// Only remove ontouchstart if we added it
|
|
400
|
+
if (!orig.hadOntouchstart && 'ontouchstart' in window) {
|
|
401
|
+
delete window.ontouchstart;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
const ww = orig.windowWidth;
|
|
405
|
+
const wh = orig.windowHeight;
|
|
406
|
+
delete window.__safariMcpDeviceOriginals;
|
|
407
|
+
|
|
408
|
+
return { restored: true, windowWidth: ww, windowHeight: wh };
|
|
409
|
+
})()`);
|
|
410
|
+
if (!result.restored) {
|
|
411
|
+
return {
|
|
412
|
+
content: [
|
|
413
|
+
{
|
|
414
|
+
type: 'text',
|
|
415
|
+
text: 'No device emulation was active.',
|
|
416
|
+
},
|
|
417
|
+
],
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
// Restore original window size
|
|
421
|
+
if (result.windowWidth && result.windowHeight) {
|
|
422
|
+
await driver.resizePage(result.windowWidth, result.windowHeight);
|
|
423
|
+
}
|
|
424
|
+
return {
|
|
425
|
+
content: [
|
|
426
|
+
{
|
|
427
|
+
type: 'text',
|
|
428
|
+
text: 'Device emulation reset. Viewport, DPR, UA, and touch settings restored.',
|
|
429
|
+
},
|
|
430
|
+
],
|
|
431
|
+
};
|
|
432
|
+
},
|
|
433
|
+
}),
|
|
434
|
+
];
|
|
196
435
|
//# sourceMappingURL=emulation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emulation.js","sourceRoot":"","sources":["../../../src/tools/emulation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,UAAU,EAAC,MAAM,YAAY,CAAC;AAEtC,MAAM,iBAAiB,GAAG,CAAC;KACxB,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,QAAQ,CACP,iHAAiH,CAClH,CAAC;AAEJ,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,UAAU,CAAC;QACT,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,sEAAsE;YACtE,6DAA6D;YAC7D,gEAAgE;YAChE,kEAAkE;YAClE,qBAAqB;QACvB,eAAe,EAAE,0BAA0B;QAC3C,MAAM,EAAE;YACN,WAAW,EAAE,iBAAiB;SAC/B;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAChC,MAAM,EAAC,WAAW,EAAC,GAAG,MAAM,CAAC;YAE7B,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;gBAC5B,MAAM,MAAM,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA6BlB,CAAC,CAAC;gBAEP,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,yDAAyD;yBAChE;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAmFjB,WAAW,IAAI,CAAC,CAAC;YAEvB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,wBAAwB,WAAW,4EAA4E,WAAW,QAAQ;qBACzI;iBACF;aACF,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,UAAU,CAAC;QACT,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,qEAAqE;YACrE,6DAA6D;QAC/D,eAAe,EAAE,sCAAsC;QACvD,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAGlC;;;;;;;WAOE,CAAC,CAAC;YAEP,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc;gBAClC,CAAC,CAAC,wBAAwB;gBAC1B,CAAC,CAAC,mBAAmB,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,yBAAyB,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE;qBACxD;iBACF;aACF,CAAC;QACJ,CAAC;KACF,CAAC;CACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"emulation.js","sourceRoot":"","sources":["../../../src/tools/emulation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,UAAU,EAAC,MAAM,YAAY,CAAC;AAEtC,MAAM,iBAAiB,GAAG,CAAC;KACxB,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,QAAQ,CACP,iHAAiH,CAClH,CAAC;AAEJ,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,UAAU,CAAC;QACT,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,sEAAsE;YACtE,6DAA6D;YAC7D,gEAAgE;YAChE,kEAAkE;YAClE,qBAAqB;QACvB,eAAe,EAAE,0BAA0B;QAC3C,MAAM,EAAE;YACN,WAAW,EAAE,iBAAiB;SAC/B;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAChC,MAAM,EAAC,WAAW,EAAC,GAAG,MAAM,CAAC;YAE7B,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;gBAC5B,MAAM,MAAM,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA6BlB,CAAC,CAAC;gBAEP,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,yDAAyD;yBAChE;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAmFjB,WAAW,IAAI,CAAC,CAAC;YAEvB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,wBAAwB,WAAW,4EAA4E,WAAW,QAAQ;qBACzI;iBACF;aACF,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,UAAU,CAAC;QACT,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,qEAAqE;YACrE,6DAA6D;QAC/D,eAAe,EAAE,sCAAsC;QACvD,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAGlC;;;;;;;WAOE,CAAC,CAAC;YAEP,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc;gBAClC,CAAC,CAAC,wBAAwB;gBAC1B,CAAC,CAAC,mBAAmB,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,yBAAyB,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE;qBACxD;iBACF;aACF,CAAC;QACJ,CAAC;KACF,CAAC;CACH,CAAC;AAYF,MAAM,cAAc,GAAG,UAAU,CAAC;AAClC,MAAM,cAAc,GAAG,UAAU,CAAC;AAClC,MAAM,cAAc,GAAG,MAAM,CAAC;AAC9B,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B,MAAM,cAAc,GAAiC;IACnD,WAAW,EAAE;QACX,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,GAAG;QACX,gBAAgB,EAAE,CAAC;QACnB,SAAS,EAAE,sCAAsC,cAAc,+BAA+B,cAAc,4CAA4C,cAAc,WAAW,cAAc,EAAE;QACjM,MAAM,EAAE,IAAI;KACb;IACD,WAAW,EAAE;QACX,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,GAAG;QACX,gBAAgB,EAAE,CAAC;QACnB,SAAS,EAAE,sCAAsC,cAAc,+BAA+B,cAAc,4CAA4C,cAAc,WAAW,cAAc,EAAE;QACjM,MAAM,EAAE,IAAI;KACb;IACD,eAAe,EAAE;QACf,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,GAAG;QACX,gBAAgB,EAAE,CAAC;QACnB,SAAS,EAAE,sCAAsC,cAAc,+BAA+B,cAAc,4CAA4C,cAAc,WAAW,cAAc,EAAE;QACjM,MAAM,EAAE,IAAI;KACb;IACD,mBAAmB,EAAE;QACnB,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,GAAG;QACX,gBAAgB,EAAE,CAAC;QACnB,SAAS,EAAE,sCAAsC,cAAc,+BAA+B,cAAc,4CAA4C,cAAc,WAAW,cAAc,EAAE;QACjM,MAAM,EAAE,IAAI;KACb;IACD,WAAW,EAAE;QACX,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,IAAI;QACZ,gBAAgB,EAAE,CAAC;QACnB,SAAS,EAAE,6BAA6B,eAAe,+BAA+B,cAAc,4CAA4C,cAAc,WAAW,cAAc,EAAE;QACzL,MAAM,EAAE,IAAI;KACb;IACD,UAAU,EAAE;QACV,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,IAAI;QACZ,gBAAgB,EAAE,CAAC;QACnB,SAAS,EAAE,6BAA6B,eAAe,+BAA+B,cAAc,4CAA4C,cAAc,WAAW,cAAc,EAAE;QACzL,MAAM,EAAE,IAAI;KACb;IACD,aAAa,EAAE;QACb,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,IAAI;QACZ,gBAAgB,EAAE,CAAC;QACnB,SAAS,EAAE,6BAA6B,eAAe,+BAA+B,cAAc,4CAA4C,cAAc,WAAW,cAAc,EAAE;QACzL,MAAM,EAAE,IAAI;KACb;IACD,aAAa,EAAE;QACb,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,gBAAgB,EAAE,CAAC;QACnB,SAAS,EAAE,6BAA6B,eAAe,+BAA+B,cAAc,4CAA4C,cAAc,WAAW,cAAc,EAAE;QACzL,MAAM,EAAE,IAAI;KACb;CACF,CAAC;AAEF,MAAM,YAAY,GAA0B,MAAM,CAAC,IAAI,CAAC,cAAc,CAGrE,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,UAAU,CAAC;QACT,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACT,kEAAkE;YAClE,uEAAuE;YACvE,sEAAsE;YACtE,6CAA6C;YAC7C,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B;YACzD,iDAAiD;QACnD,eAAe,EAAE,sCAAsC;QACvD,MAAM,EAAE;YACN,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,YAAY,CAAC;iBAClB,QAAQ,EAAE;iBACV,QAAQ,CACP,6EAA6E,CAC9E;YACH,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,+BAA+B,CAAC;YAC5C,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,gCAAgC,CAAC;YAC7C,gBAAgB,EAAE,CAAC;iBAChB,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,yCAAyC,CAAC;YACtD,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,4EAA4E,CAC7E;SACJ;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAChC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACzE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,EAAE,KAAK,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE,MAAM,CAAC;YAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,IAAI,MAAM,EAAE,gBAAgB,CAAC;YAChE,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,EAAE,SAAS,CAAC;YACjD,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC;YAEvC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBACtB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,mDAAmD;yBAC1D;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,4CAA4C;YAC5C,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,SAAS,CACzC,iDAAiD,CAClD,CAAC;YAEF,4BAA4B;YAC5B,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAEvC,6CAA6C;YAC7C,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,IAAI,GAAG;gBAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;YACvC,IAAI,EAAE;gBAAE,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACpD,SAAS,CAAC,IAAI,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,UAAU,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3C,SAAS,CAAC,IAAI,CAAC,UAAU,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;YAE3C,MAAM,MAAM,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA8BjB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEhC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG;gBACd,aAAa,KAAK,IAAI,MAAM,EAAE;gBAC9B,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC1B,EAAE,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,IAAI;gBAC/C,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI;aACjC;iBACE,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,2BAA2B,KAAK,KAAK,OAAO,IAAI;qBACvD;iBACF;aACF,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,UAAU,CAAC;QACT,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,iEAAiE;YACjE,6EAA6E;QAC/E,eAAe,EAAE,yBAAyB;QAC1C,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAIlC;;;;;;;;;;;;;;;;;;;;;;;;WAwBE,CAAC,CAAC;YAEP,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACrB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,iCAAiC;yBACxC;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,+BAA+B;YAC/B,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC9C,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;YACnE,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,yEAAyE;qBAChF;iBACF;aACF,CAAC;QACJ,CAAC;KACF,CAAC;CACH,CAAC"}
|
package/build/src/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.
|
|
1
|
+
export declare const VERSION = "1.7.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/build/src/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "safari-devtools-mcp",
|
|
3
3
|
"mcpName": "io.github.HayoDev/safari-devtools-mcp",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.7.0",
|
|
5
5
|
"description": "Safari DevTools MCP — real browser debugging with network interception, DOM inspection, cookie/storage management, and CSS analysis for AI agents on macOS",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "build/src/index.js",
|