pacc 8.10.0 → 8.11.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 +36 -30
- package/package.json +1 -1
- package/src/ast.mjs +0 -15
- package/src/settergetter.mjs +7 -17
- package/src/tokens.mjs +36 -12
- package/types/tokens.d.mts +8 -3
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)
|
|
@@ -160,11 +158,14 @@ const result = expand("${a + 1}",{ root: { a: 2 }});
|
|
|
160
158
|
* [BAR](#bar)
|
|
161
159
|
* [DOUBLE\_BAR](#double_bar)
|
|
162
160
|
* [IDENTIFIER](#identifier)
|
|
161
|
+
* [STRING](#string)
|
|
162
|
+
* [NUMBER](#number)
|
|
163
|
+
* [BOOLEAN](#boolean)
|
|
163
164
|
* [EOF](#eof)
|
|
164
165
|
* [Type](#type)
|
|
165
166
|
* [Properties](#properties-3)
|
|
166
167
|
* [raiseOnUnknownType](#raiseonunknowntype)
|
|
167
|
-
* [Parameters](#parameters-
|
|
168
|
+
* [Parameters](#parameters-18)
|
|
168
169
|
|
|
169
170
|
## AST
|
|
170
171
|
|
|
@@ -174,14 +175,6 @@ Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Globa
|
|
|
174
175
|
|
|
175
176
|
* `eval` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** 
|
|
176
177
|
|
|
177
|
-
## binopError
|
|
178
|
-
|
|
179
|
-
### Parameters
|
|
180
|
-
|
|
181
|
-
* `token` **[Token](#token)** 
|
|
182
|
-
* `left` **[AST](#ast)** 
|
|
183
|
-
* `right` **[AST](#ast)** 
|
|
184
|
-
|
|
185
178
|
## prepareAttributesDefinitions
|
|
186
179
|
|
|
187
180
|
Create attributes from its definition.
|
|
@@ -661,7 +654,8 @@ Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Globa
|
|
|
661
654
|
* `str` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
|
|
662
655
|
* `precedence` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** (optional, default `0`)
|
|
663
656
|
* `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)
|
|
657
|
+
* `led` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** (optional, default `()=>{}`)
|
|
658
|
+
* `nud` (optional, default `()=>{}`)
|
|
665
659
|
|
|
666
660
|
Returns **[Token](#token)** 
|
|
667
661
|
|
|
@@ -773,6 +767,18 @@ Type: [Token](#token)
|
|
|
773
767
|
|
|
774
768
|
Type: [Token](#token)
|
|
775
769
|
|
|
770
|
+
## STRING
|
|
771
|
+
|
|
772
|
+
Type: [Token](#token)
|
|
773
|
+
|
|
774
|
+
## NUMBER
|
|
775
|
+
|
|
776
|
+
Type: [Token](#token)
|
|
777
|
+
|
|
778
|
+
## BOOLEAN
|
|
779
|
+
|
|
780
|
+
Type: [Token](#token)
|
|
781
|
+
|
|
776
782
|
## EOF
|
|
777
783
|
|
|
778
784
|
Type: [Token](#token)
|
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
|
@@ -10,8 +10,6 @@ const lookup = {};
|
|
|
10
10
|
* @property {string} str
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
function infix() {}
|
|
14
|
-
|
|
15
13
|
/**
|
|
16
14
|
*
|
|
17
15
|
* @param {string} str
|
|
@@ -94,6 +92,9 @@ export /** @type {Token} */ const MINUS = createBinopToken(
|
|
|
94
92
|
"infix",
|
|
95
93
|
(left, right) => left - right
|
|
96
94
|
);
|
|
95
|
+
|
|
96
|
+
MINUS.nud = (parser) => - parser.value;
|
|
97
|
+
|
|
97
98
|
export /** @type {Token} */ const STAR = createBinopToken(
|
|
98
99
|
"*",
|
|
99
100
|
60,
|
|
@@ -257,6 +258,29 @@ export /** @type {Token} */ const IDENTIFIER = createToken(
|
|
|
257
258
|
}
|
|
258
259
|
);
|
|
259
260
|
|
|
261
|
+
export /** @type {Token} */ const STRING = createToken(
|
|
262
|
+
"STRING",
|
|
263
|
+
0,
|
|
264
|
+
undefined,
|
|
265
|
+
undefined,
|
|
266
|
+
parser => parser.value
|
|
267
|
+
);
|
|
268
|
+
|
|
269
|
+
export /** @type {Token} */ const NUMBER = createToken(
|
|
270
|
+
"NUMBER",
|
|
271
|
+
0,
|
|
272
|
+
undefined,
|
|
273
|
+
undefined,
|
|
274
|
+
parser => parser.value
|
|
275
|
+
);
|
|
276
|
+
export /** @type {Token} */ const BOOLEAN = createToken(
|
|
277
|
+
"BOOLEAN",
|
|
278
|
+
0,
|
|
279
|
+
undefined,
|
|
280
|
+
undefined,
|
|
281
|
+
parser => parser.value
|
|
282
|
+
);
|
|
283
|
+
|
|
260
284
|
export /** @type {Token} */ const EOF = createToken(
|
|
261
285
|
"EOF",
|
|
262
286
|
-1,
|
|
@@ -268,8 +292,8 @@ export /** @type {Token} */ const EOF = createToken(
|
|
|
268
292
|
);
|
|
269
293
|
|
|
270
294
|
export const keywords = {
|
|
271
|
-
true: [true],
|
|
272
|
-
false: [false]
|
|
295
|
+
true: [BOOLEAN, true],
|
|
296
|
+
false: [BOOLEAN, false]
|
|
273
297
|
};
|
|
274
298
|
|
|
275
299
|
const esc = {
|
|
@@ -331,7 +355,7 @@ export function* tokens(string, options = {}) {
|
|
|
331
355
|
case " ":
|
|
332
356
|
switch (state) {
|
|
333
357
|
case "number":
|
|
334
|
-
yield [options.parseFloat(value)];
|
|
358
|
+
yield [NUMBER, options.parseFloat(value)];
|
|
335
359
|
state = undefined;
|
|
336
360
|
case undefined:
|
|
337
361
|
break;
|
|
@@ -360,13 +384,13 @@ export function* tokens(string, options = {}) {
|
|
|
360
384
|
case "'":
|
|
361
385
|
switch (state) {
|
|
362
386
|
case "number":
|
|
363
|
-
yield [options.parseFloat(value)];
|
|
387
|
+
yield [NUMBER,options.parseFloat(value)];
|
|
364
388
|
case undefined:
|
|
365
389
|
startString(c);
|
|
366
390
|
break;
|
|
367
391
|
case "string":
|
|
368
392
|
if (c === quote) {
|
|
369
|
-
yield [value];
|
|
393
|
+
yield [STRING, value];
|
|
370
394
|
state = undefined;
|
|
371
395
|
} else {
|
|
372
396
|
value += c;
|
|
@@ -388,7 +412,7 @@ export function* tokens(string, options = {}) {
|
|
|
388
412
|
case "|":
|
|
389
413
|
switch (state) {
|
|
390
414
|
case "number":
|
|
391
|
-
yield [options.parseFloat(value)];
|
|
415
|
+
yield [NUMBER, options.parseFloat(value)];
|
|
392
416
|
case undefined:
|
|
393
417
|
state = c;
|
|
394
418
|
break;
|
|
@@ -419,7 +443,7 @@ export function* tokens(string, options = {}) {
|
|
|
419
443
|
case "=":
|
|
420
444
|
switch (state) {
|
|
421
445
|
case "number":
|
|
422
|
-
yield [options.parseFloat(value)];
|
|
446
|
+
yield [NUMBER, options.parseFloat(value)];
|
|
423
447
|
case undefined:
|
|
424
448
|
state = c;
|
|
425
449
|
break;
|
|
@@ -460,7 +484,7 @@ export function* tokens(string, options = {}) {
|
|
|
460
484
|
case "}":
|
|
461
485
|
switch (state) {
|
|
462
486
|
case "number":
|
|
463
|
-
yield [options.parseFloat(value)];
|
|
487
|
+
yield [NUMBER, options.parseFloat(value)];
|
|
464
488
|
case undefined:
|
|
465
489
|
state = c;
|
|
466
490
|
break;
|
|
@@ -511,7 +535,7 @@ export function* tokens(string, options = {}) {
|
|
|
511
535
|
default:
|
|
512
536
|
switch (state) {
|
|
513
537
|
case "number":
|
|
514
|
-
yield [options.parseFloat(value)];
|
|
538
|
+
yield [NUMBER, options.parseFloat(value)];
|
|
515
539
|
case undefined:
|
|
516
540
|
state = "identifier";
|
|
517
541
|
value = c;
|
|
@@ -534,7 +558,7 @@ export function* tokens(string, options = {}) {
|
|
|
534
558
|
case "string":
|
|
535
559
|
throw new Error("unterminated string", { cause: string });
|
|
536
560
|
case "number":
|
|
537
|
-
yield [options.parseFloat(value)];
|
|
561
|
+
yield [NUMBER, options.parseFloat(value)];
|
|
538
562
|
break;
|
|
539
563
|
case "identifier":
|
|
540
564
|
yield keywordOrIdentifier();
|
package/types/tokens.d.mts
CHANGED
|
@@ -8,7 +8,9 @@ export function tokens(string: string, options?: {}): Generator<any, void, unkno
|
|
|
8
8
|
export namespace PLUS {
|
|
9
9
|
let str: string;
|
|
10
10
|
}
|
|
11
|
-
export namespace MINUS {
|
|
11
|
+
export namespace MINUS {
|
|
12
|
+
function nud(parser: any): number;
|
|
13
|
+
}
|
|
12
14
|
export namespace STAR { }
|
|
13
15
|
export namespace DIVIDE { }
|
|
14
16
|
export namespace NOT { }
|
|
@@ -34,11 +36,14 @@ export namespace DOUBLE_AMPERSAND { }
|
|
|
34
36
|
export namespace BAR { }
|
|
35
37
|
export namespace DOUBLE_BAR { }
|
|
36
38
|
export namespace IDENTIFIER { }
|
|
39
|
+
export namespace STRING { }
|
|
40
|
+
export namespace NUMBER { }
|
|
41
|
+
export namespace BOOLEAN { }
|
|
37
42
|
export namespace EOF { }
|
|
38
43
|
export namespace keywords {
|
|
39
|
-
let _true: boolean[];
|
|
44
|
+
let _true: (boolean | Token)[];
|
|
40
45
|
export { _true as true };
|
|
41
|
-
let _false: boolean[];
|
|
46
|
+
let _false: (boolean | Token)[];
|
|
42
47
|
export { _false as false };
|
|
43
48
|
}
|
|
44
49
|
export type Token = {
|