@wooksjs/event-wf 0.4.37 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -5,7 +5,7 @@ var wf = require('@prostojs/wf');
5
5
  var wooks = require('wooks');
6
6
 
7
7
  function createWfContext(data, options) {
8
- return eventCore.createEventContext({
8
+ return eventCore.createAsyncEventContext({
9
9
  event: {
10
10
  ...data,
11
11
  type: 'WF',
@@ -15,7 +15,7 @@ function createWfContext(data, options) {
15
15
  });
16
16
  }
17
17
  function resumeWfContext(data, options) {
18
- return eventCore.createEventContext({
18
+ return eventCore.createAsyncEventContext({
19
19
  event: {
20
20
  ...data,
21
21
  type: 'WF',
@@ -25,7 +25,7 @@ function resumeWfContext(data, options) {
25
25
  });
26
26
  }
27
27
  function useWFContext() {
28
- return eventCore.useEventContext('WF');
28
+ return eventCore.useAsyncEventContext('WF');
29
29
  }
30
30
 
31
31
  function useWfState() {
@@ -103,65 +103,60 @@ class WooksWf extends wooks.WooksAdapterBase {
103
103
  }
104
104
  async _start(schemaId, inputContext, indexes, input, spy, cleanup) {
105
105
  const resume = !!indexes?.length;
106
- const { restoreCtx, endEvent } = (resume ? resumeWfContext : createWfContext)({
106
+ const runInContext = (resume ? resumeWfContext : createWfContext)({
107
107
  inputContext,
108
108
  schemaId,
109
109
  stepId: null,
110
110
  indexes,
111
111
  input,
112
112
  }, this.mergeEventOptions(this.opts?.eventOptions));
113
- const { handlers: foundHandlers } = this.wooks.lookup('WF_FLOW', `/${schemaId}`);
114
- const handlers = foundHandlers || (this.opts?.onNotFound && [this.opts.onNotFound]) || null;
115
- if (handlers && handlers.length > 0) {
116
- let result = {};
117
- let firstStep = true;
118
- const _spy = (...args) => {
119
- if (spy) {
120
- spy(...args);
121
- }
122
- if (firstStep && args[0] === 'step') {
123
- firstStep = false;
124
- restoreCtx();
125
- const { store } = useWFContext();
126
- store('event').set('input', undefined);
127
- }
128
- };
129
- try {
130
- for (const handler of handlers) {
131
- restoreCtx();
132
- const { id, init } = (await handler());
133
- if (init) {
134
- restoreCtx();
135
- await init();
113
+ return runInContext(async () => {
114
+ const { handlers: foundHandlers } = this.wooks.lookup('WF_FLOW', `/${schemaId}`);
115
+ const handlers = foundHandlers || (this.opts?.onNotFound && [this.opts.onNotFound]) || null;
116
+ if (handlers && handlers.length > 0) {
117
+ let result = {};
118
+ let firstStep = true;
119
+ const _spy = (...args) => {
120
+ if (spy) {
121
+ spy(...args);
136
122
  }
137
- restoreCtx();
138
- if (resume) {
139
- result = await this.wf.resume({ schemaId: id, context: inputContext, indexes }, input, _spy);
140
- break;
123
+ if (firstStep && args[0] === 'step') {
124
+ firstStep = false;
125
+ const { store } = useWFContext();
126
+ store('event').set('input', undefined);
141
127
  }
142
- else {
143
- result = await this.wf.start(id, inputContext, input, _spy);
144
- break;
128
+ };
129
+ try {
130
+ for (const handler of handlers) {
131
+ const { id, init } = (await handler());
132
+ if (init) {
133
+ await init();
134
+ }
135
+ if (resume) {
136
+ result = await this.wf.resume({ schemaId: id, context: inputContext, indexes }, input, _spy);
137
+ break;
138
+ }
139
+ else {
140
+ result = await this.wf.start(id, inputContext, input, _spy);
141
+ break;
142
+ }
145
143
  }
146
144
  }
147
- }
148
- catch (error) {
145
+ catch (error) {
146
+ clean();
147
+ throw error;
148
+ }
149
149
  clean();
150
- throw error;
150
+ return result;
151
151
  }
152
152
  clean();
153
- endEvent();
154
- return result;
155
- }
156
- clean();
157
- endEvent(`Unknown schemaId: ${schemaId}`);
158
- throw new Error(`Unknown schemaId: ${schemaId}`);
159
- function clean() {
160
- if (cleanup) {
161
- restoreCtx();
162
- cleanup();
153
+ throw new Error(`Unknown schemaId: ${schemaId}`);
154
+ function clean() {
155
+ if (cleanup) {
156
+ cleanup();
157
+ }
163
158
  }
164
- }
159
+ });
165
160
  }
166
161
  onError(e) {
167
162
  if (this.opts?.onError) {
package/dist/index.d.ts CHANGED
@@ -27,54 +27,8 @@ interface TWFContextStore {
27
27
  resume: boolean;
28
28
  }
29
29
 
30
- declare function createWfContext(data: Omit<TWFEventData, 'type'>, options: TEventOptions): {
31
- getCtx: () => TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>;
32
- restoreCtx: () => _wooksjs_event_core.TGenericContextStore<TEmpty>;
33
- clearCtx: () => null;
34
- endEvent: (abortReason?: string | undefined) => void;
35
- store: <K extends "resume" | keyof _wooksjs_event_core.TGenericContextStore<TWFEventData>>(key: K) => {
36
- value: (TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>)[K];
37
- hook: <K2 extends keyof Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K]>(key2: K2) => {
38
- value: Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K][K2];
39
- isDefined: boolean;
40
- };
41
- init: <K2_1 extends keyof Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K]>(key2: K2_1, getter: () => Required<Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K]>[K2_1]) => Required<Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K]>[K2_1];
42
- set: <K2_2 extends keyof Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K]>(key2: K2_2, v: Required<(TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>)[K]>[K2_2]) => Required<(TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>)[K]>[K2_2];
43
- get: <K2_3 extends keyof Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K]>(key2: K2_3) => Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K][K2_3] | undefined;
44
- has: <K2_4 extends keyof Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K]>(key2: K2_4) => boolean;
45
- del: <K2_5 extends keyof Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K]>(key2: K2_5) => void;
46
- entries: () => [string, unknown][];
47
- clear: () => void;
48
- };
49
- getStore: <K_1 extends "resume" | keyof _wooksjs_event_core.TGenericContextStore<TWFEventData>>(key: K_1) => (TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>)[K_1];
50
- setStore: <K_2 extends "resume" | keyof _wooksjs_event_core.TGenericContextStore<TWFEventData>>(key: K_2, v: (TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>)[K_2]) => void;
51
- setParentCtx: (parentCtx: unknown) => void;
52
- restoreParentCtx: () => _wooksjs_event_core.TGenericContextStore<TEmpty> | null;
53
- };
54
- declare function resumeWfContext(data: Omit<TWFEventData, 'type'>, options: TEventOptions): {
55
- getCtx: () => TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>;
56
- restoreCtx: () => _wooksjs_event_core.TGenericContextStore<TEmpty>;
57
- clearCtx: () => null;
58
- endEvent: (abortReason?: string | undefined) => void;
59
- store: <K extends "resume" | keyof _wooksjs_event_core.TGenericContextStore<TWFEventData>>(key: K) => {
60
- value: (TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>)[K];
61
- hook: <K2 extends keyof Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K]>(key2: K2) => {
62
- value: Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K][K2];
63
- isDefined: boolean;
64
- };
65
- init: <K2_1 extends keyof Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K]>(key2: K2_1, getter: () => Required<Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K]>[K2_1]) => Required<Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K]>[K2_1];
66
- set: <K2_2 extends keyof Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K]>(key2: K2_2, v: Required<(TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>)[K]>[K2_2]) => Required<(TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>)[K]>[K2_2];
67
- get: <K2_3 extends keyof Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K]>(key2: K2_3) => Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K][K2_3] | undefined;
68
- has: <K2_4 extends keyof Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K]>(key2: K2_4) => boolean;
69
- del: <K2_5 extends keyof Required<TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>>[K]>(key2: K2_5) => void;
70
- entries: () => [string, unknown][];
71
- clear: () => void;
72
- };
73
- getStore: <K_1 extends "resume" | keyof _wooksjs_event_core.TGenericContextStore<TWFEventData>>(key: K_1) => (TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>)[K_1];
74
- setStore: <K_2 extends "resume" | keyof _wooksjs_event_core.TGenericContextStore<TWFEventData>>(key: K_2, v: (TWFContextStore & _wooksjs_event_core.TGenericContextStore<TWFEventData>)[K_2]) => void;
75
- setParentCtx: (parentCtx: unknown) => void;
76
- restoreParentCtx: () => _wooksjs_event_core.TGenericContextStore<TEmpty> | null;
77
- };
30
+ declare function createWfContext(data: Omit<TWFEventData, 'type'>, options: TEventOptions): <T>(cb: (...a: any[]) => T) => T;
31
+ declare function resumeWfContext(data: Omit<TWFEventData, 'type'>, options: TEventOptions): <T>(cb: (...a: any[]) => T) => T;
78
32
  /**
79
33
  * Wrapper on top of useEventContext that provides
80
34
  * proper context types for WF event
@@ -82,8 +36,6 @@ declare function resumeWfContext(data: Omit<TWFEventData, 'type'>, options: TEve
82
36
  */
