@nocobase/plugin-flow-engine 3.0.0-alpha.1 → 3.0.0-alpha.12
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.
- package/dist/externalVersion.js +9 -9
- package/dist/node_modules/@ant-design/icons-svg/package.json +1 -1
- package/dist/node_modules/acorn/package.json +1 -1
- package/dist/node_modules/acorn-jsx/package.json +1 -1
- package/dist/node_modules/acorn-walk/package.json +1 -1
- package/dist/node_modules/ses/package.json +1 -1
- package/dist/node_modules/zod/package.json +1 -1
- package/dist/server/flow-surfaces/builder.js +5 -0
- package/dist/server/flow-surfaces/catalog.js +27 -8
- package/dist/server/flow-surfaces/configure-options.js +17 -1
- package/dist/server/flow-surfaces/field-binding-registry.js +9 -8
- package/dist/server/flow-surfaces/navigation-targets.js +21 -40
- package/dist/server/flow-surfaces/service-utils.d.ts +1 -0
- package/dist/server/flow-surfaces/service-utils.js +17 -0
- package/dist/server/flow-surfaces/service.js +9 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.js +7 -0
- package/dist/server/plugin.d.ts +13 -0
- package/dist/server/plugin.js +90 -3
- package/dist/server/repository.d.ts +12 -0
- package/dist/server/repository.js +39 -2
- package/dist/server/template/context-keys.d.ts +14 -0
- package/dist/server/template/context-keys.js +86 -0
- package/dist/server/template/contexts.d.ts +5 -8
- package/dist/server/template/contexts.js +43 -51
- package/dist/server/template/resolver.d.ts +5 -13
- package/dist/server/template/resolver.js +188 -257
- package/dist/server/template/variable-expression.d.ts +72 -0
- package/dist/server/template/variable-expression.js +597 -0
- package/dist/server/variables/allow-list.d.ts +49 -0
- package/dist/server/variables/allow-list.js +492 -0
- package/dist/server/variables/form-item-record-slot-resolvers.d.ts +10 -0
- package/dist/server/variables/form-item-record-slot-resolvers.js +280 -0
- package/dist/server/variables/record-bindings.d.ts +42 -0
- package/dist/server/variables/record-bindings.js +196 -0
- package/dist/server/variables/record-projection.d.ts +10 -0
- package/dist/server/variables/record-projection.js +140 -0
- package/dist/server/variables/record-slot-policy.d.ts +23 -0
- package/dist/server/variables/record-slot-policy.js +100 -0
- package/dist/server/variables/record-slot-resolvers.d.ts +46 -0
- package/dist/server/variables/record-slot-resolvers.js +115 -0
- package/dist/server/variables/records.d.ts +49 -2
- package/dist/server/variables/records.js +309 -18
- package/dist/server/variables/registry.d.ts +33 -10
- package/dist/server/variables/registry.js +197 -362
- package/dist/server/variables/resolve.d.ts +20 -2
- package/dist/server/variables/resolve.js +85 -13
- package/dist/server/variables/runjs-variable-dependencies.d.ts +23 -0
- package/dist/server/variables/runjs-variable-dependencies.js +407 -0
- package/dist/server/variables/selects.js +6 -3
- package/dist/server/variables/utils.d.ts +3 -6
- package/dist/server/variables/utils.js +50 -111
- package/package.json +2 -2
package/dist/externalVersion.js
CHANGED
|
@@ -8,16 +8,16 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
module.exports = {
|
|
11
|
-
"@nocobase/client": "3.0.0-alpha.
|
|
11
|
+
"@nocobase/client": "3.0.0-alpha.12",
|
|
12
12
|
"lodash": "4.18.1",
|
|
13
|
-
"@nocobase/database": "3.0.0-alpha.
|
|
14
|
-
"@nocobase/data-source-manager": "3.0.0-alpha.
|
|
15
|
-
"@nocobase/resourcer": "3.0.0-alpha.
|
|
16
|
-
"@nocobase/
|
|
17
|
-
"@nocobase/
|
|
18
|
-
"@nocobase/
|
|
19
|
-
"@nocobase/actions": "3.0.0-alpha.
|
|
13
|
+
"@nocobase/database": "3.0.0-alpha.12",
|
|
14
|
+
"@nocobase/data-source-manager": "3.0.0-alpha.12",
|
|
15
|
+
"@nocobase/resourcer": "3.0.0-alpha.12",
|
|
16
|
+
"@nocobase/server": "3.0.0-alpha.12",
|
|
17
|
+
"@nocobase/utils": "3.0.0-alpha.12",
|
|
18
|
+
"@nocobase/cache": "3.0.0-alpha.12",
|
|
19
|
+
"@nocobase/actions": "3.0.0-alpha.12",
|
|
20
20
|
"sequelize": "6.35.2",
|
|
21
21
|
"@formily/json-schema": "2.3.7",
|
|
22
|
-
"@nocobase/ai": "3.0.0-alpha.
|
|
22
|
+
"@nocobase/ai": "3.0.0-alpha.12"
|
|
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-
|
|
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-26T01:59:07.990Z"}
|
|
@@ -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-
|
|
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-26T01:59:08.943Z"}
|
|
@@ -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-
|
|
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-26T01:59:09.289Z"}
|
|
@@ -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-
|
|
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-26T01:59:09.417Z"}
|
|
@@ -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-
|
|
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-26T01:59:08.601Z"}
|
|
@@ -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-
|
|
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-26T01:59:10.343Z"}
|
|
@@ -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(
|
|
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
|
-
|
|
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
|
-
|
|
238
|
-
|
|
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
|
|
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
|
|
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,
|
|
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
|
-
|
|
422
|
-
|
|
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
|
|
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)) {
|
package/dist/server/index.d.ts
CHANGED
|
@@ -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';
|
package/dist/server/index.js
CHANGED
|
@@ -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
|
});
|
package/dist/server/plugin.d.ts
CHANGED
|
@@ -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;
|