pacc 8.10.0 → 8.11.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/README.md +21 -30
- package/package.json +1 -1
- package/src/ast.mjs +0 -15
- package/src/settergetter.mjs +7 -17
- package/src/tokens.mjs +33 -10
- package/types/tokens.d.mts +5 -2
package/README.md
CHANGED
|
@@ -32,16 +32,14 @@ const result = expand("${a + 1}",{ root: { a: 2 }});
|
|
|
32
32
|
|
|
33
33
|
* [AST](#ast)
|
|
34
34
|
* [Properties](#properties)
|
|
35
|
-
* [binopError](#binoperror)
|
|
36
|
-
* [Parameters](#parameters)
|
|
37
35
|
* [prepareAttributesDefinitions](#prepareattributesdefinitions)
|
|
38
|
-
* [Parameters](#parameters
|
|
36
|
+
* [Parameters](#parameters)
|
|
39
37
|
* [mergeAttributeDefinitions](#mergeattributedefinitions)
|
|
40
|
-
* [Parameters](#parameters-
|
|
38
|
+
* [Parameters](#parameters-1)
|
|
41
39
|
* [attributeIterator](#attributeiterator)
|
|
42
|
-
* [Parameters](#parameters-
|
|
40
|
+
* [Parameters](#parameters-2)
|
|
43
41
|
* [parseBytes](#parsebytes)
|
|
44
|
-
* [Parameters](#parameters-
|
|
42
|
+
* [Parameters](#parameters-3)
|
|
45
43
|
* [AttributeDefinition](#attributedefinition)
|
|
46
44
|
* [Properties](#properties-1)
|
|
47
45
|
* [default\_attribute](#default_attribute)
|
|
@@ -99,40 +97,40 @@ const result = expand("${a + 1}",{ root: { a: 2 }});
|
|
|
99
97
|
* [timeout\_attribute](#timeout_attribute)
|
|
100
98
|
* [language\_attribute](#language_attribute)
|
|
101
99
|
* [environmentValues](#environmentvalues)
|
|
102
|
-
* [Parameters](#parameters-
|
|
100
|
+
* [Parameters](#parameters-4)
|
|
103
101
|
* [expandContextDefault](#expandcontextdefault)
|
|
104
102
|
* [expandContextDoubbleCurly](#expandcontextdoubblecurly)
|
|
105
103
|
* [expand](#expand)
|
|
106
|
-
* [Parameters](#parameters-
|
|
104
|
+
* [Parameters](#parameters-5)
|
|
107
105
|
* [promises](#promises)
|
|
108
106
|
* [filter](#filter)
|
|
109
|
-
* [Parameters](#parameters-
|
|
107
|
+
* [Parameters](#parameters-6)
|
|
110
108
|
* [setAttributes](#setattributes)
|
|
111
|
-
* [Parameters](#parameters-
|
|
109
|
+
* [Parameters](#parameters-7)
|
|
112
110
|
* [getAttributes](#getattributes)
|
|
113
|
-
* [Parameters](#parameters-
|
|
111
|
+
* [Parameters](#parameters-8)
|
|
114
112
|
* [getAttributesJSON](#getattributesjson)
|
|
115
|
-
* [Parameters](#parameters-
|
|
113
|
+
* [Parameters](#parameters-9)
|
|
116
114
|
* [tokens](#tokens)
|
|
117
115
|
* [tokens](#tokens-1)
|
|
118
|
-
* [Parameters](#parameters-
|
|
116
|
+
* [Parameters](#parameters-10)
|
|
119
117
|
* [setAttribute](#setattribute)
|
|
120
|
-
* [Parameters](#parameters-
|
|
118
|
+
* [Parameters](#parameters-11)
|
|
121
119
|
* [getAttribute](#getattribute)
|
|
122
|
-
* [Parameters](#parameters-
|
|
120
|
+
* [Parameters](#parameters-12)
|
|
123
121
|
* [getAttributeAndOperator](#getattributeandoperator)
|
|
124
|
-
* [Parameters](#parameters-
|
|
122
|
+
* [Parameters](#parameters-13)
|
|
125
123
|
* [parseDuration](#parseduration)
|
|
126
|
-
* [Parameters](#parameters-
|
|
124
|
+
* [Parameters](#parameters-14)
|
|
127
125
|
* [formatDuration](#formatduration)
|
|
128
|
-
* [Parameters](#parameters-
|
|
126
|
+
* [Parameters](#parameters-15)
|
|
129
127
|
* [formatDurationISO](#formatdurationiso)
|
|
130
|
-
* [Parameters](#parameters-
|
|
128
|
+
* [Parameters](#parameters-16)
|
|
131
129
|
* [lookup](#lookup)
|
|
132
130
|
* [Token](#token)
|
|
133
131
|
* [Properties](#properties-2)
|
|
134
132
|
* [createToken](#createtoken)
|
|
135
|
-
* [Parameters](#parameters-
|
|
133
|
+
* [Parameters](#parameters-17)
|
|
136
134
|
* [PLUS](#plus)
|
|
137
135
|
* [MINUS](#minus)
|
|
138
136
|
* [STAR](#star)
|
|
@@ -164,7 +162,7 @@ const result = expand("${a + 1}",{ root: { a: 2 }});
|
|
|
164
162
|
* [Type](#type)
|
|
165
163
|
* [Properties](#properties-3)
|
|
166
164
|
* [raiseOnUnknownType](#raiseonunknowntype)
|
|
167
|
-
* [Parameters](#parameters-
|
|
165
|
+
* [Parameters](#parameters-18)
|
|
168
166
|
|
|
169
167
|
## AST
|
|
170
168
|
|
|
@@ -174,14 +172,6 @@ Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Globa
|
|
|
174
172
|
|
|
175
173
|
* `eval` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** 
|
|
176
174
|
|
|
177
|
-
## binopError
|
|
178
|
-
|
|
179
|
-
### Parameters
|
|
180
|
-
|
|
181
|
-
* `token` **[Token](#token)** 
|
|
182
|
-
* `left` **[AST](#ast)** 
|
|
183
|
-
* `right` **[AST](#ast)** 
|
|
184
|
-
|
|
185
175
|
## prepareAttributesDefinitions
|
|
186
176
|
|
|
187
177
|
Create attributes from its definition.
|
|
@@ -661,7 +651,8 @@ Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Globa
|
|
|
661
651
|
* `str` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
|
|
662
652
|
* `precedence` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** (optional, default `0`)
|
|
663
653
|
* `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** 
|
|
664
|
-
* `led` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)
|
|
654
|
+
* `led` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** (optional, default `()=>{}`)
|
|
655
|
+
* `nud` (optional, default `()=>{}`)
|
|
665
656
|
|
|
666
657
|
Returns **[Token](#token)** 
|
|
667
658
|
|
package/package.json
CHANGED
package/src/ast.mjs
CHANGED
|
@@ -1,24 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
DOUBLE_BAR,
|
|
3
|
-
DOUBLE_AMPERSAND,
|
|
4
|
-
EQUAL,
|
|
5
|
-
NOT_EQUAL,
|
|
6
|
-
LESS,
|
|
7
|
-
LESS_EQUAL,
|
|
8
|
-
GREATER,
|
|
9
|
-
GREATER_EQUAL,
|
|
10
|
-
STAR,
|
|
11
|
-
DIVIDE,
|
|
12
|
-
PLUS,
|
|
13
|
-
MINUS
|
|
14
|
-
} from "./tokens.mjs";
|
|
15
1
|
|
|
16
2
|
/**
|
|
17
3
|
* @typedef {Object} AST
|
|
18
4
|
* @property {Function} [eval]
|
|
19
5
|
*/
|
|
20
6
|
|
|
21
|
-
|
|
22
7
|
export function pathEval(node, current, context) {
|
|
23
8
|
let collection = false;
|
|
24
9
|
let first = true;
|
package/src/settergetter.mjs
CHANGED
|
@@ -14,7 +14,10 @@ import {
|
|
|
14
14
|
GREATER,
|
|
15
15
|
GREATER_EQUAL,
|
|
16
16
|
STAR,
|
|
17
|
-
IDENTIFIER
|
|
17
|
+
IDENTIFIER,
|
|
18
|
+
STRING,
|
|
19
|
+
NUMBER,
|
|
20
|
+
BOOLEAN
|
|
18
21
|
} from "./tokens.mjs";
|
|
19
22
|
import { parseOnly } from "./expression.mjs";
|
|
20
23
|
import { toInternal } from "./attributes.mjs";
|
|
@@ -146,6 +149,9 @@ export function getAttributeAndOperator(object, expression) {
|
|
|
146
149
|
predicateTokens.push(token[0]);
|
|
147
150
|
break;
|
|
148
151
|
|
|
152
|
+
case STRING:
|
|
153
|
+
case NUMBER:
|
|
154
|
+
case BOOLEAN:
|
|
149
155
|
case IDENTIFIER:
|
|
150
156
|
if (object !== undefined) {
|
|
151
157
|
switch (typeof object[token[1]]) {
|
|
@@ -163,22 +169,6 @@ export function getAttributeAndOperator(object, expression) {
|
|
|
163
169
|
}
|
|
164
170
|
}
|
|
165
171
|
break;
|
|
166
|
-
default:
|
|
167
|
-
if (object !== undefined) {
|
|
168
|
-
switch (typeof object[token[0]]) {
|
|
169
|
-
case "function":
|
|
170
|
-
object = object[token[0]]();
|
|
171
|
-
if (typeof object[Symbol.iterator] === "function") {
|
|
172
|
-
object = [...object];
|
|
173
|
-
}
|
|
174
|
-
break;
|
|
175
|
-
default:
|
|
176
|
-
object = object[token[0]];
|
|
177
|
-
break;
|
|
178
|
-
case "undefined":
|
|
179
|
-
return [undefined, op];
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
172
|
}
|
|
183
173
|
}
|
|
184
174
|
|
package/src/tokens.mjs
CHANGED
|
@@ -257,6 +257,29 @@ export /** @type {Token} */ const IDENTIFIER = createToken(
|
|
|
257
257
|
}
|
|
258
258
|
);
|
|
259
259
|
|
|
260
|
+
export /** @type {Token} */ const STRING = createToken(
|
|
261
|
+
"STRING",
|
|
262
|
+
0,
|
|
263
|
+
undefined,
|
|
264
|
+
undefined,
|
|
265
|
+
parser => parser.value
|
|
266
|
+
);
|
|
267
|
+
|
|
268
|
+
export /** @type {Token} */ const NUMBER = createToken(
|
|
269
|
+
"NUMBER",
|
|
270
|
+
0,
|
|
271
|
+
undefined,
|
|
272
|
+
undefined,
|
|
273
|
+
parser => parser.value
|
|
274
|
+
);
|
|
275
|
+
export /** @type {Token} */ const BOOLEAN = createToken(
|
|
276
|
+
"BOOLEAN",
|
|
277
|
+
0,
|
|
278
|
+
undefined,
|
|
279
|
+
undefined,
|
|
280
|
+
parser => parser.value
|
|
281
|
+
);
|
|
282
|
+
|
|
260
283
|
export /** @type {Token} */ const EOF = createToken(
|
|
261
284
|
"EOF",
|
|
262
285
|
-1,
|
|
@@ -268,8 +291,8 @@ export /** @type {Token} */ const EOF = createToken(
|
|
|
268
291
|
);
|
|
269
292
|
|
|
270
293
|
export const keywords = {
|
|
271
|
-
true: [true],
|
|
272
|
-
false: [false]
|
|
294
|
+
true: [BOOLEAN, true],
|
|
295
|
+
false: [BOOLEAN, false]
|
|
273
296
|
};
|
|
274
297
|
|
|
275
298
|
const esc = {
|
|
@@ -331,7 +354,7 @@ export function* tokens(string, options = {}) {
|
|
|
331
354
|
case " ":
|
|
332
355
|
switch (state) {
|
|
333
356
|
case "number":
|
|
334
|
-
yield [options.parseFloat(value)];
|
|
357
|
+
yield [NUMBER, options.parseFloat(value)];
|
|
335
358
|
state = undefined;
|
|
336
359
|
case undefined:
|
|
337
360
|
break;
|
|
@@ -360,13 +383,13 @@ export function* tokens(string, options = {}) {
|
|
|
360
383
|
case "'":
|
|
361
384
|
switch (state) {
|
|
362
385
|
case "number":
|
|
363
|
-
yield [options.parseFloat(value)];
|
|
386
|
+
yield [NUMBER,options.parseFloat(value)];
|
|
364
387
|
case undefined:
|
|
365
388
|
startString(c);
|
|
366
389
|
break;
|
|
367
390
|
case "string":
|
|
368
391
|
if (c === quote) {
|
|
369
|
-
yield [value];
|
|
392
|
+
yield [STRING, value];
|
|
370
393
|
state = undefined;
|
|
371
394
|
} else {
|
|
372
395
|
value += c;
|
|
@@ -388,7 +411,7 @@ export function* tokens(string, options = {}) {
|
|
|
388
411
|
case "|":
|
|
389
412
|
switch (state) {
|
|
390
413
|
case "number":
|
|
391
|
-
yield [options.parseFloat(value)];
|
|
414
|
+
yield [NUMBER, options.parseFloat(value)];
|
|
392
415
|
case undefined:
|
|
393
416
|
state = c;
|
|
394
417
|
break;
|
|
@@ -419,7 +442,7 @@ export function* tokens(string, options = {}) {
|
|
|
419
442
|
case "=":
|
|
420
443
|
switch (state) {
|
|
421
444
|
case "number":
|
|
422
|
-
yield [options.parseFloat(value)];
|
|
445
|
+
yield [NUMBER, options.parseFloat(value)];
|
|
423
446
|
case undefined:
|
|
424
447
|
state = c;
|
|
425
448
|
break;
|
|
@@ -460,7 +483,7 @@ export function* tokens(string, options = {}) {
|
|
|
460
483
|
case "}":
|
|
461
484
|
switch (state) {
|
|
462
485
|
case "number":
|
|
463
|
-
yield [options.parseFloat(value)];
|
|
486
|
+
yield [NUMBER, options.parseFloat(value)];
|
|
464
487
|
case undefined:
|
|
465
488
|
state = c;
|
|
466
489
|
break;
|
|
@@ -511,7 +534,7 @@ export function* tokens(string, options = {}) {
|
|
|
511
534
|
default:
|
|
512
535
|
switch (state) {
|
|
513
536
|
case "number":
|
|
514
|
-
yield [options.parseFloat(value)];
|
|
537
|
+
yield [NUMBER, options.parseFloat(value)];
|
|
515
538
|
case undefined:
|
|
516
539
|
state = "identifier";
|
|
517
540
|
value = c;
|
|
@@ -534,7 +557,7 @@ export function* tokens(string, options = {}) {
|
|
|
534
557
|
case "string":
|
|
535
558
|
throw new Error("unterminated string", { cause: string });
|
|
536
559
|
case "number":
|
|
537
|
-
yield [options.parseFloat(value)];
|
|
560
|
+
yield [NUMBER, options.parseFloat(value)];
|
|
538
561
|
break;
|
|
539
562
|
case "identifier":
|
|
540
563
|
yield keywordOrIdentifier();
|
package/types/tokens.d.mts
CHANGED
|
@@ -34,11 +34,14 @@ export namespace DOUBLE_AMPERSAND { }
|
|
|
34
34
|
export namespace BAR { }
|
|
35
35
|
export namespace DOUBLE_BAR { }
|
|
36
36
|
export namespace IDENTIFIER { }
|
|
37
|
+
export namespace STRING { }
|
|
38
|
+
export namespace NUMBER { }
|
|
39
|
+
export namespace BOOLEAN { }
|
|
37
40
|
export namespace EOF { }
|
|
38
41
|
export namespace keywords {
|
|
39
|
-
let _true: boolean[];
|
|
42
|
+
let _true: (boolean | Token)[];
|
|
40
43
|
export { _true as true };
|
|
41
|
-
let _false: boolean[];
|
|
44
|
+
let _false: (boolean | Token)[];
|
|
42
45
|
export { _false as false };
|
|
43
46
|
}
|
|
44
47
|
export type Token = {
|