cj-tauri 1.1.2 → 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.
Files changed (162) hide show
  1. package/README.md +137 -77
  2. package/bin/cj-tauri.js +287 -287
  3. package/cjpm.toml +13 -2
  4. package/cli/cjpm.toml +22 -13
  5. package/cli/src/doctor.cj +308 -304
  6. package/cli/src/main.cj +129 -121
  7. package/cli/src/manifest.cj +632 -0
  8. package/cli/src/manifest_test.cj +87 -0
  9. package/cli/src/project.cj +770 -754
  10. package/cli/src/resolve.cj +348 -348
  11. package/cli/src/scaffold.cj +46 -38
  12. package/cli/src/sync.cj +526 -0
  13. package/cli/src/util.cj +9 -0
  14. package/cli/templates/app/README.md +30 -59
  15. package/cli/templates/app/{ui → assets/ui}/index.html +2 -0
  16. package/cli/templates/app/cj-tauri.toml +32 -0
  17. package/cli/templates/app/cjpm.toml +21 -4
  18. package/cli/templates/app/src/main.cj +29 -16
  19. package/cli/templates/app-react/README.md +34 -45
  20. package/cli/templates/app-react/{ui → assets/ui}/index.html +25 -25
  21. package/cli/templates/app-react/{ui → assets/ui}/src/App.css +67 -67
  22. package/cli/templates/app-react/{ui → assets/ui}/src/App.jsx +124 -124
  23. package/cli/templates/app-react/cj-tauri.toml +33 -0
  24. package/cli/templates/app-react/cjpm.toml +21 -4
  25. package/cli/templates/app-react/src/main.cj +18 -29
  26. package/cli/templates/app-vue/README.md +34 -38
  27. package/cli/templates/app-vue/{ui → assets/ui}/index.html +25 -25
  28. package/cli/templates/app-vue/{ui → assets/ui}/src/App.vue +176 -176
  29. package/cli/templates/app-vue/cj-tauri.toml +33 -0
  30. package/cli/templates/app-vue/cjpm.toml +21 -4
  31. package/cli/templates/app-vue/src/main.cj +18 -29
  32. package/cli/templates/{ohos-pc → ohos-skeleton}/README.md +5 -0
  33. package/cli/templates/{ohos-pc → ohos-skeleton}/build-hap.sh +15 -0
  34. package/cli/templates/{ohos-pc → ohos-skeleton}/entry/cjpm.toml +8 -0
  35. package/cli/templates/ohos-skeleton/entry/src/main/cangjie/dialog_host.cj +217 -0
  36. package/cli/templates/ohos-skeleton/entry/src/main/cangjie/index.cj +527 -0
  37. package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/module.json5 +8 -0
  38. package/native/build_win.bat +62 -62
  39. package/native/core/bridge_core.c +1681 -1626
  40. package/native/core/bridge_core.h +675 -618
  41. package/native/core/bridge_js.h +108 -108
  42. package/native/platforms/harmonyos/README.md +115 -6
  43. package/native/platforms/linux/bridge_linux.c +2787 -2485
  44. package/native/platforms/windows/bridge_win.c +3740 -3248
  45. package/native/tests/gtk_threading_probe.c +143 -143
  46. package/native/tests/test_bridge_core.c +1339 -1228
  47. package/package.json +53 -51
  48. package/prebuilt/linux-x64/cj-tauri +0 -0
  49. package/src/api_system.cj +67 -67
  50. package/src/app.cj +325 -940
  51. package/src/app_events.cj +166 -0
  52. package/src/app_host_ops.cj +287 -0
  53. package/src/app_run.cj +283 -0
  54. package/src/app_spec.cj +76 -0
  55. package/src/arkweb_menu.cj +216 -0
  56. package/src/arkweb_script.cj +0 -12
  57. package/src/capability.cj +409 -409
  58. package/src/clipboard_bridge.cj +178 -0
  59. package/src/dialog_spec.cj +79 -0
  60. package/src/dragdrop.cj +26 -26
  61. package/src/embedded_assets.cj +98 -98
  62. package/src/host.cj +752 -604
  63. package/src/host_arkweb.cj +201 -17
  64. package/src/host_webkit.cj +663 -548
  65. package/src/host_webview2.cj +663 -548
  66. package/src/hotkey.cj +66 -66
  67. package/src/ipc_hub.cj +337 -337
  68. package/src/ipc_message.cj +286 -286
  69. package/src/launch.cj +62 -0
  70. package/src/logging.cj +127 -127
  71. package/src/menu.cj +197 -197
  72. package/src/platform/platform_app_context.cj +77 -0
  73. package/src/platform/platform_assets.cj +33 -0
  74. package/src/platform/platform_discover.cj +176 -0
  75. package/src/platform/platform_env.cj +29 -0
  76. package/src/platform/platform_feature.cj +31 -0
  77. package/src/platform/platform_page_source.cj +87 -0
  78. package/src/platform/platform_target_info.cj +32 -0
  79. package/src/platform_host_provider.cj +87 -0
  80. package/src/plugin.cj +333 -299
  81. package/src/plugins/clipboard/plugin_clipboard.cj +152 -144
  82. package/src/plugins/dialog/plugin_dialog.cj +209 -209
  83. package/src/plugins/fs/plugin_fs.cj +105 -1
  84. package/src/plugins/http/http_backend.cj +131 -0
  85. package/src/plugins/http/http_desktop.cj +195 -0
  86. package/src/plugins/http/http_ohos.cj +204 -0
  87. package/src/plugins/http/plugin_http.cj +310 -459
  88. package/src/plugins/log/plugin_log.cj +105 -105
  89. package/src/plugins/menu/plugin_menu.cj +8 -0
  90. package/src/plugins/notification/plugin_notification.cj +154 -146
  91. package/src/plugins/serial/plugin_serial.cj +17 -1
  92. package/src/plugins/serial/serial_bridge.cj +9 -1
  93. package/src/plugins/serial/serial_manager_ohos.cj +92 -0
  94. package/src/plugins/serial/serial_ohos.cj +529 -0
  95. package/src/plugins/shell/plugin_shell.cj +29 -1
  96. package/src/plugins/sqlite/plugin_sqlite.cj +8 -0
  97. package/src/plugins/ws/plugin_ws.cj +488 -470
  98. package/src/process_hidden.cj +174 -174
  99. package/src/scope.cj +391 -391
  100. package/src/shell_event.cj +69 -69
  101. package/src/tests/app_spec_test.cj +126 -0
  102. package/src/tests/capability_test.cj +243 -243
  103. package/src/tests/dialog_spec_test.cj +73 -0
  104. package/src/tests/fake_host.cj +201 -186
  105. package/src/tests/ipc_hub_test.cj +487 -487
  106. package/src/tests/logging_test.cj +62 -62
  107. package/src/tests/platform_contract_test.cj +251 -0
  108. package/src/tests/plugin_clipboard_test.cj +222 -222
  109. package/src/tests/plugin_dialog_test.cj +237 -237
  110. package/src/tests/plugin_fs_test.cj +207 -0
  111. package/src/tests/plugin_http_test.cj +124 -124
  112. package/src/tests/plugin_notification_test.cj +205 -205
  113. package/src/tests/plugin_serial_test.cj +48 -0
  114. package/src/tests/plugin_test.cj +66 -3
  115. package/src/tests/plugin_ws_test.cj +40 -40
  116. package/src/tests/process_hidden_test.cj +129 -129
  117. package/src/tests/scope_test.cj +350 -350
  118. package/src/tests/system_host_test.cj +99 -81
  119. package/src/tests/urlutil_test.cj +53 -53
  120. package/src/tests/version_test.cj +75 -75
  121. package/src/tests/window_registry_test.cj +123 -123
  122. package/src/tray.cj +90 -90
  123. package/src/urlutil.cj +159 -159
  124. package/src/version.cj +44 -44
  125. package/src/window.cj +51 -51
  126. package/src/window_registry.cj +116 -116
  127. package/cli/templates/ohos-pc/entry/src/main/cangjie/index.cj +0 -167
  128. package/prebuilt/win32-x64/cj-tauri.exe +0 -0
  129. package/src/host_factory.cj +0 -48
  130. /package/cli/templates/app/{capabilities → assets/capabilities}/default.json +0 -0
  131. /package/cli/templates/app-react/{capabilities → assets/capabilities}/default.json +0 -0
  132. /package/cli/templates/app-react/{ui → assets/ui}/package.json +0 -0
  133. /package/cli/templates/app-react/{ui → assets/ui}/src/main.jsx +0 -0
  134. /package/cli/templates/app-react/{ui → assets/ui}/vite.config.js +0 -0
  135. /package/cli/templates/app-vue/{capabilities → assets/capabilities}/default.json +0 -0
  136. /package/cli/templates/app-vue/{ui → assets/ui}/package.json +0 -0
  137. /package/cli/templates/app-vue/{ui → assets/ui}/src/main.js +0 -0
  138. /package/cli/templates/app-vue/{ui → assets/ui}/vite.config.js +0 -0
  139. /package/cli/templates/{ohos-pc → ohos-skeleton}/AppScope/app.json5 +0 -0
  140. /package/cli/templates/{ohos-pc → ohos-skeleton}/AppScope/resources/base/element/string.json +0 -0
  141. /package/cli/templates/{ohos-pc → ohos-skeleton}/AppScope/resources/base/media/background.png +0 -0
  142. /package/cli/templates/{ohos-pc → ohos-skeleton}/AppScope/resources/base/media/foreground.png +0 -0
  143. /package/cli/templates/{ohos-pc → ohos-skeleton}/AppScope/resources/base/media/layered_image.json +0 -0
  144. /package/cli/templates/{ohos-pc → ohos-skeleton}/build-profile.json5 +0 -0
  145. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/build-profile.json5 +0 -0
  146. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/hvigorfile.ts +0 -0
  147. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/oh-package.json5 +0 -0
  148. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/cangjie/ability_stage.cj +0 -0
  149. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/cangjie/app_host.cj +0 -0
  150. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/cangjie/main_ability.cj +0 -0
  151. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/resources/base/element/color.json +0 -0
  152. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/resources/base/element/string.json +0 -0
  153. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/resources/base/media/background.png +0 -0
  154. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/resources/base/media/foreground.png +0 -0
  155. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/resources/base/media/layered_image.json +0 -0
  156. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/resources/base/media/startIcon.png +0 -0
  157. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/resources/base/profile/main_pages.json +0 -0
  158. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/resources/rawfile/capabilities.json +0 -0
  159. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/resources/rawfile/index.html +0 -0
  160. /package/cli/templates/{ohos-pc → ohos-skeleton}/hvigor/hvigor-config.json5 +0 -0
  161. /package/cli/templates/{ohos-pc → ohos-skeleton}/hvigorfile.ts +0 -0
  162. /package/cli/templates/{ohos-pc → ohos-skeleton}/oh-package.json5 +0 -0
