pacc 4.14.1 → 4.15.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/README.md +5 -5
- package/package.json +2 -2
- package/src/expression.mjs +51 -20
- package/src/properties.mjs +2 -2
- package/src/tokens.mjs +1 -1
- package/types/properties.d.mts +1 -1
- package/types/tokens.d.mts +1 -1
package/README.md
CHANGED
|
@@ -105,11 +105,11 @@ const result = getAttribute({ a: [0,{ b: 4 }]}, "a[1].b");
|
|
|
105
105
|
* [DIVIDE](#divide)
|
|
106
106
|
* [NOT](#not)
|
|
107
107
|
* [NOT\_EQUAL](#not_equal)
|
|
108
|
+
* [EQUAL](#equal)
|
|
108
109
|
* [GREATER](#greater)
|
|
109
110
|
* [GREATER\_EQUAL](#greater_equal)
|
|
110
111
|
* [LESS](#less)
|
|
111
112
|
* [LESS\_EQUAL](#less_equal)
|
|
112
|
-
* [EQUAL](#equal)
|
|
113
113
|
* [OPEN\_ROUND](#open_round)
|
|
114
114
|
* [CLOSE\_ROUND](#close_round)
|
|
115
115
|
* [OPEN\_BRACKET](#open_bracket)
|
|
@@ -491,6 +491,10 @@ Type: [Token](#token)
|
|
|
491
491
|
|
|
492
492
|
Type: [Token](#token)
|
|
493
493
|
|
|
494
|
+
## EQUAL
|
|
495
|
+
|
|
496
|
+
Type: [Token](#token)
|
|
497
|
+
|
|
494
498
|
## GREATER
|
|
495
499
|
|
|
496
500
|
Type: [Token](#token)
|
|
@@ -507,10 +511,6 @@ Type: [Token](#token)
|
|
|
507
511
|
|
|
508
512
|
Type: [Token](#token)
|
|
509
513
|
|
|
510
|
-
## EQUAL
|
|
511
|
-
|
|
512
|
-
Type: [Token](#token)
|
|
513
|
-
|
|
514
514
|
## OPEN\_ROUND
|
|
515
515
|
|
|
516
516
|
Type: [Token](#token)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pacc",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.15.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"provenance": true
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"browser-ava": "^2.3.31",
|
|
39
39
|
"c8": "^10.1.3",
|
|
40
40
|
"documentation": "^14.0.3",
|
|
41
|
-
"semantic-release": "^24.2.
|
|
41
|
+
"semantic-release": "^24.2.8",
|
|
42
42
|
"typescript": "^5.9.2"
|
|
43
43
|
},
|
|
44
44
|
"engines": {
|
package/src/expression.mjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import {
|
|
2
|
-
tokens,
|
|
3
2
|
DOT,
|
|
4
3
|
OPEN_ROUND,
|
|
5
4
|
CLOSE_ROUND,
|
|
@@ -66,6 +65,8 @@ export function parse(context) {
|
|
|
66
65
|
switch (typeof token) {
|
|
67
66
|
case "string":
|
|
68
67
|
return { path: [token] };
|
|
68
|
+
case "boolean":
|
|
69
|
+
case "bigint":
|
|
69
70
|
case "number":
|
|
70
71
|
return token;
|
|
71
72
|
}
|
|
@@ -75,10 +76,53 @@ export function parse(context) {
|
|
|
75
76
|
|
|
76
77
|
const led = (token, left) => {
|
|
77
78
|
switch (token.type) {
|
|
78
|
-
case "
|
|
79
|
+
case "infixr": {
|
|
80
|
+
const right = expression(token.precedence - 1);
|
|
81
|
+
if (typeof left === typeof right) {
|
|
82
|
+
switch (typeof left) {
|
|
83
|
+
case "bigint":
|
|
84
|
+
case "number":
|
|
85
|
+
case "string":
|
|
86
|
+
switch (token) {
|
|
87
|
+
case GREATER:
|
|
88
|
+
return left > right;
|
|
89
|
+
case GREATER_EQUAL:
|
|
90
|
+
return left >= right;
|
|
91
|
+
case LESS:
|
|
92
|
+
return left < right;
|
|
93
|
+
case LESS_EQUAL:
|
|
94
|
+
return left <= right;
|
|
95
|
+
case EQUAL:
|
|
96
|
+
return left == right;
|
|
97
|
+
case NOT_EQUAL:
|
|
98
|
+
return left != right;
|
|
99
|
+
}
|
|
100
|
+
break;
|
|
101
|
+
case "boolean":
|
|
102
|
+
switch (token) {
|
|
103
|
+
case DOUBLE_BAR:
|
|
104
|
+
return left || right;
|
|
105
|
+
case DOUBLE_AMPERSAND:
|
|
106
|
+
return left && right;
|
|
107
|
+
case EQUAL:
|
|
108
|
+
return left == right;
|
|
109
|
+
case NOT_EQUAL:
|
|
110
|
+
return left != right;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
token,
|
|
116
|
+
left,
|
|
117
|
+
right
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
case "infix": {
|
|
79
122
|
const right = expression(token.precedence);
|
|
80
123
|
if (typeof left === typeof right) {
|
|
81
124
|
switch (typeof left) {
|
|
125
|
+
case "bigint":
|
|
82
126
|
case "number":
|
|
83
127
|
switch (token) {
|
|
84
128
|
case PLUS:
|
|
@@ -91,13 +135,6 @@ export function parse(context) {
|
|
|
91
135
|
return left / right;
|
|
92
136
|
}
|
|
93
137
|
break;
|
|
94
|
-
case "boolean":
|
|
95
|
-
switch (token) {
|
|
96
|
-
case DOUBLE_BAR:
|
|
97
|
-
return left || right;
|
|
98
|
-
case DOUBLE_AMPERSAND:
|
|
99
|
-
return left && right;
|
|
100
|
-
}
|
|
101
138
|
}
|
|
102
139
|
}
|
|
103
140
|
if (token === DOT) {
|
|
@@ -105,9 +142,10 @@ export function parse(context) {
|
|
|
105
142
|
left.path.push(...right.path);
|
|
106
143
|
return left;
|
|
107
144
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
145
|
+
switch (typeof left) {
|
|
146
|
+
case "number":
|
|
147
|
+
right.path.unshift(left);
|
|
148
|
+
return right;
|
|
111
149
|
}
|
|
112
150
|
return { path: [left.token, right.token] };
|
|
113
151
|
}
|
|
@@ -120,14 +158,7 @@ export function parse(context) {
|
|
|
120
158
|
left,
|
|
121
159
|
right
|
|
122
160
|
};
|
|
123
|
-
|
|
124
|
-
case "infixr":
|
|
125
|
-
return {
|
|
126
|
-
token,
|
|
127
|
-
left,
|
|
128
|
-
right: expression(token.precedence - 1)
|
|
129
|
-
};
|
|
130
|
-
|
|
161
|
+
}
|
|
131
162
|
case "prefix":
|
|
132
163
|
switch (token) {
|
|
133
164
|
case OPEN_BRACKET: {
|
package/src/properties.mjs
CHANGED
|
@@ -5,7 +5,7 @@ import { convertValue } from "./attributes.mjs";
|
|
|
5
5
|
export function definePropertiesFromAttributes(
|
|
6
6
|
object,
|
|
7
7
|
attributes,
|
|
8
|
-
|
|
8
|
+
initialValues,
|
|
9
9
|
properties = {}
|
|
10
10
|
) {
|
|
11
11
|
const applyLater = {};
|
|
@@ -13,7 +13,7 @@ export function definePropertiesFromAttributes(
|
|
|
13
13
|
for (const [path, attribute] of attributeIterator(attributes)) {
|
|
14
14
|
const name = path.join(".");
|
|
15
15
|
|
|
16
|
-
let value = getAttribute(
|
|
16
|
+
let value = getAttribute(initialValues, name, attribute) ?? initialValues?.[name] ?? attribute.default;
|
|
17
17
|
|
|
18
18
|
if (value !== undefined) {
|
|
19
19
|
if (path.length === 1) {
|
package/src/tokens.mjs
CHANGED
|
@@ -25,6 +25,7 @@ export /** @type {Token} */ const STAR = createToken("*", 60, "infix");
|
|
|
25
25
|
export /** @type {Token} */ const DIVIDE = createToken("/", 60, "infix");
|
|
26
26
|
export /** @type {Token} */ const NOT = createToken("!");
|
|
27
27
|
export /** @type {Token} */ const NOT_EQUAL = createToken("!=", 40, "infixr");
|
|
28
|
+
export /** @type {Token} */ const EQUAL = createToken("=", 40, "infixr");
|
|
28
29
|
export /** @type {Token} */ const GREATER = createToken(">", 40, "infixr");
|
|
29
30
|
export /** @type {Token} */ const GREATER_EQUAL = createToken(
|
|
30
31
|
">=",
|
|
@@ -33,7 +34,6 @@ export /** @type {Token} */ const GREATER_EQUAL = createToken(
|
|
|
33
34
|
);
|
|
34
35
|
export /** @type {Token} */ const LESS = createToken("<", 40, "infixr");
|
|
35
36
|
export /** @type {Token} */ const LESS_EQUAL = createToken("<=", 40, "infixr");
|
|
36
|
-
export /** @type {Token} */ const EQUAL = createToken("=", 40);
|
|
37
37
|
export /** @type {Token} */ const OPEN_ROUND = createToken("(", 0, "prefix");
|
|
38
38
|
export /** @type {Token} */ const CLOSE_ROUND = createToken(")", 0, "infix");
|
|
39
39
|
export /** @type {Token} */ const OPEN_BRACKET = createToken("[", 10, "prefix");
|
package/types/properties.d.mts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export function definePropertiesFromAttributes(object: any, attributes: any,
|
|
1
|
+
export function definePropertiesFromAttributes(object: any, attributes: any, initialValues: any, properties?: {}): void;
|
package/types/tokens.d.mts
CHANGED
|
@@ -13,11 +13,11 @@ export namespace STAR { }
|
|
|
13
13
|
export namespace DIVIDE { }
|
|
14
14
|
export namespace NOT { }
|
|
15
15
|
export namespace NOT_EQUAL { }
|
|
16
|
+
export namespace EQUAL { }
|
|
16
17
|
export namespace GREATER { }
|
|
17
18
|
export namespace GREATER_EQUAL { }
|
|
18
19
|
export namespace LESS { }
|
|
19
20
|
export namespace LESS_EQUAL { }
|
|
20
|
-
export namespace EQUAL { }
|
|
21
21
|
export namespace OPEN_ROUND { }
|
|
22
22
|
export namespace CLOSE_ROUND { }
|
|
23
23
|
export namespace OPEN_BRACKET { }
|