lepusa

MoonBit-native desktop application framework research and implementation.

desktop
webview
framework
native
moon add vectie/lepusa@0.1.6
Download zip
Author
Version
0.1.6
License
Apache-2.0
Last updated
14 days ago
Downloads
184

Dependencies

README

#Lepusa

Lepusa is a standalone MoonBit desktop application framework.

The core decision is to build a MoonBit-owned, Tauri-shaped framework on top of system WebViews, with an app-authoring style close to Rabbita. Tauri and Lepus are references to learn from, not runtime layers that app authors must carry.

Start with:

#Intended Shape

MoonBit app code -> Rabbita-style Lepusa app syntax -> typed command + event IPC -> capability-scoped platform plugins -> system WebView runtime -> platform bundles for macOS, Windows, and Linux

The first implementation slice already owns the public MoonBit foundation:

  • Rabbita-style cell_with_emit and new(cell) app construction
  • @lepusa/ui HTML helpers plus UiProgram model/update/view state flow for compact MoonBit-authored desktop views
  • WindowConfig, Source, Plugin, Capability, Cmd, Event, and typed IPC request/response contracts
  • ProjectManifest validation plus LaunchPlan, RuntimePlan, and BundlePlan generation as the boundaries native runtime and platform bundler code will consume next
  • @lepusa/project parsing for standalone lepusa.json app manifests, including official plugin expansion and capability-scoped command routing
  • @lepusa/bundle native bundle materialization from BundlePlan without coupling build tools to CLI internals
  • @lepusa/scaffold app and plugin skeleton generation for ecosystem tooling without shelling through lepusa init
  • @lepusa/desktop app-facing official plugin kit that keeps plugin declarations, capability grants, and runtime command handlers in sync
  • @lepusa/runtime host/session snapshots that native WebView backends can consume without reinterpreting app configuration
  • @lepusa/runtime.NativeRuntime as the single native-loop facade over backend bootstrap, asset protocol responses, IPC dispatch, and lifecycle steps
  • @lepusa/runtime.NativeOperationExecutor as the shared execution boundary for startup, lifecycle, and bridge-drain operations that platform loops must map to WebView evaluation, navigation, effects, and service work

The common authoring path is intentionally small:

///|
fn main {
let (emit, cell) = @lepusa.cell_with_emit(model=init_model(), update~, view=(
emit,
model,
) => render_app(emit, model))
let app = @lepusa.new(cell)
.with_startup(load_initial_state(emit))
.on_shutdown(persist_state(emit))
.window(title="Hello Lepusa", width=1000, height=720)
match app.launch_plan() {
Ok(plan) => boot_native_runtime(plan)
Err(problems) => fail_fast(problems)
}
}

The optional @lepusa/ui package supplies concise view helpers while still returning root @lepusa.Html values:

///|
fn render_app(emit, model) {
@ui.main_([
@ui.h1([@ui.text("Counter")]),
@ui.p([@ui.text("Count: \{model.count}")], attrs=[@ui.class_name("metric")]),
@ui.p([@ui.text("Starting")], attrs=[@ui.id("status")]),
@ui.button("Increment", attrs=[@ui.on_click("counter.increment")]),
@ui.text_listener("ready", "#status"),
])
}

For backend and packaging work, the app model can be lowered without pulling in product-specific code:

///|
let runtime = app.runtime_plan(config=@lepusa.RuntimeConfig::system_webview())

///|
let bundle = @lepusa.BundleConfig::new(
@lepusa.AppMetadata::new(
identifier="dev.example.app",
product_name="Example App",
version="0.1.0",
),
)

For official desktop APIs, @lepusa/desktop.DesktopProject wires the framework parts together:

///|
let project = @desktop.DesktopProject::new(metadata, root)
.window(title="Desk", source=@lepusa.Source::html("<main></main>"))
.with_sync_plugins()

///|
let host = project.runtime_host().unwrap()

///|
let bundle = project.bundle_plan(target=@lepusa.MacOS).unwrap()

For programmatic project configuration, use ProjectManifest:

///|
let manifest = @lepusa.ProjectManifest::new(metadata)
.with_window(
@lepusa.WindowConfig::new(source=@lepusa.Source::packaged("dist")),
)
.with_plugin(@lepusa.Plugin::new("core").command_sync("invoke"))
.with_capability(
@lepusa.Capability::new("main").window("main").command("core.invoke"),
)

///|
let runtime = manifest.runtime_plan(root)

///|
let bundle = manifest.bundle_plan(root, target=@lepusa.MacOS)

For file-backed apps, @lepusa/project owns reusable lepusa.json loading and parsing:

///|
match @project.ProjectConfig::load("lepusa.json") {
Ok(project) =>
project.manifest().runtime_plan(project.root())
Err(problems) =>
fail_fast(problems)
}

#CLI

The native CLI is intentionally small while the runtime backend is being built:

moon run cmd/main --target native -- doctor linux moon run cmd/main --target native -- plan moon run cmd/main --target native -- manifest moon run cmd/main --target native -- native-plan macos moon run cmd/main --target native -- launch-session linux moon run cmd/main --target native -- launch-session linux --async-bridge moon run cmd/main --target native -- run linux --project examples/gateway/lepusa.json moon run cmd/main --target native -- run linux --json --project examples/gateway/lepusa.json moon run cmd/main --target native -- verify linux --project examples/static/lepusa.json moon run cmd/main --target native -- verify linux --strict --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- run macos --launch --project examples/static/lepusa.json moon run cmd/main --target native -- bridge moon run cmd/main --target native -- dev moon run cmd/main --target native -- init _build/lepusa-app moon run cmd/main --target native -- init _build/lepusa-app --workspace /Users/kq/Workspace/lepusa moon run cmd/main --target native -- plan --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- manifest --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- native-plan linux --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- launch-session linux --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- dev --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- asset lepusa://rabbita/main/index.html --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- lifecycle app-will-exit --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- bridge-task main log.write '{"message":"ready"}' --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- bridge-handoff main log.write '{"message":"ready"}' --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- bridge-complete main fs.readText '{"scope":"data","path":"note.txt"}' --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- bridge-dispatch main log.write '{"message":"ready"}' --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- bridge-loop main fs.readText '{"scope":"data","path":"note.txt"}' --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- bridge-drain main fs.readText '{"scope":"data","path":"note.txt"}' --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- plugin new file-dialog _build/lepusa-plugin-file-dialog moon run cmd/main --target native -- plugin new file-dialog _build/lepusa-plugin-file-dialog --workspace /Users/kq/Workspace/lepusa moon run cmd/main --target native -- bundle-plan macos moon run cmd/main --target native -- bundle-plan macos --json moon run cmd/main --target native -- bundle-write linux _build/lepusa-bundle --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- bundle-inspect _build/lepusa-bundle/lepusa-app/lepusa/distribution.json moon run cmd/main --target native -- bundle-release-plan _build/lepusa-bundle/lepusa-app/lepusa/distribution.json --json moon run cmd/main --target native -- bundle-release-write _build/lepusa-bundle/lepusa-app/lepusa/distribution.json _build/lepusa-release moon run cmd/main --target native -- bundle-package-plan _build/lepusa-bundle/lepusa-app/lepusa/distribution.json --json moon run cmd/main --target native -- bundle-package-write _build/lepusa-bundle/lepusa-app/lepusa/distribution.json _build/lepusa-package moon run cmd/main --target native -- bundle-install-smoke-plan _build/lepusa-bundle/lepusa-app/lepusa/distribution.json /Applications moon run cmd/main --target native -- bundle-install-smoke-write _build/lepusa-bundle/lepusa-app/lepusa/distribution.json _build/lepusa-install-smoke /Applications moon run cmd/main --target native -- publish-plan linux --project examples/static/lepusa.json moon run cmd/main --target native -- publish-plan linux --project examples/static/lepusa.json --json moon run cmd/runtime --target native -- --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- run --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- launch --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- bootstrap --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- launch-session --async-bridge --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- asset lepusa://packaged/main/index.html --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- lifecycle app-started --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- bridge-task main log.write '{"message":"ready"}' --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- bridge-handoff main log.write '{"message":"ready"}' --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- bridge-complete main fs.readText '{"scope":"data","path":"note.txt"}' --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- bridge-dispatch main log.write '{"message":"ready"}' --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- bridge-loop main fs.readText '{"scope":"data","path":"note.txt"}' --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- bridge-drain main fs.readText '{"scope":"data","path":"note.txt"}' --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- invoke main log.write '{"message":"ready"}' --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/main --target native -- build macos _build/lepusa-build --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- bundle windows _build/lepusa-bundle-win

macOS disk-image packaging stages the application with an Applications shortcut, giving users the familiar drag-to-Applications installation flow.

These commands exercise the public planning contracts and give the native runtime and bundler work concrete outputs to consume.

lepusa doctor [macos|windows|linux] checks the portable runtime and bundle plans, reports the selected target's native launch gate and signing prerequisites, and reports host WebView availability for the platform backend descriptors: WKWebView on macOS, WebView2 on Windows, and WebKitGTK on Linux. It also runs the materialization-independent bundle contract checks over the generated runtime and distribution manifests, including packaged bridge dispatch smoke for safe built-in sync routes. It also prints typed backend preflight lines that separate host dependency availability, WebView creation loops, sync bridge response evaluation, and async bridge drain support. The underlying NativeBackendPreflight JSON classifies the active blocker as dependency, webview-creation, or none, and carries separate dependency, WebView creation, sync bridge evaluation, and async bridge drain problem fields for tooling. Passing --json emits one machine-readable health report with runtime, manifest, handler coverage, bundle, bundle contract, native launch, signing, and platform preflight sections. Passing --strict turns the aggregate health report into a CI gate: missing handlers, release-readiness issues, or selected-target native launch blockers make doctor exit with failure.

lepusa plan includes resolved WebView load URLs, so backend work can consume RuntimePlan::windows() directly.

lepusa launch-session and lepusa-runtime launch-session emit a target-aware native-loop readiness envelope. Its session field carries the WebViews, protocol assets, lifecycle actions, service supervision, bridge scheduling, the async bridge executor descriptor, and the bridgeLoop adapter, delivery, and drain contract. The envelope also records requestedBridgeMode, effectiveBridgeMode, and bridgeModeGranted, then reports backend capability through launchCapability, backendPreflight, targetCanLaunch, and targetLaunchBlocker. Passing --async-bridge records an async-capable request; platforms with packetized drain support keep that effective mode, report bridgeModeGranted: true, and expose a drainStrategy of event-loop. The target launch blocker includes the backend's concrete asyncBridgeDrainMessage, so dependency or creation-loop failures stay separate from bridge scheduler readiness. Async-capable sessions advertise a packetized event-loop drain: the native message handler may queue deferred work synchronously, then the host loop asks MoonBit for a lepusa-ops-v3 drain packet and evaluates completion scripts after leaving the WebView callback. Platform runners now lower the first WebView from that session through NativeWebViewLaunchContext, which keeps the native byte packet together with the scheduler, async executor, and bridgeLoop contract the backend must honor. Launch capability also carries the backend's maximum live WebView count. Current macOS, Linux, and Windows native loops advertise no hard cap and consume open-window packets through the same labeled WebView creation boundary used for static multi-window startup and later dynamic windows.

Generated bridges only expose command routes granted to the current window by capabilities. RuntimePlan::command_routes() still reports all declared plugin routes for metadata and bundling. Capability grants can also name origins and platforms; platform-scoped commands are authorized against RuntimeConfig.platform and appear in runtime manifests for native diagnostics.

Lifecycle hooks lower to the same backend action model as startup commands, so platform backends can handle shutdown and window-close events without reading application construction state.

When a window omits source, App lowers the root Cell into a generated Rabbita-style HTML document served from the runtime manifest as a virtual file.

@lepusa/scaffold.write_app writes a standalone MoonBit project skeleton with a versioned vectie/lepusa module dependency. It is intentionally small: moon.mod, lepusa.json, src/moon.pkg, src/main.mbt, and README.mbt.md. The generated src/main.mbt starts with the current @lepusa/ui.UiProgram model/update/view flow and wraps it in @lepusa/desktop.DesktopProject, so custom UI handlers, official desktop plugins, capabilities, runtime hosts, and bundle plans are derived from one project boundary. It uses the @lepusa/desktop sync-safe official plugin profile by default, so the generated MoonBit app stays launchable on native loops that do not yet support deferred async bridge scheduling. write_app_with_workspace also writes a moon.work file pointing at a local Lepusa checkout, which lets new apps compile against this repository before the framework is published to the MoonBit registry. lepusa init is the CLI wrapper over that package:

moon run cmd/main --target native -- init _build/lepusa-app --workspace /Users/kq/Workspace/lepusa

lepusa.json is the app-neutral project boundary. It describes metadata, runtime backend, windows, plugin command routes, command permission requirements, capability grants, bundle icon resources, and bundle signing prerequisites. Native CLI commands consume the nearest lepusa.json from the current directory, or a file passed with --project. The reusable parser lives in @lepusa/project, so tools can consume the same project contract without depending on the CLI binary. File paths in lepusa.json, including icons, packaged asset roots, local asset roots, and filesystem scopes, are resolved relative to the config file. Official plugins can be declared by name, for example { "name": "autoLaunch" }, { "name": "clipboard" }, { "name": "deepLink" }, { "name": "dialog" }, { "name": "fileDialog" }, { "name": "localhost" }, { "name": "notification" }, { "name": "log" }, { "name": "opener" }, { "name": "process" }, { "name": "serviceDiscovery" }, { "name": "shell" }, { "name": "singleInstance" }, { "name": "store" }, { "name": "tray" }, { "name": "updater" }, { "name": "window" }, { "name": "windowState" }, or { "name": "fs" }; Lepusa expands those declarations to the package's official command contract. Custom plugins can still provide an explicit commands array. Projects can also declare filesystemScopes, named roots that are carried into runtime sessions and native launch manifests for backend enforcement. It also describes runtime behavior through startup and lifecycle commands: effect, emit, navigate, and batch map directly to the portable RuntimeAction model consumed by native backends. When a project declares official log, store, fs, opener, process, localhost, serviceDiscovery, or windowState plugins, the CLI binds their MoonBit-native handlers into the project RuntimeHost without adding moon-suite-specific behavior. fs handlers run through the async command registry and are constrained by named filesystemScopes. process.info, process.cwd, process.env, and process.setEnv are portable handlers; process.exit remains a declared route for backend-owned termination policy.

The examples/ directory contains checked project manifests for the three foundation app shapes: Rabbita-style MoonBit UI, packaged static assets, and a localhost gateway with sidecar/readiness metadata.

@lepusa/scaffold.write_plugin writes a standalone plugin skeleton with plugin metadata, native command registration, and a scoped capability helper. write_plugin_with_workspace mirrors the same local moon.work support for plugin authors. lepusa plugin new is the CLI wrapper over that package:

moon run cmd/main --target native -- plugin new file-dialog _build/lepusa-plugin-file-dialog --workspace /Users/kq/Workspace/lepusa

BundlePlan::runtime_dependencies() and BundlePlan::signing_prerequisites() expose target-specific distribution requirements for macOS, Windows, and Linux. Windows plans explicitly carry both the Microsoft Edge WebView2 Runtime requirement and the WebView2Loader.dll placement expected beside lepusa-runtime.exe, so future installer generation can consume one bundle contract without a wrapper layer.

BundlePlan::resources() exposes planned bundle resource mappings such as the application icon. The generated bundle runtime file includes these mappings under resources, and @lepusa/bundle.write_plan copies them as file data next to generated bundle files without re-reading project configuration. lepusa bundle-write is a thin CLI wrapper over that package.

Projects can also declare portable runtime assets and sidecar executables in lepusa.json. Non-executable entries are placed in the target's shared resource directory; executable entries are placed beside lepusa-runtime, retain executable permissions, and are available to local-service commands on PATH:

{ "bundleResources": [ { "source": "public", "path": "public" }, { "source": "_build/native/release/build/cmd/server/server.exe", "path": "local-server", "executable": true } ] }

Generated launchers expose LEPUSA_APP_DIR, LEPUSA_RESOURCE_DIR, and LEPUSA_APP_DATA_DIR, prepend the bundled executable directory to PATH, and launch from the shared resource directory. This keeps application resources read-only while giving sidecars a stable per-user data location.

Projects can also declare portable runtime assets and sidecar executables in lepusa.json. Non-executable entries are placed in the target's shared resource directory; executable entries are placed beside lepusa-runtime, retain executable permissions, and are available to local-service commands on PATH:

{ "bundleResources": [ { "source": "public", "path": "public" }, { "source": "_build/native/release/build/cmd/server/server.exe", "path": "local-server", "executable": true } ] }

Generated launchers expose LEPUSA_APP_DIR, LEPUSA_RESOURCE_DIR, and LEPUSA_APP_DATA_DIR, prepend the bundled executable directory to PATH, and launch from the shared resource directory. This keeps application resources read-only while giving sidecars a stable per-user data location.

@lepusa/plugins/log is the first official plugin package. It declares log.write, provides scoped capability helpers, and can register a command handler backed by an in-memory LogBuffer:

///|
let buffer = @log.LogBuffer::new()

///|
let registry = @log.registry(buffer~)

///|
let app = @lepusa.new(root)
.with_plugin(@log.plugin())
.with_capability(@log.capability_for_window("main"))

@lepusa/plugins/store follows the same shape for scoped key-value state. It declares store.get, store.set, store.delete, store.clear, and store.keys, backed by a MoonBit Store.

@lepusa/plugins/fs defines the official filesystem command contract and scoped path policy. It declares async routes such as fs.readText, fs.writeText, fs.list, and fs.metadata, plus split read/write capability helpers. The package validates named scopes and relative paths and provides MoonBit handlers for scoped text, bytes, list, metadata, delete, exists, and directory creation operations. Core FileSystemScope values carry named roots through ProjectManifest, RuntimePlan, RuntimeSession, and RuntimeLaunchManifest.

@lepusa/plugins/file_dialog defines file picker routes such as fileDialog.openFile and fileDialog.saveFile, plus scoped default-directory policy that points dialogs at declared filesystem scopes without widening core filesystem access. Its portable registry validates picker payloads and returns delegated open/save contracts, while native_registry opens host pickers through macOS osascript, Linux zenity, or Windows PowerShell/WinForms with the same MoonBit-side validation and scope resolution.

@lepusa/plugins/localhost defines local service lifecycle routes such as localhost.status, localhost.start, localhost.stop, and localhost.waitUntilReady, plus service metadata policy. LocalService and LocalServiceSupervisorPlan provide the shared start, readiness, and shutdown handoff. Its portable registry reports configured services and delegated lifecycle actions; native backends own process execution and HTTP probing.

@lepusa/plugins/deep_link defines app URL scheme routes such as deepLink.getInitialUrls, deepLink.onOpenUrl, and deepLink.openUrl, plus scheme/host policy metadata. Its portable sync registry reports initial URLs, records delegated registration/open requests, and validates scheme/host policy; native backends own OS registration and dispatch.

@lepusa/plugins/single_instance defines app lock and launch handoff routes such as singleInstance.acquire, singleInstance.focus, and singleInstance.onSecondLaunch, plus instance-key policy metadata. Its portable sync registry tracks primary/secondary launch state and focus requests; native backends own cross-process locking and platform window activation.

@lepusa/plugins/tray defines system tray routes such as tray.setIcon, tray.setMenu, tray.setVisible, and tray.onMenuItemClick, plus menu item policy metadata. Its portable registry validates and tracks icon, tooltip, menu, visibility, and destroy state through sync handlers, then delegates status icon creation and OS menu behavior to native backends.

@lepusa/plugins/window defines window routes such as window.open, window.close, window.focus, window.minimize, window.maximize, window.setTitle, window.setSize, and window.setFullscreen. Its portable registry validates dynamic open payloads and records sync control operations for the target window; native backends own the actual WebView/window-manager calls.

@lepusa/plugins/auto_launch defines launch-at-login routes such as autoLaunch.status, autoLaunch.enable, autoLaunch.disable, and autoLaunch.setEnabled, plus startup registration policy metadata. Its portable sync registry validates startup metadata and tracks desired enablement state. Its native registry writes macOS LaunchAgents, Linux autostart desktop entries, or Windows HKCU Run values when the runtime supplies an executable path.

@lepusa/plugins/window_state defines window persistence routes such as windowState.save, windowState.restore, and windowState.clear, plus window-label policy metadata. The portable registry stores state in the current runtime process for windowState.save/set, windowState.restore/get, and windowState.clear; WindowStateFileStore gives native runtimes a durable file-backed registry once platform loops capture geometry and visibility.

@lepusa/plugins/updater defines update lifecycle routes such as updater.check, updater.download, updater.install, and updater.downloadAndInstall, plus feed/channel policy metadata. Its portable registry validates update policy and tracks delegated check, download, install, and restart lifecycle state; native backends own feed retrieval, signature verification, installation, and restart.

@lepusa/plugins/service_discovery defines service lookup and status routes such as serviceDiscovery.list, serviceDiscovery.resolve, serviceDiscovery.status, and serviceDiscovery.onServiceChanged, plus endpoint policy metadata. Its portable registry lists, resolves, and reports configured endpoints, including endpoints derived from local services; native backends own resolver integration, health checks, and change watching.

@lepusa/plugins/dialog defines platform-neutral dialog routes: dialog.message, dialog.confirm, and dialog.prompt. Its portable registry validates payloads and returns deterministic runtime-owned responses; native backends own the actual OS dialog implementation.

@lepusa/plugins/clipboard provides sync text clipboard handlers backed by native system clipboard stubs for desktop runtimes, plus an in-process ClipboardStore for deterministic tests. @lepusa/plugins/notification provides sync permission and show handlers backed by macOS/Linux native delivery when available, plus an in-process NotificationCenter for deterministic tests and fallback hosts.

@lepusa/plugins/opener declares platform-neutral URL and path opener routes: opener.openUrl, opener.openPath, and opener.revealPath. Its portable registry validates payloads and calls the platform opener through native stubs (open, xdg-open, or ShellExecute/explorer), returning launch status without holding product-specific state.

@lepusa/plugins/shell declares explicit shell execution and process lifecycle routes. Its portable registry validates commands against an optional allow-list and tracks delegated spawned process state, stdin writes, and kill requests; native backends own actual OS execution and platform-specific restrictions.

@lepusa/plugins/process declares process metadata, environment, and control routes behind split process.info, process.environment, and process.control permissions. The portable sync registry implements process metadata, current-directory, and environment handlers; native backends own process termination policy.

@lepusa/plugins/catalog centralizes official plugin lookup for framework tooling. Project parsing uses it to expand name-only official plugin declarations and bind MoonBit handlers where they exist, including scoped async filesystem handlers and portable sync process, localhost, service-discovery, deep-link, single-instance, tray, auto-launch, window, and window-state handlers.

lepusa manifest emits the portable native-runner JSON from RuntimeHost::launch_manifest(): WebView boot data, bridge hook names, document-start scripts, protocol mappings, inline virtual files with MIME types, declared command routes, and registered native routes.

lepusa native-plan [macos|windows|linux] emits the selected backend's NativeRunnerPlan::bootstrap_json(), including the portable runtime manifest, per-window WebView specs, startup operations, and prelowered lifecycle operations that a platform runner needs. The bootstrap also includes bridgeScheduler, the shared sync-only/async-capable launch policy derived from registered bridge routes.

