svelte-common 6.4.2 → 6.4.4

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svelte-common",
3
- "version": "6.4.2",
3
+ "version": "6.4.4",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -55,7 +55,7 @@
55
55
  "mf-styling": "^3.0.2",
56
56
  "npm-pkgbuild": "^11.10.1",
57
57
  "semantic-release": "^21.0.7",
58
- "stylelint": "^15.10.1",
58
+ "stylelint": "^15.10.2",
59
59
  "stylelint-config-standard": "^34.0.0",
60
60
  "svelte": "^4.0.5",
61
61
  "testcafe": "^3.0.1",
package/src/attribute.mjs CHANGED
@@ -210,6 +210,8 @@ export function getAttributeAndOperator(object, expression, getters = {}) {
210
210
  } else {
211
211
  if (object[token] !== undefined) {
212
212
  object = object[token];
213
+ } else {
214
+ return [undefined, op];
213
215
  }
214
216
  }
215
217
  }
package/src/filter.mjs CHANGED
@@ -1,34 +1,93 @@
1
1
  import { getAttributeAndOperator } from "./attribute.mjs";
2
2
 
3
- function dateOp(a, b, op) {
4
- return numberOp(a.getTime(), b.getTime(), op);
3
+ function dateOp(value, against, op) {
4
+ return numberOp(value.getTime(), against.getTime(), op);
5
5
  }
6
6
 
7
- function collectionOp(a, b, op) {
8
- for (const v of a) {
9
- const r = numberOp(v, b, op);
10
- if (r) {
11
- return r;
7
+ function collectionOp(value, against, op) {
8
+ for (const v of value) {
9
+ if (allOp(v, against, op)) {
10
+ return true;
12
11
  }
13
12
  }
14
13
 
15
14
  return false;
16
15
  }
17
16
 
18
- function numberOp(a, b, op) {
17
+ function allOp(value, against, op) {
18
+ switch (typeof against) {
19
+ case "object":
20
+ if (against instanceof Date) {
21
+ switch (typeof value) {
22
+ case "object":
23
+ if (value instanceof Date) {
24
+ return dateOp(value, against, op);
25
+ }
26
+ break;
27
+ case "string":
28
+ return dateOp(new Date(value), against, op);
29
+ }
30
+ }
31
+ }
32
+
33
+ switch (typeof value) {
34
+ case "object":
35
+ if (value instanceof Date) {
36
+ switch (typeof against) {
37
+ case "string":
38
+ return dateOp(value, new Date(against), op);
39
+ case "object":
40
+ if (against instanceof Date) {
41
+ return dateOp(value, against, op);
42
+ }
43
+ }
44
+ }
45
+
46
+ if (Array.isArray(value) || value instanceof Set) {
47
+ return collectionOp(value, against, op);
48
+ }
49
+
50
+ return value.toString().match(against);
51
+ case "string":
52
+ switch (typeof against) {
53
+ case "bigint":
54
+ case "number":
55
+ return numberOp(value, against, op);
56
+ case "object":
57
+ if (against instanceof RegExp) {
58
+ return against.test(value);
59
+ }
60
+ }
61
+
62
+ return value.match(against);
63
+ case "bigint":
64
+ case "number":
65
+ if (against instanceof RegExp) {
66
+ return against.test(value);
67
+ }
68
+
69
+ return numberOp(value, against, op);
70
+ case "boolean":
71
+ return value == against;
72
+ }
73
+
74
+ return false;
75
+ }
76
+
77
+ function numberOp(value, against, op) {
19
78
  switch (op) {
20
79
  case "!=":
21
- return a != b;
80
+ return value != against;
22
81
  case "=":
23
- return a == b;
82
+ return value == against;
24
83
  case ">":
25
- return a > b;
84
+ return value > against;
26
85
  case "<":
27
- return a < b;
86
+ return value < against;
28
87
  case ">=":
29
- return a >= b;
88
+ return value >= against;
30
89
  case "<=":
31
- return a <= b;
90
+ return value <= against;
32
91
  }
33
92
  }
34
93
 
@@ -40,52 +99,10 @@ function numberOp(a, b, op) {
40
99
  */
41
100
  export function filter(filterBy, getters) {
42
101
  if (filterBy) {
43
- const filters = Object.entries(filterBy).map(([key, value]) => {
102
+ const filters = Object.entries(filterBy).map(([key, against]) => {
44
103
  return a => {
45
- const [av, op] = getAttributeAndOperator(a, key, getters);
46
-
47
- switch (typeof value) {
48
- case "bigint":
49
- case "number":
50
- return numberOp(av, value, op);
51
- case "string":
52
- if (av instanceof Date) {
53
- return dateOp(av, new Date(value), op);
54
- }
55
- break;
56
- case "object":
57
- if (value instanceof RegExp) {
58
- return value.test(av);
59
- }
60
- if (value instanceof Date) {
61
- switch (typeof av) {
62
- case "object":
63
- if (av instanceof Date) {
64
- return dateOp(av, value, op);
65
- }
66
- break;
67
- case "string":
68
- return dateOp(new Date(av), value, op);
69
- }
70
- }
71
- }
72
-
73
- switch (typeof av) {
74
- case "object":
75
- if (Array.isArray(av) || av instanceof Set) {
76
- return collectionOp(av, value, op);
77
- }
78
-
79
- return av.toString().match(value);
80
- case "string":
81
- return av.match(value);
82
- case "bigint":
83
- case "number":
84
- return numberOp(av, value, op);
85
- case "boolean":
86
- return value == av;
87
- }
88
- return false;
104
+ const [value, op] = getAttributeAndOperator(a, key, getters);
105
+ return allOp(value, against, op);
89
106
  };
90
107
  });
91
108