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 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.14.1",
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.7",
41
+ "semantic-release": "^24.2.8",
42
42
  "typescript": "^5.9.2"
43
43
  },
44
44
  "engines": {
@@ -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 "infix":
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
- if (typeof left === "number") {
109
- right.path.unshift(left);
110
- return right;
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: {
@@ -5,7 +5,7 @@ import { convertValue } from "./attributes.mjs";
5
5
  export function definePropertiesFromAttributes(
6
6
  object,
7
7
  attributes,
8
- values,
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(values, name, attribute) ?? values?.[name];
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");
@@ -1 +1 @@
1
- export function definePropertiesFromAttributes(object: any, attributes: any, values: any, properties?: {}): void;
1
+ export function definePropertiesFromAttributes(object: any, attributes: any, initialValues: any, properties?: {}): void;
@@ -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 { }