repository-provider 33.0.1 → 33.0.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.
- package/README.md +1 -1
- package/package.json +2 -2
- package/src/attribute.mjs +52 -1
package/README.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "repository-provider",
|
|
3
|
-
"version": "33.0.
|
|
3
|
+
"version": "33.0.3",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"typescript": "^5.2.2"
|
|
43
43
|
},
|
|
44
44
|
"engines": {
|
|
45
|
-
"node": ">=18.18.
|
|
45
|
+
"node": ">=18.18.1"
|
|
46
46
|
},
|
|
47
47
|
"repository": {
|
|
48
48
|
"type": "git",
|
package/src/attribute.mjs
CHANGED
|
@@ -23,6 +23,21 @@ export function* tokens(string) {
|
|
|
23
23
|
let state, buffer;
|
|
24
24
|
|
|
25
25
|
for (const c of string) {
|
|
26
|
+
switch (state) {
|
|
27
|
+
case "string-escaping":
|
|
28
|
+
const esc = {
|
|
29
|
+
"\\": "\\",
|
|
30
|
+
t: "\t",
|
|
31
|
+
b: "\b",
|
|
32
|
+
r: "\r",
|
|
33
|
+
n: "\n",
|
|
34
|
+
f: "\f"
|
|
35
|
+
};
|
|
36
|
+
buffer += esc[c];
|
|
37
|
+
state = "string";
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
|
|
26
41
|
switch (c) {
|
|
27
42
|
case "\t":
|
|
28
43
|
case " ":
|
|
@@ -43,6 +58,13 @@ export function* tokens(string) {
|
|
|
43
58
|
}
|
|
44
59
|
break;
|
|
45
60
|
|
|
61
|
+
case "\\":
|
|
62
|
+
switch (state) {
|
|
63
|
+
case "string":
|
|
64
|
+
state = "string-escaping";
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
break;
|
|
46
68
|
case '"':
|
|
47
69
|
case "'":
|
|
48
70
|
switch (state) {
|
|
@@ -140,7 +162,8 @@ export function* tokens(string) {
|
|
|
140
162
|
if (
|
|
141
163
|
(c >= "a" && c <= "z") ||
|
|
142
164
|
(c >= "A" && c <= "Z") ||
|
|
143
|
-
(c >= "0" && c <= "9") ||
|
|
165
|
+
(c >= "0" && c <= "9") ||
|
|
166
|
+
c === "_"
|
|
144
167
|
) {
|
|
145
168
|
yield state;
|
|
146
169
|
state = "identifier";
|
|
@@ -156,6 +179,7 @@ export function* tokens(string) {
|
|
|
156
179
|
case undefined:
|
|
157
180
|
break;
|
|
158
181
|
case "string":
|
|
182
|
+
throw new Error("unterminated string");
|
|
159
183
|
case "identifier":
|
|
160
184
|
yield buffer;
|
|
161
185
|
break;
|
|
@@ -213,13 +237,27 @@ export function getAttribute(object, name) {
|
|
|
213
237
|
return object[name];
|
|
214
238
|
}
|
|
215
239
|
|
|
240
|
+
let predicateTokens;
|
|
241
|
+
|
|
216
242
|
for (const token of tokens(name)) {
|
|
217
243
|
switch (token) {
|
|
218
244
|
case ">":
|
|
219
245
|
case "<":
|
|
220
246
|
case ".":
|
|
247
|
+
break;
|
|
221
248
|
case "[":
|
|
249
|
+
predicateTokens = [];
|
|
250
|
+
break;
|
|
222
251
|
case "]":
|
|
252
|
+
// TODO: should loop over array actually getAttribute api should deliver iterators
|
|
253
|
+
if (Array.isArray(object)) {
|
|
254
|
+
object = object[0];
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
predicateTokens = undefined;
|
|
258
|
+
break;
|
|
259
|
+
case "*":
|
|
260
|
+
predicateTokens.push(token);
|
|
223
261
|
break;
|
|
224
262
|
|
|
225
263
|
default:
|
|
@@ -244,6 +282,8 @@ export function getAttribute(object, name) {
|
|
|
244
282
|
export function getAttributeAndOperator(object, expression, getters = {}) {
|
|
245
283
|
let op = "=";
|
|
246
284
|
|
|
285
|
+
let predicateTokens;
|
|
286
|
+
|
|
247
287
|
for (const token of tokens(expression)) {
|
|
248
288
|
switch (token) {
|
|
249
289
|
case ">=":
|
|
@@ -256,7 +296,18 @@ export function getAttributeAndOperator(object, expression, getters = {}) {
|
|
|
256
296
|
break;
|
|
257
297
|
case ".":
|
|
258
298
|
case "[":
|
|
299
|
+
predicateTokens = [];
|
|
300
|
+
break;
|
|
259
301
|
case "]":
|
|
302
|
+
// TODO: should loop over array actually getAttribute api should deliver iterators
|
|
303
|
+
if (Array.isArray(object)) {
|
|
304
|
+
object = object[0];
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
predicateTokens = undefined;
|
|
308
|
+
break;
|
|
309
|
+
case "*":
|
|
310
|
+
predicateTokens.push(token);
|
|
260
311
|
break;
|
|
261
312
|
|
|
262
313
|
default:
|