mobx-formkit 1.0.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/AGENTS.md +761 -0
- package/LICENSE +21 -0
- package/README.md +214 -0
- package/lib/ArrayMap.d.ts +50 -0
- package/lib/ArrayMap.d.ts.map +1 -0
- package/lib/ArrayMap.js +151 -0
- package/lib/ArrayMap.js.map +1 -0
- package/lib/Base.d.ts +237 -0
- package/lib/Base.d.ts.map +1 -0
- package/lib/Base.js +872 -0
- package/lib/Base.js.map +1 -0
- package/lib/Bindings.d.ts +28 -0
- package/lib/Bindings.d.ts.map +1 -0
- package/lib/Bindings.js +73 -0
- package/lib/Bindings.js.map +1 -0
- package/lib/Field.d.ts +195 -0
- package/lib/Field.d.ts.map +1 -0
- package/lib/Field.js +734 -0
- package/lib/Field.js.map +1 -0
- package/lib/Form.d.ts +75 -0
- package/lib/Form.d.ts.map +1 -0
- package/lib/Form.js +199 -0
- package/lib/Form.js.map +1 -0
- package/lib/Options.d.ts +9 -0
- package/lib/Options.d.ts.map +1 -0
- package/lib/Options.js +85 -0
- package/lib/Options.js.map +1 -0
- package/lib/State.d.ts +43 -0
- package/lib/State.d.ts.map +1 -0
- package/lib/State.js +147 -0
- package/lib/State.js.map +1 -0
- package/lib/Validator.d.ts +25 -0
- package/lib/Validator.d.ts.map +1 -0
- package/lib/Validator.js +143 -0
- package/lib/Validator.js.map +1 -0
- package/lib/compat.d.ts +29 -0
- package/lib/compat.d.ts.map +1 -0
- package/lib/compat.js +117 -0
- package/lib/compat.js.map +1 -0
- package/lib/composer.d.ts +26 -0
- package/lib/composer.d.ts.map +1 -0
- package/lib/composer.js +65 -0
- package/lib/composer.js.map +1 -0
- package/lib/esm/ArrayMap.js +146 -0
- package/lib/esm/ArrayMap.js.map +1 -0
- package/lib/esm/Base.js +868 -0
- package/lib/esm/Base.js.map +1 -0
- package/lib/esm/Bindings.js +69 -0
- package/lib/esm/Bindings.js.map +1 -0
- package/lib/esm/Field.js +730 -0
- package/lib/esm/Field.js.map +1 -0
- package/lib/esm/Form.js +195 -0
- package/lib/esm/Form.js.map +1 -0
- package/lib/esm/Options.js +81 -0
- package/lib/esm/Options.js.map +1 -0
- package/lib/esm/State.js +143 -0
- package/lib/esm/State.js.map +1 -0
- package/lib/esm/Validator.js +139 -0
- package/lib/esm/Validator.js.map +1 -0
- package/lib/esm/compat.js +96 -0
- package/lib/esm/compat.js.map +1 -0
- package/lib/esm/composer.js +63 -0
- package/lib/esm/composer.js.map +1 -0
- package/lib/esm/index.js +8 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/models/FieldProps.js +116 -0
- package/lib/esm/models/FieldProps.js.map +1 -0
- package/lib/esm/models/OptionsModel.js +51 -0
- package/lib/esm/models/OptionsModel.js.map +1 -0
- package/lib/esm/models/StateInterface.js +9 -0
- package/lib/esm/models/StateInterface.js.map +1 -0
- package/lib/esm/models/ValidatorInterface.js +8 -0
- package/lib/esm/models/ValidatorInterface.js.map +1 -0
- package/lib/esm/parser.js +235 -0
- package/lib/esm/parser.js.map +1 -0
- package/lib/esm/props.js +118 -0
- package/lib/esm/props.js.map +1 -0
- package/lib/esm/utils.js +156 -0
- package/lib/esm/utils.js.map +1 -0
- package/lib/esm/validators/AJV.js +105 -0
- package/lib/esm/validators/AJV.js.map +1 -0
- package/lib/esm/validators/DVR.js +104 -0
- package/lib/esm/validators/DVR.js.map +1 -0
- package/lib/esm/validators/JOI.js +54 -0
- package/lib/esm/validators/JOI.js.map +1 -0
- package/lib/esm/validators/VALIBOT.js +50 -0
- package/lib/esm/validators/VALIBOT.js.map +1 -0
- package/lib/esm/validators/VINEJS.js +60 -0
- package/lib/esm/validators/VINEJS.js.map +1 -0
- package/lib/esm/validators/VJF.js +88 -0
- package/lib/esm/validators/VJF.js.map +1 -0
- package/lib/esm/validators/YUP.js +69 -0
- package/lib/esm/validators/YUP.js.map +1 -0
- package/lib/esm/validators/ZOD.js +43 -0
- package/lib/esm/validators/ZOD.js.map +1 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +15 -0
- package/lib/index.js.map +1 -0
- package/lib/models/BaseInterface.d.ts +40 -0
- package/lib/models/BaseInterface.d.ts.map +1 -0
- package/lib/models/BindingsInterface.d.ts +18 -0
- package/lib/models/BindingsInterface.d.ts.map +1 -0
- package/lib/models/FieldInterface.d.ts +88 -0
- package/lib/models/FieldInterface.d.ts.map +1 -0
- package/lib/models/FieldProps.d.ts +111 -0
- package/lib/models/FieldProps.d.ts.map +1 -0
- package/lib/models/FieldProps.js +116 -0
- package/lib/models/FieldProps.js.map +1 -0
- package/lib/models/FormInterface.d.ts +184 -0
- package/lib/models/FormInterface.d.ts.map +1 -0
- package/lib/models/OptionsInterface.d.ts +8 -0
- package/lib/models/OptionsInterface.d.ts.map +1 -0
- package/lib/models/OptionsModel.d.ts +99 -0
- package/lib/models/OptionsModel.d.ts.map +1 -0
- package/lib/models/OptionsModel.js +51 -0
- package/lib/models/OptionsModel.js.map +1 -0
- package/lib/models/SharedActionsInterface.d.ts +27 -0
- package/lib/models/SharedActionsInterface.d.ts.map +1 -0
- package/lib/models/SharedEventsInterface.d.ts +8 -0
- package/lib/models/SharedEventsInterface.d.ts.map +1 -0
- package/lib/models/SharedHelpersInterface.d.ts +26 -0
- package/lib/models/SharedHelpersInterface.d.ts.map +1 -0
- package/lib/models/SharedInitializerInterface.d.ts +6 -0
- package/lib/models/SharedInitializerInterface.d.ts.map +1 -0
- package/lib/models/SharedUtilsInterface.d.ts +10 -0
- package/lib/models/SharedUtilsInterface.d.ts.map +1 -0
- package/lib/models/StateInterface.d.ts +37 -0
- package/lib/models/StateInterface.d.ts.map +1 -0
- package/lib/models/StateInterface.js +9 -0
- package/lib/models/StateInterface.js.map +1 -0
- package/lib/models/ValidatorInterface.d.ts +74 -0
- package/lib/models/ValidatorInterface.d.ts.map +1 -0
- package/lib/models/ValidatorInterface.js +8 -0
- package/lib/models/ValidatorInterface.js.map +1 -0
- package/lib/parser.d.ts +13 -0
- package/lib/parser.d.ts.map +1 -0
- package/lib/parser.js +247 -0
- package/lib/parser.js.map +1 -0
- package/lib/props.d.ts +14 -0
- package/lib/props.d.ts.map +1 -0
- package/lib/props.js +120 -0
- package/lib/props.js.map +1 -0
- package/lib/utils.d.ts +34 -0
- package/lib/utils.d.ts.map +1 -0
- package/lib/utils.js +182 -0
- package/lib/utils.js.map +1 -0
- package/lib/validators/AJV.d.ts +4 -0
- package/lib/validators/AJV.d.ts.map +1 -0
- package/lib/validators/AJV.js +109 -0
- package/lib/validators/AJV.js.map +1 -0
- package/lib/validators/DVR.d.ts +4 -0
- package/lib/validators/DVR.d.ts.map +1 -0
- package/lib/validators/DVR.js +108 -0
- package/lib/validators/DVR.js.map +1 -0
- package/lib/validators/JOI.d.ts +4 -0
- package/lib/validators/JOI.d.ts.map +1 -0
- package/lib/validators/JOI.js +58 -0
- package/lib/validators/JOI.js.map +1 -0
- package/lib/validators/VALIBOT.d.ts +4 -0
- package/lib/validators/VALIBOT.d.ts.map +1 -0
- package/lib/validators/VALIBOT.js +73 -0
- package/lib/validators/VALIBOT.js.map +1 -0
- package/lib/validators/VINEJS.d.ts +4 -0
- package/lib/validators/VINEJS.d.ts.map +1 -0
- package/lib/validators/VINEJS.js +64 -0
- package/lib/validators/VINEJS.js.map +1 -0
- package/lib/validators/VJF.d.ts +4 -0
- package/lib/validators/VJF.d.ts.map +1 -0
- package/lib/validators/VJF.js +92 -0
- package/lib/validators/VJF.js.map +1 -0
- package/lib/validators/YUP.d.ts +4 -0
- package/lib/validators/YUP.d.ts.map +1 -0
- package/lib/validators/YUP.js +73 -0
- package/lib/validators/YUP.js.map +1 -0
- package/lib/validators/ZOD.d.ts +4 -0
- package/lib/validators/ZOD.d.ts.map +1 -0
- package/lib/validators/ZOD.js +47 -0
- package/lib/validators/ZOD.js.map +1 -0
- package/package.json +183 -0
- package/src/ArrayMap.ts +165 -0
- package/src/Base.ts +1229 -0
- package/src/Bindings.ts +85 -0
- package/src/Field.ts +1034 -0
- package/src/Form.ts +264 -0
- package/src/Options.ts +91 -0
- package/src/State.ts +183 -0
- package/src/Validator.ts +177 -0
- package/src/compat.ts +104 -0
- package/src/composer.ts +82 -0
- package/src/index.ts +7 -0
- package/src/models/BaseInterface.ts +45 -0
- package/src/models/BindingsInterface.ts +25 -0
- package/src/models/FieldInterface.ts +97 -0
- package/src/models/FieldProps.ts +116 -0
- package/src/models/FormInterface.ts +203 -0
- package/src/models/OptionsInterface.ts +9 -0
- package/src/models/OptionsModel.ts +100 -0
- package/src/models/SharedActionsInterface.ts +30 -0
- package/src/models/SharedEventsInterface.ts +8 -0
- package/src/models/SharedHelpersInterface.ts +12 -0
- package/src/models/SharedInitializerInterface.ts +6 -0
- package/src/models/SharedUtilsInterface.ts +10 -0
- package/src/models/StateInterface.ts +44 -0
- package/src/models/ValidatorInterface.ts +88 -0
- package/src/parser.ts +327 -0
- package/src/props.ts +127 -0
- package/src/utils.ts +218 -0
- package/src/validators/AJV.ts +140 -0
- package/src/validators/DVR.ts +145 -0
- package/src/validators/JOI.ts +79 -0
- package/src/validators/VALIBOT.ts +70 -0
- package/src/validators/VINEJS.ts +83 -0
- package/src/validators/VJF.ts +123 -0
- package/src/validators/YUP.ts +90 -0
- package/src/validators/ZOD.ts +66 -0
- package/umd/MobxFormkit.umd.js +3093 -0
- package/umd/MobxFormkit.umd.js.map +1 -0
- package/umd/MobxFormkit.umd.min.js +2 -0
- package/umd/MobxFormkit.umd.min.js.map +1 -0
- package/umd/MobxFormkitComposer.umd.js +183 -0
- package/umd/MobxFormkitComposer.umd.js.map +1 -0
- package/umd/MobxFormkitComposer.umd.min.js +2 -0
- package/umd/MobxFormkitComposer.umd.min.js.map +1 -0
- package/umd/MobxFormkitValidatorAJV.umd.js +113 -0
- package/umd/MobxFormkitValidatorAJV.umd.js.map +1 -0
- package/umd/MobxFormkitValidatorAJV.umd.min.js +2 -0
- package/umd/MobxFormkitValidatorAJV.umd.min.js.map +1 -0
- package/umd/MobxFormkitValidatorDVR.umd.js +110 -0
- package/umd/MobxFormkitValidatorDVR.umd.js.map +1 -0
- package/umd/MobxFormkitValidatorDVR.umd.min.js +2 -0
- package/umd/MobxFormkitValidatorDVR.umd.min.js.map +1 -0
- package/umd/MobxFormkitValidatorJOI.umd.js +62 -0
- package/umd/MobxFormkitValidatorJOI.umd.js.map +1 -0
- package/umd/MobxFormkitValidatorJOI.umd.min.js +2 -0
- package/umd/MobxFormkitValidatorJOI.umd.min.js.map +1 -0
- package/umd/MobxFormkitValidatorVALIBOT.umd.js +8032 -0
- package/umd/MobxFormkitValidatorVALIBOT.umd.js.map +1 -0
- package/umd/MobxFormkitValidatorVALIBOT.umd.min.js +2 -0
- package/umd/MobxFormkitValidatorVALIBOT.umd.min.js.map +1 -0
- package/umd/MobxFormkitValidatorVINEJS.umd.js +11737 -0
- package/umd/MobxFormkitValidatorVINEJS.umd.js.map +1 -0
- package/umd/MobxFormkitValidatorVINEJS.umd.min.js +2 -0
- package/umd/MobxFormkitValidatorVINEJS.umd.min.js.map +1 -0
- package/umd/MobxFormkitValidatorVJF.umd.js +96 -0
- package/umd/MobxFormkitValidatorVJF.umd.js.map +1 -0
- package/umd/MobxFormkitValidatorVJF.umd.min.js +2 -0
- package/umd/MobxFormkitValidatorVJF.umd.min.js.map +1 -0
- package/umd/MobxFormkitValidatorYUP.umd.js +77 -0
- package/umd/MobxFormkitValidatorYUP.umd.js.map +1 -0
- package/umd/MobxFormkitValidatorYUP.umd.min.js +2 -0
- package/umd/MobxFormkitValidatorYUP.umd.min.js.map +1 -0
- package/umd/MobxFormkitValidatorZOD.umd.js +49 -0
- package/umd/MobxFormkitValidatorZOD.umd.js.map +1 -0
- package/umd/MobxFormkitValidatorZOD.umd.min.js +2 -0
- package/umd/MobxFormkitValidatorZOD.umd.min.js.map +1 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var vine = require('@vinejs/vine');
|
|
6
|
+
|
|
7
|
+
class VINEJS {
|
|
8
|
+
promises = [];
|
|
9
|
+
config;
|
|
10
|
+
state;
|
|
11
|
+
extend;
|
|
12
|
+
validator;
|
|
13
|
+
schema;
|
|
14
|
+
compiled;
|
|
15
|
+
constructor({ config, state = null, promises = [], }) {
|
|
16
|
+
this.state = state;
|
|
17
|
+
this.promises = promises;
|
|
18
|
+
this.config = config;
|
|
19
|
+
this.extend = config?.extend;
|
|
20
|
+
this.validator = config.package ?? vine;
|
|
21
|
+
this.schema = config.schema;
|
|
22
|
+
this.compiled = this.validator.compile(this.schema);
|
|
23
|
+
this.extendValidator();
|
|
24
|
+
}
|
|
25
|
+
extendValidator() {
|
|
26
|
+
if (typeof this.extend === "function") {
|
|
27
|
+
this.extend({
|
|
28
|
+
validator: this.validator,
|
|
29
|
+
form: this.state.form,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// VineJS emits dot-notation paths (e.g. 'members.0.name') which match
|
|
34
|
+
// the MRF field.path convention.
|
|
35
|
+
validate(field) {
|
|
36
|
+
const validationPromise = this.compiled
|
|
37
|
+
.validate(field.state.form.flatMapValues)
|
|
38
|
+
.then(() => field.setValidationAsyncData(true))
|
|
39
|
+
.catch((error) => this.handleAsyncFail(field, error))
|
|
40
|
+
.then(() => this.executeAsyncValidation(field));
|
|
41
|
+
this.promises.push(validationPromise);
|
|
42
|
+
}
|
|
43
|
+
handleAsyncFail(field, error) {
|
|
44
|
+
const messages = error?.messages ?? [];
|
|
45
|
+
if (!messages.length)
|
|
46
|
+
return;
|
|
47
|
+
const fieldError = messages.find((item) => item.field === field.path);
|
|
48
|
+
if (fieldError) {
|
|
49
|
+
field.setValidationAsyncData(false, fieldError.message);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
executeAsyncValidation(field) {
|
|
53
|
+
if (field.validationAsyncData.valid === false) {
|
|
54
|
+
field.invalidate(field.validationAsyncData.message ?? undefined, false, true);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
var VINEJS_default = (config) => ({
|
|
59
|
+
class: (VINEJS),
|
|
60
|
+
config,
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
exports.default = VINEJS_default;
|
|
64
|
+
//# sourceMappingURL=VINEJS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VINEJS.js","sources":["../../src/validators/VINEJS.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAWA,MAAM,MAAM,CAAA;IACV,QAAQ,GAAmB,EAAE;AAC7B,IAAA,MAAM;AACN,IAAA,KAAK;AACL,IAAA,MAAM;AACN,IAAA,SAAS;AACT,IAAA,MAAM;AACN,IAAA,QAAQ;IAER,WAAA,CAAY,EACV,MAAM,EACN,KAAK,GAAG,IAAI,EACZ,QAAQ,GAAG,EAAE,GAC2B,EAAA;AACxC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM;QAC5B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI;AACvC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QAEnD,IAAI,CAAC,eAAe,EAAE;IACxB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;YACrC,IAAI,CAAC,MAAM,CAAC;gBACV,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,gBAAA,IAAI,EAAE,IAAI,CAAC,KAAM,CAAC,IAAI;AACvB,aAAA,CAAC;QACJ;IACF;;;AAIA,IAAA,QAAQ,CAAC,KAAqB,EAAA;AAC5B,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC;aAC5B,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa;aACvC,IAAI,CAAC,MAAM,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC;AAC7C,aAAA,KAAK,CAAC,CAAC,KAAU,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC;aACxD,IAAI,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;AAEjD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACvC;IAEA,eAAe,CAAC,KAAqB,EAAE,KAAU,EAAA;AAC/C,QAAA,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAQ,IAAI,EAAE;QACtC,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE;AAEtB,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAC9B,CAAC,IAAS,KAAK,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CACzC;QAED,IAAI,UAAU,EAAE;YACd,KAAK,CAAC,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;QACzD;IACF;AAEA,IAAA,sBAAsB,CAAC,KAAqB,EAAA;QAC1C,IAAI,KAAK,CAAC,mBAAmB,CAAC,KAAK,KAAK,KAAK,EAAE;AAC7C,YAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,IAAI,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC;QAC/E;IACF;AACD;AAED,qBAAe,CACb,MAA2C,MACT;IAClC,KAAK,GAAE,MAAkB,CAAA;IACzB,MAAM;AACP,CAAA,CAAC;;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ValidationPlugin, ValidationPluginConfig } from "../models/ValidatorInterface";
|
|
2
|
+
declare const _default: <TValidator = any>(config?: ValidationPluginConfig<TValidator>) => ValidationPlugin<TValidator>;
|
|
3
|
+
export default _default;
|
|
4
|
+
//# sourceMappingURL=VJF.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VJF.d.ts","sourceRoot":"","sources":["../../src/validators/VJF.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EAGvB,MAAM,8BAA8B,CAAC;yBA4GtB,UAAU,GAAG,GAAG,EAC9B,SAAS,sBAAsB,CAAC,UAAU,CAAC,KAC1C,gBAAgB,CAAC,UAAU,CAAC;AAF/B,wBAKK"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
function isPromise(obj) {
|
|
6
|
+
return (!!obj &&
|
|
7
|
+
typeof obj.then === "function" &&
|
|
8
|
+
(typeof obj === "object" || typeof obj === "function"));
|
|
9
|
+
}
|
|
10
|
+
class VJF {
|
|
11
|
+
promises;
|
|
12
|
+
config;
|
|
13
|
+
state;
|
|
14
|
+
extend;
|
|
15
|
+
validator;
|
|
16
|
+
constructor({ config, state = null, promises = [], }) {
|
|
17
|
+
this.state = state;
|
|
18
|
+
this.promises = promises;
|
|
19
|
+
this.config = config;
|
|
20
|
+
this.extend = config?.extend;
|
|
21
|
+
this.validator = config?.package;
|
|
22
|
+
this.extendValidator();
|
|
23
|
+
}
|
|
24
|
+
extendValidator() {
|
|
25
|
+
if (typeof this.extend === "function") {
|
|
26
|
+
this.extend({
|
|
27
|
+
validator: this.validator,
|
|
28
|
+
form: this.state.form,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
validate(field) {
|
|
33
|
+
if (!field.validators)
|
|
34
|
+
return;
|
|
35
|
+
const validators = Array.isArray(field.validators) ? field.validators : [field.validators];
|
|
36
|
+
validators.forEach((fn) => this.collectData(fn, field));
|
|
37
|
+
this.executeValidation(field);
|
|
38
|
+
}
|
|
39
|
+
collectData(fn, field) {
|
|
40
|
+
const result = this.handleFunctionResult(fn, field);
|
|
41
|
+
if (isPromise(result)) {
|
|
42
|
+
const $p = result
|
|
43
|
+
.then(([valid, message]) => field.setValidationAsyncData(valid, message))
|
|
44
|
+
.then(() => this.executeAsyncValidation(field));
|
|
45
|
+
this.promises.push($p);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
field.validationFunctionsData.unshift({
|
|
49
|
+
valid: result[0],
|
|
50
|
+
message: result[1],
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
executeValidation(field) {
|
|
54
|
+
field.validationFunctionsData.forEach(({ valid, message }) => {
|
|
55
|
+
if (valid === false) {
|
|
56
|
+
field.invalidate(message, false);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
executeAsyncValidation(field) {
|
|
61
|
+
if (field.validationAsyncData.valid === false) {
|
|
62
|
+
field.invalidate(field.validationAsyncData.message ?? undefined, false, true);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
handleFunctionResult(fn, field) {
|
|
66
|
+
const result = fn({
|
|
67
|
+
validator: this.validator,
|
|
68
|
+
form: this.state.form,
|
|
69
|
+
field,
|
|
70
|
+
});
|
|
71
|
+
if (Array.isArray(result)) {
|
|
72
|
+
return [result[0] || false, result[1] || "Error"];
|
|
73
|
+
}
|
|
74
|
+
if (typeof result === 'boolean') {
|
|
75
|
+
return [result, "Error"];
|
|
76
|
+
}
|
|
77
|
+
if (typeof result === 'string') {
|
|
78
|
+
return [false, result];
|
|
79
|
+
}
|
|
80
|
+
if (isPromise(result)) {
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
return [false, "Error"];
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
var VJF_default = (config) => ({
|
|
87
|
+
class: (VJF),
|
|
88
|
+
config,
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
exports.default = VJF_default;
|
|
92
|
+
//# sourceMappingURL=VJF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VJF.js","sources":["../../src/validators/VJF.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ValidationPlugin, ValidationPluginConfig } from "../models/ValidatorInterface";
|
|
2
|
+
declare const _default: <TValidator = any>(config?: ValidationPluginConfig<TValidator>) => ValidationPlugin<TValidator>;
|
|
3
|
+
export default _default;
|
|
4
|
+
//# sourceMappingURL=YUP.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"YUP.d.ts","sourceRoot":"","sources":["../../src/validators/YUP.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EAGvB,MAAM,8BAA8B,CAAC;yBA+EtB,UAAU,GAAG,GAAG,EAC9B,SAAS,sBAAsB,CAAC,UAAU,CAAC,KAC1C,gBAAgB,CAAC,UAAU,CAAC;AAF/B,wBAKK"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
class YUP {
|
|
6
|
+
promises = [];
|
|
7
|
+
config;
|
|
8
|
+
state;
|
|
9
|
+
extend;
|
|
10
|
+
validator;
|
|
11
|
+
schema;
|
|
12
|
+
constructor({ config, state = null, promises = [], }) {
|
|
13
|
+
this.state = state;
|
|
14
|
+
this.promises = promises;
|
|
15
|
+
this.config = config;
|
|
16
|
+
this.extend = config?.extend;
|
|
17
|
+
this.validator = config.package;
|
|
18
|
+
this.schema = config.schema(this.validator);
|
|
19
|
+
this.extendValidator();
|
|
20
|
+
}
|
|
21
|
+
// Metodo per estendere il validatore
|
|
22
|
+
extendValidator() {
|
|
23
|
+
if (typeof this.extend === 'function') {
|
|
24
|
+
this.extend({
|
|
25
|
+
validator: this.validator,
|
|
26
|
+
form: this.state.form,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Metodo di validazione principale
|
|
31
|
+
validate(field) {
|
|
32
|
+
const fieldValidationPromise = this.createValidationPromise(field);
|
|
33
|
+
this.promises.push(fieldValidationPromise);
|
|
34
|
+
}
|
|
35
|
+
// Creazione della promise per la validazione
|
|
36
|
+
createValidationPromise(field) {
|
|
37
|
+
return new Promise((resolve) => {
|
|
38
|
+
this.schema
|
|
39
|
+
.validateAt(field.path, this.state.form.values(), { strict: true })
|
|
40
|
+
.then(() => this.handleAsyncPasses(field, resolve))
|
|
41
|
+
.catch((error) => this.handleAsyncFails(field, resolve, error));
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
// Gestione dei successi della validazione asincrona
|
|
45
|
+
handleAsyncPasses(field, resolve) {
|
|
46
|
+
field.setValidationAsyncData(true);
|
|
47
|
+
resolve();
|
|
48
|
+
}
|
|
49
|
+
// Gestione dei fallimenti della validazione asincrona
|
|
50
|
+
handleAsyncFails(field, resolve, error) {
|
|
51
|
+
// Yup a volte restituisce errori senza path (es. array vuoti)
|
|
52
|
+
const isSameField = error.path === field.path || error.path === undefined;
|
|
53
|
+
if (isSameField) {
|
|
54
|
+
const message = error.message?.replace(error.path ?? field.path, field.label);
|
|
55
|
+
field.setValidationAsyncData(false, message);
|
|
56
|
+
this.executeAsyncValidation(field);
|
|
57
|
+
}
|
|
58
|
+
resolve(undefined);
|
|
59
|
+
}
|
|
60
|
+
// Esecuzione della validazione asincrona
|
|
61
|
+
executeAsyncValidation(field) {
|
|
62
|
+
if (field.validationAsyncData.valid === false) {
|
|
63
|
+
field.invalidate(field.validationAsyncData.message, false, true);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
var YUP_default = (config) => ({
|
|
68
|
+
class: (YUP),
|
|
69
|
+
config,
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
exports.default = YUP_default;
|
|
73
|
+
//# sourceMappingURL=YUP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"YUP.js","sources":["../../src/validators/YUP.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ValidationPlugin, ValidationPluginConfig } from "../models/ValidatorInterface";
|
|
2
|
+
declare const _default: <TValidator = any>(config?: ValidationPluginConfig<TValidator>) => ValidationPlugin<TValidator>;
|
|
3
|
+
export default _default;
|
|
4
|
+
//# sourceMappingURL=ZOD.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZOD.d.ts","sourceRoot":"","sources":["../../src/validators/ZOD.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EAGvB,MAAM,8BAA8B,CAAC;yBAkDtB,UAAU,GAAG,GAAG,EAC9B,SAAS,sBAAsB,CAAC,UAAU,CAAC,KAC1C,gBAAgB,CAAC,UAAU,CAAC;AAF/B,wBAKG"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var lodash = require('lodash');
|
|
6
|
+
|
|
7
|
+
class ZOD {
|
|
8
|
+
promises;
|
|
9
|
+
config;
|
|
10
|
+
state;
|
|
11
|
+
extend;
|
|
12
|
+
validator;
|
|
13
|
+
schema;
|
|
14
|
+
constructor({ config, state = null, promises = [], }) {
|
|
15
|
+
this.state = state;
|
|
16
|
+
this.promises = promises;
|
|
17
|
+
this.config = config;
|
|
18
|
+
this.extend = config?.extend;
|
|
19
|
+
this.validator = config.package;
|
|
20
|
+
this.schema = config.schema;
|
|
21
|
+
this.extendValidator();
|
|
22
|
+
}
|
|
23
|
+
extendValidator() {
|
|
24
|
+
if (typeof this.extend === "function") {
|
|
25
|
+
this.extend({
|
|
26
|
+
validator: this.validator,
|
|
27
|
+
form: this.state.form,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
validate(field) {
|
|
32
|
+
const result = this.schema.safeParse(field.state.form.flatMapValues);
|
|
33
|
+
if (result.success)
|
|
34
|
+
return;
|
|
35
|
+
const fieldErrors = lodash.get(result.error.format(), field.path ?? "")?._errors;
|
|
36
|
+
if (fieldErrors?.length) {
|
|
37
|
+
field.validationErrorStack = fieldErrors;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
var ZOD_default = (config) => ({
|
|
42
|
+
class: (ZOD),
|
|
43
|
+
config,
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
exports.default = ZOD_default;
|
|
47
|
+
//# sourceMappingURL=ZOD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZOD.js","sources":["../../src/validators/ZOD.ts"],"sourcesContent":[null],"names":["get"],"mappings":";;;;;;AAYA,MAAM,GAAG,CAAA;AACP,IAAA,QAAQ;AACR,IAAA,MAAM;AACN,IAAA,KAAK;AACL,IAAA,MAAM;AACN,IAAA,SAAS;AACT,IAAA,MAAM;IAEN,WAAA,CAAY,EACV,MAAM,EACN,KAAK,GAAG,IAAI,EACZ,QAAQ,GAAG,EAAE,GACe,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO;AAC/B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAwB;QAE7C,IAAI,CAAC,eAAe,EAAE;IACxB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;YACrC,IAAI,CAAC,MAAM,CAAC;gBACV,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,gBAAA,IAAI,EAAE,IAAI,CAAC,KAAM,CAAC,IAAI;AACvB,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,QAAQ,CAAC,KAAqB,EAAA;AAC5B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;QAEpE,IAAI,MAAM,CAAC,OAAO;YAAE;AAEpB,QAAA,MAAM,WAAW,GAAGA,UAAG,CACpB,MAAc,CAAC,KAAK,CAAC,MAAM,EAAE,EAC9B,KAAK,CAAC,IAAI,IAAI,EAAE,CACjB,EAAE,OAAO;AAEV,QAAA,IAAI,WAAW,EAAE,MAAM,EAAE;AACvB,YAAA,KAAK,CAAC,oBAAoB,GAAG,WAAW;QAC1C;IACF;AACD;AAED,kBAAe,CACb,MAA2C,MACT;IAClC,KAAK,GAAE,GAAe,CAAA;IACtB,MAAM;AACP,CAAA,CAAC;;;;"}
|
package/package.json
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mobx-formkit",
|
|
3
|
+
"license": "MIT",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"author": "Claudio Savino <claudio.savino@me.com> (https://twitter.com/foxhound87)",
|
|
6
|
+
"description": "Reactive MobX Form State Management",
|
|
7
|
+
"homepage": "https://github.com/foxhound87/mobx-formkit#readme",
|
|
8
|
+
"main": "./lib/index.js",
|
|
9
|
+
"module": "./lib/esm/index.js",
|
|
10
|
+
"types": "./lib/index.d.ts",
|
|
11
|
+
"sideEffects": false,
|
|
12
|
+
"typesVersions": {
|
|
13
|
+
"*": {
|
|
14
|
+
"composer": [
|
|
15
|
+
"./lib/composer.d.ts"
|
|
16
|
+
],
|
|
17
|
+
"lib/composer": [
|
|
18
|
+
"./lib/composer.d.ts"
|
|
19
|
+
],
|
|
20
|
+
"validators/*": [
|
|
21
|
+
"./lib/validators/*.d.ts"
|
|
22
|
+
],
|
|
23
|
+
"lib/validators/*": [
|
|
24
|
+
"./lib/validators/*.d.ts"
|
|
25
|
+
],
|
|
26
|
+
"lib/utils": [
|
|
27
|
+
"./lib/utils.d.ts"
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"exports": {
|
|
32
|
+
".": {
|
|
33
|
+
"types": "./lib/index.d.ts",
|
|
34
|
+
"import": "./lib/esm/index.js",
|
|
35
|
+
"require": "./lib/index.js"
|
|
36
|
+
},
|
|
37
|
+
"./composer": {
|
|
38
|
+
"types": "./lib/composer.d.ts",
|
|
39
|
+
"import": "./lib/esm/composer.js",
|
|
40
|
+
"require": "./lib/composer.js"
|
|
41
|
+
},
|
|
42
|
+
"./validators/*": {
|
|
43
|
+
"types": "./lib/validators/*.d.ts",
|
|
44
|
+
"import": "./lib/esm/validators/*.js",
|
|
45
|
+
"require": "./lib/validators/*.js"
|
|
46
|
+
},
|
|
47
|
+
"./lib/validators/*": {
|
|
48
|
+
"types": "./lib/validators/*.d.ts",
|
|
49
|
+
"import": "./lib/esm/validators/*.js",
|
|
50
|
+
"require": "./lib/validators/*.js"
|
|
51
|
+
},
|
|
52
|
+
"./lib/composer": {
|
|
53
|
+
"types": "./lib/composer.d.ts",
|
|
54
|
+
"import": "./lib/esm/composer.js",
|
|
55
|
+
"require": "./lib/composer.js"
|
|
56
|
+
},
|
|
57
|
+
"./lib/utils": {
|
|
58
|
+
"types": "./lib/utils.d.ts",
|
|
59
|
+
"import": "./lib/esm/utils.js",
|
|
60
|
+
"require": "./lib/utils.js"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"scripts": {
|
|
64
|
+
"clean:build": "rimraf lib && rimraf umd",
|
|
65
|
+
"clean:modules": "rimraf node_modules && npm cache clean",
|
|
66
|
+
"clean:all": "npm run clean:build && npm run clean:modules",
|
|
67
|
+
"lint": "eslint . --ext .ts --ignore-path .gitignore",
|
|
68
|
+
"build": "rollup -c rollup.config.mjs",
|
|
69
|
+
"prebuild": "npm run clean:build",
|
|
70
|
+
"precommit": "npm run lint && npm run cover",
|
|
71
|
+
"commit": "git-cz && git push origin",
|
|
72
|
+
"watch:build": "rollup -c rollup.config.mjs --watch",
|
|
73
|
+
"watch:test": "npm run test -- -w",
|
|
74
|
+
"test": "cross-env TEST=true TS_NODE_TRANSPILE_ONLY=true NODE_OPTIONS=--no-experimental-strip-types\\ --no-experimental-detect-module mocha -r ts-node/register ./tests/integration/*.ts ./tests/unit/*.ts",
|
|
75
|
+
"test:mobx5": "npm install --no-save --force mobx@^5.15.0 && npm test",
|
|
76
|
+
"cover": "nyc npm test",
|
|
77
|
+
"coverage:check": "nyc check-coverage --statements 95 --branches 80 --functions 86 --lines 90",
|
|
78
|
+
"coverage:report": "mkdir -p coverage && nyc --report-dir=coverage report --reporter=lcov > ./coverage/lcov.info",
|
|
79
|
+
"semantic-release": "semantic-release"
|
|
80
|
+
},
|
|
81
|
+
"repository": {
|
|
82
|
+
"type": "git",
|
|
83
|
+
"url": "git+https://github.com/foxhound87/mobx-formkit.git"
|
|
84
|
+
},
|
|
85
|
+
"bugs": {
|
|
86
|
+
"url": "https://github.com/foxhound87/mobx-formkit/issues"
|
|
87
|
+
},
|
|
88
|
+
"collective": {
|
|
89
|
+
"type": "opencollective",
|
|
90
|
+
"url": "https://opencollective.com/mobx-react-form"
|
|
91
|
+
},
|
|
92
|
+
"release": {
|
|
93
|
+
"branches": [
|
|
94
|
+
"master",
|
|
95
|
+
"next"
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
"keywords": [
|
|
99
|
+
"form",
|
|
100
|
+
"mobx",
|
|
101
|
+
"state",
|
|
102
|
+
"events",
|
|
103
|
+
"nested",
|
|
104
|
+
"fields",
|
|
105
|
+
"bindings",
|
|
106
|
+
"react",
|
|
107
|
+
"reactive",
|
|
108
|
+
"validation",
|
|
109
|
+
"validator",
|
|
110
|
+
"json",
|
|
111
|
+
"schema",
|
|
112
|
+
"declarative",
|
|
113
|
+
"rules"
|
|
114
|
+
],
|
|
115
|
+
"files": [
|
|
116
|
+
"src",
|
|
117
|
+
"lib",
|
|
118
|
+
"umd",
|
|
119
|
+
"AGENTS.md"
|
|
120
|
+
],
|
|
121
|
+
"engines": {
|
|
122
|
+
"node": ">=18.0.0"
|
|
123
|
+
},
|
|
124
|
+
"config": {
|
|
125
|
+
"commitizen": {
|
|
126
|
+
"path": "cz-conventional-changelog"
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
"overrides": {
|
|
130
|
+
"serialize-javascript": "^7.1.0"
|
|
131
|
+
},
|
|
132
|
+
"dependencies": {
|
|
133
|
+
"lodash": "^4.17.24",
|
|
134
|
+
"lodash-es": "^4.17.24"
|
|
135
|
+
},
|
|
136
|
+
"peerDependencies": {
|
|
137
|
+
"mobx": "^5.15.0 || ^6.0.0 || ^7.0.0",
|
|
138
|
+
"zod": "^3.25.0 || ^4.0.0"
|
|
139
|
+
},
|
|
140
|
+
"peerDependenciesMeta": {
|
|
141
|
+
"zod": {
|
|
142
|
+
"optional": true
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"devDependencies": {
|
|
146
|
+
"@rollup/plugin-alias": "^6.0.0",
|
|
147
|
+
"@rollup/plugin-commonjs": "^29.0.2",
|
|
148
|
+
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
149
|
+
"@rollup/plugin-terser": "^1.0.0",
|
|
150
|
+
"@rollup/plugin-typescript": "^12.3.0",
|
|
151
|
+
"@types/chai": "^4.3.0",
|
|
152
|
+
"@types/lodash": "^4.14.178",
|
|
153
|
+
"@types/mocha": "^10.0.10",
|
|
154
|
+
"@types/node": "^17.0.18",
|
|
155
|
+
"@types/validator": "^13.7.1",
|
|
156
|
+
"@types/validatorjs": "^3.15.0",
|
|
157
|
+
"@typescript-eslint/eslint-plugin": "^5.54.0",
|
|
158
|
+
"@typescript-eslint/parser": "^5.54.0",
|
|
159
|
+
"@vinejs/vine": "^4.4.0",
|
|
160
|
+
"ajv": "^8.0.0",
|
|
161
|
+
"chai": "3.5.0",
|
|
162
|
+
"commitizen": "^4.3.2",
|
|
163
|
+
"cross-env": "^5.1.4",
|
|
164
|
+
"cz-conventional-changelog": "^3.3.0",
|
|
165
|
+
"eslint": "^8.35.0",
|
|
166
|
+
"eslint-plugin-import": "^2.27.5",
|
|
167
|
+
"husky": "0.13.1",
|
|
168
|
+
"joi": "^17.13.3",
|
|
169
|
+
"mobx": "^5.15.0 || ^6.3.3 || ^7.0.0",
|
|
170
|
+
"mocha": "^11.8.0",
|
|
171
|
+
"nyc": "^17.1.0",
|
|
172
|
+
"rimraf": "2.5.4",
|
|
173
|
+
"rollup": "^4.59.0",
|
|
174
|
+
"semantic-release": "^24.0.0",
|
|
175
|
+
"ts-node": "^10.5.0",
|
|
176
|
+
"typescript": "^5.9.3",
|
|
177
|
+
"valibot": "^1.4.2",
|
|
178
|
+
"validator": "^13.15.20",
|
|
179
|
+
"validatorjs": "^3.15.1",
|
|
180
|
+
"yup": "^0.32.11",
|
|
181
|
+
"zod": "^3.25.0 || ^4.0.0"
|
|
182
|
+
}
|
|
183
|
+
}
|
package/src/ArrayMap.ts
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { observable, runInAction, IObservableArray } from "mobx";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* ArrayMap: an ordered key-value collection backed by an observable array.
|
|
5
|
+
*
|
|
6
|
+
* Exposes the full ObservableMap-compatible API (get, set, has, delete,
|
|
7
|
+
* merge, forEach, keys, values, entries, intercept, etc.) while
|
|
8
|
+
* maintaining insertion order via an internal observable array.
|
|
9
|
+
*
|
|
10
|
+
* The observable array backing allows array-like operations such as
|
|
11
|
+
* `move(fromIndex, toIndex)` which directly re-orders entries via
|
|
12
|
+
* splice — fully MobX reactive.
|
|
13
|
+
*/
|
|
14
|
+
export class ArrayMap<K = string, V = any> {
|
|
15
|
+
/** Duck-typing marker for utility code */
|
|
16
|
+
_isArrayMap = true;
|
|
17
|
+
|
|
18
|
+
/** Internal observable array: entries stored as [key, value] pairs */
|
|
19
|
+
private _entries: IObservableArray<[K, V]> = observable.array<[K, V]>([]);
|
|
20
|
+
|
|
21
|
+
constructor(entries?: [K, V][] | null) {
|
|
22
|
+
if (entries && entries.length > 0) {
|
|
23
|
+
this._entries.replace(entries);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// ------------------------------------------------------------------
|
|
28
|
+
// ObservableMap-compatible API
|
|
29
|
+
// ------------------------------------------------------------------
|
|
30
|
+
|
|
31
|
+
get size(): number {
|
|
32
|
+
return this._entries.length;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
get(key: K): V | undefined {
|
|
36
|
+
const entry = this._entries.find(([k]) => k === key);
|
|
37
|
+
return entry ? entry[1] : undefined;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
set(key: K, value: V): this {
|
|
41
|
+
const existing = this._entries.find(([k]) => k === key);
|
|
42
|
+
if (existing) {
|
|
43
|
+
existing[1] = value;
|
|
44
|
+
} else {
|
|
45
|
+
this._entries.push([key, value]);
|
|
46
|
+
}
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
has(key: K): boolean {
|
|
51
|
+
return this._entries.some(([k]) => k === key);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
delete(key: K): boolean {
|
|
55
|
+
const index = this._entries.findIndex(([k]) => k === key);
|
|
56
|
+
if (index !== -1) {
|
|
57
|
+
this._entries.splice(index, 1);
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
clear(): void {
|
|
64
|
+
this._entries.clear();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
keys(): IterableIterator<K> {
|
|
68
|
+
return this._entries.map(([k]) => k)[Symbol.iterator]();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
values(): IterableIterator<V> {
|
|
72
|
+
return this._entries.map(([, v]) => v)[Symbol.iterator]();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
entries(): IterableIterator<[K, V]> {
|
|
76
|
+
return this._entries[Symbol.iterator]();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
forEach(
|
|
80
|
+
callbackfn: (value: V, key: K, map: this) => void,
|
|
81
|
+
thisArg?: any,
|
|
82
|
+
): void {
|
|
83
|
+
this._entries.forEach(([key, value]) => {
|
|
84
|
+
callbackfn.call(thisArg, value, key, this);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
toJSON(): { [key: string]: V } {
|
|
89
|
+
const result: { [key: string]: V } = {};
|
|
90
|
+
this._entries.forEach(([key, value]) => {
|
|
91
|
+
result[String(key)] = value;
|
|
92
|
+
});
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
toString(): string {
|
|
97
|
+
return `[object ArrayMap]`;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
merge(other: any): this {
|
|
101
|
+
if (other && typeof other === "object") {
|
|
102
|
+
if (other.forEach && typeof other.forEach === "function") {
|
|
103
|
+
// ObservableMap or Map-like
|
|
104
|
+
other.forEach((value: V, key: K) => {
|
|
105
|
+
this.set(key, value);
|
|
106
|
+
});
|
|
107
|
+
} else if (Array.isArray(other)) {
|
|
108
|
+
// Array of [key, value] pairs
|
|
109
|
+
other.forEach(([key, value]) => {
|
|
110
|
+
this.set(key, value);
|
|
111
|
+
});
|
|
112
|
+
} else {
|
|
113
|
+
// Plain object { key: value }
|
|
114
|
+
Object.keys(other).forEach((key) => {
|
|
115
|
+
this.set(key as any, other[key]);
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return this;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
replace(values: any): this {
|
|
123
|
+
this.clear();
|
|
124
|
+
return this.merge(values);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
get intercept(): any {
|
|
128
|
+
return (this._entries as any).intercept;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
[Symbol.iterator](): IterableIterator<[K, V]> {
|
|
132
|
+
return this._entries[Symbol.iterator]();
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// ------------------------------------------------------------------
|
|
136
|
+
// Array-specific methods
|
|
137
|
+
// ------------------------------------------------------------------
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Move an entry from `fromIndex` to `toIndex`.
|
|
141
|
+
*
|
|
142
|
+
* Directly splices the internal observable array, so MobX
|
|
143
|
+
* tracks the change as a single array splice operation.
|
|
144
|
+
*/
|
|
145
|
+
move(fromIndex: number, toIndex: number): void {
|
|
146
|
+
runInAction(() => {
|
|
147
|
+
if (fromIndex < 0 || fromIndex >= this._entries.length) return;
|
|
148
|
+
if (toIndex < 0 || toIndex >= this._entries.length) return;
|
|
149
|
+
if (fromIndex === toIndex) return;
|
|
150
|
+
|
|
151
|
+
const [entry] = this._entries.splice(fromIndex, 1);
|
|
152
|
+
this._entries.splice(toIndex, 0, entry);
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Expose the underlying observable array for direct MobX
|
|
158
|
+
* observation (e.g. `observe(arr, cb)` from mobx).
|
|
159
|
+
*/
|
|
160
|
+
toArray(): Array<[K, V]> {
|
|
161
|
+
return this._entries;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export default ArrayMap;
|