@dimina-kit/devtools 0.4.0-dev.20260729062524 → 0.4.0-dev.20260801163345
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/main/app/app.js +7 -0
- package/dist/main/app/bootstrap.d.ts +8 -5
- package/dist/main/app/bootstrap.js +15 -15
- package/dist/main/index.bundle.js +2207 -5152
- package/dist/main/ipc/app-lifecycle.d.ts +1 -31
- package/dist/main/ipc/app-lifecycle.js +1 -53
- package/dist/main/ipc/bridge-router.d.ts +19 -152
- package/dist/main/ipc/bridge-router.js +28 -2186
- package/dist/main/ipc/page-scroll.d.ts +1 -13
- package/dist/main/ipc/page-scroll.js +1 -16
- package/dist/main/ipc/session-listener-bag.d.ts +1 -40
- package/dist/main/ipc/session-listener-bag.js +1 -39
- package/dist/main/services/console-forward/index.d.ts +1 -60
- package/dist/main/services/console-forward/index.js +1 -225
- package/dist/main/services/console-forward/internal-log.d.ts +1 -10
- package/dist/main/services/console-forward/internal-log.js +1 -22
- package/dist/main/services/diagnostics/index.d.ts +1 -58
- package/dist/main/services/diagnostics/index.js +1 -60
- package/dist/main/services/dimina-resource-server.d.ts +1 -6
- package/dist/main/services/dimina-resource-server.js +1 -98
- package/dist/main/services/mcp/target-manager.js +5 -1
- package/dist/main/services/network-forward/index.d.ts +15 -3
- package/dist/main/services/network-forward/index.js +30 -4
- package/dist/main/services/network-forward/websocket.d.ts +36 -0
- package/dist/main/services/network-forward/websocket.js +120 -0
- package/dist/main/services/service-host-pool/pool.d.ts +1 -196
- package/dist/main/services/service-host-pool/pool.js +1 -363
- package/dist/main/services/simulator/custom-apis.d.ts +1 -42
- package/dist/main/services/simulator/custom-apis.js +1 -46
- package/dist/main/services/simulator/referer.d.ts +1 -9
- package/dist/main/services/simulator/referer.js +1 -19
- package/dist/main/services/simulator-storage/service-storage-ops.d.ts +1 -39
- package/dist/main/services/simulator-storage/service-storage-ops.js +1 -66
- package/dist/main/services/simulator-temp-files/disk.d.ts +1 -54
- package/dist/main/services/simulator-temp-files/disk.js +1 -237
- package/dist/main/services/simulator-temp-files/fs-channels.d.ts +1 -68
- package/dist/main/services/simulator-temp-files/fs-channels.js +1 -107
- package/dist/main/services/simulator-temp-files/index.d.ts +1 -32
- package/dist/main/services/simulator-temp-files/index.js +1 -181
- package/dist/main/services/simulator-temp-files/request-handler.d.ts +1 -29
- package/dist/main/services/simulator-temp-files/request-handler.js +1 -177
- package/dist/main/services/simulator-temp-files/resolver.d.ts +1 -21
- package/dist/main/services/simulator-temp-files/resolver.js +1 -21
- package/dist/main/services/simulator-temp-files/store.d.ts +1 -13
- package/dist/main/services/simulator-temp-files/store.js +1 -23
- package/dist/main/services/views/miniapp-partition.d.ts +1 -89
- package/dist/main/services/views/miniapp-partition.js +1 -158
- package/dist/main/services/views/simulator-session-policy.d.ts +1 -27
- package/dist/main/services/views/simulator-session-policy.js +1 -98
- package/dist/main/services/workbench-context.d.ts +4 -1
- package/dist/main/services/workbench-context.js +17 -0
- package/dist/main/utils/ipc-registry.d.ts +21 -3
- package/dist/main/utils/ipc-registry.js +26 -23
- package/dist/main/utils/paths.d.ts +14 -0
- package/dist/main/utils/paths.js +14 -0
- package/dist/main/windows/service-host-window/create.d.ts +1 -92
- package/dist/main/windows/service-host-window/create.js +1 -154
- package/dist/native-host/common/common.js +154 -58
- package/dist/native-host/container/pageFrame.css +1 -1
- package/dist/native-host/render/render.js +6611 -3312
- package/dist/native-host/service/service.js +2 -2
- package/dist/preload/index.d.ts +2 -0
- package/dist/preload/index.js +1 -0
- package/dist/preload/runtime/clipboard.d.ts +6 -0
- package/dist/preload/runtime/clipboard.js +12 -0
- package/dist/preload/runtime/native-host.d.ts +2 -0
- package/dist/preload/runtime/native-host.js +5 -10
- package/dist/preload/runtime/node-bindings.d.ts +18 -0
- package/dist/preload/runtime/node-bindings.js +44 -0
- package/dist/preload/windows/host-toolbar-runtime.cjs.map +2 -2
- package/dist/preload/windows/main.cjs +1195 -897
- package/dist/preload/windows/main.cjs.map +4 -4
- package/dist/preload/windows/simulator.cjs +149 -60
- package/dist/preload/windows/simulator.cjs.map +4 -4
- package/dist/preload/windows/simulator.js +149 -60
- package/dist/render-host/pageFrame.html +3 -3
- package/dist/shared/bridge-channels.d.ts +1 -419
- package/dist/shared/bridge-channels.js +1 -89
- package/dist/shared/dmb-resource-url.d.ts +2 -0
- package/dist/shared/dmb-resource-url.js +2 -0
- package/dist/shared/ipc-channels.d.ts +2 -32
- package/dist/shared/ipc-channels.js +2 -5
- package/dist/shared/node-bindings.d.ts +2 -0
- package/dist/shared/node-bindings.js +2 -0
- package/dist/shared/request-core.d.ts +1 -83
- package/dist/shared/request-core.js +1 -167
- package/dist/simulator/assets/device-shell-Cw7c-IkG.js +2 -0
- package/dist/simulator/assets/{device-shell-BHz1v3Yo.css → device-shell-DbC5ccs8.css} +1 -1
- package/dist/simulator/assets/{jsx-runtime-hBv-rHqQ.js → jsx-runtime-DkKmJyBb.js} +2 -2
- package/dist/simulator/assets/simulator-COIE6R49.js +10 -0
- package/dist/simulator/assets/simulator-mini-app-BLn7XV8e.js +2 -0
- package/dist/simulator/simulator.html +2 -2
- package/dist/simulator/temp-files.d.ts +29 -0
- package/dist/simulator/temp-files.js +79 -0
- package/dist/simulator/types.d.ts +43 -0
- package/dist/simulator/types.js +2 -0
- package/package.json +6 -5
- package/dist/shared/simulator-api-metadata.d.ts +0 -26
- package/dist/shared/simulator-api-metadata.js +0 -59
- package/dist/shared/vpath.d.ts +0 -42
- package/dist/shared/vpath.js +0 -105
- package/dist/simulator/assets/device-shell-CH_DMYaz.js +0 -2
- package/dist/simulator/assets/simulator-DXraYerh.js +0 -10
- package/dist/simulator/assets/simulator-mini-app-w1Bhwkld.js +0 -2
|
@@ -1,4 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
10
|
+
for (let key of __getOwnPropNames(from))
|
|
11
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
12
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
13
|
+
}
|
|
14
|
+
return to;
|
|
15
|
+
};
|
|
16
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
17
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
18
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
19
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
20
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
2
24
|
|
|
3
25
|
// src/preload/shared/expose.ts
|
|
4
26
|
var import_electron = require("electron");
|
|
@@ -341,6 +363,49 @@ function installSimulatorBridge() {
|
|
|
341
363
|
// src/preload/runtime/custom-apis.ts
|
|
342
364
|
var import_electron2 = require("electron");
|
|
343
365
|
|
|
366
|
+
// ../dimina-electron-runtime/dist/shared/bridge-channels.js
|
|
367
|
+
var BRIDGE_CHANNELS = {
|
|
368
|
+
SPAWN: "dmb:spawn",
|
|
369
|
+
DISPOSE: "dmb:dispose",
|
|
370
|
+
PAGE_OPEN: "dmb:page:open",
|
|
371
|
+
PAGE_CLOSE: "dmb:page:close",
|
|
372
|
+
PAGE_LIFECYCLE: "dmb:page:lifecycle",
|
|
373
|
+
NAV_CALLBACK: "dmb:nav:callback",
|
|
374
|
+
SERVICE_INVOKE: "dmb:service:invoke",
|
|
375
|
+
SERVICE_PUBLISH: "dmb:service:publish",
|
|
376
|
+
RENDER_INVOKE: "dmb:render:invoke",
|
|
377
|
+
RENDER_PUBLISH: "dmb:render:publish",
|
|
378
|
+
TO_SERVICE: "dmb:to-service",
|
|
379
|
+
TO_RENDER: "dmb:to-render",
|
|
380
|
+
SIMULATOR_API: "dmb:simulator-api",
|
|
381
|
+
/** simulator → main: ack of an API_CALL request (carries success/fail args). */
|
|
382
|
+
API_RESPONSE: "dmb:api:response",
|
|
383
|
+
/**
|
|
384
|
+
* simulator webview preload → main (sendSync): "is native-host mode on?".
|
|
385
|
+
* The guest preload can't read the launch `process.env`, so it asks main
|
|
386
|
+
* (which can) at install time. Reply is `e.returnValue = boolean`.
|
|
387
|
+
*/
|
|
388
|
+
NATIVE_HOST_ENABLED: "dmb:native-host-enabled",
|
|
389
|
+
/**
|
|
390
|
+
* simulator (DeviceShell) → main: the visible top-of-stack page bridgeId.
|
|
391
|
+
* Main has no z-order concept — the active page lives only in DeviceShell's
|
|
392
|
+
* ShellState — so devtools panels / automation that must target "the current
|
|
393
|
+
* page's render webContents" resolve it through this signal. Fire-and-forget.
|
|
394
|
+
*/
|
|
395
|
+
ACTIVE_PAGE: "dmb:active-page",
|
|
396
|
+
/**
|
|
397
|
+
* simulator (DeviceShell) → main: the FULL ordered page stack (bottom→top)
|
|
398
|
+
* whenever it changes. Main has no stack of its own (it only learns the
|
|
399
|
+
* active bridgeId via ACTIVE_PAGE), so automation's `App.getPageStack` needs
|
|
400
|
+
* this to report multi-page stacks. Fire-and-forget.
|
|
401
|
+
*/
|
|
402
|
+
PAGE_STACK: "dmb:page-stack"
|
|
403
|
+
};
|
|
404
|
+
var SimulatorCustomApiBridgeChannel = {
|
|
405
|
+
Request: "simulator:custom-apis:bridge-request",
|
|
406
|
+
Response: "simulator:custom-apis:bridge-response"
|
|
407
|
+
};
|
|
408
|
+
|
|
344
409
|
// src/shared/ipc-channels.ts
|
|
345
410
|
var SimulatorChannel = {
|
|
346
411
|
// Ask main to create the simulator as a top-level WebContentsView (so nested
|
|
@@ -365,10 +430,6 @@ var SimulatorChannel = {
|
|
|
365
430
|
// string (same bare format as `getCurrentPagePath`), or '' when unknown.
|
|
366
431
|
CurrentPage: "simulator:current-page"
|
|
367
432
|
};
|
|
368
|
-
var SimulatorCustomApiBridgeChannel = {
|
|
369
|
-
Request: "simulator:custom-apis:bridge-request",
|
|
370
|
-
Response: "simulator:custom-apis:bridge-response"
|
|
371
|
-
};
|
|
372
433
|
|
|
373
434
|
// src/preload/runtime/custom-apis.ts
|
|
374
435
|
var LIST_RETRY_INTERVAL_MS = 150;
|
|
@@ -446,6 +507,31 @@ function installCustomApisBridge() {
|
|
|
446
507
|
return exposeOnMainWorld("__diminaCustomApis", bridge);
|
|
447
508
|
}
|
|
448
509
|
|
|
510
|
+
// src/preload/runtime/node-bindings.ts
|
|
511
|
+
var import_node_fs = __toESM(require("node:fs"), 1);
|
|
512
|
+
var import_node_os = __toESM(require("node:os"), 1);
|
|
513
|
+
var import_node_path = __toESM(require("node:path"), 1);
|
|
514
|
+
var import_node_crypto = __toESM(require("node:crypto"), 1);
|
|
515
|
+
var import_node_buffer = __toESM(require("node:buffer"), 1);
|
|
516
|
+
|
|
517
|
+
// ../dimina-electron-runtime/dist/shared/node-bindings.js
|
|
518
|
+
var NODE_BINDINGS_GLOBAL = "__diminaNodeBindings";
|
|
519
|
+
|
|
520
|
+
// src/preload/runtime/node-bindings.ts
|
|
521
|
+
function installNodeBindings() {
|
|
522
|
+
const existing = Object.getOwnPropertyDescriptor(globalThis, NODE_BINDINGS_GLOBAL);
|
|
523
|
+
if (existing && !existing.configurable) {
|
|
524
|
+
return;
|
|
525
|
+
}
|
|
526
|
+
const bindings = Object.freeze({ fs: import_node_fs.default, os: import_node_os.default, path: import_node_path.default, crypto: import_node_crypto.default, buffer: import_node_buffer.default });
|
|
527
|
+
Object.defineProperty(globalThis, NODE_BINDINGS_GLOBAL, {
|
|
528
|
+
value: bindings,
|
|
529
|
+
writable: false,
|
|
530
|
+
configurable: false,
|
|
531
|
+
enumerable: true
|
|
532
|
+
});
|
|
533
|
+
}
|
|
534
|
+
|
|
449
535
|
// src/preload/runtime/temp-files.ts
|
|
450
536
|
var import_electron3 = require("electron");
|
|
451
537
|
|
|
@@ -458,18 +544,18 @@ function setTempFileSink(sink) {
|
|
|
458
544
|
// src/preload/runtime/temp-files.ts
|
|
459
545
|
function installTempFileBridge() {
|
|
460
546
|
setTempFileSink({
|
|
461
|
-
write(
|
|
547
|
+
write(path2, blob) {
|
|
462
548
|
blob.arrayBuffer().then((bytes) => {
|
|
463
549
|
import_electron3.ipcRenderer.send("simulator:temp-file:write", {
|
|
464
|
-
path,
|
|
550
|
+
path: path2,
|
|
465
551
|
mime: blob.type,
|
|
466
552
|
bytes
|
|
467
553
|
});
|
|
468
554
|
}).catch(() => {
|
|
469
555
|
});
|
|
470
556
|
},
|
|
471
|
-
revoke(
|
|
472
|
-
import_electron3.ipcRenderer.send("simulator:temp-file:revoke", { path });
|
|
557
|
+
revoke(path2) {
|
|
558
|
+
import_electron3.ipcRenderer.send("simulator:temp-file:revoke", { path: path2 });
|
|
473
559
|
},
|
|
474
560
|
revokeAll() {
|
|
475
561
|
import_electron3.ipcRenderer.send("simulator:temp-file:revoke-all");
|
|
@@ -654,7 +740,7 @@ function createAppDataSource() {
|
|
|
654
740
|
};
|
|
655
741
|
}
|
|
656
742
|
|
|
657
|
-
//
|
|
743
|
+
// ../dimina-electron-runtime/dist/shared/request-core.js
|
|
658
744
|
var DEFAULT_REQUEST_TIMEOUT_MS = 6e4;
|
|
659
745
|
var MAX_TIMEOUT_MS = 2147483647;
|
|
660
746
|
function resolveTimeoutBudgetMs(timeout) {
|
|
@@ -664,9 +750,11 @@ function resolveTimeoutBudgetMs(timeout) {
|
|
|
664
750
|
function buildHeaders(header) {
|
|
665
751
|
const headers = new Headers();
|
|
666
752
|
for (const [key, value] of Object.entries(header ?? {})) {
|
|
667
|
-
if (value != null)
|
|
753
|
+
if (value != null)
|
|
754
|
+
headers.set(key, String(value));
|
|
668
755
|
}
|
|
669
|
-
if (!headers.has("content-type"))
|
|
756
|
+
if (!headers.has("content-type"))
|
|
757
|
+
headers.set("content-type", "application/json");
|
|
670
758
|
return headers;
|
|
671
759
|
}
|
|
672
760
|
function appendQueryParams(url, data) {
|
|
@@ -678,7 +766,8 @@ function appendQueryParams(url, data) {
|
|
|
678
766
|
return resolved.toString();
|
|
679
767
|
}
|
|
680
768
|
function encodeBody(data, contentType) {
|
|
681
|
-
if (typeof data === "string")
|
|
769
|
+
if (typeof data === "string")
|
|
770
|
+
return data;
|
|
682
771
|
if (contentType.includes("application/x-www-form-urlencoded")) {
|
|
683
772
|
const form = new URLSearchParams();
|
|
684
773
|
for (const [key, value] of Object.entries(data)) {
|
|
@@ -693,7 +782,8 @@ async function decodeResponseData(response, dataType, responseType) {
|
|
|
693
782
|
return response.arrayBuffer();
|
|
694
783
|
}
|
|
695
784
|
const text = await response.text();
|
|
696
|
-
if (dataType !== "json")
|
|
785
|
+
if (dataType !== "json")
|
|
786
|
+
return text;
|
|
697
787
|
try {
|
|
698
788
|
return JSON.parse(text);
|
|
699
789
|
} catch {
|
|
@@ -717,14 +807,16 @@ function performRequest(opts, callbacks) {
|
|
|
717
807
|
init.signal = controller.signal;
|
|
718
808
|
let settled = false;
|
|
719
809
|
function settleSuccess(res) {
|
|
720
|
-
if (settled)
|
|
810
|
+
if (settled)
|
|
811
|
+
return;
|
|
721
812
|
settled = true;
|
|
722
813
|
clearTimeout(timer);
|
|
723
814
|
callbacks.success?.(res);
|
|
724
815
|
callbacks.complete?.(res);
|
|
725
816
|
}
|
|
726
817
|
function settleFail(err) {
|
|
727
|
-
if (settled)
|
|
818
|
+
if (settled)
|
|
819
|
+
return;
|
|
728
820
|
settled = true;
|
|
729
821
|
clearTimeout(timer);
|
|
730
822
|
callbacks.fail?.(err);
|
|
@@ -909,44 +1001,33 @@ function setupApiCompatHook() {
|
|
|
909
1001
|
// src/preload/runtime/native-host.ts
|
|
910
1002
|
var import_electron5 = require("electron");
|
|
911
1003
|
|
|
912
|
-
//
|
|
913
|
-
var
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
* page's render webContents" resolve it through this signal. Fire-and-forget.
|
|
940
|
-
*/
|
|
941
|
-
ACTIVE_PAGE: "dmb:active-page",
|
|
942
|
-
/**
|
|
943
|
-
* simulator (DeviceShell) → main: the FULL ordered page stack (bottom→top)
|
|
944
|
-
* whenever it changes. Main has no stack of its own (it only learns the
|
|
945
|
-
* active bridgeId via ACTIVE_PAGE), so automation's `App.getPageStack` needs
|
|
946
|
-
* this to report multi-page stacks. Fire-and-forget.
|
|
947
|
-
*/
|
|
948
|
-
PAGE_STACK: "dmb:page-stack"
|
|
949
|
-
};
|
|
1004
|
+
// ../dimina-electron-runtime/dist/shared/dmb-resource-url.js
|
|
1005
|
+
var DMB_PAGEFRAME_DOC_NAME = "__frame__.html";
|
|
1006
|
+
function buildRenderHostDocumentUrl(opts) {
|
|
1007
|
+
const PATH_SEPARATOR_RE = /[/\\]/;
|
|
1008
|
+
for (const [name, value] of [["appId", opts.appId], ["root", opts.root]]) {
|
|
1009
|
+
if (PATH_SEPARATOR_RE.test(value) || value === "." || value === "..") {
|
|
1010
|
+
throw new Error(`[dmb-resource-url] ${name} must be a single path segment, got ${JSON.stringify(value)}`);
|
|
1011
|
+
}
|
|
1012
|
+
}
|
|
1013
|
+
const pageDirSegments = opts.pagePath.split(PATH_SEPARATOR_RE).slice(0, -1).filter(Boolean);
|
|
1014
|
+
for (const segment of pageDirSegments) {
|
|
1015
|
+
if (segment === "." || segment === "..") {
|
|
1016
|
+
throw new Error(`[dmb-resource-url] pagePath must not contain '.'/'..' segments, got ${JSON.stringify(opts.pagePath)}`);
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
1019
|
+
const pathSegments = [opts.appId, opts.root, ...pageDirSegments, DMB_PAGEFRAME_DOC_NAME].map(encodeURIComponent);
|
|
1020
|
+
const url = new URL(`dmb-resource://${opts.bridgeId}/${pathSegments.join("/")}`);
|
|
1021
|
+
url.searchParams.set("bridgeId", opts.bridgeId);
|
|
1022
|
+
url.searchParams.set("appId", opts.appId);
|
|
1023
|
+
url.searchParams.set("root", opts.root);
|
|
1024
|
+
url.searchParams.set("pagePath", opts.pagePath);
|
|
1025
|
+
if (opts.isTab)
|
|
1026
|
+
url.searchParams.set("isTab", "1");
|
|
1027
|
+
if (opts.backgroundColor)
|
|
1028
|
+
url.searchParams.set("bgColor", opts.backgroundColor);
|
|
1029
|
+
return url.toString();
|
|
1030
|
+
}
|
|
950
1031
|
|
|
951
1032
|
// src/preload/runtime/native-host.ts
|
|
952
1033
|
function queryNativeHostConfig() {
|
|
@@ -990,13 +1071,7 @@ function buildBridge2(cfg) {
|
|
|
990
1071
|
import_electron5.ipcRenderer.send(BRIDGE_CHANNELS.PAGE_STACK, payload);
|
|
991
1072
|
},
|
|
992
1073
|
createRenderHostUrl(opts) {
|
|
993
|
-
|
|
994
|
-
url.searchParams.set("bridgeId", opts.bridgeId);
|
|
995
|
-
url.searchParams.set("appId", opts.appId);
|
|
996
|
-
url.searchParams.set("pagePath", opts.pagePath);
|
|
997
|
-
if (opts.isTab) url.searchParams.set("isTab", "1");
|
|
998
|
-
if (opts.backgroundColor) url.searchParams.set("bgColor", opts.backgroundColor);
|
|
999
|
-
return url.toString();
|
|
1074
|
+
return buildRenderHostDocumentUrl(opts);
|
|
1000
1075
|
},
|
|
1001
1076
|
renderPreloadUrl: cfg.renderPreloadUrl,
|
|
1002
1077
|
device: cfg.device,
|
|
@@ -1017,12 +1092,26 @@ function installNativeHostBridge() {
|
|
|
1017
1092
|
return exposeOnMainWorld("__diminaNativeHost", buildBridge2(cfg));
|
|
1018
1093
|
}
|
|
1019
1094
|
|
|
1095
|
+
// src/preload/runtime/clipboard.ts
|
|
1096
|
+
var import_electron6 = require("electron");
|
|
1097
|
+
function buildBridge3() {
|
|
1098
|
+
return {
|
|
1099
|
+
readText: () => import_electron6.clipboard.readText(),
|
|
1100
|
+
writeText: (text) => import_electron6.clipboard.writeText(text)
|
|
1101
|
+
};
|
|
1102
|
+
}
|
|
1103
|
+
function installClipboardBridge() {
|
|
1104
|
+
return exposeOnMainWorld("__diminaClipboard", buildBridge3());
|
|
1105
|
+
}
|
|
1106
|
+
|
|
1020
1107
|
// src/preload/windows/simulator.ts
|
|
1108
|
+
installNodeBindings();
|
|
1021
1109
|
setupApiCompatHook();
|
|
1022
1110
|
installSimulatorBridge();
|
|
1023
1111
|
installCustomApisBridge();
|
|
1024
1112
|
installTempFileBridge();
|
|
1025
1113
|
installConsoleInstrumentation();
|
|
1114
|
+
installClipboardBridge();
|
|
1026
1115
|
installNativeHostBridge();
|
|
1027
1116
|
createAppDataSource().start(() => {
|
|
1028
1117
|
});
|
|
@@ -12,17 +12,17 @@
|
|
|
12
12
|
native-host render-host must load it too. build-native-host.mjs vendors it to
|
|
13
13
|
../native-host/container/ and rewrites this href (mirrors common.js/render.js).
|
|
14
14
|
-->
|
|
15
|
-
<link rel="stylesheet" href="
|
|
15
|
+
<link rel="stylesheet" href="/__sdk__/native-host/container/pageFrame.css" />
|
|
16
16
|
<script>
|
|
17
17
|
if (typeof globalThis.process === 'undefined') {
|
|
18
18
|
globalThis.process = { env: { NODE_ENV: 'production' } };
|
|
19
19
|
}
|
|
20
20
|
</script>
|
|
21
21
|
<script type="module">
|
|
22
|
-
import { modDefine, modRequire } from '
|
|
22
|
+
import { modDefine, modRequire } from '/__sdk__/native-host/common/common.js'
|
|
23
23
|
window.modDefine = modDefine
|
|
24
24
|
window.modRequire = modRequire
|
|
25
|
-
await import('
|
|
25
|
+
await import('/__sdk__/native-host/render/render.js')
|
|
26
26
|
</script>
|
|
27
27
|
</head>
|
|
28
28
|
<body></body>
|