openxiangda 1.0.264 → 2.0.0-alpha.2

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 (537) hide show
  1. package/README.md +11 -666
  2. package/bin/run.js +11 -0
  3. package/dist/browser/AuthoritativeSelector.d.ts +37 -0
  4. package/dist/browser/AuthoritativeSelector.d.ts.map +1 -0
  5. package/dist/browser/AuthoritativeSelector.js +357 -0
  6. package/dist/browser/AuthoritativeSelector.js.map +1 -0
  7. package/dist/browser/FilePreviewPage.d.ts +2 -0
  8. package/dist/browser/FilePreviewPage.d.ts.map +1 -0
  9. package/dist/browser/FilePreviewPage.js +191 -0
  10. package/dist/browser/FilePreviewPage.js.map +1 -0
  11. package/dist/browser/Shell.d.ts +6 -0
  12. package/dist/browser/Shell.d.ts.map +1 -0
  13. package/dist/browser/Shell.js +198 -0
  14. package/dist/browser/Shell.js.map +1 -0
  15. package/dist/browser/appearance.d.ts +12 -0
  16. package/dist/browser/appearance.d.ts.map +1 -0
  17. package/dist/browser/appearance.js +100 -0
  18. package/dist/browser/appearance.js.map +1 -0
  19. package/dist/browser/application.d.ts +8 -0
  20. package/dist/browser/application.d.ts.map +1 -0
  21. package/dist/browser/application.js +42 -0
  22. package/dist/browser/application.js.map +1 -0
  23. package/dist/browser/components/platform-fields/AddressField.d.ts +12 -0
  24. package/dist/browser/components/platform-fields/AddressField.d.ts.map +1 -0
  25. package/dist/browser/components/platform-fields/AddressField.js +179 -0
  26. package/dist/browser/components/platform-fields/AddressField.js.map +1 -0
  27. package/dist/browser/components/platform-fields/AttachmentFileList.d.ts +9 -0
  28. package/dist/browser/components/platform-fields/AttachmentFileList.d.ts.map +1 -0
  29. package/dist/browser/components/platform-fields/AttachmentFileList.js +164 -0
  30. package/dist/browser/components/platform-fields/AttachmentFileList.js.map +1 -0
  31. package/dist/browser/components/platform-fields/CascadeField.d.ts +13 -0
  32. package/dist/browser/components/platform-fields/CascadeField.d.ts.map +1 -0
  33. package/dist/browser/components/platform-fields/CascadeField.js +14 -0
  34. package/dist/browser/components/platform-fields/CascadeField.js.map +1 -0
  35. package/dist/browser/components/platform-fields/DateTimeField.d.ts +16 -0
  36. package/dist/browser/components/platform-fields/DateTimeField.d.ts.map +1 -0
  37. package/dist/browser/components/platform-fields/DateTimeField.js +51 -0
  38. package/dist/browser/components/platform-fields/DateTimeField.js.map +1 -0
  39. package/dist/browser/components/platform-fields/JsonField.d.ts +11 -0
  40. package/dist/browser/components/platform-fields/JsonField.d.ts.map +1 -0
  41. package/dist/browser/components/platform-fields/JsonField.js +40 -0
  42. package/dist/browser/components/platform-fields/JsonField.js.map +1 -0
  43. package/dist/browser/components/platform-fields/LocationField.d.ts +11 -0
  44. package/dist/browser/components/platform-fields/LocationField.d.ts.map +1 -0
  45. package/dist/browser/components/platform-fields/LocationField.js +73 -0
  46. package/dist/browser/components/platform-fields/LocationField.js.map +1 -0
  47. package/dist/browser/components/platform-fields/PlatformDirectoryPicker.d.ts +12 -0
  48. package/dist/browser/components/platform-fields/PlatformDirectoryPicker.d.ts.map +1 -0
  49. package/dist/browser/components/platform-fields/PlatformDirectoryPicker.js +269 -0
  50. package/dist/browser/components/platform-fields/PlatformDirectoryPicker.js.map +1 -0
  51. package/dist/browser/components/platform-fields/ResourceReferenceField.d.ts +12 -0
  52. package/dist/browser/components/platform-fields/ResourceReferenceField.d.ts.map +1 -0
  53. package/dist/browser/components/platform-fields/ResourceReferenceField.js +22 -0
  54. package/dist/browser/components/platform-fields/ResourceReferenceField.js.map +1 -0
  55. package/dist/browser/components/platform-fields/RichTextField.d.ts +14 -0
  56. package/dist/browser/components/platform-fields/RichTextField.d.ts.map +1 -0
  57. package/dist/browser/components/platform-fields/RichTextField.js +214 -0
  58. package/dist/browser/components/platform-fields/RichTextField.js.map +1 -0
  59. package/dist/browser/components/platform-fields/SignatureField.d.ts +15 -0
  60. package/dist/browser/components/platform-fields/SignatureField.d.ts.map +1 -0
  61. package/dist/browser/components/platform-fields/SignatureField.js +179 -0
  62. package/dist/browser/components/platform-fields/SignatureField.js.map +1 -0
  63. package/dist/browser/components/platform-fields/SubtableField.d.ts +18 -0
  64. package/dist/browser/components/platform-fields/SubtableField.d.ts.map +1 -0
  65. package/dist/browser/components/platform-fields/SubtableField.js +236 -0
  66. package/dist/browser/components/platform-fields/SubtableField.js.map +1 -0
  67. package/dist/browser/components/platform-fields/address-value.d.ts +13 -0
  68. package/dist/browser/components/platform-fields/address-value.d.ts.map +1 -0
  69. package/dist/browser/components/platform-fields/address-value.js +70 -0
  70. package/dist/browser/components/platform-fields/address-value.js.map +1 -0
  71. package/dist/browser/components/platform-fields/cascade-value.d.ts +6 -0
  72. package/dist/browser/components/platform-fields/cascade-value.d.ts.map +1 -0
  73. package/dist/browser/components/platform-fields/cascade-value.js +47 -0
  74. package/dist/browser/components/platform-fields/cascade-value.js.map +1 -0
  75. package/dist/browser/components/platform-fields/directory-value.d.ts +7 -0
  76. package/dist/browser/components/platform-fields/directory-value.d.ts.map +1 -0
  77. package/dist/browser/components/platform-fields/directory-value.js +35 -0
  78. package/dist/browser/components/platform-fields/directory-value.js.map +1 -0
  79. package/dist/browser/components/platform-fields/field-form-codec.d.ts +10 -0
  80. package/dist/browser/components/platform-fields/field-form-codec.d.ts.map +1 -0
  81. package/dist/browser/components/platform-fields/field-form-codec.js +82 -0
  82. package/dist/browser/components/platform-fields/field-form-codec.js.map +1 -0
  83. package/dist/browser/components/platform-fields/location-value.d.ts +20 -0
  84. package/dist/browser/components/platform-fields/location-value.d.ts.map +1 -0
  85. package/dist/browser/components/platform-fields/location-value.js +57 -0
  86. package/dist/browser/components/platform-fields/location-value.js.map +1 -0
  87. package/dist/browser/components/platform-fields/resource-query.d.ts +14 -0
  88. package/dist/browser/components/platform-fields/resource-query.d.ts.map +1 -0
  89. package/dist/browser/components/platform-fields/resource-query.js +102 -0
  90. package/dist/browser/components/platform-fields/resource-query.js.map +1 -0
  91. package/dist/browser/components/platform-fields/rich-text-value.d.ts +12 -0
  92. package/dist/browser/components/platform-fields/rich-text-value.d.ts.map +1 -0
  93. package/dist/browser/components/platform-fields/rich-text-value.js +83 -0
  94. package/dist/browser/components/platform-fields/rich-text-value.js.map +1 -0
  95. package/dist/browser/components/platform-fields/subtable-value.d.ts +31 -0
  96. package/dist/browser/components/platform-fields/subtable-value.d.ts.map +1 -0
  97. package/dist/browser/components/platform-fields/subtable-value.js +120 -0
  98. package/dist/browser/components/platform-fields/subtable-value.js.map +1 -0
  99. package/dist/browser/components/resource/GeneratedResourceCrud.d.ts +8 -0
  100. package/dist/browser/components/resource/GeneratedResourceCrud.d.ts.map +1 -0
  101. package/dist/browser/components/resource/GeneratedResourceCrud.js +580 -0
  102. package/dist/browser/components/resource/GeneratedResourceCrud.js.map +1 -0
  103. package/dist/browser/components/resource/ResourceBatchActions.d.ts +25 -0
  104. package/dist/browser/components/resource/ResourceBatchActions.d.ts.map +1 -0
  105. package/dist/browser/components/resource/ResourceBatchActions.js +168 -0
  106. package/dist/browser/components/resource/ResourceBatchActions.js.map +1 -0
  107. package/dist/browser/components/resource/StandardResourcePages.d.ts +57 -0
  108. package/dist/browser/components/resource/StandardResourcePages.d.ts.map +1 -0
  109. package/dist/browser/components/resource/StandardResourcePages.js +89 -0
  110. package/dist/browser/components/resource/StandardResourcePages.js.map +1 -0
  111. package/dist/browser/components/resource/SurfaceFields.d.ts +88 -0
  112. package/dist/browser/components/resource/SurfaceFields.d.ts.map +1 -0
  113. package/dist/browser/components/resource/SurfaceFields.js +497 -0
  114. package/dist/browser/components/resource/SurfaceFields.js.map +1 -0
  115. package/dist/browser/components/resource/generated-resource-definition.d.ts +19 -0
  116. package/dist/browser/components/resource/generated-resource-definition.d.ts.map +1 -0
  117. package/dist/browser/components/resource/generated-resource-definition.js +2 -0
  118. package/dist/browser/components/resource/generated-resource-definition.js.map +1 -0
  119. package/dist/browser/components/resource/resource-import.d.ts +15 -0
  120. package/dist/browser/components/resource/resource-import.d.ts.map +1 -0
  121. package/dist/browser/components/resource/resource-import.js +197 -0
  122. package/dist/browser/components/resource/resource-import.js.map +1 -0
  123. package/dist/browser/data-provider.d.ts +4 -0
  124. package/dist/browser/data-provider.d.ts.map +1 -0
  125. package/dist/browser/data-provider.js +45 -0
  126. package/dist/browser/data-provider.js.map +1 -0
  127. package/dist/browser/platform-client.d.ts +81 -0
  128. package/dist/browser/platform-client.d.ts.map +1 -0
  129. package/dist/browser/platform-client.js +422 -0
  130. package/dist/browser/platform-client.js.map +1 -0
  131. package/dist/browser/resource-definitions.d.ts +8 -0
  132. package/dist/browser/resource-definitions.d.ts.map +1 -0
  133. package/dist/browser/resource-definitions.js +14 -0
  134. package/dist/browser/resource-definitions.js.map +1 -0
  135. package/dist/browser/runtime-meta.d.ts +22 -0
  136. package/dist/browser/runtime-meta.d.ts.map +1 -0
  137. package/dist/browser/runtime-meta.js +79 -0
  138. package/dist/browser/runtime-meta.js.map +1 -0
  139. package/dist/browser/runtime.d.ts +13 -0
  140. package/dist/browser/runtime.d.ts.map +1 -0
  141. package/dist/browser/runtime.js +47 -0
  142. package/dist/browser/runtime.js.map +1 -0
  143. package/dist/browser/styles.css +1941 -0
  144. package/dist/config.d.ts +2 -0
  145. package/dist/config.d.ts.map +1 -0
  146. package/dist/config.js +2 -0
  147. package/dist/config.js.map +1 -0
  148. package/dist/core.d.ts +6 -0
  149. package/dist/core.d.ts.map +1 -0
  150. package/dist/core.js +4 -0
  151. package/dist/core.js.map +1 -0
  152. package/dist/field-kit.d.ts +22 -0
  153. package/dist/field-kit.d.ts.map +1 -0
  154. package/dist/field-kit.js +22 -0
  155. package/dist/field-kit.js.map +1 -0
  156. package/dist/index.d.ts +2 -0
  157. package/dist/index.d.ts.map +1 -0
  158. package/dist/index.js +2 -0
  159. package/dist/index.js.map +1 -0
  160. package/dist/nest.d.ts +10 -0
  161. package/dist/nest.d.ts.map +1 -0
  162. package/dist/nest.js +9 -0
  163. package/dist/nest.js.map +1 -0
  164. package/dist/react.d.ts +12 -0
  165. package/dist/react.d.ts.map +1 -0
  166. package/dist/react.js +11 -0
  167. package/dist/react.js.map +1 -0
  168. package/dist/testing.d.ts +4 -0
  169. package/dist/testing.d.ts.map +1 -0
  170. package/dist/testing.js +4 -0
  171. package/dist/testing.js.map +1 -0
  172. package/package.json +95 -200
  173. package/skills/manifest.json +10 -0
  174. package/skills/openxiangda-v2/SKILL.md +55 -0
  175. package/skills/openxiangda-v2/references/architecture.md +7 -0
  176. package/skills/openxiangda-v2/references/backend.md +116 -0
  177. package/skills/openxiangda-v2/references/data-authz.md +93 -0
  178. package/skills/openxiangda-v2/references/delivery.md +11 -0
  179. package/skills/openxiangda-v2/references/discovery.md +15 -0
  180. package/skills/openxiangda-v2/references/frontend.md +10 -0
  181. package/skills/openxiangda-v2/references/testing.md +16 -0
  182. package/skills/openxiangda-v2/references/workflow-notification.md +69 -0
  183. package/skills/openxiangda-v2/references/workspace.md +21 -0
  184. package/bin/openxiangda.js +0 -26
  185. package/lib/app-function-invoke.js +0 -28
  186. package/lib/application-environments.js +0 -1134
  187. package/lib/change-baseline.js +0 -1359
  188. package/lib/cli.js +0 -31084
  189. package/lib/config.js +0 -450
  190. package/lib/content-cache.js +0 -97
  191. package/lib/delivery-v2-cli.js +0 -329
  192. package/lib/delivery-v2-executor.js +0 -1703
  193. package/lib/delivery-v2-package.js +0 -1176
  194. package/lib/dependency-capsule.js +0 -246
  195. package/lib/design-gates.js +0 -668
  196. package/lib/design-review.js +0 -220
  197. package/lib/developer-center.js +0 -160
  198. package/lib/form-field-contract.js +0 -79
  199. package/lib/form-schema-loader.js +0 -181
  200. package/lib/git-remote-identity.js +0 -89
  201. package/lib/http.js +0 -196
  202. package/lib/integration-bundle.js +0 -225
  203. package/lib/js-code-build.js +0 -175
  204. package/lib/open-api.js +0 -256
  205. package/lib/policy.js +0 -137
  206. package/lib/publish-context.js +0 -98
  207. package/lib/publish-lease-heartbeat.js +0 -182
  208. package/lib/publish-lease.js +0 -221
  209. package/lib/release-error-classification.js +0 -41
  210. package/lib/release-explain.js +0 -75
  211. package/lib/release-mainline.js +0 -654
  212. package/lib/release-plan.js +0 -550
  213. package/lib/release-telemetry.js +0 -182
  214. package/lib/resource-binding-contract.js +0 -210
  215. package/lib/role-resolution.js +0 -57
  216. package/lib/runtime-lineage.js +0 -326
  217. package/lib/sdd.js +0 -3306
  218. package/lib/skills.js +0 -453
  219. package/lib/source-dependencies.js +0 -921
  220. package/lib/task-status.js +0 -330
  221. package/lib/utils.js +0 -178
  222. package/lib/workspace-bootstrap.js +0 -268
  223. package/lib/workspace-init.js +0 -202
  224. package/lib/worktree-cleanup.js +0 -631
  225. package/lib/worktree-owner.js +0 -354
  226. package/openxiangda-skills/SKILL.md +0 -226
  227. package/openxiangda-skills/references/architecture-design.md +0 -409
  228. package/openxiangda-skills/references/architecture-patterns.md +0 -264
  229. package/openxiangda-skills/references/automation-v3.md +0 -349
  230. package/openxiangda-skills/references/best-practices.md +0 -272
  231. package/openxiangda-skills/references/component-guide.md +0 -287
  232. package/openxiangda-skills/references/connector-resources.md +0 -80
  233. package/openxiangda-skills/references/data-views.md +0 -360
  234. package/openxiangda-skills/references/forms/component-registry.md +0 -90
  235. package/openxiangda-skills/references/forms/form-schema.md +0 -146
  236. package/openxiangda-skills/references/forms/layout-and-rules.md +0 -24
  237. package/openxiangda-skills/references/notifications.md +0 -227
  238. package/openxiangda-skills/references/openxiangda-api.md +0 -971
  239. package/openxiangda-skills/references/pages/app-shell.md +0 -66
  240. package/openxiangda-skills/references/pages/page-sdk.md +0 -401
  241. package/openxiangda-skills/references/pages/publish-flow.md +0 -84
  242. package/openxiangda-skills/references/pages/workspace-structure.md +0 -41
  243. package/openxiangda-skills/references/permission-design-patterns.md +0 -313
  244. package/openxiangda-skills/references/permissions-settings.md +0 -468
  245. package/openxiangda-skills/references/platform-data-model.md +0 -340
  246. package/openxiangda-skills/references/resource-manifest-cheatsheet.md +0 -936
  247. package/openxiangda-skills/references/school-contact-relations.md +0 -224
  248. package/openxiangda-skills/references/style-system.md +0 -218
  249. package/openxiangda-skills/references/troubleshooting.md +0 -271
  250. package/openxiangda-skills/references/workflow-v3.md +0 -441
  251. package/openxiangda-skills/references/workspace-state.md +0 -115
  252. package/openxiangda-skills/skills/openxiangda-app/SKILL.md +0 -118
  253. package/openxiangda-skills/skills/openxiangda-architecture-design/SKILL.md +0 -137
  254. package/openxiangda-skills/skills/openxiangda-core/SKILL.md +0 -222
  255. package/openxiangda-skills/skills/openxiangda-form/SKILL.md +0 -184
  256. package/openxiangda-skills/skills/openxiangda-inspect/SKILL.md +0 -63
  257. package/openxiangda-skills/skills/openxiangda-open-api/SKILL.md +0 -57
  258. package/openxiangda-skills/skills/openxiangda-open-api/agents/openai.yaml +0 -4
  259. package/openxiangda-skills/skills/openxiangda-open-api/references/backend-authentication.md +0 -63
  260. package/openxiangda-skills/skills/openxiangda-open-api/references/dingtalk-api.openapi.json +0 -15653
  261. package/openxiangda-skills/skills/openxiangda-page/SKILL.md +0 -154
  262. package/openxiangda-skills/skills/openxiangda-permission-settings/SKILL.md +0 -209
  263. package/openxiangda-skills/skills/openxiangda-workflow-automation/SKILL.md +0 -201
  264. package/packages/sdk/bin/lowcode-workspace.mjs +0 -4
  265. package/packages/sdk/dist/ProcessPreview-DSUIJi5V.d.mts +0 -1292
  266. package/packages/sdk/dist/ProcessPreview-DSUIJi5V.d.ts +0 -1292
  267. package/packages/sdk/dist/build/index.cjs +0 -1
  268. package/packages/sdk/dist/build/index.d.mts +0 -60
  269. package/packages/sdk/dist/build/index.d.ts +0 -60
  270. package/packages/sdk/dist/build/index.mjs +0 -1
  271. package/packages/sdk/dist/components/index.cjs +0 -148
  272. package/packages/sdk/dist/components/index.d.mts +0 -970
  273. package/packages/sdk/dist/components/index.d.ts +0 -970
  274. package/packages/sdk/dist/components/index.mjs +0 -148
  275. package/packages/sdk/dist/dataManagementApi-Ro9itwm8.d.ts +0 -142
  276. package/packages/sdk/dist/dataManagementApi-p_HOhQnA.d.mts +0 -142
  277. package/packages/sdk/dist/runtime/index.cjs +0 -148
  278. package/packages/sdk/dist/runtime/index.d.mts +0 -171
  279. package/packages/sdk/dist/runtime/index.d.ts +0 -171
  280. package/packages/sdk/dist/runtime/index.mjs +0 -148
  281. package/packages/sdk/dist/runtime/react.cjs +0 -148
  282. package/packages/sdk/dist/runtime/react.d.mts +0 -3202
  283. package/packages/sdk/dist/runtime/react.d.ts +0 -3202
  284. package/packages/sdk/dist/runtime/react.mjs +0 -148
  285. package/packages/sdk/dist/styles/antd-theme.cjs +0 -1
  286. package/packages/sdk/dist/styles/antd-theme.d.mts +0 -6
  287. package/packages/sdk/dist/styles/antd-theme.d.ts +0 -6
  288. package/packages/sdk/dist/styles/antd-theme.mjs +0 -1
  289. package/packages/sdk/dist/styles/tailwind-preset.cjs +0 -1
  290. package/packages/sdk/dist/styles/tailwind-preset.d.mts +0 -74
  291. package/packages/sdk/dist/styles/tailwind-preset.d.ts +0 -74
  292. package/packages/sdk/dist/styles/tailwind-preset.mjs +0 -1
  293. package/packages/sdk/dist/styles/tokens.css +0 -74
  294. package/packages/sdk/dist/workflow/index.cjs +0 -3
  295. package/packages/sdk/dist/workflow/index.d.mts +0 -291
  296. package/packages/sdk/dist/workflow/index.d.ts +0 -291
  297. package/packages/sdk/dist/workflow/index.mjs +0 -3
  298. package/packages/sdk/source/admin-list/AdminList.tsx +0 -1734
  299. package/packages/sdk/source/admin-list/README.md +0 -12
  300. package/packages/sdk/source/admin-list/dataSources.ts +0 -345
  301. package/packages/sdk/source/admin-list/index.ts +0 -42
  302. package/packages/sdk/source/admin-list/preferences.ts +0 -174
  303. package/packages/sdk/source/admin-list/types.ts +0 -273
  304. package/packages/sdk/src/build-source/README.md +0 -9
  305. package/packages/sdk/src/build-source/bin/lowcode-workspace.mjs +0 -7
  306. package/packages/sdk/src/build-source/package.json +0 -34
  307. package/packages/sdk/src/build-source/scripts/build-forms.mjs +0 -1129
  308. package/packages/sdk/src/build-source/scripts/build-pages.mjs +0 -897
  309. package/packages/sdk/src/build-source/scripts/build-workspace.mjs +0 -89
  310. package/packages/sdk/src/build-source/scripts/publish-all.mjs +0 -190
  311. package/packages/sdk/src/build-source/scripts/publish-oss.mjs +0 -144
  312. package/packages/sdk/src/build-source/scripts/register-bundle.mjs +0 -1
  313. package/packages/sdk/src/build-source/scripts/register.mjs +0 -362
  314. package/packages/sdk/src/build-source/scripts/sync-schema.mjs +0 -381
  315. package/packages/sdk/src/build-source/scripts/utils/form-api.mjs +0 -1058
  316. package/packages/sdk/src/build-source/scripts/utils/form-runtime-assets.mjs +0 -57
  317. package/packages/sdk/src/build-source/scripts/utils/incremental.mjs +0 -348
  318. package/packages/sdk/src/build-source/scripts/utils/load-config.mjs +0 -331
  319. package/packages/sdk/src/build-source/scripts/utils/mime-types.mjs +0 -70
  320. package/packages/sdk/src/build-source/scripts/utils/namespace-css.mjs +0 -77
  321. package/packages/sdk/src/build-source/scripts/utils/oss-client.mjs +0 -128
  322. package/packages/sdk/src/build-source/scripts/utils/pages.mjs +0 -150
  323. package/packages/sdk/src/build-source/scripts/utils/progress.mjs +0 -57
  324. package/packages/sdk/src/build-source/scripts/utils/publish-oss-patterns.mjs +0 -20
  325. package/packages/sdk/src/build-source/scripts/utils/register-payload.mjs +0 -90
  326. package/packages/sdk/src/build-source/scripts/utils/runtime-css-check.mjs +0 -44
  327. package/packages/sdk/src/build-source/scripts/utils/schema-transform.mjs +0 -142
  328. package/packages/sdk/src/build-source/scripts/utils/static-assets.mjs +0 -165
  329. package/packages/sdk/src/build-source/scripts/utils/tailwind-config.mjs +0 -283
  330. package/packages/sdk/src/build-source/scripts/utils/tailwind-token-warnings.mjs +0 -146
  331. package/packages/sdk/src/build-source/scripts/utils/workspace-style-entry.mjs +0 -29
  332. package/packages/sdk/src/build-source/src/cli.mjs +0 -735
  333. package/policy/openxiangda-policy.json +0 -72
  334. package/templates/openxiangda-react-spa/.cursor/rules/openxiangda-form.mdc +0 -24
  335. package/templates/openxiangda-react-spa/.cursor/rules/openxiangda-page.mdc +0 -25
  336. package/templates/openxiangda-react-spa/.cursor/rules/openxiangda-resources.mdc +0 -32
  337. package/templates/openxiangda-react-spa/.cursor/rules/openxiangda-workflow-automation.mdc +0 -26
  338. package/templates/openxiangda-react-spa/.cursor/rules/openxiangda.mdc +0 -68
  339. package/templates/openxiangda-react-spa/.env.example +0 -4
  340. package/templates/openxiangda-react-spa/.qoder/rules/openxiangda-form.md +0 -37
  341. package/templates/openxiangda-react-spa/.qoder/rules/openxiangda-page.md +0 -29
  342. package/templates/openxiangda-react-spa/.qoder/rules/openxiangda-resources.md +0 -32
  343. package/templates/openxiangda-react-spa/.qoder/rules/openxiangda-workflow-automation.md +0 -34
  344. package/templates/openxiangda-react-spa/.qoder/rules/openxiangda.md +0 -66
  345. package/templates/openxiangda-react-spa/AGENTS.md +0 -192
  346. package/templates/openxiangda-react-spa/DELIVERY.md +0 -43
  347. package/templates/openxiangda-react-spa/app-workspace.config.ts +0 -50
  348. package/templates/openxiangda-react-spa/index.html +0 -12
  349. package/templates/openxiangda-react-spa/package.json +0 -53
  350. package/templates/openxiangda-react-spa/postcss.config.cjs +0 -6
  351. package/templates/openxiangda-react-spa/scripts/build-js-code.mjs +0 -600
  352. package/templates/openxiangda-react-spa/scripts/deploy.mjs +0 -18
  353. package/templates/openxiangda-react-spa/scripts/guard-publish.mjs +0 -21
  354. package/templates/openxiangda-react-spa/src/app/navigation.ts +0 -73
  355. package/templates/openxiangda-react-spa/src/app/router.tsx +0 -146
  356. package/templates/openxiangda-react-spa/src/app/starter-content.ts +0 -144
  357. package/templates/openxiangda-react-spa/src/forms/.gitkeep +0 -1
  358. package/templates/openxiangda-react-spa/src/layouts/AdminShell.tsx +0 -570
  359. package/templates/openxiangda-react-spa/src/main.tsx +0 -21
  360. package/templates/openxiangda-react-spa/src/pages/admin/AdminDashboardPage.tsx +0 -170
  361. package/templates/openxiangda-react-spa/src/pages/admin/LoginLogPage.tsx +0 -425
  362. package/templates/openxiangda-react-spa/src/pages/defaults/DataRoutePage.tsx +0 -36
  363. package/templates/openxiangda-react-spa/src/pages/defaults/FilePreviewRoutePage.tsx +0 -65
  364. package/templates/openxiangda-react-spa/src/pages/defaults/FormRoutePage.tsx +0 -235
  365. package/templates/openxiangda-react-spa/src/pages/public/PublicRegisterPage.tsx +0 -15
  366. package/templates/openxiangda-react-spa/src/pages/states/NotFoundPage.tsx +0 -31
  367. package/templates/openxiangda-react-spa/src/resources/menus/menus.json +0 -22
  368. package/templates/openxiangda-react-spa/src/resources/permissions/page-groups/app-admin.json +0 -8
  369. package/templates/openxiangda-react-spa/src/resources/permissions/page-groups/public-visitor.json +0 -8
  370. package/templates/openxiangda-react-spa/src/resources/public-access/public-register.json +0 -14
  371. package/templates/openxiangda-react-spa/src/resources/roles/roles.json +0 -15
  372. package/templates/openxiangda-react-spa/src/resources/routes/public-register.json +0 -8
  373. package/templates/openxiangda-react-spa/src/runtime/default-page-overrides.tsx +0 -35
  374. package/templates/openxiangda-react-spa/src/runtime/default-routes.ts +0 -16
  375. package/templates/openxiangda-react-spa/src/shared/form-schema.ts +0 -135
  376. package/templates/openxiangda-react-spa/src/shared/mac-admin.tsx +0 -651
  377. package/templates/openxiangda-react-spa/src/shared/ui.tsx +0 -22
  378. package/templates/openxiangda-react-spa/src/styles/index.css +0 -105
  379. package/templates/openxiangda-react-spa/tailwind.config.cjs +0 -37
  380. package/templates/openxiangda-react-spa/tsconfig.app.json +0 -36
  381. package/templates/openxiangda-react-spa/tsconfig.js-code-nodes.json +0 -19
  382. package/templates/openxiangda-react-spa/tsconfig.json +0 -7
  383. package/templates/openxiangda-react-spa/tsconfig.node.json +0 -10
  384. package/templates/openxiangda-react-spa/vite.config.ts +0 -209
  385. package/templates/sy-lowcode-app-workspace/.cursor/rules/openxiangda-form.mdc +0 -24
  386. package/templates/sy-lowcode-app-workspace/.cursor/rules/openxiangda-page.mdc +0 -21
  387. package/templates/sy-lowcode-app-workspace/.cursor/rules/openxiangda-resources.mdc +0 -40
  388. package/templates/sy-lowcode-app-workspace/.cursor/rules/openxiangda-workflow-automation.mdc +0 -21
  389. package/templates/sy-lowcode-app-workspace/.cursor/rules/openxiangda.mdc +0 -81
  390. package/templates/sy-lowcode-app-workspace/.qoder/rules/openxiangda-form.md +0 -38
  391. package/templates/sy-lowcode-app-workspace/.qoder/rules/openxiangda-page.md +0 -39
  392. package/templates/sy-lowcode-app-workspace/.qoder/rules/openxiangda-resources.md +0 -59
  393. package/templates/sy-lowcode-app-workspace/.qoder/rules/openxiangda-workflow-automation.md +0 -46
  394. package/templates/sy-lowcode-app-workspace/.qoder/rules/openxiangda.md +0 -82
  395. package/templates/sy-lowcode-app-workspace/AGENTS.md +0 -158
  396. package/templates/sy-lowcode-app-workspace/DELIVERY.md +0 -43
  397. package/templates/sy-lowcode-app-workspace/app-workspace.config.ts +0 -51
  398. package/templates/sy-lowcode-app-workspace/examples/best-practices/README.md +0 -43
  399. package/templates/sy-lowcode-app-workspace/examples/best-practices/access-governance.md +0 -239
  400. package/templates/sy-lowcode-app-workspace/examples/best-practices/catalog.json +0 -99
  401. package/templates/sy-lowcode-app-workspace/examples/best-practices/decision-guide.md +0 -94
  402. package/templates/sy-lowcode-app-workspace/examples/best-practices/design-style.md +0 -91
  403. package/templates/sy-lowcode-app-workspace/examples/best-practices/module-structure.md +0 -48
  404. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/role-governance/index.ts +0 -2
  405. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/role-governance/permissions.test.ts +0 -52
  406. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/role-governance/permissions.ts +0 -37
  407. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/role-governance/types.ts +0 -19
  408. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/service-ticket/index.ts +0 -4
  409. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/service-ticket/permissions.test.ts +0 -42
  410. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/service-ticket/permissions.ts +0 -25
  411. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/service-ticket/state-machine.test.ts +0 -63
  412. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/service-ticket/state-machine.ts +0 -73
  413. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/service-ticket/ticket-query.test.ts +0 -34
  414. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/service-ticket/ticket-query.ts +0 -73
  415. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/service-ticket/types.ts +0 -66
  416. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/app-role/page.tsx +0 -1
  417. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/app-role/schema.ts +0 -109
  418. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/customer-profile/page.tsx +0 -1
  419. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/customer-profile/schema.ts +0 -92
  420. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/service-ticket/page.tsx +0 -1
  421. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/service-ticket/schema.ts +0 -153
  422. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/ticket-action-log/page.tsx +0 -1
  423. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/ticket-action-log/schema.ts +0 -65
  424. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/js-code-nodes/daily_ticket_digest/index.ts +0 -44
  425. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/js-code-nodes/sync_roles_to_platform/index.ts +0 -33
  426. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/App.tsx +0 -8
  427. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/GlassHomeDashboard.tsx +0 -232
  428. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/index.tsx +0 -10
  429. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/page.config.ts +0 -14
  430. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/styles.css +0 -196
  431. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/interactive-workbench/App.tsx +0 -7
  432. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/interactive-workbench/WorkbenchPage.tsx +0 -36
  433. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/interactive-workbench/components/ConfigPanel.tsx +0 -34
  434. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/interactive-workbench/components/PreviewPanel.tsx +0 -17
  435. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/interactive-workbench/index.tsx +0 -10
  436. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/interactive-workbench/page.config.ts +0 -9
  437. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/interactive-workbench/reducer.ts +0 -29
  438. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/interactive-workbench/styles.css +0 -24
  439. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/App.tsx +0 -8
  440. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/MintAnalyticsDashboard.tsx +0 -279
  441. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/index.tsx +0 -10
  442. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/page.config.ts +0 -14
  443. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/styles.css +0 -163
  444. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mobile-portal-shell/App.tsx +0 -7
  445. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mobile-portal-shell/MobilePortalShell.tsx +0 -31
  446. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mobile-portal-shell/index.tsx +0 -10
  447. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mobile-portal-shell/modules/MobileHome.tsx +0 -13
  448. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mobile-portal-shell/page.config.ts +0 -14
  449. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mobile-portal-shell/routes.ts +0 -13
  450. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mobile-portal-shell/styles.css +0 -11
  451. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/App.tsx +0 -8
  452. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/OpsMonitorDashboard.tsx +0 -306
  453. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/index.tsx +0 -10
  454. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/page.config.ts +0 -14
  455. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/styles.css +0 -248
  456. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/pc-portal-shell/App.tsx +0 -7
  457. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/pc-portal-shell/PcPortalShell.tsx +0 -35
  458. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/pc-portal-shell/components/PortalMetric.tsx +0 -11
  459. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/pc-portal-shell/index.tsx +0 -10
  460. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/pc-portal-shell/modules/HomeModule.tsx +0 -25
  461. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/pc-portal-shell/modules/TicketsModule.tsx +0 -14
  462. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/pc-portal-shell/page.config.ts +0 -14
  463. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/pc-portal-shell/routes.ts +0 -19
  464. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/pc-portal-shell/styles.css +0 -35
  465. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/service-ticket-ops/App.tsx +0 -7
  466. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/service-ticket-ops/TicketOpsPage.tsx +0 -105
  467. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/service-ticket-ops/components/TicketActionTimeline.tsx +0 -22
  468. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/service-ticket-ops/components/TicketDetailDrawer.tsx +0 -44
  469. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/service-ticket-ops/components/TicketTableActions.tsx +0 -57
  470. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/service-ticket-ops/index.tsx +0 -10
  471. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/service-ticket-ops/page.config.ts +0 -9
  472. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/service-ticket-ops/styles.css +0 -35
  473. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/App.tsx +0 -8
  474. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/WorkOrderListDrawerPage.tsx +0 -371
  475. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/index.tsx +0 -10
  476. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/page.config.ts +0 -14
  477. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/styles.css +0 -182
  478. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/resources/automations/daily-ticket-digest/automation.json +0 -25
  479. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/resources/automations/daily-ticket-digest/trigger.json +0 -9
  480. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/resources/notifications/daily-ticket-digest.json +0 -24
  481. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/resources/permissions/form-groups/service-ticket-college.json +0 -21
  482. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/resources/permissions/roles.json +0 -17
  483. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/resources/workflows/expense-approval-workflow.json +0 -48
  484. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/ConfirmAction.tsx +0 -22
  485. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/QueryState.tsx +0 -37
  486. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/StatusTag.tsx +0 -20
  487. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/DashboardPrimitives.tsx +0 -832
  488. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/chartOptions.ts +0 -140
  489. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/sampleData.ts +0 -466
  490. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/styles.css +0 -874
  491. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/types.ts +0 -150
  492. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/hooks/useTicketOps.ts +0 -96
  493. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/services/role-governance.ts +0 -48
  494. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/services/service-ticket.ts +0 -113
  495. package/templates/sy-lowcode-app-workspace/examples/forms/customer/page.tsx +0 -1
  496. package/templates/sy-lowcode-app-workspace/examples/forms/customer/schema.ts +0 -36
  497. package/templates/sy-lowcode-app-workspace/index.html +0 -12
  498. package/templates/sy-lowcode-app-workspace/package.json +0 -58
  499. package/templates/sy-lowcode-app-workspace/postcss.config.cjs +0 -9
  500. package/templates/sy-lowcode-app-workspace/scripts/build-js-code.mjs +0 -600
  501. package/templates/sy-lowcode-app-workspace/scripts/guard-publish.mjs +0 -29
  502. package/templates/sy-lowcode-app-workspace/src/dev/App.tsx +0 -820
  503. package/templates/sy-lowcode-app-workspace/src/forms/.gitkeep +0 -1
  504. package/templates/sy-lowcode-app-workspace/src/forms/README.md +0 -52
  505. package/templates/sy-lowcode-app-workspace/src/index.css +0 -26
  506. package/templates/sy-lowcode-app-workspace/src/js-code-nodes/.gitkeep +0 -1
  507. package/templates/sy-lowcode-app-workspace/src/js-code-nodes/types.d.ts +0 -3
  508. package/templates/sy-lowcode-app-workspace/src/main.tsx +0 -29
  509. package/templates/sy-lowcode-app-workspace/src/pages/.gitkeep +0 -1
  510. package/templates/sy-lowcode-app-workspace/src/runtime/builtin-overrides.tsx +0 -8
  511. package/templates/sy-lowcode-app-workspace/src/shared/form-schema.ts +0 -135
  512. package/templates/sy-lowcode-app-workspace/src/types/app-workspace.types.ts +0 -88
  513. package/templates/sy-lowcode-app-workspace/tailwind.config.cjs +0 -31
  514. package/templates/sy-lowcode-app-workspace/tsconfig.app.json +0 -40
  515. package/templates/sy-lowcode-app-workspace/tsconfig.examples.json +0 -24
  516. package/templates/sy-lowcode-app-workspace/tsconfig.js-code-nodes.json +0 -19
  517. package/templates/sy-lowcode-app-workspace/tsconfig.json +0 -7
  518. package/templates/sy-lowcode-app-workspace/tsconfig.node.json +0 -10
  519. package/templates/sy-lowcode-app-workspace/vite.config.ts +0 -85
  520. package/v2/README.md +0 -35
  521. package/v2/skills/manifest.json +0 -45
  522. package/v2/skills/openxiangda-v1-maintenance/SKILL.md +0 -21
  523. package/v2/skills/openxiangda-v1-maintenance/agents/openai.yaml +0 -4
  524. package/v2/skills/openxiangda-v2/SKILL.md +0 -38
  525. package/v2/skills/openxiangda-v2-architecture/SKILL.md +0 -29
  526. package/v2/skills/openxiangda-v2-architecture/agents/openai.yaml +0 -4
  527. package/v2/skills/openxiangda-v2-backend/SKILL.md +0 -28
  528. package/v2/skills/openxiangda-v2-backend/agents/openai.yaml +0 -4
  529. package/v2/skills/openxiangda-v2-data-authz/SKILL.md +0 -28
  530. package/v2/skills/openxiangda-v2-data-authz/agents/openai.yaml +0 -4
  531. package/v2/skills/openxiangda-v2-delivery/SKILL.md +0 -30
  532. package/v2/skills/openxiangda-v2-delivery/agents/openai.yaml +0 -4
  533. package/v2/skills/openxiangda-v2-frontend/SKILL.md +0 -21
  534. package/v2/skills/openxiangda-v2-frontend/agents/openai.yaml +0 -4
  535. package/v2/skills/openxiangda-v2-workflow-events/SKILL.md +0 -28
  536. package/v2/skills/openxiangda-v2-workflow-events/agents/openai.yaml +0 -4
  537. /package/{v2/skills → skills}/openxiangda-v2/agents/openai.yaml +0 -0
