@dimina-kit/devtools 0.4.0-dev.20260828161241 → 0.4.0-dev.20260907055341
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 +52 -729
- package/dist/main/app/app.d.ts +27 -7
- package/dist/main/app/app.js +285 -681
- package/dist/main/app/editor-view.d.ts +21 -0
- package/dist/main/app/editor-view.js +71 -0
- package/dist/main/app/global-mirrors.d.ts +23 -0
- package/dist/main/app/global-mirrors.js +37 -0
- package/dist/main/app/host-sidebar-default.d.ts +19 -0
- package/dist/main/app/host-sidebar-default.js +44 -0
- package/dist/main/app/menu-setup.d.ts +13 -0
- package/dist/main/app/menu-setup.js +49 -0
- package/dist/main/app/open-project-ipc.d.ts +13 -0
- package/dist/main/app/open-project-ipc.js +21 -0
- package/dist/main/app/project-list-surface.d.ts +31 -0
- package/dist/main/app/project-list-surface.js +20 -0
- package/dist/main/app/project-window.d.ts +36 -0
- package/dist/main/app/project-window.js +93 -0
- package/dist/main/app/servers.d.ts +17 -0
- package/dist/main/app/servers.js +60 -0
- package/dist/main/app/ui-extension-targets.d.ts +42 -0
- package/dist/main/app/ui-extension-targets.js +101 -0
- package/dist/main/app/window-close-reveal.harness.d.ts +34 -0
- package/dist/main/app/window-close-reveal.harness.js +65 -0
- package/dist/main/app/window-events.d.ts +15 -0
- package/dist/main/app/window-events.js +45 -0
- package/dist/main/app/window-runtime-services.d.ts +41 -0
- package/dist/main/app/window-runtime-services.js +178 -0
- package/dist/main/app/workbench-modules.d.ts +24 -0
- package/dist/main/app/workbench-modules.js +51 -0
- package/dist/main/app/workbench-window.d.ts +85 -0
- package/dist/main/app/workbench-window.js +310 -0
- package/dist/main/index.bundle.js +10669 -9096
- package/dist/main/ipc/app.d.ts +4 -1
- package/dist/main/ipc/app.js +4 -3
- package/dist/main/ipc/device-picker.d.ts +16 -0
- package/dist/main/ipc/device-picker.js +27 -0
- package/dist/main/ipc/index.d.ts +1 -0
- package/dist/main/ipc/index.js +1 -0
- package/dist/main/ipc/internal-devtools.d.ts +2 -1
- package/dist/main/ipc/internal-devtools.js +4 -3
- package/dist/main/ipc/popover.d.ts +4 -1
- package/dist/main/ipc/popover.js +25 -9
- package/dist/main/ipc/project-create.d.ts +2 -1
- package/dist/main/ipc/project-create.js +6 -5
- package/dist/main/ipc/project-fs.d.ts +3 -1
- package/dist/main/ipc/project-fs.js +17 -17
- package/dist/main/ipc/projects.d.ts +3 -3
- package/dist/main/ipc/projects.js +13 -12
- package/dist/main/ipc/session.d.ts +4 -1
- package/dist/main/ipc/session.js +16 -11
- package/dist/main/ipc/settings.d.ts +4 -1
- package/dist/main/ipc/settings.js +12 -19
- package/dist/main/ipc/simulator-module.d.ts +5 -0
- package/dist/main/ipc/simulator-module.js +9 -5
- package/dist/main/ipc/simulator.d.ts +4 -1
- package/dist/main/ipc/simulator.js +12 -18
- package/dist/main/ipc/tooltip.d.ts +2 -1
- package/dist/main/ipc/tooltip.js +8 -7
- package/dist/main/ipc/views.d.ts +4 -1
- package/dist/main/ipc/views.js +20 -9
- package/dist/main/runtime/devtools-backend-before-quit.harness.d.ts +2 -20
- package/dist/main/runtime/devtools-backend-before-quit.harness.js +14 -283
- package/dist/main/runtime/devtools-backend.js +14 -3
- package/dist/main/runtime/devtools-runtime-mock.harness.d.ts +21 -0
- package/dist/main/runtime/devtools-runtime-mock.harness.js +313 -0
- package/dist/main/services/app-services.d.ts +62 -0
- package/dist/main/services/app-services.js +64 -0
- package/dist/main/services/automation/connection-target.d.ts +36 -0
- package/dist/main/services/automation/connection-target.js +29 -0
- package/dist/main/services/automation/console-bridge.d.ts +28 -0
- package/dist/main/services/automation/console-bridge.js +91 -0
- package/dist/main/services/automation/handlers/app.js +4 -4
- package/dist/main/services/automation/handlers/element.js +55 -21
- package/dist/main/services/automation/index.d.ts +12 -1
- package/dist/main/services/automation/index.js +54 -133
- package/dist/main/services/default-adapter.js +1 -1
- package/dist/main/services/fs-bridge-protocol.d.ts +61 -0
- package/dist/main/services/fs-bridge-protocol.js +34 -0
- package/dist/main/services/fs-watch-sse.d.ts +8 -1
- package/dist/main/services/fs-watch-sse.js +19 -5
- package/dist/main/services/mcp/connection-owner.d.ts +38 -0
- package/dist/main/services/mcp/connection-owner.js +79 -0
- package/dist/main/services/mcp/index.d.ts +3 -1
- package/dist/main/services/mcp/index.js +4 -3
- package/dist/main/services/mcp/opened-project.d.ts +88 -0
- package/dist/main/services/mcp/opened-project.js +60 -0
- package/dist/main/services/mcp/target-manager.d.ts +71 -23
- package/dist/main/services/mcp/target-manager.js +269 -142
- package/dist/main/services/mcp/target-selection.d.ts +47 -0
- package/dist/main/services/mcp/target-selection.js +71 -0
- package/dist/main/services/mcp/tools/context-tools.js +20 -5
- package/dist/main/services/mcp/tools/project-tools.d.ts +29 -6
- package/dist/main/services/mcp/tools/project-tools.js +37 -25
- package/dist/main/services/module.d.ts +13 -5
- package/dist/main/services/notifications/renderer-notifier.d.ts +28 -4
- package/dist/main/services/notifications/renderer-notifier.js +15 -3
- package/dist/main/services/projects/local-provider.js +2 -0
- package/dist/main/services/projects/project-repository.d.ts +31 -1
- package/dist/main/services/projects/project-repository.js +144 -20
- package/dist/main/services/projects/types.d.ts +31 -8
- package/dist/main/services/safe-area/index.d.ts +19 -5
- package/dist/main/services/safe-area/index.js +38 -13
- package/dist/main/services/simulator/ui-extensions.d.ts +8 -0
- package/dist/main/services/simulator/ui-extensions.js +16 -6
- package/dist/main/services/simulator-storage/index.d.ts +12 -1
- package/dist/main/services/simulator-storage/index.js +22 -7
- package/dist/main/services/simulator-storage/window-scope.d.ts +20 -0
- package/dist/main/services/simulator-storage/window-scope.js +20 -0
- package/dist/main/services/views/host-slot-port-channel.d.ts +20 -3
- package/dist/main/services/views/host-slot-port-channel.js +33 -5
- package/dist/main/services/views/managed-web-contents-view.js +21 -1
- package/dist/main/services/views/native-simulator-view.js +13 -16
- package/dist/main/services/views/overlay-panels-view.d.ts +13 -0
- package/dist/main/services/views/overlay-panels-view.js +31 -0
- package/dist/main/services/views/view-manager.d.ts +1 -1
- package/dist/main/services/views/view-manager.js +3 -0
- package/dist/main/services/window-contexts/context-router.d.ts +36 -0
- package/dist/main/services/window-contexts/context-router.js +55 -0
- package/dist/main/services/workbench-coi-host.d.ts +52 -0
- package/dist/main/services/workbench-coi-host.js +227 -0
- package/dist/main/services/workbench-coi-server.js +75 -133
- package/dist/main/services/workbench-coi-shutdown.d.ts +40 -0
- package/dist/main/services/workbench-coi-shutdown.js +69 -0
- package/dist/main/services/workbench-coi-static.d.ts +23 -0
- package/dist/main/services/workbench-coi-static.js +87 -0
- package/dist/main/services/workbench-context.d.ts +27 -3
- package/dist/main/services/workbench-context.js +10 -5
- package/dist/main/services/workspace/compile-mode-adapter.d.ts +18 -0
- package/dist/main/services/workspace/compile-mode-adapter.js +57 -0
- package/dist/main/services/workspace/compile-mode-store.d.ts +25 -0
- package/dist/main/services/workspace/compile-mode-store.js +71 -0
- package/dist/main/services/workspace/workspace-compile-modes.d.ts +59 -0
- package/dist/main/services/workspace/workspace-compile-modes.js +93 -0
- package/dist/main/services/workspace/workspace-referer.d.ts +17 -0
- package/dist/main/services/workspace/workspace-referer.js +26 -0
- package/dist/main/services/workspace/workspace-service.d.ts +4 -0
- package/dist/main/services/workspace/workspace-service.js +51 -84
- package/dist/main/services/workspace/workspace-thumbnails.d.ts +22 -0
- package/dist/main/services/workspace/workspace-thumbnails.js +67 -0
- package/dist/main/utils/ipc-context-source.d.ts +40 -0
- package/dist/main/utils/ipc-context-source.js +23 -0
- package/dist/main/utils/ipc-registry.d.ts +42 -36
- package/dist/main/utils/ipc-registry.js +117 -50
- package/dist/main/utils/sender-policy.d.ts +9 -0
- package/dist/main/utils/sender-policy.js +26 -3
- package/dist/main/utils/theme.d.ts +3 -2
- package/dist/main/utils/theme.js +3 -2
- package/dist/main/windows/main-window/create.d.ts +16 -0
- package/dist/main/windows/main-window/create.js +19 -11
- package/dist/main/windows/main-window/events.d.ts +1 -1
- package/dist/main/windows/main-window/events.js +26 -13
- package/dist/main/windows/main-window/index.d.ts +1 -1
- package/dist/main/windows/main-window/index.js +1 -1
- package/dist/native-host/common/common.js +94 -73
- package/dist/native-host/render/render.js +4079 -3171
- package/dist/native-host/service/service.js +2 -2
- package/dist/preload/runtime/native-host.d.ts +4 -0
- package/dist/preload/runtime/temp-files.js +9 -2
- package/dist/preload/runtime/wait-for-slot-root.d.ts +7 -4
- package/dist/preload/runtime/wait-for-slot-root.js +36 -8
- package/dist/preload/windows/host-dialog-runtime.cjs +10 -3
- package/dist/preload/windows/host-dialog-runtime.cjs.map +2 -2
- package/dist/preload/windows/host-sidebar-runtime.cjs +10 -3
- package/dist/preload/windows/host-sidebar-runtime.cjs.map +2 -2
- package/dist/preload/windows/host-toolbar-runtime.cjs +10 -3
- package/dist/preload/windows/host-toolbar-runtime.cjs.map +2 -2
- package/dist/preload/windows/main.cjs +181 -4
- package/dist/preload/windows/main.cjs.map +4 -4
- package/dist/preload/windows/simulator.cjs +10 -0
- package/dist/preload/windows/simulator.cjs.map +2 -2
- package/dist/preload/windows/simulator.js +10 -0
- package/dist/render-host/pageFrame.html +1 -1
- package/dist/render-host/preload.cjs +16 -4
- package/dist/renderer/assets/button-CB2MWjHY.js +2 -0
- package/dist/renderer/assets/constants-CkoGPQTS.js +2 -0
- package/dist/renderer/assets/constants-zQZ2-y21.js +2 -0
- package/dist/renderer/assets/{createLucideIcon-Bqi8hpdi.js → createLucideIcon-cZ9FlZZw.js} +2 -2
- package/dist/renderer/assets/devicePicker-H2eIO4e1.js +2 -0
- package/dist/renderer/assets/dialog-pHzEA8Vx.js +46 -0
- package/dist/renderer/assets/dist-B5HADirS.js +2 -0
- package/dist/renderer/assets/{dist-DKWdE1TK.js → dist-DIFlRMKe.js} +2 -2
- package/dist/renderer/assets/hostSidebarDefault-DRWh6OCt.js +2 -0
- package/dist/renderer/assets/index-CEL_XFge.js +2 -0
- package/dist/renderer/assets/{input-Ct3alvkq.js → input-CAObw95L.js} +2 -2
- package/dist/renderer/assets/ipc-channels-overlays-gIPUFnqc.js +2 -0
- package/dist/renderer/assets/jsx-runtime-DICEQH_0.css +1 -0
- package/dist/renderer/assets/{jsx-runtime-DGLHmmOq.js → jsx-runtime-DIw5wnYl.js} +1 -1
- package/dist/renderer/assets/plus-BQ9u5EbL.js +2 -0
- package/dist/renderer/assets/popover-Cw7G2Ctp.js +2 -0
- package/dist/renderer/assets/presets-DMZOb9ay.js +2 -0
- package/dist/renderer/assets/project-api-YTOr_Yvo.js +2 -0
- package/dist/renderer/assets/{projectCreateDialog-Bbjz75bP.js → projectCreateDialog-BmLqiYxn.js} +2 -2
- package/dist/renderer/assets/search-BMvuYF48.js +2 -0
- package/dist/renderer/assets/select-nFP95TxM.js +2 -0
- package/dist/renderer/assets/settings-CnpVfSWt.js +2 -0
- package/dist/renderer/assets/settings-api-Ccsf-Nsj.js +2 -0
- package/dist/renderer/assets/settings-tab-bar-CAzrv32m.js +2 -0
- package/dist/renderer/assets/smartphone-Bb2GdIKy.js +2 -0
- package/dist/renderer/assets/tabs-CPKN3Mmq.js +2 -0
- package/dist/renderer/assets/{tooltip-B_-_YVbw.js → tooltip-D6AxXRk5.js} +2 -2
- package/dist/renderer/assets/types-Bh0hA7El.js +2 -0
- package/dist/renderer/assets/updateDialog-CwndJ0Bl.js +2 -0
- package/dist/renderer/assets/{utils-kfQov6Pa.js → utils-sEB5OZEQ.js} +2 -2
- package/dist/renderer/assets/view-api-B-2zPBR5.js +2 -0
- package/dist/renderer/assets/view-ids-BfaDVV5P.js +2 -0
- package/dist/renderer/assets/workbench-BLJ0wKsg.js +5 -0
- package/dist/renderer/assets/{workbenchSettings-CV4LVA9b.js → workbenchSettings-YD0Ctbm_.js} +3 -3
- package/dist/renderer/entries/device-picker/index.html +28 -0
- package/dist/renderer/entries/host-sidebar-default/index.html +6 -5
- package/dist/renderer/entries/main/index.html +16 -17
- package/dist/renderer/entries/popover/index.html +16 -10
- package/dist/renderer/entries/project-create-dialog/index.html +12 -12
- package/dist/renderer/entries/settings/index.html +10 -10
- package/dist/renderer/entries/tooltip/index.html +5 -5
- package/dist/renderer/entries/update-dialog/index.html +10 -10
- package/dist/renderer/entries/workbench/index.html +49 -0
- package/dist/renderer/entries/workbench-settings/index.html +12 -11
- package/dist/service-host/host-env-update.cjs +23 -0
- package/dist/service-host/preload.cjs +24 -49
- package/dist/service-host/service-message-queue.cjs +71 -0
- package/dist/service-host/sync-impls/system-info.js +31 -9
- package/dist/shared/compile-mode-state.d.ts +73 -0
- package/dist/shared/compile-mode-state.js +100 -0
- package/dist/shared/compile-modes.d.ts +152 -0
- package/dist/shared/compile-modes.js +237 -0
- package/dist/shared/ipc-channels-overlays.d.ts +8 -2
- package/dist/shared/ipc-channels-overlays.js +19 -2
- package/dist/shared/ipc-channels.d.ts +5 -10
- package/dist/shared/ipc-channels.js +17 -14
- package/dist/shared/ipc-schemas.d.ts +76 -24
- package/dist/shared/ipc-schemas.js +55 -10
- package/dist/shared/project-window-types.d.ts +42 -0
- package/dist/shared/project-window-types.js +2 -0
- package/dist/shared/types.d.ts +43 -17
- package/dist/shared/view-ids.d.ts +1 -0
- package/dist/shared/view-ids.js +3 -1
- package/dist/simulator/assets/bridge-channels-B3JAmRfl.js +2 -0
- package/dist/simulator/assets/device-shell-ATEhHV2_.css +1 -0
- package/dist/simulator/assets/device-shell-pxnZZp10.js +431 -0
- package/dist/simulator/assets/simulator-Dwp7lnvu.js +10 -0
- package/dist/simulator/assets/simulator-mini-app-DFo7fhi5.js +2 -0
- package/dist/simulator/assets/simulator-ui-B2ddJB1R.js +2 -0
- package/dist/simulator/simulator.html +3 -3
- package/dist/simulator/temp-files.d.ts +6 -0
- package/dist/simulator/temp-files.js +46 -4
- package/dist/simulator/types.d.ts +7 -0
- package/dist/vscode-workbench/assets/__vite-browser-external-JIkWewFf.js +1 -0
- package/dist/vscode-workbench/assets/{dist-CMfmHflW.js → dist-CXG-u1VB.js} +3 -3
- package/dist/vscode-workbench/assets/{iconv-lite-umd-Bx8CgaZq.js → iconv-lite-umd-Dxx9Qyb4.js} +1 -1
- package/dist/vscode-workbench/assets/{index-CdG6YWhW.js → index-6VJMsaWj.js} +460 -460
- package/dist/vscode-workbench/assets/{jschardet-M0qgd2lN.js → jschardet-Ba3D16vt.js} +1 -1
- package/dist/vscode-workbench/index.html +1 -1
- package/package.json +11 -8
- package/dist/renderer/assets/button-D5Q2wkXq.js +0 -2
- package/dist/renderer/assets/constants-D7DfVqMp.js +0 -2
- package/dist/renderer/assets/constants-D8zsejFq.js +0 -2
- package/dist/renderer/assets/dialog-e1TecTOY.js +0 -46
- package/dist/renderer/assets/hostSidebarDefault-B3yLfy8j.js +0 -2
- package/dist/renderer/assets/index-CsPD68N_.js +0 -5
- package/dist/renderer/assets/ipc-channels-overlays-LsDzGAtV.js +0 -2
- package/dist/renderer/assets/jsx-runtime-2vXHouwr.css +0 -1
- package/dist/renderer/assets/popover-Dix5cm_b.js +0 -2
- package/dist/renderer/assets/project-api-k7Oq9iaq.js +0 -2
- package/dist/renderer/assets/select-acGb0AmJ.js +0 -2
- package/dist/renderer/assets/settings-CQrTMr43.js +0 -2
- package/dist/renderer/assets/settings-api-CrUQ9rYV.js +0 -2
- package/dist/renderer/assets/settings-tab-bar-Cw1kVIf2.js +0 -2
- package/dist/renderer/assets/types-CsEKtFyr.js +0 -2
- package/dist/renderer/assets/updateDialog-NsF8223A.js +0 -2
- package/dist/renderer/assets/view-api-CLn3rcQE.js +0 -2
- package/dist/simulator/assets/bridge-channels-zhsumfky.js +0 -2
- package/dist/simulator/assets/device-shell-CmtM1QxP.js +0 -2
- package/dist/simulator/assets/device-shell-iFZo1igL.css +0 -1
- package/dist/simulator/assets/simulator-CIobn3Mh.js +0 -10
- package/dist/simulator/assets/simulator-mini-app-CRe6n9br.js +0 -2
- package/dist/simulator/assets/simulator-ui-C_cP602X.js +0 -2
- package/dist/vscode-workbench/assets/__vite-browser-external-Bc1vizTf.js +0 -1
|
@@ -3124,6 +3124,37 @@ var main_exports = {};
|
|
|
3124
3124
|
module.exports = __toCommonJS(main_exports);
|
|
3125
3125
|
var import_electron = require("electron");
|
|
3126
3126
|
|
|
3127
|
+
// ../dimina-electron-runtime/dist/shared/host-env.js
|
|
3128
|
+
function deviceInfoToHostEnv(d) {
|
|
3129
|
+
const insets = d.safeAreaInsets;
|
|
3130
|
+
const windowHeight = Math.max(0, d.screenHeight - insets.top - insets.bottom);
|
|
3131
|
+
const left = insets.left;
|
|
3132
|
+
const right = d.screenWidth - insets.right;
|
|
3133
|
+
return {
|
|
3134
|
+
brand: d.brand,
|
|
3135
|
+
model: d.model,
|
|
3136
|
+
system: d.system,
|
|
3137
|
+
platform: d.platform,
|
|
3138
|
+
pixelRatio: d.pixelRatio,
|
|
3139
|
+
screenWidth: d.screenWidth,
|
|
3140
|
+
screenHeight: d.screenHeight,
|
|
3141
|
+
windowWidth: d.screenWidth,
|
|
3142
|
+
windowHeight,
|
|
3143
|
+
statusBarHeight: d.statusBarHeight,
|
|
3144
|
+
safeAreaInsets: insets,
|
|
3145
|
+
deviceOrientation: d.orientation,
|
|
3146
|
+
safeArea: {
|
|
3147
|
+
left,
|
|
3148
|
+
top: insets.top,
|
|
3149
|
+
right,
|
|
3150
|
+
bottom: d.screenHeight - insets.bottom,
|
|
3151
|
+
width: Math.max(0, right - left),
|
|
3152
|
+
height: windowHeight
|
|
3153
|
+
},
|
|
3154
|
+
screenTop: d.statusBarHeight
|
|
3155
|
+
};
|
|
3156
|
+
}
|
|
3157
|
+
|
|
3127
3158
|
// ../dimina-electron-runtime/dist/shared/bridge-channels.js
|
|
3128
3159
|
var BRIDGE_CHANNELS = {
|
|
3129
3160
|
SPAWN: "dmb:spawn",
|
|
@@ -3574,19 +3605,46 @@ function resolveVPath(url) {
|
|
|
3574
3605
|
}
|
|
3575
3606
|
|
|
3576
3607
|
// src/simulator/temp-files.ts
|
|
3608
|
+
var MAX_TEMP_FILE_ENTRIES = 200;
|
|
3577
3609
|
var tempFiles = /* @__PURE__ */ new Map();
|
|
3578
3610
|
var activeSink = null;
|
|
3611
|
+
function rememberTempFile(path2, blob) {
|
|
3612
|
+
tempFiles.set(path2, blob);
|
|
3613
|
+
while (tempFiles.size > MAX_TEMP_FILE_ENTRIES) {
|
|
3614
|
+
const oldest = tempFiles.keys().next();
|
|
3615
|
+
if (oldest.done) break;
|
|
3616
|
+
tempFiles.delete(oldest.value);
|
|
3617
|
+
}
|
|
3618
|
+
}
|
|
3579
3619
|
function cryptoRandomId() {
|
|
3580
3620
|
const c = globalThis.crypto;
|
|
3581
3621
|
if (c && typeof c.randomUUID === "function") return c.randomUUID();
|
|
3582
3622
|
return `${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
3583
3623
|
}
|
|
3584
|
-
function
|
|
3624
|
+
function allocateTempFilePath(blob) {
|
|
3585
3625
|
const path2 = `difile://_tmp/${cryptoRandomId()}`;
|
|
3586
|
-
|
|
3626
|
+
rememberTempFile(path2, blob);
|
|
3627
|
+
return path2;
|
|
3628
|
+
}
|
|
3629
|
+
function createTempFilePath(blob) {
|
|
3630
|
+
const path2 = allocateTempFilePath(blob);
|
|
3587
3631
|
activeSink?.write(path2, blob);
|
|
3588
3632
|
return path2;
|
|
3589
3633
|
}
|
|
3634
|
+
async function createTempFilePathAsync(blob) {
|
|
3635
|
+
const path2 = allocateTempFilePath(blob);
|
|
3636
|
+
try {
|
|
3637
|
+
if (activeSink?.writeAndWait) {
|
|
3638
|
+
await activeSink.writeAndWait(path2, blob);
|
|
3639
|
+
} else {
|
|
3640
|
+
activeSink?.write(path2, blob);
|
|
3641
|
+
}
|
|
3642
|
+
} catch (error) {
|
|
3643
|
+
tempFiles.delete(path2);
|
|
3644
|
+
throw error;
|
|
3645
|
+
}
|
|
3646
|
+
return path2;
|
|
3647
|
+
}
|
|
3590
3648
|
async function resolveTempFilePath(path2) {
|
|
3591
3649
|
const cached = tempFiles.get(path2);
|
|
3592
3650
|
if (cached) return cached;
|
|
@@ -3595,7 +3653,7 @@ async function resolveTempFilePath(path2) {
|
|
|
3595
3653
|
throw new Error(`\u65E0\u6CD5\u8BFB\u53D6\u6587\u4EF6 ${path2}`);
|
|
3596
3654
|
}
|
|
3597
3655
|
const blob = await response.blob();
|
|
3598
|
-
|
|
3656
|
+
rememberTempFile(path2, blob);
|
|
3599
3657
|
return blob;
|
|
3600
3658
|
}
|
|
3601
3659
|
function getTempFileName(path2, blob, fallback = "file") {
|
|
@@ -4299,6 +4357,112 @@ function compressImage({ src, quality = 80, success, fail, complete }) {
|
|
|
4299
4357
|
};
|
|
4300
4358
|
img.src = src;
|
|
4301
4359
|
}
|
|
4360
|
+
var MAX_CANVAS_IMAGE_BYTES = 32 * 1024 * 1024;
|
|
4361
|
+
var MAX_CANVAS_BASE64_CHARS = Math.floor(MAX_CANVAS_IMAGE_BYTES * 4 / 3) + 8;
|
|
4362
|
+
var PNG_SIGNATURE = [137, 80, 78, 71, 13, 10, 26, 10];
|
|
4363
|
+
function matchesImageType(bytes, fileType) {
|
|
4364
|
+
if (fileType === "png") {
|
|
4365
|
+
return bytes.length >= PNG_SIGNATURE.length && PNG_SIGNATURE.every((byte, i) => bytes[i] === byte);
|
|
4366
|
+
}
|
|
4367
|
+
return bytes.length >= 3 && bytes[0] === 255 && bytes[1] === 216 && bytes[2] === 255;
|
|
4368
|
+
}
|
|
4369
|
+
var CANVAS_DATA_URL_PREFIX = /^data:image\/(png|jpeg|jpg);base64,/;
|
|
4370
|
+
var STRICT_BASE64 = /^[A-Za-z0-9+/]*={0,2}$/;
|
|
4371
|
+
var SAFE_CANVAS_APP_ID = /^[A-Za-z0-9._-]+$/;
|
|
4372
|
+
function isValidCanvasAppId(appId) {
|
|
4373
|
+
return typeof appId === "string" && SAFE_CANVAS_APP_ID.test(appId) && appId !== "." && appId !== "..";
|
|
4374
|
+
}
|
|
4375
|
+
function readCanvasDataURL(dataURL, fileType, appId) {
|
|
4376
|
+
if (!dataURL || typeof dataURL !== "string") return { reason: "dataURL is required" };
|
|
4377
|
+
if (fileType !== "png" && fileType !== "jpg") return { reason: "invalid file type" };
|
|
4378
|
+
if (!isValidCanvasAppId(appId)) return { reason: "invalid appId" };
|
|
4379
|
+
const prefix = CANVAS_DATA_URL_PREFIX.exec(dataURL);
|
|
4380
|
+
if (dataURL.startsWith("data:") && !prefix) return { reason: "invalid dataURL" };
|
|
4381
|
+
const declaredType = prefix?.[1];
|
|
4382
|
+
if (declaredType && declaredType !== fileType && !(declaredType === "jpeg" && fileType === "jpg")) {
|
|
4383
|
+
return { reason: "file type mismatch" };
|
|
4384
|
+
}
|
|
4385
|
+
return { base64Data: prefix ? dataURL.slice(prefix[0].length) : dataURL, fileType };
|
|
4386
|
+
}
|
|
4387
|
+
function isStrictBase64(base64Data) {
|
|
4388
|
+
return !!base64Data && base64Data.length % 4 === 0 && STRICT_BASE64.test(base64Data);
|
|
4389
|
+
}
|
|
4390
|
+
var MAX_IN_FLIGHT_CANVAS_EXPORTS = 2;
|
|
4391
|
+
var MAX_PENDING_CANVAS_BASE64_CHARS = MAX_IN_FLIGHT_CANVAS_EXPORTS * MAX_CANVAS_BASE64_CHARS;
|
|
4392
|
+
var pendingCanvasExports = /* @__PURE__ */ new Map();
|
|
4393
|
+
function reserveCanvasExport(appId, chars) {
|
|
4394
|
+
const state = pendingCanvasExports.get(appId) ?? { count: 0, chars: 0 };
|
|
4395
|
+
if (state.count >= MAX_IN_FLIGHT_CANVAS_EXPORTS) return false;
|
|
4396
|
+
if (state.chars + chars > MAX_PENDING_CANVAS_BASE64_CHARS) return false;
|
|
4397
|
+
state.count += 1;
|
|
4398
|
+
state.chars += chars;
|
|
4399
|
+
pendingCanvasExports.set(appId, state);
|
|
4400
|
+
return true;
|
|
4401
|
+
}
|
|
4402
|
+
function releaseCanvasExport(appId, chars) {
|
|
4403
|
+
const state = pendingCanvasExports.get(appId);
|
|
4404
|
+
if (!state) return;
|
|
4405
|
+
state.count -= 1;
|
|
4406
|
+
state.chars -= chars;
|
|
4407
|
+
if (state.count <= 0) pendingCanvasExports.delete(appId);
|
|
4408
|
+
}
|
|
4409
|
+
function decodeCanvasBytes(base64Data, fileType) {
|
|
4410
|
+
let bytes;
|
|
4411
|
+
try {
|
|
4412
|
+
const byteChars = atob(base64Data);
|
|
4413
|
+
bytes = new Uint8Array(byteChars.length);
|
|
4414
|
+
for (let i = 0; i < byteChars.length; i++) {
|
|
4415
|
+
bytes[i] = byteChars.charCodeAt(i);
|
|
4416
|
+
}
|
|
4417
|
+
} catch {
|
|
4418
|
+
return { reason: "base64 decode failed" };
|
|
4419
|
+
}
|
|
4420
|
+
if (bytes.length > MAX_CANVAS_IMAGE_BYTES) return { reason: "data too large" };
|
|
4421
|
+
if (!matchesImageType(bytes, fileType)) return { reason: "invalid image data" };
|
|
4422
|
+
return { blob: new Blob([bytes], { type: fileType === "jpg" ? "image/jpeg" : "image/png" }) };
|
|
4423
|
+
}
|
|
4424
|
+
async function saveCanvasTempFile({ dataURL, fileType = "png", success, fail, complete }) {
|
|
4425
|
+
const { onSuccess, onFail, onComplete } = bindCallbacks(this, { success, fail, complete });
|
|
4426
|
+
const failWith = (reason) => {
|
|
4427
|
+
const result = { errMsg: `canvasToTempFilePath:fail ${reason}` };
|
|
4428
|
+
onFail?.(result);
|
|
4429
|
+
onComplete?.(result);
|
|
4430
|
+
};
|
|
4431
|
+
const head = readCanvasDataURL(dataURL, fileType, this.appId);
|
|
4432
|
+
if ("reason" in head) {
|
|
4433
|
+
failWith(head.reason);
|
|
4434
|
+
return;
|
|
4435
|
+
}
|
|
4436
|
+
const { base64Data, fileType: imageType } = head;
|
|
4437
|
+
if (base64Data.length > MAX_CANVAS_BASE64_CHARS) {
|
|
4438
|
+
failWith("data too large");
|
|
4439
|
+
return;
|
|
4440
|
+
}
|
|
4441
|
+
if (!isStrictBase64(base64Data)) {
|
|
4442
|
+
failWith("base64 decode failed");
|
|
4443
|
+
return;
|
|
4444
|
+
}
|
|
4445
|
+
if (!reserveCanvasExport(this.appId, base64Data.length)) {
|
|
4446
|
+
failWith("too many pending exports");
|
|
4447
|
+
return;
|
|
4448
|
+
}
|
|
4449
|
+
try {
|
|
4450
|
+
const decoded = decodeCanvasBytes(base64Data, imageType);
|
|
4451
|
+
if ("reason" in decoded) {
|
|
4452
|
+
failWith(decoded.reason);
|
|
4453
|
+
return;
|
|
4454
|
+
}
|
|
4455
|
+
const tempFilePath = await createTempFilePathAsync(decoded.blob);
|
|
4456
|
+
const result = { tempFilePath, errMsg: "canvasToTempFilePath:ok" };
|
|
4457
|
+
onSuccess?.(result);
|
|
4458
|
+
onComplete?.(result);
|
|
4459
|
+
} catch (error) {
|
|
4460
|
+
console.warn("[simulator] canvas temp file write failed", error);
|
|
4461
|
+
failWith("write failed");
|
|
4462
|
+
} finally {
|
|
4463
|
+
releaseCanvasExport(this.appId, base64Data.length);
|
|
4464
|
+
}
|
|
4465
|
+
}
|
|
4302
4466
|
function saveImageToPhotosAlbum({ filePath, success, fail, complete }) {
|
|
4303
4467
|
const { onSuccess, onFail, onComplete } = bindCallbacks(this, { success, fail, complete });
|
|
4304
4468
|
const triggerDownload = (href) => {
|
|
@@ -5160,11 +5324,12 @@ function getWindowInfo({ success, complete } = {}) {
|
|
|
5160
5324
|
}
|
|
5161
5325
|
function getSystemSetting({ success, complete } = {}) {
|
|
5162
5326
|
const { onSuccess, onComplete } = bindCallbacks(this, { success, complete });
|
|
5327
|
+
const device = this.getCurrentDevice?.();
|
|
5163
5328
|
const info = {
|
|
5164
5329
|
bluetoothEnabled: false,
|
|
5165
5330
|
locationEnabled: true,
|
|
5166
5331
|
wifiEnabled: true,
|
|
5167
|
-
deviceOrientation: "portrait"
|
|
5332
|
+
deviceOrientation: device && deviceInfoToHostEnv(device).deviceOrientation || "portrait"
|
|
5168
5333
|
};
|
|
5169
5334
|
onSuccess?.(info);
|
|
5170
5335
|
onComplete?.();
|
|
@@ -5186,6 +5351,17 @@ function readWindowMetrics(miniApp) {
|
|
|
5186
5351
|
};
|
|
5187
5352
|
}
|
|
5188
5353
|
function buildSystemInfo(miniApp) {
|
|
5354
|
+
const device = miniApp.getCurrentDevice?.();
|
|
5355
|
+
if (device) {
|
|
5356
|
+
return {
|
|
5357
|
+
...deviceInfoToHostEnv(device),
|
|
5358
|
+
language: "zh_CN",
|
|
5359
|
+
version: "8.0.5",
|
|
5360
|
+
SDKVersion: "3.0.0",
|
|
5361
|
+
fontSizeSetting: 16,
|
|
5362
|
+
theme: window.matchMedia?.("(prefers-color-scheme: dark)").matches ? "dark" : "light"
|
|
5363
|
+
};
|
|
5364
|
+
}
|
|
5189
5365
|
const { wb, di, dev, pixelRatio, screenWidth, screenHeight, windowWidth, windowHeight } = readWindowMetrics(miniApp);
|
|
5190
5366
|
const statusBarHeight = di["statusBarHeight"] ?? dev?.statusBarHeight ?? 0;
|
|
5191
5367
|
const bottomInset = di["safeAreaInsets"]?.bottom ?? dev?.safeAreaInsets?.bottom ?? 0;
|
|
@@ -5286,6 +5462,7 @@ var simulatorApis = {
|
|
|
5286
5462
|
previewImage,
|
|
5287
5463
|
compressImage,
|
|
5288
5464
|
saveImageToPhotosAlbum,
|
|
5465
|
+
saveCanvasTempFile,
|
|
5289
5466
|
getImageInfo,
|
|
5290
5467
|
// Media: Video
|
|
5291
5468
|
chooseMedia,
|