lepusa launch-session [macos|windows|linux] prepares the selected backend and emits a readiness envelope around the same canonical NativeLaunchSession shape used by packaged runtime manifests: concrete WebView launch plans, executable operations, bridge scheduler policy, async bridge executor metadata, service supervisor plan, requested versus effective bridge mode, and target launch capability.

lepusa run [macos|windows|linux] --project lepusa.json lowers the same NativeRunnerPlan and prints a compact runner smoke summary: selected backend, WebView engine, first URL, bridge URL, local services, startup operations, and lifecycle steps. The summary also includes target-can-launch and a blocker message when the selected target is known to be missing a native WebView launch loop. Passing --json emits the same canonical RunReport used by packaged runtime reports. It is intentionally a no-window command unless --launch is passed.

lepusa verify [macos|windows|linux] --project lepusa.json runs the no-write foundation proof for an app: runtime plan, dev plan, launch manifest, bridge asset, nonblank initial WebView content for resolvable assets, handler coverage, native launch session, bundle runtime contract, and release-readiness metadata plus package-readiness blockers. Add --strict when the command should act as a release gate: missing concrete handlers, known target launch blockers, bundle release-readiness issues, and package-readiness blockers become failures instead of warnings. This keeps framework-development proofs useful while still giving CI a direct answer for "can this target ship?" Passing --json emits the selected target, strict mode, final pass/fail, and the canonical verifier lines plus structured release-readiness data as a machine-readable report, including the generated package plan readiness. The native-session line reports scheduler readiness separately from selected target launch readiness, so Windows and async-bridge blockers are visible even outside strict mode. lepusa doctor prints the same target launch-gate blocker as a warning so local diagnostics stay non-fatal while still showing whether the selected target can launch natively today. lepusa publish-plan [macos|windows|linux] --project lepusa.json is the third-party project release spine. It derives the strict verification command, bundle output root, distribution manifest path, release handoff root, package handoff root, package script command, and release/package readiness from the same lepusa.json and bundle distribution contract. Passing --json emits the same command list and readiness fields for CI jobs or external release tools.

@lepusa/runtime turns a RuntimePlan into a RuntimeSession: resolved window frames, protocol mappings, virtual files, generated bridge source, and command dispatch through the declared capabilities. NativeRunnerPlan keeps full per-window RuntimeWebViewSpec records alongside the portable launch manifest so backend implementations can create windows without re-deriving bridge hooks or initialization scripts. It also exposes lifecycleOperations from the current RuntimeSession; each step carries the operations and resulting session snapshot so native backends can resolve assets after shutdown or window-event navigation without retaining app construction state.

RuntimeSession::resolve_window_asset(window_label, url) is the pure custom-protocol boundary for native WebViews. It resolves lepusa://runtime/bridge.js, inline/Rabbita virtual files, safe local asset paths, and packaged app assets without doing platform file IO, while denying cross-window asset requests. RuntimeSession::resolve_asset_json(url) and RuntimeHost::resolve_asset_json(url) expose the same boundary as a stable JSON envelope for native protocol handlers: virtual content, local file paths, packaged file paths, or a structured error. Use their resolve_window_asset_json variants from platform handlers; the unscoped forms are for CLI and manifest inspection. lepusa asset <url> --project lepusa.json prints that envelope directly, so desktop projects can smoke-test the custom protocol without starting a WebView.

RuntimeHost::dispatch_json(input) is the native hook boundary for WebView IPC. It decodes the bridge request object, verifies the route is declared by the runtime plan, checks capabilities through the command registry, and returns the JSON response shape expected by window.lepusa. RuntimeHost::dispatch_json_async(input) is the native loop path for async plugin handlers; sync handlers still run through the same permission checks. RuntimeHost::bridge_dispatch_task(message) and NativeRuntime::bridge_dispatch_task(message) wrap the same bridge request as a target-window response task with route metadata and a sync/async mode, so native loops can immediately answer sync commands or schedule async commands and later evaluate the generated response script. The task JSON includes the original bridge message and requiresAsyncDispatch flag so native handlers do not need to re-derive scheduling metadata. Bundled manifests expose the same contract through BundledRuntime::bridge_dispatch_task(message). RuntimeHost::bridge_handoff(message) and NativeRuntime::bridge_handoff(message) combine that task with an immediate dispatch result for sync routes, or a deferred handoff for async routes. This is the narrow callback shape native event loops use before they schedule async work. NativeBridgeHandoff::complete_deferred(runtime) turns that deferred task into a NativeBridgeCompletion, preserving the original task metadata together with the response JSON and JavaScript callback script the platform loop should evaluate. Immediate handoffs intentionally reject deferred completion so backend code cannot accidentally run a sync command twice. NativeBridgeWorkQueue is the shared FIFO queue for platform loops: handoff_callback(runtime) returns immediate scripts for sync routes, enqueues deferred async routes, and lets the loop drain completions later before evaluating each callback script in the target WebView. Packaged runtimes expose the same shape as BundledBridgeWorkQueue. handoff_packet_callback is the native C/WebView ABI for that handoff: it returns status\n<window>\n<body-byte-length>\n<body>\n<operation-packet> where the final section is the versioned lepusa-ops-v3 length-prefixed native operation packet. Immediate packets carry the callback script plus executable operations, deferred packets carry the queued task count, and error packets carry a diagnostic body. The v3 operation records include dynamic open-window boot metadata: load URL, title, size, resizable flag, bridge source, native hook, asset protocol, and packetized evaluate-script payloads. macOS, Linux, and Windows parse this packet, evaluate immediate scripts in the target WebView, and consume follow-up operations without JSON-scanning escaped payloads. NativeBridgeLoopAdapter and BundledBridgeLoopAdapter bundle the runtime, queue, native message callback, pending-state diagnostics, and drain operation into the object platform event loops should keep beside each WebView host. Their async receive_message method accepts one UTF-8 WebView bridge message and returns a loop result: immediate scripts for sync routes, drained completion scripts for async routes, and JSON diagnostics for backend tests. NativeBridgeScheduler and NativeBridgeLoopContract now surface drainStrategy, so target readiness distinguishes sync-only loops from native loops that can schedule the queued async drain on their event loop. NativeBridgeLoopEvaluationPlan lowers those scripts into target-window evaluate-script operations, giving every platform runner the same operation shape for its drain/evaluate step. receive_window_message returns a NativeBridgeLoopDelivery / BundledBridgeLoopDelivery, pairing the raw loop result with that executable plan for the target window. drain_window returns the same delivery shape for async tasks previously captured by the message-handler handoff callback, which is the native loop path for post-callback WebView evaluation. The callback bundles also expose drain_window_scripts, a compact UTF-8 JavaScript payload for native loops that only need to evaluate the completed callback scripts, drain_window_packet, a UTF-8 handoff packet carrying the same typed evaluate-script operations, plus drain_window_operation, a drain-bridge-window executable operation naming the window and packet-drain callback a platform loop must schedule. Deferred handoff packets carry that drain-bridge-window operation immediately, so native loops can enqueue the event-loop wakeup from the same packet they return to the WebView callback. The native C loops parse and retain those drain requests, then issue a lepusa-drain-v1 request through the same packet handoff callback and execute the returned lepusa-ops-v3 drain operations. NativeOperationExecutor is the MoonBit-side runner contract for that delivery: platform packages provide handlers for drain-bridge-window, evaluate-script, navigate-window, run-effect, and service operations, then receive a typed execution report instead of parsing operation JSON. RuntimeHost::dispatch_bridge_message(message) and BundledRuntime::dispatch_bridge_message(message) execute that captured bridge message and return the response JSON plus the callback script a native WebView loop evaluates after sync or async command completion.

lepusa bridge-task <window> <plugin.command> [payload] --project lepusa.json prints that source-project scheduling task without starting a WebView. lepusa bridge-handoff <window> <plugin.command> [payload] --project lepusa.json prints the immediate-or-deferred native callback handoff for that bridge message. lepusa bridge-complete <window> <plugin.command> [payload] --project lepusa.json executes the deferred-completion path and prints the completion envelope used by native event loops after async work finishes. lepusa bridge-dispatch <window> <plugin.command> [payload] --project lepusa.json executes the same bridge message and prints the native callback envelope without starting a WebView. lepusa bridge-loop <window> <plugin.command> [payload] --project lepusa.json feeds one source-project WebView message through the bridge-loop adapter and prints the immediate script, drained async completions, and evaluation scripts plus the native executable evaluation plan a platform loop should run. lepusa bridge-drain <window> <plugin.command> [payload] --project lepusa.json simulates the split native loop: the message-handler handoff callback runs first, then pending async work drains into a target-window delivery envelope. lepusa invoke <window> <plugin.command> [payload] --project lepusa.json executes the same host dispatch path from the CLI. It is a native smoke-test tool for project configuration, official plugin registration, and capability grants. lepusa lifecycle <event> [window] --project lepusa.json prints the runtime step JSON for startup, shutdown, and window lifecycle events without starting a native window loop.

The generated bridge also exposes window.lepusa.listen(name, handler) and installs globalThis.__lepusaDispatchEvent(event) for native-to-frontend events.

RuntimePlan::actions(cmd) lowers Cmd::emit, Cmd::navigate, and Cmd::effect into backend-executable RuntimeAction values. Startup actions are included in RuntimePlan::launch_manifest().

RuntimeHost::webviews() produces per-window boot specs for native backends: window frame data, load URL, asset protocol, native hook name, and document start scripts.

lepusa bridge emits the JavaScript bridge that frontends load as window.lepusa, including invoke(route, payload), can(route), command(route), and a frozen commands route tree such as lepusa.commands.core.invoke(payload). Direct route namespaces such as lepusa.core.invoke(payload) are also installed when they do not collide with core bridge methods.

lepusa dev lowers the current project into a runtime development plan: resolved WebViews, asset protocol, capability grants, capability-filtered routes, runtime session, startup operations, lifecycle steps, and bridge scheduling routes. The plan now includes a devSession object that classifies each WebView as runtime protocol assets, supervised localhost, external URL, or custom URL, records whether the runner owns window reload or an external frontend server owns reload, and links supervised frontend services without re-reading project configuration. It also prints the concrete inspect, manifest, verify, run, and bundle commands for each desktop target, so a generated or file-backed app has an immediate local development loop without extra project-specific scripts. lepusa dev --json emits the same plan plus reusable command templates as a structured artifact for native runners and external tooling. This is the stable boundary the platform-specific window loops will execute.

RuntimeHost::runner_plan() is the platform-neutral native-loop contract: launch manifest, resolved WebViews, stepped runtime session, and startup operations in one object. Platform packages map this plan to WKWebView, WebView2, or WebKitGTK without rebuilding app state. RuntimeRunnerPlan::lifecycle_step(event) returns the same operation/session shape that lepusa lifecycle prints. RuntimeSession::open_window(window) resolves a new WindowConfig into session-owned protocol mappings, virtual files, sidecar services, and a typed open-window operation containing the WebView spec and initialization scripts. request_window_close(label) and close_window(label) keep close-request lifecycle actions separate from final destruction, and final close removes the window's runtime assets/listeners before emitting a typed close-window operation.

@lepusa/runtime also exposes NativeBackend and NativeRuntime, the shared lowering boundary for platform packages. NativeRuntime binds a backend and host once, then gives platform loops bootstrap JSON, asset JSON, dispatch JSON, service supervisor plans/reports/executors, and lifecycle step JSON without making each backend rebuild those paths. @lepusa.RunReport is the shared launch summary returned by source and packaged runtime adapters, so CLI output and future native loops use one status vocabulary for prepared, launched, failed, and unsupported runs. It also carries target launch readiness separately from run status, so tooling can distinguish a valid prepared plan from a target whose WebView loop is not implemented yet. The same report now carries executable, executed, skipped, and failed operation counts plus the first execution failure, giving CI and native-loop smoke tests a single place to compare planned startup work with what the platform executor can actually handle. Native runner plans also report bridge sync and async route sets, giving platform loops an explicit scheduling contract before they open a WebView. They also expose executable operation views for frontend event scripts and window navigations, so lifecycle/startup reporting uses typed operations before the backend crosses into C. Prepared source and packaged run plans append startup frontend event scripts to the matching WebView initialization script, so launchers consume the same operation boundary they report. NativeOperationExecutor executes those operation arrays through platform handlers and reports executed, skipped, and failed outcomes, giving WebView loops one reusable path for startup, lifecycle, and bridge-drain work. It now includes dynamic open-window and close-window handlers so platform packages can wire multi-window lifecycle without parsing runtime JSON. Capability-approved window.* bridge dispatches also lower their plugin response into a window-control executable operation, so native loops can apply window actions without parsing JavaScript response callbacks. Approved source or packaged window.open and window.close dispatches additionally emit the runtime-owned open-window and close-window lifecycle operations, keeping the dynamic window boundary visible before platform loops perform the concrete frame work. Source RuntimeHost instances retain the updated runtime session after those bridge operations, so later asset-protocol requests can resolve dynamic window virtual files instead of falling back to the original static plan. Capability-approved app.*, menu.*, and tray.* bridge dispatches lower successful plugin responses into a typed desktop-shell executable operation. This gives platform menu, tray, dock, and app-shell implementations one stable native-operation contract while MoonBit keeps permission checks and payload validation at the official plugin boundary. The macOS, Linux, and Windows loops consume those records from bridge packets; app show/hide/setTheme/exit/restart are applied in the native loop, restart relaunches the current command line before closing the current window set, macOS also applies app dock visibility, macOS/Linux/Windows apply app and window menu bars plus tray operations for icon, tooltip, menu, menu popup, visibility, and destroy. Platform operation reports now mark supported app shell, macOS/Linux/Windows app-menu/window-menu and tray operations as executed, including macOS/Linux/Windows menu accelerator rendering for supported shortcut strings and macOS/Linux/Windows menu and tray item click dispatch to menu.onItemClick and tray.onMenuItemClick. The macOS WKWebView, Linux WebKitGTK, and Windows WebView2 loops consume the sync window action set directly from the bridge handoff packet: title, size, position, fullscreen, show, hide, focus, minimize, maximize, unmaximize, and close. They also consume typed close-window records by closing the live native frame once, even when the same handoff also carries the plugin's window-control close response. macOS, Linux, and Windows consume navigate-window operations from the same handoff packet by loading the target URL in the live WebView after the approved MoonBit dispatch completes. The macOS, Linux, and Windows loops now consume dynamic open-window records by creating labeled WKWebView/WebKitGTK/WebView2 windows with the carried bridge source, native hook, asset protocol, URL, title, size, and resizable flag. Source and bundled runners pass URL-routed asset resolver callbacks into native loops, so dynamic WebViews can resolve assets for their own window labels. Platform packages now expose operation_executor() so source and packaged run reports use the backend's actual script-evaluation and window-control support instead of the generic skipped-operation fallback. @lepusa/runtime/macos, @lepusa/runtime/windows, and @lepusa/runtime/linux now provide small backend descriptors and host availability checks for WKWebView, WebView2, and WebKitGTK. Each platform package exposes runtime(host) and detect_runtime(host) helpers that return the same NativeRuntime facade, plus launch_capability() declarations for WebView creation, maximum live WebView count, and async bridge drain support. Platform packages also expose service executor helpers, and native run plans build launch sessions from the selected backend capability before running service startup, opening a WebView, running the app-will-exit lifecycle operation batch after the window loop returns, and then running service shutdown. macOS, Linux, and Windows start tracked sidecar processes, poll HTTP readiness URLs, stop tracked processes through platform-owned native hooks, and install exit/interruption cleanup so supervised sidecars do not outlive the native runner when the app process exits before the normal shutdown step.

Source::localhost(...) supports gateway-style apps that load a local HTTP service and optionally declare the sidecar command plus readiness URL metadata. This data appears in RuntimeSession::local_services() and launch-manifest localServices for native runners to supervise.

lepusa bundle-plan now also validates concrete bundle artifact plans through BundlePlan::files(): platform metadata, manifest-aware launcher stubs, lepusa/runtime.json, and lepusa/distribution.json, with per-window bridge initialization scripts embedded in the runtime manifest. Passing --json emits target metadata, planned resources, runtime dependencies, signing prerequisites and steps, and planned bundle files for CI and native runner tooling. Windows bundle plans now make the app .exe the primary launcher artifact and emit generated native launcher C source plus a .cmd smoke fallback, so package generators do not need application-owned launcher code. The generated distribution manifest records those runtime dependencies beside artifacts, resources, signing data, runtime executable placement, and target metadata without requiring installer tooling to parse the launch manifest. lepusa bundle-inspect <lepusa/distribution.json> parses that manifest and prints either a compact summary or the normalized JSON contract for downstream package generators. lepusa bundle-release-plan <lepusa/distribution.json> lowers the same manifest to ordered release steps for runtime dependency validation, resource staging, signing checks, signing commands, and artifact collection. Each release step carries structured entries with kind, name, path, sourcePath, required, and description fields so release tooling does not need to scrape raw manifest JSON. The release plan also reports required and optional step/item counts plus a ready flag and missingRequiredSteps, giving CI a compact pre-installer release gate before platform-specific signing or installer commands run. @lepusa/bundle.write_release_plan writes that gate as release-plan.json plus a human-readable release-checklist.md, and lepusa bundle-release-write <lepusa/distribution.json> [out-dir] is the CLI wrapper for release jobs and future package generators. BundleDistributionManifest::package_plan() then lowers the same distribution contract into target-aware package commands, expected outputs, and blockers. @lepusa/bundle.write_package_plan writes package-plan.json, package-checklist.md, and a platform package script (package.sh or package.ps1); Windows also receives an installer.nsi script for the setup artifact. lepusa bundle-package-plan and lepusa bundle-package-write are the CLI wrappers. On macOS, the package script signs the staged app before creating the disk image. With a Developer ID and notarization profile configured, it also signs, notarizes, and staples the disk image. The ad-hoc identity - is supported for local integrity testing but does not replace Apple notarization. The bundler prefers a release-mode lepusa-runtime, falls back to the debug runtime, and accepts an explicit LEPUSA_RUNTIME_EXECUTABLE. Packaging now fails instead of producing an unlaunchable app when no runtime is available. BundleDistributionManifest::install_smoke_plan() adds the post-install gate: installed runtime manifest path, required installed files, runtime dependency files when applicable, and lepusa-runtime commands for manifest inspection, dry-run launch planning, async bridge launch-session, bridge asset resolution, and optional GUI launch. @lepusa/bundle.write_install_smoke_plan writes install-smoke-plan.json, install-smoke-checklist.md, and install-smoke.sh/install-smoke.ps1; lepusa bundle-install-smoke-plan and lepusa bundle-install-smoke-write expose the same contract for clean-machine validation. For app authors, lepusa publish-plan [target] --project lepusa.json combines the strict verifier, bundle-write, release handoff, package handoff, final package script invocation, and install-smoke handoff into one target-aware checklist without writing files.

@lepusa/bundle.write_plan materializes those planned files under an output directory. lepusa bundle-write is the CLI wrapper. Project bundles carry registered official plugin routes into lepusa/runtime.json, so packaged runtime data matches the same host path used by lepusa manifest, lepusa dev, and lepusa invoke. Bundle verification records target runtime dependencies too: system WebViews are reported as declared external dependencies, while file-backed dependencies such as Windows WebView2Loader.dll are checked at their planned bundle path. When a file-backed dependency declares a source path, bundle-write copies it before verification; the Windows loader source defaults to _build/native/debug/build/cmd/runtime/WebView2Loader.dll. Projects can override that path in lepusa.json:

{ "runtimeDependencies": [ { "name": "WebView2Loader.dll", "source": "vendor/WebView2Loader.dll" } ] }

