@tachybase/module-workflow 1.6.21 → 1.6.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/client/features/exit-branch/index.d.ts +4 -0
  2. package/dist/client/index.js +40 -40
  3. package/dist/externalVersion.js +8 -8
  4. package/dist/locale/en-US.json +2 -0
  5. package/dist/locale/zh-CN.json +2 -0
  6. package/dist/node_modules/@babel/core/lib/index.js +28 -28
  7. package/dist/node_modules/@babel/core/package.json +1 -1
  8. package/dist/node_modules/@babel/preset-env/lib/index.js +40 -40
  9. package/dist/node_modules/@babel/preset-env/package.json +1 -1
  10. package/dist/node_modules/@babel/preset-react/lib/index.js +23 -23
  11. package/dist/node_modules/@babel/preset-react/package.json +1 -1
  12. package/dist/node_modules/@babel/preset-typescript/lib/index.js +28 -28
  13. package/dist/node_modules/@babel/preset-typescript/package.json +1 -1
  14. package/dist/node_modules/cron-parser/package.json +1 -1
  15. package/dist/node_modules/form-data/package.json +1 -1
  16. package/dist/node_modules/jsonata/package.json +1 -1
  17. package/dist/node_modules/lru-cache/package.json +1 -1
  18. package/dist/node_modules/mime-types/package.json +1 -1
  19. package/dist/node_modules/qrcode/package.json +1 -1
  20. package/dist/server/Plugin.js +15 -3
  21. package/dist/server/collections/executions.d.ts +1 -1
  22. package/dist/server/collections/flow_nodes.d.ts +1 -1
  23. package/dist/server/collections/jobs.d.ts +1 -1
  24. package/dist/server/collections/workflowCategories.d.ts +1 -1
  25. package/dist/server/collections/workflows.d.ts +1 -1
  26. package/dist/server/features/exit-branch/ExitBranchInstruction.d.ts +4 -0
  27. package/dist/server/features/exit-branch/ExitBranchInstruction.js +51 -0
  28. package/dist/server/features/exit-branch/Plugin.d.ts +4 -0
  29. package/dist/server/features/exit-branch/Plugin.js +45 -0
  30. package/dist/server/features/exit-branch/index.d.ts +1 -0
  31. package/dist/server/features/exit-branch/index.js +21 -0
  32. package/dist/server/features/interception/RequestInterceptionTrigger.js +5 -1
  33. package/dist/server/features/omni-trigger/CustomActionTrigger.js +5 -1
  34. package/dist/server/features/trigger-instruction/TriggerInstruction.d.ts +1 -10
  35. package/dist/server/features/trigger-instruction/TriggerInstruction.js +7 -3
  36. package/dist/server/instructions/QueryInstruction.js +1 -1
  37. package/dist/server/instructions/SelectInstruction.js +1 -1
  38. package/dist/server/triggers/ScheduleTrigger/DateFieldScheduleTrigger.js +2 -4
  39. package/package.json +15 -11
