svelte-common 6.4.1 → 6.4.3

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.
Files changed (2) hide show
  1. package/package.json +3 -3
  2. package/src/filter.mjs +69 -52
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svelte-common",
3
- "version": "6.4.1",
3
+ "version": "6.4.3",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -41,7 +41,7 @@
41
41
  "preview": "vite preview"
42
42
  },
43
43
  "dependencies": {
44
- "svelte-command": "^1.1.45",
44
+ "svelte-command": "^1.1.46",
45
45
  "svelte-entitlement": "^1.2.59"
46
46
  },
47
47
  "devDependencies": {
@@ -53,7 +53,7 @@
53
53
  "c8": "^8.0.0",
54
54
  "documentation": "^14.0.2",
55
55
  "mf-styling": "^3.0.2",
56
- "npm-pkgbuild": "^11.9.1",
56
+ "npm-pkgbuild": "^11.10.1",
57
57
  "semantic-release": "^21.0.7",
58
58
  "stylelint": "^15.10.1",
59
59
  "stylelint-config-standard": "^34.0.0",
package/src/filter.mjs CHANGED
@@ -1,23 +1,80 @@
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 numberOp(a, b, op) {
7
+ function collectionOp(value, against, op) {
8
+ for (const v of value) {
9
+ if (allOp(v, against, op)) {
10
+ return true;
11
+ }
12
+ return false;
13
+ }
14
+
15
+ return false;
16
+ }
17
+
18
+ function allOp(value, against, op) {
19
+ switch (typeof against) {
20
+ case "bigint":
21
+ case "number":
22
+ return numberOp(value, against, op);
23
+ case "string":
24
+ if (value instanceof Date) {
25
+ return dateOp(value, new Date(against), op);
26
+ }
27
+ break;
28
+ case "object":
29
+ if (against instanceof RegExp) {
30
+ return against.test(value);
31
+ }
32
+ if (against instanceof Date) {
33
+ switch (typeof value) {
34
+ case "object":
35
+ if (value instanceof Date) {
36
+ return dateOp(value, against, op);
37
+ }
38
+ break;
39
+ case "string":
40
+ return dateOp(new Date(value), against, op);
41
+ }
42
+ }
43
+ }
44
+
45
+ switch (typeof value) {
46
+ case "object":
47
+ if (Array.isArray(value) || value instanceof Set) {
48
+ return collectionOp(value, against, op);
49
+ }
50
+
51
+ return value.toString().match(against);
52
+ case "string":
53
+ return value.match(against);
54
+ case "bigint":
55
+ case "number":
56
+ return numberOp(value, against, op);
57
+ case "boolean":
58
+ return value == against;
59
+ }
60
+
61
+ return false;
62
+ }
63
+
64
+ function numberOp(value, against, op) {
8
65
  switch (op) {
9
66
  case "!=":
10
- return a != b;
67
+ return value != against;
11
68
  case "=":
12
- return a == b;
69
+ return value == against;
13
70
  case ">":
14
- return a > b;
71
+ return value > against;
15
72
  case "<":
16
- return a < b;
73
+ return value < against;
17
74
  case ">=":
18
- return a >= b;
75
+ return value >= against;
19
76
  case "<=":
20
- return a <= b;
77
+ return value <= against;
21
78
  }
22
79
  }
23
80
 
@@ -29,50 +86,10 @@ function numberOp(a, b, op) {
29
86
  */
30
87
  export function filter(filterBy, getters) {
31
88
  if (filterBy) {
32
- const filters = Object.entries(filterBy).map(([key, value]) => {
89
+ const filters = Object.entries(filterBy).map(([key, against]) => {
33
90
  return a => {
34
- const [av, op] = getAttributeAndOperator(a, key, getters);
35
-
36
- // console.log("KEY", key, op, value, av);
37
-
38
- switch (typeof value) {
39
- case "bigint":
40
- case "number":
41
- return numberOp(av, value, op);
42
- case "string":
43
- if (av instanceof Date) {
44
- return dateOp(av, new Date(value), op);
45
- }
46
- break;
47
- case "object":
48
- if (value instanceof RegExp) {
49
- return value.test(av);
50
- }
51
- if (value instanceof Date) {
52
- switch (typeof av) {
53
- case "object":
54
- if (av instanceof Date) {
55
- return dateOp(av, value, op);
56
- }
57
- break;
58
- case "string":
59
- return dateOp(new Date(av), value, op);
60
- }
61
- }
62
- }
63
-
64
- switch (typeof av) {
65
- case "object":
66
- return av.toString().match(value);
67
- case "string":
68
- return av.match(value);
69
- case "bigint":
70
- case "number":
71
- return numberOp(av, value, op);
72
- case "boolean":
73
- return value == av;
74
- }
75
- return false;
91
+ const [value, op] = getAttributeAndOperator(a, key, getters);
92
+ return allOp(value, against, op);
76
93
  };
77
94
  });
78
95