When the selected bundle target matches an available host runtime backend and the local cmd/runtime native binary exists, bundle-write also embeds a target-named lepusa-runtime executable beside the launcher and verifies it with a runtime-executable check. BundlePlan::runtime_executable_path() exposes that target location before materialization. Cross-target bundles keep a launcher fallback to lepusa-runtime on PATH until Lepusa owns cross-compiled runtime artifacts. bundle-write also verifies that the generated lepusa/runtime.json lowers into a target native launch session against the target launch contract, separate from host dependency availability, and that resolvable initial WebView content is present and nonblank. For built-in sync routes that are allowed by a bundled WebView, it also runs a packaged bridge dispatch smoke check and verifies the response callback script can be produced; custom app routes are skipped until the app supplies generated handlers. It also parses lepusa/distribution.json and checks that installer metadata includes required artifact, dependency, resource, runtime executable, and signing fields. Windows bundles now pass structural native launch-session verification cross-target; missing WebView2Loader.dll or system WebView runtime placement remains a runtime-dependency verification failure. Passing --json emits target, identifier, signing prerequisites, and the reusable BundleWriteResult payload with written files, resources, runtime dependency checks, and verification checks for CI tooling. Generated desktop launcher stubs wrap lepusa-runtime launch --manifest <runtime.json> instead of replacing the launcher process with exec. POSIX wrappers trap INT, TERM, and HUP, wait on the runtime PID, and forward termination to the runtime so CLI smoke runs do not strand supervised local services. The Windows bundle also emits a native C launcher source that starts lepusa-runtime.exe, waits for completion, and returns the runtime exit code. The macOS and Linux runtimes track all native windows and stop tracked local services only after the last WKWebView or WebKitGTK window closes. The Linux package owns WebKitGTK source and packaged-window loops when GTK3 and WebKit2GTK are available, including a package-owned lepusa:// URI scheme callback for MoonBit-resolved runtime, virtual, local, and packaged assets. Windows source and packaged runs use the package-owned WebView2 COM loop when WebView2Loader.dll, its required factory exports, Ole32 COM support, and a discoverable WebView2 Runtime are available, including sync bridge response evaluation, typed dynamic window operations, and a WebView2 resource-request callback that maps https://<protocol>.localhost/... back to MoonBit-resolved runtime, virtual, local, and packaged lepusa://... assets. lepusa-runtime run --manifest <runtime.json> uses a target-aware planning path without opening a window, so bundles have a cheap validation probe. lepusa-runtime bootstrap--manifest <runtime.json> emits the target-aware packaged runtime bootstrap for platform loops: manifest path, bundle root, app metadata, native backend, WebView engine, WebView specs, service supervisor plan, startup operations, lifecycle operations, bridge routes, bridge scheduler policy, and the canonical runtime object that a backend consumes. lepusa-runtime launch-session --manifest <runtime.json> emits the packaged native host readiness envelope: prepared WebView launch plans, executable startup and lifecycle operations, bridge scheduler policy, and service supervisor plan under session, plus target launch capability and blocker fields for packaged native loops. lepusa-runtime --manifest <runtime.json> remains a manifest summary probe and reports the bundled service supervisor requirement plus sidecar start order. lepusa-runtime asset <url> --manifest <runtime.json> resolves the bundled manifest's runtime bridge, virtual files, local roots, and packaged roots using the same JSON envelope shape expected by native protocol handlers. lepusa-runtime lifecycle <event> [window] --manifest <runtime.json> reads the same bundled manifest and returns the local services and portable actions a native loop should process for that lifecycle event. lepusa-runtime bridge-task <window> <plugin.command> [payload] --manifest <runtime.json> returns the MoonBit-owned bridge scheduling task for a packaged command: target window, response hook, original bridge message, route, and sync/async dispatch mode. Native loops can use this as the packaged-manifest probe before wiring platform-specific message handlers. lepusa-runtime bridge-handoff <window> <plugin.command> [payload] --manifest <runtime.json> returns the packaged immediate-or-deferred handoff that native event loops use when deciding whether to answer a WebView callback immediately or schedule async completion. lepusa-runtime bridge-complete <window> <plugin.command> [payload] --manifest <runtime.json> executes the packaged deferred-completion path and returns the same completion envelope native event loops use after async work finishes. lepusa-runtime bridge-dispatch <window> <plugin.command> [payload] --manifest <runtime.json> executes the packaged bridge message and returns the response JSON plus callback script that a native event loop evaluates back into the target WebView. lepusa-runtime bridge-loop <window> <plugin.command> [payload] --manifest <runtime.json> feeds one packaged WebView message through the bundled bridge-loop adapter and returns the immediate script, drained async completions, and evaluation scripts plus the native executable evaluation plan a platform loop should evaluate. lepusa-runtime bridge-drain <window> <plugin.command> [payload] --manifest <runtime.json> simulates the packaged split native loop: handoff callback first, then target-window drain delivery for pending async work. lepusa-runtime invoke <window> <plugin.command> [payload] --manifest <runtime.json> executes a packaged bridge command against the manifest's registered official native handlers. It checks the requested window's allowedRoutes before dispatching and returns the same JSON response shape as project-hosted lepusa invoke. @lepusa/runtime/bundled owns the reusable manifest parser and bootstrap, asset, lifecycle, bridge-task, bridge-loop, and invoke JSON behind those commands, so native platform loops can consume bundled runtime data without depending on CLI internals. BundledRuntime::new(manifest) keeps the native command registry state alive for repeated bridge calls. It also owns bundled bridge message preparation, sync/async dispatch, target-window response-hook lookup, and response-callback scripts, while the manifest helper remains useful for one-shot probes. Bundled native run plans expose startup and lifecycle event scripts plus window navigations as typed runtime values, so packaged app loops can consume the same native-operation boundary as source-project runs. Source and bundled native run plans also serialize to compact handoff artifacts that carry native metadata plus the canonical launch session, while the launch-session CLIs wrap that session with target readiness metadata for tools that need to distinguish prepared plans from launchable platform backends and their host dependency preflight state. NativeBackendPreflight keeps the collapsed problem for human summaries, and adds problemKind, dependencyProblem, webviewCreationProblem, and asyncBridgeDrainProblem so release tooling can distinguish an unavailable system dependency from framework backend work that is still intentionally gated. The macOS runner prepares and injects the generated bridge as a document-start WKUserScript, together with a native hook bootstrap and window.webkit.messageHandlers.__lepusaInvoke dispatch path for sync command responses. Native loops now understand the typed packet format needed to evaluate queued callback scripts, retain deferred drain requests, and request a window-scoped lepusa-ops-v3 drain packet from MoonBit through the existing handoff callback. That launch capability carries an asyncBridgeDrainMessage field, which describes the packetized event-loop drain contract separately from WebView dependency, script evaluation, or creation-loop failures. Launch-session JSON also carries asyncBridgeExecutor, which names NativeRuntime::bridge_async_dispatch_callback and its UTF-8 bridge-message to JavaScript-callback-script byte contract. The same bridgeScheduler field appears in source and bundled bootstrap JSON so platform loops and CLI diagnostics read one launch policy. NativeRuntime.prepare_bridge_message, bridge_dispatch_task, and dispatch_bridge_message own the MoonBit side of that path by resolving the target window, response hook, route scheduling mode, sync/async dispatch, and response-callback script. macOS, Linux, and Windows share the same runtime hook-bootstrap and response-script helpers instead of duplicating bridge callback semantics in each backend. The same runner registers a WKURLSchemeHandler for the Lepusa asset protocol. MoonBit still owns asset resolution; the Objective-C stub only turns the runtime asset packet into WebKit response/data/finish calls. The Linux source-window loop injects the same window.lepusa bridge plus a WebKitGTK message-handler bootstrap, so sync native commands can round-trip through MoonBit in an opened WebKitGTK window. Its WebKitGTK URI-scheme handler also calls back into MoonBit for runtime asset resolution, keeping packaged Linux windows on the same lepusa:// contract as macOS. Source::packaged("dist") also emits an asset resource mapping and lepusa bundle-write copies that directory into lepusa/assets/<window>. The generated bundle runtime manifest rewrites packaged protocol roots to that bundle-relative location, while runtime asset probes return packaged-file envelopes for lepusa://packaged/<window>/... URLs.

#Boundary

Lepusa owns the reusable desktop framework:

  • native window and WebView runtime
  • frontend-to-MoonBit command bridge
  • app capabilities and permissions
  • official platform plugins
  • dev/build/bundle CLI

Consumer projects own product behavior, backend services, schemas, routes, workspaces, dashboards, and domain-specific adapters.

#
AsyncCommandHandler

type AsyncCommandHandler = async (String) -> Result[String, String]

#
CommandHandler

type CommandHandler = (String) -> Result[String, String]

#
Emit

type Emit[Msg] = (Msg) -> Cmd

#
OperationScopeResolver

type OperationScopeResolver = (InvokeRequest) -> Result[OperationScope, String]

#
StreamCommandHandler

type StreamCommandHandler = (String, StreamSink) -> Result[Unit, String]

#
App

pub struct App {
root : Cell
windows : Array[WindowConfig]
plugins : Array[Plugin]
capabilities : Array[Capability]
startup : Cmd
lifecycle_hooks : Array[LifecycleHook]
} derive(Eq,
Debug
)

#
App::launch_plan

fn App::launch_plan(self : App) -> Result[LaunchPlan, Array[String]]

#
App::manager

fn App::manager(self : App, config? : RuntimeConfig, registry? : CommandRegistry) -> Result[AppManager, Array[String]]

#
App::on_shutdown

fn App::on_shutdown(self : App, command : Cmd) -> App

#
App::on_window_close_requested

fn App::on_window_close_requested(self : App, label : String, command : Cmd) -> App

#
App::on_window_closed

fn App::on_window_closed(self : App, label : String, command : Cmd) -> App

#
App::runtime_plan

fn App::runtime_plan(self : App, config? : RuntimeConfig) -> Result[RuntimePlan, Array[String]]

#
App::validate

fn App::validate(self : App) -> Array[String]

#
App::window

fn App::window(self : App, label? : String, title? : String, width? : Int, height? : Int, resizable? : Bool, title_bar? : TitleBarStyle, source? : Source) -> App

#
App::with_capability

fn App::with_capability(self : App, capability : Capability) -> App

#
App::with_lifecycle

fn App::with_lifecycle(self : App, event : LifecycleEvent, command : Cmd) -> App

#
App::with_plugin

fn App::with_plugin(self : App, plugin : Plugin) -> App

#
App::with_startup

fn App::with_startup(self : App, startup : Cmd) -> App

#
App::with_window

fn App::with_window(self : App, window : WindowConfig) -> App

#
AppManager

pub struct AppManager {
plan : RuntimePlan
registry : CommandRegistry
resources : ResourceTable
channels : ChannelTable
events : EventBus
state : AppStateStore
}

#
AppManager::audit

fn AppManager::audit(self : AppManager) -> RuntimeAudit

#
AppManager::cancel_channel

fn AppManager::cancel_channel(self : AppManager, id : String) -> Result[ChannelMessage, String]

#
AppManager::capability_count

fn AppManager::capability_count(self : AppManager) -> Int

#
AppManager::channel

fn AppManager::channel(self : AppManager, id : String) -> Channel?

#
AppManager::channel_count

fn AppManager::channel_count(self : AppManager) -> Int

#
AppManager::close_all_resources

fn AppManager::close_all_resources(self : AppManager) -> ResourceCleanupReport

#
AppManager::close_resource

fn AppManager::close_resource(self : AppManager, id : String) -> Result[ResourceEntry, String]

#
AppManager::close_resource_handle

fn AppManager::close_resource_handle(self : AppManager, handle : ResourceHandle) -> Result[ResourceEntry, String]

#
AppManager::command_routes

fn AppManager::command_routes(self : AppManager) -> Array[String]

#
AppManager::dispatch

fn AppManager::dispatch(self : AppManager, request : InvokeRequest) -> InvokeResponse

#
AppManager::dispatch_async

async fn AppManager::dispatch_async(self : AppManager, request : InvokeRequest) -> InvokeResponse

#
AppManager::drain_channel

fn AppManager::drain_channel(self : AppManager, id : String) -> Result[Array[ChannelMessage], String]

#
AppManager::emit

fn AppManager::emit(self : AppManager, event : Event, target? : EventTarget) -> Result[Array[EventDelivery], Array[String]]

#
AppManager::end_channel

fn AppManager::end_channel(self : AppManager, id : String) -> Result[ChannelMessage, String]

#
AppManager::fail_channel

fn AppManager::fail_channel(self : AppManager, id : String, message : String) -> Result[ChannelMessage, String]

#
AppManager::invoke_contract_report

fn AppManager::invoke_contract_report(self : AppManager) -> InvokeContractReport

#
AppManager::invoke_contracts

fn AppManager::invoke_contracts(self : AppManager) -> Array[InvokeContract]

#
AppManager::listen

fn AppManager::listen(self : AppManager, name : String, target? : EventTarget, once? : Bool) -> Result[EventListener, Array[String]]

#
AppManager::listener_count

fn AppManager::listener_count(self : AppManager) -> Int

#
AppManager::manage_state

fn AppManager::manage_state(self : AppManager, key : String, kind? : String, value? : String) -> Result[AppStateEntry, Array[String]]

#
AppManager::new

fn AppManager::new(plan : RuntimePlan, registry? : CommandRegistry) -> AppManager

#
AppManager::once

fn AppManager::once(self : AppManager, name : String, target? : EventTarget) -> Result[EventListener, Array[String]]

#
AppManager::open_channel

fn AppManager::open_channel(self : AppManager, owner? : String, name? : String, metadata? : String) -> Result[Channel, Array[String]]

#
AppManager::open_resource

fn AppManager::open_resource(self : AppManager, descriptor : ResourceDescriptor) -> Result[ResourceEntry, Array[String]]

#
AppManager::plan

fn AppManager::plan(self : AppManager) -> RuntimePlan

#
AppManager::plugin_count

fn AppManager::plugin_count(self : AppManager) -> Int

#
AppManager::registered_routes

fn AppManager::registered_routes(self : AppManager) -> Array[String]

#
AppManager::registry

fn AppManager::registry(self : AppManager) -> CommandRegistry

#
AppManager::remove_state

fn AppManager::remove_state(self : AppManager, key : String) -> Result[AppStateEntry, String]

#
AppManager::resource

fn AppManager::resource(self : AppManager, id : String) -> ResourceEntry?

#
AppManager::resource_count

fn AppManager::resource_count(self : AppManager) -> Int

#
AppManager::resource_handles

fn AppManager::resource_handles(self : AppManager) -> Array[ResourceHandle]

#
AppManager::resource_handles_by_kind

fn AppManager::resource_handles_by_kind(self : AppManager, kind : String) -> Array[ResourceHandle]

#
AppManager::resource_handles_by_owner

fn AppManager::resource_handles_by_owner(self : AppManager, owner : String) -> Array[ResourceHandle]

#
AppManager::resource_leak_report

fn AppManager::resource_leak_report(self : AppManager) -> ResourceLeakReport

#
AppManager::resources

fn AppManager::resources(self : AppManager) -> Array[ResourceEntry]

#
AppManager::security_profile

fn AppManager::security_profile(self : AppManager) -> SecurityProfile

#
AppManager::send_channel

fn AppManager::send_channel(self : AppManager, id : String, payload : String) -> Result[ChannelMessage, String]

#
AppManager::state

fn AppManager::state(self : AppManager, key : String) -> AppStateEntry?

#
AppManager::state_count

fn AppManager::state_count(self : AppManager) -> Int

#
AppManager::to_json

fn AppManager::to_json(self : AppManager) -> String

#
AppManager::unlisten

fn AppManager::unlisten(self : AppManager, id : String) -> Result[EventListener, String]

#
AppManager::window_count

fn AppManager::window_count(self : AppManager) -> Int

#
AppMetadata

pub struct AppMetadata {
identifier : String
product_name : String
version : String
} derive(Eq,
Debug
)

#
AppMetadata::executable_name

fn AppMetadata::executable_name(self : AppMetadata) -> String

#
AppMetadata::identifier

fn AppMetadata::identifier(self : AppMetadata) -> String

#
AppMetadata::new

fn AppMetadata::new(identifier~ : String, product_name~ : String, version~ : String) -> AppMetadata

#
AppMetadata::product_name

fn AppMetadata::product_name(self : AppMetadata) -> String

#
AppMetadata::validate

fn AppMetadata::validate(self : AppMetadata) -> Array[String]

#
AppMetadata::version

fn AppMetadata::version(self : AppMetadata) -> String

#
AppStateEntry

pub struct AppStateEntry {
key : String
kind : String
value : String
} derive(Eq,
Debug
)

#
AppStateEntry::key

fn AppStateEntry::key(self : AppStateEntry) -> String

#
AppStateEntry::kind

fn AppStateEntry::kind(self : AppStateEntry) -> String

#
AppStateEntry::new

fn AppStateEntry::new(key~ : String, kind? : String, value? : String) -> AppStateEntry

#
AppStateEntry::to_json

fn AppStateEntry::to_json(self : AppStateEntry) -> String

#
AppStateEntry::validate

fn AppStateEntry::validate(self : AppStateEntry) -> Array[String]

#
AppStateEntry::value

fn AppStateEntry::value(self : AppStateEntry) -> String

#
AppStateStore

pub struct AppStateStore {
entries : Map[String, AppStateEntry]
order : Array[String]
}

#
AppStateStore::clear

#
AppStateStore::contains

fn AppStateStore::contains(self : AppStateStore, key : String) -> Bool

#
AppStateStore::count

fn AppStateStore::count(self : AppStateStore) -> Int

#
AppStateStore::entries

#
AppStateStore::get

fn AppStateStore::get(self : AppStateStore, key : String) -> AppStateEntry?

#
AppStateStore::is_empty

fn AppStateStore::is_empty(self : AppStateStore) -> Bool

#
AppStateStore::keys

fn AppStateStore::keys(self : AppStateStore) -> Array[String]

#
AppStateStore::new

#
AppStateStore::put

fn AppStateStore::put(self : AppStateStore, entry : AppStateEntry) -> Result[AppStateEntry, Array[String]]

#
AppStateStore::remove

fn AppStateStore::remove(self : AppStateStore, key : String) -> Result[AppStateEntry, String]

#
AppStateStore::set

fn AppStateStore::set(self : AppStateStore, key : String, kind? : String, value? : String) -> Result[AppStateEntry, Array[String]]

#
AppStateStore::to_json

fn AppStateStore::to_json(self : AppStateStore) -> String

#
BackpressureOverflow

pub(all) enum BackpressureOverflow {
RejectNew
DropOldest
} derive(Eq,
Debug
)

#
BackpressureOverflow::name

fn BackpressureOverflow::name(self : BackpressureOverflow) -> String

#
BackpressurePolicy

pub struct BackpressurePolicy {
max_pending : Int
overflow : BackpressureOverflow
} derive(Eq,
Debug
)

#
BackpressurePolicy::at_capacity

fn BackpressurePolicy::at_capacity(self : BackpressurePolicy, pending : Int) -> Bool

#
BackpressurePolicy::bounded

fn BackpressurePolicy::bounded(max_pending~ : Int, overflow? : BackpressureOverflow) -> BackpressurePolicy

#
BackpressurePolicy::is_bounded

fn BackpressurePolicy::is_bounded(self : BackpressurePolicy) -> Bool

#
BackpressurePolicy::is_unbounded

fn BackpressurePolicy::is_unbounded(self : BackpressurePolicy) -> Bool

#
BackpressurePolicy::max_pending

fn BackpressurePolicy::max_pending(self : BackpressurePolicy) -> Int

#
BackpressurePolicy::new

fn BackpressurePolicy::new(max_pending? : Int, overflow? : BackpressureOverflow) -> BackpressurePolicy

#
BackpressurePolicy::overflow

#
BackpressurePolicy::to_json

fn BackpressurePolicy::to_json(self : BackpressurePolicy) -> String

#
BackpressurePolicy::unbounded

#
BackpressurePolicy::validate

fn BackpressurePolicy::validate(self : BackpressurePolicy) -> Array[String]

#
BridgeConfig

pub struct BridgeConfig {
global_name : String
native_hook : String
event_dispatch_hook : String
window_label : String
} derive(Eq,
Debug
)

#
BridgeConfig::new

fn BridgeConfig::new(global_name? : String, native_hook? : String, event_dispatch_hook? : String, window_label? : String) -> BridgeConfig

#
BridgeConfig::validate

fn BridgeConfig::validate(self : BridgeConfig) -> Array[String]

#
BridgeScript

pub struct BridgeScript {
global_name : String
native_hook : String
event_dispatch_hook : String
window_label : String
routes : Array[String]
source : String
} derive(Eq,
Debug
)

#
BridgeScript::event_dispatch_hook

fn BridgeScript::event_dispatch_hook(self : BridgeScript) -> String

#
BridgeScript::global_name

fn BridgeScript::global_name(self : BridgeScript) -> String

#
BridgeScript::native_hook

fn BridgeScript::native_hook(self : BridgeScript) -> String

#
BridgeScript::routes

fn BridgeScript::routes(self : BridgeScript) -> Array[String]

#
BridgeScript::source

fn BridgeScript::source(self : BridgeScript) -> String

#
BridgeScript::window_label

fn BridgeScript::window_label(self : BridgeScript) -> String

#
BundleArtifact

pub struct BundleArtifact {
kind : BundleArtifactKind
path : String
description : String
} derive(Eq,
Debug
)

#
BundleArtifact::description

fn BundleArtifact::description(self : BundleArtifact) -> String

#
BundleArtifact::kind

#
BundleArtifact::new

fn BundleArtifact::new(kind~ : BundleArtifactKind, path~ : String, description~ : String) -> BundleArtifact

#
BundleArtifact::path

fn BundleArtifact::path(self : BundleArtifact) -> String

#
BundleArtifact::to_json

fn BundleArtifact::to_json(self : BundleArtifact) -> String

#
BundleArtifactKind

pub(all) enum BundleArtifactKind {
AppBundleArtifact
DiskImageArtifact
ExecutableArtifact
InstallerArtifact
PortableDirectoryArtifact
DesktopEntryArtifact
} derive(Eq,
Debug
)

#
BundleArtifactKind::name

fn BundleArtifactKind::name(self : BundleArtifactKind) -> String

#
BundleConfig

pub struct BundleConfig {
metadata : AppMetadata
target : BundleTarget
icon_path : String?
resource_sources : Array[BundleResourceSource]
runtime_dependency_sources : Array[BundleRuntimeDependencySource]
signing : SigningConfig
} derive(Eq,
Debug
)

#
BundleConfig::new

fn BundleConfig::new(metadata : AppMetadata, target? : BundleTarget, icon_path? : String, resource_sources? : Array[BundleResourceSource], runtime_dependency_sources? : Array[BundleRuntimeDependencySource], signing? : SigningConfig) -> BundleConfig

#
BundleConfig::plan

fn BundleConfig::plan(self : BundleConfig, runtime : RuntimePlan, registered_routes? : Array[String]) -> Result[BundlePlan, Array[String]]

#
BundleConfig::validate

fn BundleConfig::validate(self : BundleConfig) -> Array[String]

#
BundleFile

pub struct BundleFile {
path : String
content : String
executable : Bool
} derive(Eq,
Debug
)

#
BundleFile::content

fn BundleFile::content(self : BundleFile) -> String

#
BundleFile::executable

fn BundleFile::executable(self : BundleFile) -> Bool

#
BundleFile::new

fn BundleFile::new(path~ : String, content~ : String, executable? : Bool) -> BundleFile

#
BundleFile::path

fn BundleFile::path(self : BundleFile) -> String

#
BundlePlan

pub struct BundlePlan {
metadata : AppMetadata
target : BundleTarget
runtime : RuntimePlan
registered_routes : Array[String]
executable_name : String
bundle_name : String
icon_path : String?
resource_sources : Array[BundleResourceSource]
runtime_dependency_sources : Array[BundleRuntimeDependencySource]
signing : SigningConfig
} derive(Eq,
Debug
)

#
BundlePlan::artifacts

fn BundlePlan::artifacts(self : BundlePlan) -> Array[BundleArtifact]

#
BundlePlan::bundle_name

fn BundlePlan::bundle_name(self : BundlePlan) -> String

#
BundlePlan::distribution_manifest_json

fn BundlePlan::distribution_manifest_json(self : BundlePlan) -> String

#
BundlePlan::executable_name

fn BundlePlan::executable_name(self : BundlePlan) -> String

#
BundlePlan::files

fn BundlePlan::files(self : BundlePlan) -> Result[Array[BundleFile], Array[String]]

#
BundlePlan::icon_path

fn BundlePlan::icon_path(self : BundlePlan) -> String?

#
BundlePlan::identifier

fn BundlePlan::identifier(self : BundlePlan) -> String

#
BundlePlan::registered_routes

fn BundlePlan::registered_routes(self : BundlePlan) -> Array[String]

#
BundlePlan::release_readiness

fn BundlePlan::release_readiness(self : BundlePlan) -> Result[ReleaseReadinessReport, Array[String]]

#
BundlePlan::resources

fn BundlePlan::resources(self : BundlePlan) -> Array[BundleResource]

#
BundlePlan::runtime_dependencies

fn BundlePlan::runtime_dependencies(self : BundlePlan) -> Array[BundleRuntimeDependency]

#
BundlePlan::runtime_dependency_sources

fn BundlePlan::runtime_dependency_sources(self : BundlePlan) -> Array[BundleRuntimeDependencySource]

#
BundlePlan::runtime_executable_name

fn BundlePlan::runtime_executable_name(self : BundlePlan) -> String

#
BundlePlan::runtime_executable_path

fn BundlePlan::runtime_executable_path(self : BundlePlan) -> String

#
BundlePlan::runtime_manifest

fn BundlePlan::runtime_manifest(self : BundlePlan) -> Result[RuntimeLaunchManifest, Array[String]]

#
BundlePlan::runtime_manifest_json

fn BundlePlan::runtime_manifest_json(self : BundlePlan) -> Result[String, Array[String]]

#
BundlePlan::signing

fn BundlePlan::signing(self : BundlePlan) -> SigningConfig

#
BundlePlan::signing_prerequisites

fn BundlePlan::signing_prerequisites(self : BundlePlan) -> Array[SigningPrerequisite]

#
BundlePlan::signing_steps

fn BundlePlan::signing_steps(self : BundlePlan) -> Array[SigningStep]

#
BundlePlan::target

fn BundlePlan::target(self : BundlePlan) -> BundleTarget

#
BundlePlan::update_manifest

fn BundlePlan::update_manifest(self : BundlePlan, base_url~ : String, channel? : String, public_key? : String, artifact_trust? : Array[UpdateArtifactTrust]) -> Result[UpdateManifest, Array[String]]

#
BundlePlan::update_manifest_json

fn BundlePlan::update_manifest_json(self : BundlePlan, base_url~ : String, channel? : String, public_key? : String, artifact_trust? : Array[UpdateArtifactTrust]) -> Result[String, Array[String]]

#
BundleResource

pub struct BundleResource {
kind : BundleResourceKind
source_path : String
path : String
} derive(Eq,
Debug
)

#
BundleResource::kind

#
BundleResource::new

fn BundleResource::new(kind~ : BundleResourceKind, source_path~ : String, path~ : String) -> BundleResource

#
BundleResource::path

fn BundleResource::path(self : BundleResource) -> String

#
BundleResource::source_path

