@1money/component-ui 0.0.71 → 0.0.73
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/es/components/ProForm/ProForm.d.ts +10 -2
- package/es/components/ProForm/ProForm.js +55 -22
- package/es/components/ProForm/ProFormDependency.js +4 -1
- package/es/components/ProForm/ProFormItem.js +73 -36
- package/es/components/ProForm/SchemaForm.d.ts +7 -0
- package/es/components/ProForm/SchemaForm.js +103 -0
- package/es/components/ProForm/Submitter.js +12 -2
- package/es/components/ProForm/context.d.ts +22 -3
- package/es/components/ProForm/context.js +49 -10
- package/es/components/ProForm/core/constants.d.ts +2 -1
- package/es/components/ProForm/core/constants.js +3 -6
- package/es/components/ProForm/core/hooks/useForm.js +155 -131
- package/es/components/ProForm/core/hooks/useFormCore.js +73 -39
- package/es/components/ProForm/core/interface.d.ts +33 -12
- package/es/components/ProForm/core/runRules.d.ts +16 -6
- package/es/components/ProForm/core/runRules.js +94 -47
- package/es/components/ProForm/core/useFormItem.d.ts +10 -1
- package/es/components/ProForm/core/useFormItem.js +101 -39
- package/es/components/ProForm/fields/ProFormDatePicker.js +4 -1
- package/es/components/ProForm/fields/createProFormField.js +50 -31
- package/es/components/ProForm/index.d.ts +11 -4
- package/es/components/ProForm/index.js +7 -2
- package/es/components/ProForm/interface.d.ts +89 -14
- package/es/components/ProForm/layouts/DialogForm.d.ts +5 -1
- package/es/components/ProForm/layouts/DialogForm.js +2 -1
- package/es/components/ProForm/layouts/DrawerForm.d.ts +5 -1
- package/es/components/ProForm/layouts/DrawerForm.js +2 -1
- package/es/components/ProForm/layouts/QueryFilter.d.ts +5 -2
- package/es/components/ProForm/layouts/QueryFilter.js +77 -12
- package/es/components/ProForm/style/ProForm.css +6 -0
- package/es/components/ProForm/utils.d.ts +12 -1
- package/es/components/ProForm/utils.js +70 -21
- package/es/components/Tooltip/style/Tooltip.css +1 -0
- package/es/index.css +1 -1
- package/es/index.d.ts +2 -2
- package/es/index.js +2 -2
- package/lib/components/ProForm/ProForm.d.ts +10 -2
- package/lib/components/ProForm/ProForm.js +53 -20
- package/lib/components/ProForm/ProFormDependency.js +4 -1
- package/lib/components/ProForm/ProFormItem.js +72 -34
- package/lib/components/ProForm/SchemaForm.d.ts +7 -0
- package/lib/components/ProForm/SchemaForm.js +110 -0
- package/lib/components/ProForm/Submitter.js +12 -2
- package/lib/components/ProForm/context.d.ts +22 -3
- package/lib/components/ProForm/context.js +49 -10
- package/lib/components/ProForm/core/constants.d.ts +2 -1
- package/lib/components/ProForm/core/constants.js +4 -7
- package/lib/components/ProForm/core/hooks/useForm.js +154 -130
- package/lib/components/ProForm/core/hooks/useFormCore.js +72 -38
- package/lib/components/ProForm/core/interface.d.ts +33 -12
- package/lib/components/ProForm/core/runRules.d.ts +16 -6
- package/lib/components/ProForm/core/runRules.js +95 -47
- package/lib/components/ProForm/core/useFormItem.d.ts +10 -1
- package/lib/components/ProForm/core/useFormItem.js +100 -38
- package/lib/components/ProForm/fields/ProFormDatePicker.js +4 -1
- package/lib/components/ProForm/fields/createProFormField.js +50 -31
- package/lib/components/ProForm/index.d.ts +11 -4
- package/lib/components/ProForm/index.js +16 -1
- package/lib/components/ProForm/interface.d.ts +89 -14
- package/lib/components/ProForm/layouts/DialogForm.d.ts +5 -1
- package/lib/components/ProForm/layouts/DialogForm.js +2 -1
- package/lib/components/ProForm/layouts/DrawerForm.d.ts +5 -1
- package/lib/components/ProForm/layouts/DrawerForm.js +2 -1
- package/lib/components/ProForm/layouts/QueryFilter.d.ts +5 -2
- package/lib/components/ProForm/layouts/QueryFilter.js +77 -12
- package/lib/components/ProForm/style/ProForm.css +6 -0
- package/lib/components/ProForm/utils.d.ts +12 -1
- package/lib/components/ProForm/utils.js +73 -21
- package/lib/components/Tooltip/style/Tooltip.css +1 -0
- package/lib/index.css +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +13 -1
- package/package.json +1 -1
- package/scripts/mcp-server/examples.generated.json +54 -0
- package/scripts/mcp-server/index.generated.json +1212 -80
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
2
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
|
-
import { useState, useMemo } from 'react';
|
|
3
|
+
import { useState, useMemo, useRef } from 'react';
|
|
4
4
|
import useEventCallback from '@1money/hooks/useEventCallback';
|
|
5
5
|
import useMemoizedFn from '@1money/hooks/useMemoizedFn';
|
|
6
6
|
import { resolveValue, setNestedValue } from '../pathUtils';
|
|
@@ -35,18 +35,30 @@ export var useFormCore = function useFormCore() {
|
|
|
35
35
|
setErrors = _useState4[1];
|
|
36
36
|
var _useState5 = useState({}),
|
|
37
37
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
warnings = _useState6[0],
|
|
39
|
+
setWarnings = _useState6[1];
|
|
40
40
|
var _useState7 = useState({}),
|
|
41
41
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
touched = _useState8[0],
|
|
43
|
+
setTouched = _useState8[1];
|
|
44
|
+
// Live rule registry — ONE stable object mutated in place. Registration must
|
|
45
|
+
// not trigger renders, and submit-time validation must always read the latest
|
|
46
|
+
// rules (they can change between renders, e.g. a conditional `required`).
|
|
47
|
+
var fieldRulesRef = useRef({});
|
|
48
|
+
// Imperative mirror of `values`. Computing the next values OUTSIDE the
|
|
49
|
+
// setState updater keeps the updater pure (StrictMode replays updaters,
|
|
50
|
+
// which double-fired onValuesChange) and lets multiple set calls in the
|
|
51
|
+
// same tick see each other's writes.
|
|
52
|
+
var valuesRef = useRef(values);
|
|
53
|
+
var commitValues = useMemoizedFn(function (newValues) {
|
|
54
|
+
valuesRef.current = newValues;
|
|
55
|
+
setValues(newValues);
|
|
56
|
+
});
|
|
44
57
|
var setFieldValue = useMemoizedFn(function (name, value) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
});
|
|
58
|
+
var prev = valuesRef.current;
|
|
59
|
+
var newValues = name.includes('.') ? setNestedValue(prev, name, value) : Object.assign(Object.assign({}, prev), _defineProperty({}, name, value));
|
|
60
|
+
commitValues(newValues);
|
|
61
|
+
onValuesChange === null || onValuesChange === void 0 ? void 0 : onValuesChange(_defineProperty({}, name, value), newValues);
|
|
50
62
|
if (value !== '' && value !== null && value !== undefined) {
|
|
51
63
|
setErrors(function (prev) {
|
|
52
64
|
if (!prev[name]) return prev;
|
|
@@ -67,26 +79,35 @@ export var useFormCore = function useFormCore() {
|
|
|
67
79
|
return Object.assign(Object.assign({}, prev), _defineProperty({}, name, error));
|
|
68
80
|
});
|
|
69
81
|
});
|
|
70
|
-
var
|
|
71
|
-
|
|
72
|
-
|
|
82
|
+
var setFieldWarning = useMemoizedFn(function (name, warning) {
|
|
83
|
+
setWarnings(function (prev) {
|
|
84
|
+
if (warning === null) {
|
|
85
|
+
if (!prev[name]) return prev;
|
|
86
|
+
var newWarnings = Object.assign({}, prev);
|
|
87
|
+
delete newWarnings[name];
|
|
88
|
+
return newWarnings;
|
|
89
|
+
}
|
|
90
|
+
if (prev[name] === warning) return prev;
|
|
91
|
+
return Object.assign(Object.assign({}, prev), _defineProperty({}, name, warning));
|
|
73
92
|
});
|
|
74
93
|
});
|
|
94
|
+
var registerField = useMemoizedFn(function (name, rules) {
|
|
95
|
+
fieldRulesRef.current[name] = rules;
|
|
96
|
+
});
|
|
75
97
|
var getFieldRules = useMemoizedFn(function (name) {
|
|
76
|
-
return
|
|
98
|
+
return fieldRulesRef.current[name];
|
|
77
99
|
});
|
|
78
100
|
var unregisterField = useMemoizedFn(function (name) {
|
|
79
|
-
|
|
80
|
-
var newRules = Object.assign({}, prev);
|
|
81
|
-
delete newRules[name];
|
|
82
|
-
return newRules;
|
|
83
|
-
});
|
|
101
|
+
delete fieldRulesRef.current[name];
|
|
84
102
|
});
|
|
85
103
|
var validateField = useMemoizedFn(function (name) {
|
|
86
104
|
var rules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
87
105
|
var providedValue = arguments.length > 2 ? arguments[2] : undefined;
|
|
88
|
-
var value = providedValue !== undefined ? providedValue : resolveValue(
|
|
89
|
-
var
|
|
106
|
+
var value = providedValue !== undefined ? providedValue : resolveValue(valuesRef.current, name);
|
|
107
|
+
var _runRulesSync = runRulesSync(name, value, valuesRef.current, rules),
|
|
108
|
+
error = _runRulesSync.error,
|
|
109
|
+
warning = _runRulesSync.warning;
|
|
110
|
+
setFieldWarning(name, warning);
|
|
90
111
|
if (error !== null) {
|
|
91
112
|
setFieldError(name, error);
|
|
92
113
|
return false;
|
|
@@ -97,7 +118,7 @@ export var useFormCore = function useFormCore() {
|
|
|
97
118
|
return true;
|
|
98
119
|
});
|
|
99
120
|
var validateFields = useMemoizedFn(function () {
|
|
100
|
-
var fieldsRulesToValidate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] :
|
|
121
|
+
var fieldsRulesToValidate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : fieldRulesRef.current;
|
|
101
122
|
var isValid = true;
|
|
102
123
|
Object.keys(fieldsRulesToValidate).forEach(function (name) {
|
|
103
124
|
var rules = fieldsRulesToValidate[name];
|
|
@@ -108,26 +129,35 @@ export var useFormCore = function useFormCore() {
|
|
|
108
129
|
return isValid;
|
|
109
130
|
});
|
|
110
131
|
var handleSubmitInternal = useMemoizedFn(function () {
|
|
132
|
+
var currentValues = valuesRef.current;
|
|
133
|
+
var currentRules = fieldRulesRef.current;
|
|
111
134
|
var hasErrors = false;
|
|
112
135
|
var newErrors = {};
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
var
|
|
136
|
+
var newWarnings = {};
|
|
137
|
+
Object.keys(currentRules).forEach(function (fieldName) {
|
|
138
|
+
var value = resolveValue(currentValues, fieldName);
|
|
139
|
+
var _runRulesSync2 = runRulesSync(fieldName, value, currentValues, currentRules[fieldName]),
|
|
140
|
+
error = _runRulesSync2.error,
|
|
141
|
+
warning = _runRulesSync2.warning;
|
|
116
142
|
if (error !== null) {
|
|
117
143
|
newErrors[fieldName] = error;
|
|
118
144
|
hasErrors = true;
|
|
119
145
|
}
|
|
146
|
+
if (warning !== null) {
|
|
147
|
+
newWarnings[fieldName] = warning;
|
|
148
|
+
}
|
|
120
149
|
});
|
|
121
150
|
setErrors(newErrors);
|
|
151
|
+
setWarnings(newWarnings);
|
|
122
152
|
if (!hasErrors) {
|
|
123
|
-
onFinish === null || onFinish === void 0 ? void 0 : onFinish(
|
|
153
|
+
onFinish === null || onFinish === void 0 ? void 0 : onFinish(currentValues);
|
|
124
154
|
return {
|
|
125
155
|
success: true,
|
|
126
|
-
values:
|
|
156
|
+
values: currentValues
|
|
127
157
|
};
|
|
128
158
|
} else {
|
|
129
159
|
onFinishFailed === null || onFinishFailed === void 0 ? void 0 : onFinishFailed({
|
|
130
|
-
values:
|
|
160
|
+
values: currentValues,
|
|
131
161
|
errors: newErrors
|
|
132
162
|
});
|
|
133
163
|
return {
|
|
@@ -141,8 +171,9 @@ export var useFormCore = function useFormCore() {
|
|
|
141
171
|
return handleSubmitInternal();
|
|
142
172
|
});
|
|
143
173
|
var resetFields = useMemoizedFn(function () {
|
|
144
|
-
|
|
174
|
+
commitValues(initialValues);
|
|
145
175
|
setErrors({});
|
|
176
|
+
setWarnings({});
|
|
146
177
|
setTouched({});
|
|
147
178
|
onReset === null || onReset === void 0 ? void 0 : onReset();
|
|
148
179
|
});
|
|
@@ -151,17 +182,15 @@ export var useFormCore = function useFormCore() {
|
|
|
151
182
|
resetFields();
|
|
152
183
|
});
|
|
153
184
|
var getFieldValue = useMemoizedFn(function (name) {
|
|
154
|
-
return resolveValue(
|
|
185
|
+
return resolveValue(valuesRef.current, name);
|
|
155
186
|
});
|
|
156
187
|
var getFieldsValue = useMemoizedFn(function () {
|
|
157
|
-
return
|
|
188
|
+
return valuesRef.current;
|
|
158
189
|
});
|
|
159
190
|
var setFieldsValue = useMemoizedFn(function (newValues) {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
return updatedValues;
|
|
164
|
-
});
|
|
191
|
+
var updatedValues = Object.assign(Object.assign({}, valuesRef.current), newValues);
|
|
192
|
+
commitValues(updatedValues);
|
|
193
|
+
onValuesChange === null || onValuesChange === void 0 ? void 0 : onValuesChange(newValues, updatedValues);
|
|
165
194
|
});
|
|
166
195
|
var formInstance = useMemo(function () {
|
|
167
196
|
return {
|
|
@@ -178,10 +207,12 @@ export var useFormCore = function useFormCore() {
|
|
|
178
207
|
return {
|
|
179
208
|
values: values,
|
|
180
209
|
errors: errors,
|
|
210
|
+
warnings: warnings,
|
|
181
211
|
touched: touched,
|
|
182
212
|
formInstance: formInstance,
|
|
183
213
|
setFieldValue: setFieldValue,
|
|
184
214
|
setFieldError: setFieldError,
|
|
215
|
+
setFieldWarning: setFieldWarning,
|
|
185
216
|
validateField: validateField,
|
|
186
217
|
registerField: registerField,
|
|
187
218
|
unregisterField: unregisterField,
|
|
@@ -192,15 +223,18 @@ export var useFormCore = function useFormCore() {
|
|
|
192
223
|
requiredMark: requiredMark,
|
|
193
224
|
validateTrigger: validateTrigger
|
|
194
225
|
};
|
|
195
|
-
}, [values, errors, touched, formInstance, setFieldValue, setFieldError, validateField, registerField, unregisterField, size, labelAlign, disabled, colon, requiredMark, validateTrigger]);
|
|
226
|
+
}, [values, errors, warnings, touched, formInstance, setFieldValue, setFieldError, setFieldWarning, validateField, registerField, unregisterField, size, labelAlign, disabled, colon, requiredMark, validateTrigger]);
|
|
196
227
|
return {
|
|
197
228
|
values: values,
|
|
198
229
|
errors: errors,
|
|
230
|
+
warnings: warnings,
|
|
199
231
|
touched: touched,
|
|
200
|
-
|
|
232
|
+
// Live registry — stable identity, mutated in place by register/unregister.
|
|
233
|
+
fieldRules: fieldRulesRef.current,
|
|
201
234
|
getFieldRules: getFieldRules,
|
|
202
235
|
setFieldValue: setFieldValue,
|
|
203
236
|
setFieldError: setFieldError,
|
|
237
|
+
setFieldWarning: setFieldWarning,
|
|
204
238
|
setFieldsValue: setFieldsValue,
|
|
205
239
|
getFieldValue: getFieldValue,
|
|
206
240
|
getFieldsValue: getFieldsValue,
|
|
@@ -216,4 +250,4 @@ export var useFormCore = function useFormCore() {
|
|
|
216
250
|
};
|
|
217
251
|
};
|
|
218
252
|
export default useFormCore;
|
|
219
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtQ29yZS50cyIsImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm1Db3JlLmpzIl0sIm5hbWVzIjpbInVzZVN0YXRlIiwidXNlTWVtbyIsInVzZUV2ZW50Q2FsbGJhY2siLCJ1c2VNZW1vaXplZEZuIiwicmVzb2x2ZVZhbHVlIiwic2V0TmVzdGVkVmFsdWUiLCJydW5SdWxlc1N5bmMiLCJ1c2VGb3JtQ29yZSIsImNvbmZpZyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIl9jb25maWckaW5pdGlhbFZhbHVlcyIsImluaXRpYWxWYWx1ZXMiLCJvbkZpbmlzaCIsIm9uRmluaXNoRmFpbGVkIiwib25WYWx1ZXNDaGFuZ2UiLCJvblJlc2V0IiwiX2NvbmZpZyRzaXplIiwic2l6ZSIsIl9jb25maWckbGFiZWxBbGlnbiIsImxhYmVsQWxpZ24iLCJfY29uZmlnJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfY29uZmlnJGNvbG9uIiwiY29sb24iLCJfY29uZmlnJHJlcXVpcmVkTWFyayIsInJlcXVpcmVkTWFyayIsIl9jb25maWckdmFsaWRhdGVUcmlnZyIsInZhbGlkYXRlVHJpZ2dlciIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInZhbHVlcyIsInNldFZhbHVlcyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZXJyb3JzIiwic2V0RXJyb3JzIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJ0b3VjaGVkIiwic2V0VG91Y2hlZCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiZmllbGRSdWxlcyIsInNldEZpZWxkUnVsZXMiLCJzZXRGaWVsZFZhbHVlIiwibmFtZSIsInZhbHVlIiwicHJldiIsIm5ld1ZhbHVlcyIsImluY2x1ZGVzIiwiT2JqZWN0IiwiYXNzaWduIiwiX2RlZmluZVByb3BlcnR5IiwibmV3RXJyb3JzIiwic2V0RmllbGRFcnJvciIsImVycm9yIiwicmVnaXN0ZXJGaWVsZCIsInJ1bGVzIiwiZ2V0RmllbGRSdWxlcyIsInVucmVnaXN0ZXJGaWVsZCIsIm5ld1J1bGVzIiwidmFsaWRhdGVGaWVsZCIsInByb3ZpZGVkVmFsdWUiLCJ2YWxpZGF0ZUZpZWxkcyIsImZpZWxkc1J1bGVzVG9WYWxpZGF0ZSIsImlzVmFsaWQiLCJrZXlzIiwiZm9yRWFjaCIsImhhbmRsZVN1Ym1pdEludGVybmFsIiwiaGFzRXJyb3JzIiwiZmllbGROYW1lIiwic3VjY2VzcyIsImhhbmRsZVN1Ym1pdCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInJlc2V0RmllbGRzIiwiaGFuZGxlUmVzZXQiLCJnZXRGaWVsZFZhbHVlIiwiZ2V0RmllbGRzVmFsdWUiLCJzZXRGaWVsZHNWYWx1ZSIsInVwZGF0ZWRWYWx1ZXMiLCJmb3JtSW5zdGFuY2UiLCJzdWJtaXQiLCJjb3JlQ29udGV4dFNoYXBlIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLFFBQVEsRUFBRUMsT0FBTyxRQUFRLE9BQU87QUFFekMsT0FBT0MsZ0JBQWdCLE1BQU0sZ0NBQWdDO0FBQzdELE9BQU9DLGFBQWEsTUFBTSw2QkFBNkI7QUFDdkQsU0FBU0MsWUFBWSxFQUFFQyxjQUFjLFFBQVEsY0FBYztBQUMzRCxTQUFTQyxZQUFZLFFBQVEsYUFBYTtBQVExQyxPQUFPLElBQU1DLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFBLEVBQXlEO0VBQUEsSUFBckRDLE1BQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQTRCLENBQUEsQ0FBRTtFQUN4RCxJQUFBRyxxQkFBQSxHQVlJSixNQUFNLENBWFJLLGFBQWE7SUFBYkEsYUFBYSxHQUFBRCxxQkFBQSxjQUFHLENBQUEsQ0FBRSxHQUFBQSxxQkFBQTtJQUNsQkUsUUFBUSxHQVVOTixNQUFNLENBVlJNLFFBQVE7SUFDUkMsY0FBYyxHQVNa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O0lBQ1hELFdBQVcsRUFBWEEsV0FBVztJQUNYTSxZQUFZLEVBQVpBLFlBQVk7SUFDWkUsZ0JBQWdCLEVBQWhCQTtFQ3JEQSxDRHNERDtBQUNILENBQUM7QUFFRCxlQUFlL0UsV0FBVyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtQ29yZS5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSwgc2V0TmVzdGVkVmFsdWUgfSBmcm9tICcuLi9wYXRoVXRpbHMnO1xuaW1wb3J0IHsgcnVuUnVsZXNTeW5jIH0gZnJvbSAnLi4vcnVuUnVsZXMnO1xuZXhwb3J0IGNvbnN0IHVzZUZvcm1Db3JlID0gKGNvbmZpZyA9IHt9KSA9PiB7XG4gICAgY29uc3QgeyBpbml0aWFsVmFsdWVzID0ge30sIG9uRmluaXNoLCBvbkZpbmlzaEZhaWxlZCwgb25WYWx1ZXNDaGFuZ2UsIG9uUmVzZXQsIHNpemUgPSAnbWlkZGxlJywgbGFiZWxBbGlnbiA9ICdsZWZ0JywgZGlzYWJsZWQgPSBmYWxzZSwgY29sb24gPSB0cnVlLCByZXF1aXJlZE1hcmsgPSB0cnVlLCB2YWxpZGF0ZVRyaWdnZXIgPSAnb25DaGFuZ2UnLCB9ID0gY29uZmlnO1xuICAgIGNvbnN0IFt2YWx1ZXMsIHNldFZhbHVlc10gPSB1c2VTdGF0ZShpbml0aWFsVmFsdWVzKTtcbiAgICBjb25zdCBbZXJyb3JzLCBzZXRFcnJvcnNdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFt0b3VjaGVkLCBzZXRUb3VjaGVkXSA9IHVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbZmllbGRSdWxlcywgc2V0RmllbGRSdWxlc10gPSB1c2VTdGF0ZSh7fSk7XG4gICAgY29uc3Qgc2V0RmllbGRWYWx1ZSA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHZhbHVlKSA9PiB7XG4gICAgICAgIHNldFZhbHVlcygocHJldikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWVzID0gbmFtZS5pbmNsdWRlcygnLicpXG4gICAgICAgICAgICAgICAgPyBzZXROZXN0ZWRWYWx1ZShwcmV2LCBuYW1lLCB2YWx1ZSlcbiAgICAgICAgICAgICAgICA6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcHJldiksIHsgW25hbWVdOiB2YWx1ZSB9KTtcbiAgICAgICAgICAgIG9uVmFsdWVzQ2hhbmdlID09PSBudWxsIHx8IG9uVmFsdWVzQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblZhbHVlc0NoYW5nZSh7IFtuYW1lXTogdmFsdWUgfSwgbmV3VmFsdWVzKTtcbiAgICAgICAgICAgIHJldHVybiBuZXdWYWx1ZXM7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodmFsdWUgIT09ICcnICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHNldEVycm9ycygocHJldikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghcHJldltuYW1lXSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RXJyb3JzID0gT2JqZWN0LmFzc2lnbih7fSwgcHJldik7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG5ld0Vycm9yc1tuYW1lXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3RXJyb3JzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBzZXRGaWVsZEVycm9yID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgZXJyb3IpID0+IHtcbiAgICAgICAgc2V0RXJyb3JzKChwcmV2KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXByZXZbbmFtZV0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IE9iamVjdC5hc3NpZ24oe30sIHByZXYpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdFcnJvcnNbbmFtZV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld0Vycm9ycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXYpLCB7IFtuYW1lXTogZXJyb3IgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlZ2lzdGVyRmllbGQgPSB1c2VNZW1vaXplZEZuKChuYW1lLCBydWxlcykgPT4ge1xuICAgICAgICBzZXRGaWVsZFJ1bGVzKChwcmV2KSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgeyBbbmFtZV06IHJ1bGVzIH0pKSk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0RmllbGRSdWxlcyA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHtcbiAgICAgICAgcmV0dXJuIGZpZWxkUnVsZXNbbmFtZV07XG4gICAgfSk7XG4gICAgY29uc3QgdW5yZWdpc3RlckZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4ge1xuICAgICAgICBzZXRGaWVsZFJ1bGVzKChwcmV2KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdSdWxlcyA9IE9iamVjdC5hc3NpZ24oe30sIHByZXYpO1xuICAgICAgICAgICAgZGVsZXRlIG5ld1J1bGVzW25hbWVdO1xuICAgICAgICAgICAgcmV0dXJuIG5ld1J1bGVzO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCB2YWxpZGF0ZUZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgcnVsZXMgPSBbXSwgcHJvdmlkZWRWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHByb3ZpZGVkVmFsdWUgIT09IHVuZGVmaW5lZCA/IHByb3ZpZGVkVmFsdWUgOiByZXNvbHZlVmFsdWUodmFsdWVzLCBuYW1lKTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBydW5SdWxlc1N5bmMobmFtZSwgdmFsdWUsIHZhbHVlcywgcnVsZXMpO1xuICAgICAgICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvcnNbbmFtZV0pIHtcbiAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gICAgY29uc3QgdmFsaWRhdGVGaWVsZHMgPSB1c2VNZW1vaXplZEZuKChmaWVsZHNSdWxlc1RvVmFsaWRhdGUgPSBmaWVsZFJ1bGVzKSA9PiB7XG4gICAgICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgT2JqZWN0LmtleXMoZmllbGRzUnVsZXNUb1ZhbGlkYXRlKS5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlcyA9IGZpZWxkc1J1bGVzVG9WYWxpZGF0ZVtuYW1lXTtcbiAgICAgICAgICAgIGlmICghdmFsaWRhdGVGaWVsZChuYW1lLCBydWxlcykpIHtcbiAgICAgICAgICAgICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gaXNWYWxpZDtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTdWJtaXRJbnRlcm5hbCA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICBsZXQgaGFzRXJyb3JzID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyhmaWVsZFJ1bGVzKS5mb3JFYWNoKChmaWVsZE5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcmVzb2x2ZVZhbHVlKHZhbHVlcywgZmllbGROYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcnVuUnVsZXNTeW5jKGZpZWxkTmFtZSwgdmFsdWUsIHZhbHVlcywgZmllbGRSdWxlc1tmaWVsZE5hbWVdKTtcbiAgICAgICAgICAgIGlmIChlcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG5ld0Vycm9yc1tmaWVsZE5hbWVdID0gZXJyb3I7XG4gICAgICAgICAgICAgICAgaGFzRXJyb3JzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNldEVycm9ycyhuZXdFcnJvcnMpO1xuICAgICAgICBpZiAoIWhhc0Vycm9ycykge1xuICAgICAgICAgICAgb25GaW5pc2ggPT09IG51bGwgfHwgb25GaW5pc2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoKHZhbHVlcyk7XG4gICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCB2YWx1ZXMgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9uRmluaXNoRmFpbGVkID09PSBudWxsIHx8IG9uRmluaXNoRmFpbGVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaEZhaWxlZCh7IHZhbHVlcywgZXJyb3JzOiBuZXdFcnJvcnMgfSk7XG4gICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZXJyb3JzOiBuZXdFcnJvcnMgfTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybiBoYW5kbGVTdWJtaXRJbnRlcm5hbCgpO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlc2V0RmllbGRzID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHNldFZhbHVlcyhpbml0aWFsVmFsdWVzKTtcbiAgICAgICAgc2V0RXJyb3JzKHt9KTtcbiAgICAgICAgc2V0VG91Y2hlZCh7fSk7XG4gICAgICAgIG9uUmVzZXQgPT09IG51bGwgfHwgb25SZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SZXNldCgpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVJlc2V0ID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmVzZXRGaWVsZHMoKTtcbiAgICB9KTtcbiAgICBjb25zdCBnZXRGaWVsZFZhbHVlID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZVZhbHVlKHZhbHVlcywgbmFtZSk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0RmllbGRzVmFsdWUgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9KTtcbiAgICBjb25zdCBzZXRGaWVsZHNWYWx1ZSA9IHVzZU1lbW9pemVkRm4oKG5ld1ZhbHVlcykgPT4ge1xuICAgICAgICBzZXRWYWx1ZXMoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRWYWx1ZXMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXYpLCBuZXdWYWx1ZXMpO1xuICAgICAgICAgICAgb25WYWx1ZXNDaGFuZ2UgPT09IG51bGwgfHwgb25WYWx1ZXNDaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uVmFsdWVzQ2hhbmdlKG5ld1ZhbHVlcywgdXBkYXRlZFZhbHVlcyk7XG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlZFZhbHVlcztcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgZm9ybUluc3RhbmNlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICBzdWJtaXQ6IGhhbmRsZVN1Ym1pdEludGVybmFsLFxuICAgICAgICByZXNldEZpZWxkcyxcbiAgICAgICAgZ2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZ2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHNldEZpZWxkc1ZhbHVlLFxuICAgICAgICBzZXRGaWVsZFZhbHVlLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkcyxcbiAgICB9KSwgW1xuICAgICAgICBoYW5kbGVTdWJtaXRJbnRlcm5hbCxcbiAgICAgICAgcmVzZXRGaWVsZHMsXG4gICAgICAgIGdldEZpZWxkVmFsdWUsXG4gICAgICAgIGdldEZpZWxkc1ZhbHVlLFxuICAgICAgICBzZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgdmFsaWRhdGVGaWVsZHMsXG4gICAgXSk7XG4gICAgY29uc3QgY29yZUNvbnRleHRTaGFwZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIHRvdWNoZWQsXG4gICAgICAgIGZvcm1JbnN0YW5jZSxcbiAgICAgICAgc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcixcbiAgICAgICAgdmFsaWRhdGVGaWVsZCxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkLFxuICAgICAgICBzaXplLFxuICAgICAgICBsYWJlbEFsaWduLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgY29sb24sXG4gICAgICAgIHJlcXVpcmVkTWFyayxcbiAgICAgICAgdmFsaWRhdGVUcmlnZ2VyLFxuICAgIH0pLCBbXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICB0b3VjaGVkLFxuICAgICAgICBmb3JtSW5zdGFuY2UsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHNldEZpZWxkRXJyb3IsXG4gICAgICAgIHZhbGlkYXRlRmllbGQsXG4gICAgICAgIHJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgbGFiZWxBbGlnbixcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIGNvbG9uLFxuICAgICAgICByZXF1aXJlZE1hcmssXG4gICAgICAgIHZhbGlkYXRlVHJpZ2dlcixcbiAgICBdKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgdG91Y2hlZCxcbiAgICAgICAgZmllbGRSdWxlcyxcbiAgICAgICAgZ2V0RmllbGRSdWxlcyxcbiAgICAgICAgc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcixcbiAgICAgICAgc2V0RmllbGRzVmFsdWUsXG4gICAgICAgIGdldEZpZWxkVmFsdWUsXG4gICAgICAgIGdldEZpZWxkc1ZhbHVlLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkcyxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkLFxuICAgICAgICBoYW5kbGVTdWJtaXQsXG4gICAgICAgIGhhbmRsZVJlc2V0LFxuICAgICAgICByZXNldEZpZWxkcyxcbiAgICAgICAgZm9ybUluc3RhbmNlLFxuICAgICAgICBjb3JlQ29udGV4dFNoYXBlLFxuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgdXNlRm9ybUNvcmU7Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
253
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtQ29yZS50cyIsImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm1Db3JlLmpzIl0sIm5hbWVzIjpbInVzZVN0YXRlIiwidXNlTWVtbyIsInVzZVJlZiIsInVzZUV2ZW50Q2FsbGJhY2siLCJ1c2VNZW1vaXplZEZuIiwicmVzb2x2ZVZhbHVlIiwic2V0TmVzdGVkVmFsdWUiLCJydW5SdWxlc1N5bmMiLCJ1c2VGb3JtQ29yZSIsImNvbmZpZyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIl9jb25maWckaW5pdGlhbFZhbHVlcyIsImluaXRpYWxWYWx1ZXMiLCJvbkZpbmlzaCIsIm9uRmluaXNoRmFpbGVkIiwib25WYWx1ZXNDaGFuZ2UiLCJvblJlc2V0IiwiX2NvbmZpZyRzaXplIiwic2l6ZSIsIl9jb25maWckbGFiZWxBbGlnbiIsImxhYmVsQWxpZ24iLCJfY29uZmlnJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfY29uZmlnJGNvbG9uIiwiY29sb24iLCJfY29uZmlnJHJlcXVpcmVkTWFyayIsInJlcXVpcmVkTWFyayIsIl9jb25maWckdmFsaWRhdGVUcmlnZyIsInZhbGlkYXRlVHJpZ2dlciIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInZhbHVlcyIsInNldFZhbHVlcyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZXJyb3JzIiwic2V0RXJyb3JzIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJ3YXJuaW5ncyIsInNldFdhcm5pbmdzIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJ0b3VjaGVkIiwic2V0VG91Y2hlZCIsImZpZWxkUnVsZXNSZWYiLCJ2YWx1ZXNSZWYiLCJjb21taXRWYWx1ZXMiLCJuZXdWYWx1ZXMiLCJjdXJyZW50Iiwic2V0RmllbGRWYWx1ZSIsIm5hbWUiLCJ2YWx1ZSIsInByZXYiLCJpbmNsdWRlcyIsIk9iamVjdCIsImFzc2lnbiIsIl9kZWZpbmVQcm9wZXJ0eSIsIm5ld0Vycm9ycyIsInNldEZpZWxkRXJyb3IiLCJlcnJvciIsInNldEZpZWxkV2FybmluZyIsIndhcm5pbmciLCJuZXdXYXJuaW5ncyIsInJlZ2lzdGVyRmllbGQiLCJydWxlcyIsImdldEZpZWxkUnVsZXMiLCJ1bnJlZ2lzdGVyRmllbGQiLCJ2YWxpZGF0ZUZpZWxkIiwicHJvdmlkZWRWYWx1ZSIsIl9ydW5SdWxlc1N5bmMiLCJ2YWxpZGF0ZUZpZWxkcyIsImZpZWxkc1J1bGVzVG9WYWxpZGF0ZSIsImlzVmFsaWQiLCJrZXlzIiwiZm9yRWFjaCIsImhhbmRsZVN1Ym1pdEludGVybmFsIiwiY3VycmVudFZhbHVlcyIsImN1cnJlbnRSdWxlcyIsImhhc0Vycm9ycyIsImZpZWxkTmFtZSIsIl9ydW5SdWxlc1N5bmMyIiwic3VjY2VzcyIsImhhbmRsZVN1Ym1pdCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInJlc2V0RmllbGRzIiwiaGFuZGxlUmVzZXQiLCJnZXRGaWVsZFZhbHVlIiwiZ2V0RmllbGRzVmFsdWUiLCJzZXRGaWVsZHNWYWx1ZSIsInVwZGF0ZWRWYWx1ZXMiLCJmb3JtSW5zdGFuY2UiLCJzdWJtaXQiLCJjb3JlQ29udGV4dFNoYXBlIiwiZmllbGRSdWxlcyJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTQSxRQUFRLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxRQUFRLE9BQU87QUFFakQsT0FBT0MsZ0JBQWdCLE1BQU0sZ0NBQWdDO0FBQzdELE9BQU9DLGFBQWEsTUFBTSw2QkFBNkI7QUFDdkQsU0FBU0MsWUFBWSxFQUFFQyxjQUFjLFFBQVEsY0FBYztBQUMzRCxTQUFTQyxZQUFZLFFBQVEsYUFBYTtBQVExQyxPQUFPLElBQU1DLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFBLEVBQXlEO0VBQUEsSUFBckRDLE1BQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEs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QUNoQixDQUNGO0VBRUQsT0FBTztJQUNMSSxNQUFNLEVBQU5BLE1BQU07SUFDTkksTUFBTSxFQUFOQSxNQUFNO0lBQ05JLFFBQVEsRUFBUkEsUUFBUTtJQUNSSSxPQUFPLEVBQVBBLE9BQU87SUFDUDtJQUNBb0QsVUFBVSxFQUFFbEQsYUFBYSxDQUFDSSxPQUFPO0lBQ2pDaUIsYUFBYSxFQUFiQSxhQUFhO0lBQ2JoQixhQUFhLEVBQWJBLGFBQWE7SUFDYlMsYUFBYSxFQUFiQSxhQUFhO0lBQ2JFLGVBQWUsRUFBZkEsZUFBZTtJQUNmNkIsY0FBYyxFQUFkQSxjQUFjO0lBQ2RGLGFBQWEsRUFBYkEsYUFBYTtJQUNiQyxjQUFjLEVBQWRBLGNBQWM7SUFDZHJCLGFBQWEsRUFBYkEsYUFBYTtJQUNiRyxjQUFjLEVBQWRBLGNBQWM7SUFDZFAsYUFBYSxFQUFiQSxhQUFhO0lBQ2JHLGVBQWUsRUFBZkEsZUFBZTtJQUNmZ0IsWUFBWSxFQUFaQSxZQUFZO0lBQ1pJLFdBQVcsRUFBWEEsV0FBVztJQUNYRCxXQUFXLEVBQVhBLFdBQVc7SUFDWE0sWUFBWSxFQUFaQSxZQUFZO0lBQ1pFLGdCQUFnQixFQUFoQkE7RUN2REEsQ0R3REQ7QUFDSCxDQUFDO0FBRUQsZUFBZXpGLFdBQVciLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaG9va3MvdXNlRm9ybUNvcmUuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZVN0YXRlLCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSwgc2V0TmVzdGVkVmFsdWUgfSBmcm9tICcuLi9wYXRoVXRpbHMnO1xuaW1wb3J0IHsgcnVuUnVsZXNTeW5jIH0gZnJvbSAnLi4vcnVuUnVsZXMnO1xuZXhwb3J0IGNvbnN0IHVzZUZvcm1Db3JlID0gKGNvbmZpZyA9IHt9KSA9PiB7XG4gICAgY29uc3QgeyBpbml0aWFsVmFsdWVzID0ge30sIG9uRmluaXNoLCBvbkZpbmlzaEZhaWxlZCwgb25WYWx1ZXNDaGFuZ2UsIG9uUmVzZXQsIHNpemUgPSAnbWlkZGxlJywgbGFiZWxBbGlnbiA9ICdsZWZ0JywgZGlzYWJsZWQgPSBmYWxzZSwgY29sb24gPSB0cnVlLCByZXF1aXJlZE1hcmsgPSB0cnVlLCB2YWxpZGF0ZVRyaWdnZXIgPSAnb25DaGFuZ2UnLCB9ID0gY29uZmlnO1xuICAgIGNvbnN0IFt2YWx1ZXMsIHNldFZhbHVlc10gPSB1c2VTdGF0ZShpbml0aWFsVmFsdWVzKTtcbiAgICBjb25zdCBbZXJyb3JzLCBzZXRFcnJvcnNdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFt3YXJuaW5ncywgc2V0V2FybmluZ3NdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFt0b3VjaGVkLCBzZXRUb3VjaGVkXSA9IHVzZVN0YXRlKHt9KTtcbiAgICAvLyBMaXZlIHJ1bGUgcmVnaXN0cnkg4oCUIE9ORSBzdGFibGUgb2JqZWN0IG11dGF0ZWQgaW4gcGxhY2UuIFJlZ2lzdHJhdGlvbiBtdXN0XG4gICAgLy8gbm90IHRyaWdnZXIgcmVuZGVycywgYW5kIHN1Ym1pdC10aW1lIHZhbGlkYXRpb24gbXVzdCBhbHdheXMgcmVhZCB0aGUgbGF0ZXN0XG4gICAgLy8gcnVsZXMgKHRoZXkgY2FuIGNoYW5nZSBiZXR3ZWVuIHJlbmRlcnMsIGUuZy4gYSBjb25kaXRpb25hbCBgcmVxdWlyZWRgKS5cbiAgICBjb25zdCBmaWVsZFJ1bGVzUmVmID0gdXNlUmVmKHt9KTtcbiAgICAvLyBJbXBlcmF0aXZlIG1pcnJvciBvZiBgdmFsdWVzYC4gQ29tcHV0aW5nIHRoZSBuZXh0IHZhbHVlcyBPVVRTSURFIHRoZVxuICAgIC8vIHNldFN0YXRlIHVwZGF0ZXIga2VlcHMgdGhlIHVwZGF0ZXIgcHVyZSAoU3RyaWN0TW9kZSByZXBsYXlzIHVwZGF0ZXJzLFxuICAgIC8vIHdoaWNoIGRvdWJsZS1maXJlZCBvblZhbHVlc0NoYW5nZSkgYW5kIGxldHMgbXVsdGlwbGUgc2V0IGNhbGxzIGluIHRoZVxuICAgIC8vIHNhbWUgdGljayBzZWUgZWFjaCBvdGhlcidzIHdyaXRlcy5cbiAgICBjb25zdCB2YWx1ZXNSZWYgPSB1c2VSZWYodmFsdWVzKTtcbiAgICBjb25zdCBjb21taXRWYWx1ZXMgPSB1c2VNZW1vaXplZEZuKChuZXdWYWx1ZXMpID0+IHtcbiAgICAgICAgdmFsdWVzUmVmLmN1cnJlbnQgPSBuZXdWYWx1ZXM7XG4gICAgICAgIHNldFZhbHVlcyhuZXdWYWx1ZXMpO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkVmFsdWUgPSB1c2VNZW1vaXplZEZuKChuYW1lLCB2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBwcmV2ID0gdmFsdWVzUmVmLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlcyA9IG5hbWUuaW5jbHVkZXMoJy4nKVxuICAgICAgICAgICAgPyBzZXROZXN0ZWRWYWx1ZShwcmV2LCBuYW1lLCB2YWx1ZSlcbiAgICAgICAgICAgIDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgeyBbbmFtZV06IHZhbHVlIH0pO1xuICAgICAgICBjb21taXRWYWx1ZXMobmV3VmFsdWVzKTtcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2UgPT09IG51bGwgfHwgb25WYWx1ZXNDaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uVmFsdWVzQ2hhbmdlKHsgW25hbWVdOiB2YWx1ZSB9LCBuZXdWYWx1ZXMpO1xuICAgICAgICBpZiAodmFsdWUgIT09ICcnICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHNldEVycm9ycygocHJldikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghcHJldltuYW1lXSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RXJyb3JzID0gT2JqZWN0LmFzc2lnbih7fSwgcHJldik7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG5ld0Vycm9yc1tuYW1lXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3RXJyb3JzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBzZXRGaWVsZEVycm9yID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgZXJyb3IpID0+IHtcbiAgICAgICAgc2V0RXJyb3JzKChwcmV2KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXByZXZbbmFtZV0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IE9iamVjdC5hc3NpZ24oe30sIHByZXYpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdFcnJvcnNbbmFtZV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld0Vycm9ycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXYpLCB7IFtuYW1lXTogZXJyb3IgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkV2FybmluZyA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHdhcm5pbmcpID0+IHtcbiAgICAgICAgc2V0V2FybmluZ3MoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGlmICh3YXJuaW5nID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2W25hbWVdKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdXYXJuaW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHByZXYpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdXYXJuaW5nc1tuYW1lXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3V2FybmluZ3M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJldltuYW1lXSA9PT0gd2FybmluZylcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXYpLCB7IFtuYW1lXTogd2FybmluZyB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVnaXN0ZXJGaWVsZCA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHJ1bGVzKSA9PiB7XG4gICAgICAgIGZpZWxkUnVsZXNSZWYuY3VycmVudFtuYW1lXSA9IHJ1bGVzO1xuICAgIH0pO1xuICAgIGNvbnN0IGdldEZpZWxkUnVsZXMgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiB7XG4gICAgICAgIHJldHVybiBmaWVsZFJ1bGVzUmVmLmN1cnJlbnRbbmFtZV07XG4gICAgfSk7XG4gICAgY29uc3QgdW5yZWdpc3RlckZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4ge1xuICAgICAgICBkZWxldGUgZmllbGRSdWxlc1JlZi5jdXJyZW50W25hbWVdO1xuICAgIH0pO1xuICAgIGNvbnN0IHZhbGlkYXRlRmllbGQgPSB1c2VNZW1vaXplZEZuKChuYW1lLCBydWxlcyA9IFtdLCBwcm92aWRlZFZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcHJvdmlkZWRWYWx1ZSAhPT0gdW5kZWZpbmVkID8gcHJvdmlkZWRWYWx1ZSA6IHJlc29sdmVWYWx1ZSh2YWx1ZXNSZWYuY3VycmVudCwgbmFtZSk7XG4gICAgICAgIGNvbnN0IHsgZXJyb3IsIHdhcm5pbmcgfSA9IHJ1blJ1bGVzU3luYyhuYW1lLCB2YWx1ZSwgdmFsdWVzUmVmLmN1cnJlbnQsIHJ1bGVzKTtcbiAgICAgICAgc2V0RmllbGRXYXJuaW5nKG5hbWUsIHdhcm5pbmcpO1xuICAgICAgICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvcnNbbmFtZV0pIHtcbiAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gICAgY29uc3QgdmFsaWRhdGVGaWVsZHMgPSB1c2VNZW1vaXplZEZuKChmaWVsZHNSdWxlc1RvVmFsaWRhdGUgPSBmaWVsZFJ1bGVzUmVmLmN1cnJlbnQpID0+IHtcbiAgICAgICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICBPYmplY3Qua2V5cyhmaWVsZHNSdWxlc1RvVmFsaWRhdGUpLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVzID0gZmllbGRzUnVsZXNUb1ZhbGlkYXRlW25hbWVdO1xuICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUZpZWxkKG5hbWUsIHJ1bGVzKSkge1xuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpc1ZhbGlkO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdEludGVybmFsID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZXMgPSB2YWx1ZXNSZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgY3VycmVudFJ1bGVzID0gZmllbGRSdWxlc1JlZi5jdXJyZW50O1xuICAgICAgICBsZXQgaGFzRXJyb3JzID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IHt9O1xuICAgICAgICBjb25zdCBuZXdXYXJuaW5ncyA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50UnVsZXMpLmZvckVhY2goKGZpZWxkTmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByZXNvbHZlVmFsdWUoY3VycmVudFZhbHVlcywgZmllbGROYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IHsgZXJyb3IsIHdhcm5pbmcgfSA9IHJ1blJ1bGVzU3luYyhmaWVsZE5hbWUsIHZhbHVlLCBjdXJyZW50VmFsdWVzLCBjdXJyZW50UnVsZXNbZmllbGROYW1lXSk7XG4gICAgICAgICAgICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBuZXdFcnJvcnNbZmllbGROYW1lXSA9IGVycm9yO1xuICAgICAgICAgICAgICAgIGhhc0Vycm9ycyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAod2FybmluZyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG5ld1dhcm5pbmdzW2ZpZWxkTmFtZV0gPSB3YXJuaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc2V0RXJyb3JzKG5ld0Vycm9ycyk7XG4gICAgICAgIHNldFdhcm5pbmdzKG5ld1dhcm5pbmdzKTtcbiAgICAgICAgaWYgKCFoYXNFcnJvcnMpIHtcbiAgICAgICAgICAgIG9uRmluaXNoID09PSBudWxsIHx8IG9uRmluaXNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaChjdXJyZW50VmFsdWVzKTtcbiAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIHZhbHVlczogY3VycmVudFZhbHVlcyB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb25GaW5pc2hGYWlsZWQgPT09IG51bGwgfHwgb25GaW5pc2hGYWlsZWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoRmFpbGVkKHsgdmFsdWVzOiBjdXJyZW50VmFsdWVzLCBlcnJvcnM6IG5ld0Vycm9ycyB9KTtcbiAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcnM6IG5ld0Vycm9ycyB9O1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU3VibWl0ID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuIGhhbmRsZVN1Ym1pdEludGVybmFsKCk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVzZXRGaWVsZHMgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgY29tbWl0VmFsdWVzKGluaXRpYWxWYWx1ZXMpO1xuICAgICAgICBzZXRFcnJvcnMoe30pO1xuICAgICAgICBzZXRXYXJuaW5ncyh7fSk7XG4gICAgICAgIHNldFRvdWNoZWQoe30pO1xuICAgICAgICBvblJlc2V0ID09PSBudWxsIHx8IG9uUmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUmVzZXQoKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVSZXNldCA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJlc2V0RmllbGRzKCk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0RmllbGRWYWx1ZSA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVWYWx1ZSh2YWx1ZXNSZWYuY3VycmVudCwgbmFtZSk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0RmllbGRzVmFsdWUgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHZhbHVlc1JlZi5jdXJyZW50O1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkc1ZhbHVlID0gdXNlTWVtb2l6ZWRGbigobmV3VmFsdWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRWYWx1ZXMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHZhbHVlc1JlZi5jdXJyZW50KSwgbmV3VmFsdWVzKTtcbiAgICAgICAgY29tbWl0VmFsdWVzKHVwZGF0ZWRWYWx1ZXMpO1xuICAgICAgICBvblZhbHVlc0NoYW5nZSA9PT0gbnVsbCB8fCBvblZhbHVlc0NoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25WYWx1ZXNDaGFuZ2UobmV3VmFsdWVzLCB1cGRhdGVkVmFsdWVzKTtcbiAgICB9KTtcbiAgICBjb25zdCBmb3JtSW5zdGFuY2UgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgICAgIHN1Ym1pdDogaGFuZGxlU3VibWl0SW50ZXJuYWwsXG4gICAgICAgIHJlc2V0RmllbGRzLFxuICAgICAgICBnZXRGaWVsZFZhbHVlLFxuICAgICAgICBnZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHZhbGlkYXRlRmllbGRzLFxuICAgIH0pLCBbXG4gICAgICAgIGhhbmRsZVN1Ym1pdEludGVybmFsLFxuICAgICAgICByZXNldEZpZWxkcyxcbiAgICAgICAgZ2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZ2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHNldEZpZWxkc1ZhbHVlLFxuICAgICAgICBzZXRGaWVsZFZhbHVlLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkcyxcbiAgICBdKTtcbiAgICBjb25zdCBjb3JlQ29udGV4dFNoYXBlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgd2FybmluZ3MsXG4gICAgICAgIHRvdWNoZWQsXG4gICAgICAgIGZvcm1JbnN0YW5jZSxcbiAgICAgICAgc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcixcbiAgICAgICAgc2V0RmllbGRXYXJuaW5nLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkLFxuICAgICAgICByZWdpc3RlckZpZWxkLFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBjb2xvbixcbiAgICAgICAgcmVxdWlyZWRNYXJrLFxuICAgICAgICB2YWxpZGF0ZVRyaWdnZXIsXG4gICAgfSksIFtcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIHdhcm5pbmdzLFxuICAgICAgICB0b3VjaGVkLFxuICAgICAgICBmb3JtSW5zdGFuY2UsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHNldEZpZWxkRXJyb3IsXG4gICAgICAgIHNldEZpZWxkV2FybmluZyxcbiAgICAgICAgdmFsaWRhdGVGaWVsZCxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkLFxuICAgICAgICBzaXplLFxuICAgICAgICBsYWJlbEFsaWduLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgY29sb24sXG4gICAgICAgIHJlcXVpcmVkTWFyayxcbiAgICAgICAgdmFsaWRhdGVUcmlnZ2VyLFxuICAgIF0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICB3YXJuaW5ncyxcbiAgICAgICAgdG91Y2hlZCxcbiAgICAgICAgLy8gTGl2ZSByZWdpc3RyeSDigJQgc3RhYmxlIGlkZW50aXR5LCBtdXRhdGVkIGluIHBsYWNlIGJ5IHJlZ2lzdGVyL3VucmVnaXN0ZXIuXG4gICAgICAgIGZpZWxkUnVsZXM6IGZpZWxkUnVsZXNSZWYuY3VycmVudCxcbiAgICAgICAgZ2V0RmllbGRSdWxlcyxcbiAgICAgICAgc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcixcbiAgICAgICAgc2V0RmllbGRXYXJuaW5nLFxuICAgICAgICBzZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgZ2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZ2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHZhbGlkYXRlRmllbGQsXG4gICAgICAgIHZhbGlkYXRlRmllbGRzLFxuICAgICAgICByZWdpc3RlckZpZWxkLFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGhhbmRsZVN1Ym1pdCxcbiAgICAgICAgaGFuZGxlUmVzZXQsXG4gICAgICAgIHJlc2V0RmllbGRzLFxuICAgICAgICBmb3JtSW5zdGFuY2UsXG4gICAgICAgIGNvcmVDb250ZXh0U2hhcGUsXG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCB1c2VGb3JtQ29yZTsiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -3,13 +3,23 @@ import type { FC, ReactNode } from 'react';
|
|
|
3
3
|
import type { FormSize, FormLayout, LabelAlign, ValidateStatus, ValidateTrigger } from './constants';
|
|
4
4
|
export type { FormSize, FormLayout, LabelAlign, ValidateStatus, ValidateTrigger, };
|
|
5
5
|
export interface Rule {
|
|
6
|
+
/** Fails on undefined / null / '' / empty array */
|
|
6
7
|
required?: boolean;
|
|
7
8
|
message?: string;
|
|
9
|
+
/** For strings: min length; arrays: min item count; numbers: min value */
|
|
8
10
|
min?: number;
|
|
11
|
+
/** For strings: max length; arrays: max item count; numbers: max value */
|
|
9
12
|
max?: number;
|
|
10
13
|
pattern?: RegExp;
|
|
11
14
|
type?: 'number' | 'email' | 'url';
|
|
12
15
|
enum?: unknown[];
|
|
16
|
+
/** A failing rule produces a non-blocking warning instead of an error */
|
|
17
|
+
warningOnly?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Run this rule only on the given interactive trigger(s); rules without it
|
|
20
|
+
* follow the form-level validateTrigger. Submit always runs every rule.
|
|
21
|
+
*/
|
|
22
|
+
validateTrigger?: ValidateTrigger | ValidateTrigger[];
|
|
13
23
|
validator?: (value: unknown, values: Record<string, unknown>) => boolean | string | Promise<boolean | string>;
|
|
14
24
|
}
|
|
15
25
|
export interface FieldProps {
|
|
@@ -43,19 +53,24 @@ export interface FormCoreInstance {
|
|
|
43
53
|
setFieldValue: (name: string, value: unknown) => void;
|
|
44
54
|
validateFields: (fieldsRules?: Record<string, Rule[]>) => boolean;
|
|
45
55
|
}
|
|
46
|
-
/**
|
|
47
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Full form instance returned by useForm — extends FormCoreInstance with async
|
|
58
|
+
* validation, field helpers, etc. `Values` types the whole-form value shape
|
|
59
|
+
* (defaults to an open record for backward compatibility).
|
|
60
|
+
*/
|
|
61
|
+
export interface FormInstance<Values = Record<string, unknown>> {
|
|
48
62
|
getFieldValue: (name: string) => unknown;
|
|
49
|
-
getFieldsValue: (nameList?: string[]) =>
|
|
63
|
+
getFieldsValue: (nameList?: string[]) => Values;
|
|
50
64
|
setFieldValue: (name: string, value: unknown) => void;
|
|
51
|
-
setFieldsValue: (values:
|
|
65
|
+
setFieldsValue: (values: Partial<Values>) => void;
|
|
52
66
|
setFieldError: (name: string, error: string | null) => void;
|
|
53
67
|
setFieldsError: (errors: Record<string, string>) => void;
|
|
54
68
|
resetFields: (fields?: string[]) => void;
|
|
55
|
-
validateFields: (nameList?: string[]) => Promise<
|
|
56
|
-
submit: (callback?: (values:
|
|
69
|
+
validateFields: (nameList?: string[]) => Promise<Values>;
|
|
70
|
+
submit: (callback?: (values: Values) => void | Promise<void>) => Promise<Values | undefined>;
|
|
57
71
|
getFieldError: (name: string) => string | undefined;
|
|
58
72
|
getFieldsError: (nameList?: string[]) => Record<string, string>;
|
|
73
|
+
getFieldWarning: (name: string) => string | undefined;
|
|
59
74
|
isFieldTouched: (name: string) => boolean;
|
|
60
75
|
isFieldsTouched: (nameList?: string[], allTouched?: boolean) => boolean;
|
|
61
76
|
isFieldValidating: (name: string) => boolean;
|
|
@@ -70,14 +85,14 @@ export interface UseFormOptions {
|
|
|
70
85
|
validateTrigger?: ValidateTrigger;
|
|
71
86
|
rules?: Record<string, Rule[]>;
|
|
72
87
|
}
|
|
73
|
-
export interface UseFormCoreConfig {
|
|
74
|
-
initialValues?:
|
|
75
|
-
onFinish?: (values:
|
|
88
|
+
export interface UseFormCoreConfig<Values = Record<string, unknown>> {
|
|
89
|
+
initialValues?: Partial<Values>;
|
|
90
|
+
onFinish?: (values: Values) => void;
|
|
76
91
|
onFinishFailed?: (errorInfo: {
|
|
77
|
-
values:
|
|
92
|
+
values: Values;
|
|
78
93
|
errors: Record<string, string>;
|
|
79
94
|
}) => void;
|
|
80
|
-
onValuesChange?: (changedValues:
|
|
95
|
+
onValuesChange?: (changedValues: Partial<Values>, allValues: Values) => void;
|
|
81
96
|
onReset?: () => void;
|
|
82
97
|
size?: FormSize;
|
|
83
98
|
labelAlign?: LabelAlign;
|
|
@@ -90,10 +105,12 @@ export interface UseFormCoreConfig {
|
|
|
90
105
|
export interface FormCoreContextShape {
|
|
91
106
|
values: Record<string, unknown>;
|
|
92
107
|
errors: Record<string, string>;
|
|
108
|
+
warnings: Record<string, string>;
|
|
93
109
|
touched: Record<string, boolean>;
|
|
94
110
|
formInstance: FormCoreInstance;
|
|
95
111
|
setFieldValue: (name: string, value: unknown) => void;
|
|
96
112
|
setFieldError: (name: string, error: string | null) => void;
|
|
113
|
+
setFieldWarning: (name: string, warning: string | null) => void;
|
|
97
114
|
validateField: (name: string, rules: Rule[], providedValue?: unknown) => boolean;
|
|
98
115
|
registerField: (name: string, rules: Rule[]) => void;
|
|
99
116
|
unregisterField: (name: string) => void;
|
|
@@ -105,16 +122,18 @@ export interface FormCoreContextShape {
|
|
|
105
122
|
validateTrigger: ValidateTrigger;
|
|
106
123
|
}
|
|
107
124
|
/** Config for useForm — accepts all UseFormCoreConfig fields */
|
|
108
|
-
export type UseFormConfig = UseFormCoreConfig
|
|
125
|
+
export type UseFormConfig<Values = Record<string, unknown>> = UseFormCoreConfig<Values>;
|
|
109
126
|
/** Internal state exposed by useForm for ProForm integration */
|
|
110
127
|
export interface UseFormInternals {
|
|
111
128
|
values: Record<string, unknown>;
|
|
112
129
|
errors: Record<string, string>;
|
|
130
|
+
warnings: Record<string, string>;
|
|
113
131
|
touched: Record<string, boolean>;
|
|
114
132
|
validating: Record<string, boolean>;
|
|
115
133
|
fieldRules: Record<string, Rule[]>;
|
|
116
134
|
setFieldValue: (name: string, value: unknown) => void;
|
|
117
135
|
setFieldError: (name: string, error: string | null) => void;
|
|
136
|
+
setFieldWarning: (name: string, warning: string | null) => void;
|
|
118
137
|
validateField: (name: string, rules: Rule[], providedValue?: unknown) => boolean;
|
|
119
138
|
validateFieldAsync: (name: string, value: unknown, rules: Rule[]) => Promise<{
|
|
120
139
|
isValid: boolean;
|
|
@@ -133,11 +152,13 @@ export interface UseFormReturn {
|
|
|
133
152
|
export interface UseFormCoreReturn {
|
|
134
153
|
values: Record<string, unknown>;
|
|
135
154
|
errors: Record<string, string>;
|
|
155
|
+
warnings: Record<string, string>;
|
|
136
156
|
touched: Record<string, boolean>;
|
|
137
157
|
fieldRules: Record<string, Rule[]>;
|
|
138
158
|
getFieldRules: (name: string) => Rule[] | undefined;
|
|
139
159
|
setFieldValue: (name: string, value: unknown) => void;
|
|
140
160
|
setFieldError: (name: string, error: string | null) => void;
|
|
161
|
+
setFieldWarning: (name: string, warning: string | null) => void;
|
|
141
162
|
setFieldsValue: (values: Record<string, unknown>) => void;
|
|
142
163
|
getFieldValue: (name: string) => unknown;
|
|
143
164
|
getFieldsValue: () => Record<string, unknown>;
|
|
@@ -1,13 +1,23 @@
|
|
|
1
|
-
import type { Rule } from './interface';
|
|
1
|
+
import type { Rule, ValidateTrigger } from './interface';
|
|
2
|
+
export interface RuleRunResult {
|
|
3
|
+
error: string | null;
|
|
4
|
+
warning: string | null;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Filter rules applicable to an interactive trigger. A rule WITHOUT an
|
|
8
|
+
* explicit `validateTrigger` follows the form-level trigger; a rule WITH one
|
|
9
|
+
* runs on exactly those trigger(s), regardless of the form-level setting.
|
|
10
|
+
* Submit-time validation bypasses this filter and runs every rule.
|
|
11
|
+
*/
|
|
12
|
+
export declare function filterRulesByTrigger(rules: Rule[], trigger: ValidateTrigger, formTrigger: ValidateTrigger): Rule[];
|
|
2
13
|
/**
|
|
3
14
|
* Synchronous rule run. Custom validators are invoked but NOT awaited — a
|
|
4
15
|
* promise-returning validator is treated as failing (matches the legacy sync
|
|
5
|
-
* `validateField` behaviour).
|
|
16
|
+
* `validateField` behaviour).
|
|
6
17
|
*/
|
|
7
|
-
export declare function runRulesSync(name: string, value: unknown, values: Record<string, unknown>, rules: Rule[]):
|
|
18
|
+
export declare function runRulesSync(name: string, value: unknown, values: Record<string, unknown>, rules: Rule[]): RuleRunResult;
|
|
8
19
|
/**
|
|
9
20
|
* Asynchronous rule run. Custom validators are awaited (sync or async). A
|
|
10
|
-
* validator returning `undefined` is treated as passing.
|
|
11
|
-
* error message, or null.
|
|
21
|
+
* validator returning `undefined` is treated as passing.
|
|
12
22
|
*/
|
|
13
|
-
export declare function runRulesAsync(name: string, value: unknown, values: Record<string, unknown>, rules: Rule[]): Promise<
|
|
23
|
+
export declare function runRulesAsync(name: string, value: unknown, values: Record<string, unknown>, rules: Rule[]): Promise<RuleRunResult>;
|