@wrongstack/tools 0.276.2 → 0.276.4
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/builtin.js +61 -54
- package/dist/builtin.js.map +1 -1
- package/dist/index.js +61 -54
- package/dist/index.js.map +1 -1
- package/dist/json.js +81 -26
- package/dist/json.js.map +1 -1
- package/dist/pack.js +61 -54
- package/dist/pack.js.map +1 -1
- package/package.json +2 -2
package/dist/builtin.js
CHANGED
|
@@ -833,8 +833,8 @@ async function* spawnStream(opts) {
|
|
|
833
833
|
try {
|
|
834
834
|
for (; ; ) {
|
|
835
835
|
while (queue.length === 0) {
|
|
836
|
-
await new Promise((
|
|
837
|
-
waiter =
|
|
836
|
+
await new Promise((resolve7) => {
|
|
837
|
+
waiter = resolve7;
|
|
838
838
|
});
|
|
839
839
|
}
|
|
840
840
|
const chunk = queue.shift();
|
|
@@ -2133,10 +2133,10 @@ var bashTool = {
|
|
|
2133
2133
|
queue.push(c);
|
|
2134
2134
|
}
|
|
2135
2135
|
};
|
|
2136
|
-
const next = () => new Promise((
|
|
2136
|
+
const next = () => new Promise((resolve7) => {
|
|
2137
2137
|
const c = queue.shift();
|
|
2138
|
-
if (c)
|
|
2139
|
-
else resolveNext =
|
|
2138
|
+
if (c) resolve7(c);
|
|
2139
|
+
else resolveNext = resolve7;
|
|
2140
2140
|
});
|
|
2141
2141
|
let lastFlush = Date.now();
|
|
2142
2142
|
const flush = () => {
|
|
@@ -3716,8 +3716,8 @@ async function syncGoParse(filePath, content, lang) {
|
|
|
3716
3716
|
proc.stdin?.write(content);
|
|
3717
3717
|
proc.stdin?.end();
|
|
3718
3718
|
const { code } = await Promise.race([
|
|
3719
|
-
new Promise((
|
|
3720
|
-
proc.on("close", (c) =>
|
|
3719
|
+
new Promise((resolve7) => {
|
|
3720
|
+
proc.on("close", (c) => resolve7({ code: c }));
|
|
3721
3721
|
}),
|
|
3722
3722
|
new Promise(
|
|
3723
3723
|
(_, reject) => setTimeout(() => {
|
|
@@ -3979,8 +3979,8 @@ async function syncPyParse(filePath, content, lang) {
|
|
|
3979
3979
|
stdout += chunk.toString();
|
|
3980
3980
|
});
|
|
3981
3981
|
const { code } = await Promise.race([
|
|
3982
|
-
new Promise((
|
|
3983
|
-
proc.on("close", (c) =>
|
|
3982
|
+
new Promise((resolve7) => {
|
|
3983
|
+
proc.on("close", (c) => resolve7({ code: c }));
|
|
3984
3984
|
}),
|
|
3985
3985
|
new Promise(
|
|
3986
3986
|
(_, reject) => setTimeout(() => {
|
|
@@ -4065,8 +4065,8 @@ async function tryNativeParse(file, content) {
|
|
|
4065
4065
|
stdout += chunk.toString();
|
|
4066
4066
|
});
|
|
4067
4067
|
const { code } = await Promise.race([
|
|
4068
|
-
new Promise((
|
|
4069
|
-
proc.on("close", (c) =>
|
|
4068
|
+
new Promise((resolve7) => {
|
|
4069
|
+
proc.on("close", (c) => resolve7({ code: c }));
|
|
4070
4070
|
}),
|
|
4071
4071
|
new Promise(
|
|
4072
4072
|
(_, reject) => setTimeout(() => {
|
|
@@ -4556,7 +4556,7 @@ async function loadGitignoreMatcher(projectRoot) {
|
|
|
4556
4556
|
var YIELD_EVERY_N = 50;
|
|
4557
4557
|
var PARALLEL_BATCH = 20;
|
|
4558
4558
|
function yieldEventLoop() {
|
|
4559
|
-
return new Promise((
|
|
4559
|
+
return new Promise((resolve7) => setImmediate(resolve7));
|
|
4560
4560
|
}
|
|
4561
4561
|
function throwIfAborted(signal) {
|
|
4562
4562
|
if (!signal?.aborted) return;
|
|
@@ -5034,7 +5034,7 @@ function terminateWorker(reason) {
|
|
|
5034
5034
|
function callIndexOp(op, args, opts) {
|
|
5035
5035
|
const w = ensureWorker();
|
|
5036
5036
|
if (!w) return callInline(op, args, opts);
|
|
5037
|
-
return new Promise((
|
|
5037
|
+
return new Promise((resolve7, reject) => {
|
|
5038
5038
|
const id = nextRpcId++;
|
|
5039
5039
|
const timer = setTimeout(() => {
|
|
5040
5040
|
pending.delete(id);
|
|
@@ -5057,7 +5057,7 @@ function callIndexOp(op, args, opts) {
|
|
|
5057
5057
|
pending.set(id, {
|
|
5058
5058
|
resolve: (v) => {
|
|
5059
5059
|
cleanup();
|
|
5060
|
-
|
|
5060
|
+
resolve7(v);
|
|
5061
5061
|
},
|
|
5062
5062
|
reject: (e) => {
|
|
5063
5063
|
cleanup();
|
|
@@ -5551,7 +5551,14 @@ These win over kit tokens. Run \`design {action:"materialize"}\` to write them t
|
|
|
5551
5551
|
kitId: active.kit,
|
|
5552
5552
|
outPath: input.out
|
|
5553
5553
|
});
|
|
5554
|
-
const
|
|
5554
|
+
const root = path3.resolve(ctx.projectRoot);
|
|
5555
|
+
const abs = path3.resolve(path3.join(ctx.projectRoot, result.path));
|
|
5556
|
+
const rel = path3.relative(root, abs);
|
|
5557
|
+
if (rel.startsWith("..") || path3.isAbsolute(rel)) {
|
|
5558
|
+
throw new Error(
|
|
5559
|
+
`design: materialize path "${result.path}" would escape the project root`
|
|
5560
|
+
);
|
|
5561
|
+
}
|
|
5555
5562
|
let exists = false;
|
|
5556
5563
|
try {
|
|
5557
5564
|
await fs2.access(abs);
|
|
@@ -5710,7 +5717,7 @@ function findGitDir(cwd) {
|
|
|
5710
5717
|
return null;
|
|
5711
5718
|
}
|
|
5712
5719
|
function runGit(args, cwd, signal) {
|
|
5713
|
-
return new Promise((
|
|
5720
|
+
return new Promise((resolve7) => {
|
|
5714
5721
|
let stdout = "";
|
|
5715
5722
|
let stderr = "";
|
|
5716
5723
|
const child = spawn("git", args, {
|
|
@@ -5726,8 +5733,8 @@ function runGit(args, cwd, signal) {
|
|
|
5726
5733
|
child.stderr?.on("data", (c) => {
|
|
5727
5734
|
stderr += c.toString();
|
|
5728
5735
|
});
|
|
5729
|
-
child.on("close", (code) =>
|
|
5730
|
-
child.on("error", (e) =>
|
|
5736
|
+
child.on("close", (code) => resolve7({ stdout, stderr, exitCode: code ?? 0 }));
|
|
5737
|
+
child.on("error", (e) => resolve7({ stdout: "", stderr: e.message, exitCode: 1 }));
|
|
5731
5738
|
});
|
|
5732
5739
|
}
|
|
5733
5740
|
async function fileDiff(input, ctx, _signal) {
|
|
@@ -6356,7 +6363,7 @@ var execTool = {
|
|
|
6356
6363
|
}
|
|
6357
6364
|
};
|
|
6358
6365
|
function runCommand(cmd, args, cwd, timeout, signal, sessionId) {
|
|
6359
|
-
return new Promise((
|
|
6366
|
+
return new Promise((resolve7) => {
|
|
6360
6367
|
let stdout = "";
|
|
6361
6368
|
let stderr = "";
|
|
6362
6369
|
let killed = false;
|
|
@@ -6364,7 +6371,7 @@ function runCommand(cmd, args, cwd, timeout, signal, sessionId) {
|
|
|
6364
6371
|
const finish = (result) => {
|
|
6365
6372
|
if (resolvedOnce.value) return;
|
|
6366
6373
|
resolvedOnce.value = true;
|
|
6367
|
-
|
|
6374
|
+
resolve7(result);
|
|
6368
6375
|
};
|
|
6369
6376
|
const startedAt = Date.now();
|
|
6370
6377
|
const spool = createOutputSpool({ tool: `exec-${cmd}`, thresholdBytes: MAX_OUTPUT2 });
|
|
@@ -7157,7 +7164,7 @@ function buildArgs(input) {
|
|
|
7157
7164
|
}
|
|
7158
7165
|
}
|
|
7159
7166
|
function runGit2(args, cwd, signal) {
|
|
7160
|
-
return new Promise((
|
|
7167
|
+
return new Promise((resolve7) => {
|
|
7161
7168
|
let stdout = "";
|
|
7162
7169
|
let stderr = "";
|
|
7163
7170
|
const child = spawn("git", args, {
|
|
@@ -7178,7 +7185,7 @@ function runGit2(args, cwd, signal) {
|
|
|
7178
7185
|
}
|
|
7179
7186
|
});
|
|
7180
7187
|
child.on("error", (err) => {
|
|
7181
|
-
|
|
7188
|
+
resolve7({
|
|
7182
7189
|
command: args[0],
|
|
7183
7190
|
stdout: normalizeCommandOutput(stdout),
|
|
7184
7191
|
stderr: err.message,
|
|
@@ -7187,7 +7194,7 @@ function runGit2(args, cwd, signal) {
|
|
|
7187
7194
|
});
|
|
7188
7195
|
});
|
|
7189
7196
|
child.on("close", (code) => {
|
|
7190
|
-
|
|
7197
|
+
resolve7({
|
|
7191
7198
|
command: args[0],
|
|
7192
7199
|
stdout: normalizeCommandOutput(stdout),
|
|
7193
7200
|
stderr: normalizeCommandOutput(stderr),
|
|
@@ -7477,13 +7484,13 @@ var grepTool = {
|
|
|
7477
7484
|
}
|
|
7478
7485
|
};
|
|
7479
7486
|
async function detectRg(signal) {
|
|
7480
|
-
return new Promise((
|
|
7487
|
+
return new Promise((resolve7) => {
|
|
7481
7488
|
try {
|
|
7482
7489
|
const p = spawn("rg", ["--version"], { env: buildChildEnv(), stdio: "ignore", signal, windowsHide: true });
|
|
7483
|
-
p.on("error", () =>
|
|
7484
|
-
p.on("close", (code) =>
|
|
7490
|
+
p.on("error", () => resolve7(false));
|
|
7491
|
+
p.on("close", (code) => resolve7(code === 0));
|
|
7485
7492
|
} catch {
|
|
7486
|
-
|
|
7493
|
+
resolve7(false);
|
|
7487
7494
|
}
|
|
7488
7495
|
});
|
|
7489
7496
|
}
|
|
@@ -7946,30 +7953,30 @@ var jsonTool = {
|
|
|
7946
7953
|
}
|
|
7947
7954
|
}
|
|
7948
7955
|
},
|
|
7949
|
-
async execute(input) {
|
|
7956
|
+
async execute(input, ctx) {
|
|
7950
7957
|
const action = input.action ?? "parse";
|
|
7951
7958
|
switch (action) {
|
|
7952
7959
|
case "query":
|
|
7953
|
-
return executeQuery(input);
|
|
7960
|
+
return executeQuery(input, ctx);
|
|
7954
7961
|
case "validate":
|
|
7955
|
-
return executeValidate(input);
|
|
7962
|
+
return executeValidate(input, ctx);
|
|
7956
7963
|
case "transform":
|
|
7957
|
-
return executeTransform(input);
|
|
7964
|
+
return executeTransform(input, ctx);
|
|
7958
7965
|
case "merge":
|
|
7959
7966
|
return executeMerge(input);
|
|
7960
7967
|
case "parse":
|
|
7961
7968
|
default:
|
|
7962
|
-
return executeParse(input);
|
|
7969
|
+
return executeParse(input, ctx);
|
|
7963
7970
|
}
|
|
7964
7971
|
}
|
|
7965
7972
|
};
|
|
7966
|
-
async function executeParse(input) {
|
|
7973
|
+
async function executeParse(input, ctx) {
|
|
7967
7974
|
const format = input.format ?? "json";
|
|
7968
7975
|
let parsed;
|
|
7969
7976
|
let raw;
|
|
7970
7977
|
if (input.file) {
|
|
7971
7978
|
try {
|
|
7972
|
-
raw = await fs2.readFile(input.file, "utf8");
|
|
7979
|
+
raw = await fs2.readFile(await safeResolveReal(input.file, ctx), "utf8");
|
|
7973
7980
|
} catch {
|
|
7974
7981
|
return { data: null, formatted: "", type: "unknown", action: "parse", error: "Could not read file" };
|
|
7975
7982
|
}
|
|
@@ -8020,14 +8027,14 @@ async function executeParse(input) {
|
|
|
8020
8027
|
keys: typeof parsed === "object" && parsed !== null ? Object.keys(parsed) : void 0
|
|
8021
8028
|
};
|
|
8022
8029
|
}
|
|
8023
|
-
async function executeQuery(input) {
|
|
8030
|
+
async function executeQuery(input, ctx) {
|
|
8024
8031
|
if (!input.query) {
|
|
8025
8032
|
return { data: null, formatted: "", type: "unknown", action: "query", error: "query is required for action: query" };
|
|
8026
8033
|
}
|
|
8027
8034
|
let parsed;
|
|
8028
8035
|
if (input.file) {
|
|
8029
8036
|
try {
|
|
8030
|
-
const raw = await fs2.readFile(input.file, "utf8");
|
|
8037
|
+
const raw = await fs2.readFile(await safeResolveReal(input.file, ctx), "utf8");
|
|
8031
8038
|
parsed = JSON.parse(raw);
|
|
8032
8039
|
} catch {
|
|
8033
8040
|
return { data: null, formatted: "", type: "unknown", action: "query", error: "Could not read/parse file" };
|
|
@@ -8062,14 +8069,14 @@ async function executeQuery(input) {
|
|
|
8062
8069
|
};
|
|
8063
8070
|
}
|
|
8064
8071
|
}
|
|
8065
|
-
async function executeValidate(input) {
|
|
8072
|
+
async function executeValidate(input, ctx) {
|
|
8066
8073
|
if (!input.schema) {
|
|
8067
8074
|
return { data: null, formatted: "", type: "unknown", action: "validate", error: "schema is required for action: validate" };
|
|
8068
8075
|
}
|
|
8069
8076
|
let parsed;
|
|
8070
8077
|
if (input.file) {
|
|
8071
8078
|
try {
|
|
8072
|
-
const raw = await fs2.readFile(input.file, "utf8");
|
|
8079
|
+
const raw = await fs2.readFile(await safeResolveReal(input.file, ctx), "utf8");
|
|
8073
8080
|
parsed = JSON.parse(raw);
|
|
8074
8081
|
} catch {
|
|
8075
8082
|
return { data: null, formatted: "", type: "unknown", action: "validate", error: "Could not read/parse file" };
|
|
@@ -8104,14 +8111,14 @@ async function executeValidate(input) {
|
|
|
8104
8111
|
};
|
|
8105
8112
|
}
|
|
8106
8113
|
}
|
|
8107
|
-
async function executeTransform(input) {
|
|
8114
|
+
async function executeTransform(input, ctx) {
|
|
8108
8115
|
if (!input.transforms || input.transforms.length === 0) {
|
|
8109
8116
|
return { data: null, formatted: "", type: "unknown", action: "transform", error: "transforms array is required for action: transform" };
|
|
8110
8117
|
}
|
|
8111
8118
|
let parsed;
|
|
8112
8119
|
if (input.file) {
|
|
8113
8120
|
try {
|
|
8114
|
-
const raw = await fs2.readFile(input.file, "utf8");
|
|
8121
|
+
const raw = await fs2.readFile(await safeResolveReal(input.file, ctx), "utf8");
|
|
8115
8122
|
parsed = JSON.parse(raw);
|
|
8116
8123
|
} catch {
|
|
8117
8124
|
return { data: null, formatted: "", type: "unknown", action: "transform", error: "Could not read/parse file" };
|
|
@@ -8548,7 +8555,7 @@ async function dockerLogs(service, lines, filterRe, cwd, signal, since) {
|
|
|
8548
8555
|
};
|
|
8549
8556
|
}
|
|
8550
8557
|
args.push("--timestamps", service);
|
|
8551
|
-
return new Promise((
|
|
8558
|
+
return new Promise((resolve7) => {
|
|
8552
8559
|
let stdout = "";
|
|
8553
8560
|
let stderr = "";
|
|
8554
8561
|
const MAX = 2e5;
|
|
@@ -8564,7 +8571,7 @@ async function dockerLogs(service, lines, filterRe, cwd, signal, since) {
|
|
|
8564
8571
|
if (settled) return;
|
|
8565
8572
|
settled = true;
|
|
8566
8573
|
clearTimeout(timer);
|
|
8567
|
-
|
|
8574
|
+
resolve7(result);
|
|
8568
8575
|
};
|
|
8569
8576
|
const child = spawn("docker", args, { cwd, signal, env: buildChildEnv(), stdio: ["ignore", "pipe", "pipe"], windowsHide: true });
|
|
8570
8577
|
const timer = setTimeout(() => {
|
|
@@ -8726,7 +8733,7 @@ var outdatedTool = {
|
|
|
8726
8733
|
}
|
|
8727
8734
|
};
|
|
8728
8735
|
function runOutdated(manager, args, cwd, signal) {
|
|
8729
|
-
return new Promise((
|
|
8736
|
+
return new Promise((resolve7) => {
|
|
8730
8737
|
let stdout = "";
|
|
8731
8738
|
let stderr = "";
|
|
8732
8739
|
const MAX = 1e5;
|
|
@@ -8743,10 +8750,10 @@ function runOutdated(manager, args, cwd, signal) {
|
|
|
8743
8750
|
});
|
|
8744
8751
|
child.on("close", (code) => {
|
|
8745
8752
|
const result = parseOutdatedOutput(stdout, code ?? 0);
|
|
8746
|
-
|
|
8753
|
+
resolve7(result);
|
|
8747
8754
|
});
|
|
8748
8755
|
child.on("error", (e) => {
|
|
8749
|
-
|
|
8756
|
+
resolve7({
|
|
8750
8757
|
exit_code: 1,
|
|
8751
8758
|
packages: [],
|
|
8752
8759
|
total: 0,
|
|
@@ -8880,7 +8887,7 @@ function stripPathComponents(p, strip) {
|
|
|
8880
8887
|
return parts.slice(strip).join("/");
|
|
8881
8888
|
}
|
|
8882
8889
|
function runPatch(args, cwd, signal) {
|
|
8883
|
-
return new Promise((
|
|
8890
|
+
return new Promise((resolve7) => {
|
|
8884
8891
|
let stdout = "";
|
|
8885
8892
|
let stderr = "";
|
|
8886
8893
|
const env = { ...buildChildEnv(), LANG: "C", LC_ALL: "C" };
|
|
@@ -8891,8 +8898,8 @@ function runPatch(args, cwd, signal) {
|
|
|
8891
8898
|
child.stderr?.on("data", (c) => {
|
|
8892
8899
|
stderr += c.toString();
|
|
8893
8900
|
});
|
|
8894
|
-
child.on("close", (code) =>
|
|
8895
|
-
child.on("error", (e) =>
|
|
8901
|
+
child.on("close", (code) => resolve7({ exitCode: code ?? 1, stdout, stderr }));
|
|
8902
|
+
child.on("error", (e) => resolve7({ exitCode: 1, stdout: "", stderr: e.message }));
|
|
8896
8903
|
});
|
|
8897
8904
|
}
|
|
8898
8905
|
function extractPatchedFiles(output) {
|
|
@@ -9515,13 +9522,13 @@ async function globFiles(pattern, base, extraGlob) {
|
|
|
9515
9522
|
return await globNative(pattern, base, extraGlob);
|
|
9516
9523
|
}
|
|
9517
9524
|
function checkRg() {
|
|
9518
|
-
return new Promise((
|
|
9525
|
+
return new Promise((resolve7) => {
|
|
9519
9526
|
try {
|
|
9520
9527
|
const p = spawn("rg", ["--version"], { env: buildChildEnv(), stdio: "ignore", windowsHide: true });
|
|
9521
|
-
p.on("error", () =>
|
|
9522
|
-
p.on("close", (code) =>
|
|
9528
|
+
p.on("error", () => resolve7(false));
|
|
9529
|
+
p.on("close", (code) => resolve7(code === 0));
|
|
9523
9530
|
} catch {
|
|
9524
|
-
|
|
9531
|
+
resolve7(false);
|
|
9525
9532
|
}
|
|
9526
9533
|
});
|
|
9527
9534
|
}
|
|
@@ -9538,10 +9545,10 @@ function spawnRgFind(pattern, base) {
|
|
|
9538
9545
|
buf += chunk.toString();
|
|
9539
9546
|
});
|
|
9540
9547
|
return {
|
|
9541
|
-
promise: new Promise((
|
|
9548
|
+
promise: new Promise((resolve7, reject) => {
|
|
9542
9549
|
child.on("error", reject);
|
|
9543
9550
|
child.on("close", () => {
|
|
9544
|
-
|
|
9551
|
+
resolve7(buf.split("\n").filter(Boolean));
|
|
9545
9552
|
});
|
|
9546
9553
|
})
|
|
9547
9554
|
};
|