@poe-platform/safe-bash 0.1.0 → 0.1.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/README.md +5 -2
- package/package.json +2 -2
- package/dist/safe-bash/commands/git/arguments.d.ts +0 -17
- package/dist/safe-bash/commands/git/arguments.d.ts.map +0 -1
- package/dist/safe-bash/commands/git/arguments.js +0 -150
- package/dist/safe-bash/commands/git/arguments.js.map +0 -1
- package/dist/safe-bash/commands/git/codec.d.ts +0 -8
- package/dist/safe-bash/commands/git/codec.d.ts.map +0 -1
- package/dist/safe-bash/commands/git/codec.js +0 -225
- package/dist/safe-bash/commands/git/codec.js.map +0 -1
- package/dist/safe-bash/commands/git/config.d.ts +0 -8
- package/dist/safe-bash/commands/git/config.d.ts.map +0 -1
- package/dist/safe-bash/commands/git/config.js +0 -100
- package/dist/safe-bash/commands/git/config.js.map +0 -1
- package/dist/safe-bash/commands/git/crc.d.ts +0 -3
- package/dist/safe-bash/commands/git/crc.d.ts.map +0 -1
- package/dist/safe-bash/commands/git/crc.js +0 -14
- package/dist/safe-bash/commands/git/crc.js.map +0 -1
- package/dist/safe-bash/commands/git/delta.d.ts +0 -4
- package/dist/safe-bash/commands/git/delta.d.ts.map +0 -1
- package/dist/safe-bash/commands/git/delta.js +0 -62
- package/dist/safe-bash/commands/git/delta.js.map +0 -1
- package/dist/safe-bash/commands/git/diff.d.ts +0 -9
- package/dist/safe-bash/commands/git/diff.d.ts.map +0 -1
- package/dist/safe-bash/commands/git/diff.js +0 -131
- package/dist/safe-bash/commands/git/diff.js.map +0 -1
- package/dist/safe-bash/commands/git/ignore.d.ts +0 -22
- package/dist/safe-bash/commands/git/ignore.d.ts.map +0 -1
- package/dist/safe-bash/commands/git/ignore.js +0 -153
- package/dist/safe-bash/commands/git/ignore.js.map +0 -1
- package/dist/safe-bash/commands/git/index.d.ts +0 -7
- package/dist/safe-bash/commands/git/index.d.ts.map +0 -1
- package/dist/safe-bash/commands/git/index.js +0 -66
- package/dist/safe-bash/commands/git/index.js.map +0 -1
- package/dist/safe-bash/commands/git/io.d.ts +0 -46
- package/dist/safe-bash/commands/git/io.d.ts.map +0 -1
- package/dist/safe-bash/commands/git/io.js +0 -388
- package/dist/safe-bash/commands/git/io.js.map +0 -1
- package/dist/safe-bash/commands/git/limits.d.ts +0 -39
- package/dist/safe-bash/commands/git/limits.d.ts.map +0 -1
- package/dist/safe-bash/commands/git/limits.js +0 -43
- package/dist/safe-bash/commands/git/limits.js.map +0 -1
- package/dist/safe-bash/commands/git/pack.d.ts +0 -14
- package/dist/safe-bash/commands/git/pack.d.ts.map +0 -1
- package/dist/safe-bash/commands/git/pack.js +0 -273
- package/dist/safe-bash/commands/git/pack.js.map +0 -1
- package/dist/safe-bash/commands/git/queries.d.ts +0 -6
- package/dist/safe-bash/commands/git/queries.d.ts.map +0 -1
- package/dist/safe-bash/commands/git/queries.js +0 -292
- package/dist/safe-bash/commands/git/queries.js.map +0 -1
- package/dist/safe-bash/commands/git/repository.d.ts +0 -49
- package/dist/safe-bash/commands/git/repository.d.ts.map +0 -1
- package/dist/safe-bash/commands/git/repository.js +0 -473
- package/dist/safe-bash/commands/git/repository.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delta.d.ts","sourceRoot":"","sources":["../../../src/commands/git/delta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC,wBAAsB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAgDhI"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { GIT_LIMITS, demand } from "./limits.js";
|
|
2
|
-
export async function applyDelta(session, base, program, expectedOid) {
|
|
3
|
-
demand(program.length >= 4 && program.length <= GIT_LIMITS.maxObjectBytes, "Git delta program size refused");
|
|
4
|
-
let cursor = 0;
|
|
5
|
-
const byte = () => { demand(cursor < program.length, "truncated Git delta"); return program[cursor++]; };
|
|
6
|
-
const variable = async () => {
|
|
7
|
-
let value = 0, factor = 1;
|
|
8
|
-
for (;;) {
|
|
9
|
-
await session.step();
|
|
10
|
-
const part = byte();
|
|
11
|
-
value += (part & 127) * factor;
|
|
12
|
-
demand(Number.isSafeInteger(value) && value <= GIT_LIMITS.maxObjectBytes, "Git delta size exceeded");
|
|
13
|
-
if (part < 128)
|
|
14
|
-
return value;
|
|
15
|
-
factor *= 128;
|
|
16
|
-
demand(Number.isSafeInteger(factor), "Git delta integer overflow");
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
demand(await variable() === base.bytes.length, "Git delta base size mismatch");
|
|
20
|
-
const size = await variable();
|
|
21
|
-
const body = session.allocate(size);
|
|
22
|
-
let produced = 0, success = false;
|
|
23
|
-
try {
|
|
24
|
-
while (cursor < program.length) {
|
|
25
|
-
await session.step();
|
|
26
|
-
const opcode = byte();
|
|
27
|
-
demand(opcode !== 0, "invalid Git delta opcode");
|
|
28
|
-
let source;
|
|
29
|
-
if (opcode >= 128) {
|
|
30
|
-
let offset = 0, length = 0;
|
|
31
|
-
for (let index = 0; index < 4; index++)
|
|
32
|
-
if (opcode & (1 << index))
|
|
33
|
-
offset += byte() * 2 ** (index * 8);
|
|
34
|
-
for (let index = 0; index < 3; index++)
|
|
35
|
-
if (opcode & (1 << (index + 4)))
|
|
36
|
-
length += byte() * 2 ** (index * 8);
|
|
37
|
-
if (length === 0)
|
|
38
|
-
length = 65536;
|
|
39
|
-
demand(offset <= base.bytes.length && length <= base.bytes.length - offset, "Git delta copy outside base");
|
|
40
|
-
source = base.bytes.subarray(offset, offset + length);
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
demand(opcode <= program.length - cursor, "truncated Git delta literal");
|
|
44
|
-
source = program.subarray(cursor, cursor + opcode);
|
|
45
|
-
cursor += opcode;
|
|
46
|
-
}
|
|
47
|
-
demand(source.length <= size - produced, "Git delta result overflow");
|
|
48
|
-
session.charge("maxInflatedBytes", source.length);
|
|
49
|
-
await session.copyInto(body, source, produced);
|
|
50
|
-
produced += source.length;
|
|
51
|
-
}
|
|
52
|
-
demand(produced === size, "truncated Git delta result");
|
|
53
|
-
demand(await session.hash(body, base.type) === expectedOid, "Git delta object hash mismatch");
|
|
54
|
-
success = true;
|
|
55
|
-
return { type: base.type, bytes: body };
|
|
56
|
-
}
|
|
57
|
-
finally {
|
|
58
|
-
if (!success)
|
|
59
|
-
session.release(body);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
//# sourceMappingURL=delta.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delta.js","sourceRoot":"","sources":["../../../src/commands/git/delta.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAgB,EAAE,IAAe,EAAE,OAAmB,EAAE,WAAmB;IAC1G,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC,cAAc,EAAE,gCAAgC,CAAC,CAAC;IAC7G,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,IAAI,GAAG,GAAW,EAAE,GAAG,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,MAAM,EAAE,CAAE,CAAC,CAAC,CAAC,CAAC;IAClH,MAAM,QAAQ,GAAG,KAAK,IAAqB,EAAE;QAC3C,IAAI,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;QAC1B,SAAS,CAAC;YACR,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,IAAI,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,UAAU,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAC;YACrG,IAAI,IAAI,GAAG,GAAG;gBAAE,OAAO,KAAK,CAAC;YAC7B,MAAM,IAAI,GAAG,CAAC;YACd,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,4BAA4B,CAAC,CAAC;QACrE,CAAC;IACH,CAAC,CAAC;IACF,MAAM,CAAC,MAAM,QAAQ,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;IAC/E,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,QAAQ,GAAG,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAClC,IAAI,CAAC;QACH,OAAO,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC;YACtB,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,0BAA0B,CAAC,CAAC;YACjD,IAAI,MAAkB,CAAC;YACvB,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;gBAClB,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;gBAC3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE;oBAAE,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC;wBAAE,MAAM,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACvG,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE;oBAAE,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;wBAAE,MAAM,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC7G,IAAI,MAAM,KAAK,CAAC;oBAAE,MAAM,GAAG,KAAK,CAAC;gBACjC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE,6BAA6B,CAAC,CAAC;gBAC3G,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,6BAA6B,CAAC,CAAC;gBACzE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;gBACnD,MAAM,IAAI,MAAM,CAAC;YACnB,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,GAAG,QAAQ,EAAE,2BAA2B,CAAC,CAAC;YACtE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAClD,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC/C,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC;QAC5B,CAAC;QACD,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,4BAA4B,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE,gCAAgC,CAAC,CAAC;QAC9F,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;YAAS,CAAC;QAAC,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;AACpD,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { type Arguments } from "./arguments.js";
|
|
2
|
-
import type { Repository } from "./repository.js";
|
|
3
|
-
export interface Side {
|
|
4
|
-
readonly mode: number;
|
|
5
|
-
readonly oid: string;
|
|
6
|
-
readonly bytes: Buffer;
|
|
7
|
-
}
|
|
8
|
-
export declare function patch(repository: Repository, parsed: Arguments, path: string, before: Side | undefined, after: Side | undefined): Promise<void>;
|
|
9
|
-
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../src/commands/git/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,WAAW,IAAI;IAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAqD7F,wBAAsB,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCrJ"}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { quote } from "./arguments.js";
|
|
2
|
-
import { demand } from "./limits.js";
|
|
3
|
-
async function lines(session, bytes) {
|
|
4
|
-
const text = session.text(bytes);
|
|
5
|
-
const result = [];
|
|
6
|
-
let start = 0;
|
|
7
|
-
for (let position = 0; position < text.length; position++) {
|
|
8
|
-
await session.step();
|
|
9
|
-
demand(text.charCodeAt(position) !== 0, "binary Git patches unsupported");
|
|
10
|
-
if (text[position] === "\n") {
|
|
11
|
-
session.charge("maxLines", 1);
|
|
12
|
-
session.reserve(24);
|
|
13
|
-
result.push(text.slice(start, position + 1));
|
|
14
|
-
start = position + 1;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
if (start < text.length) {
|
|
18
|
-
session.charge("maxLines", 1);
|
|
19
|
-
session.reserve(24);
|
|
20
|
-
result.push(text.slice(start));
|
|
21
|
-
}
|
|
22
|
-
return result;
|
|
23
|
-
}
|
|
24
|
-
async function edits(session, before, after) {
|
|
25
|
-
const equal = async (left, right) => {
|
|
26
|
-
await session.step(Math.min(left.length, right.length) + 1);
|
|
27
|
-
return left === right;
|
|
28
|
-
};
|
|
29
|
-
let prefix = 0, suffix = 0;
|
|
30
|
-
while (prefix < before.length && prefix < after.length && await equal(before[prefix], after[prefix]))
|
|
31
|
-
prefix++;
|
|
32
|
-
while (suffix < before.length - prefix && suffix < after.length - prefix && await equal(before[before.length - suffix - 1], after[after.length - suffix - 1]))
|
|
33
|
-
suffix++;
|
|
34
|
-
const rows = before.length - prefix - suffix, columns = after.length - prefix - suffix;
|
|
35
|
-
session.reserve((before.length + after.length) * 24);
|
|
36
|
-
const result = before.slice(0, prefix).map(text => ({ kind: " ", text }));
|
|
37
|
-
const cells = (rows + 1) * (columns + 1);
|
|
38
|
-
session.charge("maxDiffCells", cells);
|
|
39
|
-
const storage = session.allocate(cells * 4);
|
|
40
|
-
const grid = new Uint32Array(storage.buffer, storage.byteOffset, cells);
|
|
41
|
-
try {
|
|
42
|
-
for (let row = rows - 1; row >= 0; row--)
|
|
43
|
-
for (let column = columns - 1; column >= 0; column--) {
|
|
44
|
-
const index = row * (columns + 1) + column;
|
|
45
|
-
grid[index] = await equal(before[prefix + row], after[prefix + column]) ? grid[index + columns + 2] + 1 : Math.max(grid[index + columns + 1], grid[index + 1]);
|
|
46
|
-
}
|
|
47
|
-
let row = 0, column = 0;
|
|
48
|
-
while (row < rows || column < columns) {
|
|
49
|
-
await session.step();
|
|
50
|
-
if (row < rows && column < columns && await equal(before[prefix + row], after[prefix + column])) {
|
|
51
|
-
result.push({ kind: " ", text: before[prefix + row++] });
|
|
52
|
-
column++;
|
|
53
|
-
}
|
|
54
|
-
else if (row < rows && (column === columns || grid[(row + 1) * (columns + 1) + column] >= grid[row * (columns + 1) + column + 1]))
|
|
55
|
-
result.push({ kind: "-", text: before[prefix + row++] });
|
|
56
|
-
else
|
|
57
|
-
result.push({ kind: "+", text: after[prefix + column++] });
|
|
58
|
-
}
|
|
59
|
-
for (let offset = before.length - suffix; offset < before.length; offset++)
|
|
60
|
-
result.push({ kind: " ", text: before[offset] });
|
|
61
|
-
return result;
|
|
62
|
-
}
|
|
63
|
-
finally {
|
|
64
|
-
session.release(storage);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
function range(start, count) { return count === 1 ? String(start) : `${count === 0 ? start - 1 : start},${count}`; }
|
|
68
|
-
export async function patch(repository, parsed, path, before, after) {
|
|
69
|
-
const session = repository.session;
|
|
70
|
-
if (before && after && (before.mode & 0o170000) !== (after.mode & 0o170000)) {
|
|
71
|
-
await patch(repository, parsed, path, before, undefined);
|
|
72
|
-
await patch(repository, parsed, path, undefined, after);
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
const original = before ? await lines(session, before.bytes) : [];
|
|
76
|
-
const replacement = after ? await lines(session, after.bytes) : [];
|
|
77
|
-
const changes = await edits(session, original, replacement);
|
|
78
|
-
await session.output(`diff --git ${quote("a/" + path)} ${quote("b/" + path)}\n`);
|
|
79
|
-
if (!before)
|
|
80
|
-
await session.output(`new file mode ${after.mode.toString(8)}\n`);
|
|
81
|
-
else if (!after)
|
|
82
|
-
await session.output(`deleted file mode ${before.mode.toString(8)}\n`);
|
|
83
|
-
else if (before.mode !== after.mode)
|
|
84
|
-
await session.output(`old mode ${before.mode.toString(8)}\nnew mode ${after.mode.toString(8)}\n`);
|
|
85
|
-
if (before?.oid === after?.oid)
|
|
86
|
-
return;
|
|
87
|
-
const abbreviation = async (side) => side ? parsed.flags.has("--full-index") ? side.oid : repository.abbreviation(side.oid) : "0".repeat(parsed.flags.has("--full-index") ? 40 : 7);
|
|
88
|
-
await session.output(`index ${await abbreviation(before)}..${await abbreviation(after)}${before && after && before.mode === after.mode ? " " + before.mode.toString(8) : ""}\n`);
|
|
89
|
-
if (!changes.some(edit => edit.kind !== " "))
|
|
90
|
-
return;
|
|
91
|
-
await session.output(`--- ${before ? quote("a/" + path) : "/dev/null"}\n+++ ${after ? quote("b/" + path) : "/dev/null"}\n`);
|
|
92
|
-
const spans = [];
|
|
93
|
-
for (let offset = 0; offset < changes.length; offset++) {
|
|
94
|
-
await session.step();
|
|
95
|
-
if (changes[offset].kind === " ")
|
|
96
|
-
continue;
|
|
97
|
-
const start = Math.max(0, offset - parsed.context), end = Math.min(changes.length, offset + parsed.context + 1);
|
|
98
|
-
const last = spans.at(-1);
|
|
99
|
-
if (last && start <= last.end)
|
|
100
|
-
last.end = Math.max(last.end, end);
|
|
101
|
-
else
|
|
102
|
-
spans.push({ start, end });
|
|
103
|
-
}
|
|
104
|
-
let offset = 0, oldLine = 1, newLine = 1;
|
|
105
|
-
for (const span of spans) {
|
|
106
|
-
while (offset < span.start) {
|
|
107
|
-
const edit = changes[offset++];
|
|
108
|
-
if (edit.kind !== "+")
|
|
109
|
-
oldLine++;
|
|
110
|
-
if (edit.kind !== "-")
|
|
111
|
-
newLine++;
|
|
112
|
-
}
|
|
113
|
-
let oldCount = 0, newCount = 0;
|
|
114
|
-
for (let position = span.start; position < span.end; position++) {
|
|
115
|
-
if (changes[position].kind !== "+")
|
|
116
|
-
oldCount++;
|
|
117
|
-
if (changes[position].kind !== "-")
|
|
118
|
-
newCount++;
|
|
119
|
-
}
|
|
120
|
-
await session.output(`@@ -${range(oldLine, oldCount)} +${range(newLine, newCount)} @@\n`);
|
|
121
|
-
while (offset < span.end) {
|
|
122
|
-
const edit = changes[offset++];
|
|
123
|
-
await session.output(edit.kind + edit.text + (edit.text.endsWith("\n") ? "" : "\n\\n"));
|
|
124
|
-
if (edit.kind !== "+")
|
|
125
|
-
oldLine++;
|
|
126
|
-
if (edit.kind !== "-")
|
|
127
|
-
newLine++;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
//# sourceMappingURL=diff.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../src/commands/git/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { Session } from "./io.js";
|
|
2
|
-
type Token = {
|
|
3
|
-
kind: "literal";
|
|
4
|
-
byte: number;
|
|
5
|
-
} | {
|
|
6
|
-
kind: "star" | "dirs" | "all" | "any";
|
|
7
|
-
} | {
|
|
8
|
-
kind: "class";
|
|
9
|
-
bytes: ReadonlySet<number>;
|
|
10
|
-
negative: boolean;
|
|
11
|
-
};
|
|
12
|
-
export interface IgnoreRule {
|
|
13
|
-
readonly base: string;
|
|
14
|
-
readonly tokens: readonly Token[];
|
|
15
|
-
readonly directory: boolean;
|
|
16
|
-
readonly include: boolean;
|
|
17
|
-
readonly anchored: boolean;
|
|
18
|
-
}
|
|
19
|
-
export declare function ignoreFile(session: Session, path: string, base: string): Promise<IgnoreRule[]>;
|
|
20
|
-
export declare function ignored(session: Session, rules: readonly IgnoreRule[], name: string, directory: boolean): Promise<boolean>;
|
|
21
|
-
export {};
|
|
22
|
-
//# sourceMappingURL=ignore.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ignore.d.ts","sourceRoot":"","sources":["../../../src/commands/git/ignore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC,KAAK,KAAK,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC;AAC9J,MAAM,WAAW,UAAU;IAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAAE;AAsC5K,wBAAsB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CA6BpG;AAwBD,wBAAsB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAUhI"}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import { GIT_LIMITS, demand } from "./limits.js";
|
|
2
|
-
async function tokens(session, pattern) {
|
|
3
|
-
session.reserve(pattern.length * 32);
|
|
4
|
-
const result = [];
|
|
5
|
-
for (let offset = 0; offset < pattern.length; offset++) {
|
|
6
|
-
await session.step();
|
|
7
|
-
const byte = pattern[offset];
|
|
8
|
-
if (byte === 92) {
|
|
9
|
-
demand(offset + 1 < pattern.length, "invalid ignore escape");
|
|
10
|
-
result.push({ kind: "literal", byte: pattern[++offset] });
|
|
11
|
-
}
|
|
12
|
-
else if (byte === 63)
|
|
13
|
-
result.push({ kind: "any" });
|
|
14
|
-
else if (byte === 42) {
|
|
15
|
-
if (pattern[offset + 1] === 42 && (offset === 0 || pattern[offset - 1] === 47) && (offset + 2 === pattern.length || pattern[offset + 2] === 47)) {
|
|
16
|
-
offset++;
|
|
17
|
-
if (pattern[offset + 1] === 47) {
|
|
18
|
-
result.push({ kind: "dirs" });
|
|
19
|
-
offset++;
|
|
20
|
-
}
|
|
21
|
-
else
|
|
22
|
-
result.push({ kind: "all" });
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
demand(pattern[offset + 1] !== 42, "unsupported ignore wildcard sequence");
|
|
26
|
-
result.push({ kind: "star" });
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
else if (byte === 91) {
|
|
30
|
-
const bytes = new Set();
|
|
31
|
-
let negative = false;
|
|
32
|
-
if (pattern[offset + 1] === 33 || pattern[offset + 1] === 94) {
|
|
33
|
-
negative = true;
|
|
34
|
-
offset++;
|
|
35
|
-
}
|
|
36
|
-
let closed = false;
|
|
37
|
-
while (++offset < pattern.length) {
|
|
38
|
-
await session.step();
|
|
39
|
-
const start = pattern[offset];
|
|
40
|
-
if (start === 93 && bytes.size) {
|
|
41
|
-
closed = true;
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
demand(start < 128 && start !== 91 && start !== 92 && start !== 47, "unsupported ignore bracket class");
|
|
45
|
-
if (pattern[offset + 1] === 45 && pattern[offset + 2] !== 93) {
|
|
46
|
-
const end = pattern[offset + 2];
|
|
47
|
-
demand(end !== undefined && end >= start && end < 128 && end !== 47, "invalid ignore range");
|
|
48
|
-
for (let value = start; value <= end; value++)
|
|
49
|
-
bytes.add(value);
|
|
50
|
-
offset += 2;
|
|
51
|
-
}
|
|
52
|
-
else
|
|
53
|
-
bytes.add(start);
|
|
54
|
-
}
|
|
55
|
-
demand(closed, "unterminated ignore bracket class");
|
|
56
|
-
result.push({ kind: "class", bytes, negative });
|
|
57
|
-
}
|
|
58
|
-
else
|
|
59
|
-
result.push({ kind: "literal", byte });
|
|
60
|
-
}
|
|
61
|
-
return result;
|
|
62
|
-
}
|
|
63
|
-
export async function ignoreFile(session, path, base) {
|
|
64
|
-
const bytes = await session.read(path, GIT_LIMITS.maxMetadataBytes, true);
|
|
65
|
-
if (!bytes)
|
|
66
|
-
return [];
|
|
67
|
-
try {
|
|
68
|
-
const text = session.text(bytes);
|
|
69
|
-
session.reserve(bytes.length * 2);
|
|
70
|
-
const rules = [];
|
|
71
|
-
for (let line of text.split("\n")) {
|
|
72
|
-
await session.step(line.length + 1);
|
|
73
|
-
if (line.endsWith("\r"))
|
|
74
|
-
line = line.slice(0, -1);
|
|
75
|
-
let end = line.length;
|
|
76
|
-
while (end && line[end - 1] === " ") {
|
|
77
|
-
let slash = end - 2;
|
|
78
|
-
while (slash >= 0 && line[slash] === "\\")
|
|
79
|
-
slash--;
|
|
80
|
-
if ((end - 2 - slash) % 2)
|
|
81
|
-
break;
|
|
82
|
-
end--;
|
|
83
|
-
}
|
|
84
|
-
line = line.slice(0, end);
|
|
85
|
-
if (!line || line.startsWith("#"))
|
|
86
|
-
continue;
|
|
87
|
-
demand(!line.includes("\0"), "NUL in ignore rule");
|
|
88
|
-
const include = line.startsWith("!");
|
|
89
|
-
if (include)
|
|
90
|
-
line = line.slice(1);
|
|
91
|
-
demand(line.length > 0, "empty ignore negation");
|
|
92
|
-
const directory = line.endsWith("/");
|
|
93
|
-
if (directory)
|
|
94
|
-
line = line.slice(0, -1);
|
|
95
|
-
const anchored = line.includes("/");
|
|
96
|
-
if (line.startsWith("/"))
|
|
97
|
-
line = line.slice(1);
|
|
98
|
-
demand(line.length > 0, "empty ignore pattern");
|
|
99
|
-
session.charge("maxEntries", 1);
|
|
100
|
-
rules.push({ base, directory, include, anchored, tokens: await tokens(session, Buffer.from(line)) });
|
|
101
|
-
}
|
|
102
|
-
return rules;
|
|
103
|
-
}
|
|
104
|
-
finally {
|
|
105
|
-
session.release(bytes);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
async function match(session, pattern, path) {
|
|
109
|
-
let current = session.allocate(path.length + 1);
|
|
110
|
-
current[0] = 1;
|
|
111
|
-
try {
|
|
112
|
-
for (const token of pattern) {
|
|
113
|
-
const next = session.allocate(path.length + 1);
|
|
114
|
-
let reachable = false;
|
|
115
|
-
for (let offset = 0; offset <= path.length; offset++) {
|
|
116
|
-
await session.step();
|
|
117
|
-
if (token.kind === "star" || token.kind === "all")
|
|
118
|
-
next[offset] = current[offset] || offset > 0 && (token.kind === "all" || path[offset - 1] !== 47) && next[offset - 1] ? 1 : 0;
|
|
119
|
-
else if (token.kind === "dirs") {
|
|
120
|
-
reachable ||= Boolean(current[offset]);
|
|
121
|
-
next[offset] = current[offset] || reachable && offset > 0 && path[offset - 1] === 47 ? 1 : 0;
|
|
122
|
-
}
|
|
123
|
-
else if (offset < path.length && current[offset]) {
|
|
124
|
-
const byte = path[offset];
|
|
125
|
-
const accepted = token.kind === "literal" ? token.byte === byte : token.kind === "any" ? byte !== 47 : token.kind === "class" && byte !== 47 && token.bytes.has(byte) !== token.negative;
|
|
126
|
-
if (accepted)
|
|
127
|
-
next[offset + 1] = 1;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
session.release(current);
|
|
131
|
-
current = next;
|
|
132
|
-
}
|
|
133
|
-
return Boolean(current[path.length]);
|
|
134
|
-
}
|
|
135
|
-
finally {
|
|
136
|
-
session.release(current);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
export async function ignored(session, rules, name, directory) {
|
|
140
|
-
let result = false;
|
|
141
|
-
for (const rule of rules) {
|
|
142
|
-
if (rule.directory && !directory)
|
|
143
|
-
continue;
|
|
144
|
-
if (rule.base && !name.startsWith(rule.base + "/"))
|
|
145
|
-
continue;
|
|
146
|
-
const relative = rule.base ? name.slice(rule.base.length + 1) : name;
|
|
147
|
-
const candidate = rule.anchored ? relative : relative.slice(relative.lastIndexOf("/") + 1);
|
|
148
|
-
if (await match(session, rule.tokens, Buffer.from(candidate)))
|
|
149
|
-
result = !rule.include;
|
|
150
|
-
}
|
|
151
|
-
return result;
|
|
152
|
-
}
|
|
153
|
-
//# sourceMappingURL=ignore.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ignore.js","sourceRoot":"","sources":["../../../src/commands/git/ignore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { CommandDefinition, VirtualShellPlugin } from "../../contracts/index.js";
|
|
2
|
-
import { type GitCommandsOptions } from "./limits.js";
|
|
3
|
-
export type { GitCommandsOptions } from "./limits.js";
|
|
4
|
-
export declare function createGitCommand(options?: GitCommandsOptions): CommandDefinition;
|
|
5
|
-
export declare function createGitCommands(options?: GitCommandsOptions): readonly CommandDefinition[];
|
|
6
|
-
export declare function gitCommands(options?: GitCommandsOptions): VirtualShellPlugin;
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/git/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGtG,OAAO,EAAoD,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAIxG,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAWtD,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,kBAAuB,GAAG,iBAAiB,CAuBpF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,SAAS,iBAAiB,EAAE,CAEhG;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,kBAAkB,CAGhF"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { argumentsFor } from "./arguments.js";
|
|
2
|
-
import { Session } from "./io.js";
|
|
3
|
-
import { ConsumerClosed, GIT_LIMITS, GitFailure, settings } from "./limits.js";
|
|
4
|
-
import { query } from "./queries.js";
|
|
5
|
-
import { Repository } from "./repository.js";
|
|
6
|
-
async function diagnostic(context, error) {
|
|
7
|
-
context.signal.throwIfAborted();
|
|
8
|
-
const message = `git: ${error.message}\n`;
|
|
9
|
-
if (Buffer.byteLength(message) > GIT_LIMITS.maxDiagnosticBytes)
|
|
10
|
-
throw new Error("Git diagnostic limit exceeded");
|
|
11
|
-
await context.stderr.write(Buffer.from(message));
|
|
12
|
-
context.signal.throwIfAborted();
|
|
13
|
-
return error.status;
|
|
14
|
-
}
|
|
15
|
-
export function createGitCommand(options = {}) {
|
|
16
|
-
const configured = settings(options);
|
|
17
|
-
return {
|
|
18
|
-
name: "git",
|
|
19
|
-
async execute(context) {
|
|
20
|
-
context.signal.throwIfAborted();
|
|
21
|
-
let parsed;
|
|
22
|
-
try {
|
|
23
|
-
parsed = argumentsFor(context.args, context.cwd);
|
|
24
|
-
}
|
|
25
|
-
catch (error) {
|
|
26
|
-
if (error instanceof GitFailure)
|
|
27
|
-
return { exitCode: await diagnostic(context, error) };
|
|
28
|
-
throw error;
|
|
29
|
-
}
|
|
30
|
-
const session = new Session(context, configured.discoveryBoundary);
|
|
31
|
-
let failed = false, failure, exitCode = 0, cleanupFailed = false, cleanupFailure;
|
|
32
|
-
try {
|
|
33
|
-
exitCode = await query(await Repository.discover(session, parsed.cwd), parsed);
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
failed = true;
|
|
37
|
-
failure = error;
|
|
38
|
-
}
|
|
39
|
-
try {
|
|
40
|
-
await session.operation.close();
|
|
41
|
-
}
|
|
42
|
-
catch (error) {
|
|
43
|
-
cleanupFailed = true;
|
|
44
|
-
cleanupFailure = error;
|
|
45
|
-
}
|
|
46
|
-
session.finish();
|
|
47
|
-
context.signal.throwIfAborted();
|
|
48
|
-
if (failed && !(failure instanceof GitFailure) && !(failure instanceof ConsumerClosed))
|
|
49
|
-
throw failure;
|
|
50
|
-
if (cleanupFailed)
|
|
51
|
-
throw cleanupFailure;
|
|
52
|
-
if (failed)
|
|
53
|
-
exitCode = failure instanceof GitFailure ? await diagnostic(context, failure) : 141;
|
|
54
|
-
return { exitCode };
|
|
55
|
-
},
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
export function createGitCommands(options = {}) {
|
|
59
|
-
return Object.freeze([createGitCommand(options)]);
|
|
60
|
-
}
|
|
61
|
-
export function gitCommands(options = {}) {
|
|
62
|
-
const configured = settings(options), commands = createGitCommands(configured);
|
|
63
|
-
return { name: "git-commands", setup(host) { for (const command of commands)
|
|
64
|
-
host.commands.register(command, { replace: configured.replace }); } };
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/git/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { type CommandContext, type DirectoryEntry, type FileStat, type OutputOperation } from "../../contracts/index.js";
|
|
2
|
-
import { GIT_LIMITS } from "./limits.js";
|
|
3
|
-
export declare class Session {
|
|
4
|
-
readonly context: CommandContext;
|
|
5
|
-
readonly operation: OutputOperation;
|
|
6
|
-
readonly boundary: string;
|
|
7
|
-
private readonly owned;
|
|
8
|
-
private readonly counts;
|
|
9
|
-
private sinceYield;
|
|
10
|
-
private resident;
|
|
11
|
-
private readonly observations;
|
|
12
|
-
private readonly extraObservations;
|
|
13
|
-
private readonly finalizers;
|
|
14
|
-
constructor(context: CommandContext, boundary: string);
|
|
15
|
-
check(): void;
|
|
16
|
-
charge(key: keyof typeof GIT_LIMITS, amount: number): void;
|
|
17
|
-
step(amount?: number): Promise<void>;
|
|
18
|
-
reserve(size: number): void;
|
|
19
|
-
unreserve(size: number): void;
|
|
20
|
-
allocate(size: number): Buffer;
|
|
21
|
-
copy(bytes: Uint8Array): Buffer;
|
|
22
|
-
release(bytes: Uint8Array): void;
|
|
23
|
-
text(bytes: Uint8Array): string;
|
|
24
|
-
hash(bytes: Uint8Array, type?: string): Promise<string>;
|
|
25
|
-
path(base: string, name: string): string;
|
|
26
|
-
call<Value>(start: () => Promise<Value>): Promise<Value>;
|
|
27
|
-
stat(path: string): Promise<FileStat | undefined>;
|
|
28
|
-
safe(path: string, leafLink?: boolean): Promise<void>;
|
|
29
|
-
list(path: string): Promise<DirectoryEntry[]>;
|
|
30
|
-
read(path: string, maximum: number, optional?: boolean, observe?: boolean): Promise<Buffer | undefined>;
|
|
31
|
-
unchanged(): Promise<void>;
|
|
32
|
-
observe(check: () => Promise<void>): void;
|
|
33
|
-
onFinish(close: () => void): void;
|
|
34
|
-
finish(): void;
|
|
35
|
-
visitFile(path: string, maximum: number, consume: (bytes: Uint8Array, offset: number) => Promise<void>): Promise<void>;
|
|
36
|
-
copyInto(target: Uint8Array, source: Uint8Array, offset?: number): Promise<void>;
|
|
37
|
-
readExact(path: string, maximum: number): Promise<Buffer>;
|
|
38
|
-
observeExact(path: string, maximum: number, body: Uint8Array): Promise<void>;
|
|
39
|
-
output(bytes: Uint8Array | string): Promise<void>;
|
|
40
|
-
sorted(paths: Iterable<string>): Promise<string[]>;
|
|
41
|
-
}
|
|
42
|
-
export declare function component(name: string): void;
|
|
43
|
-
export declare function objectPath(name: string): void;
|
|
44
|
-
export declare function compare(left: string, right: string): number;
|
|
45
|
-
export declare function parent(path: string): string;
|
|
46
|
-
//# sourceMappingURL=io.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../../src/commands/git/io.ts"],"names":[],"mappings":"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"}
|