fn BundleResource::source_path(self : BundleResource) -> String

#
BundleResource::to_json

fn BundleResource::to_json(self : BundleResource) -> String

#
BundleResourceKind

pub(all) enum BundleResourceKind {
IconResource
AssetResource
ExecutableResource
} derive(Eq,
Debug
)

#
BundleResourceKind::name

fn BundleResourceKind::name(self : BundleResourceKind) -> String

#
BundleResourceSource

pub struct BundleResourceSource {
source_path : String
path : String
executable : Bool
} derive(Eq,
Debug
)

#
BundleResourceSource::executable

fn BundleResourceSource::executable(self : BundleResourceSource) -> Bool

#
BundleResourceSource::new

fn BundleResourceSource::new(source_path~ : String, path~ : String, executable? : Bool) -> BundleResourceSource

#
BundleResourceSource::path

fn BundleResourceSource::path(self : BundleResourceSource) -> String

#
BundleResourceSource::source_path

fn BundleResourceSource::source_path(self : BundleResourceSource) -> String

#
BundleRuntimeDependency

pub struct BundleRuntimeDependency {
kind : BundleRuntimeDependencyKind
name : String
path : String?
source_path : String?
required : Bool
description : String
} derive(Eq,
Debug
)

#
BundleRuntimeDependency::description

fn BundleRuntimeDependency::description(self : BundleRuntimeDependency) -> String

#
BundleRuntimeDependency::name

#
BundleRuntimeDependency::new

fn BundleRuntimeDependency::new(kind~ : BundleRuntimeDependencyKind, name~ : String, path? : String, source_path? : String, required? : Bool, description~ : String) -> BundleRuntimeDependency

#
BundleRuntimeDependency::path

#
BundleRuntimeDependency::required

#
BundleRuntimeDependency::source_path

fn BundleRuntimeDependency::source_path(self : BundleRuntimeDependency) -> String?

#
BundleRuntimeDependency::to_json

fn BundleRuntimeDependency::to_json(self : BundleRuntimeDependency) -> String

#
BundleRuntimeDependencyKind

pub(all) enum BundleRuntimeDependencyKind {
SystemWebViewRuntime
NativeLoaderLibrary
} derive(Eq,
Debug
)

#
BundleRuntimeDependencyKind::name

#
BundleRuntimeDependencySource

pub struct BundleRuntimeDependencySource {
name : String
source_path : String
} derive(Eq,
Debug
)

#
BundleRuntimeDependencySource::name

#
BundleRuntimeDependencySource::new

fn BundleRuntimeDependencySource::new(name~ : String, source_path~ : String) -> BundleRuntimeDependencySource

#
BundleRuntimeDependencySource::source_path

#
BundleTarget

pub(all) enum BundleTarget {
MacOS
Windows
Linux
} derive(Eq,
Debug
)

#
BundleTarget::name

fn BundleTarget::name(self : BundleTarget) -> String

#
Capability

pub struct Capability {
name : String
windows : Array[String]
origins : Array[String]
platforms : Array[String]
permissions : Array[Permission]
operation_scopes : Array[OperationScope]
} derive(Eq,
Debug
)

#
Capability::allows

fn Capability::allows(self : Capability, window_label~ : String, permission~ : Permission, origin? : String, platform? : String) -> Bool

#
Capability::allows_operation

fn Capability::allows_operation(self : Capability, window_label~ : String, permission~ : Permission, scope~ : OperationScope, origin? : String, platform? : String) -> Bool

#
Capability::command

fn Capability::command(self : Capability, route : String) -> Capability

#
Capability::name

fn Capability::name(self : Capability) -> String

#
Capability::new

fn Capability::new(name : String) -> Capability

#
Capability::operation_scope

fn Capability::operation_scope(self : Capability, scope : OperationScope) -> Capability

#
Capability::operation_scopes

fn Capability::operation_scopes(self : Capability) -> Array[OperationScope]

#
Capability::operation_scopes_by_kind

fn Capability::operation_scopes_by_kind(self : Capability, kind : OperationScopeKind) -> Array[OperationScope]

#
Capability::origin

fn Capability::origin(self : Capability, origin : String) -> Capability

#
Capability::origins

fn Capability::origins(self : Capability) -> Array[String]

#
Capability::path_scope

fn Capability::path_scope(self : Capability, root~ : String, writable? : Bool) -> Capability

#
Capability::permission

fn Capability::permission(self : Capability, permission : Permission) -> Capability

#
Capability::permissions

fn Capability::permissions(self : Capability) -> Array[Permission]

#
Capability::platform

fn Capability::platform(self : Capability, platform : String) -> Capability

#
Capability::platforms

fn Capability::platforms(self : Capability) -> Array[String]

#
Capability::shell_scope

fn Capability::shell_scope(self : Capability, command : String) -> Capability

#
Capability::url_scope

fn Capability::url_scope(self : Capability, origin : String) -> Capability

#
Capability::validate

fn Capability::validate(self : Capability) -> Array[String]

#
Capability::window

fn Capability::window(self : Capability, label : String) -> Capability

#
Capability::windows

fn Capability::windows(self : Capability) -> Array[String]

#
Capability::with_file_system_scopes

fn Capability::with_file_system_scopes(self : Capability, scopes : Array[FileSystemScope]) -> Capability

#
CapabilityCompileIssue

pub struct CapabilityCompileIssue {
severity : CapabilityIssueSeverity
code : String
message : String
plugin : String
route : String
permission : String
capability : String
window_label : String
} derive(Eq,
Debug
)

#
CapabilityCompileIssue::capability

fn CapabilityCompileIssue::capability(self : CapabilityCompileIssue) -> String

#
CapabilityCompileIssue::code

#
CapabilityCompileIssue::message

fn CapabilityCompileIssue::message(self : CapabilityCompileIssue) -> String

#
CapabilityCompileIssue::permission

fn CapabilityCompileIssue::permission(self : CapabilityCompileIssue) -> String

#
CapabilityCompileIssue::plugin

fn CapabilityCompileIssue::plugin(self : CapabilityCompileIssue) -> String

#
CapabilityCompileIssue::route

#
CapabilityCompileIssue::severity

#
CapabilityCompileIssue::to_json

fn CapabilityCompileIssue::to_json(self : CapabilityCompileIssue) -> String

#
CapabilityCompileIssue::window_label

fn CapabilityCompileIssue::window_label(self : CapabilityCompileIssue) -> String

#
CapabilityCompileReport

pub struct CapabilityCompileReport {
plugin_contracts : Array[PluginContract]
command_manifest : CommandManifest
permission_manifest : PermissionManifest
issues : Array[CapabilityCompileIssue]
} derive(Eq,
Debug
)

#
CapabilityCompileReport::command_manifest

#
CapabilityCompileReport::denied_routes

fn CapabilityCompileReport::denied_routes(self : CapabilityCompileReport) -> Array[String]

#
CapabilityCompileReport::error_count

fn CapabilityCompileReport::error_count(self : CapabilityCompileReport) -> Int

#
CapabilityCompileReport::errors

#
CapabilityCompileReport::from_plugins

fn CapabilityCompileReport::from_plugins(plugins~ : Array[Plugin], capabilities~ : Array[Capability], windows~ : Array[ResolvedWindow]) -> CapabilityCompileReport

#
CapabilityCompileReport::issues

#
CapabilityCompileReport::ok

#
CapabilityCompileReport::permission_manifest

#
CapabilityCompileReport::plugin_contracts

#
CapabilityCompileReport::to_json

fn CapabilityCompileReport::to_json(self : CapabilityCompileReport) -> String

#
CapabilityCompileReport::unknown_windows

fn CapabilityCompileReport::unknown_windows(self : CapabilityCompileReport) -> Array[String]

#
CapabilityCompileReport::unused_permissions

fn CapabilityCompileReport::unused_permissions(self : CapabilityCompileReport) -> Array[String]

#
CapabilityCompileReport::warning_count

fn CapabilityCompileReport::warning_count(self : CapabilityCompileReport) -> Int

#
CapabilityCompileReport::warnings

#
CapabilityDecision

pub struct CapabilityDecision {
allowed : Bool
window_label : String
origin : String
platform : String
permission : Permission
capability : String
reason : String
} derive(Eq,
Debug
)

#
CapabilityDecision::allowed

fn CapabilityDecision::allowed(self : CapabilityDecision) -> Bool

#
CapabilityDecision::capability

fn CapabilityDecision::capability(self : CapabilityDecision) -> String

#
CapabilityDecision::denied

fn CapabilityDecision::denied(self : CapabilityDecision) -> Bool

#
CapabilityDecision::origin

fn CapabilityDecision::origin(self : CapabilityDecision) -> String

#
CapabilityDecision::permission

#
CapabilityDecision::platform

fn CapabilityDecision::platform(self : CapabilityDecision) -> String

#
CapabilityDecision::reason

fn CapabilityDecision::reason(self : CapabilityDecision) -> String

#
CapabilityDecision::to_json

fn CapabilityDecision::to_json(self : CapabilityDecision) -> String

#
CapabilityDecision::window_label

fn CapabilityDecision::window_label(self : CapabilityDecision) -> String

#
CapabilityIssueSeverity

pub(all) enum CapabilityIssueSeverity {
CapabilityWarning
CapabilityError
} derive(Eq,
Debug
)

#
CapabilityIssueSeverity::is_error

#
CapabilityIssueSeverity::name

#
CapabilityPolicy

pub struct CapabilityPolicy {
capabilities : Array[Capability]
} derive(Eq,
Debug
)

#
CapabilityPolicy::allowed_origins

fn CapabilityPolicy::allowed_origins(self : CapabilityPolicy, window_label~ : String, permission~ : Permission, platform? : String) -> Array[String]

#
CapabilityPolicy::allows

fn CapabilityPolicy::allows(self : CapabilityPolicy, window_label~ : String, permission~ : Permission, origin? : String, platform? : String) -> Bool

#
CapabilityPolicy::allows_operation

fn CapabilityPolicy::allows_operation(self : CapabilityPolicy, window_label~ : String, permission~ : Permission, scope~ : OperationScope, origin? : String, platform? : String) -> Bool

#
CapabilityPolicy::allows_window

fn CapabilityPolicy::allows_window(self : CapabilityPolicy, window_label~ : String, permission~ : Permission, platform? : String) -> Bool

#
CapabilityPolicy::capabilities

fn CapabilityPolicy::capabilities(self : CapabilityPolicy) -> Array[Capability]

#
CapabilityPolicy::evaluate

fn CapabilityPolicy::evaluate(self : CapabilityPolicy, window_label~ : String, permission~ : Permission, origin? : String, platform? : String) -> CapabilityDecision

#
CapabilityPolicy::evaluate_operation

fn CapabilityPolicy::evaluate_operation(self : CapabilityPolicy, window_label~ : String, permission~ : Permission, scope~ : OperationScope, origin? : String, platform? : String) -> CapabilityDecision

#
CapabilityPolicy::new

fn CapabilityPolicy::new(capabilities? : Array[Capability]) -> CapabilityPolicy

#
CapabilityPolicy::to_json

fn CapabilityPolicy::to_json(self : CapabilityPolicy) -> String

#
CapabilityPolicy::validate

fn CapabilityPolicy::validate(self : CapabilityPolicy) -> Array[String]

#
Cell

pub struct Cell {
id : String
html : Html
} derive(Eq,
Debug
)

#
Cell::html

fn Cell::html(self : Cell) -> Html

#
Cell::id

fn Cell::id(self : Cell) -> String

#
Cell::new

fn Cell::new(id? : String, html? : Html) -> Cell

#
Channel

pub struct Channel {
resource : ResourceEntry
next_sequence : Int
messages : Array[ChannelMessage]
closed : Bool
cancelled : Bool
} derive(Eq,
Debug
)

#
Channel::cancelled

fn Channel::cancelled(self : Channel) -> Bool

#
Channel::closed

fn Channel::closed(self : Channel) -> Bool

#
Channel::id

fn Channel::id(self : Channel) -> String

#
Channel::pending_count

fn Channel::pending_count(self : Channel) -> Int

#
Channel::resource

fn Channel::resource(self : Channel) -> ResourceEntry

#
Channel::to_json

fn Channel::to_json(self : Channel) -> String

#
ChannelMessage

pub struct ChannelMessage {
channel_id : String
sequence : Int
kind : ChannelMessageKind
payload : String
} derive(Eq,
Debug
)

#
ChannelMessage::channel_id

fn ChannelMessage::channel_id(self : ChannelMessage) -> String

#
ChannelMessage::kind

#
ChannelMessage::payload

fn ChannelMessage::payload(self : ChannelMessage) -> String

#
ChannelMessage::sequence

fn ChannelMessage::sequence(self : ChannelMessage) -> Int

#
ChannelMessage::to_json

fn ChannelMessage::to_json(self : ChannelMessage) -> String

#
ChannelMessageKind

pub(all) enum ChannelMessageKind {
ChannelData
ChannelError
ChannelEnd
ChannelCancel
} derive(Eq,
Debug
)

#
ChannelMessageKind::name

fn ChannelMessageKind::name(self : ChannelMessageKind) -> String

#
ChannelTable

pub struct ChannelTable {
resources : ResourceTable
channels : Map[String, Channel]
order : Array[String]
}

#
ChannelTable::cancel

fn ChannelTable::cancel(self : ChannelTable, id : String) -> Result[ChannelMessage, String]

#
ChannelTable::channels

fn ChannelTable::channels(self : ChannelTable) -> Array[Channel]

#
ChannelTable::cleanup_report

fn ChannelTable::cleanup_report(self : ChannelTable) -> ResourceCleanupReport

#
ChannelTable::close

fn ChannelTable::close(self : ChannelTable, id : String) -> Result[ResourceEntry, String]

#
ChannelTable::close_all

fn ChannelTable::close_all(self : ChannelTable) -> Array[ResourceEntry]

#
ChannelTable::contains

fn ChannelTable::contains(self : ChannelTable, id : String) -> Bool

#
ChannelTable::count

fn ChannelTable::count(self : ChannelTable) -> Int

#
ChannelTable::drain

fn ChannelTable::drain(self : ChannelTable, id : String) -> Result[Array[ChannelMessage], String]

#
ChannelTable::end

fn ChannelTable::end(self : ChannelTable, id : String) -> Result[ChannelMessage, String]

#
ChannelTable::fail

fn ChannelTable::fail(self : ChannelTable, id : String, message : String) -> Result[ChannelMessage, String]

#
ChannelTable::get

fn ChannelTable::get(self : ChannelTable, id : String) -> Channel?

#
ChannelTable::ids

fn ChannelTable::ids(self : ChannelTable) -> Array[String]

#
ChannelTable::leak_report

fn ChannelTable::leak_report(self : ChannelTable) -> ResourceLeakReport

#
ChannelTable::new

#
ChannelTable::open

fn ChannelTable::open(self : ChannelTable, owner? : String, name? : String, metadata? : String) -> Result[Channel, Array[String]]

#
ChannelTable::resource_entries

fn ChannelTable::resource_entries(self : ChannelTable) -> Array[ResourceEntry]

#
ChannelTable::send

fn ChannelTable::send(self : ChannelTable, id : String, payload : String) -> Result[ChannelMessage, String]

#
ChannelTable::to_json

fn ChannelTable::to_json(self : ChannelTable) -> String

#
Cmd

pub(all) enum Cmd {
None
Batch(Array[Cmd])
Effect(String)
Emit(EventTarget, Event)
Navigate(String, Source)
} derive(Eq,
Debug
)

#
Cmd::batch

fn Cmd::batch(commands : Array[Cmd]) -> Cmd

#
Cmd::effect

fn Cmd::effect(name : String) -> Cmd

#
Cmd::emit

fn Cmd::emit(event : Event, target? : EventTarget) -> Cmd

#
Cmd::is_empty

fn Cmd::is_empty(self : Cmd) -> Bool

#
Cmd::navigate

fn Cmd::navigate(window_label : String, source : Source) -> Cmd

#
CommandExecutionAffinity

pub(all) enum CommandExecutionAffinity {
MainThread
WorkerThread
AnyThread
} derive(Eq,
Debug
)

#
CommandExecutionAffinity::name

#
CommandManifest

pub struct CommandManifest {
entries : Array[CommandManifestEntry]
} derive(Eq,
Debug
)

#
CommandManifest::allowed_routes

fn CommandManifest::allowed_routes(self : CommandManifest, window_label : String) -> Array[String]

#
CommandManifest::allows

fn CommandManifest::allows(self : CommandManifest, route : String, window_label~ : String, origin? : String, platform? : String) -> Bool

#
CommandManifest::entries

#
CommandManifest::entry

fn CommandManifest::entry(self : CommandManifest, route : String) -> CommandManifestEntry?

#
CommandManifest::from_plugins

fn CommandManifest::from_plugins(plugins~ : Array[Plugin], capabilities~ : Array[Capability], windows~ : Array[ResolvedWindow], platform? : String) -> CommandManifest

#
CommandManifest::new

#
CommandManifest::routes

fn CommandManifest::routes(self : CommandManifest) -> Array[String]

#
CommandManifest::routes_by_affinity

fn CommandManifest::routes_by_affinity(self : CommandManifest, affinity : CommandExecutionAffinity) -> Array[String]

#
CommandManifest::routes_by_mode

fn CommandManifest::routes_by_mode(self : CommandManifest, mode : CommandMode) -> Array[String]

#
CommandManifest::to_json

fn CommandManifest::to_json(self : CommandManifest) -> String

#
CommandManifestEntry

pub struct CommandManifestEntry {
plugin : String
command : String
route : String
mode : CommandMode
affinity : CommandExecutionAffinity
permission : Permission
request_schema : IpcSchema
response_schema : IpcSchema
allowed_windows : Array[String]
allowed_origins : Array[String]
allowed_platforms : Array[String]
} derive(Eq,
Debug
)

#
CommandManifestEntry::affinity

#
CommandManifestEntry::allowed_for_origin

fn CommandManifestEntry::allowed_for_origin(self : CommandManifestEntry, origin : String) -> Bool

#
CommandManifestEntry::allowed_in_window

fn CommandManifestEntry::allowed_in_window(self : CommandManifestEntry, window_label : String) -> Bool

#
CommandManifestEntry::allowed_on_platform

fn CommandManifestEntry::allowed_on_platform(self : CommandManifestEntry, platform : String) -> Bool

#
CommandManifestEntry::allowed_origins

fn CommandManifestEntry::allowed_origins(self : CommandManifestEntry) -> Array[String]

#
CommandManifestEntry::allowed_platforms

fn CommandManifestEntry::allowed_platforms(self : CommandManifestEntry) -> Array[String]

#
CommandManifestEntry::allowed_windows

fn CommandManifestEntry::allowed_windows(self : CommandManifestEntry) -> Array[String]

#
CommandManifestEntry::command

fn CommandManifestEntry::command(self : CommandManifestEntry) -> String

#
CommandManifestEntry::mode

#
CommandManifestEntry::permission

#
CommandManifestEntry::plugin

fn CommandManifestEntry::plugin(self : CommandManifestEntry) -> String

#
CommandManifestEntry::request_schema

#
CommandManifestEntry::response_schema

fn CommandManifestEntry::response_schema(self : CommandManifestEntry) -> IpcSchema

#
CommandManifestEntry::route

fn CommandManifestEntry::route(self : CommandManifestEntry) -> String

#
CommandManifestEntry::to_json

fn CommandManifestEntry::to_json(self : CommandManifestEntry) -> String

#
CommandMode

pub(all) enum CommandMode {
Sync
Async
Stream
Event
} derive(Eq,
Debug
)

#
CommandMode::name

fn CommandMode::name(self : CommandMode) -> String

#
CommandRegistry

pub struct CommandRegistry {
commands : Map[String, RegisteredCommand]
duplicate_routes : Array[String]
}

#
CommandRegistry::async_routes

fn CommandRegistry::async_routes(self : CommandRegistry) -> Array[String]

#
CommandRegistry::contains

fn CommandRegistry::contains(self : CommandRegistry, route : String) -> Bool

#
CommandRegistry::dispatch

fn CommandRegistry::dispatch(self : CommandRegistry, request : InvokeRequest, capabilities? : Array[Capability]) -> InvokeResponse

#
CommandRegistry::dispatch_async

async fn CommandRegistry::dispatch_async(self : CommandRegistry, request : InvokeRequest, capabilities? : Array[Capability]) -> InvokeResponse

#
CommandRegistry::dispatch_with_permission

fn CommandRegistry::dispatch_with_permission(self : CommandRegistry, request : InvokeRequest, permission~ : Permission, capabilities? : Array[Capability]) -> InvokeResponse

#
CommandRegistry::dispatch_with_permission_async

async fn CommandRegistry::dispatch_with_permission_async(self : CommandRegistry, request : InvokeRequest, permission~ : Permission, capabilities? : Array[Capability]) -> InvokeResponse

#
CommandRegistry::dispatch_with_profile

fn CommandRegistry::dispatch_with_profile(self : CommandRegistry, profile : SecurityProfile, request : InvokeRequest) -> InvokeResponse

#
CommandRegistry::dispatch_with_profile_async

async fn CommandRegistry::dispatch_with_profile_async(self : CommandRegistry, profile : SecurityProfile, request : InvokeRequest) -> InvokeResponse

#
CommandRegistry::invoke_contract

fn CommandRegistry::invoke_contract(self : CommandRegistry, profile : SecurityProfile, route : String) -> InvokeContract?

#
CommandRegistry::invoke_contract_report

fn CommandRegistry::invoke_contract_report(self : CommandRegistry, profile : SecurityProfile) -> InvokeContractReport

#
CommandRegistry::invoke_contracts

fn CommandRegistry::invoke_contracts(self : CommandRegistry, profile : SecurityProfile) -> Array[InvokeContract]

#
CommandRegistry::merge

#
CommandRegistry::new

#
CommandRegistry::register

#
CommandRegistry::register_async_fn

fn CommandRegistry::register_async_fn(self : CommandRegistry, route : String, permission? : Permission, operation_scope? : (InvokeRequest) -> Result[OperationScope, String], handler~ : async (String) -> Result[String, String]) -> CommandRegistry

#
CommandRegistry::register_fn

fn CommandRegistry::register_fn(self : CommandRegistry, route : String, permission? : Permission, operation_scope? : (InvokeRequest) -> Result[OperationScope, String], handler~ : (String) -> Result[String, String]) -> CommandRegistry

#
CommandRegistry::register_stream_fn

fn CommandRegistry::register_stream_fn(self : CommandRegistry, route : String, permission? : Permission, operation_scope? : (InvokeRequest) -> Result[OperationScope, String], handler~ : (String, StreamSink) -> Result[Unit, String]) -> CommandRegistry

#
CommandRegistry::routes

fn CommandRegistry::routes(self : CommandRegistry) -> Array[String]

#
CommandRegistry::sync_routes

fn CommandRegistry::sync_routes(self : CommandRegistry) -> Array[String]

#
CommandRegistry::validate

fn CommandRegistry::validate(self : CommandRegistry) -> Array[String]

#
CommandSpec

pub struct CommandSpec {
name : String
mode : CommandMode
affinity : CommandExecutionAffinity
permission : Permission
request_schema : IpcSchema
response_schema : IpcSchema
} derive(Eq,
Debug
)

#
CommandSpec::affinity

#
CommandSpec::mode

fn CommandSpec::mode(self : CommandSpec) -> CommandMode

#
CommandSpec::name

fn CommandSpec::name(self : CommandSpec) -> String

#
CommandSpec::new

