@nocobase/plugin-flow-engine 2.1.0-alpha.23 → 2.1.0-alpha.25

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 (49) hide show
  1. package/dist/ai/ai-employees/nathan/skills/frontend-developer/SKILLS.md +2 -2
  2. package/dist/externalVersion.js +10 -10
  3. package/dist/node_modules/ses/package.json +1 -1
  4. package/dist/node_modules/zod/package.json +1 -1
  5. package/dist/server/flow-surfaces/action-scope.d.ts +1 -0
  6. package/dist/server/flow-surfaces/action-scope.js +4 -0
  7. package/dist/server/flow-surfaces/apply/compiler.js +4 -2
  8. package/dist/server/flow-surfaces/association-interfaces.d.ts +10 -0
  9. package/dist/server/flow-surfaces/association-interfaces.js +39 -0
  10. package/dist/server/flow-surfaces/association-title-field.d.ts +1 -1
  11. package/dist/server/flow-surfaces/association-title-field.js +38 -4
  12. package/dist/server/flow-surfaces/blueprint/compile-blocks.js +72 -5
  13. package/dist/server/flow-surfaces/blueprint/public-types.d.ts +9 -1
  14. package/dist/server/flow-surfaces/builder.d.ts +27 -1
  15. package/dist/server/flow-surfaces/builder.js +105 -5
  16. package/dist/server/flow-surfaces/catalog.d.ts +2 -1
  17. package/dist/server/flow-surfaces/catalog.js +316 -119
  18. package/dist/server/flow-surfaces/compose-compiler.d.ts +8 -0
  19. package/dist/server/flow-surfaces/compose-compiler.js +9 -1
  20. package/dist/server/flow-surfaces/configure-options.js +72 -6
  21. package/dist/server/flow-surfaces/core-field-default-bindings.d.ts +12 -0
  22. package/dist/server/flow-surfaces/core-field-default-bindings.js +157 -0
  23. package/dist/server/flow-surfaces/default-action-popup.js +2 -2
  24. package/dist/server/flow-surfaces/default-block-actions.js +24 -0
  25. package/dist/server/flow-surfaces/field-binding-registry.d.ts +1 -0
  26. package/dist/server/flow-surfaces/field-binding-registry.js +5 -0
  27. package/dist/server/flow-surfaces/field-semantics.d.ts +1 -1
  28. package/dist/server/flow-surfaces/field-semantics.js +7 -4
  29. package/dist/server/flow-surfaces/field-type-resolver.d.ts +46 -0
  30. package/dist/server/flow-surfaces/field-type-resolver.js +322 -0
  31. package/dist/server/flow-surfaces/index.js +61 -2
  32. package/dist/server/flow-surfaces/node-use-sets.js +4 -0
  33. package/dist/server/flow-surfaces/placement.js +3 -0
  34. package/dist/server/flow-surfaces/public-data-surface-default-filter.d.ts +4 -0
  35. package/dist/server/flow-surfaces/public-data-surface-default-filter.js +45 -4
  36. package/dist/server/flow-surfaces/service-helpers.js +3 -70
  37. package/dist/server/flow-surfaces/service-utils.d.ts +13 -1
  38. package/dist/server/flow-surfaces/service-utils.js +58 -6
  39. package/dist/server/flow-surfaces/service.d.ts +59 -2
  40. package/dist/server/flow-surfaces/service.js +2269 -234
  41. package/dist/server/flow-surfaces/support-matrix.d.ts +1 -1
  42. package/dist/server/flow-surfaces/support-matrix.js +23 -0
  43. package/dist/server/flow-surfaces/surface-context.js +8 -5
  44. package/dist/swagger/flow-surfaces.d.ts +173 -2
  45. package/dist/swagger/flow-surfaces.examples.d.ts +59 -15
  46. package/dist/swagger/flow-surfaces.examples.js +69 -11
  47. package/dist/swagger/flow-surfaces.js +86 -17
  48. package/dist/swagger/index.d.ts +173 -2
  49. package/package.json +2 -2
