@cap-js/process 0.0.0 → 0.1.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.
Files changed (76) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +635 -0
  3. package/cds-plugin.js +2 -0
  4. package/dist/cds-plugin.js +4 -0
  5. package/dist/cds-plugin.js.map +1 -0
  6. package/dist/lib/api/index.js +23 -0
  7. package/dist/lib/api/index.js.map +1 -0
  8. package/dist/lib/api/local-workflow-store.js +85 -0
  9. package/dist/lib/api/local-workflow-store.js.map +1 -0
  10. package/dist/lib/api/process-api-client.js +103 -0
  11. package/dist/lib/api/process-api-client.js.map +1 -0
  12. package/dist/lib/api/workflow-client.js +174 -0
  13. package/dist/lib/api/workflow-client.js.map +1 -0
  14. package/dist/lib/auth/credentials.js +17 -0
  15. package/dist/lib/auth/credentials.js.map +1 -0
  16. package/dist/lib/auth/index.js +11 -0
  17. package/dist/lib/auth/index.js.map +1 -0
  18. package/dist/lib/auth/token-cache.js +67 -0
  19. package/dist/lib/auth/token-cache.js.map +1 -0
  20. package/dist/lib/auth/token-provider.js +32 -0
  21. package/dist/lib/auth/token-provider.js.map +1 -0
  22. package/dist/lib/build/constants.js +106 -0
  23. package/dist/lib/build/constants.js.map +1 -0
  24. package/dist/lib/build/index.js +22 -0
  25. package/dist/lib/build/index.js.map +1 -0
  26. package/dist/lib/build/plugin.js +126 -0
  27. package/dist/lib/build/plugin.js.map +1 -0
  28. package/dist/lib/build/validation-utils.js +309 -0
  29. package/dist/lib/build/validation-utils.js.map +1 -0
  30. package/dist/lib/build/validations.js +185 -0
  31. package/dist/lib/build/validations.js.map +1 -0
  32. package/dist/lib/constants.js +78 -0
  33. package/dist/lib/constants.js.map +1 -0
  34. package/dist/lib/handlers/annotationCache.js +47 -0
  35. package/dist/lib/handlers/annotationCache.js.map +1 -0
  36. package/dist/lib/handlers/annotationHandlers.js +57 -0
  37. package/dist/lib/handlers/annotationHandlers.js.map +1 -0
  38. package/dist/lib/handlers/index.js +26 -0
  39. package/dist/lib/handlers/index.js.map +1 -0
  40. package/dist/lib/handlers/onDeleteUtils.js +63 -0
  41. package/dist/lib/handlers/onDeleteUtils.js.map +1 -0
  42. package/dist/lib/handlers/processActionHandler.js +55 -0
  43. package/dist/lib/handlers/processActionHandler.js.map +1 -0
  44. package/dist/lib/handlers/processCancel.js +28 -0
  45. package/dist/lib/handlers/processCancel.js.map +1 -0
  46. package/dist/lib/handlers/processResume.js +28 -0
  47. package/dist/lib/handlers/processResume.js.map +1 -0
  48. package/dist/lib/handlers/processService.js +125 -0
  49. package/dist/lib/handlers/processService.js.map +1 -0
  50. package/dist/lib/handlers/processStart.js +156 -0
  51. package/dist/lib/handlers/processStart.js.map +1 -0
  52. package/dist/lib/handlers/processSuspend.js +28 -0
  53. package/dist/lib/handlers/processSuspend.js.map +1 -0
  54. package/dist/lib/handlers/utils.js +124 -0
  55. package/dist/lib/handlers/utils.js.map +1 -0
  56. package/dist/lib/index.js +43 -0
  57. package/dist/lib/index.js.map +1 -0
  58. package/dist/lib/processImport.js +449 -0
  59. package/dist/lib/processImport.js.map +1 -0
  60. package/dist/lib/processImportRegistration.js +27 -0
  61. package/dist/lib/processImportRegistration.js.map +1 -0
  62. package/dist/lib/shared/businessKey-helper.js +27 -0
  63. package/dist/lib/shared/businessKey-helper.js.map +1 -0
  64. package/dist/lib/shared/input-parser.js +650 -0
  65. package/dist/lib/shared/input-parser.js.map +1 -0
  66. package/dist/lib/types/csn-extensions.js +37 -0
  67. package/dist/lib/types/csn-extensions.js.map +1 -0
  68. package/dist/srv/BTPProcessService.js +117 -0
  69. package/dist/srv/BTPProcessService.js.map +1 -0
  70. package/dist/srv/localProcessService.js +152 -0
  71. package/dist/srv/localProcessService.js.map +1 -0
  72. package/package.json +98 -1
  73. package/srv/BTPProcessService.cds +42 -0
  74. package/srv/BTPProcessService.js +2 -0
  75. package/srv/localProcessService.cds +3 -0
  76. package/srv/localProcessService.js +2 -0
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.validateAllowedAnnotations = validateAllowedAnnotations;
7
+ exports.validateOnAnnotation = validateOnAnnotation;
8
+ exports.validateIfAnnotation = validateIfAnnotation;
9
+ exports.validateBusinessKeyAnnotation = validateBusinessKeyAnnotation;
10
+ exports.validateCascadeAnnotation = validateCascadeAnnotation;
11
+ exports.validateRequiredStartAnnotations = validateRequiredStartAnnotations;
12
+ exports.validateIdAnnotation = validateIdAnnotation;
13
+ exports.validateRequiredGenericAnnotations = validateRequiredGenericAnnotations;
14
+ exports.validateInputTypes = validateInputTypes;
15
+ const cds_1 = __importDefault(require("@sap/cds"));
16
+ const constants_1 = require("../constants");
17
+ const validation_utils_1 = require("./validation-utils");
18
+ const constants_2 = require("./constants");
19
+ const Plugin = cds_1.default.build?.Plugin;
20
+ const ERROR = Plugin?.ERROR;
21
+ const WARNING = Plugin?.WARNING;
22
+ const VALID_EVENTS = ['CREATE', 'READ', 'UPDATE', 'DELETE', '*'];
23
+ function validateAllowedAnnotations(allowedAnnotations, def, entityName, annotationPrefix, buildPlugin) {
24
+ for (const key of Object.keys(def)) {
25
+ if (key.startsWith(annotationPrefix + '.') && !allowedAnnotations.includes(key)) {
26
+ buildPlugin.pushMessage((0, constants_2.WARNING_UNKNOWN_ANNOTATION)(entityName, key, allowedAnnotations), WARNING);
27
+ }
28
+ }
29
+ }
30
+ function validateOnAnnotation(def, entityName, annotationOn, buildPlugin) {
31
+ if (typeof def[annotationOn] !== 'string') {
32
+ buildPlugin.pushMessage((0, constants_2.ERROR_ANNOTATION_MUST_BE_STRING)(entityName, annotationOn), ERROR);
33
+ }
34
+ const actions = def.actions ? Object.keys(def.actions) : [];
35
+ const annotationValue = def[annotationOn];
36
+ if (!VALID_EVENTS.includes(annotationValue) && !actions.includes(annotationValue)) {
37
+ buildPlugin.pushMessage((0, constants_2.ERROR_ANNOTATION_MUST_BE_EVENT_OR_ACTION)(entityName, annotationOn), ERROR);
38
+ }
39
+ }
40
+ function validateIfAnnotation(def, entityName, annotationIf, buildPlugin) {
41
+ const ifExpr = def[annotationIf];
42
+ if (!ifExpr || !ifExpr['='] || !ifExpr['xpr']) {
43
+ buildPlugin.pushMessage((0, constants_2.ERROR_IF_MUST_BE_EXPRESSION)(entityName, annotationIf), ERROR);
44
+ }
45
+ }
46
+ function validateBusinessKeyAnnotation(def, entityName, buildPlugin) {
47
+ const bKeyExpr = def[constants_1.BUSINESS_KEY];
48
+ if (!bKeyExpr || !bKeyExpr['='] || (!bKeyExpr['xpr'] && !bKeyExpr['ref'])) {
49
+ buildPlugin.pushMessage((0, constants_2.ERROR_BUSINESS_KEY_MUST_BE_EXPRESSION)(entityName, constants_1.BUSINESS_KEY), ERROR);
50
+ }
51
+ }
52
+ function validateCascadeAnnotation(def, entityName, annotationCascade, buildPlugin) {
53
+ if (typeof def[annotationCascade] !== 'boolean') {
54
+ buildPlugin.pushMessage((0, constants_2.ERROR_CASCADE_MUST_BE_BOOLEAN)(entityName, annotationCascade), ERROR);
55
+ }
56
+ }
57
+ function validateRequiredStartAnnotations(hasOn, hasId, entityName, buildPlugin) {
58
+ if (hasOn && !hasId) {
59
+ buildPlugin.pushMessage((0, constants_2.ERROR_START_ON_REQUIRES_ID)(entityName, constants_1.PROCESS_START_ON, constants_1.PROCESS_START_ID), ERROR);
60
+ }
61
+ if (hasId && !hasOn) {
62
+ buildPlugin.pushMessage((0, constants_2.ERROR_START_ID_REQUIRES_ON)(entityName, constants_1.PROCESS_START_ID, constants_1.PROCESS_START_ON), ERROR);
63
+ }
64
+ }
65
+ function validateIdAnnotation(def, entityName, processDef, buildPlugin) {
66
+ if (typeof def[constants_1.PROCESS_START_ID] !== 'string') {
67
+ buildPlugin.pushMessage((0, constants_2.ERROR_START_ID_MUST_BE_STRING)(entityName, constants_1.PROCESS_START_ID), ERROR);
68
+ }
69
+ if (!processDef) {
70
+ buildPlugin.pushMessage((0, constants_2.WARNING_NO_PROCESS_DEFINITION)(entityName, constants_1.PROCESS_START_ID, def[constants_1.PROCESS_START_ID]), WARNING);
71
+ }
72
+ }
73
+ function validateRequiredGenericAnnotations(hasOn, hasAnyAnnotationWithPrefix, entityName, annotationOn, annotationPrefix, hasBusinessKey, buildPlugin) {
74
+ // If any annotation with this prefix is defined, .on is required
75
+ if (hasAnyAnnotationWithPrefix && !hasOn) {
76
+ buildPlugin.pushMessage((0, constants_2.ERROR_ON_REQUIRED)(entityName, annotationPrefix, annotationOn), ERROR);
77
+ }
78
+ // If .on is defined or any annotation with this prefix is defined,
79
+ // businessKey must exist
80
+ if ((hasOn || hasAnyAnnotationWithPrefix) && !hasBusinessKey) {
81
+ buildPlugin.pushMessage((0, constants_2.ERROR_BUSINESS_KEY_REQUIRED)(entityName, annotationPrefix), ERROR);
82
+ }
83
+ }
84
+ function validateInputTypes(buildPlugin, entityName, def, processDef, allDefinitions) {
85
+ const parsedEntries = (0, validation_utils_1.getParsedInputEntries)(def);
86
+ const elements = def.elements ?? {};
87
+ const entityContext = (0, validation_utils_1.createCsnEntityContext)(elements, allDefinitions || {});
88
+ // entity attributes from inputs array annotation
89
+ const entityAttributes = (0, validation_utils_1.getElementNamesAndTypes)(parsedEntries, def, allDefinitions || {}, entityContext);
90
+ // process def inputs from csn model
91
+ const processDefInputs = (0, validation_utils_1.getProcessDefInputsAndTypes)(processDef, allDefinitions || {});
92
+ validateInputPathsExist(buildPlugin, entityName, parsedEntries, entityContext);
93
+ // Compare entity attributes against process definition inputs
94
+ validateInputsMatch(buildPlugin, entityName, entityAttributes, processDefInputs, def[constants_1.PROCESS_START_ID]);
95
+ }
96
+ function validateInputPathsExist(buildPlugin, entityName, parsedEntries, entityContext) {
97
+ if (!parsedEntries) {
98
+ return;
99
+ }
100
+ for (const entry of parsedEntries) {
101
+ // Skip wildcards ($self alone)
102
+ if (entry.path.length === 1 && entry.path[0] === '*')
103
+ continue;
104
+ let currentContext = entityContext;
105
+ for (let i = 0; i < entry.path.length; i++) {
106
+ const segment = entry.path[i];
107
+ // Skip wildcards in nested paths - remainder of path is implicitly valid
108
+ if (segment === '*')
109
+ break;
110
+ const element = currentContext.getElement(segment);
111
+ if (!element) {
112
+ // Element doesn't exist - push warning
113
+ const fullPath = '$self.' + entry.path.slice(0, i + 1).join('.');
114
+ buildPlugin.pushMessage((0, constants_2.WARNING_INPUT_PATH_NOT_IN_ENTITY)(entityName, fullPath), WARNING);
115
+ break; // Stop validating further segments of this path
116
+ }
117
+ // Move to target entity context for next segment (if association/composition)
118
+ if (element.isAssocOrComp && element.targetEntity) {
119
+ currentContext = element.targetEntity;
120
+ }
121
+ }
122
+ }
123
+ }
124
+ function validateInputsMatch(buildPlugin, entityName, entityAttributes, processDefInputs, processDefId, prefix = '') {
125
+ const entityKeys = Object.keys(entityAttributes);
126
+ const processKeys = Object.keys(processDefInputs);
127
+ // Check for entity attributes that don't exist in process definition
128
+ for (const key of entityKeys) {
129
+ const fullKey = prefix ? `${prefix}.${key}` : key;
130
+ if (key in processDefInputs) {
131
+ // Check type compatibility
132
+ const entityType = entityAttributes[key];
133
+ const processType = processDefInputs[key];
134
+ validateElementTypeMatch(buildPlugin, entityName, fullKey, entityType, processType, processDefId);
135
+ }
136
+ else {
137
+ // Entity sends extra attributes the process doesn't define - warn, don't fail.
138
+ // The process will simply ignore unknown inputs.
139
+ buildPlugin.pushMessage((0, constants_2.WARNING_ATTRIBUTE_NOT_IN_PROCESS_DEF)(entityName, fullKey, processDefId), WARNING);
140
+ }
141
+ }
142
+ // Check for process inputs that are missing from entity attributes
143
+ // Only mandatory process inputs are required to be present in the entity
144
+ for (const key of processKeys) {
145
+ const fullKey = prefix ? `${prefix}.${key}` : key;
146
+ const processInput = processDefInputs[key];
147
+ if (!(key in entityAttributes)) {
148
+ if (processInput.isMandatory) {
149
+ buildPlugin.pushMessage((0, constants_2.ERROR_MISSING_MANDATORY_PROCESS_INPUT)(entityName, processDefId, fullKey), ERROR);
150
+ }
151
+ // Optional inputs that are missing are fine - no error needed
152
+ }
153
+ }
154
+ }
155
+ /**
156
+ * Validates that an entity element type matches the expected process definition input type.
157
+ * Handles type comparison, array mismatch, mandatory flags, and nested properties recursively.
158
+ */
159
+ function validateElementTypeMatch(buildPlugin, entityName, key, entityType, processType, processDefId) {
160
+ // Check if mandatory flag is compatible
161
+ // Process input is mandatory but entity attribute is not
162
+ if (processType.isMandatory && !entityType.isMandatory) {
163
+ buildPlugin.pushMessage((0, constants_2.WARNING_MANDATORY_MISMATCH)(entityName, key, processDefId), WARNING);
164
+ }
165
+ // Check array mismatch
166
+ const entityIsArray = entityType.isArray === true;
167
+ const processIsArray = processType.isArray === true;
168
+ if (entityIsArray !== processIsArray) {
169
+ buildPlugin.pushMessage((0, constants_2.WARNING_ARRAY_MISMATCH)(entityName, key, entityIsArray, processIsArray), WARNING);
170
+ }
171
+ // Check base type compatibility
172
+ // For associations/compositions, we compare the target type or allow structural compatibility
173
+ const entityBaseType = entityType.type;
174
+ const processBaseType = processType.type;
175
+ // Skip type mismatch check for association/composition types when comparing with complex types
176
+ const isEntityAssociationOrComposition = entityBaseType === 'cds.Association' || entityBaseType === 'cds.Composition';
177
+ if (!isEntityAssociationOrComposition && entityBaseType !== processBaseType) {
178
+ buildPlugin.pushMessage((0, constants_2.WARNING_TYPE_MISMATCH)(entityName, key, entityBaseType, processBaseType), WARNING);
179
+ }
180
+ // Recursively validate nested properties if both have them
181
+ if (entityType.properties && processType.properties) {
182
+ validateInputsMatch(buildPlugin, entityName, entityType.properties, processType.properties, processDefId, key);
183
+ }
184
+ }
185
+ //# sourceMappingURL=validations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validations.js","sourceRoot":"","sources":["../../../lib/build/validations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LOG_MESSAGES = exports.PROCESS_DEFINITION_ID = exports.PROCESS_RESUME_EVENT = exports.PROCESS_SUSPEND_EVENT = exports.PROCESS_CANCEL_EVENT = exports.PROCESS_START_EVENT = exports.PROCESS_PREFIX = exports.BUILD_PREFIX = exports.PROCESS_RESUME_IF = exports.PROCESS_RESUME_CASCADE = exports.PROCESS_RESUME_ON = exports.PROCESS_RESUME = exports.PROCESS_SUSPEND_IF = exports.PROCESS_SUSPEND_CASCADE = exports.PROCESS_SUSPEND_ON = exports.PROCESS_SUSPEND = exports.PROCESS_CANCEL_IF = exports.PROCESS_CANCEL_CASCADE = exports.PROCESS_CANCEL_ON = exports.PROCESS_CANCEL = exports.PROCESS_START_INPUTS = exports.PROCESS_START_IF = exports.PROCESS_START_ON = exports.PROCESS_START_ID = exports.PROCESS_START = exports.BUSINESS_KEY_ALIAS = exports.BUSINESS_KEY_MAX_LENGTH = exports.BUSINESS_KEY = exports.CUD_EVENTS = exports.PROCESS_LOGGER_PREFIX = exports.PROCESS_SERVICE = void 0;
4
+ /**
5
+ * Process Service
6
+ */
7
+ exports.PROCESS_SERVICE = 'ProcessService';
8
+ /**
9
+ * Process Service Logger
10
+ */
11
+ exports.PROCESS_LOGGER_PREFIX = 'process';
12
+ /**
13
+ * CRUD Operation
14
+ */
15
+ exports.CUD_EVENTS = ['CREATE', 'UPDATE', 'DELETE'];
16
+ /** Business Key Annotations
17
+ *
18
+ */
19
+ exports.BUSINESS_KEY = '@bpm.process.businessKey';
20
+ exports.BUSINESS_KEY_MAX_LENGTH = 255;
21
+ /**
22
+ * Business key alias const
23
+ */
24
+ exports.BUSINESS_KEY_ALIAS = 'as businessKey';
25
+ /**
26
+ * Process Start Annotations
27
+ */
28
+ exports.PROCESS_START = '@bpm.process.start';
29
+ exports.PROCESS_START_ID = '@bpm.process.start.id';
30
+ exports.PROCESS_START_ON = '@bpm.process.start.on';
31
+ exports.PROCESS_START_IF = '@bpm.process.start.if';
32
+ exports.PROCESS_START_INPUTS = '@bpm.process.start.inputs';
33
+ /**
34
+ * Process Cancel Annotations
35
+ */
36
+ exports.PROCESS_CANCEL = '@bpm.process.cancel';
37
+ exports.PROCESS_CANCEL_ON = '@bpm.process.cancel.on';
38
+ exports.PROCESS_CANCEL_CASCADE = '@bpm.process.cancel.cascade';
39
+ exports.PROCESS_CANCEL_IF = '@bpm.process.cancel.if';
40
+ /**
41
+ * Process Suspend Annotations
42
+ */
43
+ exports.PROCESS_SUSPEND = '@bpm.process.suspend';
44
+ exports.PROCESS_SUSPEND_ON = '@bpm.process.suspend.on';
45
+ exports.PROCESS_SUSPEND_CASCADE = '@bpm.process.suspend.cascade';
46
+ exports.PROCESS_SUSPEND_IF = '@bpm.process.suspend.if';
47
+ /**
48
+ * Process Resume Annotations
49
+ */
50
+ exports.PROCESS_RESUME = '@bpm.process.resume';
51
+ exports.PROCESS_RESUME_ON = '@bpm.process.resume.on';
52
+ exports.PROCESS_RESUME_CASCADE = '@bpm.process.resume.cascade';
53
+ exports.PROCESS_RESUME_IF = '@bpm.process.resume.if';
54
+ /**
55
+ * Annotation prefix for filtering
56
+ */
57
+ exports.BUILD_PREFIX = '@bpm';
58
+ exports.PROCESS_PREFIX = '@bpm.process';
59
+ /**
60
+ * Process Event Annotations (Runtime)
61
+ * These annotations are used on dynamically created ProcessService events
62
+ */
63
+ exports.PROCESS_START_EVENT = '@Process.StartEvent';
64
+ exports.PROCESS_CANCEL_EVENT = '@Process.CancelEvent';
65
+ exports.PROCESS_SUSPEND_EVENT = '@Process.SuspendEvent';
66
+ exports.PROCESS_RESUME_EVENT = '@Process.ResumeEvent';
67
+ exports.PROCESS_DEFINITION_ID = '@Process.DefinitionId';
68
+ /**
69
+ * Log Messages
70
+ */
71
+ exports.LOG_MESSAGES = {
72
+ PROCESS_NOT_STARTED: 'Not starting process as start condition(s) are not met.',
73
+ NO_PROCESS_INPUTS_DEFINED: 'No process start input annotations defined, fetching entire entity row for process start context.',
74
+ PROCESS_NOT_SUSPENDED: 'Not suspending process as suspend condition(s) are not met.',
75
+ PROCESS_NOT_RESUMED: 'Not resuming process as resume condition(s) are not met.',
76
+ PROCESS_NOT_CANCELLED: 'Not canceling process as cancel condition(s) are not met.',
77
+ };
78
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,eAAe,GAAG,gBAAyB,CAAC;AAEzD;;GAEG;AACU,QAAA,qBAAqB,GAAG,SAAkB,CAAC;AAExD;;GAEG;AACU,QAAA,UAAU,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAElE;;GAEG;AACU,QAAA,YAAY,GAAG,0BAAmC,CAAC;AACnD,QAAA,uBAAuB,GAAG,GAAG,CAAC;AAE3C;;GAEG;AACU,QAAA,kBAAkB,GAAG,gBAAyB,CAAC;AAE5D;;GAEG;AACU,QAAA,aAAa,GAAG,oBAA6B,CAAC;AAC9C,QAAA,gBAAgB,GAAG,uBAAgC,CAAC;AACpD,QAAA,gBAAgB,GAAG,uBAAgC,CAAC;AACpD,QAAA,gBAAgB,GAAG,uBAAgC,CAAC;AACpD,QAAA,oBAAoB,GAAG,2BAAoC,CAAC;AAEzE;;GAEG;AACU,QAAA,cAAc,GAAG,qBAA8B,CAAC;AAChD,QAAA,iBAAiB,GAAG,wBAAiC,CAAC;AACtD,QAAA,sBAAsB,GAAG,6BAAsC,CAAC;AAChE,QAAA,iBAAiB,GAAG,wBAAiC,CAAC;AAEnE;;GAEG;AACU,QAAA,eAAe,GAAG,sBAA+B,CAAC;AAClD,QAAA,kBAAkB,GAAG,yBAAkC,CAAC;AACxD,QAAA,uBAAuB,GAAG,8BAAuC,CAAC;AAClE,QAAA,kBAAkB,GAAG,yBAAkC,CAAC;AAErE;;GAEG;AACU,QAAA,cAAc,GAAG,qBAA8B,CAAC;AAChD,QAAA,iBAAiB,GAAG,wBAAiC,CAAC;AACtD,QAAA,sBAAsB,GAAG,6BAAsC,CAAC;AAChE,QAAA,iBAAiB,GAAG,wBAAiC,CAAC;AAEnE;;GAEG;AACU,QAAA,YAAY,GAAG,MAAe,CAAC;AAC/B,QAAA,cAAc,GAAG,cAAuB,CAAC;AAEtD;;;GAGG;AACU,QAAA,mBAAmB,GAAG,qBAA8B,CAAC;AACrD,QAAA,oBAAoB,GAAG,sBAA+B,CAAC;AACvD,QAAA,qBAAqB,GAAG,uBAAgC,CAAC;AACzD,QAAA,oBAAoB,GAAG,sBAA+B,CAAC;AACvD,QAAA,qBAAqB,GAAG,uBAAgC,CAAC;AAEtE;;GAEG;AAEU,QAAA,YAAY,GAAG;IAC1B,mBAAmB,EAAE,yDAAyD;IAC9E,yBAAyB,EACvB,mGAAmG;IACrG,qBAAqB,EAAE,6DAA6D;IACpF,mBAAmB,EAAE,0DAA0D;IAC/E,qBAAqB,EAAE,2DAA2D;CAC1E,CAAC"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildAnnotationCache = buildAnnotationCache;
4
+ const constants_1 = require("../constants");
5
+ function expandEvent(event, entity) {
6
+ if (!event)
7
+ return [];
8
+ if (event === '*') {
9
+ const boundActions = entity.actions ? Object.keys(entity.actions) : [];
10
+ return [...constants_1.CUD_EVENTS, ...boundActions];
11
+ }
12
+ return [event];
13
+ }
14
+ function buildAnnotationCache(service) {
15
+ const cache = new Map();
16
+ for (const entity of Object.values(service.entities)) {
17
+ const startEvent = entity[constants_1.PROCESS_START_ON];
18
+ const cancelEvent = entity[constants_1.PROCESS_CANCEL_ON];
19
+ const suspendEvent = entity[constants_1.PROCESS_SUSPEND_ON];
20
+ const resumeEvent = entity[constants_1.PROCESS_RESUME_ON];
21
+ const events = new Set();
22
+ for (const ev of expandEvent(startEvent, entity))
23
+ events.add(ev);
24
+ for (const ev of expandEvent(cancelEvent, entity))
25
+ events.add(ev);
26
+ for (const ev of expandEvent(suspendEvent, entity))
27
+ events.add(ev);
28
+ for (const ev of expandEvent(resumeEvent, entity))
29
+ events.add(ev);
30
+ for (const event of events) {
31
+ const matchesEvent = (annotationEvent) => annotationEvent === event || annotationEvent === '*';
32
+ const hasStart = !!(matchesEvent(startEvent) && entity[constants_1.PROCESS_START_ID]);
33
+ const hasCancel = !!matchesEvent(cancelEvent);
34
+ const hasSuspend = !!matchesEvent(suspendEvent);
35
+ const hasResume = !!matchesEvent(resumeEvent);
36
+ const cacheKey = `${entity.name}:${event}`;
37
+ cache.set(cacheKey, {
38
+ hasStart,
39
+ hasCancel,
40
+ hasSuspend,
41
+ hasResume,
42
+ });
43
+ }
44
+ }
45
+ return cache;
46
+ }
47
+ //# sourceMappingURL=annotationCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotationCache.js","sourceRoot":"","sources":["../../../lib/handlers/annotationCache.ts"],"names":[],"mappings":";;AAoBA,oDAiCC;AAnDD,4CAOsB;AAEtB,SAAS,WAAW,CAAC,KAAyB,EAAE,MAAkB;IAChE,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QAClB,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,CAAC,GAAG,sBAAU,EAAE,GAAG,YAAY,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,SAAgB,oBAAoB,CAAC,OAAoB;IACvD,MAAM,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;IAClD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,MAAM,CAAC,4BAAgB,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,6BAAiB,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,MAAM,CAAC,8BAAkB,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,MAAM,CAAC,6BAAiB,CAAC,CAAC;QAE9C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QACjC,KAAK,MAAM,EAAE,IAAI,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjE,KAAK,MAAM,EAAE,IAAI,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClE,KAAK,MAAM,EAAE,IAAI,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnE,KAAK,MAAM,EAAE,IAAI,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAElE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,YAAY,GAAG,CAAC,eAAmC,EAAE,EAAE,CAC3D,eAAe,KAAK,KAAK,IAAI,eAAe,KAAK,GAAG,CAAC;YAEvD,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,4BAAgB,CAAC,CAAC,CAAC;YAC1E,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAC9C,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAChD,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAE9C,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;YAC3C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE;gBAClB,QAAQ;gBACR,SAAS;gBACT,UAAU;gBACV,SAAS;aACV,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerAnnotationHandlers = registerAnnotationHandlers;
7
+ const cds_1 = __importDefault(require("@sap/cds"));
8
+ const handlers_1 = require("../handlers");
9
+ function registerAnnotationHandlers(service) {
10
+ if (service instanceof cds_1.default.ApplicationService == false)
11
+ return;
12
+ const annotationCache = (0, handlers_1.buildAnnotationCache)(service);
13
+ service.before('DELETE', async (req) => {
14
+ const cacheKey = `${req.target.name}:${req.event}`;
15
+ const cached = annotationCache.get(cacheKey);
16
+ if (!cached)
17
+ return;
18
+ const results = await Promise.all([
19
+ cached.hasStart && (0, handlers_1.addDeletedEntityToRequestStart)(req),
20
+ cached.hasStart && (0, handlers_1.addDeletedEntityToRequestStartBusinessKey)(req),
21
+ cached.hasCancel && (0, handlers_1.addDeletedEntityToRequestCancel)(req),
22
+ cached.hasResume && (0, handlers_1.addDeletedEntityToRequestResume)(req),
23
+ cached.hasSuspend && (0, handlers_1.addDeletedEntityToRequestSuspend)(req),
24
+ ].filter(Boolean));
25
+ req._Process = Object.assign({}, ...results);
26
+ });
27
+ service.after('*', async (results, req) => {
28
+ if (!req.target)
29
+ return;
30
+ const cacheKey = `${req.target.name}:${req.event}`;
31
+ const cached = annotationCache.get(cacheKey);
32
+ if (!cached)
33
+ return;
34
+ const rows = Array.isArray(results) ? results : [results];
35
+ if (rows.length > 0) {
36
+ await Promise.all(rows.map((row) => dispatchProcessHandlers(cached, req, row)));
37
+ }
38
+ else {
39
+ await dispatchProcessHandlers(cached, req, req.data);
40
+ }
41
+ });
42
+ }
43
+ async function dispatchProcessHandlers(cached, req, data) {
44
+ if (cached.hasStart) {
45
+ await (0, handlers_1.handleProcessStart)(req, data);
46
+ }
47
+ if (cached.hasCancel) {
48
+ await (0, handlers_1.handleProcessCancel)(req, data);
49
+ }
50
+ if (cached.hasSuspend) {
51
+ await (0, handlers_1.handleProcessSuspend)(req, data);
52
+ }
53
+ if (cached.hasResume) {
54
+ await (0, handlers_1.handleProcessResume)(req, data);
55
+ }
56
+ }
57
+ //# sourceMappingURL=annotationHandlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotationHandlers.js","sourceRoot":"","sources":["../../../lib/handlers/annotationHandlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerAnnotationHandlers = exports.buildAnnotationCache = exports.registerProcessServiceHandlers = exports.createProcessActionHandler = exports.addDeletedEntityToRequestResume = exports.handleProcessResume = exports.addDeletedEntityToRequestSuspend = exports.handleProcessSuspend = exports.addDeletedEntityToRequestCancel = exports.handleProcessCancel = exports.addDeletedEntityToRequestStartBusinessKey = exports.addDeletedEntityToRequestStart = exports.getColumnsForProcessStart = exports.handleProcessStart = void 0;
4
+ var processStart_1 = require("./processStart");
5
+ Object.defineProperty(exports, "handleProcessStart", { enumerable: true, get: function () { return processStart_1.handleProcessStart; } });
6
+ Object.defineProperty(exports, "getColumnsForProcessStart", { enumerable: true, get: function () { return processStart_1.getColumnsForProcessStart; } });
7
+ Object.defineProperty(exports, "addDeletedEntityToRequestStart", { enumerable: true, get: function () { return processStart_1.addDeletedEntityToRequestStart; } });
8
+ Object.defineProperty(exports, "addDeletedEntityToRequestStartBusinessKey", { enumerable: true, get: function () { return processStart_1.addDeletedEntityToRequestStartBusinessKey; } });
9
+ var processCancel_1 = require("./processCancel");
10
+ Object.defineProperty(exports, "handleProcessCancel", { enumerable: true, get: function () { return processCancel_1.handleProcessCancel; } });
11
+ Object.defineProperty(exports, "addDeletedEntityToRequestCancel", { enumerable: true, get: function () { return processCancel_1.addDeletedEntityToRequestCancel; } });
12
+ var processSuspend_1 = require("./processSuspend");
13
+ Object.defineProperty(exports, "handleProcessSuspend", { enumerable: true, get: function () { return processSuspend_1.handleProcessSuspend; } });
14
+ Object.defineProperty(exports, "addDeletedEntityToRequestSuspend", { enumerable: true, get: function () { return processSuspend_1.addDeletedEntityToRequestSuspend; } });
15
+ var processResume_1 = require("./processResume");
16
+ Object.defineProperty(exports, "handleProcessResume", { enumerable: true, get: function () { return processResume_1.handleProcessResume; } });
17
+ Object.defineProperty(exports, "addDeletedEntityToRequestResume", { enumerable: true, get: function () { return processResume_1.addDeletedEntityToRequestResume; } });
18
+ var processActionHandler_1 = require("./processActionHandler");
19
+ Object.defineProperty(exports, "createProcessActionHandler", { enumerable: true, get: function () { return processActionHandler_1.createProcessActionHandler; } });
20
+ var processService_1 = require("./processService");
21
+ Object.defineProperty(exports, "registerProcessServiceHandlers", { enumerable: true, get: function () { return processService_1.registerProcessServiceHandlers; } });
22
+ var annotationCache_1 = require("./annotationCache");
23
+ Object.defineProperty(exports, "buildAnnotationCache", { enumerable: true, get: function () { return annotationCache_1.buildAnnotationCache; } });
24
+ var annotationHandlers_1 = require("./annotationHandlers");
25
+ Object.defineProperty(exports, "registerAnnotationHandlers", { enumerable: true, get: function () { return annotationHandlers_1.registerAnnotationHandlers; } });
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/handlers/index.ts"],"names":[],"mappings":";;;AAAA,+CAKwB;AAJtB,kHAAA,kBAAkB,OAAA;AAClB,yHAAA,yBAAyB,OAAA;AACzB,8HAAA,8BAA8B,OAAA;AAC9B,yIAAA,yCAAyC,OAAA;AAE3C,iDAAuF;AAA9E,oHAAA,mBAAmB,OAAA;AAAE,gIAAA,+BAA+B,OAAA;AAC7D,mDAA0F;AAAjF,sHAAA,oBAAoB,OAAA;AAAE,kIAAA,gCAAgC,OAAA;AAC/D,iDAAuF;AAA9E,oHAAA,mBAAmB,OAAA;AAAE,gIAAA,+BAA+B,OAAA;AAC7D,+DAAoE;AAA3D,kIAAA,0BAA0B,OAAA;AACnC,mDAAkE;AAAzD,gIAAA,8BAA8B,OAAA;AACvC,qDAAyD;AAAhD,uHAAA,oBAAoB,OAAA;AAC7B,2DAAkE;AAAzD,gIAAA,0BAA0B,OAAA"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PROCESS_EVENT_MAP = void 0;
7
+ exports.isDeleteWithoutProcess = isDeleteWithoutProcess;
8
+ exports.createAddDeletedEntityHandler = createAddDeletedEntityHandler;
9
+ const cds_1 = __importDefault(require("@sap/cds"));
10
+ const constants_1 = require("../constants");
11
+ const input_parser_1 = require("../shared/input-parser");
12
+ const LOG = cds_1.default.log(constants_1.PROCESS_LOGGER_PREFIX);
13
+ exports.PROCESS_EVENT_MAP = {
14
+ start: 'Start',
15
+ startBusinessKey: 'StartBusinessKey',
16
+ cancel: 'Cancel',
17
+ suspend: 'Suspend',
18
+ resume: 'Resume',
19
+ };
20
+ function buildWhereDeleteExpression(req, conditionExpr) {
21
+ const deleteReq = req;
22
+ const deleteQuery = deleteReq.query?.DELETE;
23
+ let where = deleteQuery?.from?.ref?.[0]?.where ?? deleteQuery?.where;
24
+ if (conditionExpr) {
25
+ where =
26
+ Array.isArray(where) && where.length
27
+ ? [{ xpr: where }, 'and', { xpr: conditionExpr.xpr }]
28
+ : conditionExpr.xpr;
29
+ }
30
+ return where;
31
+ }
32
+ /**
33
+ * Checks if this is a DELETE request without process data (condition not met)
34
+ */
35
+ function isDeleteWithoutProcess(req, notTriggeredMsg, processEvent) {
36
+ const processEventKey = exports.PROCESS_EVENT_MAP[processEvent];
37
+ if (req.event === 'DELETE' &&
38
+ req._Process?.[processEventKey] === undefined) {
39
+ // means: condition for process event is not met
40
+ LOG.debug(notTriggeredMsg);
41
+ return true;
42
+ }
43
+ return false;
44
+ }
45
+ /**
46
+ * Generic factory to create a before-DELETE handler that pre-fetches
47
+ * entity data and attaches it to the request under `_Process.[ProcessEvent]`.
48
+ */
49
+ function createAddDeletedEntityHandler(config) {
50
+ return async function addDeletedEntityToRequest(req) {
51
+ const columns = config.getColumns(req);
52
+ const annotatedTarget = req.target;
53
+ const conditionExpr = annotatedTarget[config.ifAnnotation];
54
+ const where = buildWhereDeleteExpression(req, conditionExpr);
55
+ if (where) {
56
+ const selectColumns = columns.length > 0 ? columns : [input_parser_1.WILDCARD];
57
+ const processEventKey = exports.PROCESS_EVENT_MAP[config.action];
58
+ const entity = await SELECT.one.from(req.subject).columns(selectColumns).where(where);
59
+ return { [processEventKey]: entity };
60
+ }
61
+ };
62
+ }
63
+ //# sourceMappingURL=onDeleteUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onDeleteUtils.js","sourceRoot":"","sources":["../../../lib/handlers/onDeleteUtils.ts"],"names":[],"mappings":";;;;;;AAuDA,wDAeC;AAMD,sEAiBC;AA7FD,mDAA2D;AAC3D,4CAAqD;AAErD,yDAAkD;AAElD,MAAM,GAAG,GAAG,aAAG,CAAC,GAAG,CAAC,iCAAqB,CAAC,CAAC;AAE9B,QAAA,iBAAiB,GAA8C;IAC1E,KAAK,EAAE,OAAO;IACd,gBAAgB,EAAE,kBAAkB;IACpC,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;CACjB,CAAC;AAoBF,SAAS,0BAA0B,CACjC,GAAyB,EACzB,aAAwC;IAExC,MAAM,SAAS,GAAG,GAA2B,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,EAAE,MAExB,CAAC;IACd,IAAI,KAAK,GAAY,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,CAAC;IAE9E,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK;YACH,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM;gBAClC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC;gBACrD,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC;IAC1B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CACpC,GAAgB,EAChB,eAAuB,EACvB,YAAoB;IAEpB,MAAM,eAAe,GAAG,yBAAiB,CAAC,YAAY,CAAC,CAAC;IACxD,IACE,GAAG,CAAC,KAAK,KAAK,QAAQ;QACrB,GAA4B,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,KAAK,SAAS,EACvE,CAAC;QACD,gDAAgD;QAChD,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAgB,6BAA6B,CAAC,MAA8B;IAC1E,OAAO,KAAK,UAAU,yBAAyB,CAAC,GAAgB;QAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAEvC,MAAM,eAAe,GAAG,GAAG,CAAC,MAAoB,CAAC;QACjD,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,YAAsB,CAEtD,CAAC;QACd,MAAM,KAAK,GAAG,0BAA0B,CAAC,GAA2B,EAAE,aAAa,CAAC,CAAC;QAErF,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,uBAAQ,CAAC,CAAC;YAChE,MAAM,eAAe,GAAG,yBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACtF,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QACvC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createProcessActionHandler = createProcessActionHandler;
4
+ exports.createProcessActionAddDeletedEntityHandler = createProcessActionAddDeletedEntityHandler;
5
+ const utils_1 = require("./utils");
6
+ const onDeleteUtils_1 = require("./onDeleteUtils");
7
+ const businessKey_helper_1 = require("../shared/businessKey-helper");
8
+ const constants_1 = require("../constants");
9
+ function initSpecs(target, annotations) {
10
+ const targetAnnotations = target;
11
+ return {
12
+ on: targetAnnotations[annotations.ON],
13
+ cascade: targetAnnotations[annotations.CASCADE] ?? false,
14
+ conditionExpr: targetAnnotations[annotations.IF]
15
+ ? targetAnnotations[annotations.IF].xpr
16
+ : undefined,
17
+ businessKey: targetAnnotations[constants_1.BUSINESS_KEY]?.['='],
18
+ };
19
+ }
20
+ function createProcessActionHandler(config) {
21
+ return async function handleProcessAction(req, data) {
22
+ if ((0, onDeleteUtils_1.isDeleteWithoutProcess)(req, config.logMessages.NOT_TRIGGERED, config.action))
23
+ return;
24
+ const target = req.target;
25
+ const processEventKey = onDeleteUtils_1.PROCESS_EVENT_MAP[config.action];
26
+ data = (req._Process?.[processEventKey] ??
27
+ (0, utils_1.getEntityDataFromRequest)(data, req.params));
28
+ // Initialize specifications from annotations
29
+ const specs = initSpecs(target, config.annotations);
30
+ // Get business key column
31
+ const businessKeyColumn = (0, businessKey_helper_1.getBusinessKeyColumnOrReject)(req, specs.businessKey);
32
+ if (!businessKeyColumn)
33
+ return;
34
+ // fetch entity
35
+ const row = await (0, utils_1.resolveEntityRowOrReject)(req, data, specs.conditionExpr, config.logMessages.FETCH_FAILED, config.logMessages.NOT_TRIGGERED, [businessKeyColumn]);
36
+ if (!row)
37
+ return;
38
+ // Emit process event
39
+ const payload = {
40
+ businessKey: row.businessKey,
41
+ cascade: specs.cascade,
42
+ };
43
+ await (0, utils_1.emitProcessEvent)(config.action, req, payload, config.logMessages.FAILED);
44
+ };
45
+ }
46
+ function createProcessActionAddDeletedEntityHandler(config) {
47
+ return (0, onDeleteUtils_1.createAddDeletedEntityHandler)({
48
+ action: config.action,
49
+ ifAnnotation: config.annotations.IF,
50
+ getColumns: (req) => [
51
+ (0, businessKey_helper_1.getBusinessKeyColumnOrReject)(req, req.target[constants_1.BUSINESS_KEY]?.['=']),
52
+ ],
53
+ });
54
+ }
55
+ //# sourceMappingURL=processActionHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processActionHandler.js","sourceRoot":"","sources":["../../../lib/handlers/processActionHandler.ts"],"names":[],"mappings":";;AAgEA,gEAkCC;AAED,gGAQC;AA1GD,mCAMiB;AACjB,mDAKyB;AACzB,qEAA4E;AAC5E,4CAA4C;AAiC5C,SAAS,SAAS,CAChB,MAAc,EACd,WAA+C;IAE/C,MAAM,iBAAiB,GAAG,MAAoB,CAAC;IAC/C,OAAO;QACL,EAAE,EAAE,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAW;QAC/C,OAAO,EAAG,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAa,IAAI,KAAK;QACrE,aAAa,EAAE,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9C,CAAC,CAAE,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAmB,CAAC,GAAG;YAC1D,CAAC,CAAC,SAAS;QACb,WAAW,EAAE,iBAAiB,CAAC,wBAAY,CAAC,EAAE,CAAC,GAAG,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,SAAgB,0BAA0B,CAAC,MAA2B;IACpE,OAAO,KAAK,UAAU,mBAAmB,CAAC,GAAgB,EAAE,IAAe;QACzE,IAAI,IAAA,sCAAsB,EAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC;YAAE,OAAO;QAEzF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAgB,CAAC;QACpC,MAAM,eAAe,GAAG,iCAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,GAAG,CAAE,GAA4B,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC;YAC/D,IAAA,gCAAwB,EAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAc,CAAC;QAC3D,6CAA6C;QAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAEpD,0BAA0B;QAC1B,MAAM,iBAAiB,GAAG,IAAA,iDAA4B,EAAC,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QAC/E,IAAI,CAAC,iBAAiB;YAAE,OAAO;QAE/B,eAAe;QACf,MAAM,GAAG,GAAG,MAAM,IAAA,gCAAwB,EACxC,GAAG,EACH,IAAI,EACJ,KAAK,CAAC,aAAa,EACnB,MAAM,CAAC,WAAW,CAAC,YAAY,EAC/B,MAAM,CAAC,WAAW,CAAC,aAAa,EAChC,CAAC,iBAAiB,CAAC,CACpB,CAAC;QACF,IAAI,CAAC,GAAG;YAAE,OAAO;QAEjB,qBAAqB;QAErB,MAAM,OAAO,GAA4B;YACvC,WAAW,EAAG,GAA+B,CAAC,WAAW;YACzD,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;QACF,MAAM,IAAA,wBAAgB,EAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACjF,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,0CAA0C,CAAC,MAAiC;IAC1F,OAAO,IAAA,6CAA6B,EAAC;QACnC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE;QACnC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;YACnB,IAAA,iDAA4B,EAAC,GAAG,EAAG,GAAG,CAAC,MAAqB,CAAC,wBAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;SACnF;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addDeletedEntityToRequestCancel = exports.handleProcessCancel = void 0;
4
+ const processActionHandler_1 = require("./processActionHandler");
5
+ const constants_1 = require("../constants");
6
+ const action = 'cancel';
7
+ exports.handleProcessCancel = (0, processActionHandler_1.createProcessActionHandler)({
8
+ action: action,
9
+ annotations: {
10
+ ON: constants_1.PROCESS_CANCEL_ON,
11
+ CASCADE: constants_1.PROCESS_CANCEL_CASCADE,
12
+ IF: constants_1.PROCESS_CANCEL_IF,
13
+ },
14
+ logMessages: {
15
+ NOT_TRIGGERED: constants_1.LOG_MESSAGES.PROCESS_NOT_CANCELLED,
16
+ FETCH_FAILED: 'Failed to fetch entity for process cancellation.',
17
+ INVALID_KEY: 'Failed to build business key for process cancellation.',
18
+ EMPTY_KEY: 'Business key is empty for process cancellation.',
19
+ FAILED: 'Failed to cancel process with business key',
20
+ },
21
+ });
22
+ exports.addDeletedEntityToRequestCancel = (0, processActionHandler_1.createProcessActionAddDeletedEntityHandler)({
23
+ action: action,
24
+ annotations: {
25
+ IF: constants_1.PROCESS_CANCEL_IF,
26
+ },
27
+ });
28
+ //# sourceMappingURL=processCancel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processCancel.js","sourceRoot":"","sources":["../../../lib/handlers/processCancel.ts"],"names":[],"mappings":";;;AAAA,iEAGgC;AAChC,4CAKsB;AAEtB,MAAM,MAAM,GAAG,QAAQ,CAAC;AAEX,QAAA,mBAAmB,GAAG,IAAA,iDAA0B,EAAC;IAC5D,MAAM,EAAE,MAAM;IACd,WAAW,EAAE;QACX,EAAE,EAAE,6BAAiB;QACrB,OAAO,EAAE,kCAAsB;QAC/B,EAAE,EAAE,6BAAiB;KACtB;IACD,WAAW,EAAE;QACX,aAAa,EAAE,wBAAY,CAAC,qBAAqB;QACjD,YAAY,EAAE,kDAAkD;QAChE,WAAW,EAAE,wDAAwD;QACrE,SAAS,EAAE,iDAAiD;QAC5D,MAAM,EAAE,4CAA4C;KACrD;CACF,CAAC,CAAC;AAEU,QAAA,+BAA+B,GAAG,IAAA,iEAA0C,EAAC;IACxF,MAAM,EAAE,MAAM;IACd,WAAW,EAAE;QACX,EAAE,EAAE,6BAAiB;KACtB;CACF,CAAC,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addDeletedEntityToRequestResume = exports.handleProcessResume = void 0;
4
+ const processActionHandler_1 = require("./processActionHandler");
5
+ const constants_1 = require("../constants");
6
+ const action = 'resume';
7
+ exports.handleProcessResume = (0, processActionHandler_1.createProcessActionHandler)({
8
+ action: action,
9
+ annotations: {
10
+ ON: constants_1.PROCESS_RESUME_ON,
11
+ CASCADE: constants_1.PROCESS_RESUME_CASCADE,
12
+ IF: constants_1.PROCESS_RESUME_IF,
13
+ },
14
+ logMessages: {
15
+ NOT_TRIGGERED: constants_1.LOG_MESSAGES.PROCESS_NOT_RESUMED,
16
+ FETCH_FAILED: 'Failed to fetch entity for process resume.',
17
+ INVALID_KEY: 'Failed to build business key for process resume.',
18
+ EMPTY_KEY: 'Business key is empty for process resume.',
19
+ FAILED: 'Failed to resume process with business key',
20
+ },
21
+ });
22
+ exports.addDeletedEntityToRequestResume = (0, processActionHandler_1.createProcessActionAddDeletedEntityHandler)({
23
+ action: action,
24
+ annotations: {
25
+ IF: constants_1.PROCESS_RESUME_IF,
26
+ },
27
+ });
28
+ //# sourceMappingURL=processResume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processResume.js","sourceRoot":"","sources":["../../../lib/handlers/processResume.ts"],"names":[],"mappings":";;;AAAA,iEAGgC;AAChC,4CAKsB;AAEtB,MAAM,MAAM,GAAG,QAAQ,CAAC;AAEX,QAAA,mBAAmB,GAAG,IAAA,iDAA0B,EAAC;IAC5D,MAAM,EAAE,MAAM;IACd,WAAW,EAAE;QACX,EAAE,EAAE,6BAAiB;QACrB,OAAO,EAAE,kCAAsB;QAC/B,EAAE,EAAE,6BAAiB;KACtB;IACD,WAAW,EAAE;QACX,aAAa,EAAE,wBAAY,CAAC,mBAAmB;QAC/C,YAAY,EAAE,4CAA4C;QAC1D,WAAW,EAAE,kDAAkD;QAC/D,SAAS,EAAE,2CAA2C;QACtD,MAAM,EAAE,4CAA4C;KACrD;CACF,CAAC,CAAC;AAEU,QAAA,+BAA+B,GAAG,IAAA,iEAA0C,EAAC;IACxF,MAAM,EAAE,MAAM;IACd,WAAW,EAAE;QACX,EAAE,EAAE,6BAAiB;KACtB;CACF,CAAC,CAAC"}