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.
Files changed (158) hide show
  1. package/README.md +113 -99
  2. package/bin/cj-tauri.js +287 -287
  3. package/cjpm.toml +63 -52
  4. package/cli/cjpm.toml +22 -22
  5. package/cli/src/doctor.cj +308 -306
  6. package/cli/src/main.cj +129 -129
  7. package/cli/src/manifest.cj +632 -558
  8. package/cli/src/manifest_test.cj +87 -0
  9. package/cli/src/project.cj +770 -770
  10. package/cli/src/resolve.cj +348 -348
  11. package/cli/src/scaffold.cj +369 -369
  12. package/cli/src/sync.cj +526 -526
  13. package/cli/src/util.cj +168 -168
  14. package/cli/templates/app/README.md +51 -48
  15. package/cli/templates/app/assets/capabilities/default.json +7 -7
  16. package/cli/templates/app/assets/ui/index.html +120 -118
  17. package/cli/templates/app/cj-tauri.toml +32 -22
  18. package/cli/templates/app/cjpm.toml +34 -34
  19. package/cli/templates/app/src/main.cj +101 -90
  20. package/cli/templates/app-react/README.md +56 -56
  21. package/cli/templates/app-react/assets/capabilities/default.json +7 -7
  22. package/cli/templates/app-react/assets/ui/index.html +25 -25
  23. package/cli/templates/app-react/assets/ui/package.json +19 -19
  24. package/cli/templates/app-react/assets/ui/src/App.css +67 -67
  25. package/cli/templates/app-react/assets/ui/src/App.jsx +124 -124
  26. package/cli/templates/app-react/assets/ui/src/main.jsx +6 -6
  27. package/cli/templates/app-react/assets/ui/vite.config.js +24 -24
  28. package/cli/templates/app-react/cj-tauri.toml +33 -23
  29. package/cli/templates/app-react/cjpm.toml +34 -34
  30. package/cli/templates/app-react/src/main.cj +91 -91
  31. package/cli/templates/app-vue/README.md +56 -56
  32. package/cli/templates/app-vue/assets/capabilities/default.json +7 -7
  33. package/cli/templates/app-vue/assets/ui/index.html +25 -25
  34. package/cli/templates/app-vue/assets/ui/package.json +18 -18
  35. package/cli/templates/app-vue/assets/ui/src/App.vue +176 -176
  36. package/cli/templates/app-vue/assets/ui/src/main.js +4 -4
  37. package/cli/templates/app-vue/assets/ui/vite.config.js +24 -24
  38. package/cli/templates/app-vue/cj-tauri.toml +33 -23
  39. package/cli/templates/app-vue/cjpm.toml +34 -34
  40. package/cli/templates/app-vue/src/main.cj +91 -91
  41. package/cli/templates/ohos-skeleton/AppScope/app.json5 +13 -13
  42. package/cli/templates/ohos-skeleton/AppScope/resources/base/element/string.json +8 -8
  43. package/cli/templates/ohos-skeleton/AppScope/resources/base/media/layered_image.json +6 -6
  44. package/cli/templates/ohos-skeleton/README.md +84 -79
  45. package/cli/templates/ohos-skeleton/build-hap.sh +15 -0
  46. package/cli/templates/ohos-skeleton/build-profile.json5 +46 -46
  47. package/cli/templates/ohos-skeleton/entry/build-profile.json5 +26 -26
  48. package/cli/templates/ohos-skeleton/entry/cjpm.toml +51 -43
  49. package/cli/templates/ohos-skeleton/entry/hvigorfile.ts +6 -6
  50. package/cli/templates/ohos-skeleton/entry/oh-package.json5 +9 -9
  51. package/cli/templates/ohos-skeleton/entry/src/main/cangjie/ability_stage.cj +17 -17
  52. package/cli/templates/ohos-skeleton/entry/src/main/cangjie/app_host.cj +94 -94
  53. package/cli/templates/ohos-skeleton/entry/src/main/cangjie/dialog_host.cj +217 -0
  54. package/cli/templates/ohos-skeleton/entry/src/main/cangjie/index.cj +527 -167
  55. package/cli/templates/ohos-skeleton/entry/src/main/cangjie/main_ability.cj +139 -139
  56. package/cli/templates/ohos-skeleton/entry/src/main/module.json5 +57 -49
  57. package/cli/templates/ohos-skeleton/entry/src/main/resources/base/element/color.json +8 -8
  58. package/cli/templates/ohos-skeleton/entry/src/main/resources/base/element/string.json +16 -16
  59. package/cli/templates/ohos-skeleton/entry/src/main/resources/base/media/layered_image.json +6 -6
  60. package/cli/templates/ohos-skeleton/entry/src/main/resources/base/profile/main_pages.json +2 -2
  61. package/cli/templates/ohos-skeleton/entry/src/main/resources/rawfile/capabilities.json +6 -6
  62. package/cli/templates/ohos-skeleton/entry/src/main/resources/rawfile/index.html +92 -92
  63. package/cli/templates/ohos-skeleton/hvigor/hvigor-config.json5 +5 -5
  64. package/cli/templates/ohos-skeleton/hvigorfile.ts +6 -6
  65. package/cli/templates/ohos-skeleton/oh-package.json5 +10 -10
  66. package/native/build_win.bat +62 -62
  67. package/native/core/bridge_core.c +1681 -1626
  68. package/native/core/bridge_core.h +675 -618
  69. package/native/core/bridge_js.h +108 -108
  70. package/native/platforms/harmonyos/README.md +115 -6
  71. package/native/platforms/linux/bridge_linux.c +2787 -2485
  72. package/native/platforms/windows/bridge_win.c +3740 -3248
  73. package/native/tests/gtk_threading_probe.c +143 -143
  74. package/native/tests/test_bridge_core.c +1339 -1228
  75. package/package.json +53 -53
  76. package/prebuilt/linux-x64/cj-tauri +0 -0
  77. package/src/api_system.cj +67 -67
  78. package/src/app.cj +325 -969
  79. package/src/app_events.cj +166 -0
  80. package/src/app_host_ops.cj +287 -0
  81. package/src/app_run.cj +283 -0
  82. package/src/app_spec.cj +76 -76
  83. package/src/arkweb_menu.cj +216 -0
  84. package/src/arkweb_script.cj +142 -142
  85. package/src/capability.cj +409 -409
  86. package/src/clipboard_bridge.cj +178 -0
  87. package/src/dialog_spec.cj +79 -0
  88. package/src/dragdrop.cj +26 -26
  89. package/src/embedded_assets.cj +98 -98
  90. package/src/host.cj +752 -607
  91. package/src/host_arkweb.cj +924 -778
  92. package/src/host_webkit.cj +663 -570
  93. package/src/host_webview2.cj +663 -570
  94. package/src/hotkey.cj +66 -66
  95. package/src/ipc_hub.cj +337 -337
  96. package/src/ipc_message.cj +286 -286
  97. package/src/launch.cj +62 -62
  98. package/src/logging.cj +127 -127
  99. package/src/menu.cj +197 -197
  100. package/src/platform/platform_app_context.cj +77 -77
  101. package/src/platform/platform_assets.cj +33 -33
  102. package/src/platform/platform_discover.cj +176 -176
  103. package/src/platform/platform_env.cj +29 -29
  104. package/src/platform/platform_feature.cj +31 -31
  105. package/src/platform/platform_page_source.cj +87 -87
  106. package/src/platform/platform_target_info.cj +32 -32
  107. package/src/platform_host_provider.cj +87 -87
  108. package/src/plugin.cj +333 -333
  109. package/src/plugins/clipboard/plugin_clipboard.cj +152 -152
  110. package/src/plugins/dialog/plugin_dialog.cj +209 -209
  111. package/src/plugins/fs/plugin_fs.cj +105 -1
  112. package/src/plugins/http/http_backend.cj +131 -0
  113. package/src/plugins/http/http_desktop.cj +195 -0
  114. package/src/plugins/http/http_ohos.cj +204 -0
  115. package/src/plugins/http/plugin_http.cj +310 -459
  116. package/src/plugins/log/plugin_log.cj +105 -105
  117. package/src/plugins/menu/plugin_menu.cj +158 -158
  118. package/src/plugins/notification/plugin_notification.cj +154 -154
  119. package/src/plugins/serial/plugin_serial.cj +458 -454
  120. package/src/plugins/serial/serial_bridge.cj +194 -194
  121. package/src/plugins/serial/serial_manager_ohos.cj +92 -0
  122. package/src/plugins/serial/serial_ohos.cj +529 -0
  123. package/src/plugins/shell/plugin_shell.cj +258 -258
  124. package/src/plugins/sqlite/plugin_sqlite.cj +705 -710
  125. package/src/plugins/sqlite/sqlite_ffi.cj +206 -211
  126. package/src/plugins/ws/plugin_ws.cj +488 -470
  127. package/src/process_hidden.cj +174 -174
  128. package/src/scope.cj +391 -391
  129. package/src/shell_event.cj +69 -69
  130. package/src/tests/app_spec_test.cj +126 -127
  131. package/src/tests/capability_test.cj +243 -243
  132. package/src/tests/dialog_spec_test.cj +73 -0
  133. package/src/tests/fake_host.cj +201 -201
  134. package/src/tests/ipc_hub_test.cj +487 -487
  135. package/src/tests/logging_test.cj +62 -62
  136. package/src/tests/platform_contract_test.cj +251 -251
  137. package/src/tests/plugin_clipboard_test.cj +222 -222
  138. package/src/tests/plugin_dialog_test.cj +237 -237
  139. package/src/tests/plugin_fs_test.cj +207 -0
  140. package/src/tests/plugin_http_test.cj +124 -124
  141. package/src/tests/plugin_notification_test.cj +205 -205
  142. package/src/tests/plugin_serial_test.cj +48 -0
  143. package/src/tests/plugin_test.cj +605 -585
  144. package/src/tests/plugin_ws_test.cj +40 -40
  145. package/src/tests/process_hidden_test.cj +129 -129
  146. package/src/tests/scope_test.cj +350 -350
  147. package/src/tests/system_host_test.cj +99 -81
  148. package/src/tests/urlutil_test.cj +53 -53
  149. package/src/tests/version_test.cj +75 -75
  150. package/src/tests/window_registry_test.cj +123 -123
  151. package/src/tray.cj +90 -90
  152. package/src/urlutil.cj +159 -159
  153. package/src/version.cj +44 -44
  154. package/src/window.cj +51 -51
  155. package/src/window_registry.cj +116 -116
  156. package/prebuilt/win32-x64/cj-tauri.exe +0 -0
  157. package/src/plugins/serial/serial_ohos_stub.cj +0 -61
  158. package/src/plugins/sqlite/sqlite_ohos_stub.cj +0 -91
package/cli/src/main.cj CHANGED
@@ -1,129 +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(" 创建新项目(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
- }
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
+ }