@nocobase/plugin-flow-engine 3.0.0-alpha.1 → 3.0.0-alpha.11

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 (53) hide show
  1. package/dist/externalVersion.js +9 -9
  2. package/dist/node_modules/@ant-design/icons-svg/package.json +1 -1
  3. package/dist/node_modules/acorn/package.json +1 -1
  4. package/dist/node_modules/acorn-jsx/package.json +1 -1
  5. package/dist/node_modules/acorn-walk/package.json +1 -1
  6. package/dist/node_modules/ses/package.json +1 -1
  7. package/dist/node_modules/zod/package.json +1 -1
  8. package/dist/server/flow-surfaces/builder.js +5 -0
  9. package/dist/server/flow-surfaces/catalog.js +27 -8
  10. package/dist/server/flow-surfaces/configure-options.js +17 -1
  11. package/dist/server/flow-surfaces/field-binding-registry.js +9 -8
  12. package/dist/server/flow-surfaces/navigation-targets.js +21 -40
  13. package/dist/server/flow-surfaces/service-utils.d.ts +1 -0
  14. package/dist/server/flow-surfaces/service-utils.js +17 -0
  15. package/dist/server/flow-surfaces/service.js +9 -0
  16. package/dist/server/index.d.ts +2 -0
  17. package/dist/server/index.js +7 -0
  18. package/dist/server/plugin.d.ts +13 -0
  19. package/dist/server/plugin.js +90 -3
  20. package/dist/server/repository.d.ts +12 -0
  21. package/dist/server/repository.js +39 -2
  22. package/dist/server/template/context-keys.d.ts +14 -0
  23. package/dist/server/template/context-keys.js +86 -0
  24. package/dist/server/template/contexts.d.ts +5 -8
  25. package/dist/server/template/contexts.js +43 -51
  26. package/dist/server/template/resolver.d.ts +5 -13
  27. package/dist/server/template/resolver.js +188 -257
  28. package/dist/server/template/variable-expression.d.ts +72 -0
  29. package/dist/server/template/variable-expression.js +597 -0
  30. package/dist/server/variables/allow-list.d.ts +49 -0
  31. package/dist/server/variables/allow-list.js +492 -0
  32. package/dist/server/variables/form-item-record-slot-resolvers.d.ts +10 -0
  33. package/dist/server/variables/form-item-record-slot-resolvers.js +280 -0
  34. package/dist/server/variables/record-bindings.d.ts +42 -0
  35. package/dist/server/variables/record-bindings.js +196 -0
  36. package/dist/server/variables/record-projection.d.ts +10 -0
  37. package/dist/server/variables/record-projection.js +140 -0
  38. package/dist/server/variables/record-slot-policy.d.ts +23 -0
  39. package/dist/server/variables/record-slot-policy.js +100 -0
  40. package/dist/server/variables/record-slot-resolvers.d.ts +46 -0
  41. package/dist/server/variables/record-slot-resolvers.js +115 -0
  42. package/dist/server/variables/records.d.ts +49 -2
  43. package/dist/server/variables/records.js +309 -18
  44. package/dist/server/variables/registry.d.ts +33 -10
  45. package/dist/server/variables/registry.js +197 -362
  46. package/dist/server/variables/resolve.d.ts +20 -2
  47. package/dist/server/variables/resolve.js +85 -13
  48. package/dist/server/variables/runjs-variable-dependencies.d.ts +23 -0
  49. package/dist/server/variables/runjs-variable-dependencies.js +407 -0
  50. package/dist/server/variables/selects.js +6 -3
  51. package/dist/server/variables/utils.d.ts +3 -6
  52. package/dist/server/variables/utils.js +50 -111
  53. package/package.json +2 -2
@@ -8,16 +8,16 @@
8
8
  */
9
9
 
10
10
  module.exports = {
11
- "@nocobase/client": "3.0.0-alpha.1",
11
+ "@nocobase/client": "3.0.0-alpha.11",
12
12
  "lodash": "4.18.1",
13
- "@nocobase/database": "3.0.0-alpha.1",
14
- "@nocobase/data-source-manager": "3.0.0-alpha.1",
15
- "@nocobase/resourcer": "3.0.0-alpha.1",
16
- "@nocobase/utils": "3.0.0-alpha.1",
17
- "@nocobase/cache": "3.0.0-alpha.1",
18
- "@nocobase/server": "3.0.0-alpha.1",
19
- "@nocobase/actions": "3.0.0-alpha.1",
13
+ "@nocobase/database": "3.0.0-alpha.11",
14
+ "@nocobase/data-source-manager": "3.0.0-alpha.11",
15
+ "@nocobase/resourcer": "3.0.0-alpha.11",
16
+ "@nocobase/server": "3.0.0-alpha.11",
17
+ "@nocobase/utils": "3.0.0-alpha.11",
18
+ "@nocobase/cache": "3.0.0-alpha.11",
19
+ "@nocobase/actions": "3.0.0-alpha.11",
20
20
  "sequelize": "6.35.2",
21
21
  "@formily/json-schema": "2.3.7",
22
- "@nocobase/ai": "3.0.0-alpha.1"
22
+ "@nocobase/ai": "3.0.0-alpha.11"
23
23
  };
