@nocobase/plugin-flow-engine 2.2.0-beta.3 → 2.2.0-beta.5
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/authoring-validation.js +57 -0
- package/dist/server/flow-surfaces/blueprint/export-document.js +3 -1
- package/dist/server/flow-surfaces/builder.js +16 -1
- package/dist/server/flow-surfaces/catalog.js +3 -1
- package/dist/server/flow-surfaces/configure-options.js +4 -3
- package/dist/server/flow-surfaces/contract-guard.js +24 -2
- package/dist/server/flow-surfaces/service.d.ts +5 -0
- package/dist/server/flow-surfaces/service.js +119 -7
- package/dist/server/variables/registry.js +3 -0
- 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": "2.2.0-beta.
|
|
11
|
+
"@nocobase/client": "2.2.0-beta.5",
|
|
12
12
|
"lodash": "4.18.1",
|
|
13
|
-
"@nocobase/database": "2.2.0-beta.
|
|
14
|
-
"@nocobase/data-source-manager": "2.2.0-beta.
|
|
15
|
-
"@nocobase/resourcer": "2.2.0-beta.
|
|
16
|
-
"@nocobase/utils": "2.2.0-beta.
|
|
17
|
-
"@nocobase/cache": "2.2.0-beta.
|
|
18
|
-
"@nocobase/server": "2.2.0-beta.
|
|
19
|
-
"@nocobase/actions": "2.2.0-beta.
|
|
13
|
+
"@nocobase/database": "2.2.0-beta.5",
|
|
14
|
+
"@nocobase/data-source-manager": "2.2.0-beta.5",
|
|
15
|
+
"@nocobase/resourcer": "2.2.0-beta.5",
|
|
16
|
+
"@nocobase/utils": "2.2.0-beta.5",
|
|
17
|
+
"@nocobase/cache": "2.2.0-beta.5",
|
|
18
|
+
"@nocobase/server": "2.2.0-beta.5",
|
|
19
|
+
"@nocobase/actions": "2.2.0-beta.5",
|
|
20
20
|
"sequelize": "6.35.2",
|
|
21
21
|
"@formily/json-schema": "2.3.7",
|
|
22
|
-
"@nocobase/ai": "2.2.0-beta.
|
|
22
|
+
"@nocobase/ai": "2.2.0-beta.5"
|
|
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-06-
|
|
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-06-16T14:50:52.146Z"}
|
|
@@ -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-06-
|
|
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-06-16T14:50:53.128Z"}
|
|
@@ -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-06-
|
|
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-06-16T14:50:53.584Z"}
|
|
@@ -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-06-
|
|
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-06-16T14:50:53.707Z"}
|
|
@@ -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-06-
|
|
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-06-16T14:50:52.698Z"}
|
|
@@ -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-06-
|
|
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-06-16T14:50:54.958Z"}
|
|
@@ -5962,6 +5962,9 @@ function collectTableSettingsErrors(block, blockType, blockPath, errors, options
|
|
|
5962
5962
|
});
|
|
5963
5963
|
const hasSettings = _.isPlainObject(block == null ? void 0 : block.settings);
|
|
5964
5964
|
if (!hasSettings) {
|
|
5965
|
+
if (options.directSettings === true && !shouldDeferPublicDataScopeErrorsToBatchItem(blockPath, errors, options)) {
|
|
5966
|
+
collectPublicDataScopeErrors(block.dataScope, `${blockPath}.dataScope`, errors, block, context);
|
|
5967
|
+
}
|
|
5965
5968
|
return;
|
|
5966
5969
|
}
|
|
5967
5970
|
const settings = block.settings;
|
|
@@ -6013,8 +6016,62 @@ function collectPublicDataScopeErrors(value, path, errors, block, context) {
|
|
|
6013
6016
|
});
|
|
6014
6017
|
return;
|
|
6015
6018
|
}
|
|
6019
|
+
collectPublicDataScopeFieldPathErrors(validationValue, path, errors, block, context);
|
|
6016
6020
|
collectFilterGroupDateConditionErrors(validationValue, path, errors, block, context);
|
|
6017
6021
|
}
|
|
6022
|
+
function collectPublicDataScopeFieldPathErrors(value, path, errors, block, context) {
|
|
6023
|
+
if (!_.isPlainObject(value)) {
|
|
6024
|
+
return;
|
|
6025
|
+
}
|
|
6026
|
+
if (hasOwn(value, "operator")) {
|
|
6027
|
+
collectPublicDataScopeFieldPathError(value.path, `${path}.path`, block, context, errors);
|
|
6028
|
+
}
|
|
6029
|
+
if (Array.isArray(value.items)) {
|
|
6030
|
+
value.items.forEach(
|
|
6031
|
+
(item, index) => collectPublicDataScopeFieldPathErrors(item, `${path}.items[${index}]`, errors, block, context)
|
|
6032
|
+
);
|
|
6033
|
+
}
|
|
6034
|
+
}
|
|
6035
|
+
function collectPublicDataScopeFieldPathError(rawFieldPath, path, block, context, errors) {
|
|
6036
|
+
const fieldPath = String(rawFieldPath || "").trim();
|
|
6037
|
+
if (!fieldPath || fieldPath.startsWith("$") || fieldPath.startsWith("{{")) {
|
|
6038
|
+
return;
|
|
6039
|
+
}
|
|
6040
|
+
const collection = getBlockCollection(block, context);
|
|
6041
|
+
if (!collection) {
|
|
6042
|
+
return;
|
|
6043
|
+
}
|
|
6044
|
+
const resolved = resolveDefaultFilterFieldPath(
|
|
6045
|
+
collection,
|
|
6046
|
+
(0, import_service_helpers.normalizeFieldPath)(fieldPath),
|
|
6047
|
+
getBlockDataSourceKey(block, context),
|
|
6048
|
+
context
|
|
6049
|
+
);
|
|
6050
|
+
if (!resolved.field) {
|
|
6051
|
+
pushAuthoringError(errors, {
|
|
6052
|
+
path,
|
|
6053
|
+
ruleId: "field-path-unknown",
|
|
6054
|
+
message: `flowSurfaces authoring ${path} references unknown field '${fieldPath}'`,
|
|
6055
|
+
details: {
|
|
6056
|
+
fieldPath,
|
|
6057
|
+
collection: (0, import_service_helpers.getCollectionName)(resolved.collection || collection),
|
|
6058
|
+
availableFields: (0, import_service_helpers.getCollectionFields)(resolved.collection || collection).map((field) => String((0, import_service_helpers.getFieldName)(field) || "").trim()).filter(Boolean)
|
|
6059
|
+
}
|
|
6060
|
+
});
|
|
6061
|
+
return;
|
|
6062
|
+
}
|
|
6063
|
+
if ((0, import_service_helpers.isAssociationField)(resolved.field)) {
|
|
6064
|
+
pushAuthoringError(errors, {
|
|
6065
|
+
path,
|
|
6066
|
+
ruleId: "defaultFilter-relation-field-unsupported",
|
|
6067
|
+
message: `flowSurfaces authoring ${path} cannot use relation field '${fieldPath}' itself; use a scalar subfield instead`,
|
|
6068
|
+
details: {
|
|
6069
|
+
fieldPath,
|
|
6070
|
+
fieldName: (0, import_service_helpers.getFieldName)(resolved.field)
|
|
6071
|
+
}
|
|
6072
|
+
});
|
|
6073
|
+
}
|
|
6074
|
+
}
|
|
6018
6075
|
function shouldDeferPublicDataScopeErrorsToBatchItem(blockPath, errors, options) {
|
|
6019
6076
|
if (options.deferPublicDataScopeErrors !== true) {
|
|
6020
6077
|
return false;
|
|
@@ -86,6 +86,7 @@ const BASIC_ACTION_PROP_KEYS = /* @__PURE__ */ new Set([
|
|
|
86
86
|
"title",
|
|
87
87
|
"tooltip",
|
|
88
88
|
"icon",
|
|
89
|
+
"iconOnly",
|
|
89
90
|
"type",
|
|
90
91
|
"danger",
|
|
91
92
|
"color",
|
|
@@ -94,7 +95,7 @@ const BASIC_ACTION_PROP_KEYS = /* @__PURE__ */ new Set([
|
|
|
94
95
|
"filterableFieldNames",
|
|
95
96
|
"position"
|
|
96
97
|
]);
|
|
97
|
-
const BASIC_ACTION_BUTTON_GENERAL_KEYS = /* @__PURE__ */ new Set(["title", "tooltip", "icon", "type", "danger", "color"]);
|
|
98
|
+
const BASIC_ACTION_BUTTON_GENERAL_KEYS = /* @__PURE__ */ new Set(["title", "tooltip", "icon", "iconOnly", "type", "danger", "color"]);
|
|
98
99
|
const BASIC_DELETE_ACTION_TYPES = /* @__PURE__ */ new Set(["delete", "bulkDelete"]);
|
|
99
100
|
const RECORD_HISTORY_GENERATED_ACTION_USES = /* @__PURE__ */ new Set([
|
|
100
101
|
"RecordHistoryExpandActionModel",
|
|
@@ -1686,6 +1687,7 @@ function exportActionButtonSettings(action) {
|
|
|
1686
1687
|
title: readValue("title"),
|
|
1687
1688
|
tooltip: readValue("tooltip"),
|
|
1688
1689
|
icon: readValue("icon"),
|
|
1690
|
+
iconOnly: readValue("iconOnly"),
|
|
1689
1691
|
type: readValue("type"),
|
|
1690
1692
|
danger: readValue("danger"),
|
|
1691
1693
|
color: readValue("color")
|
|
@@ -731,10 +731,19 @@ function buildActionTree(options) {
|
|
|
731
731
|
containerUse: options.containerUse,
|
|
732
732
|
resourceInit: options.resourceInit
|
|
733
733
|
});
|
|
734
|
+
const requestedProps = options.props;
|
|
735
|
+
const requestedButtonGeneral = import_lodash.default.get(options.stepParams, ["buttonSettings", "general"]);
|
|
736
|
+
const stripImplicitTitle = shouldStripImplicitIconOnlyActionTitle(requestedProps, requestedButtonGeneral);
|
|
734
737
|
const props = import_lodash.default.merge({}, import_lodash.default.cloneDeep(defaults.props || {}), import_lodash.default.cloneDeep(options.props || {}));
|
|
738
|
+
if (stripImplicitTitle) {
|
|
739
|
+
delete props.title;
|
|
740
|
+
}
|
|
735
741
|
const stepParams = import_lodash.default.merge({}, import_lodash.default.cloneDeep(defaults.stepParams || {}), import_lodash.default.cloneDeep(options.stepParams || {}));
|
|
736
742
|
if (import_lodash.default.isPlainObject((_a = stepParams == null ? void 0 : stepParams.buttonSettings) == null ? void 0 : _a.general)) {
|
|
737
743
|
stepParams.buttonSettings.general = import_lodash.default.merge({}, stepParams.buttonSettings.general, pickButtonGeneralProps(props));
|
|
744
|
+
if (stripImplicitTitle) {
|
|
745
|
+
delete stepParams.buttonSettings.general.title;
|
|
746
|
+
}
|
|
738
747
|
}
|
|
739
748
|
return {
|
|
740
749
|
use,
|
|
@@ -767,10 +776,15 @@ function buildCanonicalTableActionsColumnNode(options = {}) {
|
|
|
767
776
|
}
|
|
768
777
|
function pickButtonGeneralProps(props) {
|
|
769
778
|
return import_lodash.default.pickBy(
|
|
770
|
-
import_lodash.default.pick(props || {}, ["title", "tooltip", "icon", "type", "danger", "color"]),
|
|
779
|
+
import_lodash.default.pick(props || {}, ["title", "tooltip", "icon", "iconOnly", "type", "danger", "color"]),
|
|
771
780
|
(value) => !import_lodash.default.isUndefined(value)
|
|
772
781
|
);
|
|
773
782
|
}
|
|
783
|
+
function shouldStripImplicitIconOnlyActionTitle(props, buttonGeneral) {
|
|
784
|
+
const hasRequestedOnlyIcon = import_lodash.default.isPlainObject(props) && Object.prototype.hasOwnProperty.call(props, "iconOnly") && props.iconOnly === true || import_lodash.default.isPlainObject(buttonGeneral) && Object.prototype.hasOwnProperty.call(buttonGeneral, "iconOnly") && buttonGeneral.iconOnly === true;
|
|
785
|
+
const hasRequestedTitle = import_lodash.default.isPlainObject(props) && Object.prototype.hasOwnProperty.call(props, "title") || import_lodash.default.isPlainObject(buttonGeneral) && Object.prototype.hasOwnProperty.call(buttonGeneral, "title");
|
|
786
|
+
return hasRequestedOnlyIcon && !hasRequestedTitle;
|
|
787
|
+
}
|
|
774
788
|
function assignClientKeysToUids(spec, clientKeyToUid) {
|
|
775
789
|
const next = import_lodash.default.cloneDeep(spec);
|
|
776
790
|
const walk = (node) => {
|
|
@@ -997,6 +1011,7 @@ function inferActionDefaultProps(use, scope) {
|
|
|
997
1011
|
title: "",
|
|
998
1012
|
tooltip: '{{t("Delete")}}',
|
|
999
1013
|
icon: "DeleteOutlined",
|
|
1014
|
+
iconOnly: true,
|
|
1000
1015
|
position: "right"
|
|
1001
1016
|
},
|
|
1002
1017
|
BulkEditActionModel: {
|
|
@@ -182,7 +182,7 @@ const FILTER_FORM_ITEM_ALLOWED_PATHS = [
|
|
|
182
182
|
"init.filterField.type",
|
|
183
183
|
"initialValue.defaultValue"
|
|
184
184
|
];
|
|
185
|
-
const ACTION_PROP_KEYS = ["title", "tooltip", "icon", "type", "htmlType", "position", "danger", "color"];
|
|
185
|
+
const ACTION_PROP_KEYS = ["title", "tooltip", "icon", "iconOnly", "type", "htmlType", "position", "danger", "color"];
|
|
186
186
|
const FILTER_ACTION_PROP_KEYS = [...ACTION_PROP_KEYS, "filterableFieldNames", "defaultFilterValue", "filterValue"];
|
|
187
187
|
const FILTER_ACTION_PROP_PATH_SCHEMAS = {
|
|
188
188
|
filterableFieldNames: {
|
|
@@ -197,6 +197,7 @@ const ACTION_BUTTON_SETTINGS_GROUP = {
|
|
|
197
197
|
"general.title",
|
|
198
198
|
"general.tooltip",
|
|
199
199
|
"general.icon",
|
|
200
|
+
"general.iconOnly",
|
|
200
201
|
"general.type",
|
|
201
202
|
"general.danger",
|
|
202
203
|
"general.color",
|
|
@@ -208,6 +209,7 @@ const ACTION_BUTTON_SETTINGS_GROUP = {
|
|
|
208
209
|
"general.title": STRING_SCHEMA,
|
|
209
210
|
"general.tooltip": STRING_SCHEMA,
|
|
210
211
|
"general.icon": NULLABLE_STRING_SCHEMA,
|
|
212
|
+
"general.iconOnly": BOOLEAN_SCHEMA,
|
|
211
213
|
"general.type": STRING_SCHEMA,
|
|
212
214
|
"general.danger": BOOLEAN_SCHEMA,
|
|
213
215
|
"general.color": STRING_SCHEMA,
|
|
@@ -201,7 +201,7 @@ const DETAILS_OPTIONS = {
|
|
|
201
201
|
sorting: SORTING,
|
|
202
202
|
dataScope: FILTER_GROUP,
|
|
203
203
|
linkageRules: arrayOption(
|
|
204
|
-
"Raw linkage-rules payload.
|
|
204
|
+
"Raw canonical linkage-rules payload. The API normalizes condition-only rules to include `actions: []`; for AI/CLI authoring, prefer `getReactionMeta` + `setFieldLinkageRules` instead of guessing this configure key directly.",
|
|
205
205
|
{ example: [] }
|
|
206
206
|
)
|
|
207
207
|
};
|
|
@@ -237,7 +237,7 @@ const CALENDAR_OPTIONS = {
|
|
|
237
237
|
weekStart: numberOption("Week start day. Use 1 for Monday or 0 for Sunday.", { example: 1 }),
|
|
238
238
|
dataScope: FILTER_GROUP,
|
|
239
239
|
linkageRules: arrayOption(
|
|
240
|
-
"Raw linkage-rules payload.
|
|
240
|
+
"Raw canonical linkage-rules payload. The API normalizes condition-only rules to include `actions: []`; for AI/CLI authoring, prefer `getReactionMeta` + `setBlockLinkageRules` instead of guessing this configure key directly.",
|
|
241
241
|
{ example: [] }
|
|
242
242
|
),
|
|
243
243
|
quickCreatePopup: OPEN_VIEW,
|
|
@@ -560,6 +560,7 @@ const ACTION_COMMON_OPTIONS = {
|
|
|
560
560
|
title: stringOption("Button title", { example: "Run" }),
|
|
561
561
|
tooltip: stringOption("Tooltip"),
|
|
562
562
|
icon: stringOption("Icon", { example: "PlusOutlined" }),
|
|
563
|
+
iconOnly: booleanOption("Whether to render only the icon without visible button text", { example: true }),
|
|
563
564
|
type: stringOption("Button type", { example: "primary" }),
|
|
564
565
|
color: stringOption("Color"),
|
|
565
566
|
htmlType: stringOption("HTML button type", { example: "submit" }),
|
|
@@ -588,7 +589,7 @@ const APPROVAL_ASSIGN_ACTION_OPTIONS = {
|
|
|
588
589
|
};
|
|
589
590
|
const ACTION_LINKAGE_OPTIONS = {
|
|
590
591
|
linkageRules: arrayOption(
|
|
591
|
-
"Raw linkage-rules payload.
|
|
592
|
+
"Raw canonical linkage-rules payload. The API normalizes condition-only rules to include `actions: []`; for AI/CLI authoring, prefer `getReactionMeta` + `setActionLinkageRules` instead of guessing this configure key directly.",
|
|
592
593
|
{ example: [] }
|
|
593
594
|
)
|
|
594
595
|
};
|
|
@@ -397,19 +397,41 @@ function normalizeLinkageRulesValue(value, context, path) {
|
|
|
397
397
|
return rule;
|
|
398
398
|
}
|
|
399
399
|
const normalizedRule = import_lodash.default.cloneDeep(rule);
|
|
400
|
-
const
|
|
400
|
+
const conditionPath = getLinkageRuleDomainPath(context, path, index, "condition");
|
|
401
401
|
import_lodash.default.set(
|
|
402
402
|
normalizedRule,
|
|
403
403
|
"condition",
|
|
404
404
|
(0, import_filter_group.normalizeFlowSurfaceCompatibleFilterGroupValue)(
|
|
405
405
|
import_lodash.default.get(normalizedRule, "condition"),
|
|
406
|
-
`flowSurfaces updateSettings domain '${
|
|
406
|
+
`flowSurfaces updateSettings domain '${conditionPath}' on '${context.use}' expects FilterGroup or backend query filter like ${import_filter_group.FLOW_SURFACE_FILTER_GROUP_EXAMPLE}`,
|
|
407
407
|
{ strictDateValues: true }
|
|
408
408
|
)
|
|
409
409
|
);
|
|
410
|
+
if (!import_lodash.default.has(normalizedRule, "actions")) {
|
|
411
|
+
import_lodash.default.set(normalizedRule, "actions", []);
|
|
412
|
+
} else if (!Array.isArray(import_lodash.default.get(normalizedRule, "actions"))) {
|
|
413
|
+
(0, import_errors.throwBadRequest)(
|
|
414
|
+
`flowSurfaces updateSettings domain '${getLinkageRuleDomainPath(context, path, index, "actions")}' on '${context.use}' expects actions to be an array`
|
|
415
|
+
);
|
|
416
|
+
}
|
|
417
|
+
if (!import_lodash.default.has(normalizedRule, "key")) {
|
|
418
|
+
import_lodash.default.set(normalizedRule, "key", `linkage-rule-${index + 1}`);
|
|
419
|
+
}
|
|
420
|
+
if (!import_lodash.default.has(normalizedRule, "title")) {
|
|
421
|
+
import_lodash.default.set(normalizedRule, "title", `Linkage rule ${index + 1}`);
|
|
422
|
+
}
|
|
423
|
+
if (!import_lodash.default.has(normalizedRule, "enable")) {
|
|
424
|
+
const enabled = import_lodash.default.get(normalizedRule, "enabled");
|
|
425
|
+
import_lodash.default.set(normalizedRule, "enable", typeof enabled === "boolean" ? enabled : true);
|
|
426
|
+
}
|
|
427
|
+
import_lodash.default.unset(normalizedRule, "enabled");
|
|
410
428
|
return normalizedRule;
|
|
411
429
|
});
|
|
412
430
|
}
|
|
431
|
+
function getLinkageRuleDomainPath(context, path, index, leaf) {
|
|
432
|
+
const basePath = context.groupKey ? `${context.domain}.${context.groupKey}.${path}[${index}]` : `${context.domain}.${path}[${index}]`;
|
|
433
|
+
return `${basePath}.${leaf}`;
|
|
434
|
+
}
|
|
413
435
|
function isContractDefinedFlowGroup(groupContract) {
|
|
414
436
|
if (!groupContract) {
|
|
415
437
|
return false;
|
|
@@ -142,6 +142,7 @@ export declare class FlowSurfacesService {
|
|
|
142
142
|
private getCollectionFilterTargetKey;
|
|
143
143
|
private normalizeFlowContextTemplateValue;
|
|
144
144
|
private isSameConfiguredFlowContextValue;
|
|
145
|
+
private isPopupCurrentRecordFilterByTkMatch;
|
|
145
146
|
private isPopupAssociatedRecordsSourceIdMatch;
|
|
146
147
|
private classifyPopupRawResourceInit;
|
|
147
148
|
private resolvePopupAssociationField;
|
|
@@ -300,6 +301,7 @@ export declare class FlowSurfacesService {
|
|
|
300
301
|
private createFlowTemplateReferenceBlockModel;
|
|
301
302
|
private buildPopupTemplateReferenceOpenView;
|
|
302
303
|
private shouldHydrateDetachedPopupTemplateBlockResourceContext;
|
|
304
|
+
private resolveDetachedPopupTemplateBlockCurrentRecordFilterByTk;
|
|
303
305
|
private collectDetachedPopupTemplateBlockResourceContextPatches;
|
|
304
306
|
private hydrateDetachedPopupTemplateBlockResourceContext;
|
|
305
307
|
private hydrateDetachedPopupTemplateSourceContext;
|
|
@@ -748,6 +750,9 @@ export declare class FlowSurfacesService {
|
|
|
748
750
|
private syncFilterActionSettingsForUpdateSettings;
|
|
749
751
|
private resolveFilterActionDefaultFilterRequiredFieldCount;
|
|
750
752
|
private syncMirroredStepParamsForUpdateSettings;
|
|
753
|
+
private syncActionButtonSettingsForUpdateSettings;
|
|
754
|
+
private supportsActionButtonSettingsSync;
|
|
755
|
+
private pickRequestedActionButtonSettings;
|
|
751
756
|
private syncCreatedFieldWrapperTitleFieldStepParams;
|
|
752
757
|
private syncUpdateActionAssignedValuesForUpdateSettings;
|
|
753
758
|
private syncActionTriggerWorkflowsForUpdateSettings;
|
|
@@ -235,6 +235,7 @@ const FLOW_SURFACE_EXPORT_BLUEPRINT_ROOT_ONLY_MESSAGE = "exportBlueprint v1 only
|
|
|
235
235
|
const FORM_BLOCK_USES = /* @__PURE__ */ new Set(["FormBlockModel", "CreateFormModel", "EditFormModel", ...import_approval.APPROVAL_FORM_BLOCK_USES]);
|
|
236
236
|
const AUTO_SUBMIT_FORM_BLOCK_USES = /* @__PURE__ */ new Set(["CreateFormModel", "EditFormModel"]);
|
|
237
237
|
const FLOW_SURFACE_DEFAULT_ACTION_SETTINGS_KEYS = /* @__PURE__ */ new Set(["filter"]);
|
|
238
|
+
const ACTION_BUTTON_GENERAL_SETTING_KEYS = ["title", "tooltip", "icon", "iconOnly", "type", "danger", "color"];
|
|
238
239
|
const DETAILS_BLOCK_USES = /* @__PURE__ */ new Set(["DetailsBlockModel", ...import_approval.APPROVAL_DETAILS_BLOCK_USES]);
|
|
239
240
|
const SIMPLE_FORM_BLOCK_USES = /* @__PURE__ */ new Set([
|
|
240
241
|
"FormBlockModel",
|
|
@@ -1948,6 +1949,9 @@ class FlowSurfacesService {
|
|
|
1948
1949
|
if (!(popupProfile == null ? void 0 : popupProfile.currentCollection)) {
|
|
1949
1950
|
return popupProfile == null ? void 0 : popupProfile.filterByTk;
|
|
1950
1951
|
}
|
|
1952
|
+
if (popupProfile.popupKind === "recordPopup" && popupProfile.popupHostUse && POPUP_HOST_DEFAULT_RECORD_CONTEXT_ACTION_USES.has(popupProfile.popupHostUse)) {
|
|
1953
|
+
return "{{ctx.view.inputArgs.filterByTk}}";
|
|
1954
|
+
}
|
|
1951
1955
|
if (popupProfile.popupKind !== "associationPopup") {
|
|
1952
1956
|
return popupProfile.filterByTk;
|
|
1953
1957
|
}
|
|
@@ -2303,10 +2307,18 @@ class FlowSurfacesService {
|
|
|
2303
2307
|
if (!sameCurrentCollection || !(0, import_service_helpers.hasConfiguredFlowContextValue)(normalized.filterByTk)) {
|
|
2304
2308
|
return false;
|
|
2305
2309
|
}
|
|
2310
|
+
const expectedFilterByTk = this.resolvePopupCurrentRecordResourceFilterByTk(input.popupProfile, {
|
|
2311
|
+
usePopupInputArgsWhenSourceIdInferred: true
|
|
2312
|
+
});
|
|
2313
|
+
const matchesCurrentRecordFilterByTk = this.isPopupCurrentRecordFilterByTkMatch(
|
|
2314
|
+
input.popupProfile,
|
|
2315
|
+
normalized.filterByTk,
|
|
2316
|
+
expectedFilterByTk
|
|
2317
|
+
);
|
|
2306
2318
|
if (input.popupProfile.hasAssociationContext) {
|
|
2307
|
-
return
|
|
2319
|
+
return matchesCurrentRecordFilterByTk && normalized.associationName === input.popupProfile.associationName && this.isSameConfiguredFlowContextValue(normalized.sourceId, input.popupProfile.sourceId);
|
|
2308
2320
|
}
|
|
2309
|
-
return
|
|
2321
|
+
return matchesCurrentRecordFilterByTk && !(0, import_service_helpers.hasConfiguredFlowContextValue)(normalized.associationName) && !(0, import_service_helpers.hasConfiguredFlowContextValue)(normalized.sourceId);
|
|
2310
2322
|
}
|
|
2311
2323
|
if (input.binding === "associatedRecords") {
|
|
2312
2324
|
if (!(0, import_service_helpers.hasConfiguredFlowContextValue)(normalized.collectionName) || !(0, import_service_helpers.hasConfiguredFlowContextValue)(normalized.associationName) || !(0, import_service_helpers.hasConfiguredFlowContextValue)(normalized.sourceId) || (0, import_service_helpers.hasConfiguredFlowContextValue)(normalized.filterByTk)) {
|
|
@@ -2349,6 +2361,12 @@ class FlowSurfacesService {
|
|
|
2349
2361
|
}
|
|
2350
2362
|
return import_lodash.default.isEqual(this.normalizeFlowContextTemplateValue(left), this.normalizeFlowContextTemplateValue(right));
|
|
2351
2363
|
}
|
|
2364
|
+
isPopupCurrentRecordFilterByTkMatch(popupProfile, filterByTk, expectedFilterByTk) {
|
|
2365
|
+
if (this.isSameConfiguredFlowContextValue(filterByTk, expectedFilterByTk)) {
|
|
2366
|
+
return true;
|
|
2367
|
+
}
|
|
2368
|
+
return popupProfile.popupKind === "associationPopup" && this.isSameConfiguredFlowContextValue(filterByTk, popupProfile.filterByTk);
|
|
2369
|
+
}
|
|
2352
2370
|
isPopupAssociatedRecordsSourceIdMatch(popupProfile, associationField, sourceId) {
|
|
2353
2371
|
var _a, _b;
|
|
2354
2372
|
if (!(0, import_service_helpers.hasConfiguredFlowContextValue)(sourceId)) {
|
|
@@ -4536,10 +4554,16 @@ class FlowSurfacesService {
|
|
|
4536
4554
|
return this.buildPopupTemplateOpenView(template, "reference", templateTargetUid, options);
|
|
4537
4555
|
}
|
|
4538
4556
|
shouldHydrateDetachedPopupTemplateBlockResourceContext(blockNode, context) {
|
|
4539
|
-
if (!this.isCollectionBlockUse(blockNode == null ? void 0 : blockNode.use)
|
|
4557
|
+
if (!this.isCollectionBlockUse(blockNode == null ? void 0 : blockNode.use)) {
|
|
4540
4558
|
return false;
|
|
4541
4559
|
}
|
|
4542
4560
|
const init = import_lodash.default.get(blockNode, ["stepParams", "resourceSettings", "init"]) || {};
|
|
4561
|
+
if (this.resolveDetachedPopupTemplateBlockCurrentRecordFilterByTk(init, context)) {
|
|
4562
|
+
return true;
|
|
4563
|
+
}
|
|
4564
|
+
if (!context.associationName || !context.sourceId) {
|
|
4565
|
+
return false;
|
|
4566
|
+
}
|
|
4543
4567
|
const popupDataSourceKey = context.dataSourceKey || "main";
|
|
4544
4568
|
const blockDataSourceKey = init.dataSourceKey || "main";
|
|
4545
4569
|
if (!context.collectionName || blockDataSourceKey !== popupDataSourceKey || init.collectionName !== context.collectionName) {
|
|
@@ -4554,6 +4578,28 @@ class FlowSurfacesService {
|
|
|
4554
4578
|
}
|
|
4555
4579
|
return blockAssociationName !== context.associationName || !this.isSameConfiguredFlowContextValue(init.sourceId, context.sourceId);
|
|
4556
4580
|
}
|
|
4581
|
+
resolveDetachedPopupTemplateBlockCurrentRecordFilterByTk(init, context) {
|
|
4582
|
+
if (!(0, import_service_helpers.hasConfiguredFlowContextValue)(init.filterByTk)) {
|
|
4583
|
+
return void 0;
|
|
4584
|
+
}
|
|
4585
|
+
if (this.isSameConfiguredFlowContextValue(init.filterByTk, "{{ctx.view.inputArgs.filterByTk}}")) {
|
|
4586
|
+
return void 0;
|
|
4587
|
+
}
|
|
4588
|
+
const popupDataSourceKey = context.dataSourceKey || "main";
|
|
4589
|
+
const blockDataSourceKey = init.dataSourceKey || "main";
|
|
4590
|
+
if (!context.collectionName || blockDataSourceKey !== popupDataSourceKey || init.collectionName !== context.collectionName) {
|
|
4591
|
+
return void 0;
|
|
4592
|
+
}
|
|
4593
|
+
if (context.filterByTk && this.isSameConfiguredFlowContextValue(init.filterByTk, context.filterByTk)) {
|
|
4594
|
+
return "{{ctx.view.inputArgs.filterByTk}}";
|
|
4595
|
+
}
|
|
4596
|
+
const collection = this.getCollection(popupDataSourceKey, context.collectionName);
|
|
4597
|
+
const filterTargetKey = this.getCollectionFilterTargetKey(collection);
|
|
4598
|
+
if (this.isSameConfiguredFlowContextValue(init.filterByTk, `{{ctx.record.${filterTargetKey}}}`)) {
|
|
4599
|
+
return "{{ctx.view.inputArgs.filterByTk}}";
|
|
4600
|
+
}
|
|
4601
|
+
return void 0;
|
|
4602
|
+
}
|
|
4557
4603
|
collectDetachedPopupTemplateBlockResourceContextPatches(node, context, patches = []) {
|
|
4558
4604
|
if (!node || typeof node !== "object") {
|
|
4559
4605
|
return patches;
|
|
@@ -4561,6 +4607,7 @@ class FlowSurfacesService {
|
|
|
4561
4607
|
if (node.uid && this.shouldHydrateDetachedPopupTemplateBlockResourceContext(node, context)) {
|
|
4562
4608
|
const nextStepParams = import_lodash.default.cloneDeep(node.stepParams || {});
|
|
4563
4609
|
const currentInit = import_lodash.default.get(nextStepParams, ["resourceSettings", "init"]) || {};
|
|
4610
|
+
const filterByTk = this.resolveDetachedPopupTemplateBlockCurrentRecordFilterByTk(currentInit, context);
|
|
4564
4611
|
import_lodash.default.set(
|
|
4565
4612
|
nextStepParams,
|
|
4566
4613
|
["resourceSettings", "init"],
|
|
@@ -4568,8 +4615,11 @@ class FlowSurfacesService {
|
|
|
4568
4615
|
...currentInit,
|
|
4569
4616
|
dataSourceKey: context.dataSourceKey || currentInit.dataSourceKey || "main",
|
|
4570
4617
|
collectionName: context.collectionName || currentInit.collectionName,
|
|
4571
|
-
associationName
|
|
4572
|
-
|
|
4618
|
+
...context.associationName && context.sourceId ? {
|
|
4619
|
+
associationName: context.associationName,
|
|
4620
|
+
sourceId: context.sourceId
|
|
4621
|
+
} : {},
|
|
4622
|
+
...filterByTk ? { filterByTk } : {}
|
|
4573
4623
|
})
|
|
4574
4624
|
);
|
|
4575
4625
|
patches.push({
|
|
@@ -11568,6 +11618,7 @@ class FlowSurfacesService {
|
|
|
11568
11618
|
normalizedValues,
|
|
11569
11619
|
nextPayload
|
|
11570
11620
|
);
|
|
11621
|
+
this.syncActionButtonSettingsForUpdateSettings(current, normalizedValues, nextPayload);
|
|
11571
11622
|
this.syncActionTriggerWorkflowsForUpdateSettings(current, normalizedValues, nextPayload);
|
|
11572
11623
|
const popupActionContext = options.popupActionContext || await this.resolveRecordContextPopupActionContextForHost(current, options.transaction);
|
|
11573
11624
|
await this.normalizeOpenViewForUpdateSettings(
|
|
@@ -12075,6 +12126,65 @@ class FlowSurfacesService {
|
|
|
12075
12126
|
nextPayload.stepParams = nextStepParams;
|
|
12076
12127
|
}
|
|
12077
12128
|
}
|
|
12129
|
+
syncActionButtonSettingsForUpdateSettings(current, normalizedValues, nextPayload) {
|
|
12130
|
+
if (!this.supportsActionButtonSettingsSync(current)) {
|
|
12131
|
+
return;
|
|
12132
|
+
}
|
|
12133
|
+
const requestedProps = this.pickRequestedActionButtonSettings(normalizedValues.props);
|
|
12134
|
+
const requestedButtonGeneral = this.pickRequestedActionButtonSettings(
|
|
12135
|
+
import_lodash.default.get(normalizedValues, ["stepParams", "buttonSettings", "general"])
|
|
12136
|
+
);
|
|
12137
|
+
const hasRequestedProps = Object.keys(requestedProps).length > 0;
|
|
12138
|
+
const hasRequestedButtonGeneral = Object.keys(requestedButtonGeneral).length > 0;
|
|
12139
|
+
if (!hasRequestedProps && !hasRequestedButtonGeneral) {
|
|
12140
|
+
return;
|
|
12141
|
+
}
|
|
12142
|
+
const hasRequestedTitle = Object.prototype.hasOwnProperty.call(requestedProps, "title") || Object.prototype.hasOwnProperty.call(requestedButtonGeneral, "title");
|
|
12143
|
+
const shouldStripImplicitTitle = (requestedProps.iconOnly === true || requestedButtonGeneral.iconOnly === true) && !hasRequestedTitle;
|
|
12144
|
+
const nextProps = import_lodash.default.cloneDeep(
|
|
12145
|
+
import_lodash.default.isPlainObject(nextPayload.props) ? nextPayload.props : import_lodash.default.isPlainObject(current == null ? void 0 : current.props) ? current.props : {}
|
|
12146
|
+
);
|
|
12147
|
+
const nextStepParams = import_lodash.default.cloneDeep(
|
|
12148
|
+
import_lodash.default.isPlainObject(nextPayload.stepParams) ? nextPayload.stepParams : import_lodash.default.isPlainObject(current == null ? void 0 : current.stepParams) ? current.stepParams : {}
|
|
12149
|
+
);
|
|
12150
|
+
Object.entries(requestedProps).forEach(([key, value]) => {
|
|
12151
|
+
if (Object.prototype.hasOwnProperty.call(requestedButtonGeneral, key)) {
|
|
12152
|
+
return;
|
|
12153
|
+
}
|
|
12154
|
+
import_lodash.default.set(nextStepParams, ["buttonSettings", "general", key], import_lodash.default.cloneDeep(value));
|
|
12155
|
+
});
|
|
12156
|
+
Object.entries(requestedButtonGeneral).forEach(([key, value]) => {
|
|
12157
|
+
if (Object.prototype.hasOwnProperty.call(requestedProps, key)) {
|
|
12158
|
+
return;
|
|
12159
|
+
}
|
|
12160
|
+
nextProps[key] = import_lodash.default.cloneDeep(value);
|
|
12161
|
+
});
|
|
12162
|
+
if (shouldStripImplicitTitle) {
|
|
12163
|
+
delete nextProps.title;
|
|
12164
|
+
if (import_lodash.default.isPlainObject(import_lodash.default.get(nextStepParams, ["buttonSettings", "general"]))) {
|
|
12165
|
+
delete nextStepParams.buttonSettings.general.title;
|
|
12166
|
+
}
|
|
12167
|
+
}
|
|
12168
|
+
nextPayload.props = nextProps;
|
|
12169
|
+
nextPayload.stepParams = nextStepParams;
|
|
12170
|
+
}
|
|
12171
|
+
supportsActionButtonSettingsSync(current) {
|
|
12172
|
+
var _a, _b, _c, _d, _e, _f;
|
|
12173
|
+
const contract = (0, import_catalog.getNodeContract)(current == null ? void 0 : current.use);
|
|
12174
|
+
return ((_b = (_a = contract.domains.props) == null ? void 0 : _a.allowedKeys) == null ? void 0 : _b.includes("iconOnly")) && ((_f = (_e = (_d = (_c = contract.domains.stepParams) == null ? void 0 : _c.groups) == null ? void 0 : _d.buttonSettings) == null ? void 0 : _e.allowedPaths) == null ? void 0 : _f.includes("general.iconOnly"));
|
|
12175
|
+
}
|
|
12176
|
+
pickRequestedActionButtonSettings(input) {
|
|
12177
|
+
const picked = {};
|
|
12178
|
+
if (!import_lodash.default.isPlainObject(input)) {
|
|
12179
|
+
return picked;
|
|
12180
|
+
}
|
|
12181
|
+
ACTION_BUTTON_GENERAL_SETTING_KEYS.forEach((key) => {
|
|
12182
|
+
if (Object.prototype.hasOwnProperty.call(input, key) && !import_lodash.default.isUndefined(input[key])) {
|
|
12183
|
+
picked[key] = import_lodash.default.cloneDeep(input[key]);
|
|
12184
|
+
}
|
|
12185
|
+
});
|
|
12186
|
+
return picked;
|
|
12187
|
+
}
|
|
12078
12188
|
syncCreatedFieldWrapperTitleFieldStepParams(node) {
|
|
12079
12189
|
const mirror = (UPDATE_SETTINGS_STEP_PARAM_MIRRORS_BY_USE[(node == null ? void 0 : node.use) || ""] || []).find(
|
|
12080
12190
|
(item) => item.domain === "props" && item.key === "titleField"
|
|
@@ -18592,13 +18702,14 @@ ${AI_EMPLOYEE_CURRENT_RECORD_PROMPT_VARIABLE}` : AI_EMPLOYEE_CURRENT_RECORD_PROM
|
|
|
18592
18702
|
}
|
|
18593
18703
|
const normalizedDefaultFilter = (0, import_service_utils.hasOwnDefined)(changes, "defaultFilter") ? this.normalizeFilterActionDefaultFilterValue(changes.defaultFilter) : void 0;
|
|
18594
18704
|
const stepParams = {};
|
|
18595
|
-
if ((0, import_service_utils.hasDefinedValue)(changes, ["title", "tooltip", "icon", "type", "danger", "color", "linkageRules"])) {
|
|
18705
|
+
if ((0, import_service_utils.hasDefinedValue)(changes, ["title", "tooltip", "icon", "iconOnly", "type", "danger", "color", "linkageRules"])) {
|
|
18596
18706
|
stepParams.buttonSettings = {
|
|
18597
|
-
...(0, import_service_utils.hasDefinedValue)(changes, ["title", "tooltip", "icon", "type", "danger", "color"]) ? {
|
|
18707
|
+
...(0, import_service_utils.hasDefinedValue)(changes, ["title", "tooltip", "icon", "iconOnly", "type", "danger", "color"]) ? {
|
|
18598
18708
|
general: (0, import_service_utils.buildDefinedPayload)({
|
|
18599
18709
|
title: changes.title,
|
|
18600
18710
|
tooltip: changes.tooltip,
|
|
18601
18711
|
icon: changes.icon,
|
|
18712
|
+
iconOnly: changes.iconOnly,
|
|
18602
18713
|
type: changes.type,
|
|
18603
18714
|
danger: changes.danger,
|
|
18604
18715
|
color: changes.color
|
|
@@ -18808,6 +18919,7 @@ ${AI_EMPLOYEE_CURRENT_RECORD_PROMPT_VARIABLE}` : AI_EMPLOYEE_CURRENT_RECORD_PROM
|
|
|
18808
18919
|
title: changes.title,
|
|
18809
18920
|
tooltip: changes.tooltip,
|
|
18810
18921
|
icon: changes.icon,
|
|
18922
|
+
iconOnly: changes.iconOnly,
|
|
18811
18923
|
type: changes.type,
|
|
18812
18924
|
htmlType: changes.htmlType,
|
|
18813
18925
|
position: changes.position,
|
|
@@ -89,6 +89,9 @@ class VariableRegistry {
|
|
|
89
89
|
}
|
|
90
90
|
const GLOBAL_KEY = "__ncbVarRegistry__";
|
|
91
91
|
const g = typeof globalThis !== "undefined" ? globalThis : global;
|
|
92
|
+
if (g[GLOBAL_KEY] && typeof g[GLOBAL_KEY] === "object") {
|
|
93
|
+
Object.setPrototypeOf(g[GLOBAL_KEY], VariableRegistry.prototype);
|
|
94
|
+
}
|
|
92
95
|
if (!g[GLOBAL_KEY]) {
|
|
93
96
|
g[GLOBAL_KEY] = new VariableRegistry();
|
|
94
97
|
}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"displayName.zh-CN": "前端流引擎",
|
|
5
5
|
"description": "",
|
|
6
6
|
"description.zh-CN": "",
|
|
7
|
-
"version": "2.2.0-beta.
|
|
7
|
+
"version": "2.2.0-beta.5",
|
|
8
8
|
"main": "./dist/server/index.js",
|
|
9
9
|
"license": "Apache-2.0",
|
|
10
10
|
"devDependencies": {
|
|
@@ -26,5 +26,5 @@
|
|
|
26
26
|
"@nocobase/test": "2.x",
|
|
27
27
|
"@nocobase/utils": "2.x"
|
|
28
28
|
},
|
|
29
|
-
"gitHead": "
|
|
29
|
+
"gitHead": "81eab2cfa9d3d989e99ba0c914807b38db55f023"
|
|
30
30
|
}
|