fn CommandSpec::new(name : String, mode? : CommandMode, affinity? : CommandExecutionAffinity, permission? : Permission, request? : IpcSchema, response? : IpcSchema) -> CommandSpec

#
CommandSpec::permission

fn CommandSpec::permission(self : CommandSpec) -> Permission

#
CommandSpec::request_schema

fn CommandSpec::request_schema(self : CommandSpec) -> IpcSchema

#
CommandSpec::response_schema

fn CommandSpec::response_schema(self : CommandSpec) -> IpcSchema

#
CommandSpec::with_affinity

fn CommandSpec::with_affinity(self : CommandSpec, affinity : CommandExecutionAffinity) -> CommandSpec

#
CommandSpec::with_schema

fn CommandSpec::with_schema(self : CommandSpec, request? : IpcSchema, response? : IpcSchema) -> CommandSpec

#
Event

pub struct Event {
name : String
payload : String
} derive(Eq,
Debug
)

#
Event::name

fn Event::name(self : Event) -> String

#
Event::new

fn Event::new(name : String, payload? : String) -> Event

#
Event::payload

fn Event::payload(self : Event) -> String

#
Event::to_json

fn Event::to_json(self : Event) -> String

#
Event::validate

fn Event::validate(self : Event) -> Array[String]

#
EventBus

pub struct EventBus {
next_listener_sequence : Int
listeners : Map[String, EventListener]
order : Array[String]
} derive(Eq,
Debug
)

#
EventBus::clear

fn EventBus::clear(self : EventBus) -> Array[EventListener]

#
EventBus::emit

fn EventBus::emit(self : EventBus, event : Event, target? : EventTarget) -> Result[Array[EventDelivery], Array[String]]

#
EventBus::listen

fn EventBus::listen(self : EventBus, name : String, target? : EventTarget, once? : Bool) -> Result[EventListener, Array[String]]

#
EventBus::listener

fn EventBus::listener(self : EventBus, id : String) -> EventListener?

#
EventBus::listener_count

fn EventBus::listener_count(self : EventBus) -> Int

#
EventBus::listeners

fn EventBus::listeners(self : EventBus) -> Array[EventListener]

#
EventBus::listeners_for

fn EventBus::listeners_for(self : EventBus, name : String, target? : EventTarget) -> Array[EventListener]

#
EventBus::new

fn EventBus::new() -> EventBus

#
EventBus::once

fn EventBus::once(self : EventBus, name : String, target? : EventTarget) -> Result[EventListener, Array[String]]

#
EventBus::remove_target

fn EventBus::remove_target(self : EventBus, target : EventTarget) -> Array[EventListener]

#
EventBus::to_json

fn EventBus::to_json(self : EventBus) -> String

#
EventBus::unlisten

fn EventBus::unlisten(self : EventBus, id : String) -> Result[EventListener, String]

#
EventDelivery

pub struct EventDelivery {
listener_id : String
target : EventTarget
event : Event
} derive(Eq,
Debug
)

#
EventDelivery::event

fn EventDelivery::event(self : EventDelivery) -> Event

#
EventDelivery::listener_id

fn EventDelivery::listener_id(self : EventDelivery) -> String

#
EventDelivery::target

#
EventDelivery::to_json

fn EventDelivery::to_json(self : EventDelivery) -> String

#
EventListener

pub struct EventListener {
id : String
name : String
target : EventTarget
once : Bool
} derive(Eq,
Debug
)

#
EventListener::id

fn EventListener::id(self : EventListener) -> String

#
EventListener::name

fn EventListener::name(self : EventListener) -> String

#
EventListener::once

fn EventListener::once(self : EventListener) -> Bool

#
EventListener::target

#
EventListener::to_json

fn EventListener::to_json(self : EventListener) -> String

#
EventTarget

pub(all) enum EventTarget {
AppTarget
WindowTarget(String)
WebviewTarget(String)
} derive(Eq,
Debug
)

#
EventTarget::kind

fn EventTarget::kind(self : EventTarget) -> String

#
EventTarget::label

fn EventTarget::label(self : EventTarget) -> String?

#
EventTarget::to_json

fn EventTarget::to_json(self : EventTarget) -> String

#
EventTarget::validate

fn EventTarget::validate(self : EventTarget) -> Array[String]

#
FileSystemScope

pub struct FileSystemScope {
name : String
root : String
writable : Bool
} derive(Eq,
Debug
)

#
FileSystemScope::name

fn FileSystemScope::name(self : FileSystemScope) -> String

#
FileSystemScope::new

fn FileSystemScope::new(name~ : String, root~ : String, writable? : Bool) -> FileSystemScope

#
FileSystemScope::root

fn FileSystemScope::root(self : FileSystemScope) -> String

#
FileSystemScope::to_json

fn FileSystemScope::to_json(self : FileSystemScope) -> String

#
FileSystemScope::validate

fn FileSystemScope::validate(self : FileSystemScope) -> Array[String]

#
FileSystemScope::writable

fn FileSystemScope::writable(self : FileSystemScope) -> Bool

#
FrontendEventDispatch

pub struct FrontendEventDispatch {
window_label : String
hook : String
event : Event
script : String
} derive(Eq,
Debug
)

#
FrontendEventDispatch::event

#
FrontendEventDispatch::hook

fn FrontendEventDispatch::hook(self : FrontendEventDispatch) -> String

#
FrontendEventDispatch::new

fn FrontendEventDispatch::new(window_label~ : String, hook? : String, event~ : Event) -> FrontendEventDispatch

#
FrontendEventDispatch::script

fn FrontendEventDispatch::script(self : FrontendEventDispatch) -> String

#
FrontendEventDispatch::to_json

fn FrontendEventDispatch::to_json(self : FrontendEventDispatch) -> String

#
FrontendEventDispatch::window_label

fn FrontendEventDispatch::window_label(self : FrontendEventDispatch) -> String

#
Html

pub struct Html {
content : String
} derive(Eq,
Debug
)

#
Html::content

fn Html::content(self : Html) -> String

#
Html::empty

fn Html::empty() -> Html

#
Html::text

fn Html::text(content : String) -> Html

#
InvokeContract

pub struct InvokeContract {
route : String
plugin : String
command : String
mode : CommandMode
affinity : CommandExecutionAffinity
permission : Permission
request_schema : IpcSchema
response_schema : IpcSchema
allowed_windows : Array[String]
allowed_origins : Array[String]
requires_registered_handler : Bool
registered : Bool
registered_mode : CommandMode?
registered_permission : Permission?
exposed : Bool
operation_scope_configured : Bool
operation_scope_required : Bool
problems : Array[String]
} derive(Eq,
Debug
)

#
InvokeContract::affinity

#
InvokeContract::allowed_origins

fn InvokeContract::allowed_origins(self : InvokeContract) -> Array[String]

#
InvokeContract::allowed_windows

fn InvokeContract::allowed_windows(self : InvokeContract) -> Array[String]

#
InvokeContract::command

fn InvokeContract::command(self : InvokeContract) -> String

#
InvokeContract::dispatchable

fn InvokeContract::dispatchable(self : InvokeContract) -> Bool

#
InvokeContract::exposed

fn InvokeContract::exposed(self : InvokeContract) -> Bool

#
InvokeContract::mode

#
InvokeContract::ok

fn InvokeContract::ok(self : InvokeContract) -> Bool

#
InvokeContract::operation_scope_configured

fn InvokeContract::operation_scope_configured(self : InvokeContract) -> Bool

#
InvokeContract::operation_scope_required

fn InvokeContract::operation_scope_required(self : InvokeContract) -> Bool

#
InvokeContract::permission

fn InvokeContract::permission(self : InvokeContract) -> Permission

#
InvokeContract::plugin

fn InvokeContract::plugin(self : InvokeContract) -> String

#
InvokeContract::problems

fn InvokeContract::problems(self : InvokeContract) -> Array[String]

#
InvokeContract::registered

fn InvokeContract::registered(self : InvokeContract) -> Bool

#
InvokeContract::registered_mode

fn InvokeContract::registered_mode(self : InvokeContract) -> CommandMode?

#
InvokeContract::registered_permission

fn InvokeContract::registered_permission(self : InvokeContract) -> Permission?

#
InvokeContract::request_schema

fn InvokeContract::request_schema(self : InvokeContract) -> IpcSchema

#
InvokeContract::requires_registered_handler

fn InvokeContract::requires_registered_handler(self : InvokeContract) -> Bool

#
InvokeContract::response_schema

fn InvokeContract::response_schema(self : InvokeContract) -> IpcSchema

#
InvokeContract::route

fn InvokeContract::route(self : InvokeContract) -> String

#
InvokeContract::to_json

fn InvokeContract::to_json(self : InvokeContract) -> String

#
InvokeContractReport

pub struct InvokeContractReport {
contracts : Array[InvokeContract]
undeclared_routes : Array[String]
duplicate_routes : Array[String]
problems : Array[String]
} derive(Eq,
Debug
)

#
InvokeContractReport::contracts

#
InvokeContractReport::dispatchable_routes

fn InvokeContractReport::dispatchable_routes(self : InvokeContractReport) -> Array[String]

#
InvokeContractReport::duplicate_routes

fn InvokeContractReport::duplicate_routes(self : InvokeContractReport) -> Array[String]

#
InvokeContractReport::ok

#
InvokeContractReport::problems

fn InvokeContractReport::problems(self : InvokeContractReport) -> Array[String]

#
InvokeContractReport::to_json

fn InvokeContractReport::to_json(self : InvokeContractReport) -> String

#
InvokeContractReport::undeclared_routes

fn InvokeContractReport::undeclared_routes(self : InvokeContractReport) -> Array[String]

#
InvokeErrorKind

pub(all) enum InvokeErrorKind {
InvalidRequest
UnknownCommand
PermissionDenied
AsyncRequired
HandlerError
TransportError
Timeout
Cancelled
} derive(Eq,
Debug
)

#
InvokeErrorKind::name

fn InvokeErrorKind::name(self : InvokeErrorKind) -> String

#
InvokeFailure

pub struct InvokeFailure {
kind : InvokeErrorKind
message : String
route : String
} derive(Eq,
Debug
)

#
InvokeFailure::async_required

fn InvokeFailure::async_required(route : String) -> InvokeFailure

#
InvokeFailure::cancelled

fn InvokeFailure::cancelled(message? : String, route? : String) -> InvokeFailure

#
InvokeFailure::handler_error

fn InvokeFailure::handler_error(message : String, route? : String) -> InvokeFailure

#
InvokeFailure::invalid_request

fn InvokeFailure::invalid_request(message : String) -> InvokeFailure

#
InvokeFailure::kind

#
InvokeFailure::message

fn InvokeFailure::message(self : InvokeFailure) -> String

#
InvokeFailure::new

fn InvokeFailure::new(kind~ : InvokeErrorKind, message~ : String, route? : String) -> InvokeFailure

#
InvokeFailure::permission_denied

fn InvokeFailure::permission_denied(route : String) -> InvokeFailure

#
InvokeFailure::route

fn InvokeFailure::route(self : InvokeFailure) -> String?

#
InvokeFailure::timeout

fn InvokeFailure::timeout(message? : String, route? : String) -> InvokeFailure

#
InvokeFailure::to_json

fn InvokeFailure::to_json(self : InvokeFailure) -> String

#
InvokeFailure::transport_error

fn InvokeFailure::transport_error(message : String) -> InvokeFailure

#
InvokeFailure::unknown_command

fn InvokeFailure::unknown_command(route : String) -> InvokeFailure

#
InvokeRequest

pub struct InvokeRequest {
id : String
window_label : String
plugin : String
command : String
payload : String
origin : String
callback_id : String
error_id : String
} derive(Eq,
Debug
)

#
InvokeRequest::callback_id

fn InvokeRequest::callback_id(self : InvokeRequest) -> String

#
InvokeRequest::command

fn InvokeRequest::command(self : InvokeRequest) -> String

#
InvokeRequest::error_id

fn InvokeRequest::error_id(self : InvokeRequest) -> String

#
InvokeRequest::has_resolver_ids

fn InvokeRequest::has_resolver_ids(self : InvokeRequest) -> Bool

#
InvokeRequest::id

fn InvokeRequest::id(self : InvokeRequest) -> String

#
InvokeRequest::new

fn InvokeRequest::new(id~ : String, window_label~ : String, plugin~ : String, command~ : String, payload? : String, origin? : String, callback_id? : String, error_id? : String) -> InvokeRequest

#
InvokeRequest::origin

fn InvokeRequest::origin(self : InvokeRequest) -> String

#
InvokeRequest::payload

fn InvokeRequest::payload(self : InvokeRequest) -> String

#
InvokeRequest::plugin

fn InvokeRequest::plugin(self : InvokeRequest) -> String

#
InvokeRequest::route

fn InvokeRequest::route(self : InvokeRequest) -> String

#
InvokeRequest::validate

fn InvokeRequest::validate(self : InvokeRequest) -> Array[String]

#
InvokeRequest::window_label

fn InvokeRequest::window_label(self : InvokeRequest) -> String

#
InvokeResponse

pub(all) enum InvokeResponse {
InvokeOk(String, String)
InvokeError(String, InvokeFailure)
} derive(Eq,
Debug
)

#
InvokeResponse::async_required

fn InvokeResponse::async_required(id : String, route : String) -> InvokeResponse

#
InvokeResponse::error

fn InvokeResponse::error(id : String, message : String) -> InvokeResponse

#
InvokeResponse::error_kind

fn InvokeResponse::error_kind(self : InvokeResponse) -> InvokeErrorKind?

#
InvokeResponse::error_message

fn InvokeResponse::error_message(self : InvokeResponse) -> String?

#
InvokeResponse::failure

fn InvokeResponse::failure(id : String, failure : InvokeFailure) -> InvokeResponse

#
InvokeResponse::failure_info

fn InvokeResponse::failure_info(self : InvokeResponse) -> InvokeFailure?

#
InvokeResponse::handler_error

fn InvokeResponse::handler_error(id : String, message : String, route? : String) -> InvokeResponse

#
InvokeResponse::id

fn InvokeResponse::id(self : InvokeResponse) -> String

#
InvokeResponse::invalid_request

fn InvokeResponse::invalid_request(id : String, message : String) -> InvokeResponse

#
InvokeResponse::ok

fn InvokeResponse::ok(id : String, payload : String) -> InvokeResponse

#
InvokeResponse::payload

fn InvokeResponse::payload(self : InvokeResponse) -> String?

#
InvokeResponse::permission_denied

fn InvokeResponse::permission_denied(id : String, route : String) -> InvokeResponse

#
InvokeResponse::unknown_command

fn InvokeResponse::unknown_command(id : String, route : String) -> InvokeResponse

#
IpcSchema

pub struct IpcSchema {
name : String
typescript : String
description : String
} derive(Eq,
Debug
)

#
IpcSchema::accepts_payload

fn IpcSchema::accepts_payload(self : IpcSchema, payload : String) -> Bool

#
IpcSchema::any

fn IpcSchema::any() -> IpcSchema

#
IpcSchema::array

fn IpcSchema::array(item : IpcSchema) -> IpcSchema

#
IpcSchema::boolean

fn IpcSchema::boolean() -> IpcSchema

#
IpcSchema::description

fn IpcSchema::description(self : IpcSchema) -> String

#
IpcSchema::json

fn IpcSchema::json() -> IpcSchema

#
IpcSchema::name

fn IpcSchema::name(self : IpcSchema) -> String

#
IpcSchema::new

fn IpcSchema::new(name~ : String, typescript? : String, description? : String) -> IpcSchema

#
IpcSchema::number

fn IpcSchema::number() -> IpcSchema

#
IpcSchema::object

fn IpcSchema::object(name : String, typescript : String, description? : String) -> IpcSchema

#
IpcSchema::string

fn IpcSchema::string() -> IpcSchema

#
IpcSchema::to_json

fn IpcSchema::to_json(self : IpcSchema) -> String

#
IpcSchema::typescript

fn IpcSchema::typescript(self : IpcSchema) -> String

#
IpcSchema::unit

fn IpcSchema::unit() -> IpcSchema

#
IpcSchema::validate

fn IpcSchema::validate(self : IpcSchema) -> Array[String]

#
IpcSchema::validate_payload

fn IpcSchema::validate_payload(self : IpcSchema, payload : String) -> String?

#
LaunchPlan

pub struct LaunchPlan {
root : Cell
windows : Array[WindowConfig]
plugins : Array[Plugin]
capabilities : Array[Capability]
startup : Cmd
lifecycle_hooks : Array[LifecycleHook]
} derive(Eq,
Debug
)

#
LaunchPlan::capabilities

fn LaunchPlan::capabilities(self : LaunchPlan) -> Array[Capability]

#
LaunchPlan::capability_count

fn LaunchPlan::capability_count(self : LaunchPlan) -> Int

#
LaunchPlan::command_routes

fn LaunchPlan::command_routes(self : LaunchPlan) -> Array[String]

#
LaunchPlan::lifecycle_hooks

fn LaunchPlan::lifecycle_hooks(self : LaunchPlan) -> Array[LifecycleHook]

#
LaunchPlan::plugin_count

fn LaunchPlan::plugin_count(self : LaunchPlan) -> Int

#
LaunchPlan::plugins

fn LaunchPlan::plugins(self : LaunchPlan) -> Array[Plugin]

#
LaunchPlan::startup

fn LaunchPlan::startup(self : LaunchPlan) -> Cmd

#
LaunchPlan::window_count

fn LaunchPlan::window_count(self : LaunchPlan) -> Int

#
LaunchPlan::windows

fn LaunchPlan::windows(self : LaunchPlan) -> Array[WindowConfig]

#
LepusaMoonSuiteProductHome

pub(all) struct LepusaMoonSuiteProductHome {
product_id : String
state_path : String
service_path : String
runtime_path : String
update_metadata_path : String
tmp_path : String
} derive(Eq, ToJson,
Debug
,
FromJson
)

#
LifecycleEvent

pub(all) enum LifecycleEvent {
AppStarted
AppWillExit
PluginSetup(String)
PluginReady(String)
PluginWillExit(String)
WindowCloseRequested(String)
WindowClosed(String)
} derive(Eq,
Debug
)

#
LifecycleEvent::app_started

fn LifecycleEvent::app_started() -> LifecycleEvent

#
LifecycleEvent::app_will_exit

fn LifecycleEvent::app_will_exit() -> LifecycleEvent

#
LifecycleEvent::plugin_ready

fn LifecycleEvent::plugin_ready(name : String) -> LifecycleEvent

#
LifecycleEvent::plugin_setup

fn LifecycleEvent::plugin_setup(name : String) -> LifecycleEvent

#
LifecycleEvent::plugin_will_exit

fn LifecycleEvent::plugin_will_exit(name : String) -> LifecycleEvent

#
LifecycleEvent::to_json

fn LifecycleEvent::to_json(self : LifecycleEvent) -> String

#
LifecycleEvent::window_close_requested

fn LifecycleEvent::window_close_requested(label : String) -> LifecycleEvent

#
LifecycleEvent::window_closed

fn LifecycleEvent::window_closed(label : String) -> LifecycleEvent

#
LifecycleHook

pub struct LifecycleHook {
event : LifecycleEvent
command : Cmd
} derive(Eq,
Debug
)

#
LifecycleHook::command

fn LifecycleHook::command(self : LifecycleHook) -> Cmd

#
LifecycleHook::event

#
LifecycleHook::new

fn LifecycleHook::new(event : LifecycleEvent, command : Cmd) -> LifecycleHook

#
LocalService

pub struct LocalService {
name : String
command : Array[String]
readiness_url : String
} derive(Eq,
Debug
)

#
LocalService::command

fn LocalService::command(self : LocalService) -> Array[String]

#
LocalService::name

fn LocalService::name(self : LocalService) -> String

#
LocalService::new

fn LocalService::new(name~ : String, command~ : Array[String], readiness_url~ : String) -> LocalService

#
LocalService::readiness_url

fn LocalService::readiness_url(self : LocalService) -> String

#
LocalService::to_json

fn LocalService::to_json(self : LocalService) -> String

#
LocalService::validate

fn LocalService::validate(self : LocalService) -> Array[String]

#
LocalServiceSupervisorAction

pub(all) enum LocalServiceSupervisorAction {
StartLocalService(LocalService)
WaitLocalServiceReady(LocalService)
StopLocalService(LocalService)
} derive(Eq,
Debug
)

#
LocalServiceSupervisorAction::kind

#
LocalServiceSupervisorAction::service

#
LocalServiceSupervisorAction::to_json

#
LocalServiceSupervisorPlan

pub struct LocalServiceSupervisorPlan {
services : Array[LocalService]
startup_services : Array[LocalService]
startup_actions : Array[LocalServiceSupervisorAction]
shutdown_actions : Array[LocalServiceSupervisorAction]
} derive(Eq,
Debug
)

#
LocalServiceSupervisorPlan::new

#
LocalServiceSupervisorPlan::requires_supervisor

fn LocalServiceSupervisorPlan::requires_supervisor(self : LocalServiceSupervisorPlan) -> Bool

#
LocalServiceSupervisorPlan::services

#
LocalServiceSupervisorPlan::shutdown_actions

#
LocalServiceSupervisorPlan::start_order

#
LocalServiceSupervisorPlan::startup_actions

#
LocalServiceSupervisorPlan::startup_services

#
LocalServiceSupervisorPlan::to_json

#
LocalServiceSupervisorPlan::validate

#
LocalhostSource

pub struct LocalhostSource {
host : String
port : Int
path : String
readiness_path : String?
command : Array[String]
} derive(Eq,
Debug
)

#
LocalhostSource::command

fn LocalhostSource::command(self : LocalhostSource) -> Array[String]

#
LocalhostSource::host

fn LocalhostSource::host(self : LocalhostSource) -> String

#
LocalhostSource::local_service

fn LocalhostSource::local_service(self : LocalhostSource, name : String) -> LocalService?

#
LocalhostSource::new

fn LocalhostSource::new(port~ : Int, host? : String, path? : String, readiness_path? : String, command? : Array[String]) -> LocalhostSource

#
LocalhostSource::path

fn LocalhostSource::path(self : LocalhostSource) -> String

#
LocalhostSource::port

fn LocalhostSource::port(self : LocalhostSource) -> Int

#
LocalhostSource::readiness_path

fn LocalhostSource::readiness_path(self : LocalhostSource) -> String?

#
LocalhostSource::readiness_url

fn LocalhostSource::readiness_url(self : LocalhostSource) -> String

#
LocalhostSource::url

fn LocalhostSource::url(self : LocalhostSource) -> String

#
LocalhostSource::validate

fn LocalhostSource::validate(self : LocalhostSource) -> Array[String]

#
OperationScope

pub struct OperationScope {
kind : OperationScopeKind
value : String
writable : Bool
} derive(Eq,
Debug
)

#
OperationScope::allows

fn OperationScope::allows(self : OperationScope, requested : OperationScope) -> Bool

#
OperationScope::command

fn OperationScope::command(self : OperationScope) -> String

#
OperationScope::kind

#
OperationScope::origin

fn OperationScope::origin(self : OperationScope) -> String

#
OperationScope::path

fn OperationScope::path(root~ : String, writable? : Bool) -> OperationScope

#
OperationScope::root

fn OperationScope::root(self : OperationScope) -> String

#
OperationScope::shell

fn OperationScope::shell(command : String) -> OperationScope

#
OperationScope::to_json

fn OperationScope::to_json(self : OperationScope) -> String

#
OperationScope::url

fn OperationScope::url(origin : String) -> OperationScope

