bpmn-elements 14.0.0 → 14.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -120,7 +120,8 @@ SignalEventDefinition.prototype.executeThrow = function executeThrow(executeMess
120
120
  throwContent.parent = (0, _messageHelper.shiftParent)(parent);
121
121
  const broker = this.broker;
122
122
  broker.publish('event', 'activity.signal', throwContent, {
123
- type: 'signal'
123
+ type: 'signal',
124
+ delegate: true
124
125
  });
125
126
  return broker.publish('execution', 'execute.completed', (0, _messageHelper.cloneContent)(executeContent));
126
127
  };
@@ -4,8 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = TimerEventDefinition;
7
- var _messageHelper = require("../messageHelper.js");
8
7
  var _piso = require("@0dep/piso");
8
+ var _messageHelper = require("../messageHelper.js");
9
+ var _Errors = require("../error/Errors.js");
9
10
  const kStopped = Symbol.for('stopped');
10
11
  const kTimerContent = Symbol.for('timerContent');
11
12
  const kTimer = Symbol.for('timer');
@@ -60,7 +61,13 @@ TimerEventDefinition.prototype.execute = function execute(executeMessage) {
60
61
  const content = executeMessage.content;
61
62
  const executionId = content.executionId;
62
63
  const startedAt = this.startedAt = 'startedAt' in content ? new Date(content.startedAt) : new Date();
63
- const resolvedTimer = this._getTimers(executeMessage);
64
+ try {
65
+ // eslint-disable-next-line no-var
66
+ var resolvedTimer = this._getTimers(executeMessage);
67
+ } catch (err) {
68
+ this.logger.error(`<${executionId} (${this.activity.id})> failed to get timeout delay: ${err}`);
69
+ throw new _Errors.RunError(err.message, executeMessage, err);
70
+ }
64
71
  const timerContent = this[kTimerContent] = (0, _messageHelper.cloneContent)(content, {
65
72
  ...resolvedTimer,
66
73
  ...(isResumed && {
@@ -222,6 +229,7 @@ TimerEventDefinition.prototype._getTimers = function getTimers(executeMessage) {
222
229
  expireAt: new Date(content.expireAt)
223
230
  })
224
231
  };
232
+ const now = new Date();
225
233
  for (const timerType of timerTypes) {
226
234
  if (timerType in content) result[timerType] = content[timerType];else if (timerType in this) result[timerType] = this.environment.resolveExpression(this[timerType], executeMessage);else continue;
227
235
  let expireAtDate, repeat;
@@ -232,9 +240,12 @@ TimerEventDefinition.prototype._getTimers = function getTimers(executeMessage) {
232
240
  expireAt: parsedExpireAt
233
241
  } = this.parse(timerType, timerStr);
234
242
  repeat = parsedRepeat;
243
+ if (!parsedExpireAt || !parsedExpireAt.getTime) {
244
+ throw new TypeError(`Parsed ${timerType} "${timerStr}" expireAt failed to resolve to a date`);
245
+ }
235
246
  expireAtDate = parsedExpireAt;
236
247
  } else {
237
- expireAtDate = new Date();
248
+ expireAtDate = now;
238
249
  }
239
250
  if (!('expireAt' in result) || result.expireAt > expireAtDate) {
240
251
  result.timerType = timerType;
@@ -243,7 +254,7 @@ TimerEventDefinition.prototype._getTimers = function getTimers(executeMessage) {
243
254
  }
244
255
  }
245
256
  if ('expireAt' in result) {
246
- result.timeout = result.expireAt - Date.now();
257
+ result.timeout = result.expireAt - now.getTime();
247
258
  } else if ('timeout' in content) {
248
259
  result.timeout = content.timeout;
249
260
  } else if (!Object.keys(result).length) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bpmn-elements",
3
- "version": "14.0.0",
3
+ "version": "14.1.0",
4
4
  "description": "Executable workflow elements based on BPMN 2.0",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -35,13 +35,14 @@
35
35
  "posttest": "npm run lint && npm run dist",
36
36
  "lint": "eslint . --cache && prettier . --check --cache",
37
37
  "prepack": "npm run dist",
38
+ "test:md": "texample ./docs/Examples.md,./docs/StartEvent.md,./docs/Extension.md",
38
39
  "cov:html": "c8 -r html -r text mocha -R @bonniernews/hot-bev -p -t 3000",
39
40
  "test:lcov": "c8 -r lcov mocha && npm run lint",
40
41
  "dist": "babel src -d dist/"
41
42
  },
42
43
  "repository": {
43
44
  "type": "git",
44
- "url": "git://github.com/paed01/bpmn-elements"
45
+ "url": "git://github.com/paed01/bpmn-elements.git"
45
46
  },
46
47
  "author": {
47
48
  "name": "Pål Edman",
@@ -83,7 +84,8 @@
83
84
  "mocha-cakes-2": "^3.3.0",
84
85
  "moddle-context-serializer": "^4.1.2",
85
86
  "nock": "^13.5.3",
86
- "prettier": "^3.2.5"
87
+ "prettier": "^3.2.5",
88
+ "texample": "^0.0.2"
87
89
  },
88
90
  "dependencies": {
89
91
  "@0dep/piso": "^0.1.3",
@@ -108,7 +108,7 @@ SignalEventDefinition.prototype.executeThrow = function executeThrow(executeMess
108
108
  throwContent.parent = shiftParent(parent);
109
109
 
110
110
  const broker = this.broker;
111
- broker.publish('event', 'activity.signal', throwContent, { type: 'signal' });
111
+ broker.publish('event', 'activity.signal', throwContent, { type: 'signal', delegate: true });
112
112
 
113
113
  return broker.publish('execution', 'execute.completed', cloneContent(executeContent));
114
114
  };
@@ -1,5 +1,6 @@
1
- import { cloneContent } from '../messageHelper.js';
2
1
  import { ISOInterval, getDate } from '@0dep/piso';
2
+ import { cloneContent } from '../messageHelper.js';
3
+ import { RunError } from '../error/Errors.js';
3
4
 
4
5
  const kStopped = Symbol.for('stopped');
5
6
  const kTimerContent = Symbol.for('timerContent');
@@ -58,7 +59,14 @@ TimerEventDefinition.prototype.execute = function execute(executeMessage) {
58
59
  const executionId = content.executionId;
59
60
  const startedAt = (this.startedAt = 'startedAt' in content ? new Date(content.startedAt) : new Date());
60
61
 
61
- const resolvedTimer = this._getTimers(executeMessage);
62
+ try {
63
+ // eslint-disable-next-line no-var
64
+ var resolvedTimer = this._getTimers(executeMessage);
65
+ } catch (err) {
66
+ this.logger.error(`<${executionId} (${this.activity.id})> failed to get timeout delay: ${err}`);
67
+ throw new RunError(err.message, executeMessage, err);
68
+ }
69
+
62
70
  const timerContent = (this[kTimerContent] = cloneContent(content, {
63
71
  ...resolvedTimer,
64
72
  ...(isResumed && { isResumed }),
@@ -220,6 +228,8 @@ TimerEventDefinition.prototype._getTimers = function getTimers(executeMessage) {
220
228
  ...('expireAt' in content && { expireAt: new Date(content.expireAt) }),
221
229
  };
222
230
 
231
+ const now = new Date();
232
+
223
233
  for (const timerType of timerTypes) {
224
234
  if (timerType in content) result[timerType] = content[timerType];
225
235
  else if (timerType in this) result[timerType] = this.environment.resolveExpression(this[timerType], executeMessage);
@@ -230,9 +240,12 @@ TimerEventDefinition.prototype._getTimers = function getTimers(executeMessage) {
230
240
  if (timerStr) {
231
241
  const { repeat: parsedRepeat, expireAt: parsedExpireAt } = this.parse(timerType, timerStr);
232
242
  repeat = parsedRepeat;
243
+ if (!parsedExpireAt || !parsedExpireAt.getTime) {
244
+ throw new TypeError(`Parsed ${timerType} "${timerStr}" expireAt failed to resolve to a date`);
245
+ }
233
246
  expireAtDate = parsedExpireAt;
234
247
  } else {
235
- expireAtDate = new Date();
248
+ expireAtDate = now;
236
249
  }
237
250
 
238
251
  if (!('expireAt' in result) || result.expireAt > expireAtDate) {
@@ -243,7 +256,7 @@ TimerEventDefinition.prototype._getTimers = function getTimers(executeMessage) {
243
256
  }
244
257
 
245
258
  if ('expireAt' in result) {
246
- result.timeout = result.expireAt - Date.now();
259
+ result.timeout = result.expireAt - now.getTime();
247
260
  } else if ('timeout' in content) {
248
261
  result.timeout = content.timeout;
249
262
  } else if (!Object.keys(result).length) {
package/types/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export * from './types.js';
2
- import { IActivityBehaviour, ActivityBehaviour, EventDefinition, MessageElement, ISODurationApi } from './types.js';
2
+ import { IActivityBehaviour, ActivityBehaviour, EventDefinition, MessageElement } from './types.js';
3
3
 
4
4
  declare module 'bpmn-elements' {
5
5
  export var BoundaryEvent: typeof ActivityBehaviour;
@@ -65,8 +65,6 @@ declare module 'bpmn-elements' {
65
65
  export class Message extends MessageElement {}
66
66
  export class Signal extends MessageElement {}
67
67
  export class Escalation extends MessageElement {}
68
-
69
- export var ISODuration: ISODurationApi;
70
68
  }
71
69
 
72
70
  declare module 'bpmn-elements/events' {
package/types/types.d.ts CHANGED
@@ -697,26 +697,6 @@ declare class ActivityError extends Error {
697
697
  constructor(description: string, sourceMessage: MessageMessage, inner?: Error);
698
698
  }
699
699
 
700
- declare interface Duration {
701
- years?: number;
702
- months?: number;
703
- weeks?: number;
704
- days?: number;
705
- hours?: number;
706
- minutes?: number;
707
- seconds?: number;
708
- repeat?: number;
709
- }
710
-
711
- declare type ISODurationApi = {
712
- /** Parse PnYnMnDTnHnMnS format to object */
713
- parse: (durationString: string) => Duration;
714
- /** Convert ISO8601 duration object to an end Date. */
715
- end: (durationInput: Duration, startDate?: Date) => Date;
716
- /** Convert ISO8601 duration object to seconds */
717
- toSeconds: (durationInput: Duration, startDate?: Date) => number;
718
- };
719
-
720
700
  /**
721
701
  * Evaluate flow callback
722
702
  * @callback evaluateCallback