@@ -1,331 +0,0 @@
1
- import fs from "node:fs";
2
- import os from "node:os";
3
- import { parse as parseDotenv } from "dotenv";
4
- import { resolve } from "path";
5
- import { pathToFileURL } from "url";
6
-
7
- export const rootDir = resolve(process.env.LOWCODE_WORKSPACE_ROOT || process.cwd());
8
- const OPENXIANGDA_HOME_DIR = ".openxiangda";
9
- const OPENXIANGDA_GLOBAL_ENV_FILE = ".env";
10
-
11
- export function getGlobalOpenXiangdaEnvFile(env = process.env) {
12
- const home = env.HOME || os.homedir();
13
- return resolve(home, OPENXIANGDA_HOME_DIR, OPENXIANGDA_GLOBAL_ENV_FILE);
14
- }
15
-
16
- function readDotenvFile(filePath) {
17
- try {
18
- return parseDotenv(fs.readFileSync(filePath, "utf-8"));
19
- } catch {
20
- return {};
21
- }
22
- }
23
-
24
- export function loadWorkspaceEnv(options = {}) {
25
- const workspaceRoot = options.workspaceRoot || rootDir;
26
- const env = options.env || process.env;
27
- const globalEnvFile = getGlobalOpenXiangdaEnvFile(env);
28
- const globalEnv = readDotenvFile(globalEnvFile);
29
- const mode = options.mode || env.APP_MODE || globalEnv.APP_MODE || "development";
30
- const files = [
31
- { filePath: globalEnvFile, values: globalEnv },
32
- {
33
- filePath: resolve(workspaceRoot, ".env"),
34
- values: readDotenvFile(resolve(workspaceRoot, ".env")),
35
- },
36
- ];
37
-
38
- if (mode !== "development") {
39
- const modeFile = resolve(workspaceRoot, `.env.${mode}`);
40
- files.push({ filePath: modeFile, values: readDotenvFile(modeFile) });
41
- }
42
-
43
- const injectedGlobalKeys = new Set(
44
- String(env.OPENXIANGDA_GLOBAL_ENV_KEYS || "")
45
- .split(",")
46
- .map((key) => key.trim())
47
- .filter(Boolean),
48
- );
49
- const originalKeys = new Set(
50
- Object.keys(env).filter(
51
- (key) => env[key] !== undefined && !injectedGlobalKeys.has(key),
52
- ),
53
- );
54
- const merged = {};
55
- const loadedFiles = [];
56
- for (const file of files) {
57
- if (fs.existsSync(file.filePath)) loadedFiles.push(file.filePath);
58
- Object.assign(merged, file.values);
59
- }
60
-
61
- for (const [key, value] of Object.entries(merged)) {
62
- if (!originalKeys.has(key)) {
63
- env[key] = value;
64
- }
65
- }
66
-
67
- return {
68
- globalEnvFile,
69
- loadedFiles,
70
- mode,
71
- };
72
- }
73
-
74
- /**
75
- * 标准化 OSS 路径前缀,去除前后斜杠
76
- * @param {string|undefined} pathPrefix
77
- * @returns {string}
78
- */
79
- function normalizePathPrefix(pathPrefix) {
80
- return String(pathPrefix || "app-workspace").replace(/^\/+|\/+$/g, "");
81
- }
82
-
83
- /**
84
- * 解析逗号分隔的字符串为数组
85
- * @param {string|undefined} value
86
- * @param {string} [fallback]
87
- * @returns {string[]}
88
- */
89
- function parseCsv(value, fallback) {
90
- return String(value || fallback || "")
91
- .split(",")
92
- .map((item) => item.trim())
93
- .filter(Boolean);
94
- }
95
-
96
- function getDefaultCorsOrigin(platformUrl) {
97
- try {
98
- return new URL(platformUrl).origin;
99
- } catch {
100
- return "*";
101
- }
102
- }
103
-
104
- function createBuildId() {
105
- return new Date().toISOString().replace(/[-:TZ.]/g, "").slice(0, 14);
106
- }
107
-
108
- function normalizeBaseUrl(value) {
109
- return String(value || "").replace(/\/+$/, "");
110
- }
111
-
112
- function normalizeCssIsolation(value) {
113
- if (value === "none") return "none";
114
- if (value === "namespace") return "namespace";
115
- if (value === "shadow") {
116
- console.warn(
117
- "[lowcode-workspace] cssIsolation='shadow' is deprecated; use 'none' unless legacy isolation is required.",
118
- );
119
- return "shadow";
120
- }
121
- return "none";
122
- }
123
-
124
- function normalizeRuntimeMode(value) {
125
- if (value === "react-spa" || value === "spa") return "react-spa";
126
- return value === "legacy" ? "legacy" : "";
127
- }
128
-
129
- export function resolveOpenXiangdaEndpointConfig(baseUrl) {
130
- const raw = normalizeBaseUrl(baseUrl);
131
- if (!raw) {
132
- return { platformUrl: "", servicePrefix: "" };
133
- }
134
-
135
- try {
136
- const url = new URL(raw);
137
- const cleanPath = url.pathname.replace(/\/+$/, "");
138
- if (
139
- !cleanPath ||
140
- cleanPath === "/platform" ||
141
- cleanPath.startsWith("/platform/") ||
142
- cleanPath === "/view" ||
143
- cleanPath.startsWith("/view/")
144
- ) {
145
- return { platformUrl: url.origin, servicePrefix: "/service" };
146
- }
147
- return { platformUrl: `${url.origin}${cleanPath}`, servicePrefix: "" };
148
- } catch {
149
- return { platformUrl: raw, servicePrefix: "" };
150
- }
151
- }
152
-
153
- async function loadConfigModule() {
154
- const configPath = resolve(rootDir, "app-workspace.config.ts");
155
- const loaded = await import(pathToFileURL(configPath).href);
156
- return loaded.default || loaded;
157
- }
158
-
159
- /**
160
- * 加载并合并应用配置(文件 + 环境变量)
161
- * @returns {Promise<object>} 合并后的应用配置对象
162
- */
163
- export async function loadConfig() {
164
- loadWorkspaceEnv();
165
-
166
- const source = await loadConfigModule();
167
- const openXiangdaMode = Boolean(
168
- process.env.OPENXIANGDA_ACCESS_TOKEN || process.env.OPENXIANGDA_BASE_URL,
169
- );
170
- const openXiangdaEndpoint = process.env.OPENXIANGDA_BASE_URL
171
- ? resolveOpenXiangdaEndpointConfig(process.env.OPENXIANGDA_BASE_URL)
172
- : null;
173
- const platformUrl = openXiangdaEndpoint
174
- ? openXiangdaEndpoint.platformUrl
175
- : source.platformUrl || process.env.APP_PLATFORM_URL;
176
- const explicitBuildId = Boolean(source.buildId || process.env.APP_BUILD_ID);
177
-
178
- const normalized = {
179
- ...source,
180
- appType: process.env.OPENXIANGDA_APP_TYPE || source.appType || process.env.APP_TYPE,
181
- appName: source.appName || process.env.APP_NAME || "低代码应用",
182
- runtimeMode: normalizeRuntimeMode(
183
- process.env.OPENXIANGDA_RUNTIME_MODE ||
184
- process.env.APP_RUNTIME_MODE ||
185
- source.runtimeMode,
186
- ),
187
- platformUrl,
188
- servicePrefix:
189
- openXiangdaEndpoint?.servicePrefix ??
190
- (source.servicePrefix ||
191
- process.env.APP_SERVICE_PREFIX ||
192
- (openXiangdaMode ? "" : "/service")),
193
- openXiangdaAccessToken: process.env.OPENXIANGDA_ACCESS_TOKEN || "",
194
- openXiangdaProfile: process.env.OPENXIANGDA_PROFILE || "",
195
- openXiangdaTarget: process.env.OPENXIANGDA_TARGET || "",
196
- appKey: source.appKey || process.env.APP_KEY,
197
- appSecret: source.appSecret || process.env.APP_SECRET,
198
- userId: source.userId || process.env.APP_USER_ID,
199
- version: source.version || process.env.APP_VERSION || "0.1.0",
200
- buildId: source.buildId || process.env.APP_BUILD_ID || createBuildId(),
201
- buildIdExplicit: explicitBuildId,
202
- oss: {
203
- ...(source.oss || {}),
204
- region: source.oss?.region || process.env.APP_OSS_REGION,
205
- bucket: source.oss?.bucket || process.env.APP_OSS_BUCKET,
206
- accessKeyId:
207
- source.oss?.accessKeyId || process.env.APP_OSS_ACCESS_KEY_ID,
208
- accessKeySecret:
209
- source.oss?.accessKeySecret || process.env.APP_OSS_ACCESS_KEY_SECRET,
210
- pathPrefix: normalizePathPrefix(
211
- source.oss?.pathPrefix || process.env.APP_OSS_PATH_PREFIX,
212
- ),
213
- corsOrigins: parseCsv(
214
- process.env.APP_OSS_CORS_ORIGINS,
215
- getDefaultCorsOrigin(platformUrl),
216
- ),
217
- skipCors: process.env.APP_OSS_SKIP_CORS === "1" || source.oss?.skipCors,
218
- },
219
- defaults: {
220
- protocolVersion:
221
- source.defaults?.protocolVersion ||
222
- process.env.APP_PAGE_PROTOCOL_VERSION ||
223
- "1.0",
224
- frameworkVersion:
225
- source.defaults?.frameworkVersion ||
226
- process.env.APP_FRAMEWORK_VERSION ||
227
- "18.3.1",
228
- cssIsolation: normalizeCssIsolation(
229
- process.env.APP_PAGE_CSS_ISOLATION || source.defaults?.cssIsolation,
230
- ),
231
- formMenuParentId:
232
- source.defaults?.formMenuParentId ||
233
- process.env.APP_FORM_MENU_PARENT_ID ||
234
- "",
235
- formMenuIcon:
236
- source.defaults?.formMenuIcon || process.env.APP_FORM_MENU_ICON || "",
237
- pageMenuParentId:
238
- source.defaults?.pageMenuParentId ||
239
- process.env.APP_PAGE_MENU_PARENT_ID ||
240
- "",
241
- pageMenuIcon:
242
- source.defaults?.pageMenuIcon || process.env.APP_PAGE_MENU_ICON || "",
243
- formBuilderVersion:
244
- source.defaults?.formBuilderVersion ||
245
- process.env.APP_FORM_BUILDER_VERSION ||
246
- "2.0",
247
- },
248
- };
249
-
250
- return {
251
- ...normalized,
252
- menu: {
253
- parentId: normalized.defaults.formMenuParentId,
254
- icon: normalized.defaults.formMenuIcon,
255
- },
256
- };
257
- }
258
-
259
- /**
260
- * 获取后端 API 基础 URL
261
- * @param {object} config - 应用配置对象
262
- * @returns {string}
263
- */
264
- export function getApiBaseUrl(config) {
265
- return `${normalizeBaseUrl(config.platformUrl)}${config.servicePrefix}`;
266
- }
267
-
268
- /**
269
- * 获取 OSS 公网访问基础 URL
270
- * @param {object} config - 应用配置对象
271
- * @returns {string}
272
- */
273
- export function getPublicBaseUrl(config) {
274
- return `https://${config.oss.bucket}.${config.oss.region}.aliyuncs.com/${config.oss.pathPrefix}/${config.version}/${config.buildId}`;
275
- }
276
-
277
- /**
278
- * 获取表单 bundle 文件的公网 URL
279
- * @param {object} config - 应用配置对象
280
- * @param {string} formName - 表单名
281
- * @param {string} fileName - 文件名
282
- * @returns {string}
283
- */
284
- export function getFormBundleUrl(config, formName, fileName) {
285
- return `${getPublicBaseUrl(config)}/forms/${formName}/${fileName}`;
286
- }
287
-
288
- /**
289
- * 获取表单共享 runtime 文件的公网 URL
290
- * @param {object} config - 应用配置对象
291
- * @param {string} fileName - 文件名
292
- * @returns {string}
293
- */
294
- export function getFormRuntimeUrl(config, fileName) {
295
- return `${getPublicBaseUrl(config)}/form-runtime/${fileName}`;
296
- }
297
-
298
- /**
299
- * 获取代码页资源基础 URL
300
- * @param {object} config - 应用配置对象
301
- * @param {string} pageCode - 页面编码
302
- * @returns {string}
303
- */
304
- export function getPageAssetBaseUrl(config, pageCode) {
305
- return `${getPublicBaseUrl(config)}/pages/${pageCode}`;
306
- }
307
-
308
- /**
309
- * 获取代码页指定资源的公网 URL
310
- * @param {object} config - 应用配置对象
311
- * @param {string} pageCode - 页面编码
312
- * @param {string} fileName - 文件名
313
- * @returns {string}
314
- */
315
- export function getPageAssetUrl(config, pageCode, fileName) {
316
- return `${getPageAssetBaseUrl(config, pageCode)}/${fileName}`;
317
- }
318
-
319
- /**
320
- * 获取代码页共享 runtime 文件的公网 URL
321
- * @param {object} config - 应用配置对象
322
- * @param {string} fileName - 文件名
323
- * @returns {string}
324
- */
325
- export function getPageRuntimeUrl(config, fileName) {
326
- return `${getPublicBaseUrl(config)}/page-runtime/${fileName}`;
327
- }
328
-
329
- export function getBundleOSSUrl(config, formName, fileName) {
330
- return getFormBundleUrl(config, formName, fileName);
331
- }
@@ -1,70 +0,0 @@
1
- /**
2
- * mime-types.mjs - MIME 类型映射
3
- *
4
- * 提供文件扩展名到 MIME 类型的映射,支持 JS/CSS/JSON/HTML、
5
- * 图片、字体和其他常见静态资源类型。
6
- */
7
-
8
- import path from "node:path";
9
-
10
- /** @type {Record<string, string>} 扩展名 → MIME 类型映射表 */
11
- const MIME_MAP = {
12
- // 脚本 & 样式
13
- ".js": "application/javascript",
14
- ".mjs": "application/javascript",
15
- ".css": "text/css",
16
- ".json": "application/json",
17
- ".html": "text/html",
18
- // 图片
19
- ".png": "image/png",
20
- ".jpg": "image/jpeg",
21
- ".jpeg": "image/jpeg",
22
- ".gif": "image/gif",
23
- ".svg": "image/svg+xml",
24
- ".webp": "image/webp",
25
- ".ico": "image/x-icon",
26
- ".avif": "image/avif",
27
- // 字体
28
- ".woff": "font/woff",
29
- ".woff2": "font/woff2",
30
- ".ttf": "font/ttf",
31
- ".eot": "application/vnd.ms-fontobject",
32
- // 其他
33
- ".map": "application/json",
34
- };
35
-
36
- /**
37
- * 根据文件路径获取对应的 MIME 类型
38
- * @param {string} file - 文件路径
39
- * @returns {string} MIME 类型
40
- */
41
- export function getContentType(file) {
42
- const ext = path.extname(file).toLowerCase();
43
- return MIME_MAP[ext] || "application/octet-stream";
44
- }
45
-
46
- /**
47
- * 判断文件名是否包含 content hash(如 logo-abc123.png)
48
- * 匹配模式:name-[8+位hex hash].ext
49
- * @param {string} file - 文件名或路径
50
- * @returns {boolean}
51
- */
52
- export function hasContentHash(file) {
53
- const basename = path.basename(file);
54
- return /\-[a-f0-9]{8,}\.[^.]+$/.test(basename);
55
- }
56
-
57
- /**
58
- * 根据文件特征返回合适的 Cache-Control 头
59
- * - 带 content hash 的资源 → 长期缓存 + immutable
60
- * - 其他文件 → 长期缓存(依赖 buildId 路径做版本隔离)
61
- * @param {string} file - 文件路径
62
- * @returns {string} Cache-Control 头值
63
- */
64
- export function getCacheControl(file) {
65
- if (hasContentHash(file)) {
66
- return "public, max-age=31536000, immutable";
67
- }
68
- // 入口文件依赖 buildId 路径做版本隔离,同样可以长期缓存
69
- return "public, max-age=31536000";
70
- }
@@ -1,77 +0,0 @@
1
- const DEFAULT_PREFIX = ".sy-app-workspace";
2
-
3
- function splitSelectors(selector) {
4
- const selectors = [];
5
- let depth = 0;
6
- let quote = "";
7
- let current = "";
8
- for (const char of selector) {
9
- if (quote) {
10
- current += char;
11
- if (char === quote) quote = "";
12
- continue;
13
- }
14
- if (char === '"' || char === "'") {
15
- quote = char;
16
- current += char;
17
- continue;
18
- }
19
- if (char === "(" || char === "[") depth += 1;
20
- if (char === ")" || char === "]") depth -= 1;
21
- if (char === "," && depth === 0) {
22
- selectors.push(current.trim());
23
- current = "";
24
- continue;
25
- }
26
- current += char;
27
- }
28
- if (current.trim()) selectors.push(current.trim());
29
- return selectors;
30
- }
31
-
32
- function shouldSkipSelector(selector, prefix) {
33
- if (!selector || selector.includes(prefix)) return true;
34
- if (/^(html|body|:root)(\b|:|\[|$)/.test(selector)) return true;
35
- if (/^(@|from\b|to\b|\d+%)/.test(selector)) return true;
36
- if (/^\.(ant|sy-ant|anticon|adm)-/.test(selector)) return true;
37
- return false;
38
- }
39
-
40
- function createAntdPrefixAlias(selector) {
41
- const aliased = selector
42
- .replace(/(^|[^A-Za-z0-9_-])\.ant-/g, "$1.sy-ant-")
43
- .replace(/(^|[^A-Za-z0-9_-])\.anticon-/g, "$1.sy-anticon-")
44
- .replace(/(^|[^A-Za-z0-9_-])\.anticon(?=$|[^A-Za-z0-9_-])/g, "$1.sy-anticon");
45
- return aliased === selector ? null : aliased;
46
- }
47
-
48
- function uniqueSelectors(selectors) {
49
- return Array.from(new Set(selectors));
50
- }
51
-
52
- export function createNamespaceCssPlugin(prefix = DEFAULT_PREFIX) {
53
- return {
54
- postcssPlugin: "openxiangda-namespace-css",
55
- Rule(rule) {
56
- if (!rule.selector) return;
57
- let parent = rule.parent;
58
- while (parent) {
59
- if (parent.type === "atrule" && /keyframes$/i.test(parent.name)) {
60
- return;
61
- }
62
- parent = parent.parent;
63
- }
64
- rule.selector = uniqueSelectors(
65
- splitSelectors(rule.selector).flatMap((selector) => {
66
- const scopedSelector = shouldSkipSelector(selector, prefix)
67
- ? selector
68
- : `${prefix} ${selector}`;
69
- const antdAlias = createAntdPrefixAlias(scopedSelector);
70
- return antdAlias ? [scopedSelector, antdAlias] : [scopedSelector];
71
- }),
72
- ).join(", ");
73
- },
74
- };
75
- }
76
-
77
- createNamespaceCssPlugin.postcss = true;
@@ -1,128 +0,0 @@
1
- /**
2
- * oss-client.mjs - 阿里云 OSS 客户端工具
3
- *
4
- * 封装 OSS 客户端初始化、带重试的上传、以及 CORS 规则确保。
5
- */
6
-
7
- import OSS from "ali-oss";
8
-
9
- /**
10
- * 创建阿里云 OSS 客户端实例
11
- * @param {object} ossConfig - OSS 配置
12
- * @param {string} ossConfig.region - OSS Region
13
- * @param {string} ossConfig.bucket - Bucket 名称
14
- * @param {string} ossConfig.accessKeyId - AccessKey ID
15
- * @param {string} ossConfig.accessKeySecret - AccessKey Secret
16
- * @returns {import("ali-oss")} OSS 客户端实例
17
- */
18
- export function createOSSClient(ossConfig) {
19
- return new OSS({
20
- region: ossConfig.region,
21
- accessKeyId: ossConfig.accessKeyId,
22
- accessKeySecret: ossConfig.accessKeySecret,
23
- bucket: ossConfig.bucket,
24
- });
25
- }
26
-
27
- /**
28
- * 带重试机制的 OSS 上传
29
- * @param {import("ali-oss")} client - OSS 客户端实例
30
- * @param {string} ossKey - OSS 对象键
31
- * @param {string} localPath - 本地文件路径
32
- * @param {object} headers - HTTP 头(Cache-Control, Content-Type 等)
33
- * @param {number} [retries=3] - 最大重试次数
34
- * @returns {Promise<void>}
35
- */
36
- export async function uploadWithRetry(client, ossKey, localPath, headers, retries = 3) {
37
- for (let i = 0; i < retries; i++) {
38
- try {
39
- await client.put(ossKey, localPath, { headers });
40
- return;
41
- } catch (err) {
42
- if (i === retries - 1) throw err;
43
- console.warn(` ⚠ 重试 ${i + 1}/${retries}: ${ossKey}`);
44
- await new Promise((r) => setTimeout(r, 1000 * (i + 1)));
45
- }
46
- }
47
- }
48
-
49
- /**
50
- * @param {*} value
51
- * @returns {string[]}
52
- */
53
- function toArray(value) {
54
- if (Array.isArray(value)) return value;
55
- if (value === undefined || value === null || value === "") return [];
56
- return [value];
57
- }
58
-
59
- /**
60
- * 检查单条 CORS 规则是否已满足指定 origins 和 methods
61
- * @param {object} rule - CORS 规则对象
62
- * @param {string[]} origins - 需要允许的来源
63
- * @param {string[]} methods - 需要允许的方法
64
- * @returns {boolean}
65
- */
66
- function corsRuleAllows(rule, origins, methods) {
67
- const allowedOrigins = toArray(rule.allowedOrigin);
68
- const allowedMethods = toArray(rule.allowedMethod).map((item) =>
69
- String(item).toUpperCase(),
70
- );
71
-
72
- const originAllowed =
73
- allowedOrigins.includes("*") ||
74
- origins.every((origin) => allowedOrigins.includes(origin));
75
- const methodAllowed = methods.every((method) =>
76
- allowedMethods.includes(method),
77
- );
78
-
79
- return originAllowed && methodAllowed;
80
- }
81
-
82
- /**
83
- * 确保 OSS Bucket 的 CORS 规则满足前端资源加载需求
84
- * @param {import("ali-oss")} client - OSS 客户端实例
85
- * @param {object} ossConfig - OSS 配置
86
- * @param {string} ossConfig.bucket - Bucket 名称
87
- * @param {boolean} [ossConfig.skipCors] - 是否跳过 CORS 检查
88
- * @param {string[]} [ossConfig.corsOrigins] - 允许的来源列表
89
- * @returns {Promise<void>}
90
- */
91
- export async function ensureBucketCors(client, ossConfig) {
92
- if (ossConfig.skipCors) {
93
- console.log(" CORS: 跳过(APP_OSS_SKIP_CORS=1)");
94
- return;
95
- }
96
-
97
- const origins = ossConfig.corsOrigins?.length
98
- ? ossConfig.corsOrigins
99
- : ["*"];
100
- const methods = ["GET", "HEAD"];
101
- let rules = [];
102
-
103
- try {
104
- const result = await client.getBucketCORS(ossConfig.bucket);
105
- rules = Array.isArray(result.rules) ? result.rules : [];
106
- } catch (error) {
107
- if (error?.status !== 404 && error?.code !== "NoSuchCORSConfiguration") {
108
- throw error;
109
- }
110
- }
111
-
112
- if (rules.some((rule) => corsRuleAllows(rule, origins, methods))) {
113
- console.log(` CORS: 已允许 ${origins.join(", ")}`);
114
- return;
115
- }
116
-
117
- await client.putBucketCORS(ossConfig.bucket, [
118
- ...rules,
119
- {
120
- allowedOrigin: origins,
121
- allowedMethod: methods,
122
- allowedHeader: "*",
123
- exposeHeader: ["ETag", "Content-Length", "Content-Type"],
124
- maxAgeSeconds: "3600",
125
- },
126
- ]);
127
- console.log(` CORS: 已配置 ${origins.join(", ")}`);
128
- }