cj-tauri 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +113 -99
- package/bin/cj-tauri.js +287 -287
- package/cjpm.toml +63 -52
- package/cli/cjpm.toml +22 -22
- package/cli/src/doctor.cj +308 -306
- package/cli/src/main.cj +129 -129
- package/cli/src/manifest.cj +632 -558
- package/cli/src/manifest_test.cj +87 -0
- package/cli/src/project.cj +770 -770
- package/cli/src/resolve.cj +348 -348
- package/cli/src/scaffold.cj +369 -369
- package/cli/src/sync.cj +526 -526
- package/cli/src/util.cj +168 -168
- package/cli/templates/app/README.md +51 -48
- package/cli/templates/app/assets/capabilities/default.json +7 -7
- package/cli/templates/app/assets/ui/index.html +120 -118
- package/cli/templates/app/cj-tauri.toml +32 -22
- package/cli/templates/app/cjpm.toml +34 -34
- package/cli/templates/app/src/main.cj +101 -90
- package/cli/templates/app-react/README.md +56 -56
- package/cli/templates/app-react/assets/capabilities/default.json +7 -7
- package/cli/templates/app-react/assets/ui/index.html +25 -25
- package/cli/templates/app-react/assets/ui/package.json +19 -19
- package/cli/templates/app-react/assets/ui/src/App.css +67 -67
- package/cli/templates/app-react/assets/ui/src/App.jsx +124 -124
- package/cli/templates/app-react/assets/ui/src/main.jsx +6 -6
- package/cli/templates/app-react/assets/ui/vite.config.js +24 -24
- package/cli/templates/app-react/cj-tauri.toml +33 -23
- package/cli/templates/app-react/cjpm.toml +34 -34
- package/cli/templates/app-react/src/main.cj +91 -91
- package/cli/templates/app-vue/README.md +56 -56
- package/cli/templates/app-vue/assets/capabilities/default.json +7 -7
- package/cli/templates/app-vue/assets/ui/index.html +25 -25
- package/cli/templates/app-vue/assets/ui/package.json +18 -18
- package/cli/templates/app-vue/assets/ui/src/App.vue +176 -176
- package/cli/templates/app-vue/assets/ui/src/main.js +4 -4
- package/cli/templates/app-vue/assets/ui/vite.config.js +24 -24
- package/cli/templates/app-vue/cj-tauri.toml +33 -23
- package/cli/templates/app-vue/cjpm.toml +34 -34
- package/cli/templates/app-vue/src/main.cj +91 -91
- package/cli/templates/ohos-skeleton/AppScope/app.json5 +13 -13
- package/cli/templates/ohos-skeleton/AppScope/resources/base/element/string.json +8 -8
- package/cli/templates/ohos-skeleton/AppScope/resources/base/media/layered_image.json +6 -6
- package/cli/templates/ohos-skeleton/README.md +84 -79
- package/cli/templates/ohos-skeleton/build-hap.sh +15 -0
- package/cli/templates/ohos-skeleton/build-profile.json5 +46 -46
- package/cli/templates/ohos-skeleton/entry/build-profile.json5 +26 -26
- package/cli/templates/ohos-skeleton/entry/cjpm.toml +51 -43
- package/cli/templates/ohos-skeleton/entry/hvigorfile.ts +6 -6
- package/cli/templates/ohos-skeleton/entry/oh-package.json5 +9 -9
- package/cli/templates/ohos-skeleton/entry/src/main/cangjie/ability_stage.cj +17 -17
- package/cli/templates/ohos-skeleton/entry/src/main/cangjie/app_host.cj +94 -94
- package/cli/templates/ohos-skeleton/entry/src/main/cangjie/dialog_host.cj +217 -0
- package/cli/templates/ohos-skeleton/entry/src/main/cangjie/index.cj +527 -167
- package/cli/templates/ohos-skeleton/entry/src/main/cangjie/main_ability.cj +139 -139
- package/cli/templates/ohos-skeleton/entry/src/main/module.json5 +57 -49
- package/cli/templates/ohos-skeleton/entry/src/main/resources/base/element/color.json +8 -8
- package/cli/templates/ohos-skeleton/entry/src/main/resources/base/element/string.json +16 -16
- package/cli/templates/ohos-skeleton/entry/src/main/resources/base/media/layered_image.json +6 -6
- package/cli/templates/ohos-skeleton/entry/src/main/resources/base/profile/main_pages.json +2 -2
- package/cli/templates/ohos-skeleton/entry/src/main/resources/rawfile/capabilities.json +6 -6
- package/cli/templates/ohos-skeleton/entry/src/main/resources/rawfile/index.html +92 -92
- package/cli/templates/ohos-skeleton/hvigor/hvigor-config.json5 +5 -5
- package/cli/templates/ohos-skeleton/hvigorfile.ts +6 -6
- package/cli/templates/ohos-skeleton/oh-package.json5 +10 -10
- package/native/build_win.bat +62 -62
- package/native/core/bridge_core.c +1681 -1626
- package/native/core/bridge_core.h +675 -618
- package/native/core/bridge_js.h +108 -108
- package/native/platforms/harmonyos/README.md +115 -6
- package/native/platforms/linux/bridge_linux.c +2787 -2485
- package/native/platforms/windows/bridge_win.c +3740 -3248
- package/native/tests/gtk_threading_probe.c +143 -143
- package/native/tests/test_bridge_core.c +1339 -1228
- package/package.json +53 -53
- package/prebuilt/linux-x64/cj-tauri +0 -0
- package/src/api_system.cj +67 -67
- package/src/app.cj +325 -969
- package/src/app_events.cj +166 -0
- package/src/app_host_ops.cj +287 -0
- package/src/app_run.cj +283 -0
- package/src/app_spec.cj +76 -76
- package/src/arkweb_menu.cj +216 -0
- package/src/arkweb_script.cj +142 -142
- package/src/capability.cj +409 -409
- package/src/clipboard_bridge.cj +178 -0
- package/src/dialog_spec.cj +79 -0
- package/src/dragdrop.cj +26 -26
- package/src/embedded_assets.cj +98 -98
- package/src/host.cj +752 -607
- package/src/host_arkweb.cj +924 -778
- package/src/host_webkit.cj +663 -570
- package/src/host_webview2.cj +663 -570
- package/src/hotkey.cj +66 -66
- package/src/ipc_hub.cj +337 -337
- package/src/ipc_message.cj +286 -286
- package/src/launch.cj +62 -62
- package/src/logging.cj +127 -127
- package/src/menu.cj +197 -197
- package/src/platform/platform_app_context.cj +77 -77
- package/src/platform/platform_assets.cj +33 -33
- package/src/platform/platform_discover.cj +176 -176
- package/src/platform/platform_env.cj +29 -29
- package/src/platform/platform_feature.cj +31 -31
- package/src/platform/platform_page_source.cj +87 -87
- package/src/platform/platform_target_info.cj +32 -32
- package/src/platform_host_provider.cj +87 -87
- package/src/plugin.cj +333 -333
- package/src/plugins/clipboard/plugin_clipboard.cj +152 -152
- package/src/plugins/dialog/plugin_dialog.cj +209 -209
- package/src/plugins/fs/plugin_fs.cj +105 -1
- package/src/plugins/http/http_backend.cj +131 -0
- package/src/plugins/http/http_desktop.cj +195 -0
- package/src/plugins/http/http_ohos.cj +204 -0
- package/src/plugins/http/plugin_http.cj +310 -459
- package/src/plugins/log/plugin_log.cj +105 -105
- package/src/plugins/menu/plugin_menu.cj +158 -158
- package/src/plugins/notification/plugin_notification.cj +154 -154
- package/src/plugins/serial/plugin_serial.cj +458 -454
- package/src/plugins/serial/serial_bridge.cj +194 -194
- package/src/plugins/serial/serial_manager_ohos.cj +92 -0
- package/src/plugins/serial/serial_ohos.cj +529 -0
- package/src/plugins/shell/plugin_shell.cj +258 -258
- package/src/plugins/sqlite/plugin_sqlite.cj +705 -710
- package/src/plugins/sqlite/sqlite_ffi.cj +206 -211
- package/src/plugins/ws/plugin_ws.cj +488 -470
- package/src/process_hidden.cj +174 -174
- package/src/scope.cj +391 -391
- package/src/shell_event.cj +69 -69
- package/src/tests/app_spec_test.cj +126 -127
- package/src/tests/capability_test.cj +243 -243
- package/src/tests/dialog_spec_test.cj +73 -0
- package/src/tests/fake_host.cj +201 -201
- package/src/tests/ipc_hub_test.cj +487 -487
- package/src/tests/logging_test.cj +62 -62
- package/src/tests/platform_contract_test.cj +251 -251
- package/src/tests/plugin_clipboard_test.cj +222 -222
- package/src/tests/plugin_dialog_test.cj +237 -237
- package/src/tests/plugin_fs_test.cj +207 -0
- package/src/tests/plugin_http_test.cj +124 -124
- package/src/tests/plugin_notification_test.cj +205 -205
- package/src/tests/plugin_serial_test.cj +48 -0
- package/src/tests/plugin_test.cj +605 -585
- package/src/tests/plugin_ws_test.cj +40 -40
- package/src/tests/process_hidden_test.cj +129 -129
- package/src/tests/scope_test.cj +350 -350
- package/src/tests/system_host_test.cj +99 -81
- package/src/tests/urlutil_test.cj +53 -53
- package/src/tests/version_test.cj +75 -75
- package/src/tests/window_registry_test.cj +123 -123
- package/src/tray.cj +90 -90
- package/src/urlutil.cj +159 -159
- package/src/version.cj +44 -44
- package/src/window.cj +51 -51
- package/src/window_registry.cj +116 -116
- package/prebuilt/win32-x64/cj-tauri.exe +0 -0
- package/src/plugins/serial/serial_ohos_stub.cj +0 -61
- package/src/plugins/sqlite/sqlite_ohos_stub.cj +0 -91
package/package.json
CHANGED
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "cj-tauri",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "仓颉语言的 Tauri:用仓颉写桌面应用后端 / 系统 WebView 写前端的混合开发框架脚手架 CLI(IPC 双向桥 + 能力安全模型,Windows / Linux / 鸿蒙 PC)",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"cangjie",
|
|
7
|
-
"cangjie-lang",
|
|
8
|
-
"仓颉",
|
|
9
|
-
"tauri",
|
|
10
|
-
"webview",
|
|
11
|
-
"webview2",
|
|
12
|
-
"webkitgtk",
|
|
13
|
-
"desktop",
|
|
14
|
-
"gui",
|
|
15
|
-
"framework",
|
|
16
|
-
"ipc",
|
|
17
|
-
"cli",
|
|
18
|
-
"scaffold",
|
|
19
|
-
"cross-platform",
|
|
20
|
-
"windows",
|
|
21
|
-
"linux",
|
|
22
|
-
"ohos",
|
|
23
|
-
"harmonyos"
|
|
24
|
-
],
|
|
25
|
-
"license": "MIT",
|
|
26
|
-
"bin": {
|
|
27
|
-
"cj-tauri": "bin/cj-tauri.js"
|
|
28
|
-
},
|
|
29
|
-
"files": [
|
|
30
|
-
"bin/",
|
|
31
|
-
"prebuilt/",
|
|
32
|
-
"src/",
|
|
33
|
-
"native/",
|
|
34
|
-
"cli/",
|
|
35
|
-
"cjpm.toml",
|
|
36
|
-
"LICENSE",
|
|
37
|
-
"README.md"
|
|
38
|
-
],
|
|
39
|
-
"engines": {
|
|
40
|
-
"node": ">=18"
|
|
41
|
-
},
|
|
42
|
-
"repository": {
|
|
43
|
-
"type": "git",
|
|
44
|
-
"url": "git+https://github.com/yangyongzhen/cj-tauri.git"
|
|
45
|
-
},
|
|
46
|
-
"homepage": "https://atomgit.com/qq8864/cj-tauri#readme",
|
|
47
|
-
"bugs": {
|
|
48
|
-
"url": "https://atomgit.com/qq8864/cj-tauri/issues"
|
|
49
|
-
},
|
|
50
|
-
"publishConfig": {
|
|
51
|
-
"access": "public"
|
|
52
|
-
}
|
|
53
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "cj-tauri",
|
|
3
|
+
"version": "2.1.0",
|
|
4
|
+
"description": "仓颉语言的 Tauri:用仓颉写桌面应用后端 / 系统 WebView 写前端的混合开发框架脚手架 CLI(IPC 双向桥 + 能力安全模型,Windows / Linux / 鸿蒙 PC)",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"cangjie",
|
|
7
|
+
"cangjie-lang",
|
|
8
|
+
"仓颉",
|
|
9
|
+
"tauri",
|
|
10
|
+
"webview",
|
|
11
|
+
"webview2",
|
|
12
|
+
"webkitgtk",
|
|
13
|
+
"desktop",
|
|
14
|
+
"gui",
|
|
15
|
+
"framework",
|
|
16
|
+
"ipc",
|
|
17
|
+
"cli",
|
|
18
|
+
"scaffold",
|
|
19
|
+
"cross-platform",
|
|
20
|
+
"windows",
|
|
21
|
+
"linux",
|
|
22
|
+
"ohos",
|
|
23
|
+
"harmonyos"
|
|
24
|
+
],
|
|
25
|
+
"license": "MIT",
|
|
26
|
+
"bin": {
|
|
27
|
+
"cj-tauri": "bin/cj-tauri.js"
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"bin/",
|
|
31
|
+
"prebuilt/",
|
|
32
|
+
"src/",
|
|
33
|
+
"native/",
|
|
34
|
+
"cli/",
|
|
35
|
+
"cjpm.toml",
|
|
36
|
+
"LICENSE",
|
|
37
|
+
"README.md"
|
|
38
|
+
],
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=18"
|
|
41
|
+
},
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "git+https://github.com/yangyongzhen/cj-tauri.git"
|
|
45
|
+
},
|
|
46
|
+
"homepage": "https://atomgit.com/qq8864/cj-tauri#readme",
|
|
47
|
+
"bugs": {
|
|
48
|
+
"url": "https://atomgit.com/qq8864/cj-tauri/issues"
|
|
49
|
+
},
|
|
50
|
+
"publishConfig": {
|
|
51
|
+
"access": "public"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
Binary file
|
package/src/api_system.cj
CHANGED
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
package cjTauri
|
|
2
|
-
|
|
3
|
-
import stdx.encoding.json.*
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* 内置系统命令(对标 Tauri core 命令)
|
|
7
|
-
* 命令命名空间:system:*
|
|
8
|
-
*/
|
|
9
|
-
public class SystemCommands <: CommandHandler {
|
|
10
|
-
public init() {}
|
|
11
|
-
|
|
12
|
-
public func handle(cmd: String, args: JsonObject, ipc: IpcContext): JsonValue {
|
|
13
|
-
match (cmd) {
|
|
14
|
-
case "system:version" => this.version()
|
|
15
|
-
case "system:ping" => this.ping(args)
|
|
16
|
-
case "system:echo" => this.echo(args)
|
|
17
|
-
case "system:devtools" => this.devTools(ipc)
|
|
18
|
-
case "system:host" => this.hostCapabilities(ipc)
|
|
19
|
-
case _ => throw CommandException("unknown system command: ${cmd}")
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
private func version(): JsonValue {
|
|
24
|
-
var obj = JsonObject()
|
|
25
|
-
obj.put("name", JsonString("cj-tauri"))
|
|
26
|
-
obj.put("version", JsonString(CJ_TAURI_VERSION))
|
|
27
|
-
obj.put("protocol", JsonString(CJ_IPC_PROTOCOL))
|
|
28
|
-
obj.put("cangjie", JsonString("1.0.5"))
|
|
29
|
-
obj.put("platform", JsonString(currentPlatform()))
|
|
30
|
-
return obj
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
private func ping(args: JsonObject): JsonValue {
|
|
34
|
-
let _ = args
|
|
35
|
-
return JsonString("pong")
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
private func echo(args: JsonObject): JsonValue {
|
|
39
|
-
// 原样返回 args(作为 JsonValue 包装)
|
|
40
|
-
return args
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/** 打开开发者工具(需在 capability 中声明 system:devtools 才可调用) */
|
|
44
|
-
private func devTools(ipc: IpcContext): JsonValue {
|
|
45
|
-
ipc.openDevTools()
|
|
46
|
-
return JsonBool(true)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* 宿主能力位(RFC-002 §5.3):平台**有没有**菜单 / 托盘 / 文件拖入
|
|
51
|
-
*
|
|
52
|
-
* 与「应用放不放行」是两回事:能力位说「这台机器上的框架支不支持」,capability 清单说
|
|
53
|
-
* 「这个应用准不准」,两者都要过才叫真能用——放行了但平台没有,事件永远不会出现。
|
|
54
|
-
* 取**调用方那个窗口**的位域(多窗口下可能不同,如 Linux 托盘取决于桥怎么编的)。
|
|
55
|
-
* 与 `system:*` 的其它命令一样,需在清单里声明 `system:host` 才可调用(三处联动)。
|
|
56
|
-
*
|
|
57
|
-
* 另带 `logFile`(RFC-003 第 5 期):日志落盘是**进程级**的,不是某一台宿主的能力,
|
|
58
|
-
* 所以它没有对应的布尔位——空串=没开(stderr 照旧),非空=诊断都落在那个文件里,
|
|
59
|
-
* 远程报障先问这一个字段,比让用户去翻平台目录快。
|
|
60
|
-
*/
|
|
61
|
-
private func hostCapabilities(ipc: IpcContext): JsonValue {
|
|
62
|
-
let obj = HostCapabilities.fromBits(currentPlatform(), ipc.hostCapabilities())
|
|
63
|
-
.toJson().asObject()
|
|
64
|
-
obj.put("logFile", JsonString(currentLogFilePath()))
|
|
65
|
-
return obj
|
|
66
|
-
}
|
|
67
|
-
}
|
|
1
|
+
package cjTauri
|
|
2
|
+
|
|
3
|
+
import stdx.encoding.json.*
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 内置系统命令(对标 Tauri core 命令)
|
|
7
|
+
* 命令命名空间:system:*
|
|
8
|
+
*/
|
|
9
|
+
public class SystemCommands <: CommandHandler {
|
|
10
|
+
public init() {}
|
|
11
|
+
|
|
12
|
+
public func handle(cmd: String, args: JsonObject, ipc: IpcContext): JsonValue {
|
|
13
|
+
match (cmd) {
|
|
14
|
+
case "system:version" => this.version()
|
|
15
|
+
case "system:ping" => this.ping(args)
|
|
16
|
+
case "system:echo" => this.echo(args)
|
|
17
|
+
case "system:devtools" => this.devTools(ipc)
|
|
18
|
+
case "system:host" => this.hostCapabilities(ipc)
|
|
19
|
+
case _ => throw CommandException("unknown system command: ${cmd}")
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
private func version(): JsonValue {
|
|
24
|
+
var obj = JsonObject()
|
|
25
|
+
obj.put("name", JsonString("cj-tauri"))
|
|
26
|
+
obj.put("version", JsonString(CJ_TAURI_VERSION))
|
|
27
|
+
obj.put("protocol", JsonString(CJ_IPC_PROTOCOL))
|
|
28
|
+
obj.put("cangjie", JsonString("1.0.5"))
|
|
29
|
+
obj.put("platform", JsonString(currentPlatform()))
|
|
30
|
+
return obj
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
private func ping(args: JsonObject): JsonValue {
|
|
34
|
+
let _ = args
|
|
35
|
+
return JsonString("pong")
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
private func echo(args: JsonObject): JsonValue {
|
|
39
|
+
// 原样返回 args(作为 JsonValue 包装)
|
|
40
|
+
return args
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** 打开开发者工具(需在 capability 中声明 system:devtools 才可调用) */
|
|
44
|
+
private func devTools(ipc: IpcContext): JsonValue {
|
|
45
|
+
ipc.openDevTools()
|
|
46
|
+
return JsonBool(true)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* 宿主能力位(RFC-002 §5.3):平台**有没有**菜单 / 托盘 / 文件拖入
|
|
51
|
+
*
|
|
52
|
+
* 与「应用放不放行」是两回事:能力位说「这台机器上的框架支不支持」,capability 清单说
|
|
53
|
+
* 「这个应用准不准」,两者都要过才叫真能用——放行了但平台没有,事件永远不会出现。
|
|
54
|
+
* 取**调用方那个窗口**的位域(多窗口下可能不同,如 Linux 托盘取决于桥怎么编的)。
|
|
55
|
+
* 与 `system:*` 的其它命令一样,需在清单里声明 `system:host` 才可调用(三处联动)。
|
|
56
|
+
*
|
|
57
|
+
* 另带 `logFile`(RFC-003 第 5 期):日志落盘是**进程级**的,不是某一台宿主的能力,
|
|
58
|
+
* 所以它没有对应的布尔位——空串=没开(stderr 照旧),非空=诊断都落在那个文件里,
|
|
59
|
+
* 远程报障先问这一个字段,比让用户去翻平台目录快。
|
|
60
|
+
*/
|
|
61
|
+
private func hostCapabilities(ipc: IpcContext): JsonValue {
|
|
62
|
+
let obj = HostCapabilities.fromBits(currentPlatform(), ipc.hostCapabilities())
|
|
63
|
+
.toJson().asObject()
|
|
64
|
+
obj.put("logFile", JsonString(currentLogFilePath()))
|
|
65
|
+
return obj
|
|
66
|
+
}
|
|
67
|
+
}
|