@@ -1 +1 @@
1
- {"name":"@ant-design/icons-svg","version":"4.3.1","sideEffects":false,"description":"Abstract nodes for ant design icons.","contributors":["HeskeyBaozi <hezhiyu233@foxmail.com>"],"homepage":"https://github.com/ant-design/ant-design-icons/","license":"MIT","main":"lib/index.js","module":"es/index.js","files":["lib","es","inline-svg","inline-namespaced-svg"],"repository":{"type":"git","url":"git+https://github.com/ant-design/ant-design-icons.git"},"scripts":{"g":"npm run generate","generate":"cross-env NODE_ENV=production gulp --require ts-node/register/transpile-only","type-check":"tsc --noEmit","build:es":"tsc --project tsconfig.build.json --module esnext --outDir es","build:lib":"tsc --project tsconfig.build.json --module commonjs --outDir lib","build":"cross-env NODE_ENV=production && npm run build:es && npm run build:lib","test":"cross-env NODE_ENV=test && npm run test:unit","test:unit":"jest","prepublishOnly":"npm run test && npm run g && npm run build && npm run type-check && npm run digest","digest":"node scripts/digest.js"},"bugs":{"url":"https://github.com/ant-design/ant-design-icons/issues"},"devDependencies":{"@babel/core":"^7.8.6","@babel/preset-env":"^7.8.6","@babel/preset-typescript":"^7.8.3","@rgrove/parse-xml":"^2.0.2","@types/gulp":"^4.0.6","@types/gulp-concat":"^0.0.32","@types/gulp-rename":"^0.0.33","@types/jest":"^25.1.3","@types/lodash.camelcase":"^4.3.6","@types/lodash.template":"^4.4.6","@types/lodash.upperfirst":"^4.3.6","@types/node":"^13.9.3","@types/ramda":"^0.26.43","@types/rgrove__parse-xml":"^1.1.0","@types/svgo":"^1.3.1","@types/through2":"^2.0.34","@typescript-eslint/eslint-plugin":"^2.21.0","@typescript-eslint/parser":"^2.21.0","babel-jest":"^25.1.0","cross-env":"^7.0.0","del":"^5.1.0","eslint":"^7.16.0","globby":"^11.0.0","gulp":"^4.0.2","gulp-clone":"^2.0.1","gulp-concat":"^2.6.1","gulp-header":"^2.0.9","gulp-rename":"^2.0.0","jest":"^25.1.0","lodash.camelcase":"^4.3.0","lodash.template":"^4.5.0","lodash.upperfirst":"^4.3.1","ramda":"^0.27.0","svgo":"^1.3.2","through2":"^3.0.1","ts-node":"^8.6.2","typescript":"^4.0.0","vinyl":"^2.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_lastModified":"2026-07-30T03:55:35.636Z"}
1
+ {"name":"@ant-design/icons-svg","version":"4.3.1","sideEffects":false,"description":"Abstract nodes for ant design icons.","contributors":["HeskeyBaozi <hezhiyu233@foxmail.com>"],"homepage":"https://github.com/ant-design/ant-design-icons/","license":"MIT","main":"lib/index.js","module":"es/index.js","files":["lib","es","inline-svg","inline-namespaced-svg"],"repository":{"type":"git","url":"git+https://github.com/ant-design/ant-design-icons.git"},"scripts":{"g":"npm run generate","generate":"cross-env NODE_ENV=production gulp --require ts-node/register/transpile-only","type-check":"tsc --noEmit","build:es":"tsc --project tsconfig.build.json --module esnext --outDir es","build:lib":"tsc --project tsconfig.build.json --module commonjs --outDir lib","build":"cross-env NODE_ENV=production && npm run build:es && npm run build:lib","test":"cross-env NODE_ENV=test && npm run test:unit","test:unit":"jest","prepublishOnly":"npm run test && npm run g && npm run build && npm run type-check && npm run digest","digest":"node scripts/digest.js"},"bugs":{"url":"https://github.com/ant-design/ant-design-icons/issues"},"devDependencies":{"@babel/core":"^7.8.6","@babel/preset-env":"^7.8.6","@babel/preset-typescript":"^7.8.3","@rgrove/parse-xml":"^2.0.2","@types/gulp":"^4.0.6","@types/gulp-concat":"^0.0.32","@types/gulp-rename":"^0.0.33","@types/jest":"^25.1.3","@types/lodash.camelcase":"^4.3.6","@types/lodash.template":"^4.4.6","@types/lodash.upperfirst":"^4.3.6","@types/node":"^13.9.3","@types/ramda":"^0.26.43","@types/rgrove__parse-xml":"^1.1.0","@types/svgo":"^1.3.1","@types/through2":"^2.0.34","@typescript-eslint/eslint-plugin":"^2.21.0","@typescript-eslint/parser":"^2.21.0","babel-jest":"^25.1.0","cross-env":"^7.0.0","del":"^5.1.0","eslint":"^7.16.0","globby":"^11.0.0","gulp":"^4.0.2","gulp-clone":"^2.0.1","gulp-concat":"^2.6.1","gulp-header":"^2.0.9","gulp-rename":"^2.0.0","jest":"^25.1.0","lodash.camelcase":"^4.3.0","lodash.template":"^4.5.0","lodash.upperfirst":"^4.3.1","ramda":"^0.27.0","svgo":"^1.3.2","through2":"^3.0.1","ts-node":"^8.6.2","typescript":"^4.0.0","vinyl":"^2.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_lastModified":"2026-08-23T06:22:59.502Z"}
@@ -1 +1 @@
1
- {"name":"acorn","description":"ECMAScript parser","homepage":"https://github.com/acornjs/acorn","main":"dist/acorn.js","types":"dist/acorn.d.ts","module":"dist/acorn.mjs","exports":{".":[{"import":"./dist/acorn.mjs","require":"./dist/acorn.js","default":"./dist/acorn.js"},"./dist/acorn.js"],"./package.json":"./package.json"},"version":"8.11.2","engines":{"node":">=0.4.0"},"maintainers":[{"name":"Marijn Haverbeke","email":"marijnh@gmail.com","web":"https://marijnhaverbeke.nl"},{"name":"Ingvar Stepanyan","email":"me@rreverser.com","web":"https://rreverser.com/"},{"name":"Adrian Heine","web":"http://adrianheine.de"}],"repository":{"type":"git","url":"https://github.com/acornjs/acorn.git"},"license":"MIT","scripts":{"prepare":"cd ..; npm run build:main"},"bin":{"acorn":"./bin/acorn"},"_lastModified":"2026-07-30T03:55:36.698Z"}
1
+ {"name":"acorn","description":"ECMAScript parser","homepage":"https://github.com/acornjs/acorn","main":"dist/acorn.js","types":"dist/acorn.d.ts","module":"dist/acorn.mjs","exports":{".":[{"import":"./dist/acorn.mjs","require":"./dist/acorn.js","default":"./dist/acorn.js"},"./dist/acorn.js"],"./package.json":"./package.json"},"version":"8.11.2","engines":{"node":">=0.4.0"},"maintainers":[{"name":"Marijn Haverbeke","email":"marijnh@gmail.com","web":"https://marijnhaverbeke.nl"},{"name":"Ingvar Stepanyan","email":"me@rreverser.com","web":"https://rreverser.com/"},{"name":"Adrian Heine","web":"http://adrianheine.de"}],"repository":{"type":"git","url":"https://github.com/acornjs/acorn.git"},"license":"MIT","scripts":{"prepare":"cd ..; npm run build:main"},"bin":{"acorn":"./bin/acorn"},"_lastModified":"2026-08-23T06:23:00.461Z"}
@@ -1 +1 @@
1
- {"name":"acorn-jsx","description":"Modern, fast React.js JSX parser","homepage":"https://github.com/acornjs/acorn-jsx","version":"5.3.2","maintainers":[{"name":"Ingvar Stepanyan","email":"me@rreverser.com","web":"http://rreverser.com/"}],"repository":{"type":"git","url":"https://github.com/acornjs/acorn-jsx"},"license":"MIT","scripts":{"test":"node test/run.js"},"peerDependencies":{"acorn":"^6.0.0 || ^7.0.0 || ^8.0.0"},"devDependencies":{"acorn":"^8.0.1"},"_lastModified":"2026-07-30T03:55:37.093Z"}
1
+ {"name":"acorn-jsx","description":"Modern, fast React.js JSX parser","homepage":"https://github.com/acornjs/acorn-jsx","version":"5.3.2","maintainers":[{"name":"Ingvar Stepanyan","email":"me@rreverser.com","web":"http://rreverser.com/"}],"repository":{"type":"git","url":"https://github.com/acornjs/acorn-jsx"},"license":"MIT","scripts":{"test":"node test/run.js"},"peerDependencies":{"acorn":"^6.0.0 || ^7.0.0 || ^8.0.0"},"devDependencies":{"acorn":"^8.0.1"},"_lastModified":"2026-08-23T06:23:00.896Z"}
@@ -1 +1 @@
1
- {"name":"acorn-walk","description":"ECMAScript (ESTree) AST walker","homepage":"https://github.com/acornjs/acorn","main":"dist/walk.js","types":"dist/walk.d.ts","module":"dist/walk.mjs","exports":{".":[{"import":"./dist/walk.mjs","require":"./dist/walk.js","default":"./dist/walk.js"},"./dist/walk.js"],"./package.json":"./package.json"},"version":"8.3.4","engines":{"node":">=0.4.0"},"dependencies":{"acorn":"^8.11.0"},"maintainers":[{"name":"Marijn Haverbeke","email":"marijnh@gmail.com","web":"https://marijnhaverbeke.nl"},{"name":"Ingvar Stepanyan","email":"me@rreverser.com","web":"https://rreverser.com/"},{"name":"Adrian Heine","web":"http://adrianheine.de"}],"repository":{"type":"git","url":"https://github.com/acornjs/acorn.git"},"scripts":{"prepare":"cd ..; npm run build:walk"},"license":"MIT","_lastModified":"2026-07-30T03:55:37.197Z"}
1
+ {"name":"acorn-walk","description":"ECMAScript (ESTree) AST walker","homepage":"https://github.com/acornjs/acorn","main":"dist/walk.js","types":"dist/walk.d.ts","module":"dist/walk.mjs","exports":{".":[{"import":"./dist/walk.mjs","require":"./dist/walk.js","default":"./dist/walk.js"},"./dist/walk.js"],"./package.json":"./package.json"},"version":"8.3.4","engines":{"node":">=0.4.0"},"dependencies":{"acorn":"^8.11.0"},"maintainers":[{"name":"Marijn Haverbeke","email":"marijnh@gmail.com","web":"https://marijnhaverbeke.nl"},{"name":"Ingvar Stepanyan","email":"me@rreverser.com","web":"https://rreverser.com/"},{"name":"Adrian Heine","web":"http://adrianheine.de"}],"repository":{"type":"git","url":"https://github.com/acornjs/acorn.git"},"scripts":{"prepare":"cd ..; npm run build:walk"},"license":"MIT","_lastModified":"2026-08-23T06:23:01.009Z"}
@@ -1 +1 @@
1
- {"name":"ses","version":"1.14.0","description":"Hardened JavaScript for Fearless Cooperation","keywords":["lockdown","harden","Compartment","assert","security","confinement","isolation","object capabilities","ocaps","secure execution","third-party code","prototype pollution","supply-chain attack","plugin"],"author":"Agoric","license":"Apache-2.0","homepage":"https://github.com/Agoric/SES-shim/tree/master/packages/ses#readme","repository":{"type":"git","url":"git+https://github.com/endojs/endo.git","directory":"packages/ses"},"bugs":{"url":"https://github.com/endojs/endo/issues"},"type":"module","main":"./dist/ses.cjs","module":"./index.js","unpkg":"./dist/ses.umd.js","types":"./types.d.ts","exports":{".":{"import":{"types":"./types.d.ts","xs":"./src-xs/index.js","default":"./index.js"},"require":{"types":"./dist/types.d.cts","default":"./dist/ses.cjs"}},"./lockdown":{"import":{"types":"./types.d.ts","default":"./index.js"},"require":{"types":"./dist/types.d.cts","default":"./dist/ses.cjs"}},"./hermes":{"require":{"types":"./dist/types.d.cts","default":"./dist/ses-hermes.cjs"}},"./tools.js":"./tools.js","./assert-shim.js":"./assert-shim.js","./lockdown-shim.js":{"xs":"./src-xs/lockdown-shim.js","default":"./lockdown-shim.js"},"./compartment-shim.js":{"xs":"./src-xs/compartment-shim.js","default":"./compartment-shim.js"},"./console-shim.js":"./console-shim.js","./package.json":"./package.json"},"scripts":{"build:vanilla":"node scripts/bundle.js","build:hermes":"node scripts/bundle.js hermes","build":"yarn build:vanilla && yarn build:hermes","clean":"rm -rf dist","cover":"c8 ava","demo":"python3 -m http.server","lint":"yarn lint:types && yarn lint:eslint","lint-fix":"eslint --fix .","lint:eslint":"eslint .","lint:types":"tsc","prepare":"npm run clean && npm run build","qt":"ava","test":"tsd && ava","test:hermes":"./scripts/hermes-test.sh","test:xs":"xst dist/ses.umd.js test/_lockdown-safe.js && node scripts/generate-test-xs.js && xst tmp/test-xs.js && rm -rf tmp","postpack":"git clean -fX \"*.d.ts*\" \"*.d.cts*\" \"*.d.mts*\" \"*.tsbuildinfo\""},"dependencies":{"@endo/cache-map":"^1.1.0","@endo/env-options":"^1.1.11","@endo/immutable-arraybuffer":"^1.1.2"},"devDependencies":{"@babel/generator":"^7.26.3","@babel/parser":"~7.26.2","@babel/traverse":"~7.25.9","@babel/types":"~7.26.0","@endo/compartment-mapper":"^1.6.3","@endo/module-source":"^1.3.3","@endo/test262-runner":"^0.1.48","@types/babel__traverse":"^7.20.5","ava":"^6.1.3","babel-eslint":"^10.1.0","c8":"^7.14.0","core-js":"^3.31.0","eslint":"^8.57.1","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^9.1.0","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-import":"^2.31.0","hermes-engine-cli":"^0.12.0","prettier":"^3.5.3","terser":"^5.16.6","tsd":"^0.31.2","typescript":"~5.8.3"},"files":["./*.d.ts","./*.js","./*.map","LICENSE*","SECURITY*","dist","lib","src","tools"],"publishConfig":{"access":"public"},"eslintConfig":{"extends":["plugin:@endo/ses"]},"ava":{"files":["test/**/*.test.*"],"timeout":"2m"},"typeCoverage":{"atLeast":81.17},"gitHead":"9815aea9541f241389d2135c6097a7442bdffa17","_lastModified":"2026-07-30T03:55:36.294Z"}
1
+ {"name":"ses","version":"1.14.0","description":"Hardened JavaScript for Fearless Cooperation","keywords":["lockdown","harden","Compartment","assert","security","confinement","isolation","object capabilities","ocaps","secure execution","third-party code","prototype pollution","supply-chain attack","plugin"],"author":"Agoric","license":"Apache-2.0","homepage":"https://github.com/Agoric/SES-shim/tree/master/packages/ses#readme","repository":{"type":"git","url":"git+https://github.com/endojs/endo.git","directory":"packages/ses"},"bugs":{"url":"https://github.com/endojs/endo/issues"},"type":"module","main":"./dist/ses.cjs","module":"./index.js","unpkg":"./dist/ses.umd.js","types":"./types.d.ts","exports":{".":{"import":{"types":"./types.d.ts","xs":"./src-xs/index.js","default":"./index.js"},"require":{"types":"./dist/types.d.cts","default":"./dist/ses.cjs"}},"./lockdown":{"import":{"types":"./types.d.ts","default":"./index.js"},"require":{"types":"./dist/types.d.cts","default":"./dist/ses.cjs"}},"./hermes":{"require":{"types":"./dist/types.d.cts","default":"./dist/ses-hermes.cjs"}},"./tools.js":"./tools.js","./assert-shim.js":"./assert-shim.js","./lockdown-shim.js":{"xs":"./src-xs/lockdown-shim.js","default":"./lockdown-shim.js"},"./compartment-shim.js":{"xs":"./src-xs/compartment-shim.js","default":"./compartment-shim.js"},"./console-shim.js":"./console-shim.js","./package.json":"./package.json"},"scripts":{"build:vanilla":"node scripts/bundle.js","build:hermes":"node scripts/bundle.js hermes","build":"yarn build:vanilla && yarn build:hermes","clean":"rm -rf dist","cover":"c8 ava","demo":"python3 -m http.server","lint":"yarn lint:types && yarn lint:eslint","lint-fix":"eslint --fix .","lint:eslint":"eslint .","lint:types":"tsc","prepare":"npm run clean && npm run build","qt":"ava","test":"tsd && ava","test:hermes":"./scripts/hermes-test.sh","test:xs":"xst dist/ses.umd.js test/_lockdown-safe.js && node scripts/generate-test-xs.js && xst tmp/test-xs.js && rm -rf tmp","postpack":"git clean -fX \"*.d.ts*\" \"*.d.cts*\" \"*.d.mts*\" \"*.tsbuildinfo\""},"dependencies":{"@endo/cache-map":"^1.1.0","@endo/env-options":"^1.1.11","@endo/immutable-arraybuffer":"^1.1.2"},"devDependencies":{"@babel/generator":"^7.26.3","@babel/parser":"~7.26.2","@babel/traverse":"~7.25.9","@babel/types":"~7.26.0","@endo/compartment-mapper":"^1.6.3","@endo/module-source":"^1.3.3","@endo/test262-runner":"^0.1.48","@types/babel__traverse":"^7.20.5","ava":"^6.1.3","babel-eslint":"^10.1.0","c8":"^7.14.0","core-js":"^3.31.0","eslint":"^8.57.1","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^9.1.0","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-import":"^2.31.0","hermes-engine-cli":"^0.12.0","prettier":"^3.5.3","terser":"^5.16.6","tsd":"^0.31.2","typescript":"~5.8.3"},"files":["./*.d.ts","./*.js","./*.map","LICENSE*","SECURITY*","dist","lib","src","tools"],"publishConfig":{"access":"public"},"eslintConfig":{"extends":["plugin:@endo/ses"]},"ava":{"files":["test/**/*.test.*"],"timeout":"2m"},"typeCoverage":{"atLeast":81.17},"gitHead":"9815aea9541f241389d2135c6097a7442bdffa17","_lastModified":"2026-08-23T06:23:00.045Z"}
@@ -1 +1 @@
1
- {"name":"zod","version":"4.3.5","type":"module","license":"MIT","author":"Colin McDonnell <zod@colinhacks.com>","description":"TypeScript-first schema declaration and validation library with static type inference","homepage":"https://zod.dev","llms":"https://zod.dev/llms.txt","llmsFull":"https://zod.dev/llms-full.txt","mcpServer":"https://mcp.inkeep.com/zod/mcp","funding":"https://github.com/sponsors/colinhacks","sideEffects":false,"files":["src","**/*.js","**/*.mjs","**/*.cjs","**/*.d.ts","**/*.d.mts","**/*.d.cts","**/package.json"],"keywords":["typescript","schema","validation","type","inference"],"main":"./index.cjs","types":"./index.d.cts","module":"./index.js","zshy":{"exports":{"./package.json":"./package.json",".":"./src/index.ts","./mini":"./src/mini/index.ts","./locales":"./src/locales/index.ts","./v3":"./src/v3/index.ts","./v4":"./src/v4/index.ts","./v4-mini":"./src/v4-mini/index.ts","./v4/mini":"./src/v4/mini/index.ts","./v4/core":"./src/v4/core/index.ts","./v4/locales":"./src/v4/locales/index.ts","./v4/locales/*":"./src/v4/locales/*"},"conditions":{"@zod/source":"src"}},"exports":{"./package.json":"./package.json",".":{"@zod/source":"./src/index.ts","types":"./index.d.cts","import":"./index.js","require":"./index.cjs"},"./mini":{"@zod/source":"./src/mini/index.ts","types":"./mini/index.d.cts","import":"./mini/index.js","require":"./mini/index.cjs"},"./locales":{"@zod/source":"./src/locales/index.ts","types":"./locales/index.d.cts","import":"./locales/index.js","require":"./locales/index.cjs"},"./v3":{"@zod/source":"./src/v3/index.ts","types":"./v3/index.d.cts","import":"./v3/index.js","require":"./v3/index.cjs"},"./v4":{"@zod/source":"./src/v4/index.ts","types":"./v4/index.d.cts","import":"./v4/index.js","require":"./v4/index.cjs"},"./v4-mini":{"@zod/source":"./src/v4-mini/index.ts","types":"./v4-mini/index.d.cts","import":"./v4-mini/index.js","require":"./v4-mini/index.cjs"},"./v4/mini":{"@zod/source":"./src/v4/mini/index.ts","types":"./v4/mini/index.d.cts","import":"./v4/mini/index.js","require":"./v4/mini/index.cjs"},"./v4/core":{"@zod/source":"./src/v4/core/index.ts","types":"./v4/core/index.d.cts","import":"./v4/core/index.js","require":"./v4/core/index.cjs"},"./v4/locales":{"@zod/source":"./src/v4/locales/index.ts","types":"./v4/locales/index.d.cts","import":"./v4/locales/index.js","require":"./v4/locales/index.cjs"},"./v4/locales/*":{"@zod/source":"./src/v4/locales/*","types":"./v4/locales/*","import":"./v4/locales/*","require":"./v4/locales/*"}},"repository":{"type":"git","url":"git+https://github.com/colinhacks/zod.git"},"bugs":{"url":"https://github.com/colinhacks/zod/issues"},"support":{"backing":{"npm-funding":true}},"scripts":{"clean":"git clean -xdf . -e node_modules","build":"zshy --project tsconfig.build.json","postbuild":"tsx ../../scripts/write-stub-package-jsons.ts && pnpm biome check --write .","test:watch":"pnpm vitest","test":"pnpm vitest run","prepublishOnly":"tsx ../../scripts/check-versions.ts"},"_lastModified":"2026-07-30T03:55:38.130Z"}
1
+ {"name":"zod","version":"4.3.5","type":"module","license":"MIT","author":"Colin McDonnell <zod@colinhacks.com>","description":"TypeScript-first schema declaration and validation library with static type inference","homepage":"https://zod.dev","llms":"https://zod.dev/llms.txt","llmsFull":"https://zod.dev/llms-full.txt","mcpServer":"https://mcp.inkeep.com/zod/mcp","funding":"https://github.com/sponsors/colinhacks","sideEffects":false,"files":["src","**/*.js","**/*.mjs","**/*.cjs","**/*.d.ts","**/*.d.mts","**/*.d.cts","**/package.json"],"keywords":["typescript","schema","validation","type","inference"],"main":"./index.cjs","types":"./index.d.cts","module":"./index.js","zshy":{"exports":{"./package.json":"./package.json",".":"./src/index.ts","./mini":"./src/mini/index.ts","./locales":"./src/locales/index.ts","./v3":"./src/v3/index.ts","./v4":"./src/v4/index.ts","./v4-mini":"./src/v4-mini/index.ts","./v4/mini":"./src/v4/mini/index.ts","./v4/core":"./src/v4/core/index.ts","./v4/locales":"./src/v4/locales/index.ts","./v4/locales/*":"./src/v4/locales/*"},"conditions":{"@zod/source":"src"}},"exports":{"./package.json":"./package.json",".":{"@zod/source":"./src/index.ts","types":"./index.d.cts","import":"./index.js","require":"./index.cjs"},"./mini":{"@zod/source":"./src/mini/index.ts","types":"./mini/index.d.cts","import":"./mini/index.js","require":"./mini/index.cjs"},"./locales":{"@zod/source":"./src/locales/index.ts","types":"./locales/index.d.cts","import":"./locales/index.js","require":"./locales/index.cjs"},"./v3":{"@zod/source":"./src/v3/index.ts","types":"./v3/index.d.cts","import":"./v3/index.js","require":"./v3/index.cjs"},"./v4":{"@zod/source":"./src/v4/index.ts","types":"./v4/index.d.cts","import":"./v4/index.js","require":"./v4/index.cjs"},"./v4-mini":{"@zod/source":"./src/v4-mini/index.ts","types":"./v4-mini/index.d.cts","import":"./v4-mini/index.js","require":"./v4-mini/index.cjs"},"./v4/mini":{"@zod/source":"./src/v4/mini/index.ts","types":"./v4/mini/index.d.cts","import":"./v4/mini/index.js","require":"./v4/mini/index.cjs"},"./v4/core":{"@zod/source":"./src/v4/core/index.ts","types":"./v4/core/index.d.cts","import":"./v4/core/index.js","require":"./v4/core/index.cjs"},"./v4/locales":{"@zod/source":"./src/v4/locales/index.ts","types":"./v4/locales/index.d.cts","import":"./v4/locales/index.js","require":"./v4/locales/index.cjs"},"./v4/locales/*":{"@zod/source":"./src/v4/locales/*","types":"./v4/locales/*","import":"./v4/locales/*","require":"./v4/locales/*"}},"repository":{"type":"git","url":"git+https://github.com/colinhacks/zod.git"},"bugs":{"url":"https://github.com/colinhacks/zod/issues"},"support":{"backing":{"npm-funding":true}},"scripts":{"clean":"git clean -xdf . -e node_modules","build":"zshy --project tsconfig.build.json","postbuild":"tsx ../../scripts/write-stub-package-jsons.ts && pnpm biome check --write .","test:watch":"pnpm vitest","test":"pnpm vitest run","prepublishOnly":"tsx ../../scripts/check-versions.ts"},"_lastModified":"2026-08-23T06:23:02.170Z"}
@@ -898,6 +898,11 @@ function buildActionDefaults(options) {
898
898
  },
899
899
  assignFieldValues: {
900
900
  assignedValues: {}
901
+ },
902
+ afterSuccess: {
903
+ successMessage: '{{t("Saved successfully")}}',
904
+ manualClose: false,
905
+ actionAfterSuccess: "stay"
901
906
  }
902
907
  };
903
908
  stepParams.apply = {
@@ -172,6 +172,21 @@ const OPEN_VIEW_PATH_SCHEMAS = {
172
172
  "openView.tryTemplate": BOOLEAN_SCHEMA
173
173
  };
174
174
  const CONFIRM_ALLOWED_PATHS = ["confirm.enable", "confirm.title", "confirm.content"];
175
+ const AFTER_SUCCESS_ALLOWED_PATHS = [
176
+ "afterSuccess.successMessage",
177
+ "afterSuccess.manualClose",
178
+ "afterSuccess.actionAfterSuccess",
179
+ "afterSuccess.redirectTo"
180
+ ];
181
+ const AFTER_SUCCESS_PATH_SCHEMAS = {
182
+ "afterSuccess.successMessage": STRING_SCHEMA,
183
+ "afterSuccess.manualClose": BOOLEAN_SCHEMA,
184
+ "afterSuccess.actionAfterSuccess": {
185
+ type: "string",
186
+ enum: ["stay", "previous", "redirect"]
187
+ },
188
+ "afterSuccess.redirectTo": STRING_SCHEMA
189
+ };
175
190
  const TABLE_COLUMN_BASE_ALLOWED_PATHS = ["title.title"];
176
191
  const TABLE_FIELD_COLUMN_ALLOWED_PATHS = [...TABLE_COLUMN_BASE_ALLOWED_PATHS, "fieldNames.label"];
177
192
  const FILTER_FORM_ITEM_ALLOWED_PATHS = [
@@ -1974,7 +1989,7 @@ const UPDATE_RECORD_ACTION_CONTRACT = createContract({
1974
1989
  stepKeys: ["general", "linkageRules"]
1975
1990
  },
1976
1991
  assignSettings: {
1977
- stepKeys: ["confirm", "assignFieldValues"]
1992
+ stepKeys: ["confirm", "assignFieldValues", "afterSuccess"]
1978
1993
  },
1979
1994
  apply: {
1980
1995
  stepKeys: ["apply"]
@@ -1992,16 +2007,18 @@ UPDATE_RECORD_ACTION_CONTRACT.domains.stepParams = groupedDomain({
1992
2007
  "confirm.title",
1993
2008
  "confirm.content",
1994
2009
  "assignFieldValues.assignedValues",
1995
- "assignFieldValues.assignedValues.*"
2010
+ "assignFieldValues.assignedValues.*",
2011
+ ...AFTER_SUCCESS_ALLOWED_PATHS
1996
2012
  ],
1997
2013
  clearable: true,
1998
2014
  mergeStrategy: "deep",
1999
- eventBindingSteps: ["confirm", "assignFieldValues"],
2015
+ eventBindingSteps: ["confirm", "assignFieldValues", "afterSuccess"],
2000
2016
  pathSchemas: {
2001
2017
  "confirm.enable": BOOLEAN_SCHEMA,
2002
2018
  "confirm.title": STRING_SCHEMA,
2003
2019
  "confirm.content": STRING_SCHEMA,
2004
- "assignFieldValues.assignedValues": OBJECT_SCHEMA
2020
+ "assignFieldValues.assignedValues": OBJECT_SCHEMA,
2021
+ ...AFTER_SUCCESS_PATH_SCHEMAS
2005
2022
  }
2006
2023
  },
2007
2024
  apply: {
@@ -2126,7 +2143,7 @@ const BULK_UPDATE_ACTION_CONTRACT = createContract({
2126
2143
  stepKeys: ["general", "linkageRules"]
2127
2144
  },
2128
2145
  assignSettings: {
2129
- stepKeys: ["confirm", "updateMode", "assignFieldValues"]
2146
+ stepKeys: ["confirm", "updateMode", "assignFieldValues", "afterSuccess"]
2130
2147
  },
2131
2148
  apply: {
2132
2149
  stepKeys: ["apply"]
@@ -2142,17 +2159,19 @@ BULK_UPDATE_ACTION_CONTRACT.domains.stepParams = groupedDomain({
2142
2159
  "confirm.content",
2143
2160
  "updateMode.value",
2144
2161
  "assignFieldValues.assignedValues",
2145
- "assignFieldValues.assignedValues.*"
2162
+ "assignFieldValues.assignedValues.*",
2163
+ ...AFTER_SUCCESS_ALLOWED_PATHS
2146
2164
  ],
2147
2165
  clearable: true,
2148
2166
  mergeStrategy: "deep",
2149
- eventBindingSteps: ["confirm", "updateMode", "assignFieldValues"],
2167
+ eventBindingSteps: ["confirm", "updateMode", "assignFieldValues", "afterSuccess"],
2150
2168
  pathSchemas: {
2151
2169
  "confirm.enable": BOOLEAN_SCHEMA,
2152
2170
  "confirm.title": STRING_SCHEMA,
2153
2171
  "confirm.content": STRING_SCHEMA,
2154
2172
  "updateMode.value": STRING_SCHEMA,
2155
- "assignFieldValues.assignedValues": OBJECT_SCHEMA
2173
+ "assignFieldValues.assignedValues": OBJECT_SCHEMA,
2174
+ ...AFTER_SUCCESS_PATH_SCHEMAS
2156
2175
  }
2157
2176
  },
2158
2177
  apply: {
@@ -578,6 +578,16 @@ const ACTION_ASSIGN_OPTIONS = {
578
578
  assignValues: objectOption("Bulk or single-record assigned values", { example: { status: "published" } }),
579
579
  updateMode: stringOption("Update mode", { example: "overwrite" })
580
580
  };
581
+ const ACTION_AFTER_SUCCESS_OPTIONS = {
582
+ afterSuccess: objectOption("Action after a successful update", {
583
+ example: {
584
+ successMessage: "Saved successfully",
585
+ manualClose: false,
586
+ actionAfterSuccess: "stay",
587
+ redirectTo: "/admin/example"
588
+ }
589
+ })
590
+ };
581
591
  const ACTION_TRIGGER_WORKFLOWS_OPTIONS = {
582
592
  triggerWorkflows: arrayOption("Workflow bindings for submit/update actions", {
583
593
  example: [{ workflowKey: "workflow-key", context: "department" }]
@@ -748,11 +758,17 @@ function getActionConfigureOptionsByUse(use) {
748
758
  return merged(
749
759
  ACTION_CONFIRM_OPTIONS,
750
760
  ACTION_ASSIGN_OPTIONS,
761
+ ACTION_AFTER_SUCCESS_OPTIONS,
751
762
  ACTION_TRIGGER_WORKFLOWS_OPTIONS,
752
763
  ACTION_LINKAGE_OPTIONS
753
764
  );
754
765
  case "BulkUpdateActionModel":
755
- return merged(ACTION_CONFIRM_OPTIONS, ACTION_ASSIGN_OPTIONS, ACTION_LINKAGE_OPTIONS);
766
+ return merged(
767
+ ACTION_CONFIRM_OPTIONS,
768
+ ACTION_ASSIGN_OPTIONS,
769
+ ACTION_AFTER_SUCCESS_OPTIONS,
770
+ ACTION_LINKAGE_OPTIONS
771
+ );
756
772
  case "BulkEditActionModel":
757
773
  return merged(ACTION_EDIT_MODE_OPTIONS, ACTION_LINKAGE_OPTIONS);
758
774
  case "DuplicateActionModel":
@@ -58,14 +58,7 @@ function isNumericFormulaDataType(dataType) {
58
58
  return ["integer", "bigInt", "double", "decimal", "number"].includes(String(dataType || "").trim());
59
59
  }
60
60
  function resolveTargetCollection(input) {
61
- var _a;
62
- if ((_a = input.field) == null ? void 0 : _a.targetCollection) {
63
- return input.field.targetCollection;
64
- }
65
- if (!input.getCollection || !input.dataSourceKey) {
66
- return null;
67
- }
68
- return (0, import_service_helpers.resolveFieldTargetCollection)(input.field, input.dataSourceKey, input.getCollection);
61
+ return (0, import_service_helpers.resolveFieldTargetCollection)(input.field, input.dataSourceKey || "main", input.getCollection || (() => null));
69
62
  }
70
63
  function normalizeBindingContainerUse(containerUse) {
71
64
  const normalized = String(containerUse || "").trim();
@@ -100,6 +93,14 @@ function selectPreferredDefaultRule(rules) {
100
93
  return rules.find((rule) => typeof rule.when === "function") || rules[0];
101
94
  }
102
95
  const FIELD_BINDING_RULE_DEFINITIONS = [
96
+ {
97
+ scope: "filter",
98
+ modelClassName: "CascadeSelectFieldModel",
99
+ interfaces: ["m2o", "o2o", "oho", "obo"],
100
+ isDefault: true,
101
+ order: 60,
102
+ when: ({ targetCollection }) => getCollectionTemplate(targetCollection) === "tree"
103
+ },
103
104
  {
104
105
  scope: "display",
105
106
  modelClassName: "DisplayPreviewFieldModel",
@@ -62,6 +62,14 @@ function normalizeRelationRouteId(routeId) {
62
62
  function isDefaultLayoutMultiPortalUid(uid) {
63
63
  return uid === DEFAULT_ADMIN_MULTI_PORTAL_UID || uid === DEFAULT_MOBILE_MULTI_PORTAL_UID;
64
64
  }
65
+ function getMultiPortalLayoutType(uiLayoutUid) {
66
+ if (uiLayoutUid === DEFAULT_ADMIN_UI_LAYOUT_UID) {
67
+ return "desktop";
68
+ }
69
+ if (uiLayoutUid === DEFAULT_MOBILE_UI_LAYOUT_UID) {
70
+ return "mobile";
71
+ }
72
+ }
65
73
  class FlowSurfaceNavigationTargetsService {
66
74
  constructor(db) {
67
75
  this.db = db;
@@ -234,38 +242,14 @@ class FlowSurfaceNavigationTargetsService {
234
242
  });
235
243
  }
236
244
  const layoutUid = readStringField(portal, "uiLayoutUid");
237
- if (!layoutUid || !this.db.getCollection("uiLayouts")) {
238
- (0, import_errors.throwBadRequest)(`flowSurfaces ${options.actionName} portal '${portalUid}' has no available backing UI layout`, {
245
+ const layoutType = getMultiPortalLayoutType(layoutUid);
246
+ if (!layoutUid || !layoutType) {
247
+ (0, import_errors.throwBadRequest)(`flowSurfaces ${options.actionName} portal '${portalUid}' has an unsupported UI layout uid`, {
239
248
  ruleId: "navigation-portal-layout-not-found",
240
249
  path: options.path,
241
250
  details: { portalUid, layoutUid: layoutUid || null }
242
251
  });
243
252
  }
244
- const layout = await this.db.getRepository("uiLayouts").findOne({
245
- filter: { uid: layoutUid },
246
- fields: ["uid", "layoutType", "enabled"],
247
- transaction: options.transaction
248
- });
249
- if (!layout) {
250
- (0, import_errors.throwBadRequest)(
251
- `flowSurfaces ${options.actionName} portal '${portalUid}' backing UI layout '${layoutUid}' does not exist`,
252
- {
253
- ruleId: "navigation-portal-layout-not-found",
254
- path: options.path,
255
- details: { portalUid, layoutUid }
256
- }
257
- );
258
- }
259
- if (readRecordField(layout, "enabled") !== true) {
260
- (0, import_errors.throwBadRequest)(
261
- `flowSurfaces ${options.actionName} portal '${portalUid}' backing UI layout '${layoutUid}' is disabled`,
262
- {
263
- ruleId: "navigation-portal-layout-disabled",
264
- path: options.path,
265
- details: { portalUid, layoutUid }
266
- }
267
- );
268
- }
269
253
  return {
270
254
  uid: portalUid,
271
255
  title: readStringField(portal, "title") || portalUid,
@@ -275,7 +259,7 @@ class FlowSurfaceNavigationTargetsService {
275
259
  authCheck: readRecordField(portal, "authCheck") === true,
276
260
  enabled: true,
277
261
  layoutUid,
278
- layoutType: readStringField(layout, "layoutType"),
262
+ layoutType,
279
263
  portalType,
280
264
  routeScopeKind
281
265
  };
@@ -378,12 +362,16 @@ class FlowSurfaceNavigationTargetsService {
378
362
  });
379
363
  }
380
364
  async getEnabledPortalInventory(currentRoles, transaction) {
381
- const enabled = await this.db.getRepository("multiPortals").find({
365
+ const records = await this.db.getRepository("multiPortals").find({
382
366
  filter: { enabled: true },
383
367
  fields: ["uid", "title", "icon", "portalType", "portalName", "routePath", "authCheck", "enabled", "uiLayoutUid"],
384
368
  sort: ["uid"],
385
369
  transaction
386
370
  });
371
+ const enabled = records.filter((portal) => {
372
+ const uiLayoutUid = readStringField(portal, "uiLayoutUid");
373
+ return !!getMultiPortalLayoutType(uiLayoutUid);
374
+ });
387
375
  enabled.sort(
388
376
  (left, right) => String(readStringField(left, "uid") || "").localeCompare(String(readStringField(right, "uid") || ""))
389
377
  );
@@ -409,7 +397,7 @@ class FlowSurfaceNavigationTargetsService {
409
397
  });
410
398
  return { enabled, accessible };
411
399
  }
412
- async listAccessiblePortalTargets(portals, transaction) {
400
+ async listAccessiblePortalTargets(portals, _transaction) {
413
401
  const targets = [];
414
402
  for (const portal of portals) {
415
403
  const portalUid = readStringField(portal, "uid");
@@ -418,15 +406,8 @@ class FlowSurfaceNavigationTargetsService {
418
406
  if (!portalUid || portalType !== "no-code") {
419
407
  continue;
420
408
  }
421
- if (!layoutUid || !this.db.getCollection("uiLayouts")) {
422
- continue;
423
- }
424
- const layout = await this.db.getRepository("uiLayouts").findOne({
425
- filter: { uid: layoutUid, enabled: true },
426
- fields: ["layoutType"],
427
- transaction
428
- });
429
- if (!layout) {
409
+ const layoutType = getMultiPortalLayoutType(layoutUid);
410
+ if (!layoutUid || !layoutType) {
430
411
  continue;
431
412
  }
432
413
  targets.push({
@@ -436,7 +417,7 @@ class FlowSurfaceNavigationTargetsService {
436
417
  title: readStringField(portal, "title") || portalUid,
437
418
  icon: readStringField(portal, "icon") || null,
438
419
  layoutUid,
439
- layoutType: readStringField(layout, "layoutType"),
420
+ layoutType,
440
421
  routeName: readStringField(portal, "portalName"),
441
422
  routePath: readStringField(portal, "routePath"),
442
423
  authCheck: readRecordField(portal, "authCheck") === true
@@ -98,6 +98,7 @@ export declare function joinRequiredFieldPaths(paths: string[]): string;
98
98
  export declare function normalizeSimpleLayoutValue(layout: any): any;
99
99
  export declare function normalizeGridCardColumns(columns: any): _.Dictionary<any>;
100
100
  export declare function normalizeSimpleConfirm(confirm: any): _.Dictionary<any>;
101
+ export declare function normalizeAfterSuccess(afterSuccess: unknown): _.Dictionary<any>;
101
102
  export declare function assertSupportedSimpleChanges(context: string, changes: Record<string, any>, allowedKeys: string[]): void;
102
103
  export declare function hasLegacyLocatorFields(input: any, options?: {
103
104
  allowRootUid?: boolean;
@@ -59,6 +59,7 @@ __export(service_utils_exports, {
59
59
  isFieldNodeUse: () => isFieldNodeUse,
60
60
  isMissingRequiredResourceInitValue: () => isMissingRequiredResourceInitValue,
61
61
  joinRequiredFieldPaths: () => joinRequiredFieldPaths,
62
+ normalizeAfterSuccess: () => normalizeAfterSuccess,
62
63
  normalizeBlockTitleDescription: () => normalizeBlockTitleDescription,
63
64
  normalizeBlockTitleDescriptionValue: () => normalizeBlockTitleDescriptionValue,
64
65
  normalizeChartCardHeightModeForWrite: () => normalizeChartCardHeightModeForWrite,
@@ -598,6 +599,21 @@ function normalizeSimpleConfirm(confirm) {
598
599
  }
599
600
  (0, import_errors.throwBadRequest)("flowSurfaces configure confirm must be a boolean or object");
600
601
  }
602
+ function normalizeAfterSuccess(afterSuccess) {
603
+ if (!import_lodash.default.isPlainObject(afterSuccess)) {
604
+ (0, import_errors.throwBadRequest)("flowSurfaces configure afterSuccess must be an object");
605
+ }
606
+ const input = afterSuccess;
607
+ if (input.actionAfterSuccess !== void 0 && !["stay", "previous", "redirect"].includes(String(input.actionAfterSuccess))) {
608
+ (0, import_errors.throwBadRequest)("flowSurfaces configure afterSuccess.actionAfterSuccess must be stay, previous, or redirect");
609
+ }
610
+ return buildDefinedPayload({
611
+ successMessage: input.successMessage,
612
+ manualClose: input.manualClose,
613
+ actionAfterSuccess: input.actionAfterSuccess,
614
+ redirectTo: input.redirectTo
615
+ });
616
+ }
601
617
  function assertSupportedSimpleChanges(context, changes, allowedKeys) {
602
618
  const unknownKeys = Object.keys(changes).filter((key) => !allowedKeys.includes(key));
603
619
  if (!unknownKeys.length) {
@@ -881,6 +897,7 @@ function getFieldBindingDefaultProps(containerUse, fieldUse, field) {
881
897
  isFieldNodeUse,
882
898
  isMissingRequiredResourceInitValue,
883
899
  joinRequiredFieldPaths,
900
+ normalizeAfterSuccess,
884
901
  normalizeBlockTitleDescription,
885
902
  normalizeBlockTitleDescriptionValue,
886
903
  normalizeChartCardHeightModeForWrite,
@@ -19872,6 +19872,15 @@ ${AI_EMPLOYEE_CURRENT_RECORD_PROMPT_VARIABLE}` : AI_EMPLOYEE_CURRENT_RECORD_PROM
19872
19872
  (0, import_errors.throwBadRequest)(`flowSurfaces configure action '${use}' does not support confirm`);
19873
19873
  }
19874
19874
  }
19875
+ if ((0, import_service_utils.hasOwnDefined)(changes, "afterSuccess")) {
19876
+ if (!UPDATE_ASSIGN_ACTION_USES.has(use)) {
19877
+ (0, import_errors.throwBadRequest)(`flowSurfaces configure action '${use}' does not support afterSuccess`);
19878
+ }
19879
+ stepParams.assignSettings = {
19880
+ ...stepParams.assignSettings || {},
19881
+ afterSuccess: (0, import_service_utils.normalizeAfterSuccess)(changes.afterSuccess)
19882
+ };
19883
+ }
19875
19884
  if ((0, import_service_utils.hasOwnDefined)(changes, "assignValues")) {
19876
19885
  const assignValues = this.normalizeActionAssignValues("configure", changes.assignValues);
19877
19886
  if (APPROVAL_ASSIGN_ACTION_USES.has(use)) {
@@ -9,3 +9,5 @@
9
9
  export { default } from './plugin';
10
10
  export { FlowModelRepository } from './repository';
11
11
  export { resolveVariablesBatch, resolveVariablesTemplate } from './variables/resolve';
12
+ export { createNestedRecordSlotResolver, getRecordSlotResolverRegistry, RecordSlotResolverRegistry, } from './variables/record-slot-resolvers';
13
+ export type { RecordSlotResolved, RecordSlotResolverInput, RecordSlotResolverRegistration, RecordSlotResolverResult, } from './variables/record-slot-resolvers';
@@ -37,7 +37,10 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
37
37
  var server_exports = {};
38
38
  __export(server_exports, {
39
39
  FlowModelRepository: () => import_repository.FlowModelRepository,
40
+ RecordSlotResolverRegistry: () => import_record_slot_resolvers.RecordSlotResolverRegistry,
41
+ createNestedRecordSlotResolver: () => import_record_slot_resolvers.createNestedRecordSlotResolver,
40
42
  default: () => import_plugin.default,
43
+ getRecordSlotResolverRegistry: () => import_record_slot_resolvers.getRecordSlotResolverRegistry,
41
44
  resolveVariablesBatch: () => import_resolve.resolveVariablesBatch,
42
45
  resolveVariablesTemplate: () => import_resolve.resolveVariablesTemplate
43
46
  });
@@ -45,9 +48,13 @@ module.exports = __toCommonJS(server_exports);
45
48
  var import_plugin = __toESM(require("./plugin"));
46
49
  var import_repository = require("./repository");
47
50
  var import_resolve = require("./variables/resolve");
51
+ var import_record_slot_resolvers = require("./variables/record-slot-resolvers");
48
52
  // Annotate the CommonJS export names for ESM import in node:
49
53
  0 && (module.exports = {
50
54
  FlowModelRepository,
55
+ RecordSlotResolverRegistry,
56
+ createNestedRecordSlotResolver,
57
+ getRecordSlotResolverRegistry,
51
58
  resolveVariablesBatch,
52
59
  resolveVariablesTemplate
53
60
  });
@@ -6,16 +6,29 @@
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
+ import type { ResourcerContext } from '@nocobase/resourcer';
9
10
  import PluginUISchemaStorageServer from './server';
11
+ import { JSONValue } from './template/resolver';
10
12
  export declare class PluginFlowEngineServer extends PluginUISchemaStorageServer {
13
+ private recordSlotResolverDisposers;
11
14
  afterAdd(): Promise<void>;
12
15
  beforeLoad(): Promise<void>;
13
16
  getDatabaseByDataSourceKey(dataSourceKey?: string): import("@nocobase/database").default;
14
17
  runSQLByDataSourceKey(dataSourceKey: string | undefined, sql: string, options?: Record<string, unknown>): Promise<any>;
18
+ resolveFlowModelVariablesTemplate(ctx: ResourcerContext, options: {
19
+ contractRd?: string | number;
20
+ contextParams?: Record<string, unknown>;
21
+ rd?: string | number;
22
+ template: JSONValue;
23
+ }): Promise<any>;
24
+ isLegacyVariableTemplateSafe(template: JSONValue): boolean;
15
25
  load(): Promise<void>;
16
26
  install(): Promise<void>;
17
27
  afterEnable(): Promise<void>;
18
28
  afterDisable(): Promise<void>;
19
29
  remove(): Promise<void>;
30
+ private disposeRecordSlotResolvers;
31
+ private registerRecordSlotResolvers;
32
+ private ensureRecordSlotResolvers;
20
33
  }
21
34
  export default PluginFlowEngineServer;