47 lines
1.5 KiB
Zig
47 lines
1.5 KiB
Zig
const std = @import("std");
|
|
const runner = @import("runner");
|
|
const native_sdk = @import("native_sdk");
|
|
|
|
pub const panic = std.debug.FullPanic(native_sdk.debug.capturePanic);
|
|
|
|
const App = struct {
|
|
env_map: *std.process.Environ.Map,
|
|
|
|
fn app(self: *@This()) native_sdk.App {
|
|
return .{
|
|
.context = self,
|
|
.name = "vue-example",
|
|
.source = native_sdk.frontend.productionSource(.{ .dist = "frontend/dist" }),
|
|
.source_fn = source,
|
|
};
|
|
}
|
|
|
|
fn source(context: *anyopaque) anyerror!native_sdk.WebViewSource {
|
|
const self: *@This() = @ptrCast(@alignCast(context));
|
|
return native_sdk.frontend.sourceFromEnv(self.env_map, .{
|
|
.dist = "frontend/dist",
|
|
.entry = "index.html",
|
|
});
|
|
}
|
|
};
|
|
|
|
const dev_origins = [_][]const u8{ "zero://app", "zero://inline", "http://127.0.0.1:5173" };
|
|
|
|
pub fn main(init: std.process.Init) !void {
|
|
var app = App{ .env_map = init.environ_map };
|
|
try runner.runWithOptions(app.app(), .{
|
|
.app_name = "Vue Example",
|
|
.window_title = "Vue Example",
|
|
.bundle_id = "dev.native_sdk.vue-example",
|
|
.security = .{
|
|
.navigation = .{ .allowed_origins = &dev_origins },
|
|
},
|
|
}, init);
|
|
}
|
|
|
|
test "production source points at Vue build output" {
|
|
const source = native_sdk.frontend.productionSource(.{ .dist = "frontend/dist" });
|
|
try std.testing.expectEqual(native_sdk.WebViewSourceKind.assets, source.kind);
|
|
try std.testing.expectEqualStrings("frontend/dist", source.asset_options.?.root_path);
|
|
}
|