@tachybase/module-workflow 0.23.35 → 0.23.41

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.
@@ -469,7 +469,7 @@ lib.log`},"x-component":"CodeMirror",required:!0},model:{type:"array",title:D("P
469
469
  .ant-drawer-body {
470
470
  background: var(--tb-box-bg);
471
471
  }
472
- `},properties:{tabs:{type:"void","x-component":"Tabs","x-component-props":{},"x-initializer":"TabPaneInitializers","x-initializer-props":{gridInitializer:"workflowManual:popup:configureUserInterface:addBlock"},properties:e!=null?e:{tab1:{type:"void",title:`{{t("Manual", { ns: "${m}" })}}`,"x-component":"Tabs.TabPane","x-designer":"Tabs.Designer",properties:{grid:{type:"void","x-component":"Grid","x-initializer":"workflowManual:popup:configureUserInterface:addBlock",properties:{}}}}}}}}}}),[]),u=v.useCallback(function(){const{tabs:y}=B.lodash.get(p.toJSON(),"properties.drawer.properties"),x=Array.from(Me.getValues()).reduce((h,C)=>Object.assign(h,C.config.parseFormOptions(y)),{});l.setValuesIn("forms",x),t(y.properties)},[l,t,p]);return r.jsx(s.SchemaComponentContext.Provider,{value:F(w({},n),{designable:!d.executed,refresh:u}),children:r.jsx(s.SchemaComponent,{schema:p,components:F(w(w({},c),Array.from(Me.getValues()).reduce((g,y)=>Object.assign(g,y.config.components),{})),{FormBlockProvider:Eo,DetailsBlockProvider:s.DetailsBlockProvider,ManualActionStatusProvider(g){return g.children},ActionBarProvider(g){return g.children},SimpleDesigner:_t,ManualActionDesigner:ys}),scope:{useSubmit:bs,useDetailsBlockProps:s.useFormBlockContext}})})}function ws(e){const{workflow:t}=L(),[o,n]=v.useState(!1);return r.jsxs(r.Fragment,{children:[r.jsx(b.Button,{type:"primary",onClick:()=>n(!0),disabled:!1,children:N(t.executed?"View user interface":"Configure user interface")}),r.jsx(s.ActionContextProvider,{value:{visible:o,setVisible:n,formValueChanged:!1},children:e.children})]})}class Cs extends Q{constructor(){super(...arguments);f(this,"title",`{{t("Manual", { ns: "${m}" })}}`);f(this,"type","manual");f(this,"group","manual");f(this,"icon","CoffeeOutlined");f(this,"color","#a3243b");f(this,"description",`{{t("Could be used for manually submitting data, and determine whether to continue or exit. Workflow will generate a todo item for assigned user when it reaches a manual node, and continue processing after user submits the form.", { ns: "${m}" })}}`);f(this,"fieldset",{assignees:{type:"array",title:`{{t("Assignees", { ns: "${m}" })}}`,"x-decorator":"FormItem","x-component":"AssigneesSelect","x-component-props":{},required:!0,default:[]},mode:{type:"number",title:`{{t("Mode", { ns: "${m}" })}}`,"x-decorator":"FormItem","x-component":"ModeConfig",default:1,"x-reactions":{dependencies:["assignees"],fulfill:{state:{visible:"{{$deps[0].length > 1}}"}}}},schema:{type:"void",title:`{{t("User interface", { ns: "${m}" })}}`,"x-decorator":"FormItem","x-component":"SchemaConfigButton",properties:{schema:{type:"object","x-component":"SchemaConfig",default:null}}},forms:{type:"object",default:{}}});f(this,"components",{SchemaConfigButton:ws,SchemaConfig:vs,ModeConfig:es,AssigneesSelect:Rr})}useVariables({key:o,title:n,config:a},{types:i,fieldNames:l=ue}){var g;const d=s.useCompile(),{getCollectionFields:c}=s.useCollectionManager_deprecated(),p=Object.keys((g=a.forms)!=null?g:{});if(!p.length)return null;const u=p.map(y=>{var k;const x=a.forms[y],h=me({fields:(k=x.collection)==null?void 0:k.fields,collection:x.collection,types:i,compile:d,getCollectionFields:c}),C=d(x.title)||y;return h.length?{key:y,value:y,label:C,title:C,children:h}:null}).filter(Boolean);return u.length?{[l.value]:o,[l.label]:n,[l.children]:u}:null}useInitializers(o){var l;const{getCollection:n}=s.useCollectionManager_deprecated(),a=Object.keys((l=o.config.forms)!=null?l:{});if(!a.length||o.config.mode)return null;const i=a.map(d=>{var u,g;const c=o.config.forms[d],{fields:p=[]}=n(c.collection);return p.length?{name:(u=c.title)!=null?u:d,type:"item",title:(g=c.title)!=null?g:d,Component:Ne,collection:c.collection,dataPath:`$jobsMapByNodeKey.${o.key}.${d}`}:null}).filter(Boolean);return i.length?{name:`#${o.id}`,key:"forms",type:"subMenu",title:o.title,children:i}:null}isAvailable({engine:o,workflow:n,upstream:a,branchIndex:i}){return!o.isWorkflowSync(n)}}const ks={title:`{{t("Task", { ns: "${m}" })}}`,name:"flow_nodes",fields:[{type:"bigInt",name:"id",interface:"m2o",uiSchema:{type:"number",title:"ID","x-component":"RemoteSelect","x-component-props":{fieldNames:{label:"title",value:"id"},service:{resource:"flow_nodes",params:{filter:{type:"manual"}}}}}},{type:"string",name:"title",interface:"input",uiSchema:{type:"string",title:'{{t("Title")}}',"x-component":"Input"}}]},Ss={title:`{{t("Workflow", { ns: "${m}" })}}`,name:"workflows",fields:[{type:"string",name:"title",interface:"input",uiSchema:{title:'{{t("Name")}}',type:"string","x-component":"Input",required:!0}}]},As={title:`{{t("Workflow todos", { ns: "${m}" })}}`,name:"users_jobs",fields:[{type:"belongsTo",name:"user",target:"users",foreignKey:"userId",interface:"m2o",uiSchema:{type:"number",title:'{{t("User")}}',"x-component":"RemoteSelect","x-component-props":{fieldNames:{label:"nickname",value:"id"},service:{resource:"users"}}}},{type:"belongsTo",name:"node",target:"flow_nodes",foreignKey:"nodeId",interface:"m2o",isAssociation:!0,uiSchema:{type:"number",title:`{{t("Task", { ns: "${m}" })}}`,"x-component":"RemoteSelect","x-component-props":{fieldNames:{label:"title",value:"id"},service:{resource:"flow_nodes"}}}},{type:"belongsTo",name:"workflow",target:"workflows",foreignKey:"workflowId",interface:"m2o",uiSchema:{type:"number",title:`{{t("Workflow", { ns: "${m}" })}}`,"x-component":"RemoteSelect","x-component-props":{fieldNames:{label:"title",value:"id"},service:{resource:"workflows"}}}},{type:"integer",name:"status",interface:"select",uiSchema:{type:"number",title:`{{t("Status", { ns: "${m}" })}}`,"x-component":"Select",enum:ft}},{name:"createdAt",type:"date",interface:"createdAt",uiSchema:{type:"datetime",title:'{{t("Created at")}}',"x-component":"DatePicker","x-component-props":{showTime:!0}}}]},Is=A.observer(()=>{var t,o,n;const e=A.useField();return(n=(t=e==null?void 0:e.value)==null?void 0:t.title)!=null?n:`#${(o=e.value)==null?void 0:o.id}`},{displayName:"NodeColumn"}),Fs=A.observer(()=>{var t,o,n;const e=A.useField();return(n=(t=e==null?void 0:e.value)==null?void 0:t.title)!=null?n:`#${(o=e.value)==null?void 0:o.id}`},{displayName:"WorkflowColumn"}),Ts=A.observer(()=>{var t,o,n;const e=A.useField();return(n=(t=e==null?void 0:e.value)==null?void 0:t.nickname)!=null?n:(o=e.value)==null?void 0:o.id},{displayName:"UserColumn"});function Ns(e){const t=s.useRecord(),o=N("Unprocessed");return t.execution.status&&!t.status?r.jsx(b.Tag,{children:o}):e.children}const Yt=()=>r.jsx(s.SchemaComponent,{components:{NodeColumn:Is,WorkflowColumn:Fs,UserColumn:Ts,UserJobStatusColumn:Ns},schema:{type:"void",properties:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{filter:{type:"void",title:'{{ t("Filter") }}',"x-action":"filter","x-designer":"Filter.Action.Designer","x-component":"Filter.Action","x-use-component-props":"useFilterActionProps","x-component-props":{icon:"FilterOutlined"},"x-align":"left"},refresher:{type:"void",title:'{{ t("Refresh") }}',"x-action":"refresh","x-component":"Action","x-toolbar":"ActionSchemaToolbar","x-settings":"actionSettings:refresh","x-use-component-props":"useRefreshActionProps","x-component-props":{icon:"ReloadOutlined"},"x-align":"right"}}},table:{type:"array","x-component":"TableV2","x-use-component-props":"useTableBlockProps","x-component-props":{rowKey:"id"},properties:{actions:{type:"void","x-decorator":"TableV2.Column.Decorator","x-component":"TableV2.Column","x-component-props":{width:60},title:'{{t("Actions")}}',properties:{view:{type:"void","x-component":"Action.Link",title:'{{t("View")}}',properties:{drawer:{"x-component":"WorkflowTodo.Drawer"}}}}},node:{type:"void","x-decorator":"TableV2.Column.Decorator","x-component":"TableV2.Column","x-component-props":{width:null},title:`{{t("Task node", { ns: "${m}" })}}`,properties:{node:{"x-component":"NodeColumn","x-read-pretty":!0}}},workflow:{type:"void","x-decorator":"TableV2.Column.Decorator","x-component":"TableV2.Column","x-component-props":{width:null},title:'{{t("Workflow", { ns: "workflow" })}}',properties:{workflow:{"x-component":"WorkflowColumn","x-read-pretty":!0}}},status:{type:"void","x-decorator":"TableV2.Column.Decorator","x-component":"TableV2.Column","x-component-props":{width:100},title:'{{t("Status", { ns: "workflow" })}}',properties:{status:{type:"number","x-decorator":"UserJobStatusColumn","x-component":"CollectionField","x-read-pretty":!0}}},user:{type:"void","x-decorator":"TableV2.Column.Decorator","x-component":"TableV2.Column","x-component-props":{width:140},title:`{{t("Assignee", { ns: "${m}" })}}`,properties:{user:{"x-component":"UserColumn","x-read-pretty":!0}}},createdAt:{type:"void","x-decorator":"TableV2.Column.Decorator","x-component":"TableV2.Column","x-component-props":{width:160},properties:{createdAt:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}}}}}}});function Ds(e){var p;const{data:t}=s.useCurrentUserContext(),{userJob:o}=L(),{status:n,result:a,userId:i}=o,l=A.useFieldSchema(),{name:d}=l.parent.toJSON();let{children:c}=e;return n?a[d]||(c=null):((p=t==null?void 0:t.data)==null?void 0:p.id)!==i&&(c=null),c}const zo=v.createContext(null);zo.displayName="ManualActionStatusContext";function Os({value:e,children:t}){const{userJob:o,execution:n}=L(),a=A.useField(),i=A.useFieldSchema();return v.useEffect(()=>{(n.status||o.status)&&(a.disabled=!0,a.visible=o.status===e&&o.result._===i.name)},[n,o,e,a,i.name]),r.jsx(zo.Provider,{value:e,children:t})}function Ps(){const e=s.useAPIClient(),{setVisible:t}=s.useActionContext(),{values:o,submit:n}=A.useForm(),a=A.useFieldSchema(),{service:i}=s.useTableBlockContext(),{userJob:l,execution:d}=L(),{name:c}=a,{name:p}=a.parent.parent;return{run(){return E(this,null,function*(){d.status||l.status||(yield n(),yield e.resource("users_jobs").submit({filterByTk:l.id,values:{result:{[p]:o,_:c}}}),t(!1),i.refresh())})}}}function Es(e){var u;const t=s.usePlugin(Z),o=s.useAPIClient(),{id:n}=s.useRecord(),[a,i]=v.useState(null),[l,d]=v.useState(null);v.useEffect(()=>{var g,y;n&&((y=(g=o.resource("users_jobs")).get)==null||y.call(g,{filterByTk:n,appends:["node","job","workflow","workflow.nodes","execution","execution.jobs"]}).then(({data:x})=>{var O;const V=(O=x==null?void 0:x.data)!=null?O:{},{node:h,workflow:$={}}=V,P=$,{nodes:C=[]}=P,k=G(P,["nodes"]),j=V,{execution:T}=j,I=G(j,["node","workflow","execution"]);gt(C),d(h),i({userJob:I,workflow:k,nodes:C,execution:T})}))},[o,n]);const p=$e(a==null?void 0:a.nodes.find(g=>g.id===l.id)).reduce((g,{type:y})=>{var x;return Object.assign(g,(x=t.instructions.get(y))==null?void 0:x.components)},{});return l&&a?r.jsx(Ue.Provider,{value:a,children:r.jsx(s.SchemaComponent,{components:w(w({FormBlockProvider:Eo,DetailsBlockProvider:zt,ActionBarProvider:Ds,ManualActionStatusProvider:Os},Array.from(Me.getValues()).reduce((g,y)=>Object.assign(g,y.block.components),{})),p),scope:w({useSubmit:Ps,useFormBlockProps:Ms,useDetailsBlockProps:$s},Array.from(Me.getValues()).reduce((g,y)=>Object.assign(g,y.block.scope),{})),schema:{type:"void",name:"tabs","x-component":"Tabs",properties:(u=l.config)==null?void 0:u.schema}})}):r.jsx(b.Spin,{})}function Ms(){var l;const{userJob:e,execution:t}=L(),o=s.useRecord(),{data:n}=s.useCurrentUserContext(),{form:a}=s.useFormBlockContext(),i=t.status||e.status?o?"readPretty":"disabled":((l=n==null?void 0:n.data)==null?void 0:l.id)!==e.userId?"disabled":"editable";return v.useEffect(()=>{a==null||a.setPattern(i)},[i,a]),{form:a}}function $s(){const{form:e}=s.useFormBlockContext();return{form:e}}function Bs(){const e=s.useCompile(),{status:t,updatedAt:o}=s.useRecord(),n=et[t];return t?r.jsxs(b.Space,{children:[r.jsx("time",{className:s.css`
472
+ `},properties:{tabs:{type:"void","x-component":"Tabs","x-component-props":{},"x-initializer":"popup:addTab","x-initializer-props":{gridInitializer:"workflowManual:popup:configureUserInterface:addBlock"},properties:e!=null?e:{tab1:{type:"void",title:`{{t("Manual", { ns: "${m}" })}}`,"x-component":"Tabs.TabPane","x-designer":"Tabs.Designer",properties:{grid:{type:"void","x-component":"Grid","x-initializer":"workflowManual:popup:configureUserInterface:addBlock",properties:{}}}}}}}}}}),[]),u=v.useCallback(function(){const{tabs:y}=B.lodash.get(p.toJSON(),"properties.drawer.properties"),x=Array.from(Me.getValues()).reduce((h,C)=>Object.assign(h,C.config.parseFormOptions(y)),{});l.setValuesIn("forms",x),t(y.properties)},[l,t,p]);return r.jsx(s.SchemaComponentContext.Provider,{value:F(w({},n),{designable:!d.executed,refresh:u}),children:r.jsx(s.SchemaComponent,{schema:p,components:F(w(w({},c),Array.from(Me.getValues()).reduce((g,y)=>Object.assign(g,y.config.components),{})),{FormBlockProvider:Eo,DetailsBlockProvider:s.DetailsBlockProvider,ManualActionStatusProvider(g){return g.children},ActionBarProvider(g){return g.children},SimpleDesigner:_t,ManualActionDesigner:ys}),scope:{useSubmit:bs,useDetailsBlockProps:s.useFormBlockContext}})})}function ws(e){const{workflow:t}=L(),[o,n]=v.useState(!1);return r.jsxs(r.Fragment,{children:[r.jsx(b.Button,{type:"primary",onClick:()=>n(!0),disabled:!1,children:N(t.executed?"View user interface":"Configure user interface")}),r.jsx(s.ActionContextProvider,{value:{visible:o,setVisible:n,formValueChanged:!1},children:e.children})]})}class Cs extends Q{constructor(){super(...arguments);f(this,"title",`{{t("Manual", { ns: "${m}" })}}`);f(this,"type","manual");f(this,"group","manual");f(this,"icon","CoffeeOutlined");f(this,"color","#a3243b");f(this,"description",`{{t("Could be used for manually submitting data, and determine whether to continue or exit. Workflow will generate a todo item for assigned user when it reaches a manual node, and continue processing after user submits the form.", { ns: "${m}" })}}`);f(this,"fieldset",{assignees:{type:"array",title:`{{t("Assignees", { ns: "${m}" })}}`,"x-decorator":"FormItem","x-component":"AssigneesSelect","x-component-props":{},required:!0,default:[]},mode:{type:"number",title:`{{t("Mode", { ns: "${m}" })}}`,"x-decorator":"FormItem","x-component":"ModeConfig",default:1,"x-reactions":{dependencies:["assignees"],fulfill:{state:{visible:"{{$deps[0].length > 1}}"}}}},schema:{type:"void",title:`{{t("User interface", { ns: "${m}" })}}`,"x-decorator":"FormItem","x-component":"SchemaConfigButton",properties:{schema:{type:"object","x-component":"SchemaConfig",default:null}}},forms:{type:"object",default:{}}});f(this,"components",{SchemaConfigButton:ws,SchemaConfig:vs,ModeConfig:es,AssigneesSelect:Rr})}useVariables({key:o,title:n,config:a},{types:i,fieldNames:l=ue}){var g;const d=s.useCompile(),{getCollectionFields:c}=s.useCollectionManager_deprecated(),p=Object.keys((g=a.forms)!=null?g:{});if(!p.length)return null;const u=p.map(y=>{var k;const x=a.forms[y],h=me({fields:(k=x.collection)==null?void 0:k.fields,collection:x.collection,types:i,compile:d,getCollectionFields:c}),C=d(x.title)||y;return h.length?{key:y,value:y,label:C,title:C,children:h}:null}).filter(Boolean);return u.length?{[l.value]:o,[l.label]:n,[l.children]:u}:null}useInitializers(o){var l;const{getCollection:n}=s.useCollectionManager_deprecated(),a=Object.keys((l=o.config.forms)!=null?l:{});if(!a.length||o.config.mode)return null;const i=a.map(d=>{var u,g;const c=o.config.forms[d],{fields:p=[]}=n(c.collection);return p.length?{name:(u=c.title)!=null?u:d,type:"item",title:(g=c.title)!=null?g:d,Component:Ne,collection:c.collection,dataPath:`$jobsMapByNodeKey.${o.key}.${d}`}:null}).filter(Boolean);return i.length?{name:`#${o.id}`,key:"forms",type:"subMenu",title:o.title,children:i}:null}isAvailable({engine:o,workflow:n,upstream:a,branchIndex:i}){return!o.isWorkflowSync(n)}}const ks={title:`{{t("Task", { ns: "${m}" })}}`,name:"flow_nodes",fields:[{type:"bigInt",name:"id",interface:"m2o",uiSchema:{type:"number",title:"ID","x-component":"RemoteSelect","x-component-props":{fieldNames:{label:"title",value:"id"},service:{resource:"flow_nodes",params:{filter:{type:"manual"}}}}}},{type:"string",name:"title",interface:"input",uiSchema:{type:"string",title:'{{t("Title")}}',"x-component":"Input"}}]},Ss={title:`{{t("Workflow", { ns: "${m}" })}}`,name:"workflows",fields:[{type:"string",name:"title",interface:"input",uiSchema:{title:'{{t("Name")}}',type:"string","x-component":"Input",required:!0}}]},As={title:`{{t("Workflow todos", { ns: "${m}" })}}`,name:"users_jobs",fields:[{type:"belongsTo",name:"user",target:"users",foreignKey:"userId",interface:"m2o",uiSchema:{type:"number",title:'{{t("User")}}',"x-component":"RemoteSelect","x-component-props":{fieldNames:{label:"nickname",value:"id"},service:{resource:"users"}}}},{type:"belongsTo",name:"node",target:"flow_nodes",foreignKey:"nodeId",interface:"m2o",isAssociation:!0,uiSchema:{type:"number",title:`{{t("Task", { ns: "${m}" })}}`,"x-component":"RemoteSelect","x-component-props":{fieldNames:{label:"title",value:"id"},service:{resource:"flow_nodes"}}}},{type:"belongsTo",name:"workflow",target:"workflows",foreignKey:"workflowId",interface:"m2o",uiSchema:{type:"number",title:`{{t("Workflow", { ns: "${m}" })}}`,"x-component":"RemoteSelect","x-component-props":{fieldNames:{label:"title",value:"id"},service:{resource:"workflows"}}}},{type:"integer",name:"status",interface:"select",uiSchema:{type:"number",title:`{{t("Status", { ns: "${m}" })}}`,"x-component":"Select",enum:ft}},{name:"createdAt",type:"date",interface:"createdAt",uiSchema:{type:"datetime",title:'{{t("Created at")}}',"x-component":"DatePicker","x-component-props":{showTime:!0}}}]},Is=A.observer(()=>{var t,o,n;const e=A.useField();return(n=(t=e==null?void 0:e.value)==null?void 0:t.title)!=null?n:`#${(o=e.value)==null?void 0:o.id}`},{displayName:"NodeColumn"}),Fs=A.observer(()=>{var t,o,n;const e=A.useField();return(n=(t=e==null?void 0:e.value)==null?void 0:t.title)!=null?n:`#${(o=e.value)==null?void 0:o.id}`},{displayName:"WorkflowColumn"}),Ts=A.observer(()=>{var t,o,n;const e=A.useField();return(n=(t=e==null?void 0:e.value)==null?void 0:t.nickname)!=null?n:(o=e.value)==null?void 0:o.id},{displayName:"UserColumn"});function Ns(e){const t=s.useRecord(),o=N("Unprocessed");return t.execution.status&&!t.status?r.jsx(b.Tag,{children:o}):e.children}const Yt=()=>r.jsx(s.SchemaComponent,{components:{NodeColumn:Is,WorkflowColumn:Fs,UserColumn:Ts,UserJobStatusColumn:Ns},schema:{type:"void",properties:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{filter:{type:"void",title:'{{ t("Filter") }}',"x-action":"filter","x-designer":"Filter.Action.Designer","x-component":"Filter.Action","x-use-component-props":"useFilterActionProps","x-component-props":{icon:"FilterOutlined"},"x-align":"left"},refresher:{type:"void",title:'{{ t("Refresh") }}',"x-action":"refresh","x-component":"Action","x-toolbar":"ActionSchemaToolbar","x-settings":"actionSettings:refresh","x-use-component-props":"useRefreshActionProps","x-component-props":{icon:"ReloadOutlined"},"x-align":"right"}}},table:{type:"array","x-component":"TableV2","x-use-component-props":"useTableBlockProps","x-component-props":{rowKey:"id"},properties:{actions:{type:"void","x-decorator":"TableV2.Column.Decorator","x-component":"TableV2.Column","x-component-props":{width:60},title:'{{t("Actions")}}',properties:{view:{type:"void","x-component":"Action.Link",title:'{{t("View")}}',properties:{drawer:{"x-component":"WorkflowTodo.Drawer"}}}}},node:{type:"void","x-decorator":"TableV2.Column.Decorator","x-component":"TableV2.Column","x-component-props":{width:null},title:`{{t("Task node", { ns: "${m}" })}}`,properties:{node:{"x-component":"NodeColumn","x-read-pretty":!0}}},workflow:{type:"void","x-decorator":"TableV2.Column.Decorator","x-component":"TableV2.Column","x-component-props":{width:null},title:'{{t("Workflow", { ns: "workflow" })}}',properties:{workflow:{"x-component":"WorkflowColumn","x-read-pretty":!0}}},status:{type:"void","x-decorator":"TableV2.Column.Decorator","x-component":"TableV2.Column","x-component-props":{width:100},title:'{{t("Status", { ns: "workflow" })}}',properties:{status:{type:"number","x-decorator":"UserJobStatusColumn","x-component":"CollectionField","x-read-pretty":!0}}},user:{type:"void","x-decorator":"TableV2.Column.Decorator","x-component":"TableV2.Column","x-component-props":{width:140},title:`{{t("Assignee", { ns: "${m}" })}}`,properties:{user:{"x-component":"UserColumn","x-read-pretty":!0}}},createdAt:{type:"void","x-decorator":"TableV2.Column.Decorator","x-component":"TableV2.Column","x-component-props":{width:160},properties:{createdAt:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}}}}}}});function Ds(e){var p;const{data:t}=s.useCurrentUserContext(),{userJob:o}=L(),{status:n,result:a,userId:i}=o,l=A.useFieldSchema(),{name:d}=l.parent.toJSON();let{children:c}=e;return n?a[d]||(c=null):((p=t==null?void 0:t.data)==null?void 0:p.id)!==i&&(c=null),c}const zo=v.createContext(null);zo.displayName="ManualActionStatusContext";function Os({value:e,children:t}){const{userJob:o,execution:n}=L(),a=A.useField(),i=A.useFieldSchema();return v.useEffect(()=>{(n.status||o.status)&&(a.disabled=!0,a.visible=o.status===e&&o.result._===i.name)},[n,o,e,a,i.name]),r.jsx(zo.Provider,{value:e,children:t})}function Ps(){const e=s.useAPIClient(),{setVisible:t}=s.useActionContext(),{values:o,submit:n}=A.useForm(),a=A.useFieldSchema(),{service:i}=s.useTableBlockContext(),{userJob:l,execution:d}=L(),{name:c}=a,{name:p}=a.parent.parent;return{run(){return E(this,null,function*(){d.status||l.status||(yield n(),yield e.resource("users_jobs").submit({filterByTk:l.id,values:{result:{[p]:o,_:c}}}),t(!1),i.refresh())})}}}function Es(e){var u;const t=s.usePlugin(Z),o=s.useAPIClient(),{id:n}=s.useRecord(),[a,i]=v.useState(null),[l,d]=v.useState(null);v.useEffect(()=>{var g,y;n&&((y=(g=o.resource("users_jobs")).get)==null||y.call(g,{filterByTk:n,appends:["node","job","workflow","workflow.nodes","execution","execution.jobs"]}).then(({data:x})=>{var O;const V=(O=x==null?void 0:x.data)!=null?O:{},{node:h,workflow:$={}}=V,P=$,{nodes:C=[]}=P,k=G(P,["nodes"]),j=V,{execution:T}=j,I=G(j,["node","workflow","execution"]);gt(C),d(h),i({userJob:I,workflow:k,nodes:C,execution:T})}))},[o,n]);const p=$e(a==null?void 0:a.nodes.find(g=>g.id===l.id)).reduce((g,{type:y})=>{var x;return Object.assign(g,(x=t.instructions.get(y))==null?void 0:x.components)},{});return l&&a?r.jsx(Ue.Provider,{value:a,children:r.jsx(s.SchemaComponent,{components:w(w({FormBlockProvider:Eo,DetailsBlockProvider:zt,ActionBarProvider:Ds,ManualActionStatusProvider:Os},Array.from(Me.getValues()).reduce((g,y)=>Object.assign(g,y.block.components),{})),p),scope:w({useSubmit:Ps,useFormBlockProps:Ms,useDetailsBlockProps:$s},Array.from(Me.getValues()).reduce((g,y)=>Object.assign(g,y.block.scope),{})),schema:{type:"void",name:"tabs","x-component":"Tabs",properties:(u=l.config)==null?void 0:u.schema}})}):r.jsx(b.Spin,{})}function Ms(){var l;const{userJob:e,execution:t}=L(),o=s.useRecord(),{data:n}=s.useCurrentUserContext(),{form:a}=s.useFormBlockContext(),i=t.status||e.status?o?"readPretty":"disabled":((l=n==null?void 0:n.data)==null?void 0:l.id)!==e.userId?"disabled":"editable";return v.useEffect(()=>{a==null||a.setPattern(i)},[i,a]),{form:a}}function $s(){const{form:e}=s.useFormBlockContext();return{form:e}}function Bs(){const e=s.useCompile(),{status:t,updatedAt:o}=s.useRecord(),n=et[t];return t?r.jsxs(b.Space,{children:[r.jsx("time",{className:s.css`
473
473
  margin-right: 0.5em;
474
474
  `,children:B.dayjs(o).format("YYYY-MM-DD HH:mm:ss")}),r.jsx(b.Tag,{icon:n.icon,color:n.color,children:e(n.label)})]}):null}function Vs(){var i;const e=v.useContext(s.SchemaComponentContext),{id:t,node:o,workflow:n,status:a}=s.useRecord();return r.jsx(s.SchemaComponentContext.Provider,{value:F(w({},e),{reset(){},designable:!1}),children:r.jsx(s.SchemaComponent,{components:{FooterStatus:Bs,FlowContextProvider:Es},schema:{type:"void",name:`drawer-${t}-${a}`,"x-component":"Action.Drawer","x-component-props":{className:"tb-action-popup"},title:`${n.title} - ${(i=o.title)!=null?i:`#${o.id}`}`,properties:{tabs:{type:"void","x-component":"FlowContextProvider"},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{content:{type:"void","x-component":"FooterStatus"}}}}}})})}function js({params:e={},children:t}){const o={collection:"users_jobs",resource:"users_jobs",action:"list",params:F(w({pageSize:20,sort:["-createdAt"]},e),{appends:["user","node","workflow","execution.status"],except:["node.config","workflow.config","workflow.options"]}),rowKey:"id",showIndex:!0,dragSort:!1};return r.jsx(s.ExtendCollectionsProvider,{collections:[ks,Ss,As],children:r.jsx(s.TableBlockProvider,F(w({name:"workflow-todo"},o),{children:t}))})}Yt.Drawer=Vs,Yt.Decorator=js;const Ws=()=>{const e=s.useSchemaInitializerItem(),{insert:t}=s.useSchemaInitializer();return r.jsx(s.SchemaInitializerItem,F(w({icon:r.jsx(z.TableOutlined,{})},e),{onClick:()=>{t({type:"void","x-decorator":"WorkflowTodo.Decorator","x-decorator-props":{},"x-component":"CardItem","x-toolbar":"BlockSchemaToolbar","x-settings":"blockSettings:table",properties:{todos:{type:"void","x-component":"WorkflowTodo"}}})}}))};class zs extends s.Plugin{load(){return E(this,null,function*(){this.addComponents(),this.app.pm.get("workflow").registerInstruction("manual",Cs),this.app.schemaInitializerManager.add(fs),this.app.schemaInitializerManager.add(xs),this.app.schemaInitializerManager.add(cs),this.app.schemaInitializerManager.get("page:addBlock").add("otherBlocks.workflow",{name:"workflow",title:`{{t("Workflow", { ns: "${m}" })}}`,type:"subMenu",icon:r.jsx(z.PartitionOutlined,{}),children:[{name:"common",title:`{{t("Common", { ns: "${m}" })}}`,type:"itemGroup",children:[{name:"todos",title:`{{t("Workflow todos", { ns: "${m}" })}}`,Component:"WorkflowTodoBlockInitializer",icon:"CheckSquareOutlined"}]}]})})}addComponents(){this.app.addComponents({WorkflowTodo:Yt,WorkflowTodoBlockInitializer:Ws})}}const Lo="notice",Qt="workflowNotice",Fe="workflow";function _e(){return{t:(t,o={})=>s.i18n.t(t,w({ns:Fe},o))}}const se=e=>s.tval(e,{ns:Fe});function Ls(){const e=s.useAPIClient(),t=A.useForm(),{field:o,__parent:n}=s.useBlockRequestContext(),{setVisible:a}=s.useActionContext(),i=oe.useNavigate(),l=A.useFieldSchema(),d=A.useField(),c=s.useCompile(),{modal:p}=b.App.useApp(),u=s.useCollectValuesToSubmit(),g=d.componentProps.filterKeys||[];return{onClick(){return E(this,null,function*(){var T,I,O;const{onSuccess:x,skipValidator:h,triggerWorkflows:C}=(T=l==null?void 0:l["x-action-settings"])!=null?T:{};h||(yield t.submit());const k=yield u();d.data=o.data||{},d.data.loading=!0;try{const V=yield e.resource("workflows").trigger({values:k,filterKeys:g,triggerWorkflows:C!=null&&C.length?C.map($=>[$.workflowKey,$.context].filter(Boolean).join("!")).join(","):void 0});if(d.data.loading=!1,d.data.data=V,(O=(I=n==null?void 0:n.service)==null?void 0:I.refresh)==null||O.call(I),a==null||a(!1),!(x!=null&&x.successMessage))return;x!=null&&x.manualClose?p.success({title:c(x==null?void 0:x.successMessage),onOk:()=>E(this,null,function*(){yield t.reset(),x!=null&&x.redirecting&&(x!=null&&x.redirectTo)&&(B.isURL(x.redirectTo)?window.location.href=x.redirectTo:i(x.redirectTo))})}):b.message.success(c(x==null?void 0:x.successMessage))}catch(V){d.data.loading=!1}})}}}function qs(){var y;const e=s.useCompile(),t=s.useAPIClient(),o=s.useRecord(),n=A.useField(),a=A.useFieldSchema(),{field:i,__parent:l}=s.useBlockRequestContext(),{setVisible:d}=s.useActionContext(),{modal:c}=b.App.useApp(),p=oe.useNavigate(),{onSuccess:u,triggerWorkflows:g}=(y=a==null?void 0:a["x-action-settings"])!=null?y:{};return{onClick(){return E(this,null,function*(){var h,C;n.data=i.data||{},n.data.loading=!0;try{if(yield t.resource("workflows").trigger({values:o,triggerWorkflows:g!=null&&g.length?g.map(k=>[k.workflowKey,k.context].filter(Boolean).join("!")).join(","):void 0}),(C=(h=l==null?void 0:l.service)==null?void 0:h.refresh)==null||C.call(h),d==null||d(!1),!(u!=null&&u.successMessage))return;if(u!=null&&u.manualClose){let k;c.success({title:e(u==null?void 0:u.successMessage),onOk(){return E(this,null,function*(){u!=null&&u.redirecting&&(u!=null&&u.redirectTo)&&(B.isURL(u.redirectTo)?window.location.href=u.redirectTo:p(u.redirectTo))})}})}else b.message.success(e(u==null?void 0:u.successMessage))}catch(k){console.error(k)}finally{n.data.loading=!1}})}}}const Us=()=>{const e=Jt(),t=ve.ArrayItems.useArray()||{field:[]},{t:o}=_e(),[n,a]=v.useState(!1),i=v.useCallback(()=>{t.field.push(""),a(!1)},[t.field]),l=v.useCallback(()=>{t.field.push({filter:{}}),a(!1)},[t.field]);return r.jsx(b.Popover,{open:!e&&n,onOpenChange:a,content:r.jsx(Ks,{onSlecet:i,onQuery:l}),children:r.jsx(b.Button,{className:"ant-formily-array-base-addition",type:"dashed",block:!0,disabled:e,children:o("Add Notified Person")})})},Ks=({onSlecet:e,onQuery:t})=>{const{t:o}=_e();return r.jsxs(b.Space,{direction:"vertical",size:"small",children:[r.jsx(b.Button,{type:"text",onClick:e,children:o("Select Notified Person")}),r.jsx(b.Button,{type:"text",onClick:t,children:o("Query Notified Person")})]})},Gs=e=>{const{t}=_e(),[o,n]=v.useState(!1),a=v.useCallback(()=>{n(!0)},[n]);return r.jsxs(r.Fragment,{children:[r.jsx(b.Button,{type:"primary",onClick:a,disabled:!1,children:t("Go to configure")}),r.jsx(s.ActionContextProvider,{value:{visible:o,setVisible:n,formValueChanged:!1},children:e.children})]})},_s=e=>e.value&&typeof e.value=="object"?r.jsx(Js,w({},e)):r.jsx(Hs,w({},e)),Hs=({value:e,onChange:t})=>{const o=ce({types:[Ys]});return r.jsx(s.Variable.Input,{scope:o,value:e,onChange:t,children:r.jsx(s.RemoteSelect,{fieldNames:{label:"nickname",value:"id"},service:{resource:"users"},manual:!1,value:e,onChange:t})})},Js=()=>{const e=A.useField(),t=s.useCollectionFilterOptions("users"),{token:o}=s.useToken();return r.jsx("div",{style:{border:`1px dashed ${o.colorBorder}`,padding:o.paddingSM},children:r.jsx(s.SchemaComponent,{basePath:e.address,schema:{type:"void",properties:{filter:{type:"object","x-component":"Filter","x-component-props":{options:t,dynamicComponent:Oe}}}}})})};function Ys(e){return e.isForeignKey?e.target==="users":e.collectionName==="users"&&e.name==="id"}const Qs=()=>{var c;const{workflow:e}=L(),[t,o]=s.parseCollectionName((c=e.config)==null?void 0:c.collection),n=s.useSchemaInitializerItem(),{insert:a}=s.useSchemaInitializer(),{getTemplateSchemaByMode:i}=s.useSchemaTemplateManager(),l=s.useRecordCollectionDataSourceItems("FormItem"),d=u=>E(this,[u],function*({item:p}){const g=p.template?yield i(p):null,y=s.createReadPrettyFormBlockSchema({actionInitializers:null,resource:o,collection:o,dataSource:t,template:g,settings:"blockSettings:details"});ge.unset(y,["x-acl-action","x-acl-action-props"]);const[x]=Object.keys(y.properties);ge.set(y.properties[x],"x-component-props.useProps","usePropsNoticeDetail"),a(y)});return r.jsx(s.SchemaInitializerItem,F(w({},n),{onClick:d,items:l}))},Zs=new s.SchemaInitializer({name:"NoticeDetailInitializer",wrap:s.gridRowColWrap,title:"{{t('Add block')}}",items:[{name:"notice",type:"itemGroup",title:se("Notice blocks"),children:[{name:"detail",type:"item",title:'{{t("Details")}}',Component:Qs}]},{type:"itemGroup",name:"dataBlocks",title:'{{t("Data blocks")}}',checkChildrenLength:!0,useChildren(){var d;const e=s.usePlugin(Z),{workflow:t}=L(),o=Xe(),n=ye(),a=$e(n),i=[(d=o.useInitializers)==null?void 0:d.call(o,t.config)].filter(Boolean),l=a.map(c=>{var u;const p=e.instructions.get(c.type);return(u=p==null?void 0:p.useInitializers)==null?void 0:u.call(p,c)}).filter(Boolean);return[...i,...l.length?[{name:"nodes",type:"subMenu",title:'{{t("Node result", { ns: "workflow" })}}',children:l}]:[]].filter(Boolean)}},{name:"others",type:"itemGroup",title:'{{t("Other blocks")}}',children:[{name:"markdown",type:"item",title:'{{t("Demonstration text")}}',component:"MarkdownBlockInitializer"}]}]});class Xs extends s.Plugin{load(){return E(this,null,function*(){this.app.schemaInitializerManager.add(Zs)})}}function Rs(e){return{type:"void",name:e,"x-uid":e,"x-component":"Grid","x-initializer":"NoticeDetailInitializer"}}const ea=e=>{const{schemaData:t,loading:o,handleChange:n}=ta(e);return o?r.jsx(b.Spin,{}):r.jsx(s.SchemaComponent,{memoized:!0,scope:{},components:{},schema:t,onChange:n})};function ta(e){const{value:t,onChange:o}=e,n=s.useAPIClient();A.useForm();const{data:a,loading:i}=s.useRequest(()=>E(this,null,function*(){if(t){const p=yield oa(n,t);if(p["x-uid"]===t)return p}const d=t!=null?t:B.uid(),c=Rs(d);return yield na(n,c),o(d),c}));return{schemaData:a,loading:i,handleChange:d=>{}}}function oa(e,t){return E(this,null,function*(){var a;const{data:o}=yield e.request({url:`uiSchemas:getJsonSchema/${t}`});return(a=o.data)!=null?a:{}})}function na(e,t){return E(this,null,function*(){yield e.resource("uiSchemas").insert({values:t})})}const ra={ActionStyle:s.css`
475
475
  .ant-drawer-body {
@@ -1,25 +1,25 @@
1
1
  module.exports = {
2
2
  "react": "18.3.1",
3
- "@tachybase/client": "0.23.35",
3
+ "@tachybase/client": "0.23.41",
4
4
  "@ant-design/icons": "5.3.7",
5
5
  "antd": "5.22.5",
6
6
  "lodash": "4.17.21",
7
- "@tachybase/utils": "0.23.35",
7
+ "@tachybase/utils": "0.23.41",
8
8
  "react-i18next": "15.2.0",
9
9
  "react-router-dom": "6.28.1",
10
- "@tachybase/schema": "0.23.35",
11
- "@tachybase/database": "0.23.35",
12
- "@tachybase/logger": "0.23.35",
13
- "@tachybase/server": "0.23.35",
14
- "@tachybase/evaluators": "0.23.35",
15
- "@tachybase/components": "0.23.35",
16
- "@tachybase/actions": "0.23.35",
17
- "@tachybase/data-source": "0.23.35",
10
+ "@tachybase/schema": "0.23.41",
11
+ "@tachybase/database": "0.23.41",
12
+ "@tachybase/logger": "0.23.41",
13
+ "@tachybase/server": "0.23.41",
14
+ "@tachybase/evaluators": "0.23.41",
15
+ "@tachybase/components": "0.23.41",
16
+ "@tachybase/actions": "0.23.41",
17
+ "@tachybase/data-source": "0.23.41",
18
18
  "axios": "1.7.7",
19
19
  "sequelize": "6.37.5",
20
- "@tachybase/plugin-workflow-test": "0.23.35",
21
- "@tachybase/test": "0.23.35",
22
- "@tachybase/module-error-handler": "0.23.35",
23
- "@tachybase/resourcer": "0.23.35",
24
- "@tachybase/module-ui-schema": "0.23.35"
20
+ "@tachybase/plugin-workflow-test": "0.23.41",
21
+ "@tachybase/test": "0.23.41",
22
+ "@tachybase/module-error-handler": "0.23.41",
23
+ "@tachybase/resourcer": "0.23.41",
24
+ "@tachybase/module-ui-schema": "0.23.41"
25
25
  };
@@ -1 +1 @@
1
- {"name":"@babel/core","version":"7.26.0","description":"Babel compiler core.","main":"./lib/index.js","author":"The Babel Team (https://babel.dev/team)","license":"MIT","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/babel/babel.git","directory":"packages/babel-core"},"homepage":"https://babel.dev/docs/en/next/babel-core","bugs":"https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20core%22+is%3Aopen","keywords":["6to5","babel","classes","const","es6","harmony","let","modules","transpile","transpiler","var","babel-core","compiler"],"engines":{"node":">=6.9.0"},"funding":{"type":"opencollective","url":"https://opencollective.com/babel"},"browser":{"./lib/config/files/index.js":"./lib/config/files/index-browser.js","./lib/config/resolve-targets.js":"./lib/config/resolve-targets-browser.js","./lib/transform-file.js":"./lib/transform-file-browser.js","./src/config/files/index.ts":"./src/config/files/index-browser.ts","./src/config/resolve-targets.ts":"./src/config/resolve-targets-browser.ts","./src/transform-file.ts":"./src/transform-file-browser.ts"},"dependencies":{"@ampproject/remapping":"^2.2.0","@babel/code-frame":"^7.26.0","@babel/generator":"^7.26.0","@babel/helper-compilation-targets":"^7.25.9","@babel/helper-module-transforms":"^7.26.0","@babel/helpers":"^7.26.0","@babel/parser":"^7.26.0","@babel/template":"^7.25.9","@babel/traverse":"^7.25.9","@babel/types":"^7.26.0","convert-source-map":"^2.0.0","debug":"^4.1.0","gensync":"^1.0.0-beta.2","json5":"^2.2.3","semver":"^6.3.1"},"devDependencies":{"@babel/helper-transform-fixture-test-runner":"^7.26.0","@babel/plugin-syntax-flow":"^7.26.0","@babel/plugin-transform-flow-strip-types":"^7.25.9","@babel/plugin-transform-modules-commonjs":"^7.25.9","@babel/preset-env":"^7.26.0","@babel/preset-typescript":"^7.26.0","@jridgewell/trace-mapping":"^0.3.25","@types/convert-source-map":"^2.0.0","@types/debug":"^4.1.0","@types/gensync":"^1.0.0","@types/resolve":"^1.3.2","@types/semver":"^5.4.0","rimraf":"^3.0.0","ts-node":"^11.0.0-beta.1"},"type":"commonjs","_lastModified":"2025-01-16T06:27:57.247Z"}
1
+ {"name":"@babel/core","version":"7.26.0","description":"Babel compiler core.","main":"./lib/index.js","author":"The Babel Team (https://babel.dev/team)","license":"MIT","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/babel/babel.git","directory":"packages/babel-core"},"homepage":"https://babel.dev/docs/en/next/babel-core","bugs":"https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20core%22+is%3Aopen","keywords":["6to5","babel","classes","const","es6","harmony","let","modules","transpile","transpiler","var","babel-core","compiler"],"engines":{"node":">=6.9.0"},"funding":{"type":"opencollective","url":"https://opencollective.com/babel"},"browser":{"./lib/config/files/index.js":"./lib/config/files/index-browser.js","./lib/config/resolve-targets.js":"./lib/config/resolve-targets-browser.js","./lib/transform-file.js":"./lib/transform-file-browser.js","./src/config/files/index.ts":"./src/config/files/index-browser.ts","./src/config/resolve-targets.ts":"./src/config/resolve-targets-browser.ts","./src/transform-file.ts":"./src/transform-file-browser.ts"},"dependencies":{"@ampproject/remapping":"^2.2.0","@babel/code-frame":"^7.26.0","@babel/generator":"^7.26.0","@babel/helper-compilation-targets":"^7.25.9","@babel/helper-module-transforms":"^7.26.0","@babel/helpers":"^7.26.0","@babel/parser":"^7.26.0","@babel/template":"^7.25.9","@babel/traverse":"^7.25.9","@babel/types":"^7.26.0","convert-source-map":"^2.0.0","debug":"^4.1.0","gensync":"^1.0.0-beta.2","json5":"^2.2.3","semver":"^6.3.1"},"devDependencies":{"@babel/helper-transform-fixture-test-runner":"^7.26.0","@babel/plugin-syntax-flow":"^7.26.0","@babel/plugin-transform-flow-strip-types":"^7.25.9","@babel/plugin-transform-modules-commonjs":"^7.25.9","@babel/preset-env":"^7.26.0","@babel/preset-typescript":"^7.26.0","@jridgewell/trace-mapping":"^0.3.25","@types/convert-source-map":"^2.0.0","@types/debug":"^4.1.0","@types/gensync":"^1.0.0","@types/resolve":"^1.3.2","@types/semver":"^5.4.0","rimraf":"^3.0.0","ts-node":"^11.0.0-beta.1"},"type":"commonjs","_lastModified":"2025-02-08T06:56:48.998Z"}
@@ -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-01-16T06:27:57.502Z"}
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-02-08T06:56:49.236Z"}
@@ -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.1","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","restore-readme":"mv README.md.bak README.md","prepublish":"in-publish && npm run update-readme || not-in-publish","postpublish":"npm run restore-readme"},"pre-commit":["lint","ci-test","check"],"engines":{"node":">= 6"},"dependencies":{"asynckit":"^0.4.0","combined-stream":"^1.0.8","mime-types":"^2.1.12"},"devDependencies":{"@types/node":"^12.0.10","browserify":"^13.1.1","browserify-istanbul":"^2.0.0","coveralls":"^3.0.4","cross-spawn":"^6.0.5","eslint":"^6.0.1","fake":"^0.2.2","far":"^0.0.7","formidable":"^1.0.17","in-publish":"^2.0.0","is-node-modern":"^1.0.0","istanbul":"^0.4.5","obake":"^0.1.2","puppeteer":"^1.19.0","pkgfiles":"^2.3.0","pre-commit":"^1.1.3","request":"^2.88.0","rimraf":"^2.7.1","tape":"^4.6.2","typescript":"^3.5.2"},"license":"MIT","_lastModified":"2025-01-16T06:27:52.815Z"}
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.1","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","restore-readme":"mv README.md.bak README.md","prepublish":"in-publish && npm run update-readme || not-in-publish","postpublish":"npm run restore-readme"},"pre-commit":["lint","ci-test","check"],"engines":{"node":">= 6"},"dependencies":{"asynckit":"^0.4.0","combined-stream":"^1.0.8","mime-types":"^2.1.12"},"devDependencies":{"@types/node":"^12.0.10","browserify":"^13.1.1","browserify-istanbul":"^2.0.0","coveralls":"^3.0.4","cross-spawn":"^6.0.5","eslint":"^6.0.1","fake":"^0.2.2","far":"^0.0.7","formidable":"^1.0.17","in-publish":"^2.0.0","is-node-modern":"^1.0.0","istanbul":"^0.4.5","obake":"^0.1.2","puppeteer":"^1.19.0","pkgfiles":"^2.3.0","pre-commit":"^1.1.3","request":"^2.88.0","rimraf":"^2.7.1","tape":"^4.6.2","typescript":"^3.5.2"},"license":"MIT","_lastModified":"2025-02-08T06:56:44.407Z"}
@@ -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-01-16T06:27:53.825Z"}
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-02-08T06:56:45.448Z"}
@@ -1 +1 @@
1
- {"type":"commonjs","_lastModified":"2025-01-16T06:27:52.553Z"}
1
+ {"type":"commonjs","_lastModified":"2025-02-08T06:56:44.146Z"}
@@ -1 +1 @@
1
- {"name":"mime-types","description":"The ultimate javascript content-type utility.","version":"2.1.35","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.52.0"},"devDependencies":{"eslint":"7.32.0","eslint-config-standard":"14.1.1","eslint-plugin-import":"2.25.4","eslint-plugin-markdown":"2.2.1","eslint-plugin-node":"11.1.0","eslint-plugin-promise":"5.2.0","eslint-plugin-standard":"4.1.0","mocha":"9.2.2","nyc":"15.1.0"},"files":["HISTORY.md","LICENSE","index.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-01-16T06:27:52.972Z"}
1
+ {"name":"mime-types","description":"The ultimate javascript content-type utility.","version":"2.1.35","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.52.0"},"devDependencies":{"eslint":"7.32.0","eslint-config-standard":"14.1.1","eslint-plugin-import":"2.25.4","eslint-plugin-markdown":"2.2.1","eslint-plugin-node":"11.1.0","eslint-plugin-promise":"5.2.0","eslint-plugin-standard":"4.1.0","mocha":"9.2.2","nyc":"15.1.0"},"files":["HISTORY.md","LICENSE","index.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-02-08T06:56:44.597Z"}
@@ -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-01-16T06:27:53.409Z"}
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-02-08T06:56:45.034Z"}
@@ -177,7 +177,7 @@ class CreateInstruction extends import__.Instruction {
177
177
  targetField[i] = await handleResource(targetField[i]);
178
178
  }
179
179
  } else {
180
- targetField = [await handleResource(targetField)];
180
+ options.values[attachmentField.options.name] = [await handleResource(targetField)];
181
181
  }
182
182
  }
183
183
  }
@@ -175,7 +175,7 @@ class UpdateInstruction extends import__.Instruction {
175
175
  targetField[i] = await handleResource(targetField[i]);
176
176
  }
177
177
  } else {
178
- targetField = [await handleResource(targetField)];
178
+ options.values[attachmentField.options.name] = [await handleResource(targetField)];
179
179
  }
180
180
  }
