@zola_do/workflow-engine 0.3.5 → 0.3.7

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.
@@ -9,6 +9,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.WorkflowEngineService = void 0;
10
10
  const common_1 = require("@nestjs/common");
11
11
  const crypto_1 = require("crypto");
12
+ const UNSAFE_STATE_LABELS = new Set(['__proto__', 'constructor', 'prototype']);
13
+ const assertSafeStateLabel = (label) => {
14
+ if (!label || UNSAFE_STATE_LABELS.has(label)) {
15
+ throw new common_1.BadRequestException('invalid_workflow_state_label');
16
+ }
17
+ return label;
18
+ };
12
19
  let WorkflowEngineService = class WorkflowEngineService {
13
20
  async convertToStateMachine(uiJson) {
14
21
  const nodes = uiJson.nodes;
@@ -16,24 +23,24 @@ let WorkflowEngineService = class WorkflowEngineService {
16
23
  const startNode = nodes.find((node) => node.type === 'start');
17
24
  const machine = {};
18
25
  machine['id'] = (0, crypto_1.randomUUID)();
19
- machine['initial'] = startNode.data.label;
20
- machine['states'] = {};
26
+ machine['initial'] = assertSafeStateLabel(startNode.data.label);
27
+ machine['states'] = Object.create(null);
21
28
  nodes.forEach((element) => {
22
29
  const terminalEdges = edges.filter((e) => element.id === e.source);
23
30
  if (element.type === 'parallel') {
24
31
  console.log(`Terminal ${element.id} edges `, terminalEdges);
25
32
  }
26
- const nodeEvents = {};
33
+ const nodeEvents = Object.create(null);
27
34
  const nodeMetaData = {};
28
35
  for (const edge of terminalEdges) {
29
36
  const label = edge.label && edge.label.length > 0
30
37
  ? edge.label.toUpperCase()
31
38
  : 'SUBMIT';
32
- nodeEvents[`${label}`] = nodes.find((n) => n.id === edge.target).data.label;
39
+ nodeEvents[`${label}`] = assertSafeStateLabel(nodes.find((n) => n.id === edge.target).data.label);
33
40
  }
34
41
  const type = element.type && element.type.length > 0 ? element.type : '';
35
42
  nodeMetaData[`type`] = type;
36
- const stateLabel = element.data.label;
43
+ const stateLabel = assertSafeStateLabel(element.data.label);
37
44
  machine['states'][`${stateLabel}`] = {
38
45
  on: nodeEvents,
39
46
  meta: nodeMetaData,
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-engine.service.js","sourceRoot":"","sources":["../src/workflow-engine.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAC5C,mCAAoC;AAG7B,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAChC,KAAK,CAAC,qBAAqB,CAAC,MAAW;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAwB,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC7B,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1C,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACxB,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;YAInE,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,UAAU,GAAG,EAAE,CAAC;YACtB,MAAM,YAAY,GAAG,EAAE,CAAC;YACxB,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,MAAM,KAAK,GACT,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;oBACjC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;oBAC1B,CAAC,CAAC,QAAQ,CAAC;gBACf,UAAU,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAC5B,CAAC,IAAI,CAAC,KAAK,CAAC;YACf,CAAC;YACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;YAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YACtC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG;gBACnC,EAAE,EAAE,UAAU;gBACd,IAAI,EAAE,YAAY;aACnB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IACnD,CAAC;CACF,CAAA;;gCAvCY,qBAAqB;IADjC,IAAA,mBAAU,GAAE;GACA,qBAAqB,CAuCjC"}
1
+ {"version":3,"file":"workflow-engine.service.js","sourceRoot":"","sources":["../src/workflow-engine.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zola_do/workflow-engine",
3
- "version": "0.3.5",
3
+ "version": "0.3.7",
4
4
  "description": "State machine workflow converter for NestJS",
5
5
  "author": "zolaDO",
6
6
  "license": "ISC",