@effect-app/vue 0.30.0 → 0.30.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/_cjs/form.cjs +10 -5
- package/_cjs/form.cjs.map +1 -1
- package/_src/form.ts +41 -32
- package/dist/form.d.ts +2 -2
- package/dist/form.d.ts.map +1 -1
- package/dist/form.js +26 -19
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
package/_cjs/form.cjs
CHANGED
|
@@ -14,12 +14,12 @@ var _schema = require("@effect-app/prelude/schema");
|
|
|
14
14
|
var _vue = require("vue");
|
|
15
15
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
16
16
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
17
|
-
function convertIn(v) {
|
|
18
|
-
return v === null ? "" : v;
|
|
17
|
+
function convertIn(v, type) {
|
|
18
|
+
return v === null ? "" : type === "number" ? `${v}` : v;
|
|
19
19
|
}
|
|
20
|
-
function convertOut(v, set) {
|
|
20
|
+
function convertOut(v, set, type) {
|
|
21
21
|
v = v == null ? v : v.trim();
|
|
22
|
-
return set(v === "" ? null : v);
|
|
22
|
+
return set(v === "" ? null : type === "number" ? parseFloat(v) : v);
|
|
23
23
|
}
|
|
24
24
|
function buildFieldInfoFromProps(props) {
|
|
25
25
|
return tsplus_module_1.RecordKeys(tsplus_module_1.object$(props)).reduce((prev, cur) => {
|
|
@@ -37,9 +37,14 @@ function buildFieldInfo(propOrSchema, fieldKey) {
|
|
|
37
37
|
const err = (0, _schema.drawError)(e);
|
|
38
38
|
return `The entered value is not a valid ${(0, _vue.capitalize)(fieldKey.toString())} (${err.slice(err.indexOf("expected"))})`;
|
|
39
39
|
}
|
|
40
|
+
const stringRules = [v => v === "" || metadata.minLength === undefined || v.length >= metadata.minLength || `The field requires at least ${metadata.minLength} characters`, v => v === "" || metadata.maxLength === undefined || v.length <= metadata.maxLength || `The field cannot have more than ${metadata.maxLength} characters`];
|
|
41
|
+
const numberRules = [v => metadata.minimum === undefined || v >= metadata.minimum || `The value should be larger than ${metadata.minimum}`];
|
|
42
|
+
const parseRule = v => tsplus_module_4.pipe(parse(v === "" ? null : metadata.type === "number" ? parseFloat(v) : v), _schema.These.result, _ => tsplus_module_3.match(_, renderError, ([_, optErr]) => tsplus_module_2.isSome(optErr) ? renderError(optErr.value) : true));
|
|
40
43
|
const info = {
|
|
41
44
|
type: metadata.type,
|
|
42
|
-
rules: [
|
|
45
|
+
rules: [
|
|
46
|
+
// TODO: optimise
|
|
47
|
+
v => !metadata.required || v !== "" || "The field cannot be empty", ...(metadata.type === "string" ? stringRules : numberRules.map(r => v => r(parseFloat(v)))), parseRule],
|
|
43
48
|
metadata
|
|
44
49
|
};
|
|
45
50
|
return info;
|
package/_cjs/form.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.cjs","names":["_schema","require","_vue","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_interopRequireWildcard","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","convertIn","v","convertOut","trim","buildFieldInfoFromProps","props","tsplus_module_1","RecordKeys","object$","reduce","prev","cur","buildFieldInfo","f","Symbol","PhantomTypeParameter","propOrSchema","fieldKey","metadata","getMetadataFromSchemaOrProp","schema","isSchema","parse","Parser","for","renderError","e","err","drawError","capitalize","toString","slice","indexOf","
|
|
1
|
+
{"version":3,"file":"form.cjs","names":["_schema","require","_vue","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_interopRequireWildcard","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","convertIn","v","type","convertOut","trim","parseFloat","buildFieldInfoFromProps","props","tsplus_module_1","RecordKeys","object$","reduce","prev","cur","buildFieldInfo","f","Symbol","PhantomTypeParameter","propOrSchema","fieldKey","metadata","getMetadataFromSchemaOrProp","schema","isSchema","parse","Parser","for","renderError","e","err","drawError","capitalize","toString","slice","indexOf","stringRules","minLength","undefined","length","maxLength","numberRules","minimum","parseRule","tsplus_module_4","pipe","These","result","_","tsplus_module_3","match","optErr","tsplus_module_2","isSome","value","info","rules","required","map","r"],"sources":["../_src/form.ts"],"sourcesContent":[null],"mappings":"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"}
|
package/_src/form.ts
CHANGED
|
@@ -9,13 +9,13 @@ import type {
|
|
|
9
9
|
} from "@effect-app/prelude/schema"
|
|
10
10
|
import { capitalize } from "vue"
|
|
11
11
|
|
|
12
|
-
export function convertIn(v: string | null) {
|
|
13
|
-
return v === null ? "" : v
|
|
12
|
+
export function convertIn(v: string | null, type?: "string" | "number") {
|
|
13
|
+
return v === null ? "" : type === "number" ? `${v}` : v
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
export function convertOut(v: string
|
|
16
|
+
export function convertOut(v: string, set: (v: unknown | null) => void, type?: "string" | "number") {
|
|
17
17
|
v = v == null ? v : v.trim()
|
|
18
|
-
return set(v === "" ? null : v)
|
|
18
|
+
return set(v === "" ? null : type === "number" ? parseFloat(v) : v)
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export function buildFieldInfoFromProps<Props extends PropertyRecord>(
|
|
@@ -76,38 +76,47 @@ function buildFieldInfo(
|
|
|
76
76
|
} (${err.slice(err.indexOf("expected"))})`
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
+
const stringRules = [
|
|
80
|
+
(v: string) =>
|
|
81
|
+
v === "" ||
|
|
82
|
+
metadata.minLength === undefined ||
|
|
83
|
+
v.length >= metadata.minLength ||
|
|
84
|
+
`The field requires at least ${metadata.minLength} characters`,
|
|
85
|
+
(v: string) =>
|
|
86
|
+
v === "" ||
|
|
87
|
+
metadata.maxLength === undefined ||
|
|
88
|
+
v.length <= metadata.maxLength ||
|
|
89
|
+
`The field cannot have more than ${metadata.maxLength} characters`
|
|
90
|
+
]
|
|
91
|
+
|
|
92
|
+
const numberRules = [
|
|
93
|
+
(v: number) =>
|
|
94
|
+
metadata.minimum === undefined ||
|
|
95
|
+
v >= metadata.minimum ||
|
|
96
|
+
`The value should be larger than ${metadata.minimum}`
|
|
97
|
+
]
|
|
98
|
+
|
|
99
|
+
const parseRule = (v: string) =>
|
|
100
|
+
pipe(
|
|
101
|
+
parse(v === "" ? null : metadata.type === "number" ? parseFloat(v) : v),
|
|
102
|
+
These.result,
|
|
103
|
+
_ =>
|
|
104
|
+
_.match(
|
|
105
|
+
renderError,
|
|
106
|
+
([_, optErr]) =>
|
|
107
|
+
optErr.isSome()
|
|
108
|
+
? renderError(optErr.value)
|
|
109
|
+
: true
|
|
110
|
+
)
|
|
111
|
+
)
|
|
112
|
+
|
|
79
113
|
const info = {
|
|
80
114
|
type: metadata.type,
|
|
81
115
|
rules: [
|
|
116
|
+
// TODO: optimise
|
|
82
117
|
(v: string) => !metadata.required || v !== "" || "The field cannot be empty",
|
|
83
|
-
(v: string) =>
|
|
84
|
-
|
|
85
|
-
metadata.minLength === undefined ||
|
|
86
|
-
v.length >= metadata.minLength ||
|
|
87
|
-
`The field requires at least ${metadata.minLength} characters`,
|
|
88
|
-
(v: number) =>
|
|
89
|
-
metadata.minimum === undefined ||
|
|
90
|
-
v >= metadata.minimum ||
|
|
91
|
-
`The value should be larger than ${metadata.minimum}`,
|
|
92
|
-
|
|
93
|
-
(v: string) =>
|
|
94
|
-
v === "" ||
|
|
95
|
-
metadata.maxLength === undefined ||
|
|
96
|
-
v.length <= metadata.maxLength ||
|
|
97
|
-
`The field cannot have more than ${metadata.maxLength} characters`,
|
|
98
|
-
(v: unknown) =>
|
|
99
|
-
pipe(
|
|
100
|
-
parse(v === "" ? null : v),
|
|
101
|
-
These.result,
|
|
102
|
-
_ =>
|
|
103
|
-
_.match(
|
|
104
|
-
renderError,
|
|
105
|
-
([_, optErr]) =>
|
|
106
|
-
optErr.isSome()
|
|
107
|
-
? renderError(optErr.value)
|
|
108
|
-
: true
|
|
109
|
-
)
|
|
110
|
-
)
|
|
118
|
+
...(metadata.type === "string" ? stringRules : numberRules.map(r => (v: string) => r(parseFloat(v)))),
|
|
119
|
+
parseRule
|
|
111
120
|
],
|
|
112
121
|
metadata
|
|
113
122
|
}
|
package/dist/form.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { EncodedOf, ParsedShapeOfCustom, Property, PropertyRecord } from "@effect-app/prelude/schema";
|
|
2
|
-
export declare function convertIn(v: string | null): string;
|
|
3
|
-
export declare function convertOut(v: string
|
|
2
|
+
export declare function convertIn(v: string | null, type?: "string" | "number"): string;
|
|
3
|
+
export declare function convertOut(v: string, set: (v: unknown | null) => void, type?: "string" | "number"): void;
|
|
4
4
|
export declare function buildFieldInfoFromProps<Props extends PropertyRecord>(props: Props): { [K in keyof Props]: FieldInfo<EncodedOf<GetSchemaFromProp<Props[K]>>, ParsedShapeOfCustom<GetSchemaFromProp<Props[K]>>>; };
|
|
5
5
|
export interface FieldMetadata {
|
|
6
6
|
minLength: number | undefined;
|
package/dist/form.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../_src/form.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,SAAS,EACT,mBAAmB,EACnB,QAAQ,EACR,cAAc,EAEf,MAAM,4BAA4B,CAAA;AAGnC,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../_src/form.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,SAAS,EACT,mBAAmB,EACnB,QAAQ,EACR,cAAc,EAEf,MAAM,4BAA4B,CAAA;AAGnC,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,UAErE;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,QAGjG;AAED,wBAAgB,uBAAuB,CAAC,KAAK,SAAS,cAAc,EAClE,KAAK,EAAE,KAAK,gIAcb;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,QAAA,MAAM,CAAC,eAAW,CAAA;AAClB,uBAAe,oBAAoB,CACjC,UAAU,SAAS,MAAM,GAAG,EAC5B,gBAAgB;IAEhB,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE;QAC7B,QAAQ,EAAE,KAAK,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE,gBAAgB,KAAK,gBAAgB;KAC1E,CAAA;CACF;AACD,MAAM,WAAW,SAAS,CAAC,GAAG,EAAE,IAAI,CAAE,SAAQ,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAAE,EAAE,EAAE,GAAG,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CAAC;IAClG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,CAAC,EAAE,CAAA;IAC1C,QAAQ,EAAE,aAAa,CAAA;IACvB,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;CACxB;AAED,KAAK,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GACtE,KAAK,CAAA"}
|
package/dist/form.js
CHANGED
|
@@ -4,12 +4,12 @@ import * as tsplus_module_3 from "@effect/data/Either";
|
|
|
4
4
|
import * as tsplus_module_4 from "@effect-app/core/Function";
|
|
5
5
|
import { drawError, getMetadataFromSchemaOrProp, isSchema, Parser, These } from "@effect-app/prelude/schema";
|
|
6
6
|
import { capitalize } from "vue";
|
|
7
|
-
export function convertIn(v) {
|
|
8
|
-
return v === null ? "" : v;
|
|
7
|
+
export function convertIn(v, type) {
|
|
8
|
+
return v === null ? "" : type === "number" ? `${v}` : v;
|
|
9
9
|
}
|
|
10
|
-
export function convertOut(v, set) {
|
|
10
|
+
export function convertOut(v, set, type) {
|
|
11
11
|
v = v == null ? v : v.trim();
|
|
12
|
-
return set(v === "" ? null : v);
|
|
12
|
+
return set(v === "" ? null : type === "number" ? parseFloat(v) : v);
|
|
13
13
|
}
|
|
14
14
|
export function buildFieldInfoFromProps(props) {
|
|
15
15
|
return tsplus_module_1.RecordKeys(tsplus_module_1.object$(props)).reduce((prev, cur) => {
|
|
@@ -28,27 +28,34 @@ function buildFieldInfo(propOrSchema, fieldKey) {
|
|
|
28
28
|
const err = drawError(e);
|
|
29
29
|
return `The entered value is not a valid ${capitalize(fieldKey.toString())} (${err.slice(err.indexOf("expected"))})`;
|
|
30
30
|
}
|
|
31
|
+
const stringRules = [
|
|
32
|
+
(v) => v === "" ||
|
|
33
|
+
metadata.minLength === undefined ||
|
|
34
|
+
v.length >= metadata.minLength ||
|
|
35
|
+
`The field requires at least ${metadata.minLength} characters`,
|
|
36
|
+
(v) => v === "" ||
|
|
37
|
+
metadata.maxLength === undefined ||
|
|
38
|
+
v.length <= metadata.maxLength ||
|
|
39
|
+
`The field cannot have more than ${metadata.maxLength} characters`
|
|
40
|
+
];
|
|
41
|
+
const numberRules = [
|
|
42
|
+
(v) => metadata.minimum === undefined ||
|
|
43
|
+
v >= metadata.minimum ||
|
|
44
|
+
`The value should be larger than ${metadata.minimum}`
|
|
45
|
+
];
|
|
46
|
+
const parseRule = (v) => tsplus_module_4.pipe(parse(v === "" ? null : metadata.type === "number" ? parseFloat(v) : v), These.result, _ => tsplus_module_3.match(_, renderError, ([_, optErr]) => tsplus_module_2.isSome(optErr)
|
|
47
|
+
? renderError(optErr.value)
|
|
48
|
+
: true));
|
|
31
49
|
const info = {
|
|
32
50
|
type: metadata.type,
|
|
33
51
|
rules: [
|
|
52
|
+
// TODO: optimise
|
|
34
53
|
(v) => !metadata.required || v !== "" || "The field cannot be empty",
|
|
35
|
-
(v) => v
|
|
36
|
-
|
|
37
|
-
v.length >= metadata.minLength ||
|
|
38
|
-
`The field requires at least ${metadata.minLength} characters`,
|
|
39
|
-
(v) => metadata.minimum === undefined ||
|
|
40
|
-
v >= metadata.minimum ||
|
|
41
|
-
`The value should be larger than ${metadata.minimum}`,
|
|
42
|
-
(v) => v === "" ||
|
|
43
|
-
metadata.maxLength === undefined ||
|
|
44
|
-
v.length <= metadata.maxLength ||
|
|
45
|
-
`The field cannot have more than ${metadata.maxLength} characters`,
|
|
46
|
-
(v) => tsplus_module_4.pipe(parse(v === "" ? null : v), These.result, _ => tsplus_module_3.match(_, renderError, ([_, optErr]) => tsplus_module_2.isSome(optErr)
|
|
47
|
-
? renderError(optErr.value)
|
|
48
|
-
: true))
|
|
54
|
+
...(metadata.type === "string" ? stringRules : numberRules.map(r => (v) => r(parseFloat(v)))),
|
|
55
|
+
parseRule
|
|
49
56
|
],
|
|
50
57
|
metadata
|
|
51
58
|
};
|
|
52
59
|
return info;
|
|
53
60
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL19zcmMvZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSwyQkFBMkIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBUzVHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFFaEMsTUFBTSxVQUFVLFNBQVMsQ0FBQyxDQUFnQixFQUFFLElBQTBCO0lBQ3BFLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDekQsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsQ0FBUyxFQUFFLEdBQWdDLEVBQUUsSUFBMEI7SUFDaEcsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLE9BQU8sR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNyRSxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxLQUFZO0lBRVosT0FBTyxtREFBQSxLQUFLLEdBQVMsTUFBTSxDQUN6QixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUNaLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBZ0IsRUFBRSxHQUFHLENBQUMsQ0FBQTtR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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/vue",
|
|
3
|
-
"version": "0.30.
|
|
3
|
+
"version": "0.30.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
"query-string": "^8.1.0",
|
|
11
11
|
"swrv": "^1.0.3",
|
|
12
12
|
"vue": "^3.2.47",
|
|
13
|
-
"@effect-app/core": "0.38.0",
|
|
14
|
-
"@effect-app/schema": "0.29.0",
|
|
15
13
|
"@effect-app/prelude": "0.32.0",
|
|
16
|
-
"@effect-app/vue": "0.30.
|
|
14
|
+
"@effect-app/vue": "0.30.1",
|
|
15
|
+
"@effect-app/schema": "0.29.0",
|
|
16
|
+
"@effect-app/core": "0.38.0"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@rollup/pluginutils": "^5.0.2",
|