181
181
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tachybase/module-workflow",
3
3
  "displayName": "Workflow",
4
- "version": "0.23.35",
4
+ "version": "0.23.41",
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"
@@ -35,24 +35,24 @@
35
35
  "react-js-cron": "^3.2.0",
36
36
  "react-router-dom": "6.28.1",
37
37
  "sequelize": "^6.37.5",
38
- "@tachybase/components": "0.23.35",
39
- "@tachybase/plugin-workflow-test": "0.23.35"
38
+ "@tachybase/components": "0.23.41",
39
+ "@tachybase/plugin-workflow-test": "0.23.41"
40
40
  },
41
41
  "peerDependencies": {
42
- "@tachybase/actions": "0.23.35",
43
- "@tachybase/client": "0.23.35",
44
- "@tachybase/evaluators": "0.23.35",
45
- "@tachybase/logger": "0.23.35",
46
- "@tachybase/data-source": "0.23.35",
47
- "@tachybase/database": "0.23.35",
48
- "@tachybase/module-collection": "0.23.35",
49
- "@tachybase/module-error-handler": "0.23.35",
50
- "@tachybase/module-user": "0.23.35",
51
- "@tachybase/resourcer": "0.23.35",
52
- "@tachybase/schema": "0.23.35",
53
- "@tachybase/server": "0.23.35",
54
- "@tachybase/test": "0.23.35",
55
- "@tachybase/utils": "0.23.35"
42
+ "@tachybase/client": "0.23.41",
43
+ "@tachybase/data-source": "0.23.41",
44
+ "@tachybase/database": "0.23.41",
45
+ "@tachybase/evaluators": "0.23.41",
46
+ "@tachybase/actions": "0.23.41",
47
+ "@tachybase/logger": "0.23.41",
48
+ "@tachybase/module-error-handler": "0.23.41",
49
+ "@tachybase/module-user": "0.23.41",
50
+ "@tachybase/module-collection": "0.23.41",
51
+ "@tachybase/schema": "0.23.41",
52
+ "@tachybase/resourcer": "0.23.41",
53
+ "@tachybase/test": "0.23.41",
54
+ "@tachybase/server": "0.23.41",
55
+ "@tachybase/utils": "0.23.41"
56
56
  },
57
57
  "description.zh-CN": "一个强大的 BPM 工具,为业务自动化提供基础支持,并且可任意扩展更多的触发器和节点。",
58
58
  "displayName.zh-CN": "工作流",