@rytass/bpm-core-nestjs-module 0.7.0 → 0.9.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.
- package/CHANGELOG.md +116 -0
- package/README.md +58 -1
- package/package.json +9 -2
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/lib/bpm/bpm-root.module.d.ts +15 -0
- package/src/lib/bpm/bpm-root.module.js +12 -0
- package/src/lib/bpm/bpm-root.module.js.map +1 -1
- package/src/lib/calendar/calendar.module.d.ts +5 -1
- package/src/lib/calendar/calendar.module.js +1 -0
- package/src/lib/calendar/calendar.module.js.map +1 -1
- package/src/lib/form/form-schema.validator.js +177 -10
- package/src/lib/form/form-schema.validator.js.map +1 -1
- package/src/lib/form/form.service.d.ts +19 -1
- package/src/lib/form/form.service.js +56 -6
- package/src/lib/form/form.service.js.map +1 -1
- package/src/lib/form-data-source/form-data-source-value-resolver.service.d.ts +16 -0
- package/src/lib/form-data-source/form-data-source-value-resolver.service.js +401 -0
- package/src/lib/form-data-source/form-data-source-value-resolver.service.js.map +1 -0
- package/src/lib/form-data-source/form-data-source.errors.d.ts +34 -0
- package/src/lib/form-data-source/form-data-source.errors.js +43 -0
- package/src/lib/form-data-source/form-data-source.errors.js.map +1 -0
- package/src/lib/form-data-source/form-data-source.module.d.ts +9 -0
- package/src/lib/form-data-source/form-data-source.module.js +55 -0
- package/src/lib/form-data-source/form-data-source.module.js.map +1 -0
- package/src/lib/form-data-source/form-data-source.queries.d.ts +57 -0
- package/src/lib/form-data-source/form-data-source.queries.js +293 -0
- package/src/lib/form-data-source/form-data-source.queries.js.map +1 -0
- package/src/lib/form-data-source/form-data-source.service.d.ts +72 -0
- package/src/lib/form-data-source/form-data-source.service.js +646 -0
- package/src/lib/form-data-source/form-data-source.service.js.map +1 -0
- package/src/lib/form-data-source/form-data-source.types.d.ts +88 -0
- package/src/lib/form-data-source/form-data-source.types.js +29 -0
- package/src/lib/form-data-source/form-data-source.types.js.map +1 -0
- package/src/lib/form-data-source/index.d.ts +5 -0
- package/src/lib/form-data-source/index.js +9 -0
- package/src/lib/form-data-source/index.js.map +1 -0
- package/src/lib/migrations/0000000018000-notification-archive.d.ts +6 -0
- package/src/lib/migrations/0000000018000-notification-archive.js +28 -0
- package/src/lib/migrations/0000000018000-notification-archive.js.map +1 -0
- package/src/lib/migrations/0000000019000-approval-template-activation.d.ts +6 -0
- package/src/lib/migrations/0000000019000-approval-template-activation.js +29 -0
- package/src/lib/migrations/0000000019000-approval-template-activation.js.map +1 -0
- package/src/lib/migrations/0000000020000-form-data-option-snapshots.d.ts +6 -0
- package/src/lib/migrations/0000000020000-form-data-option-snapshots.js +22 -0
- package/src/lib/migrations/0000000020000-form-data-option-snapshots.js.map +1 -0
- package/src/lib/migrations/index.d.ts +3 -0
- package/src/lib/migrations/index.js +9 -0
- package/src/lib/migrations/index.js.map +1 -1
- package/src/lib/notification/index.d.ts +3 -0
- package/src/lib/notification/index.js +3 -0
- package/src/lib/notification/index.js.map +1 -1
- package/src/lib/notification/notification-observer.token.d.ts +52 -0
- package/src/lib/notification/notification-observer.token.js +5 -0
- package/src/lib/notification/notification-observer.token.js.map +1 -0
- package/src/lib/notification/notification.entity.d.ts +11 -0
- package/src/lib/notification/notification.entity.js +17 -0
- package/src/lib/notification/notification.entity.js.map +1 -1
- package/src/lib/notification/notification.mutations.d.ts +2 -0
- package/src/lib/notification/notification.mutations.js +28 -0
- package/src/lib/notification/notification.mutations.js.map +1 -1
- package/src/lib/notification/notification.queries.d.ts +2 -2
- package/src/lib/notification/notification.queries.js +12 -8
- package/src/lib/notification/notification.queries.js.map +1 -1
- package/src/lib/notification/notification.service.d.ts +34 -2
- package/src/lib/notification/notification.service.js +116 -3
- package/src/lib/notification/notification.service.js.map +1 -1
- package/src/lib/template/approval-template.entity.d.ts +13 -0
- package/src/lib/template/approval-template.entity.js +12 -1
- package/src/lib/template/approval-template.entity.js.map +1 -1
- package/src/lib/template/template.enums.d.ts +5 -0
- package/src/lib/template/template.enums.js +10 -1
- package/src/lib/template/template.enums.js.map +1 -1
- package/src/lib/template/template.mutations.d.ts +2 -0
- package/src/lib/template/template.mutations.js +20 -0
- package/src/lib/template/template.mutations.js.map +1 -1
- package/src/lib/template/template.queries.d.ts +3 -3
- package/src/lib/template/template.queries.js +14 -4
- package/src/lib/template/template.queries.js.map +1 -1
- package/src/lib/template/template.service.d.ts +7 -2
- package/src/lib/template/template.service.js +56 -11
- package/src/lib/template/template.service.js.map +1 -1
- package/src/lib/template/workflow-definition.validator.js +11 -0
- package/src/lib/template/workflow-definition.validator.js.map +1 -1
- package/src/lib/workflow-engine/approval-instance.entity.d.ts +3 -0
- package/src/lib/workflow-engine/approval-instance.entity.js +15 -0
- package/src/lib/workflow-engine/approval-instance.entity.js.map +1 -1
- package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.d.ts +5 -1
- package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.js +6 -2
- package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.js.map +1 -1
- package/src/lib/workflow-engine/dto/submit-approval-instance.input.d.ts +5 -1
- package/src/lib/workflow-engine/dto/submit-approval-instance.input.js +6 -2
- package/src/lib/workflow-engine/dto/submit-approval-instance.input.js.map +1 -1
- package/src/lib/workflow-engine/workflow-engine.mutations.d.ts +3 -2
- package/src/lib/workflow-engine/workflow-engine.mutations.js +8 -6
- package/src/lib/workflow-engine/workflow-engine.mutations.js.map +1 -1
- package/src/lib/workflow-engine/workflow-engine.service.d.ts +18 -3
- package/src/lib/workflow-engine/workflow-engine.service.js +212 -7
- package/src/lib/workflow-engine/workflow-engine.service.js.map +1 -1
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var FormDataSourceValueResolverService_1;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.FormDataSourceValueResolverService = void 0;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const node_crypto_1 = require("node:crypto");
|
|
7
|
+
const common_1 = require("@nestjs/common");
|
|
8
|
+
const form_1 = require("@rytass/bpm-core-shared/form");
|
|
9
|
+
const form_data_source_errors_1 = require("./form-data-source.errors");
|
|
10
|
+
const form_data_source_types_1 = require("./form-data-source.types");
|
|
11
|
+
const MAX_PARAMETER_BYTES = 16_384;
|
|
12
|
+
const PROVIDER_TIMEOUT_MS = 5_000;
|
|
13
|
+
const SOURCE_CONTROLS = [
|
|
14
|
+
'autocomplete',
|
|
15
|
+
'checkbox',
|
|
16
|
+
'radio',
|
|
17
|
+
'select',
|
|
18
|
+
];
|
|
19
|
+
const PARAMETER_TYPES = [
|
|
20
|
+
'BOOLEAN',
|
|
21
|
+
'NUMBER',
|
|
22
|
+
'STRING',
|
|
23
|
+
'STRING_ARRAY',
|
|
24
|
+
];
|
|
25
|
+
let FormDataSourceValueResolverService = FormDataSourceValueResolverService_1 = class FormDataSourceValueResolverService {
|
|
26
|
+
constructor(registry) {
|
|
27
|
+
this.registry = registry;
|
|
28
|
+
this.logger = new common_1.Logger(FormDataSourceValueResolverService_1.name);
|
|
29
|
+
}
|
|
30
|
+
async resolveFormDataOptionSnapshots(input) {
|
|
31
|
+
const entries = await Promise.all(input.schema.fields.map(async (field) => {
|
|
32
|
+
if (!(0, form_1.isFormDataSourceFieldDefinition)(field)) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const values = readDynamicFieldValues(field, input.formData[field.fieldKey]);
|
|
36
|
+
if (values.length === 0) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
const previousSnapshot = input.previousSnapshots?.[field.fieldKey];
|
|
40
|
+
const valueUnchanged = isSameFieldValue(input.previousFormData?.[field.fieldKey], input.formData[field.fieldKey]);
|
|
41
|
+
const source = this.registry.get(field.dataSource.key, field.dataSource.version);
|
|
42
|
+
if (!source) {
|
|
43
|
+
if (!input.revalidateAll &&
|
|
44
|
+
previousSnapshot &&
|
|
45
|
+
valueUnchanged &&
|
|
46
|
+
previousSnapshot.dataSourceKey === field.dataSource.key &&
|
|
47
|
+
previousSnapshot.dataSourceVersion === field.dataSource.version) {
|
|
48
|
+
return [field.fieldKey, previousSnapshot];
|
|
49
|
+
}
|
|
50
|
+
throw this.createSourceMissingException(field.dataSource.key);
|
|
51
|
+
}
|
|
52
|
+
this.assertDescriptor(source.descriptor);
|
|
53
|
+
this.assertControlSupported(field, source.descriptor);
|
|
54
|
+
const bindings = this.readBindingValues(field, source.descriptor, input.formData);
|
|
55
|
+
if (bindings.missingParameters.length > 0) {
|
|
56
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.WAITING_FOR_DEPENDENCIES);
|
|
57
|
+
}
|
|
58
|
+
const bindingHash = hashBindings(source.descriptor, bindings.values);
|
|
59
|
+
const canReuseSnapshot = !input.revalidateAll &&
|
|
60
|
+
source.descriptor.revalidationPolicy ===
|
|
61
|
+
'WHEN_VALUE_OR_BINDINGS_CHANGE' &&
|
|
62
|
+
previousSnapshot?.dataSourceKey === source.descriptor.key &&
|
|
63
|
+
previousSnapshot.dataSourceVersion === source.descriptor.version &&
|
|
64
|
+
previousSnapshot.bindingHash === bindingHash &&
|
|
65
|
+
valueUnchanged;
|
|
66
|
+
if (canReuseSnapshot && previousSnapshot) {
|
|
67
|
+
return [field.fieldKey, previousSnapshot];
|
|
68
|
+
}
|
|
69
|
+
const options = await this.resolveFormFieldOptions({
|
|
70
|
+
authContext: input.authContext,
|
|
71
|
+
field,
|
|
72
|
+
formData: input.formData,
|
|
73
|
+
values,
|
|
74
|
+
});
|
|
75
|
+
const snapshot = {
|
|
76
|
+
bindingHash,
|
|
77
|
+
dataSourceKey: source.descriptor.key,
|
|
78
|
+
dataSourceVersion: source.descriptor.version,
|
|
79
|
+
options,
|
|
80
|
+
validatedAt: new Date().toISOString(),
|
|
81
|
+
};
|
|
82
|
+
return [field.fieldKey, snapshot];
|
|
83
|
+
}));
|
|
84
|
+
return Object.fromEntries(entries.filter((entry) => entry !== null));
|
|
85
|
+
}
|
|
86
|
+
async resolveFormFieldOptions(input) {
|
|
87
|
+
const field = this.readDynamicOptionField(input.field);
|
|
88
|
+
const source = this.readSourceOrThrow(field.dataSource);
|
|
89
|
+
this.assertControlSupported(field, source.descriptor);
|
|
90
|
+
const values = validateRequestedValues(input.values, source.descriptor.maximumResultCount);
|
|
91
|
+
const bindings = this.readBindingValues(field, source.descriptor, input.formData);
|
|
92
|
+
if (bindings.missingParameters.length > 0) {
|
|
93
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.WAITING_FOR_DEPENDENCIES);
|
|
94
|
+
}
|
|
95
|
+
const result = await this.callProvider(source, (signal) => source.resolve({
|
|
96
|
+
authContext: input.authContext,
|
|
97
|
+
bindings: bindings.values,
|
|
98
|
+
signal,
|
|
99
|
+
values,
|
|
100
|
+
}));
|
|
101
|
+
const options = validateResolveResult(result, values, source.descriptor.maximumResultCount);
|
|
102
|
+
const optionByValue = new Map(options.map((option) => [
|
|
103
|
+
option.value,
|
|
104
|
+
option,
|
|
105
|
+
]));
|
|
106
|
+
return values.map((value) => optionByValue.get(value));
|
|
107
|
+
}
|
|
108
|
+
readDynamicOptionField(field) {
|
|
109
|
+
if (!(0, form_1.isFormDataSourceFieldDefinition)(field)) {
|
|
110
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.FIELD_NOT_DYNAMIC);
|
|
111
|
+
}
|
|
112
|
+
return field;
|
|
113
|
+
}
|
|
114
|
+
readSourceOrThrow(reference) {
|
|
115
|
+
const source = this.registry.get(reference.key, reference.version);
|
|
116
|
+
if (!source) {
|
|
117
|
+
throw this.createSourceMissingException(reference.key);
|
|
118
|
+
}
|
|
119
|
+
this.assertDescriptor(source.descriptor);
|
|
120
|
+
return source;
|
|
121
|
+
}
|
|
122
|
+
createSourceMissingException(key) {
|
|
123
|
+
const hasKey = this.registry
|
|
124
|
+
.list()
|
|
125
|
+
.some((candidate) => {
|
|
126
|
+
const candidateRecord = isRecord(candidate) ? candidate : null;
|
|
127
|
+
const descriptor = candidateRecord && isRecord(candidateRecord.descriptor)
|
|
128
|
+
? candidateRecord.descriptor
|
|
129
|
+
: null;
|
|
130
|
+
return descriptor?.key === key;
|
|
131
|
+
});
|
|
132
|
+
return new form_data_source_errors_1.BPMFormDataSourceException(hasKey
|
|
133
|
+
? form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.DATA_SOURCE_VERSION_MISSING
|
|
134
|
+
: form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.DATA_SOURCE_MISSING);
|
|
135
|
+
}
|
|
136
|
+
assertDescriptor(descriptor) {
|
|
137
|
+
const valid = typeof descriptor.key === 'string' &&
|
|
138
|
+
descriptor.key.trim().length > 0 &&
|
|
139
|
+
typeof descriptor.label === 'string' &&
|
|
140
|
+
descriptor.label.trim().length > 0 &&
|
|
141
|
+
isPositiveInteger(descriptor.version) &&
|
|
142
|
+
isPositiveInteger(descriptor.maximumResultCount) &&
|
|
143
|
+
isPositiveInteger(descriptor.pageSize) &&
|
|
144
|
+
isNonNegativeInteger(descriptor.minimumSearchLength) &&
|
|
145
|
+
descriptor.pageSize <= descriptor.maximumResultCount &&
|
|
146
|
+
(descriptor.paginationMode === 'CURSOR' ||
|
|
147
|
+
descriptor.paginationMode === 'NONE') &&
|
|
148
|
+
(descriptor.revalidationPolicy === 'ALWAYS' ||
|
|
149
|
+
descriptor.revalidationPolicy === 'WHEN_VALUE_OR_BINDINGS_CHANGE') &&
|
|
150
|
+
typeof descriptor.returnsCompleteList === 'boolean' &&
|
|
151
|
+
typeof descriptor.supportsSearch === 'boolean' &&
|
|
152
|
+
Array.isArray(descriptor.parameters) &&
|
|
153
|
+
Array.isArray(descriptor.supportedControls) &&
|
|
154
|
+
descriptor.supportedControls.every((control) => SOURCE_CONTROLS.includes(control)) &&
|
|
155
|
+
descriptor.parameters.every((parameter) => isValidParameter(parameter)) &&
|
|
156
|
+
new Set(descriptor.parameters.map((parameter) => parameter.key)).size ===
|
|
157
|
+
descriptor.parameters.length &&
|
|
158
|
+
new Set(descriptor.supportedControls).size ===
|
|
159
|
+
descriptor.supportedControls.length;
|
|
160
|
+
if (!valid) {
|
|
161
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.INVALID_DESCRIPTOR);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
assertControlSupported(field, descriptor) {
|
|
165
|
+
if (!descriptor.supportedControls.includes(field.type)) {
|
|
166
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.UNSUPPORTED_CONTROL);
|
|
167
|
+
}
|
|
168
|
+
if ((field.type === 'radio' || field.type === 'checkbox') &&
|
|
169
|
+
(!descriptor.returnsCompleteList || descriptor.maximumResultCount > 50)) {
|
|
170
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.UNSUPPORTED_CONTROL);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
readBindingValues(field, descriptor, formData) {
|
|
174
|
+
const parameterByKey = new Map(descriptor.parameters.map((parameter) => [
|
|
175
|
+
parameter.key,
|
|
176
|
+
parameter,
|
|
177
|
+
]));
|
|
178
|
+
const bindingValues = field.dataSource.bindings.reduce((values, binding) => {
|
|
179
|
+
const parameter = parameterByKey.get(binding.parameter);
|
|
180
|
+
if (!parameter) {
|
|
181
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.INVALID_BINDING);
|
|
182
|
+
}
|
|
183
|
+
const nextValue = binding.from.kind === 'FIELD'
|
|
184
|
+
? readFormDataValue(formData[binding.from.fieldKey])
|
|
185
|
+
: binding.from.value;
|
|
186
|
+
if (typeof nextValue === 'undefined') {
|
|
187
|
+
return values;
|
|
188
|
+
}
|
|
189
|
+
assertParameterValue(parameter, nextValue);
|
|
190
|
+
return { ...values, [parameter.key]: nextValue };
|
|
191
|
+
}, {});
|
|
192
|
+
const missingParameters = descriptor.parameters
|
|
193
|
+
.filter((parameter) => parameter.required)
|
|
194
|
+
.filter((parameter) => !isPresentFormDataValue(bindingValues[parameter.key]))
|
|
195
|
+
.map((parameter) => parameter.key);
|
|
196
|
+
if (JSON.stringify(bindingValues).length > MAX_PARAMETER_BYTES) {
|
|
197
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.PARAMETER_LIMIT_EXCEEDED);
|
|
198
|
+
}
|
|
199
|
+
return { missingParameters, values: bindingValues };
|
|
200
|
+
}
|
|
201
|
+
async callProvider(source, call) {
|
|
202
|
+
const controller = new AbortController();
|
|
203
|
+
let timeoutId;
|
|
204
|
+
const startedAt = Date.now();
|
|
205
|
+
try {
|
|
206
|
+
const result = await Promise.race([
|
|
207
|
+
call(controller.signal),
|
|
208
|
+
new Promise((_resolve, reject) => {
|
|
209
|
+
timeoutId = setTimeout(() => {
|
|
210
|
+
controller.abort();
|
|
211
|
+
const timeout = new Error('provider timeout');
|
|
212
|
+
Object.assign(timeout, { kind: 'FORM_DATA_SOURCE_TIMEOUT' });
|
|
213
|
+
reject(timeout);
|
|
214
|
+
}, PROVIDER_TIMEOUT_MS);
|
|
215
|
+
}),
|
|
216
|
+
]);
|
|
217
|
+
this.logger.log(JSON.stringify({
|
|
218
|
+
dataSourceKey: source.descriptor.key,
|
|
219
|
+
dataSourceVersion: source.descriptor.version,
|
|
220
|
+
durationMs: Date.now() - startedAt,
|
|
221
|
+
operation: 'resolve',
|
|
222
|
+
status: 'success',
|
|
223
|
+
}));
|
|
224
|
+
return result;
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
const code = isTimeoutMarker(error)
|
|
228
|
+
? form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.TIMEOUT
|
|
229
|
+
: form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.PROVIDER_FAILURE;
|
|
230
|
+
this.logger.warn(JSON.stringify({
|
|
231
|
+
dataSourceKey: source.descriptor.key,
|
|
232
|
+
dataSourceVersion: source.descriptor.version,
|
|
233
|
+
durationMs: Date.now() - startedAt,
|
|
234
|
+
errorCode: code,
|
|
235
|
+
operation: 'resolve',
|
|
236
|
+
status: 'error',
|
|
237
|
+
}));
|
|
238
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(code);
|
|
239
|
+
}
|
|
240
|
+
finally {
|
|
241
|
+
if (timeoutId) {
|
|
242
|
+
clearTimeout(timeoutId);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
exports.FormDataSourceValueResolverService = FormDataSourceValueResolverService;
|
|
248
|
+
exports.FormDataSourceValueResolverService = FormDataSourceValueResolverService = FormDataSourceValueResolverService_1 = tslib_1.__decorate([
|
|
249
|
+
(0, common_1.Injectable)(),
|
|
250
|
+
tslib_1.__param(0, (0, common_1.Inject)(form_data_source_types_1.BPM_FORM_DATA_SOURCE_REGISTRY)),
|
|
251
|
+
tslib_1.__metadata("design:paramtypes", [Object])
|
|
252
|
+
], FormDataSourceValueResolverService);
|
|
253
|
+
function readDynamicFieldValues(field, value) {
|
|
254
|
+
const mode = (0, form_1.readFormFieldSelectionMode)(field);
|
|
255
|
+
if (value === null || typeof value === 'undefined') {
|
|
256
|
+
return [];
|
|
257
|
+
}
|
|
258
|
+
// `''` clears a single field; on a multiple field it is an illegal shape that
|
|
259
|
+
// must be rejected rather than silently treated as "nothing selected".
|
|
260
|
+
if (value === '' && mode !== 'multiple') {
|
|
261
|
+
return [];
|
|
262
|
+
}
|
|
263
|
+
if (mode === 'multiple') {
|
|
264
|
+
if (!Array.isArray(value) ||
|
|
265
|
+
value.some((item) => typeof item !== 'string' || !item.trim()) ||
|
|
266
|
+
new Set(value).size !== value.length) {
|
|
267
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.INVALID_BINDING);
|
|
268
|
+
}
|
|
269
|
+
return [...value];
|
|
270
|
+
}
|
|
271
|
+
if (typeof value !== 'string' || !value.trim()) {
|
|
272
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.INVALID_BINDING);
|
|
273
|
+
}
|
|
274
|
+
return [value];
|
|
275
|
+
}
|
|
276
|
+
function validateRequestedValues(values, maximumResultCount) {
|
|
277
|
+
if (values.length === 0 ||
|
|
278
|
+
values.some((value) => !value.trim()) ||
|
|
279
|
+
new Set(values).size !== values.length) {
|
|
280
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.INVALID_BINDING);
|
|
281
|
+
}
|
|
282
|
+
if (values.length > maximumResultCount) {
|
|
283
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.RESULT_LIMIT_EXCEEDED);
|
|
284
|
+
}
|
|
285
|
+
return [...values];
|
|
286
|
+
}
|
|
287
|
+
function validateResolveResult(result, values, maximumResultCount) {
|
|
288
|
+
if (!Array.isArray(result) || result.length > maximumResultCount) {
|
|
289
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.INVALID_PROVIDER_RESULT);
|
|
290
|
+
}
|
|
291
|
+
const options = validateOptions(result);
|
|
292
|
+
const requestedValues = new Set(values);
|
|
293
|
+
// A value the caller never asked for is a provider contract breach.
|
|
294
|
+
if (options.some((option) => !requestedValues.has(option.value))) {
|
|
295
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.INVALID_PROVIDER_RESULT);
|
|
296
|
+
}
|
|
297
|
+
// Every requested value resolved to exactly one option, or the submitted
|
|
298
|
+
// value is simply no longer selectable — that is a user-facing failure.
|
|
299
|
+
if (options.length !== values.length) {
|
|
300
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.VALUE_NOT_RESOLVED);
|
|
301
|
+
}
|
|
302
|
+
return options;
|
|
303
|
+
}
|
|
304
|
+
function validateOptions(value) {
|
|
305
|
+
if (!Array.isArray(value)) {
|
|
306
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.INVALID_PROVIDER_RESULT);
|
|
307
|
+
}
|
|
308
|
+
const options = value.filter(isFormFieldOption);
|
|
309
|
+
if (options.length !== value.length ||
|
|
310
|
+
options.some((option) => !option.label.trim() || !option.value.trim()) ||
|
|
311
|
+
new Set(options.map((option) => option.value)).size !== options.length) {
|
|
312
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.INVALID_PROVIDER_RESULT);
|
|
313
|
+
}
|
|
314
|
+
return options;
|
|
315
|
+
}
|
|
316
|
+
function assertParameterValue(parameter, value) {
|
|
317
|
+
const valid = (parameter.type === 'BOOLEAN' && typeof value === 'boolean') ||
|
|
318
|
+
(parameter.type === 'NUMBER' &&
|
|
319
|
+
typeof value === 'number' &&
|
|
320
|
+
Number.isFinite(value)) ||
|
|
321
|
+
(parameter.type === 'STRING' && typeof value === 'string') ||
|
|
322
|
+
(parameter.type === 'STRING_ARRAY' && isStringArray(value)) ||
|
|
323
|
+
value === null;
|
|
324
|
+
if (!valid) {
|
|
325
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.INVALID_BINDING);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
function readFormDataValue(value) {
|
|
329
|
+
if (value === null ||
|
|
330
|
+
typeof value === 'boolean' ||
|
|
331
|
+
(typeof value === 'number' && Number.isFinite(value)) ||
|
|
332
|
+
typeof value === 'string' ||
|
|
333
|
+
isStringArrayValue(value)) {
|
|
334
|
+
return value;
|
|
335
|
+
}
|
|
336
|
+
if (typeof value === 'undefined') {
|
|
337
|
+
return undefined;
|
|
338
|
+
}
|
|
339
|
+
throw new form_data_source_errors_1.BPMFormDataSourceException(form_data_source_errors_1.BPM_FORM_DATA_SOURCE_ERROR_CODES.INVALID_BINDING);
|
|
340
|
+
}
|
|
341
|
+
function isPresentFormDataValue(value) {
|
|
342
|
+
if (typeof value === 'undefined' || value === null) {
|
|
343
|
+
return false;
|
|
344
|
+
}
|
|
345
|
+
if (typeof value === 'string') {
|
|
346
|
+
return value.trim().length > 0;
|
|
347
|
+
}
|
|
348
|
+
if (Array.isArray(value)) {
|
|
349
|
+
return value.length > 0;
|
|
350
|
+
}
|
|
351
|
+
return true;
|
|
352
|
+
}
|
|
353
|
+
function hashBindings(descriptor, values) {
|
|
354
|
+
const orderedValues = descriptor.parameters.map((parameter) => [
|
|
355
|
+
parameter.key,
|
|
356
|
+
values[parameter.key] ?? null,
|
|
357
|
+
]);
|
|
358
|
+
return (0, node_crypto_1.createHash)('sha256')
|
|
359
|
+
.update(JSON.stringify({
|
|
360
|
+
dataSourceKey: descriptor.key,
|
|
361
|
+
dataSourceVersion: descriptor.version,
|
|
362
|
+
values: orderedValues,
|
|
363
|
+
}))
|
|
364
|
+
.digest('hex');
|
|
365
|
+
}
|
|
366
|
+
function isSameFieldValue(left, right) {
|
|
367
|
+
return JSON.stringify(left ?? null) === JSON.stringify(right ?? null);
|
|
368
|
+
}
|
|
369
|
+
function isFormFieldOption(value) {
|
|
370
|
+
return (isRecord(value) &&
|
|
371
|
+
typeof value.label === 'string' &&
|
|
372
|
+
typeof value.value === 'string');
|
|
373
|
+
}
|
|
374
|
+
function isValidParameter(value) {
|
|
375
|
+
return (isRecord(value) &&
|
|
376
|
+
typeof value.key === 'string' &&
|
|
377
|
+
value.key.trim().length > 0 &&
|
|
378
|
+
typeof value.required === 'boolean' &&
|
|
379
|
+
PARAMETER_TYPES.includes(value.type));
|
|
380
|
+
}
|
|
381
|
+
function isStringArray(value) {
|
|
382
|
+
return Array.isArray(value) && value.every((item) => typeof item === 'string');
|
|
383
|
+
}
|
|
384
|
+
function isStringArrayValue(value) {
|
|
385
|
+
return Array.isArray(value) && value.every((item) => typeof item === 'string');
|
|
386
|
+
}
|
|
387
|
+
function isRecord(value) {
|
|
388
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
389
|
+
}
|
|
390
|
+
function isTimeoutMarker(value) {
|
|
391
|
+
return (value instanceof Error &&
|
|
392
|
+
value.kind ===
|
|
393
|
+
'FORM_DATA_SOURCE_TIMEOUT');
|
|
394
|
+
}
|
|
395
|
+
function isPositiveInteger(value) {
|
|
396
|
+
return typeof value === 'number' && Number.isInteger(value) && value > 0;
|
|
397
|
+
}
|
|
398
|
+
function isNonNegativeInteger(value) {
|
|
399
|
+
return typeof value === 'number' && Number.isInteger(value) && value >= 0;
|
|
400
|
+
}
|
|
401
|
+
//# sourceMappingURL=form-data-source-value-resolver.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-data-source-value-resolver.service.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/form-data-source/form-data-source-value-resolver.service.ts"],"names":[],"mappings":";;;;;AAAA,6CAAyC;AACzC,2CAA4D;AAC5D,uDASsC;AACtC,uEAGmC;AACnC,qEAWkC;AAWlC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAClC,MAAM,eAAe,GAAwC;IAC3D,cAAc;IACd,UAAU;IACV,OAAO;IACP,QAAQ;CACT,CAAC;AACF,MAAM,eAAe,GAA8C;IACjE,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,cAAc;CACf,CAAC;AAGK,IAAM,kCAAkC,0CAAxC,MAAM,kCAAkC;IAK7C,YAEE,QAAoD;QAAnC,aAAQ,GAAR,QAAQ,CAA2B;QAJrC,WAAM,GAAG,IAAI,eAAM,CAAC,oCAAkC,CAAC,IAAI,CAAC,CAAC;IAK3E,CAAC;IAEJ,KAAK,CAAC,8BAA8B,CAClC,KAA+C;QAE/C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAkE,EAAE;YACtG,IAAI,CAAC,IAAA,sCAA+B,EAAC,KAAK,CAAC,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE7E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnE,MAAM,cAAc,GAAG,gBAAgB,CACrC,KAAK,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EACxC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAC/B,CAAC;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAC9B,KAAK,CAAC,UAAU,CAAC,GAAG,EACpB,KAAK,CAAC,UAAU,CAAC,OAAO,CACzB,CAAC;YAEF,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,IACE,CAAC,KAAK,CAAC,aAAa;oBACpB,gBAAgB;oBAChB,cAAc;oBACd,gBAAgB,CAAC,aAAa,KAAK,KAAK,CAAC,UAAU,CAAC,GAAG;oBACvD,gBAAgB,CAAC,iBAAiB,KAAK,KAAK,CAAC,UAAU,CAAC,OAAO,EAC/D,CAAC;oBACD,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC5C,CAAC;gBAED,MAAM,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAChE,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CACrC,KAAK,EACL,MAAM,CAAC,UAAU,EACjB,KAAK,CAAC,QAAQ,CACf,CAAC;YAEF,IAAI,QAAQ,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,wBAAwB,CAC1D,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAAG,YAAY,CAC9B,MAAM,CAAC,UAAU,EACjB,QAAQ,CAAC,MAAM,CAChB,CAAC;YACF,MAAM,gBAAgB,GACpB,CAAC,KAAK,CAAC,aAAa;gBACpB,MAAM,CAAC,UAAU,CAAC,kBAAkB;oBAClC,+BAA+B;gBACjC,gBAAgB,EAAE,aAAa,KAAK,MAAM,CAAC,UAAU,CAAC,GAAG;gBACzD,gBAAgB,CAAC,iBAAiB,KAAK,MAAM,CAAC,UAAU,CAAC,OAAO;gBAChE,gBAAgB,CAAC,WAAW,KAAK,WAAW;gBAC5C,cAAc,CAAC;YAEjB,IAAI,gBAAgB,IAAI,gBAAgB,EAAE,CAAC;gBACzC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAC5C,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC;gBACjD,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,KAAK;gBACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,MAAM;aACP,CAAC,CAAC;YACH,MAAM,QAAQ,GAAgC;gBAC5C,WAAW;gBACX,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG;gBACpC,iBAAiB,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO;gBAC5C,OAAO;gBACP,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACtC,CAAC;YAEF,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,MAAM,CAAC,WAAW,CACvB,OAAO,CAAC,MAAM,CACZ,CAAC,KAAK,EAA2D,EAAE,CACjE,KAAK,KAAK,IAAI,CACjB,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC3B,KAAyC;QAEzC,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,uBAAuB,CACpC,KAAK,CAAC,MAAM,EACZ,MAAM,CAAC,UAAU,CAAC,kBAAkB,CACrC,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CACrC,KAAK,EACL,MAAM,CAAC,UAAU,EACjB,KAAK,CAAC,QAAQ,CACf,CAAC;QAEF,IAAI,QAAQ,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,wBAAwB,CAC1D,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CACpC,MAAM,EACN,CAAC,MAAM,EAAuC,EAAE,CAC9C,MAAM,CAAC,OAAO,CAAC;YACb,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,QAAQ,EAAE,QAAQ,CAAC,MAAM;YACzB,MAAM;YACN,MAAM;SACP,CAAC,CACL,CAAC;QACF,MAAM,OAAO,GAAG,qBAAqB,CACnC,MAAM,EACN,MAAM,EACN,MAAM,CAAC,UAAU,CAAC,kBAAkB,CACrC,CAAC;QACF,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAsC,EAAE,CAAC;YAC1D,MAAM,CAAC,KAAK;YACZ,MAAM;SACP,CAAC,CACH,CAAC;QAEF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAoB,CAAC,CAAC;IAC5E,CAAC;IAEO,sBAAsB,CAC5B,KAAgC;QAEhC,IAAI,CAAC,IAAA,sCAA+B,EAAC,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,iBAAiB,CACnD,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,iBAAiB,CACvB,SAA4D;QAE5D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QAEnE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEzC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,4BAA4B,CAClC,GAAW;QAEX,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ;aACzB,IAAI,EAAE;aACN,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;YAClB,MAAM,eAAe,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/D,MAAM,UAAU,GACd,eAAe,IAAI,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC;gBACrD,CAAC,CAAC,eAAe,CAAC,UAAU;gBAC5B,CAAC,CAAC,IAAI,CAAC;YAEX,OAAO,UAAU,EAAE,GAAG,KAAK,GAAG,CAAC;QACjC,CAAC,CAAC,CAAC;QAEL,OAAO,IAAI,oDAA0B,CACnC,MAAM;YACJ,CAAC,CAAC,0DAAgC,CAAC,2BAA2B;YAC9D,CAAC,CAAC,0DAAgC,CAAC,mBAAmB,CACzD,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,UAAuC;QAC9D,MAAM,KAAK,GACT,OAAO,UAAU,CAAC,GAAG,KAAK,QAAQ;YAClC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAChC,OAAO,UAAU,CAAC,KAAK,KAAK,QAAQ;YACpC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAClC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC;YACrC,iBAAiB,CAAC,UAAU,CAAC,kBAAkB,CAAC;YAChD,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC;YACtC,oBAAoB,CAAC,UAAU,CAAC,mBAAmB,CAAC;YACpD,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,kBAAkB;YACpD,CAAC,UAAU,CAAC,cAAc,KAAK,QAAQ;gBACrC,UAAU,CAAC,cAAc,KAAK,MAAM,CAAC;YACvC,CAAC,UAAU,CAAC,kBAAkB,KAAK,QAAQ;gBACzC,UAAU,CAAC,kBAAkB,KAAK,+BAA+B,CAAC;YACpE,OAAO,UAAU,CAAC,mBAAmB,KAAK,SAAS;YACnD,OAAO,UAAU,CAAC,cAAc,KAAK,SAAS;YAC9C,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;YACpC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC;YAC3C,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAC7C,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAClC;YACD,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE,CACxC,gBAAgB,CAAC,SAAS,CAAC,CAC5B;YACD,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;gBACnE,UAAU,CAAC,UAAU,CAAC,MAAM;YAC9B,IAAI,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,IAAI;gBACxC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAExC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,kBAAkB,CACpD,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,sBAAsB,CAC5B,KAAgC,EAChC,UAAuC;QAEvC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,mBAAmB,CACrD,CAAC;QACJ,CAAC;QAED,IACE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;YACrD,CAAC,CAAC,UAAU,CAAC,mBAAmB,IAAI,UAAU,CAAC,kBAAkB,GAAG,EAAE,CAAC,EACvE,CAAC;YACD,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,mBAAmB,CACrD,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,iBAAiB,CACvB,KAA0C,EAC1C,UAAuC,EACvC,QAA2C;QAE3C,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAiD,EAAE,CAAC;YACtF,SAAS,CAAC,GAAG;YACb,SAAS;SACV,CAAC,CACH,CAAC;QACF,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAEpD,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;YACpB,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAExD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,eAAe,CACjD,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GACb,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO;gBAC3B,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACpD,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAEzB,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;gBACrC,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAE3C,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC;QACnD,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,MAAM,iBAAiB,GAAG,UAAU,CAAC,UAAU;aAC5C,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC;aACzC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,sBAAsB,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;aAC5E,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAErC,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;YAC/D,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,wBAAwB,CAC1D,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACtD,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,MAAyB,EACzB,IAA8C;QAE9C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,IAAI,SAAoD,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBAChC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBACvB,IAAI,OAAO,CAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;oBACvC,SAAS,GAAG,UAAU,CAAC,GAAS,EAAE;wBAChC,UAAU,CAAC,KAAK,EAAE,CAAC;wBACnB,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,kBAAkB,CAAkB,CAAC;wBAC/D,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC;wBAC7D,MAAM,CAAC,OAAO,CAAC,CAAC;oBAClB,CAAC,EAAE,mBAAmB,CAAC,CAAC;gBAC1B,CAAC,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,IAAI,CAAC,SAAS,CAAC;gBACb,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG;gBACpC,iBAAiB,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO;gBAC5C,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAClC,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE,SAAS;aAClB,CAAC,CACH,CAAC;YAEF,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC;gBACjC,CAAC,CAAC,0DAAgC,CAAC,OAAO;gBAC1C,CAAC,CAAC,0DAAgC,CAAC,gBAAgB,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,IAAI,CAAC,SAAS,CAAC;gBACb,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG;gBACpC,iBAAiB,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO;gBAC5C,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAClC,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE,OAAO;aAChB,CAAC,CACH,CAAC;YACF,MAAM,IAAI,oDAA0B,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;gBAAS,CAAC;YACT,IAAI,SAAS,EAAE,CAAC;gBACd,YAAY,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAA;AAxWY,gFAAkC;6CAAlC,kCAAkC;IAD9C,IAAA,mBAAU,GAAE;IAOR,mBAAA,IAAA,eAAM,EAAC,sDAA6B,CAAC,CAAA;;GAN7B,kCAAkC,CAwW9C;AAED,SAAS,sBAAsB,CAC7B,KAA0C,EAC1C,KAAc;IAEd,MAAM,IAAI,GAAG,IAAA,iCAA0B,EAAC,KAAK,CAAC,CAAC;IAE/C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;QACnD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,8EAA8E;IAC9E,uEAAuE;IACvE,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9D,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,EACpC,CAAC;YACD,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,eAAe,CACjD,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,eAAe,CACjD,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,uBAAuB,CAC9B,MAAyB,EACzB,kBAA0B;IAE1B,IACE,MAAM,CAAC,MAAM,KAAK,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EACtC,CAAC;QACD,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,eAAe,CACjD,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACvC,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,qBAAqB,CACvD,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAAe,EACf,MAAyB,EACzB,kBAA0B;IAE1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACjE,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,uBAAuB,CACzD,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAExC,oEAAoE;IACpE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,uBAAuB,CACzD,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,wEAAwE;IACxE,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,kBAAkB,CACpD,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,uBAAuB,CACzD,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAEhD,IACE,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACtE,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EACtE,CAAC;QACD,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,uBAAuB,CACzD,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB,CAC3B,SAAqC,EACrC,KAAqB;IAErB,MAAM,KAAK,GACT,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,SAAS,CAAC;QAC5D,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ;YAC1B,OAAO,KAAK,KAAK,QAAQ;YACzB,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;QAC1D,CAAC,SAAS,CAAC,IAAI,KAAK,cAAc,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3D,KAAK,KAAK,IAAI,CAAC;IAEjB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,eAAe,CACjD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IACE,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,SAAS;QAC1B,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrD,OAAO,KAAK,KAAK,QAAQ;QACzB,kBAAkB,CAAC,KAAK,CAAC,EACzB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,oDAA0B,CAClC,0DAAgC,CAAC,eAAe,CACjD,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAiC;IAC/D,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CACnB,UAAuC,EACvC,MAAgD;IAEhD,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC;QAC7D,SAAS,CAAC,GAAG;QACb,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI;KAC9B,CAAC,CAAC;IAEH,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC;SACxB,MAAM,CACL,IAAI,CAAC,SAAS,CAAC;QACb,aAAa,EAAE,UAAU,CAAC,GAAG;QAC7B,iBAAiB,EAAE,UAAU,CAAC,OAAO;QACrC,MAAM,EAAE,aAAa;KACtB,CAAC,CACH;SACA,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa,EAAE,KAAc;IACrD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAC/B,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAChC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;QAC7B,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAC3B,OAAO,KAAK,CAAC,QAAQ,KAAK,SAAS;QACnC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAsC,CAAC,CACvE,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAqB;IAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,CACL,KAAK,YAAY,KAAK;QACrB,KAA6C,CAAC,IAAI;YACjD,0BAA0B,CAC7B,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { BadRequestException, ForbiddenException } from '@nestjs/common';
|
|
2
|
+
export declare const BPM_FORM_DATA_SOURCE_ERROR_CODES: {
|
|
3
|
+
readonly DATA_SOURCE_MISSING: "FORM_DATA_SOURCE_MISSING";
|
|
4
|
+
readonly DATA_SOURCE_VERSION_MISSING: "FORM_DATA_SOURCE_VERSION_MISSING";
|
|
5
|
+
readonly FIELD_NOT_DYNAMIC: "FORM_DATA_SOURCE_FIELD_NOT_DYNAMIC";
|
|
6
|
+
readonly INVALID_BINDING: "FORM_DATA_SOURCE_INVALID_BINDING";
|
|
7
|
+
readonly INVALID_DESCRIPTOR: "FORM_DATA_SOURCE_INVALID_DESCRIPTOR";
|
|
8
|
+
readonly INVALID_PROVIDER_RESULT: "FORM_DATA_SOURCE_INVALID_PROVIDER_RESULT";
|
|
9
|
+
readonly PARAMETER_LIMIT_EXCEEDED: "FORM_DATA_SOURCE_PARAMETER_LIMIT_EXCEEDED";
|
|
10
|
+
readonly PROVIDER_FAILURE: "FORM_DATA_SOURCE_PROVIDER_FAILURE";
|
|
11
|
+
readonly RESULT_LIMIT_EXCEEDED: "FORM_DATA_SOURCE_RESULT_LIMIT_EXCEEDED";
|
|
12
|
+
readonly SEARCH_NOT_SUPPORTED: "FORM_DATA_SOURCE_SEARCH_NOT_SUPPORTED";
|
|
13
|
+
readonly SEARCH_TOO_SHORT: "FORM_DATA_SOURCE_SEARCH_TOO_SHORT";
|
|
14
|
+
readonly TIMEOUT: "FORM_DATA_SOURCE_TIMEOUT";
|
|
15
|
+
readonly UNSUPPORTED_CONTROL: "FORM_DATA_SOURCE_UNSUPPORTED_CONTROL";
|
|
16
|
+
/**
|
|
17
|
+
* The submitted value is no longer selectable under the current bindings and
|
|
18
|
+
* authorization context. This is a user-facing validation failure, not a host
|
|
19
|
+
* provider contract breach: keep it distinct from `INVALID_PROVIDER_RESULT`
|
|
20
|
+
* so the renderer can show `INVALID` instead of `UNAVAILABLE`.
|
|
21
|
+
*/
|
|
22
|
+
readonly VALUE_NOT_RESOLVED: "FORM_DATA_SOURCE_VALUE_NOT_RESOLVED";
|
|
23
|
+
readonly WAITING_FOR_DEPENDENCIES: "FORM_DATA_SOURCE_WAITING_FOR_DEPENDENCIES";
|
|
24
|
+
readonly RUNTIME_CONTEXT_FORBIDDEN: "FORM_DATA_SOURCE_RUNTIME_CONTEXT_FORBIDDEN";
|
|
25
|
+
};
|
|
26
|
+
export type BPMFormDataSourceErrorCode = (typeof BPM_FORM_DATA_SOURCE_ERROR_CODES)[keyof typeof BPM_FORM_DATA_SOURCE_ERROR_CODES];
|
|
27
|
+
export declare class BPMFormDataSourceException extends BadRequestException {
|
|
28
|
+
readonly code: BPMFormDataSourceErrorCode;
|
|
29
|
+
constructor(code: BPMFormDataSourceErrorCode);
|
|
30
|
+
}
|
|
31
|
+
export declare class BPMFormDataSourceForbiddenException extends ForbiddenException {
|
|
32
|
+
readonly code: BPMFormDataSourceErrorCode;
|
|
33
|
+
constructor(code: typeof BPM_FORM_DATA_SOURCE_ERROR_CODES.RUNTIME_CONTEXT_FORBIDDEN);
|
|
34
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BPMFormDataSourceForbiddenException = exports.BPMFormDataSourceException = exports.BPM_FORM_DATA_SOURCE_ERROR_CODES = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
exports.BPM_FORM_DATA_SOURCE_ERROR_CODES = {
|
|
6
|
+
DATA_SOURCE_MISSING: 'FORM_DATA_SOURCE_MISSING',
|
|
7
|
+
DATA_SOURCE_VERSION_MISSING: 'FORM_DATA_SOURCE_VERSION_MISSING',
|
|
8
|
+
FIELD_NOT_DYNAMIC: 'FORM_DATA_SOURCE_FIELD_NOT_DYNAMIC',
|
|
9
|
+
INVALID_BINDING: 'FORM_DATA_SOURCE_INVALID_BINDING',
|
|
10
|
+
INVALID_DESCRIPTOR: 'FORM_DATA_SOURCE_INVALID_DESCRIPTOR',
|
|
11
|
+
INVALID_PROVIDER_RESULT: 'FORM_DATA_SOURCE_INVALID_PROVIDER_RESULT',
|
|
12
|
+
PARAMETER_LIMIT_EXCEEDED: 'FORM_DATA_SOURCE_PARAMETER_LIMIT_EXCEEDED',
|
|
13
|
+
PROVIDER_FAILURE: 'FORM_DATA_SOURCE_PROVIDER_FAILURE',
|
|
14
|
+
RESULT_LIMIT_EXCEEDED: 'FORM_DATA_SOURCE_RESULT_LIMIT_EXCEEDED',
|
|
15
|
+
SEARCH_NOT_SUPPORTED: 'FORM_DATA_SOURCE_SEARCH_NOT_SUPPORTED',
|
|
16
|
+
SEARCH_TOO_SHORT: 'FORM_DATA_SOURCE_SEARCH_TOO_SHORT',
|
|
17
|
+
TIMEOUT: 'FORM_DATA_SOURCE_TIMEOUT',
|
|
18
|
+
UNSUPPORTED_CONTROL: 'FORM_DATA_SOURCE_UNSUPPORTED_CONTROL',
|
|
19
|
+
/**
|
|
20
|
+
* The submitted value is no longer selectable under the current bindings and
|
|
21
|
+
* authorization context. This is a user-facing validation failure, not a host
|
|
22
|
+
* provider contract breach: keep it distinct from `INVALID_PROVIDER_RESULT`
|
|
23
|
+
* so the renderer can show `INVALID` instead of `UNAVAILABLE`.
|
|
24
|
+
*/
|
|
25
|
+
VALUE_NOT_RESOLVED: 'FORM_DATA_SOURCE_VALUE_NOT_RESOLVED',
|
|
26
|
+
WAITING_FOR_DEPENDENCIES: 'FORM_DATA_SOURCE_WAITING_FOR_DEPENDENCIES',
|
|
27
|
+
RUNTIME_CONTEXT_FORBIDDEN: 'FORM_DATA_SOURCE_RUNTIME_CONTEXT_FORBIDDEN',
|
|
28
|
+
};
|
|
29
|
+
class BPMFormDataSourceException extends common_1.BadRequestException {
|
|
30
|
+
constructor(code) {
|
|
31
|
+
super({ code, message: code });
|
|
32
|
+
this.code = code;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.BPMFormDataSourceException = BPMFormDataSourceException;
|
|
36
|
+
class BPMFormDataSourceForbiddenException extends common_1.ForbiddenException {
|
|
37
|
+
constructor(code) {
|
|
38
|
+
super({ code, message: code });
|
|
39
|
+
this.code = code;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.BPMFormDataSourceForbiddenException = BPMFormDataSourceForbiddenException;
|
|
43
|
+
//# sourceMappingURL=form-data-source.errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-data-source.errors.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/form-data-source/form-data-source.errors.ts"],"names":[],"mappings":";;;AAAA,2CAAyE;AAE5D,QAAA,gCAAgC,GAAG;IAC9C,mBAAmB,EAAE,0BAA0B;IAC/C,2BAA2B,EAAE,kCAAkC;IAC/D,iBAAiB,EAAE,oCAAoC;IACvD,eAAe,EAAE,kCAAkC;IACnD,kBAAkB,EAAE,qCAAqC;IACzD,uBAAuB,EAAE,0CAA0C;IACnE,wBAAwB,EAAE,2CAA2C;IACrE,gBAAgB,EAAE,mCAAmC;IACrD,qBAAqB,EAAE,wCAAwC;IAC/D,oBAAoB,EAAE,uCAAuC;IAC7D,gBAAgB,EAAE,mCAAmC;IACrD,OAAO,EAAE,0BAA0B;IACnC,mBAAmB,EAAE,sCAAsC;IAC3D;;;;;OAKG;IACH,kBAAkB,EAAE,qCAAqC;IACzD,wBAAwB,EAAE,2CAA2C;IACrE,yBAAyB,EAAE,4CAA4C;CAC/D,CAAC;AAKX,MAAa,0BAA2B,SAAQ,4BAAmB;IAGjE,YAAY,IAAgC;QAC1C,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAPD,gEAOC;AAED,MAAa,mCAAoC,SAAQ,2BAAkB;IAGzE,YACE,IAAuE;QAEvE,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AATD,kFASC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DynamicModule, Provider } from '@nestjs/common';
|
|
2
|
+
import { ModuleMetadata } from '@nestjs/common/interfaces';
|
|
3
|
+
import { BPMFormDataSourceRegistry } from './form-data-source.types';
|
|
4
|
+
export interface FormDataSourceModuleOptions extends Pick<ModuleMetadata, 'imports'> {
|
|
5
|
+
readonly registryProvider?: Provider<BPMFormDataSourceRegistry>;
|
|
6
|
+
}
|
|
7
|
+
export declare class FormDataSourceModule {
|
|
8
|
+
static forRoot(options?: FormDataSourceModuleOptions): DynamicModule;
|
|
9
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var FormDataSourceModule_1;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.FormDataSourceModule = void 0;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const common_1 = require("@nestjs/common");
|
|
7
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
8
|
+
const workflow_engine_module_1 = require("../workflow-engine/workflow-engine.module");
|
|
9
|
+
const approval_template_version_entity_1 = require("../template/approval-template-version.entity");
|
|
10
|
+
const form_definition_version_entity_1 = require("../form/form-definition-version.entity");
|
|
11
|
+
const form_data_source_queries_1 = require("./form-data-source.queries");
|
|
12
|
+
const form_data_source_service_1 = require("./form-data-source.service");
|
|
13
|
+
const form_data_source_value_resolver_service_1 = require("./form-data-source-value-resolver.service");
|
|
14
|
+
const form_data_source_types_1 = require("./form-data-source.types");
|
|
15
|
+
let FormDataSourceModule = FormDataSourceModule_1 = class FormDataSourceModule {
|
|
16
|
+
static forRoot(options = {}) {
|
|
17
|
+
const registryProvider = options.registryProvider ?? {
|
|
18
|
+
provide: form_data_source_types_1.BPM_FORM_DATA_SOURCE_REGISTRY,
|
|
19
|
+
useClass: form_data_source_types_1.EmptyBPMFormDataSourceRegistry,
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
exports: [
|
|
23
|
+
form_data_source_types_1.BPM_FORM_DATA_SOURCE_REGISTRY,
|
|
24
|
+
form_data_source_types_1.BPM_FORM_DATA_SOURCE_VALUE_RESOLVER,
|
|
25
|
+
form_data_source_service_1.FormDataSourceService,
|
|
26
|
+
],
|
|
27
|
+
global: true,
|
|
28
|
+
imports: [
|
|
29
|
+
...(options.imports ?? []),
|
|
30
|
+
workflow_engine_module_1.WorkflowEngineModule,
|
|
31
|
+
typeorm_1.TypeOrmModule.forFeature([
|
|
32
|
+
approval_template_version_entity_1.ApprovalTemplateVersionEntity,
|
|
33
|
+
form_definition_version_entity_1.FormDefinitionVersionEntity,
|
|
34
|
+
]),
|
|
35
|
+
],
|
|
36
|
+
module: FormDataSourceModule_1,
|
|
37
|
+
providers: [
|
|
38
|
+
registryProvider,
|
|
39
|
+
form_data_source_queries_1.FormDataSourceQueries,
|
|
40
|
+
form_data_source_service_1.FormDataSourceService,
|
|
41
|
+
form_data_source_value_resolver_service_1.FormDataSourceValueResolverService,
|
|
42
|
+
{
|
|
43
|
+
provide: form_data_source_types_1.BPM_FORM_DATA_SOURCE_VALUE_RESOLVER,
|
|
44
|
+
useExisting: form_data_source_value_resolver_service_1.FormDataSourceValueResolverService,
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
exports.FormDataSourceModule = FormDataSourceModule;
|
|
51
|
+
exports.FormDataSourceModule = FormDataSourceModule = FormDataSourceModule_1 = tslib_1.__decorate([
|
|
52
|
+
(0, common_1.Global)(),
|
|
53
|
+
(0, common_1.Module)({})
|
|
54
|
+
], FormDataSourceModule);
|
|
55
|
+
//# sourceMappingURL=form-data-source.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-data-source.module.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/form-data-source/form-data-source.module.ts"],"names":[],"mappings":";;;;;AAAA,2CAAyE;AAEzE,6CAAgD;AAChD,sFAAiF;AACjF,mGAA6F;AAC7F,2FAAqF;AACrF,yEAAmE;AACnE,yEAAmE;AACnE,uGAA+F;AAC/F,qEAKkC;AAQ3B,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAC/B,MAAM,CAAC,OAAO,CAAC,UAAuC,EAAE;QACtD,MAAM,gBAAgB,GACpB,OAAO,CAAC,gBAAgB,IAAI;YAC1B,OAAO,EAAE,sDAA6B;YACtC,QAAQ,EAAE,uDAA8B;SACzC,CAAC;QAEJ,OAAO;YACL,OAAO,EAAE;gBACP,sDAA6B;gBAC7B,4DAAmC;gBACnC,gDAAqB;aACtB;YACD,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE;gBACP,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC1B,6CAAoB;gBACpB,uBAAa,CAAC,UAAU,CAAC;oBACvB,gEAA6B;oBAC7B,4DAA2B;iBAC5B,CAAC;aACH;YACD,MAAM,EAAE,sBAAoB;YAC5B,SAAS,EAAE;gBACT,gBAAgB;gBAChB,gDAAqB;gBACrB,gDAAqB;gBACrB,4EAAkC;gBAClC;oBACE,OAAO,EAAE,4DAAmC;oBAC5C,WAAW,EAAE,4EAAkC;iBAChD;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AApCY,oDAAoB;+BAApB,oBAAoB;IAFhC,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,oBAAoB,CAoChC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { BPMAuthContext } from '../bpm-auth';
|
|
2
|
+
import { FormFieldOption } from '@rytass/bpm-core-shared/form';
|
|
3
|
+
import { FormDataSourceService } from './form-data-source.service';
|
|
4
|
+
export declare class FormDataSourceParameterObject {
|
|
5
|
+
key: string;
|
|
6
|
+
label: string | null;
|
|
7
|
+
required: boolean;
|
|
8
|
+
type: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class FormDataSourceDescriptorObject {
|
|
11
|
+
key: string;
|
|
12
|
+
label: string;
|
|
13
|
+
description: string | null;
|
|
14
|
+
version: number;
|
|
15
|
+
maximumResultCount: number;
|
|
16
|
+
minimumSearchLength: number;
|
|
17
|
+
pageSize: number;
|
|
18
|
+
paginationMode: string;
|
|
19
|
+
parameters: readonly FormDataSourceParameterObject[];
|
|
20
|
+
revalidationPolicy: string;
|
|
21
|
+
returnsCompleteList: boolean;
|
|
22
|
+
supportedControls: readonly string[];
|
|
23
|
+
supportsSearch: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare class FormFieldOptionObject implements FormFieldOption {
|
|
26
|
+
label: string;
|
|
27
|
+
value: string;
|
|
28
|
+
}
|
|
29
|
+
export declare class FormDataSourceOptionsResultObject {
|
|
30
|
+
dataSourceKey: string;
|
|
31
|
+
dataSourceVersion: number;
|
|
32
|
+
nextCursor: string | null;
|
|
33
|
+
options: readonly FormFieldOptionObject[];
|
|
34
|
+
}
|
|
35
|
+
export declare class PreviewFormFieldOptionsInput {
|
|
36
|
+
schemaJson: string;
|
|
37
|
+
uiSchemaJson: string | null;
|
|
38
|
+
fieldKey: string;
|
|
39
|
+
formDataJson: string | null;
|
|
40
|
+
searchText: string | null;
|
|
41
|
+
cursor: string | null;
|
|
42
|
+
}
|
|
43
|
+
export declare class RuntimeFormFieldOptionsInput {
|
|
44
|
+
templateId: string | null;
|
|
45
|
+
instanceId: string | null;
|
|
46
|
+
fieldKey: string;
|
|
47
|
+
formDataJson: string | null;
|
|
48
|
+
searchText: string | null;
|
|
49
|
+
cursor: string | null;
|
|
50
|
+
}
|
|
51
|
+
export declare class FormDataSourceQueries {
|
|
52
|
+
private readonly formDataSourceService;
|
|
53
|
+
constructor(formDataSourceService: FormDataSourceService);
|
|
54
|
+
formDataSources(): readonly FormDataSourceDescriptorObject[];
|
|
55
|
+
previewFormFieldOptions(input: PreviewFormFieldOptionsInput, authContext: BPMAuthContext): Promise<FormDataSourceOptionsResultObject>;
|
|
56
|
+
formFieldOptions(input: RuntimeFormFieldOptionsInput, authContext: BPMAuthContext): Promise<FormDataSourceOptionsResultObject>;
|
|
57
|
+
}
|