@aemforms/af-core 0.22.116 → 0.22.118
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/esm/afb-runtime.js +112 -25
- package/esm/types/src/Checkbox.d.ts +4 -4
- package/esm/types/src/DateField.d.ts +5 -0
- package/esm/types/src/Field.d.ts +12 -12
- package/esm/types/src/Form.d.ts +4 -4
- package/esm/types/src/rules/FunctionRuntime.d.ts +8 -0
- package/esm/types/src/types/Json.d.ts +4 -4
- package/lib/Checkbox.d.ts +4 -4
- package/lib/DateField.d.ts +5 -0
- package/lib/DateField.js +45 -3
- package/lib/Field.d.ts +12 -12
- package/lib/Form.d.ts +4 -4
- package/lib/rules/FunctionRuntime.d.ts +8 -0
- package/lib/rules/FunctionRuntime.js +70 -22
- package/lib/types/Json.d.ts +4 -4
- package/package.json +2 -2
package/esm/afb-runtime.js
CHANGED
|
@@ -2656,6 +2656,22 @@ const request = async (context, uri, httpVerb, payload, success, error, headers)
|
|
|
2656
2656
|
method: httpVerb
|
|
2657
2657
|
};
|
|
2658
2658
|
let inputPayload;
|
|
2659
|
+
let encryptOutput = {};
|
|
2660
|
+
try {
|
|
2661
|
+
if (payload instanceof Promise) {
|
|
2662
|
+
payload = await payload;
|
|
2663
|
+
}
|
|
2664
|
+
}
|
|
2665
|
+
catch (error) {
|
|
2666
|
+
console.error('Error resolving payload Promise:', error);
|
|
2667
|
+
throw error;
|
|
2668
|
+
}
|
|
2669
|
+
if (payload.body && payload.headers) {
|
|
2670
|
+
encryptOutput = { ...payload };
|
|
2671
|
+
headers = { ...payload.headers };
|
|
2672
|
+
payload = payload.body;
|
|
2673
|
+
inputPayload = payload;
|
|
2674
|
+
}
|
|
2659
2675
|
if (payload && payload instanceof FileObject && payload.data instanceof File) {
|
|
2660
2676
|
const formData = new FormData();
|
|
2661
2677
|
formData.append(payload.name, payload.data);
|
|
@@ -2664,7 +2680,7 @@ const request = async (context, uri, httpVerb, payload, success, error, headers)
|
|
|
2664
2680
|
else if (payload instanceof FormData) {
|
|
2665
2681
|
inputPayload = payload;
|
|
2666
2682
|
}
|
|
2667
|
-
else if (payload && typeof payload === 'object' && Object.keys(payload).length > 0) {
|
|
2683
|
+
else if (payload && (typeof payload === 'string' || (typeof payload === 'object' && Object.keys(payload).length > 0))) {
|
|
2668
2684
|
const headerNames = Object.keys(headers);
|
|
2669
2685
|
if (headerNames.length > 0) {
|
|
2670
2686
|
requestOptions.headers = {
|
|
@@ -2676,35 +2692,45 @@ const request = async (context, uri, httpVerb, payload, success, error, headers)
|
|
|
2676
2692
|
requestOptions.headers = { 'Content-Type': 'application/json' };
|
|
2677
2693
|
}
|
|
2678
2694
|
const contentType = requestOptions?.headers?.['Content-Type'] || 'application/json';
|
|
2679
|
-
if (
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2695
|
+
if (typeof payload === 'object') {
|
|
2696
|
+
if (contentType === 'application/json') {
|
|
2697
|
+
inputPayload = JSON.stringify(payload);
|
|
2698
|
+
}
|
|
2699
|
+
else if (contentType.indexOf('multipart/form-data') > -1) {
|
|
2700
|
+
inputPayload = multipartFormData(payload);
|
|
2701
|
+
}
|
|
2702
|
+
else if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {
|
|
2703
|
+
inputPayload = urlEncoded(payload);
|
|
2704
|
+
}
|
|
2684
2705
|
}
|
|
2685
|
-
|
|
2686
|
-
inputPayload =
|
|
2706
|
+
if (contentType === 'text/plain') {
|
|
2707
|
+
inputPayload = String(payload);
|
|
2687
2708
|
}
|
|
2688
2709
|
}
|
|
2689
|
-
const
|
|
2690
|
-
|
|
2710
|
+
const response = await request$1(endpoint, inputPayload, requestOptions);
|
|
2711
|
+
response.originalRequest = {
|
|
2712
|
+
url: endpoint,
|
|
2713
|
+
method: httpVerb,
|
|
2714
|
+
...encryptOutput
|
|
2715
|
+
};
|
|
2716
|
+
if (response?.status >= 200 && response?.status <= 299) {
|
|
2691
2717
|
const eName = getCustomEventName(success);
|
|
2692
2718
|
if (success === 'submitSuccess') {
|
|
2693
|
-
context.form.dispatch(new SubmitSuccess(
|
|
2719
|
+
context.form.dispatch(new SubmitSuccess(response, true));
|
|
2694
2720
|
}
|
|
2695
2721
|
else {
|
|
2696
|
-
context.form.dispatch(new CustomEvent(eName,
|
|
2722
|
+
context.form.dispatch(new CustomEvent(eName, response, true));
|
|
2697
2723
|
}
|
|
2698
2724
|
}
|
|
2699
2725
|
else {
|
|
2700
2726
|
context.form.logger.error('Error invoking a rest API');
|
|
2701
2727
|
const eName = getCustomEventName(error);
|
|
2702
2728
|
if (error === 'submitError') {
|
|
2703
|
-
context.form.dispatch(new SubmitError(
|
|
2704
|
-
context.form.dispatch(new SubmitFailure(
|
|
2729
|
+
context.form.dispatch(new SubmitError(response, true));
|
|
2730
|
+
context.form.dispatch(new SubmitFailure(response, true));
|
|
2705
2731
|
}
|
|
2706
2732
|
else {
|
|
2707
|
-
context.form.dispatch(new CustomEvent(eName,
|
|
2733
|
+
context.form.dispatch(new CustomEvent(eName, response, true));
|
|
2708
2734
|
}
|
|
2709
2735
|
}
|
|
2710
2736
|
};
|
|
@@ -3061,17 +3087,29 @@ class FunctionRuntimeImpl {
|
|
|
3061
3087
|
_func: (args, data, interpreter) => {
|
|
3062
3088
|
const uri = toString(args[0]);
|
|
3063
3089
|
const httpVerb = toString(args[1]);
|
|
3064
|
-
|
|
3065
|
-
let success
|
|
3066
|
-
|
|
3067
|
-
|
|
3090
|
+
let payload;
|
|
3091
|
+
let success;
|
|
3092
|
+
let error;
|
|
3093
|
+
let headers = {};
|
|
3094
|
+
if (args[2] && typeof args[2] === 'object' && !args[2].then && ('data' in args[2] || 'headers' in args[2])) {
|
|
3095
|
+
const payloadObj = valueOf(args[2]);
|
|
3096
|
+
payload = payloadObj.data;
|
|
3097
|
+
headers = payloadObj.headers || {};
|
|
3068
3098
|
success = valueOf(args[3]);
|
|
3069
3099
|
error = valueOf(args[4]);
|
|
3070
3100
|
}
|
|
3071
3101
|
else {
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3102
|
+
payload = valueOf(args[2]);
|
|
3103
|
+
if (typeof (args[3]) === 'string') {
|
|
3104
|
+
interpreter.globals.form.logger.warn('This usage of request is deprecated. Please see the documentation and update');
|
|
3105
|
+
success = valueOf(args[3]);
|
|
3106
|
+
error = valueOf(args[4]);
|
|
3107
|
+
}
|
|
3108
|
+
else {
|
|
3109
|
+
headers = valueOf(args[3]);
|
|
3110
|
+
success = valueOf(args[4]);
|
|
3111
|
+
error = valueOf(args[5]);
|
|
3112
|
+
}
|
|
3075
3113
|
}
|
|
3076
3114
|
return request(interpreter.globals, uri, httpVerb, payload, success, error, headers);
|
|
3077
3115
|
},
|
|
@@ -3168,6 +3206,20 @@ class FunctionRuntimeImpl {
|
|
|
3168
3206
|
return {};
|
|
3169
3207
|
},
|
|
3170
3208
|
_signature: []
|
|
3209
|
+
},
|
|
3210
|
+
encrypt: {
|
|
3211
|
+
_func: async (args, data, interpreter) => {
|
|
3212
|
+
const payload = valueOf(args[0]);
|
|
3213
|
+
return payload;
|
|
3214
|
+
},
|
|
3215
|
+
_signature: []
|
|
3216
|
+
},
|
|
3217
|
+
decrypt: {
|
|
3218
|
+
_func: async (args, data, interpreter) => {
|
|
3219
|
+
const encData = valueOf(args[0]);
|
|
3220
|
+
return encData;
|
|
3221
|
+
},
|
|
3222
|
+
_signature: []
|
|
3171
3223
|
}
|
|
3172
3224
|
};
|
|
3173
3225
|
return { ...defaultFunctions, ...FunctionRuntimeImpl.getInstance().customFunctions };
|
|
@@ -4712,14 +4764,21 @@ class DateField extends Field {
|
|
|
4712
4764
|
this._jsonModel.placeholder = parseDateSkeleton(this._jsonModel.editFormat, this.locale);
|
|
4713
4765
|
}
|
|
4714
4766
|
}
|
|
4767
|
+
#convertNumberToDate(value) {
|
|
4768
|
+
const coercedValue = numberToDatetime(value);
|
|
4769
|
+
if (!isNaN(coercedValue)) {
|
|
4770
|
+
return formatDate(coercedValue, this.locale, this._dataFormat);
|
|
4771
|
+
}
|
|
4772
|
+
return null;
|
|
4773
|
+
}
|
|
4715
4774
|
get value() {
|
|
4716
4775
|
return super.value;
|
|
4717
4776
|
}
|
|
4718
4777
|
set value(value) {
|
|
4719
4778
|
if (typeof value === 'number') {
|
|
4720
|
-
const coercedValue =
|
|
4721
|
-
if (
|
|
4722
|
-
super.value =
|
|
4779
|
+
const coercedValue = this.#convertNumberToDate(value);
|
|
4780
|
+
if (coercedValue) {
|
|
4781
|
+
super.value = coercedValue;
|
|
4723
4782
|
}
|
|
4724
4783
|
}
|
|
4725
4784
|
else {
|
|
@@ -4737,6 +4796,34 @@ class DateField extends Field {
|
|
|
4737
4796
|
}
|
|
4738
4797
|
}
|
|
4739
4798
|
}
|
|
4799
|
+
get minimum() {
|
|
4800
|
+
return super.minimum;
|
|
4801
|
+
}
|
|
4802
|
+
set minimum(value) {
|
|
4803
|
+
if (typeof value === 'number') {
|
|
4804
|
+
const coercedValue = this.#convertNumberToDate(value);
|
|
4805
|
+
if (coercedValue) {
|
|
4806
|
+
super.minimum = coercedValue;
|
|
4807
|
+
}
|
|
4808
|
+
}
|
|
4809
|
+
else if (typeof value === 'string') {
|
|
4810
|
+
super.minimum = value;
|
|
4811
|
+
}
|
|
4812
|
+
}
|
|
4813
|
+
get maximum() {
|
|
4814
|
+
return super.maximum;
|
|
4815
|
+
}
|
|
4816
|
+
set maximum(value) {
|
|
4817
|
+
if (typeof value === 'number') {
|
|
4818
|
+
const coercedValue = this.#convertNumberToDate(value);
|
|
4819
|
+
if (coercedValue) {
|
|
4820
|
+
super.maximum = coercedValue;
|
|
4821
|
+
}
|
|
4822
|
+
}
|
|
4823
|
+
else if (typeof value === 'string') {
|
|
4824
|
+
super.maximum = value;
|
|
4825
|
+
}
|
|
4826
|
+
}
|
|
4740
4827
|
}
|
|
4741
4828
|
|
|
4742
4829
|
class EmailInput extends Field {
|
|
@@ -99,17 +99,17 @@ declare class Checkbox extends Field {
|
|
|
99
99
|
enum?: any[] | undefined;
|
|
100
100
|
accept?: string[] | undefined;
|
|
101
101
|
enforceEnum?: boolean | undefined;
|
|
102
|
-
exclusiveMinimum?: number | undefined;
|
|
103
|
-
exclusiveMaximum?: number | undefined;
|
|
102
|
+
exclusiveMinimum?: string | number | undefined;
|
|
103
|
+
exclusiveMaximum?: string | number | undefined;
|
|
104
104
|
format?: string | undefined;
|
|
105
105
|
maxFileSize?: string | number | undefined;
|
|
106
106
|
maxLength?: number | undefined;
|
|
107
|
-
maximum?: number | undefined;
|
|
107
|
+
maximum?: string | number | undefined;
|
|
108
108
|
maxItems?: number | undefined;
|
|
109
109
|
minOccur?: number | undefined;
|
|
110
110
|
maxOccur?: number | undefined;
|
|
111
111
|
minLength?: number | undefined;
|
|
112
|
-
minimum?: number | undefined;
|
|
112
|
+
minimum?: string | number | undefined;
|
|
113
113
|
minItems?: number | undefined;
|
|
114
114
|
pattern?: string | undefined;
|
|
115
115
|
required?: boolean | undefined;
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import Field from './Field';
|
|
2
2
|
declare class DateField extends Field {
|
|
3
|
+
#private;
|
|
3
4
|
private locale?;
|
|
4
5
|
private _dataFormat;
|
|
5
6
|
protected _applyDefaults(): void;
|
|
6
7
|
get value(): any;
|
|
7
8
|
set value(value: any);
|
|
9
|
+
get minimum(): string | number | undefined;
|
|
10
|
+
set minimum(value: string | number | undefined);
|
|
11
|
+
get maximum(): string | number | undefined;
|
|
12
|
+
set maximum(value: string | number | undefined);
|
|
8
13
|
}
|
|
9
14
|
export default DateField;
|
package/esm/types/src/Field.d.ts
CHANGED
|
@@ -44,10 +44,10 @@ declare class Field extends Scriptable<FieldJson> implements FieldModel {
|
|
|
44
44
|
set enumNames(e: string[] | undefined);
|
|
45
45
|
get required(): boolean;
|
|
46
46
|
set required(r: boolean);
|
|
47
|
-
get maximum(): number | undefined;
|
|
48
|
-
set maximum(m: number | undefined);
|
|
49
|
-
get minimum(): number | undefined;
|
|
50
|
-
set minimum(m: number | undefined);
|
|
47
|
+
get maximum(): string | number | undefined;
|
|
48
|
+
set maximum(m: string | number | undefined);
|
|
49
|
+
get minimum(): string | number | undefined;
|
|
50
|
+
set minimum(m: string | number | undefined);
|
|
51
51
|
private withCategory;
|
|
52
52
|
get editValue(): any;
|
|
53
53
|
get displayValue(): any;
|
|
@@ -142,10 +142,10 @@ declare class Field extends Scriptable<FieldJson> implements FieldModel {
|
|
|
142
142
|
get minLength(): number | undefined;
|
|
143
143
|
get pattern(): string | undefined;
|
|
144
144
|
get step(): number | undefined;
|
|
145
|
-
get exclusiveMinimum(): number | undefined;
|
|
146
|
-
set exclusiveMinimum(eM: number | undefined);
|
|
147
|
-
get exclusiveMaximum(): number | undefined;
|
|
148
|
-
set exclusiveMaximum(eM: number | undefined);
|
|
145
|
+
get exclusiveMinimum(): string | number | undefined;
|
|
146
|
+
set exclusiveMinimum(eM: string | number | undefined);
|
|
147
|
+
get exclusiveMaximum(): string | number | undefined;
|
|
148
|
+
set exclusiveMaximum(eM: string | number | undefined);
|
|
149
149
|
get default(): any;
|
|
150
150
|
private isNotEmpty;
|
|
151
151
|
protected evaluateConstraints(): any;
|
|
@@ -167,17 +167,17 @@ declare class Field extends Scriptable<FieldJson> implements FieldModel {
|
|
|
167
167
|
enum?: any[] | undefined;
|
|
168
168
|
accept?: string[] | undefined;
|
|
169
169
|
enforceEnum?: boolean | undefined;
|
|
170
|
-
exclusiveMinimum?: number | undefined;
|
|
171
|
-
exclusiveMaximum?: number | undefined;
|
|
170
|
+
exclusiveMinimum?: string | number | undefined;
|
|
171
|
+
exclusiveMaximum?: string | number | undefined;
|
|
172
172
|
format?: string | undefined;
|
|
173
173
|
maxFileSize?: string | number | undefined;
|
|
174
174
|
maxLength?: number | undefined;
|
|
175
|
-
maximum?: number | undefined;
|
|
175
|
+
maximum?: string | number | undefined;
|
|
176
176
|
maxItems?: number | undefined;
|
|
177
177
|
minOccur?: number | undefined;
|
|
178
178
|
maxOccur?: number | undefined;
|
|
179
179
|
minLength?: number | undefined;
|
|
180
|
-
minimum?: number | undefined;
|
|
180
|
+
minimum?: string | number | undefined;
|
|
181
181
|
minItems?: number | undefined;
|
|
182
182
|
pattern?: string | undefined;
|
|
183
183
|
required?: boolean | undefined;
|
package/esm/types/src/Form.d.ts
CHANGED
|
@@ -46,17 +46,17 @@ declare class Form extends Container<FormJson> implements FormModel {
|
|
|
46
46
|
} & {
|
|
47
47
|
accept?: string[] | undefined;
|
|
48
48
|
enforceEnum?: boolean | undefined;
|
|
49
|
-
exclusiveMinimum?: number | undefined;
|
|
50
|
-
exclusiveMaximum?: number | undefined;
|
|
49
|
+
exclusiveMinimum?: string | number | undefined;
|
|
50
|
+
exclusiveMaximum?: string | number | undefined;
|
|
51
51
|
format?: string | undefined;
|
|
52
52
|
maxFileSize?: string | number | undefined;
|
|
53
53
|
maxLength?: number | undefined;
|
|
54
|
-
maximum?: number | undefined;
|
|
54
|
+
maximum?: string | number | undefined;
|
|
55
55
|
maxItems?: number | undefined;
|
|
56
56
|
minOccur?: number | undefined;
|
|
57
57
|
maxOccur?: number | undefined;
|
|
58
58
|
minLength?: number | undefined;
|
|
59
|
-
minimum?: number | undefined;
|
|
59
|
+
minimum?: string | number | undefined;
|
|
60
60
|
minItems?: number | undefined;
|
|
61
61
|
pattern?: string | undefined;
|
|
62
62
|
required?: boolean | undefined;
|
|
@@ -64,6 +64,14 @@ declare class FunctionRuntimeImpl {
|
|
|
64
64
|
_func: (args: Array<unknown>, data: unknown, interpreter: any) => {};
|
|
65
65
|
_signature: never[];
|
|
66
66
|
};
|
|
67
|
+
encrypt: {
|
|
68
|
+
_func: (args: Array<unknown>, data: unknown, interpreter: any) => Promise<any>;
|
|
69
|
+
_signature: never[];
|
|
70
|
+
};
|
|
71
|
+
decrypt: {
|
|
72
|
+
_func: (args: Array<unknown>, data: unknown, interpreter: any) => Promise<any>;
|
|
73
|
+
_signature: never[];
|
|
74
|
+
};
|
|
67
75
|
};
|
|
68
76
|
}
|
|
69
77
|
export declare const FunctionRuntime: FunctionRuntimeImpl;
|
|
@@ -15,17 +15,17 @@ type TranslationConstraintsJson = {
|
|
|
15
15
|
export type ConstraintsJson = TranslationConstraintsJson & {
|
|
16
16
|
accept?: string[];
|
|
17
17
|
enforceEnum?: boolean;
|
|
18
|
-
exclusiveMinimum?: number;
|
|
19
|
-
exclusiveMaximum?: number;
|
|
18
|
+
exclusiveMinimum?: number | string;
|
|
19
|
+
exclusiveMaximum?: number | string;
|
|
20
20
|
format?: string;
|
|
21
21
|
maxFileSize?: number | string;
|
|
22
22
|
maxLength?: number;
|
|
23
|
-
maximum?: number;
|
|
23
|
+
maximum?: number | string;
|
|
24
24
|
maxItems?: number;
|
|
25
25
|
minOccur?: number;
|
|
26
26
|
maxOccur?: number;
|
|
27
27
|
minLength?: number;
|
|
28
|
-
minimum?: number;
|
|
28
|
+
minimum?: number | string;
|
|
29
29
|
minItems?: number;
|
|
30
30
|
pattern?: string;
|
|
31
31
|
required?: boolean;
|
package/lib/Checkbox.d.ts
CHANGED
|
@@ -99,17 +99,17 @@ declare class Checkbox extends Field {
|
|
|
99
99
|
enum?: any[] | undefined;
|
|
100
100
|
accept?: string[] | undefined;
|
|
101
101
|
enforceEnum?: boolean | undefined;
|
|
102
|
-
exclusiveMinimum?: number | undefined;
|
|
103
|
-
exclusiveMaximum?: number | undefined;
|
|
102
|
+
exclusiveMinimum?: string | number | undefined;
|
|
103
|
+
exclusiveMaximum?: string | number | undefined;
|
|
104
104
|
format?: string | undefined;
|
|
105
105
|
maxFileSize?: string | number | undefined;
|
|
106
106
|
maxLength?: number | undefined;
|
|
107
|
-
maximum?: number | undefined;
|
|
107
|
+
maximum?: string | number | undefined;
|
|
108
108
|
maxItems?: number | undefined;
|
|
109
109
|
minOccur?: number | undefined;
|
|
110
110
|
maxOccur?: number | undefined;
|
|
111
111
|
minLength?: number | undefined;
|
|
112
|
-
minimum?: number | undefined;
|
|
112
|
+
minimum?: string | number | undefined;
|
|
113
113
|
minItems?: number | undefined;
|
|
114
114
|
pattern?: string | undefined;
|
|
115
115
|
required?: boolean | undefined;
|
package/lib/DateField.d.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import Field from './Field';
|
|
2
2
|
declare class DateField extends Field {
|
|
3
|
+
#private;
|
|
3
4
|
private locale?;
|
|
4
5
|
private _dataFormat;
|
|
5
6
|
protected _applyDefaults(): void;
|
|
6
7
|
get value(): any;
|
|
7
8
|
set value(value: any);
|
|
9
|
+
get minimum(): string | number | undefined;
|
|
10
|
+
set minimum(value: string | number | undefined);
|
|
11
|
+
get maximum(): string | number | undefined;
|
|
12
|
+
set maximum(value: string | number | undefined);
|
|
8
13
|
}
|
|
9
14
|
export default DateField;
|
package/lib/DateField.js
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
+
};
|
|
2
7
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
8
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
9
|
};
|
|
10
|
+
var _DateField_instances, _DateField_convertNumberToDate;
|
|
5
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
12
|
const Field_1 = __importDefault(require("./Field"));
|
|
7
13
|
const af_formatters_1 = require("@aemforms/af-formatters");
|
|
8
14
|
class DateField extends Field_1.default {
|
|
9
15
|
constructor() {
|
|
10
16
|
super(...arguments);
|
|
17
|
+
_DateField_instances.add(this);
|
|
11
18
|
this._dataFormat = 'yyyy-MM-dd';
|
|
12
19
|
}
|
|
13
20
|
_applyDefaults() {
|
|
@@ -28,9 +35,9 @@ class DateField extends Field_1.default {
|
|
|
28
35
|
}
|
|
29
36
|
set value(value) {
|
|
30
37
|
if (typeof value === 'number') {
|
|
31
|
-
const coercedValue = (
|
|
32
|
-
if (
|
|
33
|
-
super.value =
|
|
38
|
+
const coercedValue = __classPrivateFieldGet(this, _DateField_instances, "m", _DateField_convertNumberToDate).call(this, value);
|
|
39
|
+
if (coercedValue) {
|
|
40
|
+
super.value = coercedValue;
|
|
34
41
|
}
|
|
35
42
|
}
|
|
36
43
|
else {
|
|
@@ -48,5 +55,40 @@ class DateField extends Field_1.default {
|
|
|
48
55
|
}
|
|
49
56
|
}
|
|
50
57
|
}
|
|
58
|
+
get minimum() {
|
|
59
|
+
return super.minimum;
|
|
60
|
+
}
|
|
61
|
+
set minimum(value) {
|
|
62
|
+
if (typeof value === 'number') {
|
|
63
|
+
const coercedValue = __classPrivateFieldGet(this, _DateField_instances, "m", _DateField_convertNumberToDate).call(this, value);
|
|
64
|
+
if (coercedValue) {
|
|
65
|
+
super.minimum = coercedValue;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else if (typeof value === 'string') {
|
|
69
|
+
super.minimum = value;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
get maximum() {
|
|
73
|
+
return super.maximum;
|
|
74
|
+
}
|
|
75
|
+
set maximum(value) {
|
|
76
|
+
if (typeof value === 'number') {
|
|
77
|
+
const coercedValue = __classPrivateFieldGet(this, _DateField_instances, "m", _DateField_convertNumberToDate).call(this, value);
|
|
78
|
+
if (coercedValue) {
|
|
79
|
+
super.maximum = coercedValue;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else if (typeof value === 'string') {
|
|
83
|
+
super.maximum = value;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
51
86
|
}
|
|
87
|
+
_DateField_instances = new WeakSet(), _DateField_convertNumberToDate = function _DateField_convertNumberToDate(value) {
|
|
88
|
+
const coercedValue = (0, af_formatters_1.numberToDatetime)(value);
|
|
89
|
+
if (!isNaN(coercedValue)) {
|
|
90
|
+
return (0, af_formatters_1.formatDate)(coercedValue, this.locale, this._dataFormat);
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
};
|
|
52
94
|
exports.default = DateField;
|
package/lib/Field.d.ts
CHANGED
|
@@ -44,10 +44,10 @@ declare class Field extends Scriptable<FieldJson> implements FieldModel {
|
|
|
44
44
|
set enumNames(e: string[] | undefined);
|
|
45
45
|
get required(): boolean;
|
|
46
46
|
set required(r: boolean);
|
|
47
|
-
get maximum(): number | undefined;
|
|
48
|
-
set maximum(m: number | undefined);
|
|
49
|
-
get minimum(): number | undefined;
|
|
50
|
-
set minimum(m: number | undefined);
|
|
47
|
+
get maximum(): string | number | undefined;
|
|
48
|
+
set maximum(m: string | number | undefined);
|
|
49
|
+
get minimum(): string | number | undefined;
|
|
50
|
+
set minimum(m: string | number | undefined);
|
|
51
51
|
private withCategory;
|
|
52
52
|
get editValue(): any;
|
|
53
53
|
get displayValue(): any;
|
|
@@ -142,10 +142,10 @@ declare class Field extends Scriptable<FieldJson> implements FieldModel {
|
|
|
142
142
|
get minLength(): number | undefined;
|
|
143
143
|
get pattern(): string | undefined;
|
|
144
144
|
get step(): number | undefined;
|
|
145
|
-
get exclusiveMinimum(): number | undefined;
|
|
146
|
-
set exclusiveMinimum(eM: number | undefined);
|
|
147
|
-
get exclusiveMaximum(): number | undefined;
|
|
148
|
-
set exclusiveMaximum(eM: number | undefined);
|
|
145
|
+
get exclusiveMinimum(): string | number | undefined;
|
|
146
|
+
set exclusiveMinimum(eM: string | number | undefined);
|
|
147
|
+
get exclusiveMaximum(): string | number | undefined;
|
|
148
|
+
set exclusiveMaximum(eM: string | number | undefined);
|
|
149
149
|
get default(): any;
|
|
150
150
|
private isNotEmpty;
|
|
151
151
|
protected evaluateConstraints(): any;
|
|
@@ -167,17 +167,17 @@ declare class Field extends Scriptable<FieldJson> implements FieldModel {
|
|
|
167
167
|
enum?: any[] | undefined;
|
|
168
168
|
accept?: string[] | undefined;
|
|
169
169
|
enforceEnum?: boolean | undefined;
|
|
170
|
-
exclusiveMinimum?: number | undefined;
|
|
171
|
-
exclusiveMaximum?: number | undefined;
|
|
170
|
+
exclusiveMinimum?: string | number | undefined;
|
|
171
|
+
exclusiveMaximum?: string | number | undefined;
|
|
172
172
|
format?: string | undefined;
|
|
173
173
|
maxFileSize?: string | number | undefined;
|
|
174
174
|
maxLength?: number | undefined;
|
|
175
|
-
maximum?: number | undefined;
|
|
175
|
+
maximum?: string | number | undefined;
|
|
176
176
|
maxItems?: number | undefined;
|
|
177
177
|
minOccur?: number | undefined;
|
|
178
178
|
maxOccur?: number | undefined;
|
|
179
179
|
minLength?: number | undefined;
|
|
180
|
-
minimum?: number | undefined;
|
|
180
|
+
minimum?: string | number | undefined;
|
|
181
181
|
minItems?: number | undefined;
|
|
182
182
|
pattern?: string | undefined;
|
|
183
183
|
required?: boolean | undefined;
|
package/lib/Form.d.ts
CHANGED
|
@@ -46,17 +46,17 @@ declare class Form extends Container<FormJson> implements FormModel {
|
|
|
46
46
|
} & {
|
|
47
47
|
accept?: string[] | undefined;
|
|
48
48
|
enforceEnum?: boolean | undefined;
|
|
49
|
-
exclusiveMinimum?: number | undefined;
|
|
50
|
-
exclusiveMaximum?: number | undefined;
|
|
49
|
+
exclusiveMinimum?: string | number | undefined;
|
|
50
|
+
exclusiveMaximum?: string | number | undefined;
|
|
51
51
|
format?: string | undefined;
|
|
52
52
|
maxFileSize?: string | number | undefined;
|
|
53
53
|
maxLength?: number | undefined;
|
|
54
|
-
maximum?: number | undefined;
|
|
54
|
+
maximum?: string | number | undefined;
|
|
55
55
|
maxItems?: number | undefined;
|
|
56
56
|
minOccur?: number | undefined;
|
|
57
57
|
maxOccur?: number | undefined;
|
|
58
58
|
minLength?: number | undefined;
|
|
59
|
-
minimum?: number | undefined;
|
|
59
|
+
minimum?: string | number | undefined;
|
|
60
60
|
minItems?: number | undefined;
|
|
61
61
|
pattern?: string | undefined;
|
|
62
62
|
required?: boolean | undefined;
|
|
@@ -64,6 +64,14 @@ declare class FunctionRuntimeImpl {
|
|
|
64
64
|
_func: (args: Array<unknown>, data: unknown, interpreter: any) => {};
|
|
65
65
|
_signature: never[];
|
|
66
66
|
};
|
|
67
|
+
encrypt: {
|
|
68
|
+
_func: (args: Array<unknown>, data: unknown, interpreter: any) => Promise<any>;
|
|
69
|
+
_signature: never[];
|
|
70
|
+
};
|
|
71
|
+
decrypt: {
|
|
72
|
+
_func: (args: Array<unknown>, data: unknown, interpreter: any) => Promise<any>;
|
|
73
|
+
_signature: never[];
|
|
74
|
+
};
|
|
67
75
|
};
|
|
68
76
|
}
|
|
69
77
|
export declare const FunctionRuntime: FunctionRuntimeImpl;
|
|
@@ -30,6 +30,22 @@ const request = (context, uri, httpVerb, payload, success, error, headers) => __
|
|
|
30
30
|
method: httpVerb
|
|
31
31
|
};
|
|
32
32
|
let inputPayload;
|
|
33
|
+
let encryptOutput = {};
|
|
34
|
+
try {
|
|
35
|
+
if (payload instanceof Promise) {
|
|
36
|
+
payload = yield payload;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.error('Error resolving payload Promise:', error);
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
if (payload.body && payload.headers) {
|
|
44
|
+
encryptOutput = Object.assign({}, payload);
|
|
45
|
+
headers = Object.assign({}, payload.headers);
|
|
46
|
+
payload = payload.body;
|
|
47
|
+
inputPayload = payload;
|
|
48
|
+
}
|
|
33
49
|
if (payload && payload instanceof FileObject_1.FileObject && payload.data instanceof File) {
|
|
34
50
|
const formData = new FormData();
|
|
35
51
|
formData.append(payload.name, payload.data);
|
|
@@ -38,7 +54,7 @@ const request = (context, uri, httpVerb, payload, success, error, headers) => __
|
|
|
38
54
|
else if (payload instanceof FormData) {
|
|
39
55
|
inputPayload = payload;
|
|
40
56
|
}
|
|
41
|
-
else if (payload && typeof payload === 'object' && Object.keys(payload).length > 0) {
|
|
57
|
+
else if (payload && (typeof payload === 'string' || (typeof payload === 'object' && Object.keys(payload).length > 0))) {
|
|
42
58
|
const headerNames = Object.keys(headers);
|
|
43
59
|
if (headerNames.length > 0) {
|
|
44
60
|
requestOptions.headers = Object.assign(Object.assign({}, headers), (headerNames.indexOf('Content-Type') === -1 ? { 'Content-Type': 'application/json' } : {}));
|
|
@@ -47,35 +63,41 @@ const request = (context, uri, httpVerb, payload, success, error, headers) => __
|
|
|
47
63
|
requestOptions.headers = { 'Content-Type': 'application/json' };
|
|
48
64
|
}
|
|
49
65
|
const contentType = ((_a = requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.headers) === null || _a === void 0 ? void 0 : _a['Content-Type']) || 'application/json';
|
|
50
|
-
if (
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
66
|
+
if (typeof payload === 'object') {
|
|
67
|
+
if (contentType === 'application/json') {
|
|
68
|
+
inputPayload = JSON.stringify(payload);
|
|
69
|
+
}
|
|
70
|
+
else if (contentType.indexOf('multipart/form-data') > -1) {
|
|
71
|
+
inputPayload = multipartFormData(payload);
|
|
72
|
+
}
|
|
73
|
+
else if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {
|
|
74
|
+
inputPayload = urlEncoded(payload);
|
|
75
|
+
}
|
|
55
76
|
}
|
|
56
|
-
|
|
57
|
-
inputPayload =
|
|
77
|
+
if (contentType === 'text/plain') {
|
|
78
|
+
inputPayload = String(payload);
|
|
58
79
|
}
|
|
59
80
|
}
|
|
60
|
-
const
|
|
61
|
-
|
|
81
|
+
const response = yield (0, Fetch_1.request)(endpoint, inputPayload, requestOptions);
|
|
82
|
+
response.originalRequest = Object.assign({ url: endpoint, method: httpVerb }, encryptOutput);
|
|
83
|
+
if ((response === null || response === void 0 ? void 0 : response.status) >= 200 && (response === null || response === void 0 ? void 0 : response.status) <= 299) {
|
|
62
84
|
const eName = getCustomEventName(success);
|
|
63
85
|
if (success === 'submitSuccess') {
|
|
64
|
-
context.form.dispatch(new Events_1.SubmitSuccess(
|
|
86
|
+
context.form.dispatch(new Events_1.SubmitSuccess(response, true));
|
|
65
87
|
}
|
|
66
88
|
else {
|
|
67
|
-
context.form.dispatch(new Events_1.CustomEvent(eName,
|
|
89
|
+
context.form.dispatch(new Events_1.CustomEvent(eName, response, true));
|
|
68
90
|
}
|
|
69
91
|
}
|
|
70
92
|
else {
|
|
71
93
|
context.form.logger.error('Error invoking a rest API');
|
|
72
94
|
const eName = getCustomEventName(error);
|
|
73
95
|
if (error === 'submitError') {
|
|
74
|
-
context.form.dispatch(new Events_1.SubmitError(
|
|
75
|
-
context.form.dispatch(new Events_1.SubmitFailure(
|
|
96
|
+
context.form.dispatch(new Events_1.SubmitError(response, true));
|
|
97
|
+
context.form.dispatch(new Events_1.SubmitFailure(response, true));
|
|
76
98
|
}
|
|
77
99
|
else {
|
|
78
|
-
context.form.dispatch(new Events_1.CustomEvent(eName,
|
|
100
|
+
context.form.dispatch(new Events_1.CustomEvent(eName, response, true));
|
|
79
101
|
}
|
|
80
102
|
}
|
|
81
103
|
});
|
|
@@ -435,17 +457,29 @@ class FunctionRuntimeImpl {
|
|
|
435
457
|
_func: (args, data, interpreter) => {
|
|
436
458
|
const uri = toString(args[0]);
|
|
437
459
|
const httpVerb = toString(args[1]);
|
|
438
|
-
|
|
439
|
-
let success
|
|
440
|
-
|
|
441
|
-
|
|
460
|
+
let payload;
|
|
461
|
+
let success;
|
|
462
|
+
let error;
|
|
463
|
+
let headers = {};
|
|
464
|
+
if (args[2] && typeof args[2] === 'object' && !args[2].then && ('data' in args[2] || 'headers' in args[2])) {
|
|
465
|
+
const payloadObj = valueOf(args[2]);
|
|
466
|
+
payload = payloadObj.data;
|
|
467
|
+
headers = payloadObj.headers || {};
|
|
442
468
|
success = valueOf(args[3]);
|
|
443
469
|
error = valueOf(args[4]);
|
|
444
470
|
}
|
|
445
471
|
else {
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
472
|
+
payload = valueOf(args[2]);
|
|
473
|
+
if (typeof (args[3]) === 'string') {
|
|
474
|
+
interpreter.globals.form.logger.warn('This usage of request is deprecated. Please see the documentation and update');
|
|
475
|
+
success = valueOf(args[3]);
|
|
476
|
+
error = valueOf(args[4]);
|
|
477
|
+
}
|
|
478
|
+
else {
|
|
479
|
+
headers = valueOf(args[3]);
|
|
480
|
+
success = valueOf(args[4]);
|
|
481
|
+
error = valueOf(args[5]);
|
|
482
|
+
}
|
|
449
483
|
}
|
|
450
484
|
return (0, exports.request)(interpreter.globals, uri, httpVerb, payload, success, error, headers);
|
|
451
485
|
},
|
|
@@ -542,6 +576,20 @@ class FunctionRuntimeImpl {
|
|
|
542
576
|
return {};
|
|
543
577
|
},
|
|
544
578
|
_signature: []
|
|
579
|
+
},
|
|
580
|
+
encrypt: {
|
|
581
|
+
_func: (args, data, interpreter) => __awaiter(this, void 0, void 0, function* () {
|
|
582
|
+
const payload = valueOf(args[0]);
|
|
583
|
+
return payload;
|
|
584
|
+
}),
|
|
585
|
+
_signature: []
|
|
586
|
+
},
|
|
587
|
+
decrypt: {
|
|
588
|
+
_func: (args, data, interpreter) => __awaiter(this, void 0, void 0, function* () {
|
|
589
|
+
const encData = valueOf(args[0]);
|
|
590
|
+
return encData;
|
|
591
|
+
}),
|
|
592
|
+
_signature: []
|
|
545
593
|
}
|
|
546
594
|
};
|
|
547
595
|
return Object.assign(Object.assign({}, defaultFunctions), FunctionRuntimeImpl.getInstance().customFunctions);
|
package/lib/types/Json.d.ts
CHANGED
|
@@ -15,17 +15,17 @@ declare type TranslationConstraintsJson = {
|
|
|
15
15
|
export declare type ConstraintsJson = TranslationConstraintsJson & {
|
|
16
16
|
accept?: string[];
|
|
17
17
|
enforceEnum?: boolean;
|
|
18
|
-
exclusiveMinimum?: number;
|
|
19
|
-
exclusiveMaximum?: number;
|
|
18
|
+
exclusiveMinimum?: number | string;
|
|
19
|
+
exclusiveMaximum?: number | string;
|
|
20
20
|
format?: string;
|
|
21
21
|
maxFileSize?: number | string;
|
|
22
22
|
maxLength?: number;
|
|
23
|
-
maximum?: number;
|
|
23
|
+
maximum?: number | string;
|
|
24
24
|
maxItems?: number;
|
|
25
25
|
minOccur?: number;
|
|
26
26
|
maxOccur?: number;
|
|
27
27
|
minLength?: number;
|
|
28
|
-
minimum?: number;
|
|
28
|
+
minimum?: number | string;
|
|
29
29
|
minItems?: number;
|
|
30
30
|
pattern?: string;
|
|
31
31
|
required?: boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aemforms/af-core",
|
|
3
|
-
"version": "0.22.
|
|
3
|
+
"version": "0.22.118",
|
|
4
4
|
"description": "Core Module for Forms Runtime",
|
|
5
5
|
"author": "Adobe Systems",
|
|
6
6
|
"license": "Adobe Proprietary",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@adobe/json-formula": "0.1.50",
|
|
40
|
-
"@aemforms/af-formatters": "^0.22.
|
|
40
|
+
"@aemforms/af-formatters": "^0.22.118"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@babel/preset-env": "^7.20.2",
|