#
OperationScope::validate

fn OperationScope::validate(self : OperationScope) -> Array[String]

#
OperationScope::value

fn OperationScope::value(self : OperationScope) -> String

#
OperationScope::writable

fn OperationScope::writable(self : OperationScope) -> Bool

#
OperationScopeKind

pub(all) enum OperationScopeKind {
PathOperation
ShellOperation
UrlOperation
} derive(Eq,
Debug
)

#
OperationScopeKind::name

fn OperationScopeKind::name(self : OperationScopeKind) -> String

#
ParsedLaunchAssetUrl

type ParsedLaunchAssetUrl derive(Eq,
Debug
)

#
Permission

pub(all) enum Permission {
App
FileSystemRead
FileSystemWrite
FileDialog
Network
Localhost
DeepLink
SingleInstance
Menu
Tray
AutoLaunch
Window
WindowState
Updater
ServiceDiscovery
Shell
Opener
Dialog
Clipboard
Notification
ProcessInfo
ProcessEnvironment
ProcessControl
Custom(String)
} derive(Eq,
Debug
)

#
Permission::command

fn Permission::command(route : String) -> Permission

#
Permission::name

fn Permission::name(self : Permission) -> String

#
Permission::named

fn Permission::named(name : String) -> Result[Permission, String]

#
PermissionManifest

pub struct PermissionManifest {
permissions : Array[PermissionManifestPermission]
} derive(Eq,
Debug
)

#
PermissionManifest::denied_routes

fn PermissionManifest::denied_routes(self : PermissionManifest) -> Array[String]

#
PermissionManifest::from_command_manifest

fn PermissionManifest::from_command_manifest(manifest : CommandManifest, capabilities~ : Array[Capability]) -> PermissionManifest

#
PermissionManifest::from_plugins

fn PermissionManifest::from_plugins(plugins~ : Array[Plugin], capabilities~ : Array[Capability], windows~ : Array[ResolvedWindow], platform? : String) -> PermissionManifest

#
PermissionManifest::new

#
PermissionManifest::permission

fn PermissionManifest::permission(self : PermissionManifest, name : String) -> PermissionManifestPermission?

#
PermissionManifest::permission_names

fn PermissionManifest::permission_names(self : PermissionManifest) -> Array[String]

#
PermissionManifest::permissions

#
PermissionManifest::to_json

fn PermissionManifest::to_json(self : PermissionManifest) -> String

#
PermissionManifestCommand

pub struct PermissionManifestCommand {
plugin : String
command : String
route : String
mode : CommandMode
affinity : CommandExecutionAffinity
allowed_windows : Array[String]
allowed_origins : Array[String]
allowed_platforms : Array[String]
} derive(Eq,
Debug
)

#
PermissionManifestCommand::affinity

#
PermissionManifestCommand::allowed_origins

fn PermissionManifestCommand::allowed_origins(self : PermissionManifestCommand) -> Array[String]

#
PermissionManifestCommand::allowed_platforms

fn PermissionManifestCommand::allowed_platforms(self : PermissionManifestCommand) -> Array[String]

#
PermissionManifestCommand::allowed_windows

fn PermissionManifestCommand::allowed_windows(self : PermissionManifestCommand) -> Array[String]

#
PermissionManifestCommand::command

#
PermissionManifestCommand::mode

#
PermissionManifestCommand::plugin

#
PermissionManifestCommand::route

#
PermissionManifestCommand::to_json

#
PermissionManifestGrant

pub struct PermissionManifestGrant {
capability : String
windows : Array[String]
origins : Array[String]
platforms : Array[String]
operation_scopes : Array[OperationScope]
} derive(Eq,
Debug
)

#
PermissionManifestGrant::capability

fn PermissionManifestGrant::capability(self : PermissionManifestGrant) -> String

#
PermissionManifestGrant::operation_scopes

#
PermissionManifestGrant::origins

#
PermissionManifestGrant::platforms

fn PermissionManifestGrant::platforms(self : PermissionManifestGrant) -> Array[String]

#
PermissionManifestGrant::to_json

fn PermissionManifestGrant::to_json(self : PermissionManifestGrant) -> String

#
PermissionManifestGrant::windows

#
PermissionManifestPermission

pub struct PermissionManifestPermission {
name : String
commands : Array[PermissionManifestCommand]
grants : Array[PermissionManifestGrant]
allowed_windows : Array[String]
allowed_origins : Array[String]
allowed_platforms : Array[String]
denied_routes : Array[String]
} derive(Eq,
Debug
)

#
PermissionManifestPermission::allowed_origins

fn PermissionManifestPermission::allowed_origins(self : PermissionManifestPermission) -> Array[String]

#
PermissionManifestPermission::allowed_platforms

fn PermissionManifestPermission::allowed_platforms(self : PermissionManifestPermission) -> Array[String]

#
PermissionManifestPermission::allowed_windows

fn PermissionManifestPermission::allowed_windows(self : PermissionManifestPermission) -> Array[String]

#
PermissionManifestPermission::commands

#
PermissionManifestPermission::denied_routes

#
PermissionManifestPermission::grants

#
PermissionManifestPermission::name

#
PermissionManifestPermission::to_json

#
Plugin

pub struct Plugin {
name : String
commands : Array[CommandSpec]
lifecycle_hooks : Array[LifecycleHook]
} derive(Eq,
Debug
)

#
Plugin::command

fn Plugin::command(self : Plugin, name : String, mode? : CommandMode, affinity? : CommandExecutionAffinity, permission? : Permission, request? : IpcSchema, response? : IpcSchema) -> Plugin

#
Plugin::command_async

fn Plugin::command_async(self : Plugin, name : String, permission? : Permission, request? : IpcSchema, response? : IpcSchema, affinity? : CommandExecutionAffinity) -> Plugin

#
Plugin::command_event

fn Plugin::command_event(self : Plugin, name : String, permission? : Permission, request? : IpcSchema, response? : IpcSchema, affinity? : CommandExecutionAffinity) -> Plugin

#
Plugin::command_names

fn Plugin::command_names(self : Plugin) -> Array[String]

#
Plugin::command_routes

fn Plugin::command_routes(self : Plugin) -> Array[String]

#
Plugin::command_stream

fn Plugin::command_stream(self : Plugin, name : String, permission? : Permission, request? : IpcSchema, response? : IpcSchema, affinity? : CommandExecutionAffinity) -> Plugin

#
Plugin::command_sync

fn Plugin::command_sync(self : Plugin, name : String, permission? : Permission, request? : IpcSchema, response? : IpcSchema, affinity? : CommandExecutionAffinity) -> Plugin

#
Plugin::commands

fn Plugin::commands(self : Plugin) -> Array[CommandSpec]

#
Plugin::contract

fn Plugin::contract(self : Plugin) -> PluginContract

#
Plugin::lifecycle_hooks

fn Plugin::lifecycle_hooks(self : Plugin) -> Array[LifecycleHook]

#
Plugin::name

fn Plugin::name(self : Plugin) -> String

#
Plugin::new

fn Plugin::new(name : String) -> Plugin

#
Plugin::on_ready

fn Plugin::on_ready(self : Plugin, command : Cmd) -> Plugin

#
Plugin::on_setup

fn Plugin::on_setup(self : Plugin, command : Cmd) -> Plugin

#
Plugin::on_will_exit

fn Plugin::on_will_exit(self : Plugin, command : Cmd) -> Plugin

#
Plugin::validate

fn Plugin::validate(self : Plugin) -> Array[String]

#
Plugin::with_lifecycle

fn Plugin::with_lifecycle(self : Plugin, event : LifecycleEvent, command : Cmd) -> Plugin

#
PluginCommandContract

pub struct PluginCommandContract {
plugin : String
name : String
route : String
mode : CommandMode
affinity : CommandExecutionAffinity
permission : Permission
request_schema : IpcSchema
response_schema : IpcSchema
} derive(Eq,
Debug
)

#
PluginCommandContract::affinity

#
PluginCommandContract::from_command

fn PluginCommandContract::from_command(plugin_name~ : String, command : CommandSpec) -> PluginCommandContract

#
PluginCommandContract::mode

#
PluginCommandContract::name

fn PluginCommandContract::name(self : PluginCommandContract) -> String

#
PluginCommandContract::permission

#
PluginCommandContract::plugin

fn PluginCommandContract::plugin(self : PluginCommandContract) -> String

#
PluginCommandContract::request_schema

#
PluginCommandContract::response_schema

#
PluginCommandContract::route

fn PluginCommandContract::route(self : PluginCommandContract) -> String

#
PluginCommandContract::to_json

fn PluginCommandContract::to_json(self : PluginCommandContract) -> String

#
PluginContract

pub struct PluginContract {
name : String
commands : Array[PluginCommandContract]
lifecycle_hooks : Array[PluginLifecycleContract]
permissions : Array[String]
problems : Array[String]
} derive(Eq,
Debug
)

#
PluginContract::any_thread_count

fn PluginContract::any_thread_count(self : PluginContract) -> Int

#
PluginContract::async_count

fn PluginContract::async_count(self : PluginContract) -> Int

#
PluginContract::command_count

fn PluginContract::command_count(self : PluginContract) -> Int

#
PluginContract::command_count_by_affinity

fn PluginContract::command_count_by_affinity(self : PluginContract, affinity : CommandExecutionAffinity) -> Int

#
PluginContract::command_count_by_mode

fn PluginContract::command_count_by_mode(self : PluginContract, mode : CommandMode) -> Int

#
PluginContract::command_routes

fn PluginContract::command_routes(self : PluginContract) -> Array[String]

#
PluginContract::commands

#
PluginContract::event_count

fn PluginContract::event_count(self : PluginContract) -> Int

#
PluginContract::lifecycle_count

fn PluginContract::lifecycle_count(self : PluginContract) -> Int

#
PluginContract::lifecycle_hooks

#
PluginContract::main_thread_count

fn PluginContract::main_thread_count(self : PluginContract) -> Int

#
PluginContract::name

fn PluginContract::name(self : PluginContract) -> String

#
PluginContract::ok

fn PluginContract::ok(self : PluginContract) -> Bool

#
PluginContract::permissions

fn PluginContract::permissions(self : PluginContract) -> Array[String]

#
PluginContract::problems

fn PluginContract::problems(self : PluginContract) -> Array[String]

#
PluginContract::stream_count

fn PluginContract::stream_count(self : PluginContract) -> Int

#
PluginContract::sync_count

fn PluginContract::sync_count(self : PluginContract) -> Int

#
PluginContract::to_json

fn PluginContract::to_json(self : PluginContract) -> String

#
PluginContract::worker_thread_count

fn PluginContract::worker_thread_count(self : PluginContract) -> Int

#
PluginLifecycleContract

pub struct PluginLifecycleContract {
event : LifecycleEvent
command_empty : Bool
} derive(Eq,
Debug
)

#
PluginLifecycleContract::command_empty

fn PluginLifecycleContract::command_empty(self : PluginLifecycleContract) -> Bool

#
PluginLifecycleContract::event

#
PluginLifecycleContract::from_hook

#
PluginLifecycleContract::to_json

fn PluginLifecycleContract::to_json(self : PluginLifecycleContract) -> String

#
ProjectManifest

pub struct ProjectManifest {
metadata : AppMetadata
windows : Array[WindowConfig]
plugins : Array[Plugin]
capabilities : Array[Capability]
filesystem_scopes : Array[FileSystemScope]
startup : Cmd
lifecycle_hooks : Array[LifecycleHook]
runtime : RuntimeConfig
icon_path : String?
resource_sources : Array[BundleResourceSource]
runtime_dependency_sources : Array[BundleRuntimeDependencySource]
signing : SigningConfig
} derive(Eq,
Debug
)

#
ProjectManifest::app

fn ProjectManifest::app(self : ProjectManifest, root : Cell) -> App

#
ProjectManifest::bundle_plan

fn ProjectManifest::bundle_plan(self : ProjectManifest, root : Cell, target? : BundleTarget, registered_routes? : Array[String]) -> Result[BundlePlan, Array[String]]

#
ProjectManifest::capabilities

fn ProjectManifest::capabilities(self : ProjectManifest) -> Array[Capability]

#
ProjectManifest::file_system_scopes

fn ProjectManifest::file_system_scopes(self : ProjectManifest) -> Array[FileSystemScope]

#
ProjectManifest::icon_path

fn ProjectManifest::icon_path(self : ProjectManifest) -> String?

#
ProjectManifest::launch_plan

fn ProjectManifest::launch_plan(self : ProjectManifest, root : Cell) -> Result[LaunchPlan, Array[String]]

#
ProjectManifest::lifecycle_hooks

fn ProjectManifest::lifecycle_hooks(self : ProjectManifest) -> Array[LifecycleHook]

#
ProjectManifest::metadata

#
ProjectManifest::new

fn ProjectManifest::new(metadata : AppMetadata, windows? : Array[WindowConfig], plugins? : Array[Plugin], capabilities? : Array[Capability], filesystem_scopes? : Array[FileSystemScope], startup? : Cmd, lifecycle_hooks? : Array[LifecycleHook], runtime? : RuntimeConfig, icon_path? : String, resource_sources? : Array[BundleResourceSource], runtime_dependency_sources? : Array[BundleRuntimeDependencySource], signing? : SigningConfig) -> ProjectManifest

#
ProjectManifest::plugins

#
ProjectManifest::resource_sources

#
ProjectManifest::runtime

#
ProjectManifest::runtime_dependency_sources

fn ProjectManifest::runtime_dependency_sources(self : ProjectManifest) -> Array[BundleRuntimeDependencySource]

#
ProjectManifest::runtime_plan

fn ProjectManifest::runtime_plan(self : ProjectManifest, root : Cell) -> Result[RuntimePlan, Array[String]]

#
ProjectManifest::signing

#
ProjectManifest::validate

fn ProjectManifest::validate(self : ProjectManifest) -> Array[String]

#
ProjectManifest::windows

#
ProjectManifest::with_capability

fn ProjectManifest::with_capability(self : ProjectManifest, capability : Capability) -> ProjectManifest

#
ProjectManifest::with_file_system_scope

fn ProjectManifest::with_file_system_scope(self : ProjectManifest, scope : FileSystemScope) -> ProjectManifest

#
ProjectManifest::with_icon_path

fn ProjectManifest::with_icon_path(self : ProjectManifest, icon_path : String) -> ProjectManifest

#
ProjectManifest::with_lifecycle

fn ProjectManifest::with_lifecycle(self : ProjectManifest, event : LifecycleEvent, command : Cmd) -> ProjectManifest

#
ProjectManifest::with_plugin

fn ProjectManifest::with_plugin(self : ProjectManifest, plugin : Plugin) -> ProjectManifest

#
ProjectManifest::with_resource_source

fn ProjectManifest::with_resource_source(self : ProjectManifest, source : BundleResourceSource) -> ProjectManifest

#
ProjectManifest::with_runtime

fn ProjectManifest::with_runtime(self : ProjectManifest, runtime : RuntimeConfig) -> ProjectManifest

#
ProjectManifest::with_runtime_dependency_source

fn ProjectManifest::with_runtime_dependency_source(self : ProjectManifest, source : BundleRuntimeDependencySource) -> ProjectManifest

#
ProjectManifest::with_signing

fn ProjectManifest::with_signing(self : ProjectManifest, signing : SigningConfig) -> ProjectManifest

#
ProjectManifest::with_startup

fn ProjectManifest::with_startup(self : ProjectManifest, startup : Cmd) -> ProjectManifest

#
ProjectManifest::with_window

fn ProjectManifest::with_window(self : ProjectManifest, window : WindowConfig) -> ProjectManifest

#
ProtocolMapping

pub struct ProtocolMapping {
scheme : String
root : String
} derive(Eq,
Debug
)

#
ProtocolMapping::new

fn ProtocolMapping::new(scheme~ : String, root~ : String) -> ProtocolMapping

#
ProtocolMapping::root

fn ProtocolMapping::root(self : ProtocolMapping) -> String

#
ProtocolMapping::scheme

fn ProtocolMapping::scheme(self : ProtocolMapping) -> String

#
RegisteredCommand

pub struct RegisteredCommand {
route : String
permission : Permission
operation_scope : (InvokeRequest) -> Result[OperationScope, String]?
handler : RegisteredCommandHandler
}

#
RegisteredCommand::mode

#
RegisteredCommand::new

fn RegisteredCommand::new(route : String, permission? : Permission, operation_scope? : (InvokeRequest) -> Result[OperationScope, String], handler~ : (String) -> Result[String, String]) -> RegisteredCommand

#
RegisteredCommand::new_async

fn RegisteredCommand::new_async(route : String, permission? : Permission, operation_scope? : (InvokeRequest) -> Result[OperationScope, String], handler~ : async (String) -> Result[String, String]) -> RegisteredCommand

#
RegisteredCommand::new_stream

fn RegisteredCommand::new_stream(route : String, permission? : Permission, operation_scope? : (InvokeRequest) -> Result[OperationScope, String], handler~ : (String, StreamSink) -> Result[Unit, String]) -> RegisteredCommand

#
RegisteredCommand::permission

#
RegisteredCommand::requires_operation_scope

fn RegisteredCommand::requires_operation_scope(self : RegisteredCommand) -> Bool

#
RegisteredCommand::resolve_operation_scope

fn RegisteredCommand::resolve_operation_scope(self : RegisteredCommand, request : InvokeRequest) -> Result[OperationScope?, String]

#
RegisteredCommand::route

fn RegisteredCommand::route(self : RegisteredCommand) -> String

#
RegisteredCommandHandler

type RegisteredCommandHandler

#
ReleaseReadinessReport

pub struct ReleaseReadinessReport {
target : BundleTarget
files : Int
resources : Int
artifacts : Int
runtime_dependencies : Int
required_runtime_dependencies : Int
signing_configured : Bool
signing_prerequisites : Int
signing_steps : Int
runtime_webviews : Int
command_routes : Int
registered_routes : Int
native_launch_session_ready : Bool
native_launch_session_issue : String
issues : Array[String]
} derive(Eq,
Debug
)

#
ReleaseReadinessReport::artifacts

fn ReleaseReadinessReport::artifacts(self : ReleaseReadinessReport) -> Int

#
ReleaseReadinessReport::command_routes

fn ReleaseReadinessReport::command_routes(self : ReleaseReadinessReport) -> Int

#
ReleaseReadinessReport::files

#
ReleaseReadinessReport::issues

#
ReleaseReadinessReport::native_launch_session_issue

fn ReleaseReadinessReport::native_launch_session_issue(self : ReleaseReadinessReport) -> String

#
ReleaseReadinessReport::native_launch_session_ready

fn ReleaseReadinessReport::native_launch_session_ready(self : ReleaseReadinessReport) -> Bool

#
ReleaseReadinessReport::ready

#
ReleaseReadinessReport::registered_routes

fn ReleaseReadinessReport::registered_routes(self : ReleaseReadinessReport) -> Int

#
ReleaseReadinessReport::required_runtime_dependencies

fn ReleaseReadinessReport::required_runtime_dependencies(self : ReleaseReadinessReport) -> Int

#
ReleaseReadinessReport::resources

fn ReleaseReadinessReport::resources(self : ReleaseReadinessReport) -> Int

#
ReleaseReadinessReport::runtime_dependencies

fn ReleaseReadinessReport::runtime_dependencies(self : ReleaseReadinessReport) -> Int

#
ReleaseReadinessReport::runtime_webviews

fn ReleaseReadinessReport::runtime_webviews(self : ReleaseReadinessReport) -> Int

#
ReleaseReadinessReport::signing_configured

fn ReleaseReadinessReport::signing_configured(self : ReleaseReadinessReport) -> Bool

#
ReleaseReadinessReport::signing_prerequisites

fn ReleaseReadinessReport::signing_prerequisites(self : ReleaseReadinessReport) -> Int

#
ReleaseReadinessReport::signing_steps

fn ReleaseReadinessReport::signing_steps(self : ReleaseReadinessReport) -> Int

#
ReleaseReadinessReport::target

#
ReleaseReadinessReport::to_json

fn ReleaseReadinessReport::to_json(self : ReleaseReadinessReport) -> String

#
ResolvedSource

pub struct ResolvedSource {
kind : ResolvedSourceKind
url : String
protocol_mappings : Array[ProtocolMapping]
virtual_files : Array[VirtualFile]
local_services : Array[LocalService]
} derive(Eq,
Debug
)

#
ResolvedSource::kind

#
ResolvedSource::local_services

fn ResolvedSource::local_services(self : ResolvedSource) -> Array[LocalService]

#
ResolvedSource::protocol_mappings

fn ResolvedSource::protocol_mappings(self : ResolvedSource) -> Array[ProtocolMapping]

#
ResolvedSource::url

fn ResolvedSource::url(self : ResolvedSource) -> String

#
ResolvedSource::virtual_files

fn ResolvedSource::virtual_files(self : ResolvedSource) -> Array[VirtualFile]

#
ResolvedSourceKind

pub(all) enum ResolvedSourceKind {
ResolvedInlineHtml
ResolvedLocalPath
ResolvedPackagedAssets
ResolvedRemoteUrl
ResolvedLocalhost
ResolvedRabbitaMount
} derive(Eq,
Debug
)

#
ResolvedWindow

pub struct ResolvedWindow {
label : String
title : String
width : Int
height : Int
resizable : Bool
title_bar : TitleBarStyle
source : ResolvedSource
} derive(Eq,
Debug
)

#
ResolvedWindow::height

fn ResolvedWindow::height(self : ResolvedWindow) -> Int

#
ResolvedWindow::label

fn ResolvedWindow::label(self : ResolvedWindow) -> String

#
ResolvedWindow::resizable

fn ResolvedWindow::resizable(self : ResolvedWindow) -> Bool

#
ResolvedWindow::source

#
ResolvedWindow::title

fn ResolvedWindow::title(self : ResolvedWindow) -> String

#
ResolvedWindow::title_bar

#
ResolvedWindow::url

fn ResolvedWindow::url(self : ResolvedWindow) -> String

#
ResolvedWindow::width

fn ResolvedWindow::width(self : ResolvedWindow) -> Int

#
ResourceCleanupReport

pub struct ResourceCleanupReport {
closed : Array[ResourceEntry]
remaining : Array[ResourceEntry]
} derive(Eq,
Debug
)

#
ResourceCleanupReport::closed

#
ResourceCleanupReport::closed_count

fn ResourceCleanupReport::closed_count(self : ResourceCleanupReport) -> Int

#
ResourceCleanupReport::leak_report

#
ResourceCleanupReport::new

#
ResourceCleanupReport::ok

#
ResourceCleanupReport::remaining

#
ResourceCleanupReport::remaining_count

fn ResourceCleanupReport::remaining_count(self : ResourceCleanupReport) -> Int

#
ResourceCleanupReport::to_json

fn ResourceCleanupReport::to_json(self : ResourceCleanupReport) -> String

#
ResourceDescriptor

pub struct ResourceDescriptor {
kind : String
owner : String
name : String
metadata : String
} derive(Eq,
Debug
)

#
ResourceDescriptor::kind

fn ResourceDescriptor::kind(self : ResourceDescriptor) -> String

#
ResourceDescriptor::metadata

fn ResourceDescriptor::metadata(self : ResourceDescriptor) -> String

#
ResourceDescriptor::name

fn ResourceDescriptor::name(self : ResourceDescriptor) -> String

#
ResourceDescriptor::new

fn ResourceDescriptor::new(kind~ : String, owner? : String, name? : String, metadata? : String) -> ResourceDescriptor

