web-one 0.0.1 → 0.0.2
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/lib/form.js +58 -0
- package/lib/index.js +4 -0
- package/package.json +1 -1
- package/src/form.ts +59 -0
- package/src/index.ts +2 -0
- package/tsconfig.json +5 -2
package/lib/form.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function fromFormData(formData, attrs, includeUndefine, includeErrorForNumbers) {
|
|
4
|
+
if (!attrs) {
|
|
5
|
+
return fromFormDataWithAttributes(formData, {}, includeUndefine, includeErrorForNumbers);
|
|
6
|
+
}
|
|
7
|
+
return fromFormDataWithAttributes(formData, attrs, includeUndefine, includeErrorForNumbers);
|
|
8
|
+
}
|
|
9
|
+
exports.fromFormData = fromFormData;
|
|
10
|
+
function fromFormDataWithAttributes(formData, attrs, includeUndefine, includeErrorForNumbers) {
|
|
11
|
+
const obj = {};
|
|
12
|
+
const keys = formData.keys();
|
|
13
|
+
for (const key of keys) {
|
|
14
|
+
const attr = attrs[key];
|
|
15
|
+
const v = formData.get(key);
|
|
16
|
+
if (attr) {
|
|
17
|
+
obj[key] = v;
|
|
18
|
+
if (v && typeof v === "string") {
|
|
19
|
+
if (attr.type === "number" || attr.type === "integer") {
|
|
20
|
+
if (!isNaN(v)) {
|
|
21
|
+
obj[key] = parseFloat(v);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
else if (attr.type === "datetime" || attr.type === "date") {
|
|
25
|
+
const d = new Date(v);
|
|
26
|
+
if (d.toString() !== "Invalid Date") {
|
|
27
|
+
obj[key] = d;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else if (attr.type === "boolean") {
|
|
31
|
+
obj[key] = v === "true";
|
|
32
|
+
}
|
|
33
|
+
else if (attr.type === "strings") {
|
|
34
|
+
obj[key] = v.split(",");
|
|
35
|
+
}
|
|
36
|
+
else if (attr.type === "integers" || attr.type === "numbers") {
|
|
37
|
+
const s = v.split(",");
|
|
38
|
+
const nums = [];
|
|
39
|
+
for (let i = 0; i < s.length; i++) {
|
|
40
|
+
if (!isNaN(s[i])) {
|
|
41
|
+
const num = parseFloat(s[i]);
|
|
42
|
+
nums.push(num);
|
|
43
|
+
}
|
|
44
|
+
else if (includeErrorForNumbers) {
|
|
45
|
+
nums.push(s[i]);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
obj[key] = nums;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else if (includeUndefine) {
|
|
53
|
+
obj[key] = v;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return obj;
|
|
57
|
+
}
|
|
58
|
+
exports.fromFormDataWithAttributes = fromFormDataWithAttributes;
|
package/lib/index.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
function __export(m) {
|
|
3
|
+
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
|
|
4
|
+
}
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
__export(require("./form"));
|
|
3
7
|
var resources = (function () {
|
|
4
8
|
function resources() {
|
|
5
9
|
}
|
package/package.json
CHANGED
package/src/form.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export type DataType = 'ObjectId' | 'date' | 'datetime' | 'time'
|
|
2
|
+
| 'boolean' | 'number' | 'integer' | 'string' | 'text'
|
|
3
|
+
| 'object' | 'array' | 'binary'
|
|
4
|
+
| 'primitives' | 'booleans' | 'numbers' | 'integers' | 'strings' | 'dates' | 'datetimes' | 'times';
|
|
5
|
+
|
|
6
|
+
export interface Attribute {
|
|
7
|
+
type?: DataType;
|
|
8
|
+
}
|
|
9
|
+
export interface Attributes {
|
|
10
|
+
[key: string]: Attribute;
|
|
11
|
+
}
|
|
12
|
+
export function fromFormData<T>(formData: FormData, attrs?: Attributes, includeUndefine?: boolean, includeErrorForNumbers?: boolean): T {
|
|
13
|
+
if (!attrs) {
|
|
14
|
+
return fromFormDataWithAttributes(formData, {}, includeUndefine, includeErrorForNumbers)
|
|
15
|
+
}
|
|
16
|
+
return fromFormDataWithAttributes(formData, attrs, includeUndefine, includeErrorForNumbers)
|
|
17
|
+
}
|
|
18
|
+
export function fromFormDataWithAttributes<T>(formData: FormData, attrs: Attributes, includeUndefine?: boolean, includeErrorForNumbers?: boolean): T {
|
|
19
|
+
const obj = {} as any
|
|
20
|
+
const keys = formData.keys()
|
|
21
|
+
for (const key of keys) {
|
|
22
|
+
const attr: Attribute = attrs[key]
|
|
23
|
+
const v = formData.get(key)
|
|
24
|
+
if (attr) {
|
|
25
|
+
obj[key] = v
|
|
26
|
+
if (v && typeof v === "string") {
|
|
27
|
+
if (attr.type === "number" || attr.type === "integer") {
|
|
28
|
+
if (!isNaN(v as any)) {
|
|
29
|
+
obj[key] = parseFloat(v)
|
|
30
|
+
}
|
|
31
|
+
} else if (attr.type === "datetime" || attr.type === "date") {
|
|
32
|
+
const d = new Date(v)
|
|
33
|
+
if (d.toString() !== "Invalid Date") {
|
|
34
|
+
obj[key] = d
|
|
35
|
+
}
|
|
36
|
+
} else if (attr.type === "boolean") {
|
|
37
|
+
obj[key] = v === "true"
|
|
38
|
+
} else if (attr.type === "strings") {
|
|
39
|
+
obj[key] = v.split(",")
|
|
40
|
+
} else if (attr.type === "integers" || attr.type === "numbers") {
|
|
41
|
+
const s = v.split(",")
|
|
42
|
+
const nums = []
|
|
43
|
+
for (let i = 0; i < s.length; i++) {
|
|
44
|
+
if (!isNaN(s[i] as any)) {
|
|
45
|
+
const num = parseFloat(s[i])
|
|
46
|
+
nums.push(num)
|
|
47
|
+
} else if (includeErrorForNumbers) {
|
|
48
|
+
nums.push(s[i])
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
obj[key] = nums
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
} else if (includeUndefine) {
|
|
55
|
+
obj[key] = v
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return obj
|
|
59
|
+
}
|
package/src/index.ts
CHANGED
package/tsconfig.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"compileOnSave": true,
|
|
3
3
|
"compilerOptions": {
|
|
4
|
-
"target": "
|
|
4
|
+
"target": "es6",
|
|
5
5
|
"baseUrl": "./src",
|
|
6
6
|
"outDir": "./lib",
|
|
7
7
|
"module": "commonjs",
|
|
@@ -14,7 +14,10 @@
|
|
|
14
14
|
"removeComments": true,
|
|
15
15
|
"lib": [
|
|
16
16
|
"es5",
|
|
17
|
-
"es6"
|
|
17
|
+
"es6",
|
|
18
|
+
"es7",
|
|
19
|
+
"dom",
|
|
20
|
+
"dom.iterable"
|
|
18
21
|
]
|
|
19
22
|
},
|
|
20
23
|
"include": [
|