svelte-common 4.21.29 → 4.22.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/package.json +6 -6
- package/src/attribute.mjs +33 -1
- package/src/filter.mjs +22 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svelte-common",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.22.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"prepare": "vite build",
|
|
24
24
|
"start": "vite",
|
|
25
25
|
"test": "npm run test:ava && npm run test:cafe",
|
|
26
|
-
"test:cafe": "testcafe $BROWSER:headless tests/cafe/*.js -s build/test --page-request-timeout
|
|
26
|
+
"test:cafe": "testcafe $BROWSER:headless tests/cafe/*.js -s build/test --page-request-timeout 5000 --app-init-delay 9000 --app \"vite\"",
|
|
27
27
|
"test:ava": "ava --timeout 2m tests/*-ava.mjs tests/*-ava-node.mjs",
|
|
28
28
|
"cover": "c8 -x 'tests/**/*' --temp-directory build/tmp ava --timeout 2m tests/*-ava.mjs tests/*-ava-node.mjs && c8 report -r lcov -o build/coverage --temp-directory build/tmp",
|
|
29
29
|
"docs": "documentation readme --section=API ./src/**/*.mjs",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"preview": "vite preview"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"svelte-command": "^1.1.
|
|
37
|
-
"svelte-entitlement": "^1.2.
|
|
36
|
+
"svelte-command": "^1.1.37",
|
|
37
|
+
"svelte-entitlement": "^1.2.48"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@semantic-release/commit-analyzer": "^9.0.2",
|
|
@@ -44,14 +44,14 @@
|
|
|
44
44
|
"ava": "^5.1.1",
|
|
45
45
|
"c8": "^7.12.0",
|
|
46
46
|
"documentation": "^14.0.1",
|
|
47
|
-
"mf-styling": "^1.7.
|
|
47
|
+
"mf-styling": "^1.7.43",
|
|
48
48
|
"npm-pkgbuild": "^11.1.14",
|
|
49
49
|
"semantic-release": "^20.1.0",
|
|
50
50
|
"stylelint": "^14.16.1",
|
|
51
51
|
"stylelint-config-standard": "^29.0.0",
|
|
52
52
|
"svelte": "^3.55.1",
|
|
53
53
|
"testcafe": "^2.3.0",
|
|
54
|
-
"vite": "^4.0
|
|
54
|
+
"vite": "^4.1.0"
|
|
55
55
|
},
|
|
56
56
|
"optionalDependencies": {
|
|
57
57
|
"mf-hosting-cloudflare": "^1.0.5",
|
package/src/attribute.mjs
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
/**
|
|
3
2
|
* Split property path into tokens
|
|
4
3
|
* @param {string} string
|
|
@@ -102,3 +101,36 @@ export function getAttribute(object, name) {
|
|
|
102
101
|
|
|
103
102
|
return object;
|
|
104
103
|
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Deliver attribute value.
|
|
107
|
+
* The name may be a property path like 'a.b.c'.
|
|
108
|
+
* @param {Object} object
|
|
109
|
+
* @param {string} name
|
|
110
|
+
* @returns {any} value associated with the given property name
|
|
111
|
+
*/
|
|
112
|
+
export function getAttributeAndOperator(object, name) {
|
|
113
|
+
let op = "=";
|
|
114
|
+
|
|
115
|
+
for (const token of tokens(name)) {
|
|
116
|
+
switch (token) {
|
|
117
|
+
case ">":
|
|
118
|
+
case "<":
|
|
119
|
+
op = token;
|
|
120
|
+
break;
|
|
121
|
+
case ".":
|
|
122
|
+
case "[":
|
|
123
|
+
case "]":
|
|
124
|
+
break;
|
|
125
|
+
|
|
126
|
+
default:
|
|
127
|
+
if (object === undefined) {
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
object = object[token];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return [object, op];
|
|
136
|
+
}
|
package/src/filter.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getAttributeAndOperator } from "./attribute.mjs";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Generate filter function.
|
|
@@ -9,9 +9,12 @@ import { getAttribute } from "./attribute.mjs";
|
|
|
9
9
|
export function filter(filterBy, getters = {}) {
|
|
10
10
|
if (filterBy) {
|
|
11
11
|
const filters = Object.entries(filterBy).map(([key, value]) => {
|
|
12
|
-
const getter = getters[key] ||
|
|
12
|
+
const getter = () => [getters[key], "="] || getAttributeAndOperator;
|
|
13
|
+
|
|
13
14
|
return a => {
|
|
14
|
-
const av =
|
|
15
|
+
const [av, op] = getAttributeAndOperator(a, key);
|
|
16
|
+
|
|
17
|
+
//console.log("KEY", key, op, value, av);
|
|
15
18
|
|
|
16
19
|
if (value instanceof RegExp) {
|
|
17
20
|
return value.test(av);
|
|
@@ -20,7 +23,14 @@ export function filter(filterBy, getters = {}) {
|
|
|
20
23
|
switch (typeof av) {
|
|
21
24
|
case "object":
|
|
22
25
|
if (av instanceof Date) {
|
|
23
|
-
|
|
26
|
+
switch (op) {
|
|
27
|
+
case "=":
|
|
28
|
+
return av.getTime() == value.getTime();
|
|
29
|
+
case ">":
|
|
30
|
+
return av.getTime() > value.getTime();
|
|
31
|
+
case "<":
|
|
32
|
+
return av.getTime() < value.getTime();
|
|
33
|
+
}
|
|
24
34
|
}
|
|
25
35
|
break;
|
|
26
36
|
case "string":
|
|
@@ -35,6 +45,14 @@ export function filter(filterBy, getters = {}) {
|
|
|
35
45
|
return av.match(value);
|
|
36
46
|
case "bigint":
|
|
37
47
|
case "number":
|
|
48
|
+
switch (op) {
|
|
49
|
+
/* case "=":
|
|
50
|
+
return av == value;*/
|
|
51
|
+
case ">":
|
|
52
|
+
return av > value;
|
|
53
|
+
case "<":
|
|
54
|
+
return av < value;
|
|
55
|
+
}
|
|
38
56
|
case "boolean":
|
|
39
57
|
return av == value;
|
|
40
58
|
}
|