#
ResourceDescriptor::owner

fn ResourceDescriptor::owner(self : ResourceDescriptor) -> String

#
ResourceDescriptor::to_json

fn ResourceDescriptor::to_json(self : ResourceDescriptor) -> String

#
ResourceDescriptor::validate

fn ResourceDescriptor::validate(self : ResourceDescriptor) -> Array[String]

#
ResourceEntry

pub struct ResourceEntry {
id : String
sequence : Int
kind : String
owner : String
name : String
metadata : String
closed : Bool
} derive(Eq,
Debug
)

#
ResourceEntry::closed

fn ResourceEntry::closed(self : ResourceEntry) -> Bool

#
ResourceEntry::descriptor

#
ResourceEntry::handle

#
ResourceEntry::id

fn ResourceEntry::id(self : ResourceEntry) -> String

#
ResourceEntry::kind

fn ResourceEntry::kind(self : ResourceEntry) -> String

#
ResourceEntry::metadata

fn ResourceEntry::metadata(self : ResourceEntry) -> String

#
ResourceEntry::name

fn ResourceEntry::name(self : ResourceEntry) -> String

#
ResourceEntry::owner

fn ResourceEntry::owner(self : ResourceEntry) -> String

#
ResourceEntry::sequence

fn ResourceEntry::sequence(self : ResourceEntry) -> Int

#
ResourceEntry::to_json

fn ResourceEntry::to_json(self : ResourceEntry) -> String

#
ResourceHandle

pub struct ResourceHandle {
id : String
kind : String
owner : String
name : String
} derive(Eq,
Debug
)

#
ResourceHandle::from_entry

fn ResourceHandle::from_entry(entry : ResourceEntry) -> ResourceHandle

#
ResourceHandle::id

fn ResourceHandle::id(self : ResourceHandle) -> String

#
ResourceHandle::kind

fn ResourceHandle::kind(self : ResourceHandle) -> String

#
ResourceHandle::name

fn ResourceHandle::name(self : ResourceHandle) -> String

#
ResourceHandle::new

fn ResourceHandle::new(id~ : String, kind~ : String, owner? : String, name? : String) -> ResourceHandle

#
ResourceHandle::owner

fn ResourceHandle::owner(self : ResourceHandle) -> String

#
ResourceHandle::to_json

fn ResourceHandle::to_json(self : ResourceHandle) -> String

#
ResourceHandle::validate

fn ResourceHandle::validate(self : ResourceHandle) -> Array[String]

#
ResourceLeakReport

pub struct ResourceLeakReport {
resources : Array[ResourceEntry]
} derive(Eq,
Debug
)

#
ResourceLeakReport::count

fn ResourceLeakReport::count(self : ResourceLeakReport) -> Int

#
ResourceLeakReport::handles

#
ResourceLeakReport::kinds

fn ResourceLeakReport::kinds(self : ResourceLeakReport) -> Array[String]

#
ResourceLeakReport::leaked

fn ResourceLeakReport::leaked(self : ResourceLeakReport) -> Bool

#
ResourceLeakReport::messages

fn ResourceLeakReport::messages(self : ResourceLeakReport) -> Array[String]

#
ResourceLeakReport::new

#
ResourceLeakReport::ok

fn ResourceLeakReport::ok(self : ResourceLeakReport) -> Bool

#
ResourceLeakReport::owners

fn ResourceLeakReport::owners(self : ResourceLeakReport) -> Array[String]

#
ResourceLeakReport::resources

#
ResourceLeakReport::to_json

fn ResourceLeakReport::to_json(self : ResourceLeakReport) -> String

#
ResourceTable

pub struct ResourceTable {
next_sequence : Int
id_prefix : String
entries : Map[String, ResourceEntry]
order : Array[String]
}

#
ResourceTable::cleanup_report

fn ResourceTable::cleanup_report(self : ResourceTable) -> ResourceCleanupReport

#
ResourceTable::close

fn ResourceTable::close(self : ResourceTable, id : String) -> Result[ResourceEntry, String]

#
ResourceTable::close_all

#
ResourceTable::close_handle

fn ResourceTable::close_handle(self : ResourceTable, handle : ResourceHandle) -> Result[ResourceEntry, String]

#
ResourceTable::close_kind

fn ResourceTable::close_kind(self : ResourceTable, kind : String) -> Array[ResourceEntry]

#
ResourceTable::close_owner

fn ResourceTable::close_owner(self : ResourceTable, owner : String) -> Array[ResourceEntry]

#
ResourceTable::contains

fn ResourceTable::contains(self : ResourceTable, id : String) -> Bool

#
ResourceTable::count

fn ResourceTable::count(self : ResourceTable) -> Int

#
ResourceTable::entries

#
ResourceTable::entries_by_kind

fn ResourceTable::entries_by_kind(self : ResourceTable, kind : String) -> Array[ResourceEntry]

#
ResourceTable::entries_by_owner

fn ResourceTable::entries_by_owner(self : ResourceTable, owner : String) -> Array[ResourceEntry]

#
ResourceTable::get

fn ResourceTable::get(self : ResourceTable, id : String) -> ResourceEntry?

#
ResourceTable::handle

fn ResourceTable::handle(self : ResourceTable, id : String) -> ResourceHandle?

#
ResourceTable::handles

#
ResourceTable::handles_by_kind

fn ResourceTable::handles_by_kind(self : ResourceTable, kind : String) -> Array[ResourceHandle]

#
ResourceTable::handles_by_owner

fn ResourceTable::handles_by_owner(self : ResourceTable, owner : String) -> Array[ResourceHandle]

#
ResourceTable::id_prefix

fn ResourceTable::id_prefix(self : ResourceTable) -> String

#
ResourceTable::ids

fn ResourceTable::ids(self : ResourceTable) -> Array[String]

#
ResourceTable::is_empty

fn ResourceTable::is_empty(self : ResourceTable) -> Bool

#
ResourceTable::leak_report

#
ResourceTable::new

#
ResourceTable::open

fn ResourceTable::open(self : ResourceTable, descriptor : ResourceDescriptor) -> Result[ResourceEntry, Array[String]]

#
ResourceTable::to_json

fn ResourceTable::to_json(self : ResourceTable) -> String

#
ResourceTable::with_prefix

fn ResourceTable::with_prefix(id_prefix : String) -> ResourceTable

#
RunReport

pub struct RunReport {
target : String
backend : String
engine : String
status : RunStatus
webviews : Int
first_window_title : String
first_window_url : String
load_url : String
bridge_url : String
local_services : Int
service_supervisor : Bool
service_start_order : Array[String]
startup_operations : Int
lifecycle_steps : Int
executable_operations : Int
executed_operations : Int
skipped_operations : Int
failed_operations : Int
first_execution_failure : String
bridge_sync_routes : Int
bridge_async_routes : Int
target_can_launch : Bool
target_launch_blocker : String
} derive(Eq,
Debug
)

#
RunReport::backend

fn RunReport::backend(self : RunReport) -> String

#
RunReport::bridge_async_routes

fn RunReport::bridge_async_routes(self : RunReport) -> Int

#
RunReport::bridge_sync_routes

fn RunReport::bridge_sync_routes(self : RunReport) -> Int

#
RunReport::bridge_url

fn RunReport::bridge_url(self : RunReport) -> String

#
RunReport::engine

fn RunReport::engine(self : RunReport) -> String

#
RunReport::executable_operations

fn RunReport::executable_operations(self : RunReport) -> Int

#
RunReport::executed_operations

fn RunReport::executed_operations(self : RunReport) -> Int

#
RunReport::failed_operations

fn RunReport::failed_operations(self : RunReport) -> Int

#
RunReport::first_execution_failure

fn RunReport::first_execution_failure(self : RunReport) -> String

#
RunReport::first_window_title

fn RunReport::first_window_title(self : RunReport) -> String

#
RunReport::first_window_url

fn RunReport::first_window_url(self : RunReport) -> String

#
RunReport::lifecycle_steps

fn RunReport::lifecycle_steps(self : RunReport) -> Int

#
RunReport::load_url

fn RunReport::load_url(self : RunReport) -> String

#
RunReport::local_services

fn RunReport::local_services(self : RunReport) -> Int

#
RunReport::new

fn RunReport::new(target~ : String, backend~ : String, engine~ : String, status~ : RunStatus, webviews~ : Int, first_window_title? : String, first_window_url? : String, load_url? : String, bridge_url? : String, local_services? : Int, service_supervisor? : Bool, service_start_order? : Array[String], startup_operations? : Int, lifecycle_steps? : Int, executable_operations? : Int, executed_operations? : Int, skipped_operations? : Int, failed_operations? : Int, first_execution_failure? : String, bridge_sync_routes? : Int, bridge_async_routes? : Int, target_can_launch? : Bool, target_launch_blocker? : String) -> RunReport

#
RunReport::service_start_order

fn RunReport::service_start_order(self : RunReport) -> Array[String]

#
RunReport::service_supervisor

fn RunReport::service_supervisor(self : RunReport) -> Bool

#
RunReport::skipped_operations

fn RunReport::skipped_operations(self : RunReport) -> Int

#
RunReport::startup_operations

fn RunReport::startup_operations(self : RunReport) -> Int

#
RunReport::status

fn RunReport::status(self : RunReport) -> RunStatus

#
RunReport::target

fn RunReport::target(self : RunReport) -> String

#
RunReport::target_can_launch

fn RunReport::target_can_launch(self : RunReport) -> Bool

#
RunReport::target_launch_blocker

fn RunReport::target_launch_blocker(self : RunReport) -> String

#
RunReport::to_json

fn RunReport::to_json(self : RunReport) -> String

#
RunReport::webviews

fn RunReport::webviews(self : RunReport) -> Int

#
RunStatus

pub(all) enum RunStatus {
RunPrepared
RunLaunched
RunFailed(String)
RunUnsupported(String)
} derive(Eq,
Debug
)

#
RunStatus::message

fn RunStatus::message(self : RunStatus) -> String

#
RunStatus::name

fn RunStatus::name(self : RunStatus) -> String

#
RunStatus::to_json

fn RunStatus::to_json(self : RunStatus) -> String

#
RuntimeAction

pub(all) enum RuntimeAction {
RuntimeEffect(String)
RuntimeEmit(EventTarget, Event)
RuntimeNavigate(String, ResolvedSource)
} derive(Eq,
Debug
)

#
RuntimeAction::to_json

fn RuntimeAction::to_json(self : RuntimeAction) -> String

#
RuntimeAudit

pub struct RuntimeAudit {
command_manifest : CommandManifest
permission_manifest : PermissionManifest
registered_routes : Array[String]
route_exposures : Array[RuntimeRouteExposure]
findings : Array[RuntimeAuditFinding]
} derive(Eq,
Debug
)

#
RuntimeAudit::command_manifest

fn RuntimeAudit::command_manifest(self : RuntimeAudit) -> CommandManifest

#
RuntimeAudit::error_count

fn RuntimeAudit::error_count(self : RuntimeAudit) -> Int

#
RuntimeAudit::errors

#
RuntimeAudit::exposed_routes

fn RuntimeAudit::exposed_routes(self : RuntimeAudit) -> Array[String]

#
RuntimeAudit::findings

#
RuntimeAudit::findings_by_severity

fn RuntimeAudit::findings_by_severity(self : RuntimeAudit, severity : RuntimeAuditSeverity) -> Array[RuntimeAuditFinding]

#
RuntimeAudit::from_plan

fn RuntimeAudit::from_plan(plan : RuntimePlan) -> RuntimeAudit

#
RuntimeAudit::from_registered_routes

fn RuntimeAudit::from_registered_routes(plan : RuntimePlan, registered_routes : Array[String]) -> RuntimeAudit

#
RuntimeAudit::info_count

fn RuntimeAudit::info_count(self : RuntimeAudit) -> Int

#
RuntimeAudit::infos

#
RuntimeAudit::ok

fn RuntimeAudit::ok(self : RuntimeAudit) -> Bool

#
RuntimeAudit::permission_manifest

fn RuntimeAudit::permission_manifest(self : RuntimeAudit) -> PermissionManifest

#
RuntimeAudit::problems

fn RuntimeAudit::problems(self : RuntimeAudit) -> Array[String]

#
RuntimeAudit::registered_routes

fn RuntimeAudit::registered_routes(self : RuntimeAudit) -> Array[String]

#
RuntimeAudit::route_exposures

fn RuntimeAudit::route_exposures(self : RuntimeAudit) -> Array[RuntimeRouteExposure]

#
RuntimeAudit::to_json

fn RuntimeAudit::to_json(self : RuntimeAudit) -> String

#
RuntimeAudit::warning_count

fn RuntimeAudit::warning_count(self : RuntimeAudit) -> Int

#
RuntimeAudit::warnings

#
RuntimeAuditFinding

pub struct RuntimeAuditFinding {
severity : RuntimeAuditSeverity
kind : RuntimeAuditKind
route : String
message : String
} derive(Eq,
Debug
)

#
RuntimeAuditFinding::kind

#
RuntimeAuditFinding::message

fn RuntimeAuditFinding::message(self : RuntimeAuditFinding) -> String

#
RuntimeAuditFinding::new

fn RuntimeAuditFinding::new(severity~ : RuntimeAuditSeverity, kind~ : RuntimeAuditKind, route~ : String, message~ : String) -> RuntimeAuditFinding

#
RuntimeAuditFinding::route

fn RuntimeAuditFinding::route(self : RuntimeAuditFinding) -> String

#
RuntimeAuditFinding::severity

#
RuntimeAuditFinding::to_json

fn RuntimeAuditFinding::to_json(self : RuntimeAuditFinding) -> String

#
RuntimeAuditKind

pub(all) enum RuntimeAuditKind {
RuntimeAuditDeniedCommand
RuntimeAuditMissingHandler
RuntimeAuditUndeclaredHandler
RuntimeAuditOpenOrigin
} derive(Eq,
Debug
)

#
RuntimeAuditKind::name

fn RuntimeAuditKind::name(self : RuntimeAuditKind) -> String

#
RuntimeAuditSeverity

pub(all) enum RuntimeAuditSeverity {
RuntimeAuditInfo
RuntimeAuditWarning
RuntimeAuditError
} derive(Eq,
Debug
)

#
RuntimeAuditSeverity::name

fn RuntimeAuditSeverity::name(self : RuntimeAuditSeverity) -> String

#
RuntimeBackend

pub(all) enum RuntimeBackend {
SystemWebView
Headless
} derive(Eq,
Debug
)

#
RuntimeBackend::name

fn RuntimeBackend::name(self : RuntimeBackend) -> String

#
RuntimeCapabilityGrant

pub struct RuntimeCapabilityGrant {
name : String
windows : Array[String]
origins : Array[String]
platforms : Array[String]
permissions : Array[String]
operation_scopes : Array[OperationScope]
} derive(Eq,
Debug
)

#
RuntimeCapabilityGrant::name

#
RuntimeCapabilityGrant::operation_scopes

#
RuntimeCapabilityGrant::origins

fn RuntimeCapabilityGrant::origins(self : RuntimeCapabilityGrant) -> Array[String]

#
RuntimeCapabilityGrant::permissions

fn RuntimeCapabilityGrant::permissions(self : RuntimeCapabilityGrant) -> Array[String]

#
RuntimeCapabilityGrant::platforms

fn RuntimeCapabilityGrant::platforms(self : RuntimeCapabilityGrant) -> Array[String]

#
RuntimeCapabilityGrant::windows

fn RuntimeCapabilityGrant::windows(self : RuntimeCapabilityGrant) -> Array[String]

#
RuntimeConfig

pub struct RuntimeConfig {
backend : RuntimeBackend
devtools : Bool
asset_protocol : String
platform : String
} derive(Eq,
Debug
)

#
RuntimeConfig::headless

fn RuntimeConfig::headless(platform? : String) -> RuntimeConfig

#
RuntimeConfig::platform

fn RuntimeConfig::platform(self : RuntimeConfig) -> String

#
RuntimeConfig::system_webview

fn RuntimeConfig::system_webview(devtools? : Bool, asset_protocol? : String, platform? : String) -> RuntimeConfig

#
RuntimeConfig::validate

fn RuntimeConfig::validate(self : RuntimeConfig) -> Array[String]

#
RuntimeInvokeAuthorization

pub struct RuntimeInvokeAuthorization {
kind : RuntimeInvokeAuthorizationKind
route : String
window_label : String
origin : String
platform : String
permission : Permission?
registered : Bool
capability : String
reason : String
} derive(Eq,
Debug
)

#
RuntimeInvokeAuthorization::allowed

#
RuntimeInvokeAuthorization::capability

#
RuntimeInvokeAuthorization::origin

#
RuntimeInvokeAuthorization::permission

#
RuntimeInvokeAuthorization::platform

#
RuntimeInvokeAuthorization::reason

#
RuntimeInvokeAuthorization::registered

#
RuntimeInvokeAuthorization::route

#
RuntimeInvokeAuthorization::to_json

#
RuntimeInvokeAuthorization::to_response

#
RuntimeInvokeAuthorization::window_label

fn RuntimeInvokeAuthorization::window_label(self : RuntimeInvokeAuthorization) -> String

#
RuntimeInvokeAuthorizationKind

pub(all) enum RuntimeInvokeAuthorizationKind {
RuntimeInvokeAuthorized
RuntimeInvokeInvalidRequest
RuntimeInvokeUnknownCommand
RuntimeInvokeUnregisteredCommand
RuntimeInvokePermissionDenied
} derive(Eq,
Debug
)

#
RuntimeInvokeAuthorizationKind::name

#
RuntimeLaunchAsset

pub struct RuntimeLaunchAsset {
url : String
mime_type : String
body : RuntimeLaunchAssetBody
} derive(Eq,
Debug
)

#
RuntimeLaunchAsset::body

#
RuntimeLaunchAsset::mime_type

fn RuntimeLaunchAsset::mime_type(self : RuntimeLaunchAsset) -> String

#
RuntimeLaunchAsset::url

fn RuntimeLaunchAsset::url(self : RuntimeLaunchAsset) -> String

#
RuntimeLaunchAssetBody

pub(all) enum RuntimeLaunchAssetBody {
LaunchVirtualContent(String)
LaunchLocalFile(String)
LaunchPackagedFile(String)
} derive(Eq,
Debug
)

#
RuntimeLaunchManifest

pub struct RuntimeLaunchManifest {
backend : String
platform : String
asset_protocol : String
devtools : Bool
bridge_url : String
webviews : Array[RuntimeWebViewBoot]
protocol_mappings : Array[RuntimeProtocolBinding]
virtual_files : Array[RuntimeVirtualAsset]
local_services : Array[LocalService]
filesystem_scopes : Array[FileSystemScope]
capabilities : Array[RuntimeCapabilityGrant]
startup_actions : Array[RuntimeAction]
lifecycle_hooks : Array[RuntimeLifecycleHook]
command_manifest : CommandManifest
permission_manifest : PermissionManifest
declared_routes : Array[String]
command_routes : Array[String]
registered_routes : Array[String]
} derive(Eq,
Debug
)

#
RuntimeLaunchManifest::asset_protocol

fn RuntimeLaunchManifest::asset_protocol(self : RuntimeLaunchManifest) -> String

#
RuntimeLaunchManifest::backend

fn RuntimeLaunchManifest::backend(self : RuntimeLaunchManifest) -> String

#
RuntimeLaunchManifest::bridge_url

fn RuntimeLaunchManifest::bridge_url(self : RuntimeLaunchManifest) -> String

#
RuntimeLaunchManifest::capabilities

#
RuntimeLaunchManifest::command_manifest

#
RuntimeLaunchManifest::command_routes

fn RuntimeLaunchManifest::command_routes(self : RuntimeLaunchManifest) -> Array[String]

#
RuntimeLaunchManifest::declared_routes

fn RuntimeLaunchManifest::declared_routes(self : RuntimeLaunchManifest) -> Array[String]

#
RuntimeLaunchManifest::devtools

fn RuntimeLaunchManifest::devtools(self : RuntimeLaunchManifest) -> Bool

#
RuntimeLaunchManifest::file_system_scopes

#
RuntimeLaunchManifest::lifecycle_hooks

#
RuntimeLaunchManifest::local_services

#
RuntimeLaunchManifest::permission_manifest

#
RuntimeLaunchManifest::platform

fn RuntimeLaunchManifest::platform(self : RuntimeLaunchManifest) -> String

#
RuntimeLaunchManifest::protocol_mappings

#
RuntimeLaunchManifest::registered_routes

fn RuntimeLaunchManifest::registered_routes(self : RuntimeLaunchManifest) -> Array[String]

#
RuntimeLaunchManifest::resolve_asset

fn RuntimeLaunchManifest::resolve_asset(self : RuntimeLaunchManifest, url : String) -> Result[RuntimeLaunchAsset, String]

#
RuntimeLaunchManifest::startup_actions

#
RuntimeLaunchManifest::to_json

fn RuntimeLaunchManifest::to_json(self : RuntimeLaunchManifest) -> String

#
RuntimeLaunchManifest::virtual_files

#
RuntimeLaunchManifest::webviews

#
RuntimeLifecycleHook

pub struct RuntimeLifecycleHook {
event : LifecycleEvent
actions : Array[RuntimeAction]
} derive(Eq,
Debug
)

#
RuntimeLifecycleHook::actions

#
RuntimeLifecycleHook::event

#
RuntimeLifecycleHook::new

#
RuntimeLifecycleHook::to_json

fn RuntimeLifecycleHook::to_json(self : RuntimeLifecycleHook) -> String

#
RuntimePlan

pub struct RuntimePlan {
app_metadata : AppMetadata?
launch : LaunchPlan
backend : RuntimeBackend
devtools : Bool
asset_protocol : String
platform : String
command_routes : Array[String]
windows : Array[ResolvedWindow]
filesystem_scopes : Array[FileSystemScope]
} derive(Eq,
Debug
)

#
RuntimePlan::actions

fn RuntimePlan::actions(self : RuntimePlan, command : Cmd) -> Result[Array[RuntimeAction], Array[String]]

#
RuntimePlan::app_metadata

fn RuntimePlan::app_metadata(self : RuntimePlan) -> AppMetadata?

#
RuntimePlan::asset_protocol

fn RuntimePlan::asset_protocol(self : RuntimePlan) -> String

#
RuntimePlan::audit

fn RuntimePlan::audit(self : RuntimePlan) -> RuntimeAudit

#
RuntimePlan::audit_with_registered_routes

fn RuntimePlan::audit_with_registered_routes(self : RuntimePlan, registered_routes : Array[String]) -> RuntimeAudit

#
RuntimePlan::authorize_invoke

fn RuntimePlan::authorize_invoke(self : RuntimePlan, request : InvokeRequest, registered_routes? : Array[String], check_registered? : Bool) -> RuntimeInvokeAuthorization

#
RuntimePlan::backend

fn RuntimePlan::backend(self : RuntimePlan) -> RuntimeBackend

#
RuntimePlan::bridge_script

fn RuntimePlan::bridge_script(self : RuntimePlan, config? : BridgeConfig) -> Result[BridgeScript, Array[String]]

#
RuntimePlan::capabilities

fn RuntimePlan::capabilities(self : RuntimePlan) -> Array[Capability]

#
RuntimePlan::capability_count

fn RuntimePlan::capability_count(self : RuntimePlan) -> Int

#
RuntimePlan::capability_report

fn RuntimePlan::capability_report(self : RuntimePlan) -> CapabilityCompileReport

#
RuntimePlan::command_manifest

fn RuntimePlan::command_manifest(self : RuntimePlan) -> CommandManifest

