cj-tauri 2.0.0 → 2.1.1

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 (157) hide show
  1. package/README.md +206 -139
  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 +643 -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 +638 -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 +3745 -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/src/api_system.cj +67 -67
  77. package/src/app.cj +335 -969
  78. package/src/app_events.cj +166 -0
  79. package/src/app_host_ops.cj +287 -0
  80. package/src/app_run.cj +283 -0
  81. package/src/app_spec.cj +76 -76
  82. package/src/arkweb_menu.cj +216 -0
  83. package/src/arkweb_script.cj +142 -142
  84. package/src/capability.cj +409 -409
  85. package/src/clipboard_bridge.cj +178 -0
  86. package/src/dialog_spec.cj +79 -0
  87. package/src/dragdrop.cj +26 -26
  88. package/src/embedded_assets.cj +98 -98
  89. package/src/host.cj +752 -607
  90. package/src/host_arkweb.cj +924 -778
  91. package/src/host_webkit.cj +663 -570
  92. package/src/host_webview2.cj +663 -570
  93. package/src/hotkey.cj +66 -66
  94. package/src/ipc_hub.cj +401 -337
  95. package/src/ipc_message.cj +286 -286
  96. package/src/launch.cj +62 -62
  97. package/src/logging.cj +127 -127
  98. package/src/menu.cj +197 -197
  99. package/src/platform/platform_app_context.cj +77 -77
  100. package/src/platform/platform_assets.cj +33 -33
  101. package/src/platform/platform_discover.cj +176 -176
  102. package/src/platform/platform_env.cj +29 -29
  103. package/src/platform/platform_feature.cj +31 -31
  104. package/src/platform/platform_page_source.cj +87 -87
  105. package/src/platform/platform_target_info.cj +32 -32
  106. package/src/platform_host_provider.cj +87 -87
  107. package/src/plugin.cj +333 -333
  108. package/src/plugins/clipboard/plugin_clipboard.cj +152 -152
  109. package/src/plugins/dialog/plugin_dialog.cj +209 -209
  110. package/src/plugins/fs/plugin_fs.cj +105 -1
  111. package/src/plugins/http/http_backend.cj +131 -0
  112. package/src/plugins/http/http_desktop.cj +195 -0
  113. package/src/plugins/http/http_ohos.cj +204 -0
  114. package/src/plugins/http/plugin_http.cj +310 -459
  115. package/src/plugins/log/plugin_log.cj +105 -105
  116. package/src/plugins/menu/plugin_menu.cj +158 -158
  117. package/src/plugins/notification/plugin_notification.cj +154 -154
  118. package/src/plugins/serial/plugin_serial.cj +458 -454
  119. package/src/plugins/serial/serial_bridge.cj +194 -194
  120. package/src/plugins/serial/serial_manager_ohos.cj +92 -0
  121. package/src/plugins/serial/serial_ohos.cj +529 -0
  122. package/src/plugins/shell/plugin_shell.cj +258 -258
  123. package/src/plugins/sqlite/plugin_sqlite.cj +705 -710
  124. package/src/plugins/sqlite/sqlite_ffi.cj +206 -211
  125. package/src/plugins/ws/plugin_ws.cj +488 -470
  126. package/src/process_hidden.cj +174 -174
  127. package/src/scope.cj +391 -391
  128. package/src/shell_event.cj +69 -69
  129. package/src/tests/app_spec_test.cj +130 -127
  130. package/src/tests/capability_test.cj +243 -243
  131. package/src/tests/dialog_spec_test.cj +73 -0
  132. package/src/tests/fake_host.cj +201 -201
  133. package/src/tests/ipc_hub_test.cj +563 -487
  134. package/src/tests/logging_test.cj +62 -62
  135. package/src/tests/platform_contract_test.cj +264 -251
  136. package/src/tests/plugin_clipboard_test.cj +222 -222
  137. package/src/tests/plugin_dialog_test.cj +237 -237
  138. package/src/tests/plugin_fs_test.cj +207 -0
  139. package/src/tests/plugin_http_test.cj +124 -124
  140. package/src/tests/plugin_notification_test.cj +205 -205
  141. package/src/tests/plugin_serial_test.cj +48 -0
  142. package/src/tests/plugin_test.cj +605 -585
  143. package/src/tests/plugin_ws_test.cj +40 -40
  144. package/src/tests/process_hidden_test.cj +129 -129
  145. package/src/tests/scope_test.cj +350 -350
  146. package/src/tests/system_host_test.cj +99 -81
  147. package/src/tests/urlutil_test.cj +53 -53
  148. package/src/tests/version_test.cj +75 -75
  149. package/src/tests/window_registry_test.cj +123 -123
  150. package/src/tray.cj +90 -90
  151. package/src/urlutil.cj +159 -159
  152. package/src/version.cj +44 -44
  153. package/src/window.cj +51 -51
  154. package/src/window_registry.cj +116 -116
  155. package/prebuilt/win32-x64/cj-tauri.exe +0 -0
  156. package/src/plugins/serial/serial_ohos_stub.cj +0 -61
  157. 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
+ }