@nocobase/plugin-workflow 1.2.12-alpha → 1.3.0-alpha.20240710084543

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 (247) hide show
  1. package/package.json +3 -3
  2. package/dist/client/AddButton.d.ts +0 -16
  3. package/dist/client/Branch.d.ts +0 -17
  4. package/dist/client/CanvasContent.d.ts +0 -12
  5. package/dist/client/ExecutionCanvas.d.ts +0 -10
  6. package/dist/client/ExecutionContextProvider.d.ts +0 -15
  7. package/dist/client/ExecutionLink.d.ts +0 -10
  8. package/dist/client/ExecutionPage.d.ts +0 -10
  9. package/dist/client/ExecutionResourceProvider.d.ts +0 -14
  10. package/dist/client/FlowContext.d.ts +0 -11
  11. package/dist/client/WorkflowCanvas.d.ts +0 -10
  12. package/dist/client/WorkflowLink.d.ts +0 -10
  13. package/dist/client/WorkflowPage.d.ts +0 -10
  14. package/dist/client/WorkflowPane.d.ts +0 -10
  15. package/dist/client/components/AssignedFieldsFormSchemaConfig.d.ts +0 -10
  16. package/dist/client/components/CheckboxGroupWithTooltip.d.ts +0 -15
  17. package/dist/client/components/CollectionBlockInitializer.d.ts +0 -10
  18. package/dist/client/components/CollectionFieldset.d.ts +0 -14
  19. package/dist/client/components/DetailsBlockProvider.d.ts +0 -14
  20. package/dist/client/components/DrawerDescription.d.ts +0 -10
  21. package/dist/client/components/DrawerForm.d.ts +0 -13
  22. package/dist/client/components/ExecutionStatus.d.ts +0 -13
  23. package/dist/client/components/FieldsSelect.d.ts +0 -10
  24. package/dist/client/components/FilterDynamicComponent.d.ts +0 -14
  25. package/dist/client/components/OpenDrawer.d.ts +0 -14
  26. package/dist/client/components/RadioWithTooltip.d.ts +0 -15
  27. package/dist/client/components/SimpleDesigner.d.ts +0 -10
  28. package/dist/client/components/StatusButton.d.ts +0 -10
  29. package/dist/client/components/TriggerOptionRender.d.ts +0 -12
  30. package/dist/client/components/ValueBlock.d.ts +0 -14
  31. package/dist/client/components/index.d.ts +0 -16
  32. package/dist/client/components/renderEngineReference.d.ts +0 -10
  33. package/dist/client/constants.d.ts +0 -45
  34. package/dist/client/hooks/index.d.ts +0 -11
  35. package/dist/client/hooks/useGetAriaLabelOfAddButton.d.ts +0 -14
  36. package/dist/client/hooks/useRefreshActionProps.d.ts +0 -11
  37. package/dist/client/hooks/useTriggerWorkflowActionProps.d.ts +0 -20
  38. package/dist/client/hooks/useWorkflowExecuted.d.ts +0 -10
  39. package/dist/client/index.d.ts +0 -43
  40. package/dist/client/index.js +0 -569
  41. package/dist/client/locale/index.d.ts +0 -11
  42. package/dist/client/nodes/calculation.d.ts +0 -80
  43. package/dist/client/nodes/condition.d.ts +0 -108
  44. package/dist/client/nodes/create.d.ts +0 -110
  45. package/dist/client/nodes/destroy.d.ts +0 -54
  46. package/dist/client/nodes/end.d.ts +0 -30
  47. package/dist/client/nodes/index.d.ts +0 -76
  48. package/dist/client/nodes/query.d.ts +0 -236
  49. package/dist/client/nodes/update.d.ts +0 -114
  50. package/dist/client/schemas/collection.d.ts +0 -170
  51. package/dist/client/schemas/executions.d.ts +0 -282
  52. package/dist/client/schemas/workflows.d.ts +0 -10
  53. package/dist/client/settings/customizeSubmitToWorkflowActionSettings.d.ts +0 -10
  54. package/dist/client/style.d.ts +0 -30
  55. package/dist/client/triggers/collection.d.ts +0 -124
  56. package/dist/client/triggers/index.d.ts +0 -36
  57. package/dist/client/triggers/schedule/EndsByField.d.ts +0 -13
  58. package/dist/client/triggers/schedule/OnField.d.ts +0 -13
  59. package/dist/client/triggers/schedule/RepeatField.d.ts +0 -13
  60. package/dist/client/triggers/schedule/ScheduleConfig.d.ts +0 -10
  61. package/dist/client/triggers/schedule/constants.d.ts +0 -12
  62. package/dist/client/triggers/schedule/index.d.ts +0 -33
  63. package/dist/client/triggers/schedule/locale/Cron.zh-CN.d.ts +0 -42
  64. package/dist/client/utils.d.ts +0 -12
  65. package/dist/client/variable.d.ts +0 -93
  66. package/dist/externalVersion.js +0 -34
  67. package/dist/index.d.ts +0 -10
  68. package/dist/index.js +0 -48
  69. package/dist/locale/en-US.json +0 -98
  70. package/dist/locale/es-ES.json +0 -98
  71. package/dist/locale/fr-FR.json +0 -98
  72. package/dist/locale/ja-JP.json +0 -82
  73. package/dist/locale/ko_KR.json +0 -168
  74. package/dist/locale/pt-BR.json +0 -98
  75. package/dist/locale/ru-RU.json +0 -82
  76. package/dist/locale/tr-TR.json +0 -82
  77. package/dist/locale/zh-CN.json +0 -205
  78. package/dist/node_modules/cron-parser/.eslintrc.json +0 -15
  79. package/dist/node_modules/cron-parser/.travis.yml +0 -7
  80. package/dist/node_modules/cron-parser/LICENSE +0 -21
  81. package/dist/node_modules/cron-parser/component.json +0 -11
  82. package/dist/node_modules/cron-parser/index.d.ts +0 -1
  83. package/dist/node_modules/cron-parser/lib/date.js +0 -252
  84. package/dist/node_modules/cron-parser/lib/expression.js +0 -983
  85. package/dist/node_modules/cron-parser/lib/field_compactor.js +0 -70
  86. package/dist/node_modules/cron-parser/lib/field_stringify.js +0 -38
  87. package/dist/node_modules/cron-parser/lib/parser.js +0 -1
  88. package/dist/node_modules/cron-parser/node_modules/luxon/build/amd/luxon.js +0 -8489
  89. package/dist/node_modules/cron-parser/node_modules/luxon/build/cjs-browser/luxon.js +0 -8487
  90. package/dist/node_modules/cron-parser/node_modules/luxon/build/global/luxon.js +0 -8490
  91. package/dist/node_modules/cron-parser/node_modules/luxon/build/global/luxon.min.js +0 -1
  92. package/dist/node_modules/cron-parser/node_modules/luxon/build/node/luxon.js +0 -7522
  93. package/dist/node_modules/cron-parser/node_modules/luxon/package.json +0 -96
  94. package/dist/node_modules/cron-parser/node_modules/luxon/src/datetime.js +0 -2169
  95. package/dist/node_modules/cron-parser/node_modules/luxon/src/duration.js +0 -880
  96. package/dist/node_modules/cron-parser/node_modules/luxon/src/errors.js +0 -61
  97. package/dist/node_modules/cron-parser/node_modules/luxon/src/impl/conversions.js +0 -157
  98. package/dist/node_modules/cron-parser/node_modules/luxon/src/impl/diff.js +0 -80
  99. package/dist/node_modules/cron-parser/node_modules/luxon/src/impl/digits.js +0 -76
  100. package/dist/node_modules/cron-parser/node_modules/luxon/src/impl/english.js +0 -233
  101. package/dist/node_modules/cron-parser/node_modules/luxon/src/impl/formats.js +0 -191
  102. package/dist/node_modules/cron-parser/node_modules/luxon/src/impl/formatter.js +0 -386
  103. package/dist/node_modules/cron-parser/node_modules/luxon/src/impl/invalid.js +0 -14
  104. package/dist/node_modules/cron-parser/node_modules/luxon/src/impl/locale.js +0 -482
  105. package/dist/node_modules/cron-parser/node_modules/luxon/src/impl/regexParser.js +0 -335
  106. package/dist/node_modules/cron-parser/node_modules/luxon/src/impl/tokenParser.js +0 -424
  107. package/dist/node_modules/cron-parser/node_modules/luxon/src/impl/util.js +0 -292
  108. package/dist/node_modules/cron-parser/node_modules/luxon/src/impl/zoneUtil.js +0 -36
  109. package/dist/node_modules/cron-parser/node_modules/luxon/src/info.js +0 -193
  110. package/dist/node_modules/cron-parser/node_modules/luxon/src/interval.js +0 -602
  111. package/dist/node_modules/cron-parser/node_modules/luxon/src/luxon.js +0 -26
  112. package/dist/node_modules/cron-parser/node_modules/luxon/src/luxonFilled.js +0 -13
  113. package/dist/node_modules/cron-parser/node_modules/luxon/src/settings.js +0 -137
  114. package/dist/node_modules/cron-parser/node_modules/luxon/src/zone.js +0 -88
  115. package/dist/node_modules/cron-parser/node_modules/luxon/src/zones/IANAZone.js +0 -191
  116. package/dist/node_modules/cron-parser/node_modules/luxon/src/zones/fixedOffsetZone.js +0 -94
  117. package/dist/node_modules/cron-parser/node_modules/luxon/src/zones/invalidZone.js +0 -53
  118. package/dist/node_modules/cron-parser/node_modules/luxon/src/zones/localZone.js +0 -63
  119. package/dist/node_modules/cron-parser/package.json +0 -1
  120. package/dist/node_modules/cron-parser/test/31_of_month.js +0 -17
  121. package/dist/node_modules/cron-parser/test/bug.js +0 -29
  122. package/dist/node_modules/cron-parser/test/crondate.js +0 -16
  123. package/dist/node_modules/cron-parser/test/crontab.example +0 -7
  124. package/dist/node_modules/cron-parser/test/empty_around_comma.js +0 -22
  125. package/dist/node_modules/cron-parser/test/expression.js +0 -1489
  126. package/dist/node_modules/cron-parser/test/field_compactor.js +0 -250
  127. package/dist/node_modules/cron-parser/test/field_stringify.js +0 -84
  128. package/dist/node_modules/cron-parser/test/fields.js +0 -32
  129. package/dist/node_modules/cron-parser/test/increment_on_first_iteration.js +0 -22
  130. package/dist/node_modules/cron-parser/test/index-ts3.test-d.ts +0 -133
  131. package/dist/node_modules/cron-parser/test/index.test-d.ts +0 -138
  132. package/dist/node_modules/cron-parser/test/leap_year.js +0 -17
  133. package/dist/node_modules/cron-parser/test/parser.js +0 -46
  134. package/dist/node_modules/cron-parser/test/parser_crondate_formats.js +0 -145
  135. package/dist/node_modules/cron-parser/test/parser_day_of_month.js +0 -169
  136. package/dist/node_modules/cron-parser/test/prev_date.js +0 -32
  137. package/dist/node_modules/cron-parser/test/stringify.js +0 -402
  138. package/dist/node_modules/cron-parser/test/timezone.js +0 -422
  139. package/dist/node_modules/cron-parser/types/common.d.ts +0 -131
  140. package/dist/node_modules/cron-parser/types/index.d.ts +0 -45
  141. package/dist/node_modules/cron-parser/types/ts3/index.d.ts +0 -28
  142. package/dist/node_modules/lru-cache/LICENSE +0 -15
  143. package/dist/node_modules/lru-cache/dist/cjs/index-cjs.d.ts +0 -7
  144. package/dist/node_modules/lru-cache/dist/cjs/index-cjs.js +0 -1
  145. package/dist/node_modules/lru-cache/dist/cjs/index.d.ts +0 -807
  146. package/dist/node_modules/lru-cache/dist/cjs/index.js +0 -1334
  147. package/dist/node_modules/lru-cache/dist/cjs/index.min.js +0 -2
  148. package/dist/node_modules/lru-cache/dist/cjs/package.json +0 -3
  149. package/dist/node_modules/lru-cache/dist/mjs/index.d.ts +0 -807
  150. package/dist/node_modules/lru-cache/dist/mjs/index.js +0 -1330
  151. package/dist/node_modules/lru-cache/dist/mjs/index.min.js +0 -2
  152. package/dist/node_modules/lru-cache/dist/mjs/package.json +0 -3
  153. package/dist/node_modules/lru-cache/package.json +0 -1
  154. package/dist/server/Plugin.d.ts +0 -84
  155. package/dist/server/Plugin.js +0 -503
  156. package/dist/server/Processor.d.ts +0 -115
  157. package/dist/server/Processor.js +0 -363
  158. package/dist/server/actions/executions.d.ts +0 -11
  159. package/dist/server/actions/executions.js +0 -96
  160. package/dist/server/actions/index.d.ts +0 -11
  161. package/dist/server/actions/index.js +0 -66
  162. package/dist/server/actions/nodes.d.ts +0 -12
  163. package/dist/server/actions/nodes.js +0 -217
  164. package/dist/server/actions/workflows.d.ts +0 -14
  165. package/dist/server/actions/workflows.js +0 -184
  166. package/dist/server/collections/executions.d.ts +0 -11
  167. package/dist/server/collections/executions.js +0 -66
  168. package/dist/server/collections/flow_nodes.d.ts +0 -11
  169. package/dist/server/collections/flow_nodes.js +0 -87
  170. package/dist/server/collections/jobs.d.ts +0 -11
  171. package/dist/server/collections/jobs.js +0 -66
  172. package/dist/server/collections/workflows.d.ts +0 -10
  173. package/dist/server/collections/workflows.js +0 -126
  174. package/dist/server/constants.d.ts +0 -29
  175. package/dist/server/constants.js +0 -58
  176. package/dist/server/functions/index.d.ts +0 -17
  177. package/dist/server/functions/index.js +0 -40
  178. package/dist/server/index.d.ts +0 -15
  179. package/dist/server/index.js +0 -60
  180. package/dist/server/instructions/CalculationInstruction.d.ts +0 -25
  181. package/dist/server/instructions/CalculationInstruction.js +0 -59
  182. package/dist/server/instructions/ConditionInstruction.d.ts +0 -36
  183. package/dist/server/instructions/ConditionInstruction.js +0 -167
  184. package/dist/server/instructions/CreateInstruction.d.ts +0 -18
  185. package/dist/server/instructions/CreateInstruction.js +0 -75
  186. package/dist/server/instructions/DestroyInstruction.d.ts +0 -18
  187. package/dist/server/instructions/DestroyInstruction.js +0 -59
  188. package/dist/server/instructions/EndInstruction.d.ts +0 -14
  189. package/dist/server/instructions/EndInstruction.js +0 -55
  190. package/dist/server/instructions/QueryInstruction.d.ts +0 -21
  191. package/dist/server/instructions/QueryInstruction.js +0 -82
  192. package/dist/server/instructions/UpdateInstruction.d.ts +0 -18
  193. package/dist/server/instructions/UpdateInstruction.js +0 -59
  194. package/dist/server/instructions/index.d.ts +0 -31
  195. package/dist/server/instructions/index.js +0 -42
  196. package/dist/server/migrations/20221129153547-calculation-variables.d.ts +0 -14
  197. package/dist/server/migrations/20221129153547-calculation-variables.js +0 -92
  198. package/dist/server/migrations/20230221032941-change-request-body-type.d.ts +0 -14
  199. package/dist/server/migrations/20230221032941-change-request-body-type.js +0 -102
  200. package/dist/server/migrations/20230221071831-calculation-expression.d.ts +0 -13
  201. package/dist/server/migrations/20230221071831-calculation-expression.js +0 -121
  202. package/dist/server/migrations/20230221121203-condition-calculation.d.ts +0 -13
  203. package/dist/server/migrations/20230221121203-condition-calculation.js +0 -106
  204. package/dist/server/migrations/20230221162902-jsonb-to-json.d.ts +0 -13
  205. package/dist/server/migrations/20230221162902-jsonb-to-json.js +0 -63
  206. package/dist/server/migrations/20230411034722-manual-multi-form.d.ts +0 -13
  207. package/dist/server/migrations/20230411034722-manual-multi-form.js +0 -283
  208. package/dist/server/migrations/20230612021134-manual-collection-block.d.ts +0 -13
  209. package/dist/server/migrations/20230612021134-manual-collection-block.js +0 -152
  210. package/dist/server/migrations/20230710115902-manual-action-values.d.ts +0 -13
  211. package/dist/server/migrations/20230710115902-manual-action-values.js +0 -101
  212. package/dist/server/migrations/20230809113132-workflow-options.d.ts +0 -13
  213. package/dist/server/migrations/20230809113132-workflow-options.js +0 -64
  214. package/dist/server/migrations/20231024172342-add-node-key.d.ts +0 -13
  215. package/dist/server/migrations/20231024172342-add-node-key.js +0 -90
  216. package/dist/server/migrations/20231122143143-split-to-plugins.d.ts +0 -13
  217. package/dist/server/migrations/20231122143143-split-to-plugins.js +0 -67
  218. package/dist/server/migrations/20240115220721-add-node-key-to-job.d.ts +0 -14
  219. package/dist/server/migrations/20240115220721-add-node-key-to-job.js +0 -63
  220. package/dist/server/migrations/20240613222612-fix-assign-field-config.d.ts +0 -13
  221. package/dist/server/migrations/20240613222612-fix-assign-field-config.js +0 -62
  222. package/dist/server/triggers/CollectionTrigger.d.ts +0 -22
  223. package/dist/server/triggers/CollectionTrigger.js +0 -184
  224. package/dist/server/triggers/ScheduleTrigger/DateFieldScheduleTrigger.d.ts +0 -39
  225. package/dist/server/triggers/ScheduleTrigger/DateFieldScheduleTrigger.js +0 -356
  226. package/dist/server/triggers/ScheduleTrigger/StaticScheduleTrigger.d.ts +0 -21
  227. package/dist/server/triggers/ScheduleTrigger/StaticScheduleTrigger.js +0 -152
  228. package/dist/server/triggers/ScheduleTrigger/index.d.ts +0 -18
  229. package/dist/server/triggers/ScheduleTrigger/index.js +0 -84
  230. package/dist/server/triggers/ScheduleTrigger/utils.d.ts +0 -13
  231. package/dist/server/triggers/ScheduleTrigger/utils.js +0 -44
  232. package/dist/server/triggers/index.d.ts +0 -21
  233. package/dist/server/triggers/index.js +0 -46
  234. package/dist/server/types/Execution.d.ts +0 -25
  235. package/dist/server/types/Execution.js +0 -34
  236. package/dist/server/types/FlowNode.d.ts +0 -24
  237. package/dist/server/types/FlowNode.js +0 -34
  238. package/dist/server/types/Job.d.ts +0 -22
  239. package/dist/server/types/Job.js +0 -34
  240. package/dist/server/types/Workflow.d.ts +0 -35
  241. package/dist/server/types/Workflow.js +0 -34
  242. package/dist/server/types/index.d.ts +0 -12
  243. package/dist/server/types/index.js +0 -24
  244. package/dist/server/utils.d.ts +0 -9
  245. package/dist/server/utils.js +0 -51
  246. package/dist/swagger/index.d.ts +0 -762
  247. package/dist/swagger/index.js +0 -807