#
RuntimePlan::command_permission

fn RuntimePlan::command_permission(self : RuntimePlan, route : String) -> Permission?

#
RuntimePlan::command_routes

fn RuntimePlan::command_routes(self : RuntimePlan) -> Array[String]

#
RuntimePlan::command_routes_by_mode

fn RuntimePlan::command_routes_by_mode(self : RuntimePlan, mode : CommandMode) -> Array[String]

#
RuntimePlan::devtools

fn RuntimePlan::devtools(self : RuntimePlan) -> Bool

#
RuntimePlan::file_system_scopes

fn RuntimePlan::file_system_scopes(self : RuntimePlan) -> Array[FileSystemScope]

#
RuntimePlan::launch_manifest

fn RuntimePlan::launch_manifest(self : RuntimePlan, registered_routes? : Array[String], restrict_registered? : Bool) -> Result[RuntimeLaunchManifest, Array[String]]

#
RuntimePlan::lifecycle_actions

fn RuntimePlan::lifecycle_actions(self : RuntimePlan, event : LifecycleEvent) -> Result[Array[RuntimeAction], Array[String]]

#
RuntimePlan::lifecycle_hooks

fn RuntimePlan::lifecycle_hooks(self : RuntimePlan) -> Result[Array[RuntimeLifecycleHook], Array[String]]

#
RuntimePlan::permission_manifest

fn RuntimePlan::permission_manifest(self : RuntimePlan) -> PermissionManifest

#
RuntimePlan::platform

fn RuntimePlan::platform(self : RuntimePlan) -> String

#
RuntimePlan::plugin_count

fn RuntimePlan::plugin_count(self : RuntimePlan) -> Int

#
RuntimePlan::security_profile

fn RuntimePlan::security_profile(self : RuntimePlan, registered_routes? : Array[String], check_handlers? : Bool) -> SecurityProfile

#
RuntimePlan::startup_actions

fn RuntimePlan::startup_actions(self : RuntimePlan) -> Result[Array[RuntimeAction], Array[String]]

#
RuntimePlan::window_command_routes

fn RuntimePlan::window_command_routes(self : RuntimePlan, window_label : String) -> Array[String]

#
RuntimePlan::window_count

fn RuntimePlan::window_count(self : RuntimePlan) -> Int

#
RuntimePlan::windows

#
RuntimeProtocolBinding

pub struct RuntimeProtocolBinding {
window_label : String
scheme : String
root : String
} derive(Eq,
Debug
)

#
RuntimeProtocolBinding::root

#
RuntimeProtocolBinding::scheme

fn RuntimeProtocolBinding::scheme(self : RuntimeProtocolBinding) -> String

#
RuntimeProtocolBinding::window_label

fn RuntimeProtocolBinding::window_label(self : RuntimeProtocolBinding) -> String

#
RuntimeRouteExposure

pub struct RuntimeRouteExposure {
route : String
mode : CommandMode
registered : Bool
exposed : Bool
windows : Array[String]
reasons : Array[String]
} derive(Eq,
Debug
)

#
RuntimeRouteExposure::exposed

fn RuntimeRouteExposure::exposed(self : RuntimeRouteExposure) -> Bool

#
RuntimeRouteExposure::mode

#
RuntimeRouteExposure::reasons

fn RuntimeRouteExposure::reasons(self : RuntimeRouteExposure) -> Array[String]

#
RuntimeRouteExposure::registered

fn RuntimeRouteExposure::registered(self : RuntimeRouteExposure) -> Bool

#
RuntimeRouteExposure::route

fn RuntimeRouteExposure::route(self : RuntimeRouteExposure) -> String

#
RuntimeRouteExposure::to_json

fn RuntimeRouteExposure::to_json(self : RuntimeRouteExposure) -> String

#
RuntimeRouteExposure::windows

fn RuntimeRouteExposure::windows(self : RuntimeRouteExposure) -> Array[String]

#
RuntimeVirtualAsset

pub struct RuntimeVirtualAsset {
window_label : String
path : String
mime_type : String
content : String
} derive(Eq,
Debug
)

#
RuntimeVirtualAsset::content

fn RuntimeVirtualAsset::content(self : RuntimeVirtualAsset) -> String

#
RuntimeVirtualAsset::mime_type

fn RuntimeVirtualAsset::mime_type(self : RuntimeVirtualAsset) -> String

#
RuntimeVirtualAsset::path

fn RuntimeVirtualAsset::path(self : RuntimeVirtualAsset) -> String

#
RuntimeVirtualAsset::window_label

fn RuntimeVirtualAsset::window_label(self : RuntimeVirtualAsset) -> String

#
RuntimeWebViewBoot

pub struct RuntimeWebViewBoot {
label : String
title : String
url : String
width : Int
height : Int
resizable : Bool
title_bar : TitleBarStyle
devtools : Bool
asset_protocol : String
bridge_global_name : String
native_hook : String
event_dispatch_hook : String
allowed_routes : Array[String]
initialization_scripts : Array[String]
} derive(Eq,
Debug
)

#
RuntimeWebViewBoot::allowed_routes

fn RuntimeWebViewBoot::allowed_routes(self : RuntimeWebViewBoot) -> Array[String]

#
RuntimeWebViewBoot::asset_protocol

fn RuntimeWebViewBoot::asset_protocol(self : RuntimeWebViewBoot) -> String

#
RuntimeWebViewBoot::bridge_global_name

fn RuntimeWebViewBoot::bridge_global_name(self : RuntimeWebViewBoot) -> String

#
RuntimeWebViewBoot::devtools

fn RuntimeWebViewBoot::devtools(self : RuntimeWebViewBoot) -> Bool

#
RuntimeWebViewBoot::event_dispatch_hook

fn RuntimeWebViewBoot::event_dispatch_hook(self : RuntimeWebViewBoot) -> String

#
RuntimeWebViewBoot::height

fn RuntimeWebViewBoot::height(self : RuntimeWebViewBoot) -> Int

#
RuntimeWebViewBoot::initialization_scripts

fn RuntimeWebViewBoot::initialization_scripts(self : RuntimeWebViewBoot) -> Array[String]

#
RuntimeWebViewBoot::label

fn RuntimeWebViewBoot::label(self : RuntimeWebViewBoot) -> String

#
RuntimeWebViewBoot::native_hook

fn RuntimeWebViewBoot::native_hook(self : RuntimeWebViewBoot) -> String

#
RuntimeWebViewBoot::resizable

fn RuntimeWebViewBoot::resizable(self : RuntimeWebViewBoot) -> Bool

#
RuntimeWebViewBoot::title

fn RuntimeWebViewBoot::title(self : RuntimeWebViewBoot) -> String

#
RuntimeWebViewBoot::title_bar

#
RuntimeWebViewBoot::url

fn RuntimeWebViewBoot::url(self : RuntimeWebViewBoot) -> String

#
RuntimeWebViewBoot::width

fn RuntimeWebViewBoot::width(self : RuntimeWebViewBoot) -> Int

#
SecurityProfile

pub struct SecurityProfile {
command_manifest : CommandManifest
permission_manifest : PermissionManifest
capability_policy : CapabilityPolicy
capability_report : CapabilityCompileReport
runtime_audit : RuntimeAudit
registered_routes : Array[String]
check_handlers : Bool
platform : String
} derive(Eq,
Debug
)

#
SecurityProfile::allowed_origins

fn SecurityProfile::allowed_origins(self : SecurityProfile, window_label~ : String, permission~ : Permission) -> Array[String]

#
SecurityProfile::allows

fn SecurityProfile::allows(self : SecurityProfile, window_label~ : String, permission~ : Permission, origin? : String) -> Bool

#
SecurityProfile::allows_operation

fn SecurityProfile::allows_operation(self : SecurityProfile, window_label~ : String, permission~ : Permission, scope~ : OperationScope, origin? : String) -> Bool

#
SecurityProfile::authorize_invoke

fn SecurityProfile::authorize_invoke(self : SecurityProfile, request : InvokeRequest) -> RuntimeInvokeAuthorization

#
SecurityProfile::authorize_operation

fn SecurityProfile::authorize_operation(self : SecurityProfile, request : InvokeRequest, scope : OperationScope) -> RuntimeInvokeAuthorization

#
SecurityProfile::capability_policy

fn SecurityProfile::capability_policy(self : SecurityProfile) -> CapabilityPolicy

#
SecurityProfile::capability_report

#
SecurityProfile::check_handlers

fn SecurityProfile::check_handlers(self : SecurityProfile) -> Bool

#
SecurityProfile::command_manifest

fn SecurityProfile::command_manifest(self : SecurityProfile) -> CommandManifest

#
SecurityProfile::denied_routes

fn SecurityProfile::denied_routes(self : SecurityProfile) -> Array[String]

#
SecurityProfile::error_count

fn SecurityProfile::error_count(self : SecurityProfile) -> Int

#
SecurityProfile::evaluate

fn SecurityProfile::evaluate(self : SecurityProfile, window_label~ : String, permission~ : Permission, origin? : String) -> CapabilityDecision

#
SecurityProfile::evaluate_operation

fn SecurityProfile::evaluate_operation(self : SecurityProfile, window_label~ : String, permission~ : Permission, scope~ : OperationScope, origin? : String) -> CapabilityDecision

#
SecurityProfile::exposed_routes

fn SecurityProfile::exposed_routes(self : SecurityProfile) -> Array[String]

#
SecurityProfile::from_plan

fn SecurityProfile::from_plan(plan : RuntimePlan, registered_routes? : Array[String], check_handlers? : Bool) -> SecurityProfile

#
SecurityProfile::info_count

fn SecurityProfile::info_count(self : SecurityProfile) -> Int

#
SecurityProfile::ok

fn SecurityProfile::ok(self : SecurityProfile) -> Bool

#
SecurityProfile::permission_manifest

fn SecurityProfile::permission_manifest(self : SecurityProfile) -> PermissionManifest

#
SecurityProfile::platform

fn SecurityProfile::platform(self : SecurityProfile) -> String

#
SecurityProfile::problems

fn SecurityProfile::problems(self : SecurityProfile) -> Array[String]

#
SecurityProfile::registered_routes

fn SecurityProfile::registered_routes(self : SecurityProfile) -> Array[String]

#
SecurityProfile::runtime_audit

fn SecurityProfile::runtime_audit(self : SecurityProfile) -> RuntimeAudit

#
SecurityProfile::to_json

fn SecurityProfile::to_json(self : SecurityProfile) -> String

#
SecurityProfile::unused_permissions

fn SecurityProfile::unused_permissions(self : SecurityProfile) -> Array[String]

#
SecurityProfile::warning_count

fn SecurityProfile::warning_count(self : SecurityProfile) -> Int

#
SigningConfig

pub struct SigningConfig {
identity : String?
team_id : String?
entitlements_path : String?
notarization_profile : String?
timestamp_url : String?
} derive(Eq,
Debug
)

#
SigningConfig::configured

fn SigningConfig::configured(self : SigningConfig) -> Bool

#
SigningConfig::entitlements_path

fn SigningConfig::entitlements_path(self : SigningConfig) -> String?

#
SigningConfig::identity

fn SigningConfig::identity(self : SigningConfig) -> String?

#
SigningConfig::new

fn SigningConfig::new(identity? : String, team_id? : String, entitlements_path? : String, notarization_profile? : String, timestamp_url? : String) -> SigningConfig

#
SigningConfig::notarization_profile

fn SigningConfig::notarization_profile(self : SigningConfig) -> String?

#
SigningConfig::team_id

fn SigningConfig::team_id(self : SigningConfig) -> String?

#
SigningConfig::timestamp_url

fn SigningConfig::timestamp_url(self : SigningConfig) -> String?

#
SigningConfig::to_json

fn SigningConfig::to_json(self : SigningConfig) -> String

#
SigningConfig::validate

fn SigningConfig::validate(self : SigningConfig) -> Array[String]

#
SigningPrerequisite

pub struct SigningPrerequisite {
kind : SigningPrerequisiteKind
name : String
description : String
} derive(Eq,
Debug
)

#
SigningPrerequisite::description

fn SigningPrerequisite::description(self : SigningPrerequisite) -> String

#
SigningPrerequisite::kind

#
SigningPrerequisite::name

fn SigningPrerequisite::name(self : SigningPrerequisite) -> String

#
SigningPrerequisite::new

fn SigningPrerequisite::new(kind~ : SigningPrerequisiteKind, name~ : String, description~ : String) -> SigningPrerequisite

#
SigningPrerequisite::to_json

fn SigningPrerequisite::to_json(self : SigningPrerequisite) -> String

#
SigningPrerequisiteKind

pub(all) enum SigningPrerequisiteKind {
SigningIdentity
SigningTool
NotarizationTool
RuntimeDependency
PackageValidator
} derive(Eq,
Debug
)

#
SigningPrerequisiteKind::name

#
SigningStep

pub struct SigningStep {
name : String
tool : String
arguments : Array[String]
description : String
} derive(Eq,
Debug
)

#
SigningStep::arguments

fn SigningStep::arguments(self : SigningStep) -> Array[String]

#
SigningStep::description

fn SigningStep::description(self : SigningStep) -> String

#
SigningStep::name

fn SigningStep::name(self : SigningStep) -> String

#
SigningStep::new

fn SigningStep::new(name~ : String, tool~ : String, arguments~ : Array[String], description~ : String) -> SigningStep

#
SigningStep::to_json

fn SigningStep::to_json(self : SigningStep) -> String

#
SigningStep::tool

fn SigningStep::tool(self : SigningStep) -> String

#
Source

pub(all) enum Source {
InlineHtml(String)
LocalPath(String)
PackagedAssets(String)
RemoteUrl(String)
Localhost(LocalhostSource)
RabbitaCell(Cell)
} derive(Eq,
Debug
)

#
Source::html

fn Source::html(content : String) -> Source

#
Source::is_empty

fn Source::is_empty(self : Source) -> Bool

#
Source::local_path

fn Source::local_path(path : String) -> Source

#
Source::localhost

fn Source::localhost(port~ : Int, host? : String, path? : String, readiness_path? : String, command? : Array[String]) -> Source

#
Source::localhost_source

fn Source::localhost_source(source : LocalhostSource) -> Source

#
Source::packaged

fn Source::packaged(path : String) -> Source

#
Source::rabbita

fn Source::rabbita(cell : Cell) -> Source

#
Source::resolve

fn Source::resolve(self : Source, window_label~ : String, asset_protocol? : String) -> Result[ResolvedSource, String]

#
Source::url

fn Source::url(url : String) -> Source

#
StreamSink

pub struct StreamSink {
route : String
channel_id : String
channels : ChannelTable
}

#
StreamSink::cancel

fn StreamSink::cancel(self : StreamSink) -> Result[ChannelMessage, String]

#
StreamSink::channel

fn StreamSink::channel(self : StreamSink) -> Channel?

#
StreamSink::channel_id

fn StreamSink::channel_id(self : StreamSink) -> String

#
StreamSink::closed

fn StreamSink::closed(self : StreamSink) -> Bool

#
StreamSink::end

fn StreamSink::end(self : StreamSink) -> Result[ChannelMessage, String]

#
StreamSink::fail

fn StreamSink::fail(self : StreamSink, message : String) -> Result[ChannelMessage, String]

#
StreamSink::handle

fn StreamSink::handle(self : StreamSink) -> ResourceHandle?

#
StreamSink::route

fn StreamSink::route(self : StreamSink) -> String

#
StreamSink::send

fn StreamSink::send(self : StreamSink, payload : String) -> Result[ChannelMessage, String]

#
StreamSink::to_json

fn StreamSink::to_json(self : StreamSink) -> String

#
TitleBarStyle

pub(all) enum TitleBarStyle {
Native
Transparent
Hidden
} derive(Eq,
Debug
)

#
UpdateArtifactTrust

pub struct UpdateArtifactTrust {
path : String
sha256 : String
signature : String?
} derive(Eq,
Debug
)

#
UpdateArtifactTrust::new

fn UpdateArtifactTrust::new(path~ : String, sha256~ : String, signature? : String) -> UpdateArtifactTrust

#
UpdateArtifactTrust::path

fn UpdateArtifactTrust::path(self : UpdateArtifactTrust) -> String

#
UpdateArtifactTrust::sha256

fn UpdateArtifactTrust::sha256(self : UpdateArtifactTrust) -> String

#
UpdateArtifactTrust::signature

fn UpdateArtifactTrust::signature(self : UpdateArtifactTrust) -> String?

#
UpdateArtifactTrust::validate

fn UpdateArtifactTrust::validate(self : UpdateArtifactTrust) -> Array[String]

#
UpdateManifest

pub struct UpdateManifest {
identifier : String
product_name : String
version : String
channel : String
public_key : String?
artifacts : Array[UpdateManifestArtifact]
} derive(Eq,
Debug
)

#
UpdateManifest::artifacts

#
UpdateManifest::channel

fn UpdateManifest::channel(self : UpdateManifest) -> String

#
UpdateManifest::identifier

fn UpdateManifest::identifier(self : UpdateManifest) -> String

#
UpdateManifest::new

fn UpdateManifest::new(identifier~ : String, product_name~ : String, version~ : String, channel? : String, public_key? : String, artifacts~ : Array[UpdateManifestArtifact]) -> UpdateManifest

#
UpdateManifest::parse

fn UpdateManifest::parse(text : String) -> Result[UpdateManifest, Array[String]]

#
UpdateManifest::product_name

fn UpdateManifest::product_name(self : UpdateManifest) -> String

#
UpdateManifest::public_key

fn UpdateManifest::public_key(self : UpdateManifest) -> String?

#
UpdateManifest::to_json

fn UpdateManifest::to_json(self : UpdateManifest) -> String

#
UpdateManifest::trust_report

fn UpdateManifest::trust_report(self : UpdateManifest) -> UpdateTrustReport

#
UpdateManifest::validate

fn UpdateManifest::validate(self : UpdateManifest) -> Array[String]

#
UpdateManifest::version

fn UpdateManifest::version(self : UpdateManifest) -> String

#
UpdateManifestArtifact

pub struct UpdateManifestArtifact {
target : BundleTarget
kind : BundleArtifactKind
path : String
url : String
sha256 : String
signature : String?
} derive(Eq,
Debug
)

#
UpdateManifestArtifact::kind

#
UpdateManifestArtifact::new

fn UpdateManifestArtifact::new(target~ : BundleTarget, kind~ : BundleArtifactKind, path~ : String, url~ : String, sha256~ : String, signature? : String) -> UpdateManifestArtifact

#
UpdateManifestArtifact::path

#
UpdateManifestArtifact::sha256

fn UpdateManifestArtifact::sha256(self : UpdateManifestArtifact) -> String

#
UpdateManifestArtifact::signature

fn UpdateManifestArtifact::signature(self : UpdateManifestArtifact) -> String?

#
UpdateManifestArtifact::target

#
UpdateManifestArtifact::to_json

fn UpdateManifestArtifact::to_json(self : UpdateManifestArtifact) -> String

#
UpdateManifestArtifact::url

#
UpdateManifestArtifact::validate

fn UpdateManifestArtifact::validate(self : UpdateManifestArtifact, signature_required? : Bool) -> Array[String]

#
UpdateTrustReport

pub struct UpdateTrustReport {
trusted : Bool
signature_required : Bool
artifact_count : Int
signed_artifacts : Int
problems : Array[String]
} derive(Eq,
Debug
)

#
UpdateTrustReport::artifact_count

fn UpdateTrustReport::artifact_count(self : UpdateTrustReport) -> Int

#
UpdateTrustReport::problems

fn UpdateTrustReport::problems(self : UpdateTrustReport) -> Array[String]

#
UpdateTrustReport::signature_required

fn UpdateTrustReport::signature_required(self : UpdateTrustReport) -> Bool

#
UpdateTrustReport::signed_artifacts

fn UpdateTrustReport::signed_artifacts(self : UpdateTrustReport) -> Int

#
UpdateTrustReport::to_json

fn UpdateTrustReport::to_json(self : UpdateTrustReport) -> String

#
UpdateTrustReport::trusted

fn UpdateTrustReport::trusted(self : UpdateTrustReport) -> Bool

#
VirtualFile

pub struct VirtualFile {
path : String
content : String
} derive(Eq,
Debug
)

#
VirtualFile::content

fn VirtualFile::content(self : VirtualFile) -> String

#
VirtualFile::new

fn VirtualFile::new(path~ : String, content~ : String) -> VirtualFile

#
VirtualFile::path

fn VirtualFile::path(self : VirtualFile) -> String

#
WindowConfig

pub struct WindowConfig {
label : String
title : String
width : Int
height : Int
resizable : Bool
title_bar : TitleBarStyle
source : Source?
} derive(Eq,
Debug
)

#
WindowConfig::label

fn WindowConfig::label(self : WindowConfig) -> String

#
WindowConfig::new

fn WindowConfig::new(label? : String, title? : String, width? : Int, height? : Int, resizable? : Bool, title_bar? : TitleBarStyle, source? : Source) -> WindowConfig

#
WindowConfig::parse_open_payload

fn WindowConfig::parse_open_payload(payload : String) -> Result[WindowConfig, String]

#
WindowConfig::resolve

fn WindowConfig::resolve(self : WindowConfig, asset_protocol? : String) -> Result[ResolvedWindow, Array[String]]

#
WindowConfig::validate

fn WindowConfig::validate(self : WindowConfig) -> Array[String]

#
WindowConfig::with_source

fn WindowConfig::with_source(self : WindowConfig, source : Source) -> WindowConfig

#
capabilities_with_file_system_scopes

fn capabilities_with_file_system_scopes(capabilities~ : Array[Capability], scopes~ : Array[FileSystemScope]) -> Array[Capability]

#
cell_with_emit

fn[Model, Msg] cell_with_emit(model~ : Model, update~ : (Msg, Model) -> (Model, Cmd), view~ : ((Msg) -> Cmd, Model) -> Html) -> ((Msg) -> Cmd, Cell)

#
moonsuite_product_home

fn moonsuite_product_home() -> LepusaMoonSuiteProductHome

#
moonsuite_product_home_for_workspace_root

fn moonsuite_product_home_for_workspace_root(root : String) -> LepusaMoonSuiteProductHome

#
moonsuite_product_id

fn moonsuite_product_id() -> String

#
moonsuite_product_runtime_path

fn moonsuite_product_runtime_path() -> String

#
moonsuite_product_runtime_path_for_workspace_root

fn moonsuite_product_runtime_path_for_workspace_root(root : String) -> String

#
moonsuite_product_service_path

fn moonsuite_product_service_path() -> String

#
moonsuite_product_service_path_for_workspace_root

fn moonsuite_product_service_path_for_workspace_root(root : String) -> String

#
moonsuite_product_state_path

fn moonsuite_product_state_path() -> String

#
moonsuite_product_state_path_for_workspace_root

fn moonsuite_product_state_path_for_workspace_root(root : String) -> String

#
moonsuite_product_tmp_path

fn moonsuite_product_tmp_path() -> String

#
moonsuite_product_tmp_path_for_workspace_root

fn moonsuite_product_tmp_path_for_workspace_root(root : String) -> String

#
moonsuite_product_update_metadata_path

fn moonsuite_product_update_metadata_path() -> String

#
moonsuite_product_update_metadata_path_for_workspace_root

fn moonsuite_product_update_metadata_path_for_workspace_root(root : String) -> String

#
new

fn new(root : Cell) -> App

#
none

let none : Cmd

#
simple_cell

fn simple_cell(html : Html) -> Cell