@nocobase/flow-engine 2.1.0-alpha.1 → 2.1.0-alpha.3

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 (252) hide show
  1. package/lib/BlockScopedFlowEngine.js +0 -1
  2. package/lib/FlowDefinition.d.ts +2 -0
  3. package/lib/JSRunner.d.ts +6 -0
  4. package/lib/JSRunner.js +32 -2
  5. package/lib/ViewScopedFlowEngine.js +3 -0
  6. package/lib/acl/Acl.js +13 -3
  7. package/lib/components/FlowContextSelector.js +155 -10
  8. package/lib/components/dnd/gridDragPlanner.d.ts +1 -0
  9. package/lib/components/dnd/gridDragPlanner.js +53 -1
  10. package/lib/components/settings/wrappers/component/SwitchWithTitle.js +2 -1
  11. package/lib/components/settings/wrappers/contextual/DefaultSettingsIcon.js +76 -15
  12. package/lib/components/settings/wrappers/contextual/FlowsContextMenu.js +24 -4
  13. package/lib/components/settings/wrappers/contextual/StepSettingsDialog.js +5 -1
  14. package/lib/components/variables/VariableInput.js +9 -4
  15. package/lib/components/variables/VariableTag.js +46 -39
  16. package/lib/components/variables/utils.d.ts +7 -0
  17. package/lib/components/variables/utils.js +42 -2
  18. package/lib/data-source/index.d.ts +7 -27
  19. package/lib/data-source/index.js +84 -51
  20. package/lib/executor/FlowExecutor.d.ts +2 -1
  21. package/lib/executor/FlowExecutor.js +163 -22
  22. package/lib/flowContext.d.ts +230 -7
  23. package/lib/flowContext.js +2267 -148
  24. package/lib/flowEngine.d.ts +21 -0
  25. package/lib/flowEngine.js +55 -13
  26. package/lib/flowI18n.js +6 -4
  27. package/lib/flowSettings.js +17 -11
  28. package/lib/index.d.ts +7 -1
  29. package/lib/index.js +21 -0
  30. package/lib/locale/en-US.json +9 -2
  31. package/lib/locale/index.d.ts +14 -0
  32. package/lib/locale/zh-CN.json +8 -1
  33. package/lib/models/CollectionFieldModel.d.ts +1 -0
  34. package/lib/models/CollectionFieldModel.js +3 -2
  35. package/lib/models/flowModel.d.ts +7 -0
  36. package/lib/models/flowModel.js +66 -1
  37. package/lib/provider.js +7 -6
  38. package/lib/resources/baseRecordResource.d.ts +5 -0
  39. package/lib/resources/baseRecordResource.js +24 -0
  40. package/lib/resources/multiRecordResource.d.ts +1 -0
  41. package/lib/resources/multiRecordResource.js +11 -4
  42. package/lib/resources/singleRecordResource.js +2 -0
  43. package/lib/resources/sqlResource.d.ts +4 -3
  44. package/lib/resources/sqlResource.js +8 -3
  45. package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.js +12 -2
  46. package/lib/runjs-context/contexts/JSBlockRunJSContext.js +2 -2
  47. package/lib/runjs-context/contexts/JSEditableFieldRunJSContext.d.ts +16 -0
  48. package/lib/runjs-context/contexts/JSEditableFieldRunJSContext.js +125 -0
  49. package/lib/runjs-context/contexts/JSItemRunJSContext.js +12 -2
  50. package/lib/runjs-context/contexts/base.js +706 -41
  51. package/lib/runjs-context/contributions.d.ts +33 -0
  52. package/lib/runjs-context/contributions.js +88 -0
  53. package/lib/runjs-context/helpers.js +12 -1
  54. package/lib/runjs-context/setup.js +6 -0
  55. package/lib/runjs-context/snippets/global/api-request.snippet.js +3 -3
  56. package/lib/runjs-context/snippets/global/import-esm.snippet.js +2 -3
  57. package/lib/runjs-context/snippets/global/query-selector.snippet.js +8 -3
  58. package/lib/runjs-context/snippets/global/require-amd.snippet.js +1 -1
  59. package/lib/runjs-context/snippets/index.d.ts +11 -1
  60. package/lib/runjs-context/snippets/index.js +61 -40
  61. package/lib/runjs-context/snippets/scene/block/add-event-listener.snippet.js +10 -7
  62. package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.js +3 -3
  63. package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.js +2 -2
  64. package/lib/runjs-context/snippets/scene/block/echarts-init.snippet.js +2 -2
  65. package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.js +2 -2
  66. package/lib/runjs-context/snippets/scene/block/render-react.snippet.js +1 -1
  67. package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.js +1 -1
  68. package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.js +1 -1
  69. package/lib/runjs-context/snippets/scene/block/resource-example.snippet.js +5 -5
  70. package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.js +6 -6
  71. package/lib/runjs-context/snippets/scene/block/vue-component.snippet.js +3 -4
  72. package/lib/runjs-context/snippets/scene/detail/color-by-value.snippet.js +1 -1
  73. package/lib/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.js +20 -3
  74. package/lib/runjs-context/snippets/scene/detail/format-number.snippet.js +1 -1
  75. package/lib/runjs-context/snippets/scene/detail/innerHTML-value.snippet.js +1 -1
  76. package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.js +3 -3
  77. package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.js +3 -3
  78. package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.js +2 -2
  79. package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.js +1 -1
  80. package/lib/runjs-context/snippets/scene/form/render-basic.snippet.js +2 -2
  81. package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.js +6 -3
  82. package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.js +3 -1
  83. package/lib/runjsLibs.d.ts +28 -0
  84. package/lib/runjsLibs.js +532 -0
  85. package/lib/scheduler/ModelOperationScheduler.d.ts +2 -0
  86. package/lib/scheduler/ModelOperationScheduler.js +25 -21
  87. package/lib/types.d.ts +27 -0
  88. package/lib/utils/associationObjectVariable.d.ts +2 -2
  89. package/lib/utils/createCollectionContextMeta.js +1 -0
  90. package/lib/utils/createEphemeralContext.js +2 -2
  91. package/lib/utils/dateVariable.d.ts +16 -0
  92. package/lib/utils/dateVariable.js +380 -0
  93. package/lib/utils/exceptions.d.ts +7 -0
  94. package/lib/utils/exceptions.js +10 -0
  95. package/lib/utils/index.d.ts +8 -3
  96. package/lib/utils/index.js +45 -0
  97. package/lib/utils/params-resolvers.js +16 -9
  98. package/lib/utils/resolveModuleUrl.d.ts +58 -0
  99. package/lib/utils/resolveModuleUrl.js +65 -0
  100. package/lib/utils/resolveRunJSObjectValues.d.ts +16 -0
  101. package/lib/utils/resolveRunJSObjectValues.js +61 -0
  102. package/lib/utils/runjsModuleLoader.d.ts +58 -0
  103. package/lib/utils/runjsModuleLoader.js +422 -0
  104. package/lib/utils/runjsTemplateCompat.d.ts +35 -0
  105. package/lib/utils/runjsTemplateCompat.js +743 -0
  106. package/lib/utils/runjsValue.d.ts +29 -0
  107. package/lib/utils/runjsValue.js +275 -0
  108. package/lib/utils/safeGlobals.d.ts +18 -8
  109. package/lib/utils/safeGlobals.js +164 -17
  110. package/lib/utils/schema-utils.d.ts +10 -0
  111. package/lib/utils/schema-utils.js +61 -0
  112. package/lib/views/createViewMeta.d.ts +0 -7
  113. package/lib/views/createViewMeta.js +19 -70
  114. package/lib/views/index.d.ts +1 -2
  115. package/lib/views/index.js +4 -3
  116. package/lib/views/useDialog.js +8 -3
  117. package/lib/views/useDrawer.js +7 -2
  118. package/lib/views/usePage.d.ts +4 -0
  119. package/lib/views/usePage.js +43 -6
  120. package/lib/views/usePopover.js +4 -1
  121. package/lib/views/viewEvents.d.ts +17 -0
  122. package/lib/views/viewEvents.js +90 -0
  123. package/package.json +4 -4
  124. package/src/BlockScopedFlowEngine.ts +2 -5
  125. package/src/JSRunner.ts +44 -2
  126. package/src/ViewScopedFlowEngine.ts +4 -0
  127. package/src/__tests__/JSRunner.test.ts +64 -0
  128. package/src/__tests__/createViewMeta.popup.test.ts +62 -1
  129. package/src/__tests__/flowContext.test.ts +693 -1
  130. package/src/__tests__/flowEngine.dataSourceDirty.test.ts +63 -0
  131. package/src/__tests__/flowModel.openView.navigation.test.ts +28 -0
  132. package/src/__tests__/flowRunJSContextDefine.test.ts +63 -0
  133. package/src/__tests__/flowRuntimeContext.test.ts +2 -1
  134. package/src/__tests__/flowSettings.open.test.tsx +123 -19
  135. package/src/__tests__/provider.test.tsx +0 -5
  136. package/src/__tests__/runjsContext.test.ts +10 -7
  137. package/src/__tests__/runjsContextImplementations.test.ts +34 -3
  138. package/src/__tests__/runjsContextRuntime.test.ts +3 -3
  139. package/src/__tests__/runjsContributions.test.ts +89 -0
  140. package/src/__tests__/runjsExternalLibs.test.ts +242 -0
  141. package/src/__tests__/runjsLibsLazyLoading.test.ts +44 -0
  142. package/src/__tests__/runjsLocales.test.ts +4 -1
  143. package/src/__tests__/runjsPreprocessDefault.test.ts +49 -0
  144. package/src/__tests__/runjsRuntimeFeatures.test.ts +166 -0
  145. package/src/__tests__/runjsSnippets.test.ts +40 -3
  146. package/src/acl/Acl.tsx +3 -3
  147. package/src/components/FlowContextSelector.tsx +208 -12
  148. package/src/components/__tests__/gridDragPlanner.test.ts +141 -1
  149. package/src/components/dnd/gridDragPlanner.ts +60 -0
  150. package/src/components/settings/wrappers/component/SwitchWithTitle.tsx +2 -1
  151. package/src/components/settings/wrappers/component/__tests__/InlineControls.test.tsx +74 -0
  152. package/src/components/settings/wrappers/contextual/DefaultSettingsIcon.tsx +109 -16
  153. package/src/components/settings/wrappers/contextual/FlowsContextMenu.tsx +41 -7
  154. package/src/components/settings/wrappers/contextual/StepSettingsDialog.tsx +13 -2
  155. package/src/components/settings/wrappers/contextual/__tests__/DefaultSettingsIcon.test.tsx +157 -5
  156. package/src/components/variables/VariableInput.tsx +12 -4
  157. package/src/components/variables/VariableTag.tsx +54 -45
  158. package/src/components/variables/__tests__/FlowContextSelector.test.tsx +260 -3
  159. package/src/components/variables/__tests__/VariableTag.test.tsx +50 -0
  160. package/src/components/variables/__tests__/utils.test.ts +81 -3
  161. package/src/components/variables/utils.ts +67 -6
  162. package/src/data-source/index.ts +88 -110
  163. package/src/executor/FlowExecutor.ts +200 -23
  164. package/src/executor/__tests__/flowExecutor.test.ts +66 -0
  165. package/src/flowContext.ts +2986 -211
  166. package/src/flowEngine.ts +58 -13
  167. package/src/flowI18n.ts +7 -5
  168. package/src/flowSettings.ts +18 -12
  169. package/src/index.ts +14 -1
  170. package/src/locale/en-US.json +9 -2
  171. package/src/locale/zh-CN.json +8 -1
  172. package/src/models/CollectionFieldModel.tsx +3 -1
  173. package/src/models/__tests__/dispatchEvent.when.test.ts +554 -0
  174. package/src/models/__tests__/flowModel.clone.test.ts +416 -0
  175. package/src/models/__tests__/flowModel.test.ts +20 -4
  176. package/src/models/flowModel.tsx +94 -1
  177. package/src/provider.tsx +9 -7
  178. package/src/resources/__tests__/multiRecordResource.test.ts +44 -0
  179. package/src/resources/__tests__/sqlResource.test.ts +60 -0
  180. package/src/resources/baseRecordResource.ts +31 -0
  181. package/src/resources/multiRecordResource.ts +11 -4
  182. package/src/resources/singleRecordResource.ts +3 -0
  183. package/src/resources/sqlResource.ts +11 -6
  184. package/src/runjs-context/contexts/FormJSFieldItemRunJSContext.ts +10 -0
  185. package/src/runjs-context/contexts/JSBlockRunJSContext.ts +6 -2
  186. package/src/runjs-context/contexts/JSEditableFieldRunJSContext.ts +106 -0
  187. package/src/runjs-context/contexts/JSItemRunJSContext.ts +10 -0
  188. package/src/runjs-context/contexts/base.ts +715 -44
  189. package/src/runjs-context/contributions.ts +88 -0
  190. package/src/runjs-context/helpers.ts +11 -1
  191. package/src/runjs-context/setup.ts +6 -0
  192. package/src/runjs-context/snippets/global/api-request.snippet.ts +3 -3
  193. package/src/runjs-context/snippets/global/import-esm.snippet.ts +2 -3
  194. package/src/runjs-context/snippets/global/query-selector.snippet.ts +8 -3
  195. package/src/runjs-context/snippets/global/require-amd.snippet.ts +1 -1
  196. package/src/runjs-context/snippets/index.ts +75 -41
  197. package/src/runjs-context/snippets/scene/block/add-event-listener.snippet.ts +11 -13
  198. package/src/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.ts +3 -3
  199. package/src/runjs-context/snippets/scene/block/chartjs-bar.snippet.ts +2 -2
  200. package/src/runjs-context/snippets/scene/block/echarts-init.snippet.ts +2 -2
  201. package/src/runjs-context/snippets/scene/block/render-iframe.snippet.ts +2 -2
  202. package/src/runjs-context/snippets/scene/block/render-react.snippet.ts +1 -1
  203. package/src/runjs-context/snippets/scene/block/render-statistics.snippet.ts +1 -1
  204. package/src/runjs-context/snippets/scene/block/render-timeline.snippet.ts +1 -1
  205. package/src/runjs-context/snippets/scene/block/resource-example.snippet.ts +6 -11
  206. package/src/runjs-context/snippets/scene/block/three-users-orbit.snippet.ts +6 -6
  207. package/src/runjs-context/snippets/scene/block/vue-component.snippet.ts +3 -4
  208. package/src/runjs-context/snippets/scene/detail/color-by-value.snippet.ts +1 -1
  209. package/src/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.ts +20 -3
  210. package/src/runjs-context/snippets/scene/detail/format-number.snippet.ts +1 -1
  211. package/src/runjs-context/snippets/scene/detail/innerHTML-value.snippet.ts +1 -1
  212. package/src/runjs-context/snippets/scene/detail/percentage-bar.snippet.ts +3 -3
  213. package/src/runjs-context/snippets/scene/detail/relative-time.snippet.ts +3 -3
  214. package/src/runjs-context/snippets/scene/detail/status-tag.snippet.ts +2 -2
  215. package/src/runjs-context/snippets/scene/form/cascade-select.snippet.ts +1 -1
  216. package/src/runjs-context/snippets/scene/form/render-basic.snippet.ts +3 -8
  217. package/src/runjs-context/snippets/scene/table/cell-open-dialog.snippet.ts +6 -3
  218. package/src/runjs-context/snippets/scene/table/concat-fields.snippet.ts +3 -1
  219. package/src/runjsLibs.ts +622 -0
  220. package/src/scheduler/ModelOperationScheduler.ts +27 -21
  221. package/src/types.ts +38 -1
  222. package/src/utils/__tests__/dateVariable.test.ts +101 -0
  223. package/src/utils/__tests__/params-resolvers.test.ts +40 -0
  224. package/src/utils/__tests__/runjsRequireAsyncAutoWhitelist.test.ts +38 -0
  225. package/src/utils/__tests__/runjsTemplateCompat.test.ts +159 -0
  226. package/src/utils/__tests__/runjsValue.test.ts +44 -0
  227. package/src/utils/__tests__/safeGlobals.test.ts +57 -2
  228. package/src/utils/__tests__/utils.test.ts +95 -0
  229. package/src/utils/associationObjectVariable.ts +2 -2
  230. package/src/utils/createCollectionContextMeta.ts +1 -0
  231. package/src/utils/createEphemeralContext.ts +5 -4
  232. package/src/utils/dateVariable.ts +397 -0
  233. package/src/utils/exceptions.ts +11 -0
  234. package/src/utils/index.ts +37 -3
  235. package/src/utils/params-resolvers.ts +23 -9
  236. package/src/utils/resolveModuleUrl.ts +91 -0
  237. package/src/utils/resolveRunJSObjectValues.ts +46 -0
  238. package/src/utils/runjsModuleLoader.ts +553 -0
  239. package/src/utils/runjsTemplateCompat.ts +828 -0
  240. package/src/utils/runjsValue.ts +287 -0
  241. package/src/utils/safeGlobals.ts +188 -17
  242. package/src/utils/schema-utils.ts +79 -0
  243. package/src/views/__tests__/FlowView.usePage.test.tsx +54 -1
  244. package/src/views/__tests__/useDialog.closeDestroy.test.tsx +35 -8
  245. package/src/views/__tests__/viewEvents.resolveOpenerEngine.test.ts +28 -0
  246. package/src/views/createViewMeta.ts +22 -75
  247. package/src/views/index.tsx +1 -2
  248. package/src/views/useDialog.tsx +9 -2
  249. package/src/views/useDrawer.tsx +8 -1
  250. package/src/views/usePage.tsx +51 -5
  251. package/src/views/usePopover.tsx +4 -1
  252. package/src/views/viewEvents.ts +55 -0