83
37
  declare function useWFContext<T extends TEmpty>(): {
84
38
  getCtx: () => TWFContextStore & T & _wooksjs_event_core.TGenericContextStore<TWFEventData>;
85
- restoreCtx: () => _wooksjs_event_core.TGenericContextStore<TEmpty>;
86
- clearCtx: () => null;
87
39
  endEvent: (abortReason?: string | undefined) => void;
88
40
  store: <K extends "resume" | keyof _wooksjs_event_core.TGenericContextStore<TWFEventData> | keyof T>(key: K) => {
89
41
  value: (TWFContextStore & T & _wooksjs_event_core.TGenericContextStore<TWFEventData>)[K];
@@ -102,7 +54,228 @@ declare function useWFContext<T extends TEmpty>(): {
102
54
  getStore: <K_1 extends "resume" | keyof _wooksjs_event_core.TGenericContextStore<TWFEventData> | keyof T>(key: K_1) => (TWFContextStore & T & _wooksjs_event_core.TGenericContextStore<TWFEventData>)[K_1];
103
55
  setStore: <K_2 extends "resume" | keyof _wooksjs_event_core.TGenericContextStore<TWFEventData> | keyof T>(key: K_2, v: (TWFContextStore & T & _wooksjs_event_core.TGenericContextStore<TWFEventData>)[K_2]) => void;
104
56
  setParentCtx: (parentCtx: unknown) => void;
105
- restoreParentCtx: () => _wooksjs_event_core.TGenericContextStore<TEmpty> | null;
57
+ hasParentCtx: () => boolean;
58
+ getParentCtx: <T2 = TWFContextStore & T & _wooksjs_event_core.TGenericContextStore<TWFEventData>>() => {
59
+ getCtx: () => T2;
60
+ endEvent: (abortReason?: string | undefined) => void;
61
+ store: <K_3 extends keyof T2>(key: K_3) => {
62
+ value: T2[K_3];
63
+ hook: <K2_6 extends keyof Required<T2>[K_3]>(key2: K2_6) => {
64
+ value: Required<T2>[K_3][K2_6];
65
+ isDefined: boolean;
66
+ };
67
+ init: <K2_7 extends keyof Required<T2>[K_3]>(key2: K2_7, getter: () => Required<Required<T2>[K_3]>[K2_7]) => Required<Required<T2>[K_3]>[K2_7];
68
+ set: <K2_8 extends keyof Required<T2>[K_3]>(key2: K2_8, v: Required<T2[K_3]>[K2_8]) => Required<T2[K_3]>[K2_8];
69
+ get: <K2_9 extends keyof Required<T2>[K_3]>(key2: K2_9) => Required<T2>[K_3][K2_9] | undefined;
70
+ has: <K2_10 extends keyof Required<T2>[K_3]>(key2: K2_10) => boolean;
71
+ del: <K2_11 extends keyof Required<T2>[K_3]>(key2: K2_11) => void;
72
+ entries: () => [string, unknown][];
73
+ clear: () => void;
74
+ };
75
+ getStore: <K_4 extends keyof T2>(key: K_4) => T2[K_4];
76
+ setStore: <K_5 extends keyof T2>(key: K_5, v: T2[K_5]) => void;
77
+ setParentCtx: (parentCtx: unknown) => void;
78
+ hasParentCtx: () => boolean;
79
+ getParentCtx: <T2_1 = T2>() => {
80
+ getCtx: () => T2_1;
81
+ endEvent: (abortReason?: string | undefined) => void;
82
+ store: <K_6 extends keyof T2_1>(key: K_6) => {
83
+ value: T2_1[K_6];
84
+ hook: <K2_12 extends keyof Required<T2_1>[K_6]>(key2: K2_12) => {
85
+ value: Required<T2_1>[K_6][K2_12];
86
+ isDefined: boolean;
87
+ };
88
+ init: <K2_13 extends keyof Required<T2_1>[K_6]>(key2: K2_13, getter: () => Required<Required<T2_1>[K_6]>[K2_13]) => Required<Required<T2_1>[K_6]>[K2_13];
89
+ set: <K2_14 extends keyof Required<T2_1>[K_6]>(key2: K2_14, v: Required<T2_1[K_6]>[K2_14]) => Required<T2_1[K_6]>[K2_14];
90
+ get: <K2_15 extends keyof Required<T2_1>[K_6]>(key2: K2_15) => Required<T2_1>[K_6][K2_15] | undefined;
91
+ has: <K2_16 extends keyof Required<T2_1>[K_6]>(key2: K2_16) => boolean;
92
+ del: <K2_17 extends keyof Required<T2_1>[K_6]>(key2: K2_17) => void;
93
+ entries: () => [string, unknown][];
94
+ clear: () => void;
95
+ };
96
+ getStore: <K_7 extends keyof T2_1>(key: K_7) => T2_1[K_7];
97
+ setStore: <K_8 extends keyof T2_1>(key: K_8, v: T2_1[K_8]) => void;
98
+ setParentCtx: (parentCtx: unknown) => void;
99
+ hasParentCtx: () => boolean;
100
+ getParentCtx: <T2_2 = T2_1>() => {
101
+ getCtx: () => T2_2;
102
+ endEvent: (abortReason?: string | undefined) => void;
103
+ store: <K_9 extends keyof T2_2>(key: K_9) => {
104
+ value: T2_2[K_9];
105
+ hook: <K2_18 extends keyof Required<T2_2>[K_9]>(key2: K2_18) => {
106
+ value: Required<T2_2>[K_9][K2_18];
107
+ isDefined: boolean;
108
+ };
109
+ init: <K2_19 extends keyof Required<T2_2>[K_9]>(key2: K2_19, getter: () => Required<Required<T2_2>[K_9]>[K2_19]) => Required<Required<T2_2>[K_9]>[K2_19];
110
+ set: <K2_20 extends keyof Required<T2_2>[K_9]>(key2: K2_20, v: Required<T2_2[K_9]>[K2_20]) => Required<T2_2[K_9]>[K2_20];
111
+ get: <K2_21 extends keyof Required<T2_2>[K_9]>(key2: K2_21) => Required<T2_2>[K_9][K2_21] | undefined;
112
+ has: <K2_22 extends keyof Required<T2_2>[K_9]>(key2: K2_22) => boolean;
113
+ del: <K2_23 extends keyof Required<T2_2>[K_9]>(key2: K2_23) => void;
114
+ entries: () => [string, unknown][];
115
+ clear: () => void;
116
+ };
117
+ getStore: <K_10 extends keyof T2_2>(key: K_10) => T2_2[K_10];
118
+ setStore: <K_11 extends keyof T2_2>(key: K_11, v: T2_2[K_11]) => void;
119
+ setParentCtx: (parentCtx: unknown) => void;
120
+ hasParentCtx: () => boolean;
121
+ getParentCtx: <T2_3 = T2_2>() => {
122
+ getCtx: () => T2_3;
123
+ endEvent: (abortReason?: string | undefined) => void;
124
+ store: <K_12 extends keyof T2_3>(key: K_12) => {
125
+ value: T2_3[K_12];
126
+ hook: <K2_24 extends keyof Required<T2_3>[K_12]>(key2: K2_24) => {
127
+ value: Required<T2_3>[K_12][K2_24];
128
+ isDefined: boolean;
129
+ };
130
+ init: <K2_25 extends keyof Required<T2_3>[K_12]>(key2: K2_25, getter: () => Required<Required<T2_3>[K_12]>[K2_25]) => Required<Required<T2_3>[K_12]>[K2_25];
131
+ set: <K2_26 extends keyof Required<T2_3>[K_12]>(key2: K2_26, v: Required<T2_3[K_12]>[K2_26]) => Required<T2_3[K_12]>[K2_26];
132
+ get: <K2_27 extends keyof Required<T2_3>[K_12]>(key2: K2_27) => Required<T2_3>[K_12][K2_27] | undefined;
133
+ has: <K2_28 extends keyof Required<T2_3>[K_12]>(key2: K2_28) => boolean;
134
+ del: <K2_29 extends keyof Required<T2_3>[K_12]>(key2: K2_29) => void;
135
+ entries: () => [string, unknown][];
136
+ clear: () => void;
137
+ };
138
+ getStore: <K_13 extends keyof T2_3>(key: K_13) => T2_3[K_13];
139
+ setStore: <K_14 extends keyof T2_3>(key: K_14, v: T2_3[K_14]) => void;
140
+ setParentCtx: (parentCtx: unknown) => void;
141
+ hasParentCtx: () => boolean;
142
+ getParentCtx: <T2_4 = T2_3>() => {
143
+ getCtx: () => T2_4;
144
+ endEvent: (abortReason?: string | undefined) => void;
145
+ store: <K_15 extends keyof T2_4>(key: K_15) => {
146
+ value: T2_4[K_15];
147
+ hook: <K2_30 extends keyof Required<T2_4>[K_15]>(key2: K2_30) => {
148
+ value: Required<T2_4>[K_15][K2_30];
149
+ isDefined: boolean;
150
+ };
151
+ init: <K2_31 extends keyof Required<T2_4>[K_15]>(key2: K2_31, getter: () => Required<Required<T2_4>[K_15]>[K2_31]) => Required<Required<T2_4>[K_15]>[K2_31];
152
+ set: <K2_32 extends keyof Required<T2_4>[K_15]>(key2: K2_32, v: Required<T2_4[K_15]>[K2_32]) => Required<T2_4[K_15]>[K2_32];
153
+ get: <K2_33 extends keyof Required<T2_4>[K_15]>(key2: K2_33) => Required<T2_4>[K_15][K2_33] | undefined;
154
+ has: <K2_34 extends keyof Required<T2_4>[K_15]>(key2: K2_34) => boolean;
155
+ del: <K2_35 extends keyof Required<T2_4>[K_15]>(key2: K2_35) => void;
156
+ entries: () => [string, unknown][];
157
+ clear: () => void;
158
+ };
159
+ getStore: <K_16 extends keyof T2_4>(key: K_16) => T2_4[K_16];
160
+ setStore: <K_17 extends keyof T2_4>(key: K_17, v: T2_4[K_17]) => void;
161
+ setParentCtx: (parentCtx: unknown) => void;
162
+ hasParentCtx: () => boolean;
163
+ getParentCtx: <T2_5 = T2_4>() => {
164
+ getCtx: () => T2_5;
165
+ endEvent: (abortReason?: string | undefined) => void;
166
+ store: <K_18 extends keyof T2_5>(key: K_18) => {
167
+ value: T2_5[K_18];
168
+ hook: <K2_36 extends keyof Required<T2_5>[K_18]>(key2: K2_36) => {
169
+ value: Required<T2_5>[K_18][K2_36];
170
+ isDefined: boolean;
171
+ };
172
+ init: <K2_37 extends keyof Required<T2_5>[K_18]>(key2: K2_37, getter: () => Required<Required<T2_5>[K_18]>[K2_37]) => Required<Required<T2_5>[K_18]>[K2_37];
173
+ set: <K2_38 extends keyof Required<T2_5>[K_18]>(key2: K2_38, v: Required<T2_5[K_18]>[K2_38]) => Required<T2_5[K_18]>[K2_38];
174
+ get: <K2_39 extends keyof Required<T2_5>[K_18]>(key2: K2_39) => Required<T2_5>[K_18][K2_39] | undefined;
175
+ has: <K2_40 extends keyof Required<T2_5>[K_18]>(key2: K2_40) => boolean;
176
+ del: <K2_41 extends keyof Required<T2_5>[K_18]>(key2: K2_41) => void;
177
+ entries: () => [string, unknown][];
178
+ clear: () => void;
179
+ };
180
+ getStore: <K_19 extends keyof T2_5>(key: K_19) => T2_5[K_19];
181
+ setStore: <K_20 extends keyof T2_5>(key: K_20, v: T2_5[K_20]) => void;
182
+ setParentCtx: (parentCtx: unknown) => void;
183
+ hasParentCtx: () => boolean;
184
+ getParentCtx: <T2_6 = T2_5>() => {
185
+ getCtx: () => T2_6;
186
+ endEvent: (abortReason?: string | undefined) => void;
187
+ store: <K_21 extends keyof T2_6>(key: K_21) => {
188
+ value: T2_6[K_21];
189
+ hook: <K2_42 extends keyof Required<T2_6>[K_21]>(key2: K2_42) => {
190
+ value: Required<T2_6>[K_21][K2_42];
191
+ isDefined: boolean;
192
+ };
193
+ init: <K2_43 extends keyof Required<T2_6>[K_21]>(key2: K2_43, getter: () => Required<Required<T2_6>[K_21]>[K2_43]) => Required<Required<T2_6>[K_21]>[K2_43];
194
+ set: <K2_44 extends keyof Required<T2_6>[K_21]>(key2: K2_44, v: Required<T2_6[K_21]>[K2_44]) => Required<T2_6[K_21]>[K2_44];
195
+ get: <K2_45 extends keyof Required<T2_6>[K_21]>(key2: K2_45) => Required<T2_6>[K_21][K2_45] | undefined;
196
+ has: <K2_46 extends keyof Required<T2_6>[K_21]>(key2: K2_46) => boolean;
197
+ del: <K2_47 extends keyof Required<T2_6>[K_21]>(key2: K2_47) => void;
198
+ entries: () => [string, unknown][];
199
+ clear: () => void;
200
+ };
201
+ getStore: <K_22 extends keyof T2_6>(key: K_22) => T2_6[K_22];
202
+ setStore: <K_23 extends keyof T2_6>(key: K_23, v: T2_6[K_23]) => void;
203
+ setParentCtx: (parentCtx: unknown) => void;
204
+ hasParentCtx: () => boolean;
205
+ getParentCtx: <T2_7 = T2_6>() => {
206
+ getCtx: () => T2_7;
207
+ endEvent: (abortReason?: string | undefined) => void;
208
+ store: <K_24 extends keyof T2_7>(key: K_24) => {
209
+ value: T2_7[K_24];
210
+ hook: <K2_48 extends keyof Required<T2_7>[K_24]>(key2: K2_48) => {
211
+ value: Required<T2_7>[K_24][K2_48];
212
+ isDefined: boolean;
213
+ };
214
+ init: <K2_49 extends keyof Required<T2_7>[K_24]>(key2: K2_49, getter: () => Required<Required<T2_7>[K_24]>[K2_49]) => Required<Required<T2_7>[K_24]>[K2_49];
215
+ set: <K2_50 extends keyof Required<T2_7>[K_24]>(key2: K2_50, v: Required<T2_7[K_24]>[K2_50]) => Required<T2_7[K_24]>[K2_50];
216
+ get: <K2_51 extends keyof Required<T2_7>[K_24]>(key2: K2_51) => Required<T2_7>[K_24][K2_51] | undefined;
217
+ has: <K2_52 extends keyof Required<T2_7>[K_24]>(key2: K2_52) => boolean;
218
+ del: <K2_53 extends keyof Required<T2_7>[K_24]>(key2: K2_53) => void;
219
+ entries: () => [string, unknown][];
220
+ clear: () => void;
221
+ };
222
+ getStore: <K_25 extends keyof T2_7>(key: K_25) => T2_7[K_25];
223
+ setStore: <K_26 extends keyof T2_7>(key: K_26, v: T2_7[K_26]) => void;
224
+ setParentCtx: (parentCtx: unknown) => void;
225
+ hasParentCtx: () => boolean;
226
+ getParentCtx: <T2_8 = T2_7>() => {
227
+ getCtx: () => T2_8;
228
+ endEvent: (abortReason?: string | undefined) => void;
229
+ store: <K_27 extends keyof T2_8>(key: K_27) => {
230
+ value: T2_8[K_27];
231
+ hook: <K2_54 extends keyof Required<T2_8>[K_27]>(key2: K2_54) => {
232
+ value: Required<T2_8>[K_27][K2_54];
233
+ isDefined: boolean;
234
+ };
235
+ init: <K2_55 extends keyof Required<T2_8>[K_27]>(key2: K2_55, getter: () => Required<Required<T2_8>[K_27]>[K2_55]) => Required<Required<T2_8>[K_27]>[K2_55];
236
+ set: <K2_56 extends keyof Required<T2_8>[K_27]>(key2: K2_56, v: Required<T2_8[K_27]>[K2_56]) => Required<T2_8[K_27]>[K2_56];
237
+ get: <K2_57 extends keyof Required<T2_8>[K_27]>(key2: K2_57) => Required<T2_8>[K_27][K2_57] | undefined;
238
+ has: <K2_58 extends keyof Required<T2_8>[K_27]>(key2: K2_58) => boolean;
239
+ del: <K2_59 extends keyof Required<T2_8>[K_27]>(key2: K2_59) => void;
240
+ entries: () => [string, unknown][];
241
+ clear: () => void;
242
+ };
243
+ getStore: <K_28 extends keyof T2_8>(key: K_28) => T2_8[K_28];
244
+ setStore: <K_29 extends keyof T2_8>(key: K_29, v: T2_8[K_29]) => void;
245
+ setParentCtx: (parentCtx: unknown) => void;
246
+ hasParentCtx: () => boolean;
247
+ getParentCtx: <T2_9 = T2_8>() => {
248
+ getCtx: () => T2_9;
249
+ endEvent: (abortReason?: string | undefined) => void;
250
+ store: <K_30 extends keyof T2_9>(key: K_30) => {
251
+ value: T2_9[K_30];
252
+ hook: <K2_60 extends keyof Required<T2_9>[K_30]>(key2: K2_60) => {
253
+ value: Required<T2_9>[K_30][K2_60];
254
+ isDefined: boolean;
255
+ };
256
+ init: <K2_61 extends keyof Required<T2_9>[K_30]>(key2: K2_61, getter: () => Required<Required<T2_9>[K_30]>[K2_61]) => Required<Required<T2_9>[K_30]>[K2_61];
257
+ set: <K2_62 extends keyof Required<T2_9>[K_30]>(key2: K2_62, v: Required<T2_9[K_30]>[K2_62]) => Required<T2_9[K_30]>[K2_62];
258
+ get: <K2_63 extends keyof Required<T2_9>[K_30]>(key2: K2_63) => Required<T2_9>[K_30][K2_63] | undefined;
259
+ has: <K2_64 extends keyof Required<T2_9>[K_30]>(key2: K2_64) => boolean;
260
+ del: <K2_65 extends keyof Required<T2_9>[K_30]>(key2: K2_65) => void;
261
+ entries: () => [string, unknown][];
262
+ clear: () => void;
263
+ };
264
+ getStore: <K_31 extends keyof T2_9>(key: K_31) => T2_9[K_31];
265
+ setStore: <K_32 extends keyof T2_9>(key: K_32, v: T2_9[K_32]) => void;
266
+ setParentCtx: (parentCtx: unknown) => void;
267
+ hasParentCtx: () => boolean;
268
+ getParentCtx: <T2_10 = T2_9>() => any;
269
+ };
270
+ };
271
+ };
272
+ };
273
+ };
274
+ };
275
+ };
276
+ };
277
+ };
278
+ };
106
279
  };
107
280
 
108
281
  declare class WooksWorkflow<T, IR> extends Workflow<T, IR> {
package/dist/index.mjs CHANGED
@@ -1,9 +1,9 @@
1
- import { createEventContext, useEventContext } from '@wooksjs/event-core';
1
+ import { createAsyncEventContext, useAsyncEventContext } from '@wooksjs/event-core';
2
2
  import { Workflow, createStep } from '@prostojs/wf';
3
3
  import { WooksAdapterBase } from 'wooks';
4
4
 
5
5
  function createWfContext(data, options) {
6
- return createEventContext({
6
+ return createAsyncEventContext({
7
7
  event: {
8
8
  ...data,
9
9
  type: 'WF',
@@ -13,7 +13,7 @@ function createWfContext(data, options) {
13
13
  });
14
14
  }
15
15
  function resumeWfContext(data, options) {
16
- return createEventContext({
16
+ return createAsyncEventContext({
17
17
  event: {
18
18
  ...data,
19
19
  type: 'WF',
@@ -23,7 +23,7 @@ function resumeWfContext(data, options) {
23
23
  });
24
24
  }
25
25
  function useWFContext() {
26
- return useEventContext('WF');
26
+ return useAsyncEventContext('WF');
27
27
  }
28
28
 
29
29
  function useWfState() {
@@ -101,65 +101,60 @@ class WooksWf extends WooksAdapterBase {
101
101
  }
102
102
  async _start(schemaId, inputContext, indexes, input, spy, cleanup) {
103
103
  const resume = !!indexes?.length;
104
- const { restoreCtx, endEvent } = (resume ? resumeWfContext : createWfContext)({
104
+ const runInContext = (resume ? resumeWfContext : createWfContext)({
105
105
  inputContext,
106
106
  schemaId,
107
107
  stepId: null,
108
108
  indexes,
109
109
  input,
110
110
  }, this.mergeEventOptions(this.opts?.eventOptions));
111
- const { handlers: foundHandlers } = this.wooks.lookup('WF_FLOW', `/${schemaId}`);
112
- const handlers = foundHandlers || (this.opts?.onNotFound && [this.opts.onNotFound]) || null;
113
- if (handlers && handlers.length > 0) {
114
- let result = {};
115
- let firstStep = true;
116
- const _spy = (...args) => {
117
- if (spy) {
118
- spy(...args);
119
- }
120
- if (firstStep && args[0] === 'step') {
121
- firstStep = false;
122
- restoreCtx();
123
- const { store } = useWFContext();
124
- store('event').set('input', undefined);
125
- }
126
- };
127
- try {
128
- for (const handler of handlers) {
129
- restoreCtx();
130
- const { id, init } = (await handler());
131
- if (init) {
132
- restoreCtx();
133
- await init();
111
+ return runInContext(async () => {
112
+ const { handlers: foundHandlers } = this.wooks.lookup('WF_FLOW', `/${schemaId}`);
113
+ const handlers = foundHandlers || (this.opts?.onNotFound && [this.opts.onNotFound]) || null;
114
+ if (handlers && handlers.length > 0) {
115
+ let result = {};
116
+ let firstStep = true;
117
+ const _spy = (...args) => {
118
+ if (spy) {
119
+ spy(...args);
134
120
  }
135
- restoreCtx();
136
- if (resume) {
137
- result = await this.wf.resume({ schemaId: id, context: inputContext, indexes }, input, _spy);
138
- break;
121
+ if (firstStep && args[0] === 'step') {
122
+ firstStep = false;
123
+ const { store } = useWFContext();
124
+ store('event').set('input', undefined);
139
125
  }
140
- else {
141
- result = await this.wf.start(id, inputContext, input, _spy);
142
- break;
126
+ };
127
+ try {
128
+ for (const handler of handlers) {
129
+ const { id, init } = (await handler());
130
+ if (init) {
131
+ await init();
132
+ }
133
+ if (resume) {
134
+ result = await this.wf.resume({ schemaId: id, context: inputContext, indexes }, input, _spy);
135
+ break;
136
+ }
137
+ else {
138
+ result = await this.wf.start(id, inputContext, input, _spy);
139
+ break;
140
+ }
143
141
  }
144
142
  }
145
- }
146
- catch (error) {
143
+ catch (error) {
144
+ clean();
145
+ throw error;
146
+ }
147
147
  clean();
148
- throw error;
148
+ return result;
149
149
  }
150
150
  clean();
151
- endEvent();
152
- return result;
153
- }
154
- clean();
155
- endEvent(`Unknown schemaId: ${schemaId}`);
156
- throw new Error(`Unknown schemaId: ${schemaId}`);
157
- function clean() {
158
- if (cleanup) {
159
- restoreCtx();
160
- cleanup();
151
+ throw new Error(`Unknown schemaId: ${schemaId}`);
152
+ function clean() {
153
+ if (cleanup) {
154
+ cleanup();
155
+ }
161
156
  }
162
- }
157
+ });
163
158
  }
164
159
  onError(e) {
165
160
  if (this.opts?.onError) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wooksjs/event-wf",
3
- "version": "0.4.37",
3
+ "version": "0.5.1",
4
4
  "description": "@wooksjs/event-wf",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",
@@ -33,8 +33,8 @@
33
33
  "author": "Artem Maltsev",
34
34
  "license": "MIT",
35
35
  "peerDependencies": {
36
- "wooks": "0.4.37",
37
- "@wooksjs/event-core": "0.4.37"
36
+ "wooks": "0.5.1",
37
+ "@wooksjs/event-core": "0.5.1"
38
38
  },
39
39
  "dependencies": {
40
40
  "@prostojs/logger": "^0.4.0",