@@ -1 +1 @@
1
- {"name":"@babel/preset-typescript","version":"7.27.1","description":"Babel preset for TypeScript.","repository":{"type":"git","url":"https://github.com/babel/babel.git","directory":"packages/babel-preset-typescript"},"license":"MIT","publishConfig":{"access":"public"},"main":"./lib/index.js","keywords":["babel-preset","typescript"],"dependencies":{"@babel/helper-plugin-utils":"^7.27.1","@babel/helper-validator-option":"^7.27.1","@babel/plugin-syntax-jsx":"^7.27.1","@babel/plugin-transform-modules-commonjs":"^7.27.1","@babel/plugin-transform-typescript":"^7.27.1"},"peerDependencies":{"@babel/core":"^7.0.0-0"},"devDependencies":{"@babel/core":"^7.27.1","@babel/helper-plugin-test-runner":"^7.27.1"},"homepage":"https://babel.dev/docs/en/next/babel-preset-typescript","bugs":"https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22area%3A%20typescript%22+is%3Aopen","engines":{"node":">=6.9.0"},"author":"The Babel Team (https://babel.dev/team)","type":"commonjs","_lastModified":"2026-05-22T08:46:50.561Z"}
1
+ {"name":"@babel/preset-typescript","version":"7.27.1","description":"Babel preset for TypeScript.","repository":{"type":"git","url":"https://github.com/babel/babel.git","directory":"packages/babel-preset-typescript"},"license":"MIT","publishConfig":{"access":"public"},"main":"./lib/index.js","keywords":["babel-preset","typescript"],"dependencies":{"@babel/helper-plugin-utils":"^7.27.1","@babel/helper-validator-option":"^7.27.1","@babel/plugin-syntax-jsx":"^7.27.1","@babel/plugin-transform-modules-commonjs":"^7.27.1","@babel/plugin-transform-typescript":"^7.27.1"},"peerDependencies":{"@babel/core":"^7.0.0-0"},"devDependencies":{"@babel/core":"^7.27.1","@babel/helper-plugin-test-runner":"^7.27.1"},"homepage":"https://babel.dev/docs/en/next/babel-preset-typescript","bugs":"https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22area%3A%20typescript%22+is%3Aopen","engines":{"node":">=6.9.0"},"author":"The Babel Team (https://babel.dev/team)","type":"commonjs","_lastModified":"2026-07-07T10:18:11.778Z"}
@@ -1 +1 @@
1
- {"name":"cron-parser","version":"4.9.0","description":"Node.js library for parsing crontab instructions","main":"lib/parser.js","types":"types/index.d.ts","typesVersions":{"<4.1":{"*":["types/ts3/*"]}},"directories":{"test":"test"},"scripts":{"test:tsd":"tsd","test:unit":"TZ=UTC tap ./test/*.js","test:cover":"TZ=UTC tap --coverage-report=html ./test/*.js","lint":"eslint .","lint:fix":"eslint --fix .","test":"npm run lint && npm run test:unit && npm run test:tsd"},"repository":{"type":"git","url":"https://github.com/harrisiirak/cron-parser.git"},"keywords":["cron","crontab","parser"],"author":"Harri Siirak","contributors":["Nicholas Clawson","Daniel Prentis <daniel@salsitasoft.com>","Renault John Lecoultre","Richard Astbury <richard.astbury@gmail.com>","Meaglin Wasabi <Meaglin.wasabi@gmail.com>","Mike Kusold <hello@mikekusold.com>","Alex Kit <alex.kit@atmajs.com>","Santiago Gimeno <santiago.gimeno@gmail.com>","Daniel <darc.tec@gmail.com>","Christian Steininger <christian.steininger.cs@gmail.com>","Mykola Piskovyi <m.piskovyi@gmail.com>","Brian Vaughn <brian.david.vaughn@gmail.com>","Nicholas Clawson <nickclaw@gmail.com>","Yasuhiroki <yasuhiroki.duck@gmail.com>","Nicholas Clawson <nickclaw@gmail.com>","Brendan Warkentin <faazshift@gmail.com>","Charlie Fish <fishcharlie.code@gmail.com>","Ian Graves <ian+diskimage@iangrav.es>","Andy Thompson <me@andytson.com>","Regev Brody <regevbr@gmail.com>"],"license":"MIT","dependencies":{"luxon":"^3.2.1"},"devDependencies":{"eslint":"^8.27.0","sinon":"^15.0.1","tap":"^16.3.3","tsd":"^0.26.0"},"engines":{"node":">=12.0.0"},"browser":{"fs":false},"tap":{"check-coverage":false},"tsd":{"directory":"test","compilerOptions":{"lib":["es2017","dom"]}},"files":["lib","types","LICENSE","README.md"],"_lastModified":"2026-05-22T08:46:50.800Z"}
1
+ {"name":"cron-parser","version":"4.9.0","description":"Node.js library for parsing crontab instructions","main":"lib/parser.js","types":"types/index.d.ts","typesVersions":{"<4.1":{"*":["types/ts3/*"]}},"directories":{"test":"test"},"scripts":{"test:tsd":"tsd","test:unit":"TZ=UTC tap ./test/*.js","test:cover":"TZ=UTC tap --coverage-report=html ./test/*.js","lint":"eslint .","lint:fix":"eslint --fix .","test":"npm run lint && npm run test:unit && npm run test:tsd"},"repository":{"type":"git","url":"https://github.com/harrisiirak/cron-parser.git"},"keywords":["cron","crontab","parser"],"author":"Harri Siirak","contributors":["Nicholas Clawson","Daniel Prentis <daniel@salsitasoft.com>","Renault John Lecoultre","Richard Astbury <richard.astbury@gmail.com>","Meaglin Wasabi <Meaglin.wasabi@gmail.com>","Mike Kusold <hello@mikekusold.com>","Alex Kit <alex.kit@atmajs.com>","Santiago Gimeno <santiago.gimeno@gmail.com>","Daniel <darc.tec@gmail.com>","Christian Steininger <christian.steininger.cs@gmail.com>","Mykola Piskovyi <m.piskovyi@gmail.com>","Brian Vaughn <brian.david.vaughn@gmail.com>","Nicholas Clawson <nickclaw@gmail.com>","Yasuhiroki <yasuhiroki.duck@gmail.com>","Nicholas Clawson <nickclaw@gmail.com>","Brendan Warkentin <faazshift@gmail.com>","Charlie Fish <fishcharlie.code@gmail.com>","Ian Graves <ian+diskimage@iangrav.es>","Andy Thompson <me@andytson.com>","Regev Brody <regevbr@gmail.com>"],"license":"MIT","dependencies":{"luxon":"^3.2.1"},"devDependencies":{"eslint":"^8.27.0","sinon":"^15.0.1","tap":"^16.3.3","tsd":"^0.26.0"},"engines":{"node":">=12.0.0"},"browser":{"fs":false},"tap":{"check-coverage":false},"tsd":{"directory":"test","compilerOptions":{"lib":["es2017","dom"]}},"files":["lib","types","LICENSE","README.md"],"_lastModified":"2026-07-07T10:18:12.039Z"}
@@ -1 +1 @@
1
- {"author":"Felix Geisendörfer <felix@debuggable.com> (http://debuggable.com/)","name":"form-data","description":"A library to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.","version":"4.0.4","repository":{"type":"git","url":"git://github.com/form-data/form-data.git"},"main":"./lib/form_data","browser":"./lib/browser","typings":"./index.d.ts","scripts":{"pretest":"npm run lint","pretests-only":"rimraf coverage test/tmp","tests-only":"istanbul cover test/run.js","posttests-only":"istanbul report lcov text","test":"npm run tests-only","posttest":"npx npm@'>=10.2' audit --production","lint":"eslint --ext=js,mjs .","report":"istanbul report lcov text","ci-lint":"is-node-modern 8 && npm run lint || is-node-not-modern 8","ci-test":"npm run tests-only && npm run browser && npm run report","predebug":"rimraf coverage test/tmp","debug":"verbose=1 ./test/run.js","browser":"browserify -t browserify-istanbul test/run-browser.js | obake --coverage","check":"istanbul check-coverage coverage/coverage*.json","files":"pkgfiles --sort=name","get-version":"node -e \"console.log(require('./package.json').version)\"","update-readme":"sed -i.bak 's/\\/master\\.svg/\\/v'$(npm --silent run get-version)'.svg/g' README.md","postupdate-readme":"mv README.md.bak READ.ME.md.bak","restore-readme":"mv READ.ME.md.bak README.md","prepublish":"not-in-publish || npm run prepublishOnly","prepack":"npm run update-readme","postpack":"npm run restore-readme","version":"auto-changelog && git add CHANGELOG.md","postversion":"auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""},"engines":{"node":">= 6"},"dependencies":{"asynckit":"^0.4.0","combined-stream":"^1.0.8","es-set-tostringtag":"^2.1.0","hasown":"^2.0.2","mime-types":"^2.1.12"},"devDependencies":{"@ljharb/eslint-config":"^21.2.0","auto-changelog":"^2.5.0","browserify":"^13.3.0","browserify-istanbul":"^2.0.0","coveralls":"^3.1.1","cross-spawn":"^6.0.6","eslint":"=8.8.0","fake":"^0.2.2","far":"^0.0.7","formidable":"^1.2.6","in-publish":"^2.0.1","is-node-modern":"^1.0.0","istanbul":"^0.4.5","obake":"^0.1.2","pkgfiles":"^2.3.2","pre-commit":"^1.2.2","predict-v8-randomness":"^1.0.35","puppeteer":"^1.20.0","request":"~2.87.0","rimraf":"^2.7.1","semver":"^6.3.1","tape":"^5.9.0"},"license":"MIT","auto-changelog":{"output":"CHANGELOG.md","template":"keepachangelog","unreleased":false,"commitLimit":false,"backfillLimit":false,"hideCredit":true},"_lastModified":"2026-05-22T08:46:31.149Z"}
1
+ {"author":"Felix Geisendörfer <felix@debuggable.com> (http://debuggable.com/)","name":"form-data","description":"A library to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.","version":"4.0.4","repository":{"type":"git","url":"git://github.com/form-data/form-data.git"},"main":"./lib/form_data","browser":"./lib/browser","typings":"./index.d.ts","scripts":{"pretest":"npm run lint","pretests-only":"rimraf coverage test/tmp","tests-only":"istanbul cover test/run.js","posttests-only":"istanbul report lcov text","test":"npm run tests-only","posttest":"npx npm@'>=10.2' audit --production","lint":"eslint --ext=js,mjs .","report":"istanbul report lcov text","ci-lint":"is-node-modern 8 && npm run lint || is-node-not-modern 8","ci-test":"npm run tests-only && npm run browser && npm run report","predebug":"rimraf coverage test/tmp","debug":"verbose=1 ./test/run.js","browser":"browserify -t browserify-istanbul test/run-browser.js | obake --coverage","check":"istanbul check-coverage coverage/coverage*.json","files":"pkgfiles --sort=name","get-version":"node -e \"console.log(require('./package.json').version)\"","update-readme":"sed -i.bak 's/\\/master\\.svg/\\/v'$(npm --silent run get-version)'.svg/g' README.md","postupdate-readme":"mv README.md.bak READ.ME.md.bak","restore-readme":"mv READ.ME.md.bak README.md","prepublish":"not-in-publish || npm run prepublishOnly","prepack":"npm run update-readme","postpack":"npm run restore-readme","version":"auto-changelog && git add CHANGELOG.md","postversion":"auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""},"engines":{"node":">= 6"},"dependencies":{"asynckit":"^0.4.0","combined-stream":"^1.0.8","es-set-tostringtag":"^2.1.0","hasown":"^2.0.2","mime-types":"^2.1.12"},"devDependencies":{"@ljharb/eslint-config":"^21.2.0","auto-changelog":"^2.5.0","browserify":"^13.3.0","browserify-istanbul":"^2.0.0","coveralls":"^3.1.1","cross-spawn":"^6.0.6","eslint":"=8.8.0","fake":"^0.2.2","far":"^0.0.7","formidable":"^1.2.6","in-publish":"^2.0.1","is-node-modern":"^1.0.0","istanbul":"^0.4.5","obake":"^0.1.2","pkgfiles":"^2.3.2","pre-commit":"^1.2.2","predict-v8-randomness":"^1.0.35","puppeteer":"^1.20.0","request":"~2.87.0","rimraf":"^2.7.1","semver":"^6.3.1","tape":"^5.9.0"},"license":"MIT","auto-changelog":{"output":"CHANGELOG.md","template":"keepachangelog","unreleased":false,"commitLimit":false,"backfillLimit":false,"hideCredit":true},"_lastModified":"2026-07-07T10:17:49.719Z"}
@@ -1 +1 @@
1
- {"name":"jsonata","version":"2.0.6","description":"JSON query and transformation language","module":"jsonata.js","main":"jsonata.js","typings":"jsonata.d.ts","homepage":"http://jsonata.org/","repository":{"type":"git","url":"https://github.com/jsonata-js/jsonata.git"},"scripts":{"pretest":"npm run lint","mocha":"nyc ./node_modules/mocha/bin/_mocha -- \"test/**/*.js\"","test":"npm run mocha","posttest":"npm run check-coverage && npm run browserify && npm run minify && npm run build-es5","build-es5":"npm run mkdir-dist && npm run regenerator && npm run browserify-es5 && npm run minify-es5","check-coverage":"nyc check-coverage --statements 100 --branches 100 --functions 100 --lines 100","browserify":"browserify src/jsonata.js --outfile jsonata.js --standalone jsonata","mkdir-dist":"mkdirp ./dist","regenerator":"babel src --out-dir dist --presets=@babel/env","browserify-es5":"regenerator --include-runtime polyfill.js > jsonata-es5.js; browserify dist/jsonata.js --standalone jsonata >> jsonata-es5.js","prepublishOnly":"npm run browserify && npm run minify && npm run build-es5","lint":"eslint src","doc":"jsdoc --configure jsdoc.json .","cover":"nyc _mocha","minify":"uglifyjs jsonata.js -o jsonata.min.js --compress --mangle","minify-es5":"uglifyjs jsonata-es5.js -o jsonata-es5.min.js --compress --mangle"},"license":"MIT","keywords":["JSON","query","transformation","transform","mapping","path"],"devDependencies":{"@babel/cli":"^7.8.4","@babel/core":"^7.8.4","@babel/preset-env":"^7.8.4","browserify":"^16.5.0","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"8.0.0","eslint-plugin-ideal":"^0.1.3","eslint-plugin-promise":"^6.0.0","jsdoc":"^3.6.3","mkdirp":"^1.0.3","mocha":"^7.0.1","mocha-lcov-reporter":"^1.3.0","nyc":"^15.1.0","regenerator":"^0.14.4","request":"^2.88.2","uglify-es":"^3.3.10"},"engines":{"node":">= 8"},"_lastModified":"2026-05-22T08:46:32.178Z"}
1
+ {"name":"jsonata","version":"2.0.6","description":"JSON query and transformation language","module":"jsonata.js","main":"jsonata.js","typings":"jsonata.d.ts","homepage":"http://jsonata.org/","repository":{"type":"git","url":"https://github.com/jsonata-js/jsonata.git"},"scripts":{"pretest":"npm run lint","mocha":"nyc ./node_modules/mocha/bin/_mocha -- \"test/**/*.js\"","test":"npm run mocha","posttest":"npm run check-coverage && npm run browserify && npm run minify && npm run build-es5","build-es5":"npm run mkdir-dist && npm run regenerator && npm run browserify-es5 && npm run minify-es5","check-coverage":"nyc check-coverage --statements 100 --branches 100 --functions 100 --lines 100","browserify":"browserify src/jsonata.js --outfile jsonata.js --standalone jsonata","mkdir-dist":"mkdirp ./dist","regenerator":"babel src --out-dir dist --presets=@babel/env","browserify-es5":"regenerator --include-runtime polyfill.js > jsonata-es5.js; browserify dist/jsonata.js --standalone jsonata >> jsonata-es5.js","prepublishOnly":"npm run browserify && npm run minify && npm run build-es5","lint":"eslint src","doc":"jsdoc --configure jsdoc.json .","cover":"nyc _mocha","minify":"uglifyjs jsonata.js -o jsonata.min.js --compress --mangle","minify-es5":"uglifyjs jsonata-es5.js -o jsonata-es5.min.js --compress --mangle"},"license":"MIT","keywords":["JSON","query","transformation","transform","mapping","path"],"devDependencies":{"@babel/cli":"^7.8.4","@babel/core":"^7.8.4","@babel/preset-env":"^7.8.4","browserify":"^16.5.0","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"8.0.0","eslint-plugin-ideal":"^0.1.3","eslint-plugin-promise":"^6.0.0","jsdoc":"^3.6.3","mkdirp":"^1.0.3","mocha":"^7.0.1","mocha-lcov-reporter":"^1.3.0","nyc":"^15.1.0","regenerator":"^0.14.4","request":"^2.88.2","uglify-es":"^3.3.10"},"engines":{"node":">= 8"},"_lastModified":"2026-07-07T10:17:50.751Z"}
@@ -1 +1 @@
1
- {"type":"commonjs","_lastModified":"2026-05-22T08:46:30.735Z"}
1
+ {"type":"commonjs","_lastModified":"2026-07-07T10:17:49.297Z"}
@@ -1 +1 @@
1
- {"name":"mime-types","description":"The ultimate javascript content-type utility.","version":"3.0.1","contributors":["Douglas Christopher Wilson <doug@somethingdoug.com>","Jeremiah Senkpiel <fishrock123@rocketmail.com> (https://searchbeam.jit.su)","Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)"],"license":"MIT","keywords":["mime","types"],"repository":"jshttp/mime-types","dependencies":{"mime-db":"^1.54.0"},"devDependencies":{"eslint":"8.33.0","eslint-config-standard":"14.1.1","eslint-plugin-import":"2.27.5","eslint-plugin-markdown":"3.0.0","eslint-plugin-node":"11.1.0","eslint-plugin-promise":"6.1.1","eslint-plugin-standard":"4.1.0","mocha":"10.2.0","nyc":"15.1.0"},"files":["HISTORY.md","LICENSE","index.js","mimeScore.js"],"engines":{"node":">= 0.6"},"scripts":{"lint":"eslint .","test":"mocha --reporter spec test/test.js","test-ci":"nyc --reporter=lcov --reporter=text npm test","test-cov":"nyc --reporter=html --reporter=text npm test"},"_lastModified":"2026-05-22T08:46:31.327Z"}
1
+ {"name":"mime-types","description":"The ultimate javascript content-type utility.","version":"3.0.1","contributors":["Douglas Christopher Wilson <doug@somethingdoug.com>","Jeremiah Senkpiel <fishrock123@rocketmail.com> (https://searchbeam.jit.su)","Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)"],"license":"MIT","keywords":["mime","types"],"repository":"jshttp/mime-types","dependencies":{"mime-db":"^1.54.0"},"devDependencies":{"eslint":"8.33.0","eslint-config-standard":"14.1.1","eslint-plugin-import":"2.27.5","eslint-plugin-markdown":"3.0.0","eslint-plugin-node":"11.1.0","eslint-plugin-promise":"6.1.1","eslint-plugin-standard":"4.1.0","mocha":"10.2.0","nyc":"15.1.0"},"files":["HISTORY.md","LICENSE","index.js","mimeScore.js"],"engines":{"node":">= 0.6"},"scripts":{"lint":"eslint .","test":"mocha --reporter spec test/test.js","test-ci":"nyc --reporter=lcov --reporter=text npm test","test-cov":"nyc --reporter=html --reporter=text npm test"},"_lastModified":"2026-07-07T10:17:49.896Z"}
@@ -1 +1 @@
1
- {"name":"qrcode","description":"QRCode / 2d Barcode api with both server side and client side support using canvas","version":"1.5.4","author":"Ryan Day <soldair@gmail.com>","contributors":["Vincenzo Greco <greco.vincenzo@gmail.com>","Linus Unnebäck <linus@folkdatorn.se>"],"keywords":["qr","code","canvas","qrcode"],"main":"./lib/index.js","browser":{"./lib/index.js":"./lib/browser.js","fs":false},"files":["bin","build","lib","helper"],"homepage":"http://github.com/soldair/node-qrcode","license":"MIT","scripts":{"lint":"standard","pretest":"npm run lint","test":"node --throw-deprecation test.js","build":"rollup -c","prepublish":"npm run build","browser":"node examples/clientsideserver.js"},"bin":{"qrcode":"./bin/qrcode"},"dependencies":{"dijkstrajs":"^1.0.1","pngjs":"^5.0.0","yargs":"^15.3.1"},"devDependencies":{"@babel/core":"^7.9.0","@babel/preset-env":"^7.9.5","@rollup/plugin-commonjs":"^11.1.0","@rollup/plugin-node-resolve":"^7.1.3","browserify":"^16.5.1","canvas":"^2.8.0","canvasutil":"0.0.4","colors":"^1.4.0","express":"^4.17.1","htmlparser2":"^4.1.0","rollup":"^2.6.1","rollup-plugin-babel":"^4.4.0","rollup-plugin-terser":"^5.3.0","sinon":"^9.0.2","standard":"^16.0.4","tap":"^16.2.0"},"repository":{"type":"git","url":"git://github.com/soldair/node-qrcode.git"},"engines":{"node":">=10.13.0"},"standard":{"ignore":["build/","examples/vendors/","lib/core/regex.js"]},"_lastModified":"2026-05-22T08:46:31.756Z"}
1
+ {"name":"qrcode","description":"QRCode / 2d Barcode api with both server side and client side support using canvas","version":"1.5.4","author":"Ryan Day <soldair@gmail.com>","contributors":["Vincenzo Greco <greco.vincenzo@gmail.com>","Linus Unnebäck <linus@folkdatorn.se>"],"keywords":["qr","code","canvas","qrcode"],"main":"./lib/index.js","browser":{"./lib/index.js":"./lib/browser.js","fs":false},"files":["bin","build","lib","helper"],"homepage":"http://github.com/soldair/node-qrcode","license":"MIT","scripts":{"lint":"standard","pretest":"npm run lint","test":"node --throw-deprecation test.js","build":"rollup -c","prepublish":"npm run build","browser":"node examples/clientsideserver.js"},"bin":{"qrcode":"./bin/qrcode"},"dependencies":{"dijkstrajs":"^1.0.1","pngjs":"^5.0.0","yargs":"^15.3.1"},"devDependencies":{"@babel/core":"^7.9.0","@babel/preset-env":"^7.9.5","@rollup/plugin-commonjs":"^11.1.0","@rollup/plugin-node-resolve":"^7.1.3","browserify":"^16.5.1","canvas":"^2.8.0","canvasutil":"0.0.4","colors":"^1.4.0","express":"^4.17.1","htmlparser2":"^4.1.0","rollup":"^2.6.1","rollup-plugin-babel":"^4.4.0","rollup-plugin-terser":"^5.3.0","sinon":"^9.0.2","standard":"^16.0.4","tap":"^16.2.0"},"repository":{"type":"git","url":"git://github.com/soldair/node-qrcode.git"},"engines":{"node":">=10.13.0"},"standard":{"ignore":["build/","examples/vendors/","lib/core/regex.js"]},"_lastModified":"2026-07-07T10:17:50.339Z"}
@@ -84,6 +84,7 @@ var import_plugin2 = __toESM(require("./features/_deprecated-json-parse/plugin")
84
84
  var import_Plugin = require("./features/aggregate/Plugin");
85
85
  var import_Plugin2 = require("./features/delay/Plugin");
86
86
  var import_Plugin3 = require("./features/dynamic-calculation/Plugin");
87
+ var import_exit_branch = require("./features/exit-branch");
87
88
  var import_interception = require("./features/interception");
88
89
  var import_Plugin4 = require("./features/loop/Plugin");
89
90
  var import_Plugin5 = require("./features/manual/Plugin");
@@ -210,6 +211,7 @@ class PluginWorkflowServer extends (_a = import_server.Plugin) {
210
211
  this.addFeature(import_omni_trigger.PluginOmniTrigger);
211
212
  this.addFeature(import_plugin5.PluginTriggerInstruction);
212
213
  this.addFeature(import_plugin3.default);
214
+ this.addFeature(import_exit_branch.PluginExitBranch);
213
215
  }
214
216
  getLogger(workflowId) {
215
217
  const now = /* @__PURE__ */ new Date();
@@ -507,12 +509,13 @@ class PluginWorkflowServer extends (_a = import_server.Plugin) {
507
509
  await this.process(...next);
508
510
  }
509
511
  this.executing = null;
510
- if (next) {
512
+ if (next || this.events.length || this.pending.length) {
511
513
  this.dispatch();
512
514
  }
513
515
  })();
514
516
  }
515
517
  async process(execution, job, options = {}) {
518
+ var _a2, _b;
516
519
  if (execution.status === import_constants.EXECUTION_STATUS.QUEUEING) {
517
520
  await execution.update({ status: import_constants.EXECUTION_STATUS.STARTED }, { transaction: options.transaction });
518
521
  }
@@ -522,9 +525,12 @@ class PluginWorkflowServer extends (_a = import_server.Plugin) {
522
525
  try {
523
526
  await (job ? processor.resume(job) : processor.start());
524
527
  logger.info(`execution (${execution.id}) finished with status: ${execution.status}`, { execution });
528
+ let shouldDeleteExecution = false;
525
529
  if (execution.status !== 0) {
526
530
  const executionDuration = execution.updatedAt.getTime() - execution.createdAt.getTime();
527
531
  await execution.update({ executionCost: executionDuration }, { transaction: options.transaction });
532
+ const deleteOnStatus = (_b = (_a2 = execution.workflow) == null ? void 0 : _a2.options) == null ? void 0 : _b.deleteExecutionOnStatus;
533
+ shouldDeleteExecution = Array.isArray(deleteOnStatus) && deleteOnStatus.includes(execution.status);
528
534
  }
529
535
  if (execution.status && execution.parentNode) {
530
536
  const { database } = execution.constructor;
@@ -534,13 +540,19 @@ class PluginWorkflowServer extends (_a = import_server.Plugin) {
534
540
  const job2 = jobs.find((v) => v.status === import_constants.JOB_STATUS.PENDING && v.nodeId === execution.parentNode);
535
541
  if (job2) {
536
542
  const lastSavedJob = processor.lastSavedJob;
537
- job2.status = execution.status;
538
- job2.result = lastSavedJob.result || execution.context;
543
+ job2.set({
544
+ status: execution.status,
545
+ result: (lastSavedJob == null ? void 0 : lastSavedJob.result) ?? execution.context
546
+ });
539
547
  await this.resume(job2);
540
548
  } else {
541
549
  logger.error(`execution (${execution.id}) error: parent job not found`);
542
550
  }
543
551
  }
552
+ if (shouldDeleteExecution) {
553
+ await execution.destroy({ transaction: options.transaction });
554
+ return processor;
555
+ }
544
556
  } catch (err) {
545
557
  logger.error(`execution (${execution.id}) error: ${err.message}`, err);
546
558
  }
@@ -1,3 +1,3 @@
1
- import { CollectionOptions } from '@tego/server';
1
+ import type { CollectionOptions } from '@tego/server';
2
2
  declare const _default: CollectionOptions;
3
3
  export default _default;
@@ -1,3 +1,3 @@
1
- import { CollectionOptions } from '@tego/server';
1
+ import type { CollectionOptions } from '@tego/server';
2
2
  declare const _default: CollectionOptions;
3
3
  export default _default;
@@ -1,3 +1,3 @@
1
- import { CollectionOptions } from '@tego/server';
1
+ import type { CollectionOptions } from '@tego/server';
2
2
  declare const _default: CollectionOptions;
3
3
  export default _default;
@@ -1,3 +1,3 @@
1
- import { CollectionOptions } from '@tego/server';
1
+ import type { CollectionOptions } from '@tego/server';
2
2
  declare const _default: CollectionOptions;
3
3
  export default _default;
@@ -1,2 +1,2 @@
1
- import { CollectionOptions } from '@tego/server';
1
+ import type { CollectionOptions } from '@tego/server';
2
2
  export default function (): CollectionOptions;
@@ -0,0 +1,4 @@
1
+ import Instruction from '../../instructions';
2
+ export declare class ExitBranchInstruction extends Instruction {
3
+ run(node: any, prevJob: any, processor: any): Promise<any>;
4
+ }
@@ -0,0 +1,51 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var ExitBranchInstruction_exports = {};
29
+ __export(ExitBranchInstruction_exports, {
30
+ ExitBranchInstruction: () => ExitBranchInstruction
31
+ });
32
+ module.exports = __toCommonJS(ExitBranchInstruction_exports);
33
+ var import_constants = require("../../constants");
34
+ var import_instructions = __toESM(require("../../instructions"));
35
+ class ExitBranchInstruction extends import_instructions.default {
36
+ async run(node, prevJob, processor) {
37
+ const job = await processor.saveJob({
38
+ result: (prevJob == null ? void 0 : prevJob.result) ?? null,
39
+ status: import_constants.JOB_STATUS.RESOLVED,
40
+ upstreamId: (prevJob == null ? void 0 : prevJob.id) ?? null,
41
+ nodeId: node.id,
42
+ nodeKey: node.key
43
+ });
44
+ await processor.end(node, job);
45
+ return null;
46
+ }
47
+ }
48
+ // Annotate the CommonJS export names for ESM import in node:
49
+ 0 && (module.exports = {
50
+ ExitBranchInstruction
51
+ });
@@ -0,0 +1,4 @@
1
+ import { Plugin } from '@tego/server';
2
+ export declare class PluginExitBranch extends Plugin {
3
+ load(): Promise<void>;
4
+ }
@@ -0,0 +1,45 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var Plugin_exports = {};
29
+ __export(Plugin_exports, {
30
+ PluginExitBranch: () => PluginExitBranch
31
+ });
32
+ module.exports = __toCommonJS(Plugin_exports);
33
+ var import_server = require("@tego/server");
34
+ var import_Plugin = __toESM(require("../../Plugin"));
35
+ var import_ExitBranchInstruction = require("./ExitBranchInstruction");
36
+ class PluginExitBranch extends import_server.Plugin {
37
+ async load() {
38
+ const workflowPlugin = this.app.pm.get(import_Plugin.default);
39
+ workflowPlugin.registerInstruction("exit-branch", import_ExitBranchInstruction.ExitBranchInstruction);
40
+ }
41
+ }
42
+ // Annotate the CommonJS export names for ESM import in node:
43
+ 0 && (module.exports = {
44
+ PluginExitBranch
45
+ });
@@ -0,0 +1 @@
1
+ export * from './Plugin';
@@ -0,0 +1,21 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var exit_branch_exports = {};
16
+ module.exports = __toCommonJS(exit_branch_exports);
17
+ __reExport(exit_branch_exports, require("./Plugin"), module.exports);
18
+ // Annotate the CommonJS export names for ESM import in node:
19
+ 0 && (module.exports = {
20
+ ...require("./Plugin")
21
+ });
@@ -126,8 +126,12 @@ const _RequestInterceptionTrigger = class _RequestInterceptionTrigger extends im
126
126
  }
127
127
  await next();
128
128
  };
129
+ const errorHandlerPlugin = workflow.app.pm.get("error-handler") || workflow.app.pm.get(import_module_error_handler.default);
130
+ if (!(errorHandlerPlugin == null ? void 0 : errorHandlerPlugin.errorHandler)) {
131
+ throw new Error("Workflow request interception requires the error-handler plugin");
132
+ }
129
133
  workflow.app.use(this.middleware, { tag: "workflowFilter", after: "dataSource" });
130
- workflow.app.pm.get(import_module_error_handler.default).errorHandler.register(
134
+ errorHandlerPlugin.errorHandler.register(
131
135
  (err) => err instanceof RequestInterceptionError,
132
136
  async (err, ctx) => {
133
137
  ctx.body = {
@@ -168,9 +168,13 @@ const _OmniTrigger = class _OmniTrigger extends import_triggers.default {
168
168
  }
169
169
  return this.trigger(ctx, triggerWorkflows);
170
170
  };
171
+ const errorHandlerPlugin = this.workflow.app.pm.get("error-handler") || this.workflow.app.pm.get(import_module_error_handler.default);
172
+ if (!(errorHandlerPlugin == null ? void 0 : errorHandlerPlugin.errorHandler)) {
173
+ throw new Error("Workflow omni trigger requires the error-handler plugin");
174
+ }
171
175
  this.workflow.app.resourcer.registerActionHandler("trigger", this.triggerAction);
172
176
  this.workflow.app.acl.allow("*", "trigger", "loggedIn");
173
- this.workflow.app.pm.get(import_module_error_handler.default).errorHandler.register(
177
+ errorHandlerPlugin.errorHandler.register(
174
178
  (err) => err instanceof CustomActionInterceptionError,
175
179
  async (err, ctx) => {
176
180
  ctx.body = {
@@ -1,16 +1,7 @@
1
1
  import Instruction from '../../instructions';
2
2
  import Processor from '../../Processor';
3
3
  export declare class TriggerInstruction extends Instruction {
4
- run(node: any, input: any, processor: Processor): Promise<{
5
- status: -1;
6
- result: string;
7
- } | {
8
- status: 1;
9
- result: any;
10
- } | {
11
- status: 0;
12
- result?: undefined;
13
- }>;
4
+ run(node: any, input: any, processor: Processor): Promise<any>;
14
5
  /**
15
6
  * 将数据按照 model 配置进行字段映射
16
7
  */
@@ -114,14 +114,18 @@ class TriggerInstruction extends import_instructions.default {
114
114
  result
115
115
  };
116
116
  } else {
117
+ const pendingJob = await processor.saveJob({
118
+ status: import_constants.JOB_STATUS.PENDING,
119
+ nodeId: node.id,
120
+ nodeKey: node.key,
121
+ upstreamId: (input == null ? void 0 : input.id) ?? null
122
+ });
117
123
  this.workflow.trigger(wf, triggerData, {
118
124
  ...processor.options,
119
125
  parentNode: node.id,
120
126
  parent: processor.execution
121
127
  });
122
- return {
123
- status: import_constants.JOB_STATUS.PENDING
124
- };
128
+ return pendingJob;
125
129
  }
126
130
  } catch (error) {
127
131
  this.workflow.getLogger(wf.id).error(`Error triggering sub-workflow ${workflowKey}:`, error);
@@ -42,7 +42,7 @@ class QueryInstruction extends import__.Instruction {
42
42
  return set;
43
43
  }, /* @__PURE__ */ new Set())
44
44
  ) : options.appends;
45
- let pageArgs = paginate ? import_server.utils.pageArgsToLimitArgs(page, pageSize) : {};
45
+ let pageArgs = paginate ? import_server.utils.pageArgsToLimitArgs(page || import_server.DEFAULT_PAGE, pageSize || import_server.DEFAULT_PER_PAGE) : {};
46
46
  const result = await (multiple ? repository.find : repository.findOne).call(repository, {
47
47
  ...options,
48
48
  ...otherOptions,
@@ -53,7 +53,7 @@ class SelectInstruction extends import__.default {
53
53
  appends.push(options.summary);
54
54
  }
55
55
  }
56
- let pageArgs = paginate ? import_server.utils.pageArgsToLimitArgs(page, pageSize) : {};
56
+ let pageArgs = paginate ? import_server.utils.pageArgsToLimitArgs(page || import_server.DEFAULT_PAGE, pageSize || import_server.DEFAULT_PER_PAGE) : {};
57
57
  const data = await (multiple ? repository.find : repository.findOne).call(repository, {
58
58
  ...options,
59
59
  ...otherOptions,
@@ -307,7 +307,6 @@ class ScheduleTrigger {
307
307
  const { collection } = workflow.config;
308
308
  const [dataSourceName, collectionName] = (0, import_server.parseCollectionName)(collection);
309
309
  const event = `${collectionName}.afterSaveWithAssociations`;
310
- const eventKey = `${collection}.afterSaveWithAssociations`;
311
310
  const name = getHookId(workflow, event);
312
311
  if (this.events.has(name)) {
313
312
  return;
@@ -329,13 +328,12 @@ class ScheduleTrigger {
329
328
  const { collection } = workflow.config;
330
329
  const [dataSourceName, collectionName] = (0, import_server.parseCollectionName)(collection);
331
330
  const event = `${collectionName}.afterSaveWithAssociations`;
332
- const eventKey = `${collection}.afterSaveWithAssociations`;
333
331
  const name = getHookId(workflow, event);
334
- if (this.events.has(eventKey)) {
332
+ if (this.events.has(name)) {
335
333
  const listener = this.events.get(name);
336
334
  const { db } = this.workflow.app.dataSourceManager.dataSources.get(dataSourceName).collectionManager;
337
335
  db.off(event, listener);
338
- this.events.delete(eventKey);
336
+ this.events.delete(name);
339
337
  }
340
338
  }
341
339
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tachybase/module-workflow",
3
3
  "displayName": "Workflow",
4
- "version": "1.6.21",
4
+ "version": "1.6.23",
5
5
  "description": "A powerful BPM tool that provides foundational support for business automation, with the capability to extend unlimited triggers and nodes.",
6
6
  "keywords": [
7
7
  "Workflow"
@@ -25,13 +25,14 @@
25
25
  "@babel/preset-react": "7.27.1",
26
26
  "@babel/preset-typescript": "7.27.1",
27
27
  "@dnd-kit/core": "^6.3.1",
28
- "@tachybase/schema": "1.6.11",
29
- "@tachybase/test": "1.6.11",
30
- "@tego/client": "1.6.11",
31
- "@tego/server": "1.6.11",
28
+ "@tachybase/schema": "1.6.16",
29
+ "@tachybase/test": "1.6.16",
30
+ "@tego/client": "1.6.16",
31
+ "@tego/server": "1.6.16",
32
32
  "@types/babel__core": "7.20.5",
33
33
  "@types/ejs": "^3.1.5",
34
34
  "@types/file-saver": "^2.0.7",
35
+ "@types/jsonwebtoken": "^8.5.9",
35
36
  "@types/lodash": "^4.17.20",
36
37
  "@types/qrcode": "^1.5.5",
37
38
  "antd": "5.22.5",
@@ -41,6 +42,9 @@
41
42
  "file-saver": "^2.0.5",
42
43
  "form-data": "^4.0.4",
43
44
  "jsonata": "^2.0.6",
45
+ "jsonwebtoken": "^8.5.1",
46
+ "koa": "^2.14.1",
47
+ "koa-bodyparser": "^4.3.0",
44
48
  "lodash": "4.17.21",
45
49
  "lru-cache": "11.1.0",
46
50
  "mime-types": "^3.0.1",
@@ -50,12 +54,12 @@
50
54
  "react-js-cron": "^3.2.0",
51
55
  "react-router-dom": "6.28.1",
52
56
  "sequelize": "6.37.5",
53
- "@tachybase/client": "1.6.21",
54
- "@tachybase/module-collection": "1.6.21",
55
- "@tachybase/module-error-handler": "1.6.21",
56
- "@tachybase/module-user": "1.6.21",
57
- "@tachybase/module-ui-schema": "1.6.21",
58
- "@tachybase/plugin-workflow-test": "1.6.21"
57
+ "@tachybase/client": "1.6.23",
58
+ "@tachybase/module-error-handler": "1.6.23",
59
+ "@tachybase/module-ui-schema": "1.6.23",
60
+ "@tachybase/module-user": "1.6.23",
61
+ "@tachybase/plugin-workflow-test": "1.6.23",
62
+ "@tachybase/module-collection": "1.6.23"
59
63
  },
60
64
  "description.zh-CN": "一个强大的 BPM 工具,为业务自动化提供基础支持,并且可任意扩展更多的触发器和节点。",
61
65
  "displayName.zh-CN": "工作流",