@tachybase/module-workflow 1.3.24 → 1.4.0
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/client/components/ColumnExecutedTime.d.ts +1 -0
- package/dist/client/components/ColumnShowEventSource.d.ts +1 -0
- package/dist/client/index.d.ts +2 -1
- package/dist/client/index.js +55 -54
- package/dist/client/locale/index.d.ts +1 -1
- package/dist/client/provider/EventSourceProvider.d.ts +7 -0
- package/dist/client/schemas/workflows.d.ts +8 -0
- package/dist/externalVersion.js +11 -11
- package/dist/locale/en-US.json +6 -0
- package/dist/locale/es-ES.json +7 -0
- package/dist/locale/fr-FR.json +7 -0
- package/dist/locale/ja-JP.json +7 -0
- package/dist/locale/ko_KR.json +7 -0
- package/dist/locale/pt-BR.json +7 -0
- package/dist/locale/ru-RU.json +7 -0
- package/dist/locale/tr-TR.json +7 -0
- package/dist/locale/zh-CN.json +10 -0
- package/dist/node_modules/@babel/core/lib/index.js +12 -12
- package/dist/node_modules/@babel/core/package.json +1 -1
- package/dist/node_modules/@babel/preset-env/lib/index.js +82 -82
- package/dist/node_modules/@babel/preset-env/package.json +1 -1
- package/dist/node_modules/@babel/preset-react/lib/index.js +12 -12
- package/dist/node_modules/@babel/preset-react/package.json +1 -1
- package/dist/node_modules/@babel/preset-typescript/lib/index.js +12 -12
- package/dist/node_modules/@babel/preset-typescript/package.json +1 -1
- package/dist/node_modules/cron-parser/package.json +1 -1
- package/dist/node_modules/form-data/package.json +1 -1
- package/dist/node_modules/jsonata/package.json +1 -1
- package/dist/node_modules/lru-cache/package.json +1 -1
- package/dist/node_modules/mime-types/package.json +1 -1
- package/dist/node_modules/qrcode/package.json +1 -1
- package/dist/server/actions/executions.js +2 -2
- package/dist/server/actions/workflows.js +25 -10
- package/dist/server/collections/1-users_jobs.js +1 -1
- package/dist/server/collections/executions.js +1 -1
- package/dist/server/collections/jobs.js +1 -1
- package/dist/server/collections/workflowCategories.js +4 -0
- package/dist/server/collections/workflows.js +6 -0
- package/dist/server/features/loop/LoopInstruction.d.ts +4 -0
- package/dist/server/features/loop/LoopInstruction.js +10 -2
- package/dist/server/features/request/RequestInstruction.js +7 -0
- package/dist/server/features/script/script.instruction.js +1 -1
- package/dist/server/features/trigger-instruction/TriggerInstruction.d.ts +1 -1
- package/dist/server/features/trigger-instruction/TriggerInstruction.js +45 -16
- package/dist/server/instructions/CreateInstruction.js +1 -1
- package/dist/server/instructions/UpdateInstruction.d.ts +4 -1
- package/dist/server/instructions/UpdateInstruction.js +6 -2
- package/dist/server/instructions/UpdateOrCreateInstruction.js +1 -1
- package/dist/server/migrations/20251104174604-add-sort-to-workflows.d.ts +6 -0
- package/dist/server/migrations/20251104174604-add-sort-to-workflows.js +88 -0
- package/package.json +13 -13
- /package/dist/client/{ExecutionContextProvider.d.ts → provider/ExecutionContextProvider.d.ts} +0 -0
- /package/dist/client/{ExecutionResourceProvider.d.ts → provider/ExecutionResourceProvider.d.ts} +0 -0
|
@@ -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":"2025-
|
|
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":"2025-11-10T07:37:41.616Z"}
|
|
@@ -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":"2025-
|
|
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":"2025-11-10T07:37:41.846Z"}
|
|
@@ -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":"2025-
|
|
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":"2025-11-10T07:37:28.523Z"}
|
|
@@ -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":"2025-
|
|
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":"2025-11-10T07:37:29.492Z"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"type":"commonjs","_lastModified":"2025-
|
|
1
|
+
{"type":"commonjs","_lastModified":"2025-11-10T07:37:28.137Z"}
|
|
@@ -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":"2025-
|
|
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":"2025-11-10T07:37:28.698Z"}
|
|
@@ -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":"2025-
|
|
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":"2025-11-10T07:37:29.106Z"}
|
|
@@ -116,11 +116,11 @@ async function retry(context, next) {
|
|
|
116
116
|
try {
|
|
117
117
|
const result = await plugin.trigger(workflow, execution.context, { httpContext: context });
|
|
118
118
|
context.app.logger.info(result);
|
|
119
|
-
context.state.messages.push({ message: "Execute
|
|
119
|
+
context.state.messages.push({ message: context.t("Execute ended", { ns: "workflow" }) });
|
|
120
120
|
context.body = { executionId: execution.id };
|
|
121
121
|
} catch (error) {
|
|
122
122
|
context.app.logger.error(`Failed to retry execution ${execution.id}: ${error.message}`);
|
|
123
|
-
context.throw(500, "Failed to retry execution");
|
|
123
|
+
context.throw(500, context.t("Failed to retry execution", { ns: "workflow" }));
|
|
124
124
|
}
|
|
125
125
|
await next();
|
|
126
126
|
}
|
|
@@ -182,6 +182,7 @@ async function load(context, next) {
|
|
|
182
182
|
await next();
|
|
183
183
|
}
|
|
184
184
|
async function test(context, next) {
|
|
185
|
+
var _a;
|
|
185
186
|
const plugin = context.app.getPlugin(import_Plugin.default);
|
|
186
187
|
const repository = import_server.utils.getRepositoryFromParams(context);
|
|
187
188
|
const { filterByTk, filter = {}, values = {} } = context.action.params;
|
|
@@ -200,14 +201,16 @@ async function test(context, next) {
|
|
|
200
201
|
const result = await plugin.trigger(
|
|
201
202
|
workflow,
|
|
202
203
|
{
|
|
203
|
-
data: values.data,
|
|
204
|
-
user: context.state.currentUser
|
|
204
|
+
data: values.data || {},
|
|
205
|
+
user: ((_a = context == null ? void 0 : context.state) == null ? void 0 : _a.currentUser) || {}
|
|
205
206
|
},
|
|
206
207
|
{ httpContext: context }
|
|
207
208
|
);
|
|
208
209
|
context.app.logger.info(result);
|
|
209
|
-
context.state.messages.push({
|
|
210
|
-
|
|
210
|
+
context.state.messages.push({
|
|
211
|
+
message: context.t("Test execution ended", { ns: "workflow" })
|
|
212
|
+
});
|
|
213
|
+
context.body = result.execution;
|
|
211
214
|
}
|
|
212
215
|
async function revision(context, next) {
|
|
213
216
|
const plugin = context.app.getPlugin(import_Plugin.default);
|
|
@@ -300,13 +303,25 @@ async function retry(context, next) {
|
|
|
300
303
|
sort: ["-createdAt"]
|
|
301
304
|
});
|
|
302
305
|
if (!execution) {
|
|
303
|
-
context.state.messages.push({
|
|
306
|
+
context.state.messages.push({
|
|
307
|
+
message: context.t("No execution records found for this workflow.", { ns: "workflow" })
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
try {
|
|
311
|
+
const result = await plugin.trigger(workflow, execution.context, { httpContext: context });
|
|
312
|
+
context.app.logger.info(result);
|
|
313
|
+
context.state.messages.push({ message: context.t("Execute ended", { ns: "workflow" }) });
|
|
314
|
+
context.body = result.execution;
|
|
315
|
+
} catch (error) {
|
|
316
|
+
context.app.logger.error(`Failed to retry execution ${execution.id}: ${error.message}`);
|
|
317
|
+
context.state.messages.push({
|
|
318
|
+
message: context.t("Failed to retry execution", { ns: "workflow" }),
|
|
319
|
+
error: error.message
|
|
320
|
+
});
|
|
321
|
+
context.body = {
|
|
322
|
+
error: error.message
|
|
323
|
+
};
|
|
304
324
|
}
|
|
305
|
-
const executionId = execution.id;
|
|
306
|
-
const result = await plugin.trigger(workflow, execution.context, { httpContext: context });
|
|
307
|
-
context.app.logger.info(result);
|
|
308
|
-
context.state.messages.push({ message: "Execute successfully" });
|
|
309
|
-
context.body = { executionId };
|
|
310
325
|
await next();
|
|
311
326
|
}
|
|
312
327
|
async function sync(context, next) {
|
|
@@ -29,6 +29,7 @@ function workflows_default() {
|
|
|
29
29
|
updatedAt: true,
|
|
30
30
|
createdBy: true,
|
|
31
31
|
updatedBy: true,
|
|
32
|
+
sortable: "sort",
|
|
32
33
|
fields: [
|
|
33
34
|
{
|
|
34
35
|
name: "key",
|
|
@@ -128,6 +129,11 @@ function workflows_default() {
|
|
|
128
129
|
type: "date",
|
|
129
130
|
name: "initAt",
|
|
130
131
|
defaultValue: () => /* @__PURE__ */ new Date()
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
name: "sort",
|
|
135
|
+
type: "bigInt",
|
|
136
|
+
interface: "sort"
|
|
131
137
|
}
|
|
132
138
|
],
|
|
133
139
|
// NOTE: use unique index for avoiding deadlock in mysql when setCurrent
|
|
@@ -81,19 +81,27 @@ class LoopInstruction_default extends import__.Instruction {
|
|
|
81
81
|
return job;
|
|
82
82
|
}
|
|
83
83
|
getScope(node, index, processor) {
|
|
84
|
+
var _a, _b, _c;
|
|
84
85
|
const target = processor.getParsedValue(node.config.target, node.id);
|
|
85
86
|
const targets = (Array.isArray(target) ? target : [target]).filter((t) => t != null);
|
|
86
87
|
const length = getTargetLength(target);
|
|
87
88
|
const item = typeof target === "number" ? index : targets[index];
|
|
89
|
+
const params = (_c = (_b = (_a = processor.options) == null ? void 0 : _a.httpContext) == null ? void 0 : _b.action) == null ? void 0 : _c.params;
|
|
90
|
+
const loopData = (params == null ? void 0 : params.loopLength) ? {
|
|
91
|
+
loopLength: params.loopLength,
|
|
92
|
+
loopIndex: Number(params.loopIndex) + 1
|
|
93
|
+
} : null;
|
|
88
94
|
const result = {
|
|
89
95
|
item,
|
|
90
96
|
index,
|
|
91
|
-
length
|
|
97
|
+
length,
|
|
98
|
+
loopData
|
|
92
99
|
};
|
|
93
100
|
this.workflow.noticeManager.notify("workflow:regular", {
|
|
94
101
|
msg: "progress",
|
|
95
102
|
current: index,
|
|
96
|
-
total: length
|
|
103
|
+
total: length,
|
|
104
|
+
loopData
|
|
97
105
|
});
|
|
98
106
|
return result;
|
|
99
107
|
}
|
|
@@ -135,6 +135,13 @@ class RequestInstruction_default extends import__.Instruction {
|
|
|
135
135
|
const config = processor.getParsedValue(node.config, node.id);
|
|
136
136
|
const { workflow } = processor.execution;
|
|
137
137
|
const sync = this.workflow.isWorkflowSync(workflow);
|
|
138
|
+
const loopData = prevJob.result;
|
|
139
|
+
if (loopData["length"]) {
|
|
140
|
+
config.params.push(
|
|
141
|
+
{ name: "loopLength", value: loopData["length"] },
|
|
142
|
+
{ name: "loopIndex", value: loopData["index"] }
|
|
143
|
+
);
|
|
144
|
+
}
|
|
138
145
|
if (sync) {
|
|
139
146
|
try {
|
|
140
147
|
const response = await request(config, context);
|
|
@@ -179,7 +179,7 @@ async function convertByTsCode(code, data, processor) {
|
|
|
179
179
|
app.logger.error("Cloud Component ", { error });
|
|
180
180
|
}
|
|
181
181
|
const func = sandbox.exports.default;
|
|
182
|
-
const result = await func(data, {
|
|
182
|
+
const result = await func(data || {}, {
|
|
183
183
|
...options
|
|
184
184
|
});
|
|
185
185
|
return result;
|
|
@@ -34,29 +34,58 @@ var import_constants = require("../../constants");
|
|
|
34
34
|
var import_instructions = __toESM(require("../../instructions"));
|
|
35
35
|
class TriggerInstruction extends import_instructions.default {
|
|
36
36
|
async run(node, input, processor) {
|
|
37
|
+
var _a;
|
|
37
38
|
const workflowKey = node.config.workflowKey;
|
|
38
39
|
const wfRepo = this.workflow.db.getRepository("workflows");
|
|
39
40
|
const wf = await wfRepo.findOne({ filter: { key: workflowKey, enabled: true } });
|
|
40
|
-
if (wf
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
if (!wf) {
|
|
42
|
+
return {
|
|
43
|
+
status: import_constants.JOB_STATUS.FAILED,
|
|
44
|
+
result: `Workflow with key "${workflowKey}" not found or disabled`
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
const dangerousNodeTypes = ["data-mapping", "script", "js-parse", "json-parse"];
|
|
48
|
+
const hasDangerousNodes = (_a = wf.nodes) == null ? void 0 : _a.some((node2) => dangerousNodeTypes.includes(node2.type));
|
|
49
|
+
if (hasDangerousNodes) {
|
|
50
|
+
this.workflow.getLogger(wf.id).warn(
|
|
51
|
+
`Triggering workflow ${workflowKey} contains potentially dangerous nodes: ${dangerousNodeTypes.join(", ")}`
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
if (wf.sync) {
|
|
56
|
+
const p = await this.workflow.trigger(wf, input.result, processor.options);
|
|
57
|
+
if (!p) {
|
|
58
|
+
return {
|
|
59
|
+
status: import_constants.JOB_STATUS.FAILED,
|
|
60
|
+
result: "Failed to trigger sub-workflow"
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
const { lastSavedJob } = p;
|
|
64
|
+
if ((lastSavedJob == null ? void 0 : lastSavedJob.status) === import_constants.JOB_STATUS.ERROR) {
|
|
65
|
+
return {
|
|
66
|
+
status: import_constants.JOB_STATUS.FAILED,
|
|
67
|
+
result: `Sub-workflow execution failed: ${lastSavedJob.result}`
|
|
68
|
+
};
|
|
69
|
+
}
|
|
43
70
|
return {
|
|
44
|
-
status: import_constants.JOB_STATUS.
|
|
71
|
+
status: import_constants.JOB_STATUS.RESOLVED,
|
|
72
|
+
result: lastSavedJob == null ? void 0 : lastSavedJob.result
|
|
73
|
+
};
|
|
74
|
+
} else {
|
|
75
|
+
this.workflow.trigger(wf, input.result, {
|
|
76
|
+
...processor.options,
|
|
77
|
+
parentNode: node.id,
|
|
78
|
+
parent: processor.execution
|
|
79
|
+
});
|
|
80
|
+
return {
|
|
81
|
+
status: import_constants.JOB_STATUS.PENDING
|
|
45
82
|
};
|
|
46
83
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
status: import_constants.JOB_STATUS.RESOLVED,
|
|
50
|
-
result: lastSavedJob == null ? void 0 : lastSavedJob.result
|
|
51
|
-
};
|
|
52
|
-
} else {
|
|
53
|
-
this.workflow.trigger(wf, input.result, {
|
|
54
|
-
...processor.options,
|
|
55
|
-
parentNode: node.id,
|
|
56
|
-
parent: processor.execution
|
|
57
|
-
});
|
|
84
|
+
} catch (error) {
|
|
85
|
+
this.workflow.getLogger(wf.id).error(`Error triggering sub-workflow ${workflowKey}:`, error);
|
|
58
86
|
return {
|
|
59
|
-
status: import_constants.JOB_STATUS.
|
|
87
|
+
status: import_constants.JOB_STATUS.FAILED,
|
|
88
|
+
result: `Sub-workflow trigger error: ${error.message}`
|
|
60
89
|
};
|
|
61
90
|
}
|
|
62
91
|
}
|
|
@@ -3,7 +3,10 @@ import type Processor from '../Processor';
|
|
|
3
3
|
import type { FlowNodeModel } from '../types';
|
|
4
4
|
export declare class UpdateInstruction extends Instruction {
|
|
5
5
|
run(node: FlowNodeModel, input: any, processor: Processor): Promise<{
|
|
6
|
-
result:
|
|
6
|
+
result: {
|
|
7
|
+
length: any;
|
|
8
|
+
data: any;
|
|
9
|
+
};
|
|
7
10
|
status: 1;
|
|
8
11
|
}>;
|
|
9
12
|
}
|
|
@@ -38,6 +38,7 @@ var import_lodash = __toESM(require("lodash"));
|
|
|
38
38
|
var import_mime_types = __toESM(require("mime-types"));
|
|
39
39
|
var import__ = require(".");
|
|
40
40
|
var import_constants = require("../constants");
|
|
41
|
+
var import_utils = require("../utils");
|
|
41
42
|
class UpdateInstruction extends import__.Instruction {
|
|
42
43
|
async run(node, input, processor) {
|
|
43
44
|
var _a, _b;
|
|
@@ -75,7 +76,7 @@ class UpdateInstruction extends import__.Instruction {
|
|
|
75
76
|
createById,
|
|
76
77
|
updatedById,
|
|
77
78
|
storageId
|
|
78
|
-
} = resource;
|
|
79
|
+
} = resource || {};
|
|
79
80
|
return {
|
|
80
81
|
id,
|
|
81
82
|
createdAt,
|
|
@@ -186,7 +187,10 @@ class UpdateInstruction extends import__.Instruction {
|
|
|
186
187
|
transaction: this.workflow.useDataSourceTransaction(dataSourceName, processor.transaction)
|
|
187
188
|
});
|
|
188
189
|
return {
|
|
189
|
-
result:
|
|
190
|
+
result: {
|
|
191
|
+
length: (result == null ? void 0 : result.length) ?? result,
|
|
192
|
+
data: (0, import_utils.toJSON)(result) ?? []
|
|
193
|
+
},
|
|
190
194
|
status: import_constants.JOB_STATUS.RESOLVED
|
|
191
195
|
};
|
|
192
196
|
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var add_sort_to_workflows_exports = {};
|
|
19
|
+
__export(add_sort_to_workflows_exports, {
|
|
20
|
+
default: () => AddSortToWorkflowsMigration
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(add_sort_to_workflows_exports);
|
|
23
|
+
var import_server = require("@tego/server");
|
|
24
|
+
class AddSortToWorkflowsMigration extends import_server.Migration {
|
|
25
|
+
constructor() {
|
|
26
|
+
super(...arguments);
|
|
27
|
+
this.on = "afterLoad";
|
|
28
|
+
this.appVersion = "<1.4.0";
|
|
29
|
+
}
|
|
30
|
+
async up() {
|
|
31
|
+
var _a, _b, _c, _d;
|
|
32
|
+
const queryInterface = this.db.sequelize.getQueryInterface();
|
|
33
|
+
const tableName = "workflows";
|
|
34
|
+
const tables = await queryInterface.showAllTables();
|
|
35
|
+
if (!tables.includes(tableName)) {
|
|
36
|
+
this.app.logger.info(`[migration skipped] table ${tableName} does not exist`);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const tableDescription = await queryInterface.describeTable(tableName);
|
|
40
|
+
if (tableDescription.sort) {
|
|
41
|
+
this.app.logger.info(`[migration skipped] column sort already exists in ${tableName}`);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
await queryInterface.addColumn(tableName, "sort", {
|
|
46
|
+
type: import_server.DataTypes.BIGINT,
|
|
47
|
+
allowNull: true,
|
|
48
|
+
defaultValue: 0
|
|
49
|
+
});
|
|
50
|
+
await this.db.sequelize.query(`UPDATE ${this.db.utils.quoteTable(tableName)} SET sort = 0 WHERE sort IS NULL`);
|
|
51
|
+
this.app.logger.info(`[workflows] added sort column successfully`);
|
|
52
|
+
const Field = this.context.db.getRepository("fields");
|
|
53
|
+
const sortFieldExists = await Field.count({
|
|
54
|
+
filter: {
|
|
55
|
+
name: "sort",
|
|
56
|
+
collectionName: "workflows"
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
if (!sortFieldExists) {
|
|
60
|
+
await Field.create({
|
|
61
|
+
values: {
|
|
62
|
+
name: "sort",
|
|
63
|
+
collectionName: "workflows",
|
|
64
|
+
type: "bigInt",
|
|
65
|
+
interface: "sort",
|
|
66
|
+
uiSchema: {
|
|
67
|
+
type: "number",
|
|
68
|
+
title: '{{t("Sort")}}',
|
|
69
|
+
"x-component": "InputNumber",
|
|
70
|
+
"x-component-props": {
|
|
71
|
+
stringMode: true,
|
|
72
|
+
step: "1"
|
|
73
|
+
},
|
|
74
|
+
"x-validator": "integer"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
this.app.logger.info(`[workflows] added sort field record to fields table`);
|
|
79
|
+
}
|
|
80
|
+
} catch (error) {
|
|
81
|
+
if (((_a = error.message) == null ? void 0 : _a.includes("duplicate column name")) || ((_b = error.message) == null ? void 0 : _b.includes("already exists")) || ((_c = error.message) == null ? void 0 : _c.includes("column")) && ((_d = error.message) == null ? void 0 : _d.includes("exists"))) {
|
|
82
|
+
this.app.logger.info(`[migration skipped] sort column may already exist: ${error.message}`);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tachybase/module-workflow",
|
|
3
3
|
"displayName": "Workflow",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.4.0",
|
|
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"
|
|
@@ -16,17 +16,17 @@
|
|
|
16
16
|
"@babel/preset-react": "7.27.1",
|
|
17
17
|
"@babel/preset-typescript": "7.27.1",
|
|
18
18
|
"@dnd-kit/core": "^6.3.1",
|
|
19
|
-
"@tachybase/schema": "
|
|
20
|
-
"@tachybase/test": "
|
|
21
|
-
"@tego/client": "
|
|
22
|
-
"@tego/server": "
|
|
19
|
+
"@tachybase/schema": "*",
|
|
20
|
+
"@tachybase/test": "*",
|
|
21
|
+
"@tego/client": "*",
|
|
22
|
+
"@tego/server": "*",
|
|
23
23
|
"@types/babel__core": "7.20.5",
|
|
24
24
|
"@types/ejs": "^3.1.5",
|
|
25
25
|
"@types/file-saver": "^2.0.7",
|
|
26
26
|
"@types/lodash": "^4.17.20",
|
|
27
27
|
"@types/qrcode": "^1.5.5",
|
|
28
28
|
"antd": "5.22.5",
|
|
29
|
-
"axios": "1.
|
|
29
|
+
"axios": "1.13.0",
|
|
30
30
|
"cron-parser": "4.9.0",
|
|
31
31
|
"dayjs": "^1.11.13",
|
|
32
32
|
"file-saver": "^2.0.5",
|
|
@@ -37,16 +37,16 @@
|
|
|
37
37
|
"mime-types": "^3.0.1",
|
|
38
38
|
"qrcode": "^1.5.4",
|
|
39
39
|
"react": "18.3.1",
|
|
40
|
-
"react-i18next": "
|
|
40
|
+
"react-i18next": "16.2.1",
|
|
41
41
|
"react-js-cron": "^3.2.0",
|
|
42
42
|
"react-router-dom": "6.28.1",
|
|
43
43
|
"sequelize": "^6.37.5",
|
|
44
|
-
"@tachybase/client": "1.
|
|
45
|
-
"@tachybase/module-
|
|
46
|
-
"@tachybase/module-
|
|
47
|
-
"@tachybase/module-ui-schema": "1.
|
|
48
|
-
"@tachybase/module-user": "1.
|
|
49
|
-
"@tachybase/plugin-workflow-test": "1.
|
|
44
|
+
"@tachybase/client": "1.4.0",
|
|
45
|
+
"@tachybase/module-error-handler": "1.4.0",
|
|
46
|
+
"@tachybase/module-collection": "1.4.0",
|
|
47
|
+
"@tachybase/module-ui-schema": "1.4.0",
|
|
48
|
+
"@tachybase/module-user": "1.4.0",
|
|
49
|
+
"@tachybase/plugin-workflow-test": "1.4.0"
|
|
50
50
|
},
|
|
51
51
|
"description.zh-CN": "一个强大的 BPM 工具,为业务自动化提供基础支持,并且可任意扩展更多的触发器和节点。",
|
|
52
52
|
"displayName.zh-CN": "工作流",
|
/package/dist/client/{ExecutionContextProvider.d.ts → provider/ExecutionContextProvider.d.ts}
RENAMED
|
File without changes
|
/package/dist/client/{ExecutionResourceProvider.d.ts → provider/ExecutionResourceProvider.d.ts}
RENAMED
|
File without changes
|