@@ -1,2 +0,0 @@
1
- var L=(o,t,e)=>{if(!t.has(o))throw TypeError("Cannot "+e)};var j=(o,t,e)=>(L(o,t,"read from private field"),e?e.call(o):t.get(o)),G=(o,t,e)=>{if(t.has(o))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(o):t.set(o,e)},C=(o,t,e,i)=>(L(o,t,"write to private field"),i?i.call(o,e):t.set(o,e),e);var v=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,U=new Set,k=(o,t,e,i)=>{typeof process=="object"&&process&&typeof process.emitWarning=="function"?process.emitWarning(o,t,e,i):console.error(`[${e}] ${t}: ${o}`)},H=o=>!U.has(o),P=Symbol("type"),F=o=>o&&o===Math.floor(o)&&o>0&&isFinite(o),M=o=>F(o)?o<=Math.pow(2,8)?Uint8Array:o<=Math.pow(2,16)?Uint16Array:o<=Math.pow(2,32)?Uint32Array:o<=Number.MAX_SAFE_INTEGER?O:null:null,O=class extends Array{constructor(t){super(t),this.fill(0)}},E,T=class{heap;length;static create(t){let e=M(t);if(!e)return[];C(T,E,!0);let i=new T(t,e);return C(T,E,!1),i}constructor(t,e){if(!j(T,E))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new e(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},D=T;E=new WeakMap,G(D,E,!1);var W=class{#d;#f;#_;#g;#W;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#s;#p;#n;#i;#t;#l;#c;#o;#h;#w;#r;#F;#A;#S;#y;#T;#a;static unsafeExposeInternals(t){return{starts:t.#A,ttls:t.#S,sizes:t.#F,keyMap:t.#n,keyList:t.#i,valList:t.#t,next:t.#l,prev:t.#c,get head(){return t.#o},get tail(){return t.#h},free:t.#w,isBackgroundFetch:e=>t.#e(e),backgroundFetch:(e,i,s,n)=>t.#R(e,i,s,n),moveToTail:e=>t.#v(e),indexes:e=>t.#m(e),rindexes:e=>t.#b(e),isStale:e=>t.#u(e)}}get max(){return this.#d}get maxSize(){return this.#f}get calculatedSize(){return this.#p}get size(){return this.#s}get fetchMethod(){return this.#W}get dispose(){return this.#_}get disposeAfter(){return this.#g}constructor(t){let{max:e=0,ttl:i,ttlResolution:s=1,ttlAutopurge:n,updateAgeOnGet:h,updateAgeOnHas:f,allowStale:r,dispose:p,disposeAfter:y,noDisposeOnSet:a,noUpdateTTL:u,maxSize:g=0,maxEntrySize:A=0,sizeCalculation:c,fetchMethod:w,noDeleteOnFetchRejection:l,noDeleteOnStaleGet:S,allowStaleOnFetchRejection:m,allowStaleOnFetchAbort:d,ignoreFetchAbort:_}=t;if(e!==0&&!F(e))throw new TypeError("max option must be a nonnegative integer");let z=e?M(e):Array;if(!z)throw new Error("invalid max value: "+e);if(this.#d=e,this.#f=g,this.maxEntrySize=A||this.#f,this.sizeCalculation=c,this.sizeCalculation){if(!this.#f&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(w!==void 0&&typeof w!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#W=w,this.#T=!!w,this.#n=new Map,this.#i=new Array(e).fill(void 0),this.#t=new Array(e).fill(void 0),this.#l=new z(e),this.#c=new z(e),this.#o=0,this.#h=0,this.#w=D.create(e),this.#s=0,this.#p=0,typeof p=="function"&&(this.#_=p),typeof y=="function"?(this.#g=y,this.#r=[]):(this.#g=void 0,this.#r=void 0),this.#y=!!this.#_,this.#a=!!this.#g,this.noDisposeOnSet=!!a,this.noUpdateTTL=!!u,this.noDeleteOnFetchRejection=!!l,this.allowStaleOnFetchRejection=!!m,this.allowStaleOnFetchAbort=!!d,this.ignoreFetchAbort=!!_,this.maxEntrySize!==0){if(this.#f!==0&&!F(this.#f))throw new TypeError("maxSize must be a positive integer if specified");if(!F(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#M()}if(this.allowStale=!!r,this.noDeleteOnStaleGet=!!S,this.updateAgeOnGet=!!h,this.updateAgeOnHas=!!f,this.ttlResolution=F(s)||s===0?s:1,this.ttlAutopurge=!!n,this.ttl=i||0,this.ttl){if(!F(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#x()}if(this.#d===0&&this.ttl===0&&this.#f===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#d&&!this.#f){let b="LRU_CACHE_UNBOUNDED";H(b)&&(U.add(b),k("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",b,W))}}getRemainingTTL(t){return this.#n.has(t)?1/0:0}#x(){let t=new O(this.#d),e=new O(this.#d);this.#S=t,this.#A=e,this.#L=(n,h,f=v.now())=>{if(e[n]=h!==0?f:0,t[n]=h,h!==0&&this.ttlAutopurge){let r=setTimeout(()=>{this.#u(n)&&this.delete(this.#i[n])},h+1);r.unref&&r.unref()}},this.#O=n=>{e[n]=t[n]!==0?v.now():0},this.#z=(n,h)=>{if(t[h]){let f=t[h],r=e[h];n.ttl=f,n.start=r,n.now=i||s(),n.remainingTTL=n.now+f-r}};let i=0,s=()=>{let n=v.now();if(this.ttlResolution>0){i=n;let h=setTimeout(()=>i=0,this.ttlResolution);h.unref&&h.unref()}return n};this.getRemainingTTL=n=>{let h=this.#n.get(n);return h===void 0?0:t[h]===0||e[h]===0?1/0:e[h]+t[h]-(i||s())},this.#u=n=>t[n]!==0&&e[n]!==0&&(i||s())-e[n]>t[n]}#O=()=>{};#z=()=>{};#L=()=>{};#u=()=>!1;#M(){let t=new O(this.#d);this.#p=0,this.#F=t,this.#E=e=>{this.#p-=t[e],t[e]=0},this.#j=(e,i,s,n)=>{if(this.#e(i))return 0;if(!F(s))if(n){if(typeof n!="function")throw new TypeError("sizeCalculation must be a function");if(s=n(i,e),!F(s))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return s},this.#D=(e,i,s)=>{if(t[e]=i,this.#f){let n=this.#f-t[e];for(;this.#p>n;)this.#C(!0)}this.#p+=t[e],s&&(s.entrySize=i,s.totalCalculatedSize=this.#p)}}#E=t=>{};#D=(t,e,i)=>{};#j=(t,e,i,s)=>{if(i||s)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#m({allowStale:t=this.allowStale}={}){if(this.#s)for(let e=this.#h;!(!this.#G(e)||((t||!this.#u(e))&&(yield e),e===this.#o));)e=this.#c[e]}*#b({allowStale:t=this.allowStale}={}){if(this.#s)for(let e=this.#o;!(!this.#G(e)||((t||!this.#u(e))&&(yield e),e===this.#h));)e=this.#l[e]}#G(t){return t!==void 0&&this.#n.get(this.#i[t])===t}*entries(){for(let t of this.#m())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*rentries(){for(let t of this.#b())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*keys(){for(let t of this.#m()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*rkeys(){for(let t of this.#b()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*values(){for(let t of this.#m())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}*rvalues(){for(let t of this.#b())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}[Symbol.iterator](){return this.entries()}find(t,e={}){for(let i of this.#m()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;if(n!==void 0&&t(n,this.#i[i],this))return this.get(this.#i[i],e)}}forEach(t,e=this){for(let i of this.#m()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}rforEach(t,e=this){for(let i of this.#b()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}purgeStale(){let t=!1;for(let e of this.#b({allowStale:!0}))this.#u(e)&&(this.delete(this.#i[e]),t=!0);return t}dump(){let t=[];for(let e of this.#m({allowStale:!0})){let i=this.#i[e],s=this.#t[e],n=this.#e(s)?s.__staleWhileFetching:s;if(n===void 0||i===void 0)continue;let h={value:n};if(this.#S&&this.#A){h.ttl=this.#S[e];let f=v.now()-this.#A[e];h.start=Math.floor(Date.now()-f)}this.#F&&(h.size=this.#F[e]),t.unshift([i,h])}return t}load(t){this.clear();for(let[e,i]of t){if(i.start){let s=Date.now()-i.start;i.start=v.now()-s}this.set(e,i.value,i)}}set(t,e,i={}){let{ttl:s=this.ttl,start:n,noDisposeOnSet:h=this.noDisposeOnSet,sizeCalculation:f=this.sizeCalculation,status:r}=i,{noUpdateTTL:p=this.noUpdateTTL}=i,y=this.#j(t,e,i.size||0,f);if(this.maxEntrySize&&y>this.maxEntrySize)return r&&(r.set="miss",r.maxEntrySizeExceeded=!0),this.delete(t),this;let a=this.#s===0?void 0:this.#n.get(t);if(a===void 0)a=this.#s===0?this.#h:this.#w.length!==0?this.#w.pop():this.#s===this.#d?this.#C(!1):this.#s,this.#i[a]=t,this.#t[a]=e,this.#n.set(t,a),this.#l[this.#h]=a,this.#c[a]=this.#h,this.#h=a,this.#s++,this.#D(a,y,r),r&&(r.set="add"),p=!1;else{this.#v(a);let u=this.#t[a];if(e!==u){if(this.#T&&this.#e(u)?u.__abortController.abort(new Error("replaced")):h||(this.#y&&this.#_?.(u,t,"set"),this.#a&&this.#r?.push([u,t,"set"])),this.#E(a),this.#D(a,y,r),this.#t[a]=e,r){r.set="replace";let g=u&&this.#e(u)?u.__staleWhileFetching:u;g!==void 0&&(r.oldValue=g)}}else r&&(r.set="update")}if(s!==0&&!this.#S&&this.#x(),this.#S&&(p||this.#L(a,s,n),r&&this.#z(r,a)),!h&&this.#a&&this.#r){let u=this.#r,g;for(;g=u?.shift();)this.#g?.(...g)}return this}pop(){try{for(;this.#s;){let t=this.#t[this.#o];if(this.#C(!0),this.#e(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#a&&this.#r){let t=this.#r,e;for(;e=t?.shift();)this.#g?.(...e)}}}#C(t){let e=this.#o,i=this.#i[e],s=this.#t[e];return this.#T&&this.#e(s)?s.__abortController.abort(new Error("evicted")):(this.#y||this.#a)&&(this.#y&&this.#_?.(s,i,"evict"),this.#a&&this.#r?.push([s,i,"evict"])),this.#E(e),t&&(this.#i[e]=void 0,this.#t[e]=void 0,this.#w.push(e)),this.#s===1?(this.#o=this.#h=0,this.#w.length=0):this.#o=this.#l[e],this.#n.delete(i),this.#s--,e}has(t,e={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:s}=e,n=this.#n.get(t);if(n!==void 0){let h=this.#t[n];if(this.#e(h)&&h.__staleWhileFetching===void 0)return!1;if(this.#u(n))s&&(s.has="stale",this.#z(s,n));else return i&&this.#O(n),s&&(s.has="hit",this.#z(s,n)),!0}else s&&(s.has="miss");return!1}peek(t,e={}){let{allowStale:i=this.allowStale}=e,s=this.#n.get(t);if(s!==void 0&&(i||!this.#u(s))){let n=this.#t[s];return this.#e(n)?n.__staleWhileFetching:n}}#R(t,e,i,s){let n=e===void 0?void 0:this.#t[e];if(this.#e(n))return n;let h=new AbortController,{signal:f}=i;f?.addEventListener("abort",()=>h.abort(f.reason),{signal:h.signal});let r={signal:h.signal,options:i,context:s},p=(c,w=!1)=>{let{aborted:l}=h.signal,S=i.ignoreFetchAbort&&c!==void 0;if(i.status&&(l&&!w?(i.status.fetchAborted=!0,i.status.fetchError=h.signal.reason,S&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),l&&!S&&!w)return a(h.signal.reason);let m=g;return this.#t[e]===g&&(c===void 0?m.__staleWhileFetching?this.#t[e]=m.__staleWhileFetching:this.delete(t):(i.status&&(i.status.fetchUpdated=!0),this.set(t,c,r.options))),c},y=c=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=c),a(c)),a=c=>{let{aborted:w}=h.signal,l=w&&i.allowStaleOnFetchAbort,S=l||i.allowStaleOnFetchRejection,m=S||i.noDeleteOnFetchRejection,d=g;if(this.#t[e]===g&&(!m||d.__staleWhileFetching===void 0?this.delete(t):l||(this.#t[e]=d.__staleWhileFetching)),S)return i.status&&d.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),d.__staleWhileFetching;if(d.__returned===d)throw c},u=(c,w)=>{let l=this.#W?.(t,n,r);l&&l instanceof Promise&&l.then(S=>c(S),w),h.signal.addEventListener("abort",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(c(),i.allowStaleOnFetchAbort&&(c=S=>p(S,!0)))})};i.status&&(i.status.fetchDispatched=!0);let g=new Promise(u).then(p,y),A=Object.assign(g,{__abortController:h,__staleWhileFetching:n,__returned:void 0});return e===void 0?(this.set(t,A,{...r.options,status:void 0}),e=this.#n.get(t)):this.#t[e]=A,A}#e(t){if(!this.#T)return!1;let e=t;return!!e&&e instanceof Promise&&e.hasOwnProperty("__staleWhileFetching")&&e.__abortController instanceof AbortController}async fetch(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,ttl:h=this.ttl,noDisposeOnSet:f=this.noDisposeOnSet,size:r=0,sizeCalculation:p=this.sizeCalculation,noUpdateTTL:y=this.noUpdateTTL,noDeleteOnFetchRejection:a=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:u=this.allowStaleOnFetchRejection,ignoreFetchAbort:g=this.ignoreFetchAbort,allowStaleOnFetchAbort:A=this.allowStaleOnFetchAbort,context:c,forceRefresh:w=!1,status:l,signal:S}=e;if(!this.#T)return l&&(l.fetch="get"),this.get(t,{allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,status:l});let m={allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,ttl:h,noDisposeOnSet:f,size:r,sizeCalculation:p,noUpdateTTL:y,noDeleteOnFetchRejection:a,allowStaleOnFetchRejection:u,allowStaleOnFetchAbort:A,ignoreFetchAbort:g,status:l,signal:S},d=this.#n.get(t);if(d===void 0){l&&(l.fetch="miss");let _=this.#R(t,d,m,c);return _.__returned=_}else{let _=this.#t[d];if(this.#e(_)){let x=i&&_.__staleWhileFetching!==void 0;return l&&(l.fetch="inflight",x&&(l.returnedStale=!0)),x?_.__staleWhileFetching:_.__returned=_}let z=this.#u(d);if(!w&&!z)return l&&(l.fetch="hit"),this.#v(d),s&&this.#O(d),l&&this.#z(l,d),_;let b=this.#R(t,d,m,c),R=b.__staleWhileFetching!==void 0&&i;return l&&(l.fetch=z?"stale":"refresh",R&&z&&(l.returnedStale=!0)),R?b.__staleWhileFetching:b.__returned=b}}get(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,status:h}=e,f=this.#n.get(t);if(f!==void 0){let r=this.#t[f],p=this.#e(r);return h&&this.#z(h,f),this.#u(f)?(h&&(h.get="stale"),p?(h&&i&&r.__staleWhileFetching!==void 0&&(h.returnedStale=!0),i?r.__staleWhileFetching:void 0):(n||this.delete(t),h&&i&&(h.returnedStale=!0),i?r:void 0)):(h&&(h.get="hit"),p?r.__staleWhileFetching:(this.#v(f),s&&this.#O(f),r))}else h&&(h.get="miss")}#U(t,e){this.#c[e]=t,this.#l[t]=e}#v(t){t!==this.#h&&(t===this.#o?this.#o=this.#l[t]:this.#U(this.#c[t],this.#l[t]),this.#U(this.#h,t),this.#h=t)}delete(t){let e=!1;if(this.#s!==0){let i=this.#n.get(t);if(i!==void 0)if(e=!0,this.#s===1)this.clear();else{this.#E(i);let s=this.#t[i];this.#e(s)?s.__abortController.abort(new Error("deleted")):(this.#y||this.#a)&&(this.#y&&this.#_?.(s,t,"delete"),this.#a&&this.#r?.push([s,t,"delete"])),this.#n.delete(t),this.#i[i]=void 0,this.#t[i]=void 0,i===this.#h?this.#h=this.#c[i]:i===this.#o?this.#o=this.#l[i]:(this.#l[this.#c[i]]=this.#l[i],this.#c[this.#l[i]]=this.#c[i]),this.#s--,this.#w.push(i)}}if(this.#a&&this.#r?.length){let i=this.#r,s;for(;s=i?.shift();)this.#g?.(...s)}return e}clear(){for(let t of this.#b({allowStale:!0})){let e=this.#t[t];if(this.#e(e))e.__abortController.abort(new Error("deleted"));else{let i=this.#i[t];this.#y&&this.#_?.(e,i,"delete"),this.#a&&this.#r?.push([e,i,"delete"])}}if(this.#n.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#S&&this.#A&&(this.#S.fill(0),this.#A.fill(0)),this.#F&&this.#F.fill(0),this.#o=0,this.#h=0,this.#w.length=0,this.#p=0,this.#s=0,this.#a&&this.#r){let t=this.#r,e;for(;e=t?.shift();)this.#g?.(...e)}}},V=W;export{W as LRUCache,V as default};
2
- //# sourceMappingURL=index.min.js.map
@@ -1,3 +0,0 @@
1
- {
2
- "type": "module"
3
- }
@@ -1 +0,0 @@
1
- {"name":"lru-cache","description":"A cache object that deletes the least-recently-used items.","version":"8.0.5","author":"Isaac Z. Schlueter <i@izs.me>","keywords":["mru","lru","cache"],"sideEffects":false,"scripts":{"build":"npm run prepare","preprepare":"rm -rf dist","prepare":"tsc -p tsconfig.json && tsc -p tsconfig-esm.json","postprepare":"bash fixup.sh","pretest":"npm run prepare","presnap":"npm run prepare","test":"c8 tap","snap":"c8 tap","preversion":"npm test","postversion":"npm publish","prepublishOnly":"git push origin --follow-tags","format":"prettier --write .","typedoc":"typedoc --tsconfig tsconfig-esm.json ./src/*.ts","benchmark-results-typedoc":"bash scripts/benchmark-results-typedoc.sh","prebenchmark":"npm run prepare","benchmark":"make -C benchmark","preprofile":"npm run prepare","profile":"make -C benchmark profile"},"main":"./dist/cjs/index-cjs.js","module":"./dist/mjs/index.js","types":"./dist/mjs/index.d.ts","exports":{"./min":{"import":{"types":"./dist/mjs/index.d.ts","default":"./dist/mjs/index.min.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.min.js"}},".":{"import":{"types":"./dist/mjs/index.d.ts","default":"./dist/mjs/index.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index-cjs.js"}}},"repository":"git://github.com/isaacs/node-lru-cache.git","devDependencies":{"@size-limit/preset-small-lib":"^7.0.8","@types/node":"^17.0.31","@types/tap":"^15.0.6","benchmark":"^2.1.4","c8":"^7.11.2","clock-mock":"^1.0.6","esbuild":"^0.17.11","eslint-config-prettier":"^8.5.0","marked":"^4.2.12","mkdirp":"^2.1.5","prettier":"^2.6.2","size-limit":"^7.0.8","tap":"^16.3.4","ts-node":"^10.7.0","tslib":"^2.4.0","typedoc":"^0.23.24","typescript":"^4.6.4"},"license":"ISC","files":["dist"],"engines":{"node":">=16.14"},"prettier":{"semi":false,"printWidth":70,"tabWidth":2,"useTabs":false,"singleQuote":true,"jsxSingleQuote":false,"bracketSameLine":true,"arrowParens":"avoid","endOfLine":"lf"},"tap":{"coverage":false,"node-arg":["--expose-gc","--no-warnings","--loader","ts-node/esm"],"ts":false},"size-limit":[{"path":"./dist/mjs/index.js"}],"_lastModified":"2024-07-05T09:20:20.867Z"}
@@ -1,84 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
- import { Transactionable } from '@nocobase/database';
10
- import { Plugin } from '@nocobase/server';
11
- import { Registry } from '@nocobase/utils';
12
- import { Logger } from '@nocobase/logger';
13
- import Processor from './Processor';
14
- import { CustomFunction } from './functions';
15
- import Trigger from './triggers';
16
- import { InstructionInterface } from './instructions';
17
- import type { ExecutionModel, WorkflowModel } from './types';
18
- type ID = number | string;
19
- type EventOptions = {
20
- eventKey?: string;
21
- context?: any;
22
- deferred?: boolean;
23
- [key: string]: any;
24
- } & Transactionable;
25
- export default class PluginWorkflowServer extends Plugin {
26
- instructions: Registry<InstructionInterface>;
27
- triggers: Registry<Trigger>;
28
- functions: Registry<CustomFunction>;
29
- enabledCache: Map<number, WorkflowModel>;
30
- private ready;
31
- private executing;
32
- private pending;
33
- private events;
34
- private eventsCount;
35
- private loggerCache;
36
- private meter;
37
- private checker;
38
- private onBeforeSave;
39
- /**
40
- * @experimental
41
- */
42
- getLogger(workflowId: ID): Logger;
43
- /**
44
- * @experimental
45
- * @param {WorkflowModel} workflow
46
- * @returns {boolean}
47
- */
48
- isWorkflowSync(workflow: WorkflowModel): boolean;
49
- registerTrigger<T extends Trigger>(type: string, trigger: T | {
50
- new (p: Plugin): T;
51
- }): void;
52
- registerInstruction(type: string, instruction: InstructionInterface | {
53
- new (p: Plugin): InstructionInterface;
54
- }): void;
55
- private initTriggers;
56
- private initInstructions;
57
- /**
58
- * @internal
59
- */
60
- load(): Promise<void>;
61
- private toggle;
62
- trigger(workflow: WorkflowModel, context: object, options?: EventOptions): void | Promise<Processor | null>;
63
- private triggerSync;
64
- resume(job: any): Promise<void>;
65
- /**
66
- * Start a deferred execution
67
- * @experimental
68
- */
69
- start(execution: ExecutionModel): void;
70
- createProcessor(execution: ExecutionModel, options?: {}): Processor;
71
- private createExecution;
72
- private prepare;
73
- private dispatch;
74
- private process;
75
- /**
76
- * @experimental
77
- * @param {string} dataSourceName
78
- * @param {Transaction} transaction
79
- * @param {boolean} create
80
- * @returns {Trasaction}
81
- */
82
- useDataSourceTransaction(dataSourceName: string, transaction: any, create?: boolean): any;
83
- }
84
- export {};
@@ -1,503 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- var __create = Object.create;
11
- var __defProp = Object.defineProperty;
12
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
13
- var __getOwnPropNames = Object.getOwnPropertyNames;
14
- var __getProtoOf = Object.getPrototypeOf;
15
- var __hasOwnProp = Object.prototype.hasOwnProperty;
16
- var __export = (target, all) => {
17
- for (var name in all)
18
- __defProp(target, name, { get: all[name], enumerable: true });
19
- };
20
- var __copyProps = (to, from, except, desc) => {
21
- if (from && typeof from === "object" || typeof from === "function") {
22
- for (let key of __getOwnPropNames(from))
23
- if (!__hasOwnProp.call(to, key) && key !== except)
24
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
25
- }
26
- return to;
27
- };
28
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
29
- // If the importer is in node compatibility mode or this is not an ESM
30
- // file that has been converted to a CommonJS file using a Babel-
31
- // compatible transform (i.e. "__esModule" has not been set), then set
32
- // "default" to the CommonJS "module.exports" for node compatibility.
33
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
34
- mod
35
- ));
36
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
37
- var Plugin_exports = {};
38
- __export(Plugin_exports, {
39
- default: () => PluginWorkflowServer
40
- });
41
- module.exports = __toCommonJS(Plugin_exports);
42
- var import_path = __toESM(require("path"));
43
- var import_crypto = require("crypto");
44
- var import_lru_cache = __toESM(require("lru-cache"));
45
- var import_database = require("@nocobase/database");
46
- var import_server = require("@nocobase/server");
47
- var import_utils = require("@nocobase/utils");
48
- var import_Processor = __toESM(require("./Processor"));
49
- var import_actions = __toESM(require("./actions"));
50
- var import_constants = require("./constants");
51
- var import_functions = __toESM(require("./functions"));
52
- var import_CollectionTrigger = __toESM(require("./triggers/CollectionTrigger"));
53
- var import_ScheduleTrigger = __toESM(require("./triggers/ScheduleTrigger"));
54
- var import_CalculationInstruction = __toESM(require("./instructions/CalculationInstruction"));
55
- var import_ConditionInstruction = __toESM(require("./instructions/ConditionInstruction"));
56
- var import_EndInstruction = __toESM(require("./instructions/EndInstruction"));
57
- var import_CreateInstruction = __toESM(require("./instructions/CreateInstruction"));
58
- var import_DestroyInstruction = __toESM(require("./instructions/DestroyInstruction"));
59
- var import_QueryInstruction = __toESM(require("./instructions/QueryInstruction"));
60
- var import_UpdateInstruction = __toESM(require("./instructions/UpdateInstruction"));
61
- class PluginWorkflowServer extends import_server.Plugin {
62
- instructions = new import_utils.Registry();
63
- triggers = new import_utils.Registry();
64
- functions = new import_utils.Registry();
65
- enabledCache = /* @__PURE__ */ new Map();
66
- ready = false;
67
- executing = null;
68
- pending = [];
69
- events = [];
70
- eventsCount = 0;
71
- loggerCache;
72
- meter = null;
73
- checker = null;
74
- onBeforeSave = async (instance, options) => {
75
- const Model = instance.constructor;
76
- if (instance.enabled) {
77
- instance.set("current", true);
78
- } else if (!instance.current) {
79
- const count = await Model.count({
80
- where: {
81
- key: instance.key
82
- },
83
- transaction: options.transaction
84
- });
85
- if (!count) {
86
- instance.set("current", true);
87
- }
88
- }
89
- if (!instance.changed("enabled") || !instance.enabled) {
90
- return;
91
- }
92
- const previous = await Model.findOne({
93
- where: {
94
- key: instance.key,
95
- current: true,
96
- id: {
97
- [import_database.Op.ne]: instance.id
98
- }
99
- },
100
- transaction: options.transaction
101
- });
102
- if (previous) {
103
- await previous.update(
104
- { enabled: false, current: null },
105
- {
106
- transaction: options.transaction,
107
- hooks: false
108
- }
109
- );
110
- this.toggle(previous, false);
111
- }
112
- };
113
- /**
114
- * @experimental
115
- */
116
- getLogger(workflowId) {
117
- const now = /* @__PURE__ */ new Date();
118
- const date = `${now.getFullYear()}-${`0${now.getMonth() + 1}`.slice(-2)}-${`0${now.getDate()}`.slice(-2)}`;
119
- const key = `${date}-${workflowId}}`;
120
- if (this.loggerCache.has(key)) {
121
- return this.loggerCache.get(key);
122
- }
123
- const logger = this.createLogger({
124
- dirname: import_path.default.join("workflows", String(workflowId)),
125
- filename: "%DATE%.log"
126
- });
127
- this.loggerCache.set(key, logger);
128
- return logger;
129
- }
130
- /**
131
- * @experimental
132
- * @param {WorkflowModel} workflow
133
- * @returns {boolean}
134
- */
135
- isWorkflowSync(workflow) {
136
- const trigger = this.triggers.get(workflow.type);
137
- if (!trigger) {
138
- throw new Error(`invalid trigger type ${workflow.type} of workflow ${workflow.id}`);
139
- }
140
- return trigger.sync ?? workflow.sync;
141
- }
142
- registerTrigger(type, trigger) {
143
- if (typeof trigger === "function") {
144
- this.triggers.register(type, new trigger(this));
145
- } else if (trigger) {
146
- this.triggers.register(type, trigger);
147
- } else {
148
- throw new Error("invalid trigger type to register");
149
- }
150
- }
151
- registerInstruction(type, instruction) {
152
- if (typeof instruction === "function") {
153
- this.instructions.register(type, new instruction(this));
154
- } else if (instruction) {
155
- this.instructions.register(type, instruction);
156
- } else {
157
- throw new Error("invalid instruction type to register");
158
- }
159
- }
160
- initTriggers(more = {}) {
161
- this.registerTrigger("collection", import_CollectionTrigger.default);
162
- this.registerTrigger("schedule", import_ScheduleTrigger.default);
163
- for (const [name, trigger] of Object.entries(more)) {
164
- this.registerTrigger(name, trigger);
165
- }
166
- }
167
- initInstructions(more = {}) {
168
- this.registerInstruction("calculation", import_CalculationInstruction.default);
169
- this.registerInstruction("condition", import_ConditionInstruction.default);
170
- this.registerInstruction("end", import_EndInstruction.default);
171
- this.registerInstruction("create", import_CreateInstruction.default);
172
- this.registerInstruction("destroy", import_DestroyInstruction.default);
173
- this.registerInstruction("query", import_QueryInstruction.default);
174
- this.registerInstruction("update", import_UpdateInstruction.default);
175
- for (const [name, instruction] of Object.entries({ ...more })) {
176
- this.registerInstruction(name, instruction);
177
- }
178
- }
179
- /**
180
- * @internal
181
- */
182
- async load() {
183
- const { db, options } = this;
184
- (0, import_actions.default)(this);
185
- this.initTriggers(options.triggers);
186
- this.initInstructions(options.instructions);
187
- (0, import_functions.default)(this, options.functions);
188
- this.loggerCache = new import_lru_cache.default({
189
- max: 20,
190
- updateAgeOnGet: true,
191
- dispose(logger) {
192
- logger.end();
193
- }
194
- });
195
- this.meter = this.app.telemetry.metric.getMeter();
196
- const counter = this.meter.createObservableGauge("workflow.events.counter");
197
- counter.addCallback((result) => {
198
- result.observe(this.eventsCount);
199
- });
200
- this.app.acl.registerSnippet({
201
- name: `pm.${this.name}.workflows`,
202
- actions: [
203
- "workflows:*",
204
- "workflows.nodes:*",
205
- "executions:list",
206
- "executions:get",
207
- "executions:cancel",
208
- "flow_nodes:update",
209
- "flow_nodes:destroy"
210
- ]
211
- });
212
- this.app.acl.registerSnippet({
213
- name: "ui.workflows",
214
- actions: ["workflows:list"]
215
- });
216
- this.app.acl.allow("*", ["trigger"], "loggedIn");
217
- this.db.addMigrations({
218
- namespace: this.name,
219
- directory: import_path.default.resolve(__dirname, "migrations"),
220
- context: {
221
- plugin: this
222
- }
223
- });
224
- db.on("workflows.beforeSave", this.onBeforeSave);
225
- db.on("workflows.afterSave", (model) => this.toggle(model));
226
- db.on("workflows.afterDestroy", (model) => this.toggle(model, false));
227
- this.app.on("afterStart", async () => {
228
- this.app.setMaintainingMessage("check for not started executions");
229
- this.ready = true;
230
- const collection = db.getCollection("workflows");
231
- const workflows = await collection.repository.find({
232
- filter: { enabled: true }
233
- });
234
- workflows.forEach((workflow) => {
235
- this.toggle(workflow);
236
- });
237
- this.checker = setInterval(() => {
238
- this.dispatch();
239
- }, 3e5);
240
- this.dispatch();
241
- });
242
- this.app.on("beforeStop", async () => {
243
- const repository = db.getRepository("workflows");
244
- const workflows = await repository.find({
245
- filter: { enabled: true }
246
- });
247
- workflows.forEach((workflow) => {
248
- this.toggle(workflow, false);
249
- });
250
- this.ready = false;
251
- if (this.events.length) {
252
- await this.prepare();
253
- }
254
- if (this.executing) {
255
- await this.executing;
256
- }
257
- if (this.checker) {
258
- clearInterval(this.checker);
259
- }
260
- });
261
- }
262
- toggle(workflow, enable) {
263
- const type = workflow.get("type");
264
- const trigger = this.triggers.get(type);
265
- if (!trigger) {
266
- this.getLogger(workflow.id).error(`trigger type ${workflow.type} of workflow ${workflow.id} is not implemented`);
267
- return;
268
- }
269
- if (enable ?? workflow.get("enabled")) {
270
- const prev = workflow.previous();
271
- if (prev.config) {
272
- trigger.off({ ...workflow.get(), ...prev });
273
- }
274
- trigger.on(workflow);
275
- this.enabledCache.set(workflow.id, workflow);
276
- } else {
277
- trigger.off(workflow);
278
- this.enabledCache.delete(workflow.id);
279
- }
280
- }
281
- trigger(workflow, context, options = {}) {
282
- const logger = this.getLogger(workflow.id);
283
- if (!this.ready) {
284
- logger.warn(`app is not ready, event of workflow ${workflow.id} will be ignored`);
285
- logger.debug(`ignored event data:`, context);
286
- return;
287
- }
288
- if (context == null) {
289
- logger.warn(`workflow ${workflow.id} event data context is null, event will be ignored`);
290
- return;
291
- }
292
- if (this.isWorkflowSync(workflow)) {
293
- return this.triggerSync(workflow, context, options);
294
- }
295
- const { transaction, ...rest } = options;
296
- this.events.push([workflow, context, rest]);
297
- this.eventsCount = this.events.length;
298
- logger.info(`new event triggered, now events: ${this.events.length}`);
299
- logger.debug(`event data:`, { context });
300
- if (this.events.length > 1) {
301
- return;
302
- }
303
- setTimeout(this.prepare);
304
- }
305
- async triggerSync(workflow, context, { deferred, ...options } = {}) {
306
- let execution;
307
- try {
308
- execution = await this.createExecution(workflow, context, options);
309
- } catch (err) {
310
- this.getLogger(workflow.id).error(`creating execution failed: ${err.message}`, err);
311
- return null;
312
- }
313
- try {
314
- return this.process(execution, null, options);
315
- } catch (err) {
316
- this.getLogger(execution.workflowId).error(`execution (${execution.id}) error: ${err.message}`, err);
317
- }
318
- return null;
319
- }
320
- async resume(job) {
321
- if (!job.execution) {
322
- job.execution = await job.getExecution();
323
- }
324
- this.getLogger(job.execution.workflowId).info(
325
- `execution (${job.execution.id}) resuming from job (${job.id}) added to pending list`
326
- );
327
- this.pending.push([job.execution, job]);
328
- this.dispatch();
329
- }
330
- /**
331
- * Start a deferred execution
332
- * @experimental
333
- */
334
- start(execution) {
335
- if (execution.status !== import_constants.EXECUTION_STATUS.STARTED) {
336
- return;
337
- }
338
- this.pending.push([execution]);
339
- this.dispatch();
340
- }
341
- createProcessor(execution, options = {}) {
342
- return new import_Processor.default(execution, { ...options, plugin: this });
343
- }
344
- async createExecution(workflow, context, options) {
345
- const { transaction = await this.db.sequelize.transaction(), deferred } = options;
346
- const trigger = this.triggers.get(workflow.type);
347
- const valid = await trigger.validateEvent(workflow, context, { ...options, transaction });
348
- if (!valid) {
349
- if (!options.transaction) {
350
- await transaction.commit();
351
- }
352
- return null;
353
- }
354
- let execution;
355
- try {
356
- execution = await workflow.createExecution(
357
- {
358
- context,
359
- key: workflow.key,
360
- eventKey: options.eventKey ?? (0, import_crypto.randomUUID)(),
361
- status: deferred ? import_constants.EXECUTION_STATUS.STARTED : import_constants.EXECUTION_STATUS.QUEUEING
362
- },
363
- { transaction }
364
- );
365
- } catch (err) {
366
- if (!options.transaction) {
367
- await transaction.rollback();
368
- }
369
- throw err;
370
- }
371
- this.getLogger(workflow.id).info(`execution of workflow ${workflow.id} created as ${execution.id}`);
372
- await workflow.increment(["executed", "allExecuted"], { transaction });
373
- if (this.db.options.dialect !== "postgres") {
374
- await workflow.reload({ transaction });
375
- }
376
- await workflow.constructor.update(
377
- {
378
- allExecuted: workflow.allExecuted
379
- },
380
- {
381
- where: {
382
- key: workflow.key
383
- },
384
- transaction
385
- }
386
- );
387
- if (!options.transaction) {
388
- await transaction.commit();
389
- }
390
- execution.workflow = workflow;
391
- return execution;
392
- }
393
- prepare = async () => {
394
- if (this.executing && this.db.options.dialect === "sqlite") {
395
- await this.executing;
396
- }
397
- const event = this.events.shift();
398
- this.eventsCount = this.events.length;
399
- if (!event) {
400
- this.getLogger("dispatcher").warn(`events queue is empty, no need to prepare`);
401
- return;
402
- }
403
- const logger = this.getLogger(event[0].id);
404
- logger.info(`preparing execution for event`);
405
- try {
406
- const execution = await this.createExecution(...event);
407
- if ((execution == null ? void 0 : execution.status) === import_constants.EXECUTION_STATUS.QUEUEING && !this.executing && !this.pending.length) {
408
- this.pending.push([execution]);
409
- }
410
- } catch (err) {
411
- logger.error(`failed to create execution: ${err.message}`, err);
412
- }
413
- if (this.events.length) {
414
- await this.prepare();
415
- } else {
416
- this.dispatch();
417
- }
418
- };
419
- dispatch() {
420
- if (!this.ready) {
421
- this.getLogger("dispatcher").warn(`app is not ready, new dispatching will be ignored`);
422
- return;
423
- }
424
- if (this.executing) {
425
- this.getLogger("dispatcher").warn(`workflow executing is not finished, new dispatching will be ignored`);
426
- return;
427
- }
428
- if (this.events.length) {
429
- return this.prepare();
430
- }
431
- this.executing = (async () => {
432
- let next = null;
433
- try {
434
- if (this.pending.length) {
435
- next = this.pending.shift();
436
- this.getLogger(next[0].workflowId).info(`pending execution (${next[0].id}) ready to process`);
437
- } else {
438
- const execution = await this.db.getRepository("executions").findOne({
439
- filter: {
440
- status: import_constants.EXECUTION_STATUS.QUEUEING,
441
- "workflow.enabled": true,
442
- "workflow.id": {
443
- [import_database.Op.not]: null
444
- }
445
- },
446
- appends: ["workflow"],
447
- sort: "id"
448
- });
449
- if (execution) {
450
- this.getLogger(execution.workflowId).info(`execution (${execution.id}) fetched from db`);
451
- next = [execution];
452
- }
453
- }
454
- if (next) {
455
- await this.process(...next);
456
- }
457
- } finally {
458
- this.executing = null;
459
- if (next) {
460
- this.dispatch();
461
- }
462
- }
463
- })();
464
- }
465
- async process(execution, job, options = {}) {
466
- var _a, _b;
467
- if (execution.status === import_constants.EXECUTION_STATUS.QUEUEING) {
468
- await execution.update({ status: import_constants.EXECUTION_STATUS.STARTED }, { transaction: options.transaction });
469
- }
470
- const logger = this.getLogger(execution.workflowId);
471
- const processor = this.createProcessor(execution, options);
472
- logger.info(`execution (${execution.id}) ${job ? "resuming" : "starting"}...`);
473
- try {
474
- await (job ? processor.resume(job) : processor.start());
475
- logger.info(`execution (${execution.id}) finished with status: ${execution.status}`, { execution });
476
- if (execution.status && ((_b = (_a = execution.workflow.options) == null ? void 0 : _a.deleteExecutionOnStatus) == null ? void 0 : _b.includes(execution.status))) {
477
- await execution.destroy();
478
- }
479
- } catch (err) {
480
- logger.error(`execution (${execution.id}) error: ${err.message}`, err);
481
- }
482
- return processor;
483
- }
484
- /**
485
- * @experimental
486
- * @param {string} dataSourceName
487
- * @param {Transaction} transaction
488
- * @param {boolean} create
489
- * @returns {Trasaction}
490
- */
491
- useDataSourceTransaction(dataSourceName = "main", transaction, create = false) {
492
- const { db } = this.app.dataSourceManager.dataSources.get(dataSourceName).collectionManager;
493
- if (!db) {
494
- return;
495
- }
496
- if (db.sequelize === (transaction == null ? void 0 : transaction.sequelize)) {
497
- return transaction;
498
- }
499
- if (create) {
500
- return db.sequelize.transaction();
501
- }
502
- }
503
- }