package/cli/src/main.cj CHANGED
@@ -1,121 +1,129 @@
1
- /**
2
- * cj-tauri CLI 入口:create / dev / build / run / info / help
3
- */
4
- package cli
5
-
6
- func usage(): Unit {
7
- println("cj-tauri ${cliVersion()} — 仓颉版 Tauri CLI(脚手架 + 构建 + 运行)")
8
- println("")
9
- println("用法:")
10
- println(" cj-tauri create <项目名> [--template <t>] [--bundle <bundleName>] [--label <应用名>]")
11
- println(" 创建新项目(src/ + ui/ + capabilities/ + cjpm.toml)")
12
- println(" 模板: app(内联单文件,缺省)/ vue / react")
13
- println(" ohos(鸿蒙 PC / 2in1:ArkWeb 宿主 + build-hap.sh)")
14
- println(" --bundle / --label 只对 ohos 模板有意义(缺省由项目名推导)")
15
- println(" cj-tauri dev 构建 C 桥 + cjpm build + 启动应用(鸿蒙工程改走 build-hap.sh)")
16
- println(" cj-tauri build 构建 C 桥 + cjpm build(鸿蒙工程 = 编 hap)")
17
- println(" cj-tauri run 运行已构建产物(鸿蒙工程 = 装到设备并拉起)")
18
- println(" cj-tauri info [--json] 环境自检(排障用);--json 只输出插件清单(机器可读)")
19
- println(" cj-tauri doctor 环境自检逐行给结论(每条自带「缺了就怎么办」)")
20
- println(" cj-tauri help 显示本帮助")
21
- println("")
22
- println("环境变量:")
23
- println(" CJ_TAURI_ROOT 框架仓库根目录(不在仓库内运行时必须设置)")
24
- println(" CANGJIE_HOME 仓颉 SDK 根目录(默认从 PATH 中的 cjc 反推)")
25
- println(" CANGJIE_STDX stdx 动态库目录(默认从框架/项目 cjpm.toml 读取)")
26
- println(" CJ_TAURI_MANIFEST")
27
- println(" 仅由 cj-tauri info 设置(json / text):应用装配完就打印清单并退出,")
28
- println(" 不创建窗口——无显示环境也能取到真实的插件装配结果")
29
- println("")
30
- println("示例:")
31
- println(" cd /tmp && cj-tauri create myapp && cd myapp && cj-tauri dev")
32
- }
33
-
34
- main(args: Array<String>): Int64 {
35
- if (args.size == 0) {
36
- usage()
37
- return 1
38
- }
39
- let sub = args[0]
40
- if (sub == "help" || sub == "-h" || sub == "--help") {
41
- usage()
42
- return 0
43
- }
44
- if (sub == "--version" || sub == "-V" || sub == "-v") {
45
- println("cj-tauri ${cliVersion()}")
46
- return 0
47
- }
48
- if (sub == "create") {
49
- var name = ""
50
- var tpl = "app"
51
- var bundle = ""
52
- var label = ""
53
- var i = 1
54
- while (i < args.size) {
55
- let a = args[i]
56
- if (a == "--template" || a == "-t") {
57
- if (i + 1 >= args.size) {
58
- eprintln("用法: cj-tauri create <项目名> [--template app|vue|react|ohos]")
59
- return 1
60
- }
61
- tpl = args[i + 1]
62
- i = i + 2
63
- continue
64
- }
65
- if (a == "--bundle") {
66
- if (i + 1 >= args.size) {
67
- eprintln("用法: cj-tauri create <项目名> --template ohos [--bundle <bundleName>]")
68
- return 1
69
- }
70
- bundle = args[i + 1]
71
- i = i + 2
72
- continue
73
- }
74
- if (a == "--label") {
75
- if (i + 1 >= args.size) {
76
- eprintln("用法: cj-tauri create <项目名> --template ohos [--label <应用名>]")
77
- return 1
78
- }
79
- label = args[i + 1]
80
- i = i + 2
81
- continue
82
- }
83
- if (name.size == 0) {
84
- name = a
85
- }
86
- i = i + 1
87
- }
88
- if (name.size == 0) {
89
- eprintln("用法: cj-tauri create <项目名> [--template app|vue|react|ohos]")
90
- return 1
91
- }
92
- return cmdCreate(name, tpl, bundle, label)
93
- }
94
- if (sub == "dev") {
95
- return cmdDev()
96
- }
97
- if (sub == "build") {
98
- return cmdBuild()
99
- }
100
- if (sub == "run") {
101
- return cmdRun()
102
- }
103
- if (sub == "info") {
104
- var asJson = false
105
- var i = 1
106
- while (i < args.size) {
107
- if (args[i] == "--json") {
108
- asJson = true
109
- }
110
- i = i + 1
111
- }
112
- return cmdInfo(asJson)
113
- }
114
- if (sub == "doctor") {
115
- return cmdDoctor()
116
- }
117
- eprintln("未知子命令: ${sub}")
118
- println("")
119
- usage()
120
- return 1
121
- }
1
+ /**
2
+ * cj-tauri CLI 入口:create / dev / build / run / info / help
3
+ */
4
+ package cli
5
+
6
+ func usage(): Unit {
7
+ println("cj-tauri ${cliVersion()} — 仓颉版 Tauri CLI(脚手架 + 构建 + 运行)")
8
+ println("")
9
+ println("用法:")
10
+ println(" cj-tauri create <项目名> [--template <t>] [--bundle <bundleName>] [--label <应用名>]")
11
+ println(" 创建新项目(cj-tauri.toml + src/ + assets/;骨架由 cj-tauri sync 派生)")
12
+ println(" 模板: app(内联单文件,缺省)/ vue / react(Vite 前端,作为资产)")
13
+ println(" ohos(鸿蒙生态:同形态统一工程,清单决定目标端)")
14
+ println(" --bundle / --label 只对 ohos 模板有意义(缺省由项目名推导)")
15
+ println(" cj-tauri dev 构建 C 桥 + cjpm build + 启动应用(鸿蒙工程改走 build-hap.sh)")
16
+ println(" cj-tauri build 构建 C 桥 + cjpm build(鸿蒙工程 = 编 hap)")
17
+ println(" cj-tauri run 运行已构建产物(鸿蒙工程 = 装到设备并拉起)")
18
+ println(" cj-tauri info [--json] 环境自检(排障用);--json 只输出插件清单(机器可读)")
19
+ println(" cj-tauri doctor 环境自检逐行给结论(每条自带「缺了就怎么办」)")
20
+ println(" cj-tauri check 校验 cj-tauri.toml(id/窗口/资产存在)+ targets 骨架漂移")
21
+ println(" cj-tauri sync [desktop|ohos] 按清单派生 targets 骨架(缺省两端都派生)")
22
+ println(" cj-tauri help 显示本帮助")
23
+ println("")
24
+ println("环境变量:")
25
+ println(" CJ_TAURI_ROOT 框架仓库根目录(不在仓库内运行时必须设置)")
26
+ println(" CANGJIE_HOME 仓颉 SDK 根目录(默认从 PATH 中的 cjc 反推)")
27
+ println(" CANGJIE_STDX stdx 动态库目录(默认从框架/项目 cjpm.toml 读取)")
28
+ println(" CJ_TAURI_MANIFEST")
29
+ println(" 仅由 cj-tauri info 设置(json / text):应用装配完就打印清单并退出,")
30
+ println(" 不创建窗口——无显示环境也能取到真实的插件装配结果")
31
+ println("")
32
+ println("示例:")
33
+ println(" cd /tmp && cj-tauri create myapp && cd myapp && cj-tauri dev")
34
+ }
35
+
36
+ main(args: Array<String>): Int64 {
37
+ if (args.size == 0) {
38
+ usage()
39
+ return 1
40
+ }
41
+ let sub = args[0]
42
+ if (sub == "help" || sub == "-h" || sub == "--help") {
43
+ usage()
44
+ return 0
45
+ }
46
+ if (sub == "--version" || sub == "-V" || sub == "-v") {
47
+ println("cj-tauri ${cliVersion()}")
48
+ return 0
49
+ }
50
+ if (sub == "create") {
51
+ var name = ""
52
+ var tpl = "app"
53
+ var bundle = ""
54
+ var label = ""
55
+ var i = 1
56
+ while (i < args.size) {
57
+ let a = args[i]
58
+ if (a == "--template" || a == "-t") {
59
+ if (i + 1 >= args.size) {
60
+ eprintln("用法: cj-tauri create <项目名> [--template app|vue|react|ohos]")
61
+ return 1
62
+ }
63
+ tpl = args[i + 1]
64
+ i = i + 2
65
+ continue
66
+ }
67
+ if (a == "--bundle") {
68
+ if (i + 1 >= args.size) {
69
+ eprintln("用法: cj-tauri create <项目名> --template ohos [--bundle <bundleName>]")
70
+ return 1
71
+ }
72
+ bundle = args[i + 1]
73
+ i = i + 2
74
+ continue
75
+ }
76
+ if (a == "--label") {
77
+ if (i + 1 >= args.size) {
78
+ eprintln("用法: cj-tauri create <项目名> --template ohos [--label <应用名>]")
79
+ return 1
80
+ }
81
+ label = args[i + 1]
82
+ i = i + 2
83
+ continue
84
+ }
85
+ if (name.size == 0) {
86
+ name = a
87
+ }
88
+ i = i + 1
89
+ }
90
+ if (name.size == 0) {
91
+ eprintln("用法: cj-tauri create <项目名> [--template app|vue|react|ohos]")
92
+ return 1
93
+ }
94
+ return cmdCreate(name, tpl, bundle, label)
95
+ }
96
+ if (sub == "dev") {
97
+ return cmdDev()
98
+ }
99
+ if (sub == "build") {
100
+ return cmdBuild()
101
+ }
102
+ if (sub == "run") {
103
+ return cmdRun()
104
+ }
105
+ if (sub == "info") {
106
+ var asJson = false
107
+ var i = 1
108
+ while (i < args.size) {
109
+ if (args[i] == "--json") {
110
+ asJson = true
111
+ }
112
+ i = i + 1
113
+ }
114
+ return cmdInfo(asJson)
115
+ }
116
+ if (sub == "doctor") {
117
+ return cmdDoctor()
118
+ }
119
+ if (sub == "check") {
120
+ return cmdCheck()
121
+ }
122
+ if (sub == "sync") {
123
+ return cmdSync(args)
124
+ }
125
+ eprintln("未知子命令: ${sub}")
126
+ println("")
127
+ usage()
128
+ return 1
129
+ }