@majkapp/plugin-kit 1.3.5 → 1.3.7
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/plugin-kit.d.ts.map +1 -1
- package/dist/plugin-kit.js +59 -7
- package/package.json +4 -3
package/dist/plugin-kit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-kit.d.ts","sourceRoot":"","sources":["../src/plugin-kit.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EAGb,eAAe,EACf,QAAQ,EACR,WAAW,EACX,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,EACX,UAAU,EACV,eAAe,EACf,WAAW,EACX,KAAK,EACL,UAAU,EACV,SAAS,EACT,aAAa,EAIb,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,iBAAiB,EAGjB,sBAAsB,EACvB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-kit.d.ts","sourceRoot":"","sources":["../src/plugin-kit.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin-kit.js
CHANGED
|
@@ -398,17 +398,49 @@ function serveSpa(ui, req, res, ctx) {
|
|
|
398
398
|
`window.__MAJK_IFRAME_BASE__=${JSON.stringify(ui.base)};` +
|
|
399
399
|
`window.__MAJK_PLUGIN_ID__=${JSON.stringify(ctx.pluginId)};` +
|
|
400
400
|
`</script>`;
|
|
401
|
+
// Inject html2canvas library (inline from node_modules)
|
|
402
|
+
const html2canvasScript = BuiltPlugin.html2canvasScript
|
|
403
|
+
? `<script>${BuiltPlugin.html2canvasScript}</script>`
|
|
404
|
+
: '';
|
|
401
405
|
// Inject MCP DOM Agent script
|
|
402
406
|
const mcpScript = BuiltPlugin.mcpDomAgentScript
|
|
403
407
|
? `<script>${BuiltPlugin.mcpDomAgentScript}</script>`
|
|
404
408
|
: '';
|
|
405
|
-
const allInjections = configInject + mcpScript;
|
|
409
|
+
const allInjections = configInject + html2canvasScript + mcpScript;
|
|
406
410
|
const injected = html.replace('</head>', `${allInjections}</head>`);
|
|
407
411
|
content = Buffer.from(injected, 'utf-8');
|
|
408
412
|
}
|
|
409
413
|
res.writeHead(200, corsHeaders({ 'Content-Type': getContentType(targetFile) }));
|
|
410
414
|
res.end(content);
|
|
411
415
|
}
|
|
416
|
+
/**
|
|
417
|
+
* Load html2canvas library from node_modules
|
|
418
|
+
*/
|
|
419
|
+
function loadHtml2CanvasScript() {
|
|
420
|
+
try {
|
|
421
|
+
// Try multiple possible paths for html2canvas
|
|
422
|
+
const possiblePaths = [
|
|
423
|
+
// When running from dist/ (after build)
|
|
424
|
+
path_1.default.join(__dirname, '..', 'node_modules', 'html2canvas', 'dist', 'html2canvas.min.js'),
|
|
425
|
+
// When running from src/ (development)
|
|
426
|
+
path_1.default.join(__dirname, '..', '..', 'node_modules', 'html2canvas', 'dist', 'html2canvas.min.js'),
|
|
427
|
+
// When installed as a dependency in user's project
|
|
428
|
+
path_1.default.join(__dirname, '..', '..', '..', 'html2canvas', 'dist', 'html2canvas.min.js'),
|
|
429
|
+
];
|
|
430
|
+
for (const scriptPath of possiblePaths) {
|
|
431
|
+
if (fs_1.default.existsSync(scriptPath)) {
|
|
432
|
+
log(`[html2canvas] Loaded from: ${scriptPath}`);
|
|
433
|
+
return fs_1.default.readFileSync(scriptPath, 'utf-8');
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
log('[html2canvas] Script file not found in any expected location');
|
|
437
|
+
return '';
|
|
438
|
+
}
|
|
439
|
+
catch (error) {
|
|
440
|
+
log(`[html2canvas] Failed to load script: ${error.message}`);
|
|
441
|
+
return '';
|
|
442
|
+
}
|
|
443
|
+
}
|
|
412
444
|
/**
|
|
413
445
|
* Load MCP DOM Agent script
|
|
414
446
|
*/
|
|
@@ -584,7 +616,16 @@ class BuiltPlugin {
|
|
|
584
616
|
context.logger.info(`🌐 HTTP Port: ${context.http.port}`);
|
|
585
617
|
context.logger.info(`🔗 Base URL: ${context.http.baseUrl}`);
|
|
586
618
|
context.logger.info('═══════════════════════════════════════════════════════');
|
|
587
|
-
// Load MCP DOM Agent
|
|
619
|
+
// Load html2canvas and MCP DOM Agent scripts once for all plugins
|
|
620
|
+
if (!BuiltPlugin.html2canvasScript) {
|
|
621
|
+
BuiltPlugin.html2canvasScript = loadHtml2CanvasScript();
|
|
622
|
+
if (BuiltPlugin.html2canvasScript) {
|
|
623
|
+
context.logger.info('✅ html2canvas library loaded - screenshot support enabled');
|
|
624
|
+
}
|
|
625
|
+
else {
|
|
626
|
+
context.logger.warn('⚠️ html2canvas not found - screenshots will use fallback mode');
|
|
627
|
+
}
|
|
628
|
+
}
|
|
588
629
|
if (!BuiltPlugin.mcpDomAgentScript) {
|
|
589
630
|
BuiltPlugin.mcpDomAgentScript = loadMcpDomAgentScript();
|
|
590
631
|
if (BuiltPlugin.mcpDomAgentScript) {
|
|
@@ -879,7 +920,13 @@ class BuiltPlugin {
|
|
|
879
920
|
timestamp: new Date().toISOString(),
|
|
880
921
|
size: buffer.length
|
|
881
922
|
}, null, 2));
|
|
882
|
-
|
|
923
|
+
// Log with full details
|
|
924
|
+
const absolutePath = path_1.default.resolve(filepath);
|
|
925
|
+
const absoluteMetadataPath = path_1.default.resolve(metadataPath);
|
|
926
|
+
this.context.logger.info(`📸 Screenshot saved successfully:`);
|
|
927
|
+
this.context.logger.info(` Image: ${absolutePath}`);
|
|
928
|
+
this.context.logger.info(` Metadata: ${absoluteMetadataPath}`);
|
|
929
|
+
this.context.logger.info(` Size: ${(buffer.length / 1024).toFixed(2)} KB`);
|
|
883
930
|
res.writeHead(200, corsHeaders({ 'Content-Type': 'application/json' }));
|
|
884
931
|
res.end(JSON.stringify({
|
|
885
932
|
success: true,
|
|
@@ -943,18 +990,22 @@ class BuiltPlugin {
|
|
|
943
990
|
return;
|
|
944
991
|
}
|
|
945
992
|
}
|
|
946
|
-
// Inject MCP DOM Agent script into HTML screens
|
|
993
|
+
// Inject html2canvas and MCP DOM Agent script into HTML screens
|
|
947
994
|
if (BuiltPlugin.mcpDomAgentScript) {
|
|
995
|
+
const html2canvasScript = BuiltPlugin.html2canvasScript
|
|
996
|
+
? `<script>${BuiltPlugin.html2canvasScript}</script>`
|
|
997
|
+
: '';
|
|
948
998
|
const mcpScript = `<script>${BuiltPlugin.mcpDomAgentScript}</script>`;
|
|
999
|
+
const allScripts = html2canvasScript + mcpScript;
|
|
949
1000
|
// Try to inject before </body>, fallback to </head>, fallback to end of HTML
|
|
950
1001
|
if (htmlContent.includes('</body>')) {
|
|
951
|
-
htmlContent = htmlContent.replace('</body>', `${
|
|
1002
|
+
htmlContent = htmlContent.replace('</body>', `${allScripts}</body>`);
|
|
952
1003
|
}
|
|
953
1004
|
else if (htmlContent.includes('</head>')) {
|
|
954
|
-
htmlContent = htmlContent.replace('</head>', `${
|
|
1005
|
+
htmlContent = htmlContent.replace('</head>', `${allScripts}</head>`);
|
|
955
1006
|
}
|
|
956
1007
|
else {
|
|
957
|
-
htmlContent +=
|
|
1008
|
+
htmlContent += allScripts;
|
|
958
1009
|
}
|
|
959
1010
|
}
|
|
960
1011
|
res.end(htmlContent);
|
|
@@ -1108,6 +1159,7 @@ class BuiltPlugin {
|
|
|
1108
1159
|
}
|
|
1109
1160
|
// MCP DOM Agent script (loaded once at startup, accessible to serveSpa function)
|
|
1110
1161
|
BuiltPlugin.mcpDomAgentScript = null;
|
|
1162
|
+
BuiltPlugin.html2canvasScript = null;
|
|
1111
1163
|
/**
|
|
1112
1164
|
* Group tools by scope
|
|
1113
1165
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@majkapp/plugin-kit",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.7",
|
|
4
4
|
"description": "Fluent builder framework for creating robust MAJK plugins",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"README.md"
|
|
22
22
|
],
|
|
23
23
|
"scripts": {
|
|
24
|
-
"build": "tsc && cp src/mcp-dom-agent.js dist/
|
|
24
|
+
"build": "tsc && cp src/mcp-dom-agent.js dist/",
|
|
25
25
|
"watch": "tsc --watch",
|
|
26
26
|
"clean": "rm -rf dist"
|
|
27
27
|
},
|
|
@@ -33,7 +33,8 @@
|
|
|
33
33
|
],
|
|
34
34
|
"author": "Majk Contributors",
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"commander": "^11.1.0"
|
|
36
|
+
"commander": "^11.1.0",
|
|
37
|
+
"html2canvas": "^1.4.1"
|
|
37
38
|
},
|
|
38
39
|
"devDependencies": {
|
|
39
40
|
"@types/node": "^20.19.24",
|