@gabrielbryk/jq-ts 1.3.0 → 1.3.2
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/dist/index.cjs +40 -33
- package/dist/index.d.cts +10 -0
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +10 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +40 -33
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -864,8 +864,27 @@ var Parser = class {
|
|
|
864
864
|
if (!this.match("RBrace")) {
|
|
865
865
|
do {
|
|
866
866
|
const key = this.parseObjectKey();
|
|
867
|
-
|
|
868
|
-
|
|
867
|
+
let value;
|
|
868
|
+
if (this.match("Colon")) value = this.parseDef(false);
|
|
869
|
+
else if (key.kind === "KeyIdentifier") value = {
|
|
870
|
+
kind: "FieldAccess",
|
|
871
|
+
target: {
|
|
872
|
+
kind: "Identity",
|
|
873
|
+
span: key.span
|
|
874
|
+
},
|
|
875
|
+
field: key.name,
|
|
876
|
+
span: key.span
|
|
877
|
+
};
|
|
878
|
+
else if (key.kind === "KeyString") value = {
|
|
879
|
+
kind: "FieldAccess",
|
|
880
|
+
target: {
|
|
881
|
+
kind: "Identity",
|
|
882
|
+
span: key.span
|
|
883
|
+
},
|
|
884
|
+
field: key.value,
|
|
885
|
+
span: key.span
|
|
886
|
+
};
|
|
887
|
+
else throw this.error(this.peek(), "Expected \":\" after object key");
|
|
869
888
|
entries.push({
|
|
870
889
|
key,
|
|
871
890
|
value
|
|
@@ -3027,18 +3046,6 @@ var LimitTracker = class {
|
|
|
3027
3046
|
const getVar = (env, name) => {
|
|
3028
3047
|
for (let i = env.length - 1; i >= 0; i--) if (env[i].vars.has(name)) return env[i].vars.get(name);
|
|
3029
3048
|
};
|
|
3030
|
-
/**
|
|
3031
|
-
* Bounds a value to a variable name in the current scope frame.
|
|
3032
|
-
*/
|
|
3033
|
-
const pushBinding = (env, name, value) => {
|
|
3034
|
-
env[env.length - 1].vars.set(name, value);
|
|
3035
|
-
};
|
|
3036
|
-
/**
|
|
3037
|
-
* Removes a variable binding from the current scope frame.
|
|
3038
|
-
*/
|
|
3039
|
-
const popBinding = (env, name) => {
|
|
3040
|
-
env[env.length - 1].vars.delete(name);
|
|
3041
|
-
};
|
|
3042
3049
|
|
|
3043
3050
|
//#endregion
|
|
3044
3051
|
//#region src/eval/common.ts
|
|
@@ -3187,14 +3194,14 @@ const evalReduce = function* (node, input, env, tracker, evaluate$1) {
|
|
|
3187
3194
|
let acc = initValues[0];
|
|
3188
3195
|
for (const item of evaluate$1(node.source, input, env, tracker)) {
|
|
3189
3196
|
tracker.step(node.span);
|
|
3190
|
-
|
|
3191
|
-
|
|
3192
|
-
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3197
|
+
const newFrame = {
|
|
3198
|
+
vars: new Map([[node.var, item]]),
|
|
3199
|
+
funcs: /* @__PURE__ */ new Map()
|
|
3200
|
+
};
|
|
3201
|
+
const newEnv = [...env, newFrame];
|
|
3202
|
+
const updates = Array.from(evaluate$1(node.update, acc, newEnv, tracker));
|
|
3203
|
+
if (updates.length !== 1) throw new RuntimeError("Reduce update must produce single value", node.update.span);
|
|
3204
|
+
acc = updates[0];
|
|
3198
3205
|
}
|
|
3199
3206
|
yield emit(acc, node.span, tracker);
|
|
3200
3207
|
};
|
|
@@ -3215,16 +3222,16 @@ const evalForeach = function* (node, input, env, tracker, evaluate$1) {
|
|
|
3215
3222
|
let acc = initValues[0];
|
|
3216
3223
|
for (const item of evaluate$1(node.source, input, env, tracker)) {
|
|
3217
3224
|
tracker.step(node.span);
|
|
3218
|
-
|
|
3219
|
-
|
|
3220
|
-
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3225
|
+
const newFrame = {
|
|
3226
|
+
vars: new Map([[node.var, item]]),
|
|
3227
|
+
funcs: /* @__PURE__ */ new Map()
|
|
3228
|
+
};
|
|
3229
|
+
const newEnv = [...env, newFrame];
|
|
3230
|
+
const updates = Array.from(evaluate$1(node.update, acc, newEnv, tracker));
|
|
3231
|
+
if (updates.length !== 1) throw new RuntimeError("Foreach update must produce single value", node.update.span);
|
|
3232
|
+
acc = updates[0];
|
|
3233
|
+
if (node.extract) for (const extracted of evaluate$1(node.extract, acc, newEnv, tracker)) yield emit(extracted, node.span, tracker);
|
|
3234
|
+
else yield emit(acc, node.span, tracker);
|
|
3228
3235
|
}
|
|
3229
3236
|
};
|
|
3230
3237
|
/**
|
|
@@ -3545,7 +3552,7 @@ const evalLabel = function* (node, input, env, tracker, evaluate$1) {
|
|
|
3545
3552
|
const runAst = (ast, input, options = {}) => {
|
|
3546
3553
|
const tracker = new LimitTracker(resolveLimits(options.limits));
|
|
3547
3554
|
const env = [{
|
|
3548
|
-
vars:
|
|
3555
|
+
vars: new Map(Object.entries(options.vars ?? {})),
|
|
3549
3556
|
funcs: /* @__PURE__ */ new Map()
|
|
3550
3557
|
}];
|
|
3551
3558
|
return Array.from(evaluate(ast, input, env, tracker));
|
package/dist/index.d.cts
CHANGED
|
@@ -403,6 +403,11 @@ interface ValueObject {
|
|
|
403
403
|
*/
|
|
404
404
|
interface EvalOptions {
|
|
405
405
|
limits?: LimitsConfig;
|
|
406
|
+
/**
|
|
407
|
+
* Predefined variables to seed the global environment.
|
|
408
|
+
* Keys are variable names without the '$' prefix.
|
|
409
|
+
*/
|
|
410
|
+
vars?: Record<string, Value>;
|
|
406
411
|
}
|
|
407
412
|
//#endregion
|
|
408
413
|
//#region src/eval/dispatch.d.ts
|
|
@@ -414,6 +419,11 @@ interface EvalOptions$1 {
|
|
|
414
419
|
* Limit configuration to prevent infinite loops or excessive resource usage.
|
|
415
420
|
*/
|
|
416
421
|
limits?: LimitsConfig;
|
|
422
|
+
/**
|
|
423
|
+
* Predefined variables to seed the global environment.
|
|
424
|
+
* Keys are variable names without the '$' prefix.
|
|
425
|
+
*/
|
|
426
|
+
vars?: Record<string, Value>;
|
|
417
427
|
}
|
|
418
428
|
/**
|
|
419
429
|
* Runs a jq AST against an input value.
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/span.ts","../src/ast.ts","../src/parser.ts","../src/validate.ts","../src/limits.ts","../src/value.ts","../src/eval/types.ts","../src/eval/dispatch.ts","../src/errors.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/span.ts","../src/ast.ts","../src/parser.ts","../src/validate.ts","../src/limits.ts","../src/value.ts","../src/eval/types.ts","../src/eval/dispatch.ts","../src/errors.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.d.mts
CHANGED
|
@@ -403,6 +403,11 @@ interface ValueObject {
|
|
|
403
403
|
*/
|
|
404
404
|
interface EvalOptions {
|
|
405
405
|
limits?: LimitsConfig;
|
|
406
|
+
/**
|
|
407
|
+
* Predefined variables to seed the global environment.
|
|
408
|
+
* Keys are variable names without the '$' prefix.
|
|
409
|
+
*/
|
|
410
|
+
vars?: Record<string, Value>;
|
|
406
411
|
}
|
|
407
412
|
//#endregion
|
|
408
413
|
//#region src/eval/dispatch.d.ts
|
|
@@ -414,6 +419,11 @@ interface EvalOptions$1 {
|
|
|
414
419
|
* Limit configuration to prevent infinite loops or excessive resource usage.
|
|
415
420
|
*/
|
|
416
421
|
limits?: LimitsConfig;
|
|
422
|
+
/**
|
|
423
|
+
* Predefined variables to seed the global environment.
|
|
424
|
+
* Keys are variable names without the '$' prefix.
|
|
425
|
+
*/
|
|
426
|
+
vars?: Record<string, Value>;
|
|
417
427
|
}
|
|
418
428
|
/**
|
|
419
429
|
* Runs a jq AST against an input value.
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/span.ts","../src/ast.ts","../src/parser.ts","../src/validate.ts","../src/limits.ts","../src/value.ts","../src/eval/types.ts","../src/eval/dispatch.ts","../src/errors.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/span.ts","../src/ast.ts","../src/parser.ts","../src/validate.ts","../src/limits.ts","../src/value.ts","../src/eval/types.ts","../src/eval/dispatch.ts","../src/errors.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -863,8 +863,27 @@ var Parser = class {
|
|
|
863
863
|
if (!this.match("RBrace")) {
|
|
864
864
|
do {
|
|
865
865
|
const key = this.parseObjectKey();
|
|
866
|
-
|
|
867
|
-
|
|
866
|
+
let value;
|
|
867
|
+
if (this.match("Colon")) value = this.parseDef(false);
|
|
868
|
+
else if (key.kind === "KeyIdentifier") value = {
|
|
869
|
+
kind: "FieldAccess",
|
|
870
|
+
target: {
|
|
871
|
+
kind: "Identity",
|
|
872
|
+
span: key.span
|
|
873
|
+
},
|
|
874
|
+
field: key.name,
|
|
875
|
+
span: key.span
|
|
876
|
+
};
|
|
877
|
+
else if (key.kind === "KeyString") value = {
|
|
878
|
+
kind: "FieldAccess",
|
|
879
|
+
target: {
|
|
880
|
+
kind: "Identity",
|
|
881
|
+
span: key.span
|
|
882
|
+
},
|
|
883
|
+
field: key.value,
|
|
884
|
+
span: key.span
|
|
885
|
+
};
|
|
886
|
+
else throw this.error(this.peek(), "Expected \":\" after object key");
|
|
868
887
|
entries.push({
|
|
869
888
|
key,
|
|
870
889
|
value
|
|
@@ -3026,18 +3045,6 @@ var LimitTracker = class {
|
|
|
3026
3045
|
const getVar = (env, name) => {
|
|
3027
3046
|
for (let i = env.length - 1; i >= 0; i--) if (env[i].vars.has(name)) return env[i].vars.get(name);
|
|
3028
3047
|
};
|
|
3029
|
-
/**
|
|
3030
|
-
* Bounds a value to a variable name in the current scope frame.
|
|
3031
|
-
*/
|
|
3032
|
-
const pushBinding = (env, name, value) => {
|
|
3033
|
-
env[env.length - 1].vars.set(name, value);
|
|
3034
|
-
};
|
|
3035
|
-
/**
|
|
3036
|
-
* Removes a variable binding from the current scope frame.
|
|
3037
|
-
*/
|
|
3038
|
-
const popBinding = (env, name) => {
|
|
3039
|
-
env[env.length - 1].vars.delete(name);
|
|
3040
|
-
};
|
|
3041
3048
|
|
|
3042
3049
|
//#endregion
|
|
3043
3050
|
//#region src/eval/common.ts
|
|
@@ -3186,14 +3193,14 @@ const evalReduce = function* (node, input, env, tracker, evaluate$1) {
|
|
|
3186
3193
|
let acc = initValues[0];
|
|
3187
3194
|
for (const item of evaluate$1(node.source, input, env, tracker)) {
|
|
3188
3195
|
tracker.step(node.span);
|
|
3189
|
-
|
|
3190
|
-
|
|
3191
|
-
|
|
3192
|
-
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3196
|
+
const newFrame = {
|
|
3197
|
+
vars: new Map([[node.var, item]]),
|
|
3198
|
+
funcs: /* @__PURE__ */ new Map()
|
|
3199
|
+
};
|
|
3200
|
+
const newEnv = [...env, newFrame];
|
|
3201
|
+
const updates = Array.from(evaluate$1(node.update, acc, newEnv, tracker));
|
|
3202
|
+
if (updates.length !== 1) throw new RuntimeError("Reduce update must produce single value", node.update.span);
|
|
3203
|
+
acc = updates[0];
|
|
3197
3204
|
}
|
|
3198
3205
|
yield emit(acc, node.span, tracker);
|
|
3199
3206
|
};
|
|
@@ -3214,16 +3221,16 @@ const evalForeach = function* (node, input, env, tracker, evaluate$1) {
|
|
|
3214
3221
|
let acc = initValues[0];
|
|
3215
3222
|
for (const item of evaluate$1(node.source, input, env, tracker)) {
|
|
3216
3223
|
tracker.step(node.span);
|
|
3217
|
-
|
|
3218
|
-
|
|
3219
|
-
|
|
3220
|
-
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3224
|
+
const newFrame = {
|
|
3225
|
+
vars: new Map([[node.var, item]]),
|
|
3226
|
+
funcs: /* @__PURE__ */ new Map()
|
|
3227
|
+
};
|
|
3228
|
+
const newEnv = [...env, newFrame];
|
|
3229
|
+
const updates = Array.from(evaluate$1(node.update, acc, newEnv, tracker));
|
|
3230
|
+
if (updates.length !== 1) throw new RuntimeError("Foreach update must produce single value", node.update.span);
|
|
3231
|
+
acc = updates[0];
|
|
3232
|
+
if (node.extract) for (const extracted of evaluate$1(node.extract, acc, newEnv, tracker)) yield emit(extracted, node.span, tracker);
|
|
3233
|
+
else yield emit(acc, node.span, tracker);
|
|
3227
3234
|
}
|
|
3228
3235
|
};
|
|
3229
3236
|
/**
|
|
@@ -3544,7 +3551,7 @@ const evalLabel = function* (node, input, env, tracker, evaluate$1) {
|
|
|
3544
3551
|
const runAst = (ast, input, options = {}) => {
|
|
3545
3552
|
const tracker = new LimitTracker(resolveLimits(options.limits));
|
|
3546
3553
|
const env = [{
|
|
3547
|
-
vars:
|
|
3554
|
+
vars: new Map(Object.entries(options.vars ?? {})),
|
|
3548
3555
|
funcs: /* @__PURE__ */ new Map()
|
|
3549
3556
|
}];
|
|
3550
3557
|
return Array.from(evaluate(ast, input, env, tracker));
|