@@ -6,7 +6,7 @@
6
6
  * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
- export type FormalFlowSurfaceBlockKey = 'js-block' | 'table' | 'calendar' | 'create-form' | 'edit-form' | 'details' | 'filter-form' | 'list' | 'grid-card' | 'markdown' | 'iframe' | 'map' | 'chart' | 'comments' | 'action-panel';
9
+ export type FormalFlowSurfaceBlockKey = 'js-block' | 'table' | 'calendar' | 'kanban' | 'create-form' | 'edit-form' | 'details' | 'filter-form' | 'list' | 'grid-card' | 'markdown' | 'iframe' | 'map' | 'chart' | 'comments' | 'action-panel';
10
10
  export type FlowSurfaceBlockSupportEntry = {
11
11
  key: string;
12
12
  formalKey?: FormalFlowSurfaceBlockKey;
@@ -72,6 +72,18 @@ const FLOW_SURFACE_BLOCK_SUPPORT_MATRIX = [
72
72
  readbackSupported: true,
73
73
  createSupported: true
74
74
  },
75
+ {
76
+ key: "kanban",
77
+ formalKey: "kanban",
78
+ label: "Kanban",
79
+ modelUse: "KanbanBlockModel",
80
+ ownerPlugin: "@nocobase/plugin-kanban",
81
+ topLevelAddable: true,
82
+ formalBuiltin: true,
83
+ fixtureCaptured: true,
84
+ readbackSupported: true,
85
+ createSupported: true
86
+ },
75
87
  {
76
88
  key: "createForm",
77
89
  formalKey: "create-form",
@@ -226,6 +238,17 @@ const FLOW_SURFACE_BLOCK_SUPPORT_MATRIX = [
226
238
  fixtureCaptured: true,
227
239
  readbackSupported: true,
228
240
  createSupported: true
241
+ },
242
+ {
243
+ key: "tree",
244
+ label: "Tree",
245
+ modelUse: "TreeBlockModel",
246
+ ownerPlugin: "@nocobase/plugin-block-tree",
247
+ topLevelAddable: true,
248
+ formalBuiltin: false,
249
+ fixtureCaptured: false,
250
+ readbackSupported: true,
251
+ createSupported: true
229
252
  }
230
253
  ];
231
254
  function hasFormalFlowSurfaceBlockKey(entry) {
@@ -48,6 +48,7 @@ var import_placement = require("./placement");
48
48
  const FILTER_TARGET_BLOCK_USES = /* @__PURE__ */ new Set([
49
49
  "TableBlockModel",
50
50
  "CalendarBlockModel",
51
+ "KanbanBlockModel",
51
52
  "DetailsBlockModel",
52
53
  "ListBlockModel",
53
54
  "GridCardBlockModel",
@@ -55,8 +56,10 @@ const FILTER_TARGET_BLOCK_USES = /* @__PURE__ */ new Set([
55
56
  "MapBlockModel",
56
57
  "CommentsBlockModel"
57
58
  ]);
58
- const LIST_LIKE_BLOCK_USES = /* @__PURE__ */ new Set(["ListBlockModel", "GridCardBlockModel"]);
59
- const LIST_LIKE_ITEM_USES = /* @__PURE__ */ new Set(["ListItemModel", "GridCardItemModel"]);
59
+ const DETAILS_CARD_BLOCK_USES = /* @__PURE__ */ new Set(["ListBlockModel", "GridCardBlockModel", "KanbanBlockModel"]);
60
+ const DETAILS_CARD_ITEM_USES = /* @__PURE__ */ new Set(["ListItemModel", "GridCardItemModel", "KanbanCardItemModel"]);
61
+ const RECORD_ACTION_ITEM_USES = /* @__PURE__ */ new Set(["ListItemModel", "GridCardItemModel"]);
62
+ const BLOCK_ACTION_CONTAINER_USES = /* @__PURE__ */ new Set(["ListBlockModel", "GridCardBlockModel", "KanbanBlockModel"]);
60
63
  function getDefaultGridUse(ownerUse, fallbackUse) {
61
64
  return (0, import_approval.getApprovalDefaultGridUse)(ownerUse) || fallbackUse;
62
65
  }
@@ -257,7 +260,7 @@ class FlowSurfaceContextResolver {
257
260
  wrapperUse: getFieldWrapperUse(use, "DetailsItemModel")
258
261
  };
259
262
  }
260
- if (LIST_LIKE_BLOCK_USES.has(use)) {
263
+ if (DETAILS_CARD_BLOCK_USES.has(use)) {
261
264
  const itemUid = (_f = (_e = node.subModels) == null ? void 0 : _e.item) == null ? void 0 : _f.uid;
262
265
  if (!itemUid) {
263
266
  (0, import_errors.throwBadRequest)(`flowSurfaces addField target '${use}' is missing its item subtree`);
@@ -271,7 +274,7 @@ class FlowSurfaceContextResolver {
271
274
  wrapperUse: "DetailsItemModel"
272
275
  };
273
276
  }
274
- if (LIST_LIKE_ITEM_USES.has(use)) {
277
+ if (DETAILS_CARD_ITEM_USES.has(use)) {
275
278
  return {
276
279
  ownerUid: node.uid,
277
280
  ownerUse: use,
@@ -331,7 +334,7 @@ class FlowSurfaceContextResolver {
331
334
  var _a;
332
335
  const resolved = await this.locator.resolve(target, { transaction });
333
336
  const node = resolved.node || await this.repository.findModelById(resolved.uid, { transaction, includeAsyncNode: true });
334
- if (["TableBlockModel", "CalendarBlockModel", "TableActionsColumnModel"].includes(node == null ? void 0 : node.use) || (node == null ? void 0 : node.use) === "ActionPanelBlockModel" || LIST_LIKE_BLOCK_USES.has(node == null ? void 0 : node.use) || LIST_LIKE_ITEM_USES.has(node == null ? void 0 : node.use)) {
337
+ if (["TableBlockModel", "CalendarBlockModel", "TableActionsColumnModel"].includes(node == null ? void 0 : node.use) || (node == null ? void 0 : node.use) === "ActionPanelBlockModel" || BLOCK_ACTION_CONTAINER_USES.has(node == null ? void 0 : node.use) || RECORD_ACTION_ITEM_USES.has(node == null ? void 0 : node.use)) {
335
338
  return {
336
339
  parentUid: node.uid,
337
340
  subKey: "actions",
@@ -117,6 +117,44 @@ declare const _default: {
117
117
  fieldPath: {
118
118
  type: string;
119
119
  };
120
+ fieldType: {
121
+ type: string;
122
+ enum: string[];
123
+ description: string;
124
+ };
125
+ fields: {
126
+ type: string;
127
+ items: {
128
+ type: string;
129
+ };
130
+ description: string;
131
+ };
132
+ selectorFields: {
133
+ type: string;
134
+ items: {
135
+ type: string;
136
+ };
137
+ description: string;
138
+ };
139
+ titleField: {
140
+ type: string;
141
+ };
142
+ openMode: {
143
+ type: string;
144
+ example: string;
145
+ };
146
+ popupSize: {
147
+ type: string;
148
+ example: string;
149
+ };
150
+ pageSize: {
151
+ type: string;
152
+ example: number;
153
+ };
154
+ showIndex: {
155
+ type: string;
156
+ example: boolean;
157
+ };
120
158
  renderer: {
121
159
  type: string;
122
160
  enum: string[];
@@ -157,6 +195,14 @@ declare const _default: {
157
195
  additionalProperties: boolean;
158
196
  };
159
197
  fieldPath?: undefined;
198
+ fieldType?: undefined;
199
+ fields?: undefined;
200
+ selectorFields?: undefined;
201
+ titleField?: undefined;
202
+ openMode?: undefined;
203
+ popupSize?: undefined;
204
+ pageSize?: undefined;
205
+ showIndex?: undefined;
160
206
  renderer?: undefined;
161
207
  associationPathName?: undefined;
162
208
  target?: undefined;
@@ -2025,6 +2071,44 @@ declare const _default: {
2025
2071
  type: {
2026
2072
  type: string;
2027
2073
  };
2074
+ fieldType: {
2075
+ type: string;
2076
+ enum: string[];
2077
+ description: string;
2078
+ };
2079
+ fields: {
2080
+ type: string;
2081
+ items: {
2082
+ type: string;
2083
+ };
2084
+ description: string;
2085
+ };
2086
+ selectorFields: {
2087
+ type: string;
2088
+ items: {
2089
+ type: string;
2090
+ };
2091
+ description: string;
2092
+ };
2093
+ titleField: {
2094
+ type: string;
2095
+ };
2096
+ openMode: {
2097
+ type: string;
2098
+ example: string;
2099
+ };
2100
+ popupSize: {
2101
+ type: string;
2102
+ example: string;
2103
+ };
2104
+ pageSize: {
2105
+ type: string;
2106
+ example: number;
2107
+ };
2108
+ showIndex: {
2109
+ type: string;
2110
+ example: boolean;
2111
+ };
2028
2112
  label: {
2029
2113
  type: string;
2030
2114
  };
@@ -3201,6 +3285,15 @@ declare const _default: {
3201
3285
  resourceInit: {
3202
3286
  $ref: string;
3203
3287
  };
3288
+ fields: {
3289
+ type: string;
3290
+ items: {
3291
+ $ref: string;
3292
+ };
3293
+ };
3294
+ fieldsLayout: {
3295
+ $ref: string;
3296
+ };
3204
3297
  settings: {
3205
3298
  type: string;
3206
3299
  additionalProperties: boolean;
@@ -3304,10 +3397,44 @@ declare const _default: {
3304
3397
  collectionName: {
3305
3398
  type: string;
3306
3399
  };
3307
- fieldUse: {
3400
+ fieldType: {
3308
3401
  type: string;
3402
+ enum: string[];
3403
+ description: string;
3404
+ };
3405
+ fields: {
3406
+ type: string;
3407
+ items: {
3408
+ type: string;
3409
+ };
3309
3410
  description: string;
3310
3411
  };
3412
+ selectorFields: {
3413
+ type: string;
3414
+ items: {
3415
+ type: string;
3416
+ };
3417
+ description: string;
3418
+ };
3419
+ titleField: {
3420
+ type: string;
3421
+ };
3422
+ openMode: {
3423
+ type: string;
3424
+ example: string;
3425
+ };
3426
+ popupSize: {
3427
+ type: string;
3428
+ example: string;
3429
+ };
3430
+ pageSize: {
3431
+ type: string;
3432
+ example: number;
3433
+ };
3434
+ showIndex: {
3435
+ type: string;
3436
+ example: boolean;
3437
+ };
3311
3438
  defaultTargetUid: {
3312
3439
  type: string;
3313
3440
  };
@@ -3513,6 +3640,15 @@ declare const _default: {
3513
3640
  resourceInit: {
3514
3641
  $ref: string;
3515
3642
  };
3643
+ fields: {
3644
+ type: string;
3645
+ items: {
3646
+ $ref: string;
3647
+ };
3648
+ };
3649
+ fieldsLayout: {
3650
+ $ref: string;
3651
+ };
3516
3652
  settings: {
3517
3653
  type: string;
3518
3654
  additionalProperties: boolean;
@@ -3567,8 +3703,43 @@ declare const _default: {
3567
3703
  collectionName: {
3568
3704
  type: string;
3569
3705
  };
3570
- fieldUse: {
3706
+ fieldType: {
3707
+ type: string;
3708
+ enum: string[];
3709
+ description: string;
3710
+ };
3711
+ fields: {
3712
+ type: string;
3713
+ items: {
3714
+ type: string;
3715
+ };
3716
+ description: string;
3717
+ };
3718
+ selectorFields: {
3719
+ type: string;
3720
+ items: {
3721
+ type: string;
3722
+ };
3723
+ description: string;
3724
+ };
3725
+ titleField: {
3726
+ type: string;
3727
+ };
3728
+ openMode: {
3729
+ type: string;
3730
+ example: string;
3731
+ };
3732
+ popupSize: {
3733
+ type: string;
3734
+ example: string;
3735
+ };
3736
+ pageSize: {
3737
+ type: string;
3738
+ example: number;
3739
+ };
3740
+ showIndex: {
3571
3741
  type: string;
3742
+ example: boolean;
3572
3743
  };
3573
3744
  defaultTargetUid: {
3574
3745
  type: string;
@@ -180,6 +180,45 @@ export declare const flowSurfaceExamples: {
180
180
  }[];
181
181
  }[];
182
182
  };
183
+ applyBlueprintCalendar: {
184
+ version: string;
185
+ mode: string;
186
+ navigation: {
187
+ item: {
188
+ title: string;
189
+ };
190
+ };
191
+ page: {
192
+ title: string;
193
+ documentTitle: string;
194
+ };
195
+ tabs: {
196
+ key: string;
197
+ title: string;
198
+ blocks: {
199
+ key: string;
200
+ type: string;
201
+ collection: string;
202
+ defaultFilter: {
203
+ logic: string;
204
+ items: {
205
+ path: string;
206
+ operator: string;
207
+ value: string;
208
+ }[];
209
+ };
210
+ settings: {
211
+ title: string;
212
+ titleField: string;
213
+ colorField: string;
214
+ startField: string;
215
+ endField: string;
216
+ defaultView: string;
217
+ };
218
+ actions: string[];
219
+ }[];
220
+ }[];
221
+ };
183
222
  applyApprovalBlueprintInitiator: {
184
223
  version: string;
185
224
  surface: string;
@@ -1218,7 +1257,6 @@ export declare const flowSurfaceExamples: {
1218
1257
  settings: {
1219
1258
  title: string;
1220
1259
  pageSize: number;
1221
- content?: undefined;
1222
1260
  };
1223
1261
  defaultActionSettings: {
1224
1262
  filter: {
@@ -1233,16 +1271,26 @@ export declare const flowSurfaceExamples: {
1233
1271
  };
1234
1272
  };
1235
1273
  };
1274
+ fields?: undefined;
1275
+ fieldsLayout?: undefined;
1236
1276
  } | {
1237
1277
  key: string;
1238
1278
  type: string;
1239
- settings: {
1240
- content: string;
1241
- title?: undefined;
1242
- pageSize?: undefined;
1279
+ resourceInit: {
1280
+ dataSourceKey: string;
1281
+ collectionName: string;
1282
+ };
1283
+ fields: {
1284
+ key: string;
1285
+ fieldPath: string;
1286
+ fieldType: string;
1287
+ fields: string[];
1288
+ }[];
1289
+ fieldsLayout: {
1290
+ rows: string[][];
1243
1291
  };
1244
1292
  defaultFilter?: undefined;
1245
- resourceInit?: undefined;
1293
+ settings?: undefined;
1246
1294
  defaultActionSettings?: undefined;
1247
1295
  })[];
1248
1296
  };
@@ -1256,9 +1304,6 @@ export declare const flowSurfaceExamples: {
1256
1304
  settings: {
1257
1305
  title: string;
1258
1306
  width: number;
1259
- label?: undefined;
1260
- code?: undefined;
1261
- version?: undefined;
1262
1307
  };
1263
1308
  popup: {
1264
1309
  mode: string;
@@ -1271,16 +1316,15 @@ export declare const flowSurfaceExamples: {
1271
1316
  fields: string[];
1272
1317
  }[];
1273
1318
  };
1274
- renderer?: undefined;
1319
+ fieldType?: undefined;
1320
+ fields?: undefined;
1275
1321
  } | {
1276
1322
  key: string;
1277
1323
  fieldPath: string;
1278
- renderer: string;
1324
+ fieldType: string;
1325
+ fields: string[];
1279
1326
  settings: {
1280
- label: string;
1281
- code: string;
1282
- version: string;
1283
- title?: undefined;
1327
+ title: string;
1284
1328
  width?: undefined;
1285
1329
  };
1286
1330
  popup?: undefined;
@@ -297,6 +297,53 @@ const flowSurfaceExamples = {
297
297
  }
298
298
  ]
299
299
  },
300
+ applyBlueprintCalendar: {
301
+ version: "1",
302
+ mode: "create",
303
+ navigation: {
304
+ item: {
305
+ title: "Calendar"
306
+ }
307
+ },
308
+ page: {
309
+ title: "Calendar",
310
+ documentTitle: "Team calendar"
311
+ },
312
+ tabs: [
313
+ {
314
+ key: "schedule",
315
+ title: "Schedule",
316
+ blocks: [
317
+ {
318
+ key: "eventsCalendar",
319
+ type: "calendar",
320
+ collection: "calendar_events",
321
+ defaultFilter: makePublicBlockDefaultFilter([
322
+ {
323
+ path: "title",
324
+ operator: "$includes",
325
+ value: ""
326
+ },
327
+ {
328
+ path: "status",
329
+ operator: "$eq",
330
+ value: "planned"
331
+ }
332
+ ]),
333
+ settings: {
334
+ title: "Team events",
335
+ titleField: "title",
336
+ colorField: "status",
337
+ startField: "startsAt",
338
+ endField: "endsAt",
339
+ defaultView: "week"
340
+ },
341
+ actions: ["filter", "addNew", "refresh", "today", "turnPages", "title", "selectView"]
342
+ }
343
+ ]
344
+ }
345
+ ]
346
+ },
300
347
  applyApprovalBlueprintInitiator: {
301
348
  version: "1",
302
349
  surface: "initiator",
@@ -1461,17 +1508,29 @@ const flowSurfaceExamples = {
1461
1508
  }
1462
1509
  },
1463
1510
  {
1464
- key: "teamNotes",
1465
- type: "markdown",
1466
- settings: {
1467
- content: "# Team notes"
1511
+ key: "userForm",
1512
+ type: "createForm",
1513
+ resourceInit: {
1514
+ dataSourceKey: "main",
1515
+ collectionName: "users"
1516
+ },
1517
+ fields: [
1518
+ {
1519
+ key: "rolesField",
1520
+ fieldPath: "roles",
1521
+ fieldType: "popupSubTable",
1522
+ fields: ["title", "name"]
1523
+ }
1524
+ ],
1525
+ fieldsLayout: {
1526
+ rows: [["rolesField"]]
1468
1527
  }
1469
1528
  }
1470
1529
  ]
1471
1530
  },
1472
1531
  addFields: {
1473
1532
  target: {
1474
- uid: "table-block-uid"
1533
+ uid: "create-form-block-uid"
1475
1534
  },
1476
1535
  fields: [
1477
1536
  {
@@ -1496,13 +1555,12 @@ const flowSurfaceExamples = {
1496
1555
  }
1497
1556
  },
1498
1557
  {
1499
- key: "nickname",
1500
- fieldPath: "nickname",
1501
- renderer: "js",
1558
+ key: "rolesField",
1559
+ fieldPath: "roles",
1560
+ fieldType: "popupSubTable",
1561
+ fields: ["title", "name"],
1502
1562
  settings: {
1503
- label: "Nickname (JS)",
1504
- code: "return value;",
1505
- version: "1.0.0"
1563
+ title: "Roles"
1506
1564
  }
1507
1565
  }
1508
1566
  ]