@@ -7,7 +7,7 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
  import { ISchema } from '@formily/json-schema';
10
- import { APIClient } from '@nocobase/sdk';
10
+ import { APIClient, RequestOptions } from '@nocobase/sdk';
11
11
  import type { Router } from '@remix-run/router';
12
12
  import { MessageInstance } from 'antd/es/message/interface';
13
13
  import type { HookAPI } from 'antd/es/modal/useModal';
@@ -25,12 +25,51 @@ import type { ActionDefinition, EventDefinition, ResourceType } from './types';
25
25
  import { JSONValue } from './utils/params-resolvers';
26
26
  import type { RecordRef } from './utils/serverContextParams';
27
27
  import { FlowView, FlowViewer } from './views/FlowView';
28
+ import { type RunJSVersion } from './runjs-context/registry';
28
29
  type Getter<T = any> = (ctx: FlowContext) => T | Promise<T>;
30
+ export type FlowContextDocRef = string | {
31
+ url: string;
32
+ title?: string;
33
+ };
34
+ export type FlowDeprecationDoc = boolean | {
35
+ /**
36
+ * 废弃说明(面向人/大模型)。
37
+ */
38
+ message?: string;
39
+ /**
40
+ * 推荐替代 API(例如 'ctx.resolveJsonTemplate')。
41
+ */
42
+ replacedBy?: string | string[];
43
+ /**
44
+ * 开始废弃的版本号(可选)。
45
+ */
46
+ since?: string;
47
+ /**
48
+ * 预计移除的版本号(可选)。
49
+ */
50
+ removedIn?: string;
51
+ /**
52
+ * 参考链接(可选)。
53
+ */
54
+ ref?: FlowContextDocRef;
55
+ };
56
+ export type FlowContextDocParam = {
57
+ name: string;
58
+ description?: string;
59
+ type?: string;
60
+ optional?: boolean;
61
+ default?: JSONValue;
62
+ };
63
+ export type FlowContextDocReturn = {
64
+ description?: string;
65
+ type?: string;
66
+ };
29
67
  export interface MetaTreeNode {
30
68
  name: string;
31
69
  title: string;
32
70
  type: string;
33
71
  interface?: string;
72
+ options?: any;
34
73
  uiSchema?: ISchema;
35
74
  render?: (props: any) => JSX.Element;
36
75
  paths: string[];
@@ -44,13 +83,14 @@ export interface PropertyMeta {
44
83
  type: string;
45
84
  title: string;
46
85
  interface?: string;
86
+ options?: any;
47
87
  uiSchema?: ISchema;
48
88
  render?: (props: any) => JSX.Element;
49
89
  sort?: number;
50
90
  properties?: Record<string, PropertyMeta> | (() => Promise<Record<string, PropertyMeta>>);
51
- disabled?: boolean | (() => boolean);
52
- disabledReason?: string | (() => string | undefined);
53
- hidden?: boolean | (() => boolean);
91
+ disabled?: boolean | (() => boolean | Promise<boolean>);
92
+ disabledReason?: string | (() => string | undefined | Promise<string | undefined>);
93
+ hidden?: boolean | (() => boolean | Promise<boolean>);
54
94
  buildVariablesParams?: (ctx: FlowContext) => RecordRef | Record<string, any> | Promise<RecordRef | Record<string, any> | undefined> | undefined;
55
95
  }
56
96
  export type PropertyMetaFactory = {
@@ -73,9 +113,130 @@ export interface PropertyOptions {
73
113
  cache?: boolean;
74
114
  observable?: boolean;
75
115
  meta?: PropertyMetaOrFactory;
116
+ /**
117
+ * 面向工具/大模型的静态文档信息(不影响变量选择器 UI)。
118
+ * - `getApiInfos()` 仅使用 RunJS doc + 这里的 `info`(不会读取/展开 `meta`)
119
+ * - 变量结构信息请使用 `getVarInfos()`(来源于 `meta`)
120
+ */
121
+ info?: FlowContextPropertyInfoOrFactory;
76
122
  resolveOnServer?: boolean | ((subPath: string) => boolean);
77
123
  serverOnlyWhenContextParams?: boolean;
78
124
  }
125
+ export type FlowContextMethodInfoInput = {
126
+ description?: string;
127
+ detail?: string;
128
+ examples?: string[];
129
+ completion?: RunJSDocCompletionDoc;
130
+ ref?: FlowContextDocRef;
131
+ deprecated?: FlowDeprecationDoc;
132
+ params?: FlowContextDocParam[];
133
+ returns?: FlowContextDocReturn;
134
+ hidden?: boolean | ((ctx: any) => boolean | Promise<boolean>);
135
+ disabled?: boolean | ((ctx: any) => boolean | Promise<boolean>);
136
+ disabledReason?: string | ((ctx: any) => string | undefined | Promise<string | undefined>);
137
+ };
138
+ export type FlowContextMethodInfo = {
139
+ description?: string;
140
+ detail?: string;
141
+ examples?: string[];
142
+ completion?: RunJSDocCompletionDoc;
143
+ ref?: FlowContextDocRef;
144
+ deprecated?: FlowDeprecationDoc;
145
+ params?: FlowContextDocParam[];
146
+ returns?: FlowContextDocReturn;
147
+ disabled?: boolean;
148
+ disabledReason?: string;
149
+ };
150
+ export type FlowContextPropertyInfoObjectInput = Omit<FlowContextPropertyInfo, 'disabled' | 'disabledReason' | 'properties'> & {
151
+ properties?: Record<string, FlowContextPropertyInfoInput> | (() => Promise<Record<string, FlowContextPropertyInfoInput>>);
152
+ hidden?: RunJSDocHiddenOrPathsDoc;
153
+ disabled?: boolean | ((ctx: any) => boolean | Promise<boolean>);
154
+ disabledReason?: string | ((ctx: any) => string | undefined | Promise<string | undefined>);
155
+ };
156
+ export type FlowContextPropertyInfoInput = string | FlowContextPropertyInfoObjectInput;
157
+ export type FlowContextPropertyInfoFactory = {
158
+ (): FlowContextPropertyInfoInput | Promise<FlowContextPropertyInfoInput | null> | null;
159
+ };
160
+ export type FlowContextPropertyInfoOrFactory = FlowContextPropertyInfoInput | FlowContextPropertyInfoFactory;
161
+ export type FlowContextPropertyInfo = {
162
+ title?: string;
163
+ type?: string;
164
+ interface?: string;
165
+ description?: string;
166
+ detail?: string;
167
+ examples?: string[];
168
+ completion?: RunJSDocCompletionDoc;
169
+ ref?: FlowContextDocRef;
170
+ deprecated?: FlowDeprecationDoc;
171
+ params?: FlowContextDocParam[];
172
+ returns?: FlowContextDocReturn;
173
+ disabled?: boolean;
174
+ disabledReason?: string;
175
+ properties?: Record<string, FlowContextPropertyInfo>;
176
+ };
177
+ export type FlowContextApiInfo = {
178
+ title?: string;
179
+ type?: string;
180
+ interface?: string;
181
+ description?: string;
182
+ examples?: string[];
183
+ completion?: RunJSDocCompletionDoc;
184
+ ref?: FlowContextDocRef;
185
+ deprecated?: FlowDeprecationDoc;
186
+ params?: FlowContextDocParam[];
187
+ returns?: FlowContextDocReturn;
188
+ disabled?: boolean;
189
+ disabledReason?: string;
190
+ properties?: Record<string, FlowContextApiInfo>;
191
+ };
192
+ export type FlowContextInfosEnvNode = {
193
+ /**
194
+ * 说明(面向人/大模型)。建议为一句话。
195
+ */
196
+ description?: string;
197
+ /**
198
+ * 可用于 `await ctx.getVar(getVar)` 的表达式字符串,推荐以 `ctx.` 开头。
199
+ * 例如:'ctx.popup'、'ctx.resource.collectionName'
200
+ */
201
+ getVar?: string;
202
+ /**
203
+ * 已解析/可序列化的静态值(用于 prompt 直接使用)。
204
+ * 注意:应保持小体积,避免放入 record 等大对象。
205
+ */
206
+ value?: JSONValue;
207
+ /**
208
+ * 子节点(用于表达 popup.resource.xxx 等层级结构)。
209
+ */
210
+ properties?: Record<string, FlowContextInfosEnvNode>;
211
+ };
212
+ export type FlowContextInfosEnvs = {
213
+ popup?: FlowContextInfosEnvNode;
214
+ block?: FlowContextInfosEnvNode;
215
+ currentViewBlocks?: FlowContextInfosEnvNode;
216
+ flowModel?: FlowContextInfosEnvNode;
217
+ resource?: FlowContextInfosEnvNode;
218
+ record?: FlowContextInfosEnvNode;
219
+ };
220
+ export type FlowContextGetApiInfosOptions = {
221
+ /**
222
+ * RunJS 文档版本(默认 v1)。
223
+ */
224
+ version?: RunJSVersion;
225
+ };
226
+ export type FlowContextGetVarInfosOptions = {
227
+ /**
228
+ * 最大展开层级(默认 3)。
229
+ * - 当不传 path 时,top-level property depth=1。
230
+ * - 当传 path 时,path 对应节点 depth=1。
231
+ */
232
+ maxDepth?: number;
233
+ /**
234
+ * 剪裁:仅收集指定 path 下的变量结构信息。
235
+ * - string 形式支持:'record'、'record.id'、'ctx.record'、'{{ ctx.record }}'
236
+ * - string[] 表示多个剪裁路径合并
237
+ */
238
+ path?: string | string[];
239
+ };
79
240
  type RouteOptions = {
80
241
  name?: string;
81
242
  path?: string;
@@ -86,6 +247,7 @@ export declare class FlowContext {
86
247
  #private;
87
248
  _props: Record<string, PropertyOptions>;
88
249
  _methods: Record<string, (...args: any[]) => any>;
250
+ _methodInfos: Record<string, FlowContextMethodInfoInput>;
89
251
  protected _cache: Record<string, any>;
90
252
  protected _observableCache: Record<string, any>;
91
253
  protected _delegates: FlowContext[];
@@ -95,7 +257,7 @@ export declare class FlowContext {
95
257
  createProxy(): FlowContext;
96
258
  constructor();
97
259
  defineProperty(key: string, options: PropertyOptions): void;
98
- defineMethod(name: string, fn: (...args: any[]) => any, des?: string): void;
260
+ defineMethod(name: string, fn: (...args: any[]) => any, info?: string | FlowContextMethodInfoInput): void;
99
261
  removeCache(key: string): boolean;
100
262
  delegate(ctx: FlowContext): void;
101
263
  addDelegate(ctx: FlowContext): void;
@@ -125,6 +287,26 @@ export declare class FlowContext {
125
287
  getPropertyMetaTree(value?: string, options?: {
126
288
  flatten?: boolean;
127
289
  }): MetaTreeNode[];
290
+ /**
291
+ * 获取静态 API 文档信息(仅顶层一层)。
292
+ *
293
+ * - 输出仅来自 RunJS doc 与 defineProperty/defineMethod 的 info
294
+ * - 不读取/展开 PropertyMeta(变量结构)
295
+ * - 不自动展开深层 properties
296
+ * - 不返回自动补全字段(例如 completion)
297
+ */
298
+ getApiInfos(options?: FlowContextGetApiInfosOptions): Promise<Record<string, FlowContextApiInfo>>;
299
+ /**
300
+ * 获取运行时环境快照信息(小体积、可序列化)。
301
+ */
302
+ getEnvInfos(): Promise<FlowContextInfosEnvs>;
303
+ /**
304
+ * 获取变量结构信息(来源于 PropertyMeta)。
305
+ *
306
+ * - 返回静态 plain object(不包含函数)
307
+ * - 支持 maxDepth(默认 3)与 path 剪裁
308
+ */
309
+ getVarInfos(options?: FlowContextGetVarInfosOptions): Promise<Record<string, FlowContextApiInfo>>;
128
310
  _getPropertiesMeta(): Record<string, PropertyMetaOrFactory>;
129
311
  protected _getOwnProperty(key: string, currentContext: any): any;
130
312
  protected _getOwnMethod(key: string, flowContext?: FlowContext): any;
@@ -147,7 +329,7 @@ declare class BaseFlowEngineContext extends FlowContext {
147
329
  dataSourceManager: DataSourceManager;
148
330
  requireAsync: (url: string) => Promise<any>;
149
331
  importAsync: (url: string) => Promise<any>;
150
- createJSRunner: (options?: JSRunnerOptions) => JSRunner;
332
+ createJSRunner: (options?: JSRunnerOptions) => Promise<JSRunner>;
151
333
  pageInfo: {
152
334
  version?: 'v1' | 'v2';
153
335
  };
@@ -156,6 +338,8 @@ declare class BaseFlowEngineContext extends FlowContext {
156
338
  */
157
339
  renderJson: (template: JSONValue) => Promise<any>;
158
340
  resolveJsonTemplate: (template: JSONValue) => Promise<any>;
341
+ getVar: (path: string) => Promise<any>;
342
+ request: (options: RequestOptions) => Promise<any>;
159
343
  runjs: (code: string, variables?: Record<string, any>, options?: JSRunnerOptions) => Promise<any>;
160
344
  getAction: <TModel extends FlowModel = FlowModel, TCtx extends FlowContext = FlowContext>(name: string) => ActionDefinition<TModel, TCtx> | undefined;
161
345
  getActions: <TModel extends FlowModel = FlowModel, TCtx extends FlowContext = FlowContext>() => Map<string, ActionDefinition<TModel, TCtx>>;
@@ -172,6 +356,7 @@ declare class BaseFlowEngineContext extends FlowContext {
172
356
  location: Location;
173
357
  sql: FlowSQLRepository;
174
358
  logger: pino.Logger;
359
+ constructor();
175
360
  }
176
361
  declare class BaseFlowModelContext extends BaseFlowEngineContext {
177
362
  model: FlowModel;
@@ -180,7 +365,16 @@ declare class BaseFlowModelContext extends BaseFlowEngineContext {
180
365
  getActions: <TModel extends FlowModel = FlowModel, TCtx extends FlowContext = FlowContext>() => Map<string, ActionDefinition<TModel, TCtx>>;
181
366
  getEvents: <TModel extends FlowModel = FlowModel, TCtx extends FlowContext = FlowContext>() => Map<string, EventDefinition<TModel, TCtx>>;
182
367
  runAction: (actionName: string, params?: Record<string, any>) => Promise<any> | any;
368
+ /**
369
+ * @deprecated use `makeResource` instead
370
+ */
183
371
  createResource: <T extends FlowResource = FlowResource>(resourceType: ResourceType<T>) => T;
372
+ /**
373
+ * Create a new resource instance without adding it to the context.
374
+ * @param resourceType - The resource type.
375
+ * @returns The resource instance.
376
+ */
377
+ makeResource: <T extends FlowResource = FlowResource>(resourceType: ResourceType<T>) => T;
184
378
  }
185
379
  export declare class FlowEngineContext extends BaseFlowEngineContext {
186
380
  engine: FlowEngine;
@@ -204,7 +398,15 @@ export declare class FlowRuntimeContext<TModel extends FlowModel = FlowModel, TM
204
398
  result?: any;
205
399
  }>;
206
400
  stepResults: Record<string, any>;
207
- useResource: (className: 'APIResource' | 'SingleRecordResource' | 'MultiRecordResource') => void;
401
+ /**
402
+ * @deprecated use `initResource` instead
403
+ */
404
+ useResource: (className: 'APIResource' | 'SingleRecordResource' | 'MultiRecordResource' | 'SQLResource') => void;
405
+ /**
406
+ * Initialize a resource instance without adding it to the context.
407
+ * @param className - The resource class name.
408
+ */
409
+ initResource: (className: 'APIResource' | 'SingleRecordResource' | 'MultiRecordResource' | 'SQLResource') => void;
208
410
  getStepParams: (stepKey: string) => Record<string, any>;
209
411
  setStepParams: (stepKey: string, params?: any) => void;
210
412
  getStepResults: (stepKey: string) => any;
@@ -219,19 +421,35 @@ export type FlowSettingsContext<TModel extends FlowModel = FlowModel> = FlowRunt
219
421
  export type RunJSDocCompletionDoc = {
220
422
  insertText?: string;
221
423
  };
424
+ export type RunJSDocHiddenDoc = boolean | ((ctx: any) => boolean | Promise<boolean>);
425
+ export type RunJSDocHiddenOrPathsDoc = boolean | string[] | ((ctx: any) => boolean | string[] | Promise<boolean | string[]>);
222
426
  export type RunJSDocPropertyDoc = string | {
223
427
  description?: string;
224
428
  detail?: string;
225
429
  type?: string;
226
430
  examples?: string[];
227
431
  completion?: RunJSDocCompletionDoc;
432
+ ref?: FlowContextDocRef;
433
+ deprecated?: FlowDeprecationDoc;
434
+ params?: FlowContextDocParam[];
435
+ returns?: FlowContextDocReturn;
228
436
  properties?: Record<string, RunJSDocPropertyDoc>;
437
+ hidden?: RunJSDocHiddenOrPathsDoc;
438
+ disabled?: boolean | ((ctx: any) => boolean | Promise<boolean>);
439
+ disabledReason?: string | ((ctx: any) => string | undefined | Promise<string | undefined>);
229
440
  };
230
441
  export type RunJSDocMethodDoc = string | {
231
442
  description?: string;
232
443
  detail?: string;
233
444
  examples?: string[];
234
445
  completion?: RunJSDocCompletionDoc;
446
+ ref?: FlowContextDocRef;
447
+ deprecated?: FlowDeprecationDoc;
448
+ params?: FlowContextDocParam[];
449
+ returns?: FlowContextDocReturn;
450
+ hidden?: RunJSDocHiddenDoc;
451
+ disabled?: boolean | ((ctx: any) => boolean | Promise<boolean>);
452
+ disabledReason?: string | ((ctx: any) => string | undefined | Promise<string | undefined>);
235
453
  };
236
454
  export type RunJSDocMeta = {
237
455
  label?: string;
@@ -239,8 +457,13 @@ export type RunJSDocMeta = {
239
457
  methods?: Record<string, RunJSDocMethodDoc>;
240
458
  snippets?: Record<string, any>;
241
459
  };
460
+ export declare function createRunJSDeprecationProxy(ctx: any, options?: {
461
+ doc?: RunJSDocMeta;
462
+ }): any;
242
463
  export declare class FlowRunJSContext extends FlowContext {
243
464
  constructor(delegate: FlowContext);
465
+ exit(): void;
466
+ exitAll(): void;
244
467
  static define(meta: RunJSDocMeta, options?: {
245
468
  locale?: string;
246
469
  }): void;