@autopo/mcp 0.1.1 → 0.2.0
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/dist/api.d.ts +6 -1
- package/dist/api.js +12 -3
- package/dist/api.js.map +1 -1
- package/dist/cli.js +7 -2
- package/dist/cli.js.map +1 -1
- package/dist/files.d.ts +70 -0
- package/dist/files.js +378 -0
- package/dist/files.js.map +1 -0
- package/dist/guides.d.ts +2 -2
- package/dist/guides.js +12 -0
- package/dist/guides.js.map +1 -1
- package/dist/http.d.ts +2 -0
- package/dist/http.js +1 -1
- package/dist/http.js.map +1 -1
- package/dist/kit.d.ts +3 -0
- package/dist/kit.js +2 -0
- package/dist/kit.js.map +1 -1
- package/dist/prompts.js +1 -0
- package/dist/prompts.js.map +1 -1
- package/dist/server.d.ts +3 -1
- package/dist/server.js +3 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/studio.js +192 -4
- package/dist/tools/studio.js.map +1 -1
- package/dist/zip.d.ts +26 -0
- package/dist/zip.js +85 -0
- package/dist/zip.js.map +1 -0
- package/package.json +1 -1
package/dist/zip.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A small zip reader: stored and deflated entries, read by range so a plan's footage never has to sit in memory whole.
|
|
3
|
+
* No zip64 (archives over 4 GB or 65,535 files), no encryption: a plan zip is far smaller than that.
|
|
4
|
+
*/
|
|
5
|
+
import type { FileHandle } from 'node:fs/promises';
|
|
6
|
+
export interface ZipEntry {
|
|
7
|
+
name: string;
|
|
8
|
+
/** Uncompressed size. */
|
|
9
|
+
size: number;
|
|
10
|
+
compressed: number;
|
|
11
|
+
/** 0 = stored, 8 = deflate. */
|
|
12
|
+
method: number;
|
|
13
|
+
/** Offset of the local file header. */
|
|
14
|
+
offset: number;
|
|
15
|
+
}
|
|
16
|
+
export interface ByteRange {
|
|
17
|
+
size: number;
|
|
18
|
+
read(offset: number, length: number): Promise<Buffer>;
|
|
19
|
+
}
|
|
20
|
+
export declare function bufferRange(buf: Buffer): ByteRange;
|
|
21
|
+
export declare function handleRange(handle: FileHandle, size: number): ByteRange;
|
|
22
|
+
export declare function isZip(range: ByteRange): Promise<boolean>;
|
|
23
|
+
export declare function zipEntries(range: ByteRange): Promise<ZipEntry[]>;
|
|
24
|
+
/** Where an entry's bytes start (after its local header). */
|
|
25
|
+
export declare function zipDataOffset(range: ByteRange, entry: ZipEntry): Promise<number>;
|
|
26
|
+
export declare function zipRead(range: ByteRange, entry: ZipEntry): Promise<Buffer>;
|
package/dist/zip.js
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { inflateRawSync } from 'node:zlib';
|
|
2
|
+
export function bufferRange(buf) {
|
|
3
|
+
return { size: buf.length, read: async (offset, length) => buf.subarray(offset, offset + length) };
|
|
4
|
+
}
|
|
5
|
+
export function handleRange(handle, size) {
|
|
6
|
+
return {
|
|
7
|
+
size,
|
|
8
|
+
async read(offset, length) {
|
|
9
|
+
const out = Buffer.alloc(length);
|
|
10
|
+
let got = 0;
|
|
11
|
+
while (got < length) {
|
|
12
|
+
const { bytesRead } = await handle.read(out, got, length - got, offset + got);
|
|
13
|
+
if (!bytesRead)
|
|
14
|
+
break;
|
|
15
|
+
got += bytesRead;
|
|
16
|
+
}
|
|
17
|
+
return out.subarray(0, got);
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const LOCAL = 0x04034b50;
|
|
22
|
+
const CENTRAL = 0x02014b50;
|
|
23
|
+
const END = 0x06054b50;
|
|
24
|
+
export async function isZip(range) {
|
|
25
|
+
if (range.size < 22)
|
|
26
|
+
return false;
|
|
27
|
+
const head = await range.read(0, 4);
|
|
28
|
+
const sig = head.readUInt32LE(0);
|
|
29
|
+
return sig === LOCAL || sig === END;
|
|
30
|
+
}
|
|
31
|
+
export async function zipEntries(range) {
|
|
32
|
+
const tailLength = Math.min(range.size, 22 + 65535);
|
|
33
|
+
const tail = await range.read(range.size - tailLength, tailLength);
|
|
34
|
+
let end = -1;
|
|
35
|
+
for (let i = tail.length - 22; i >= 0; i--) {
|
|
36
|
+
if (tail.readUInt32LE(i) === END) {
|
|
37
|
+
end = i;
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (end < 0)
|
|
42
|
+
throw new Error('Not a zip file (no end-of-directory record).');
|
|
43
|
+
const count = tail.readUInt16LE(end + 10);
|
|
44
|
+
const directorySize = tail.readUInt32LE(end + 12);
|
|
45
|
+
const directoryOffset = tail.readUInt32LE(end + 16);
|
|
46
|
+
if (count === 0xffff || directoryOffset === 0xffffffff || directorySize === 0xffffffff) {
|
|
47
|
+
throw new Error('Zip64 archives are not supported: keep the zip under 4 GB, or upload the files one by one.');
|
|
48
|
+
}
|
|
49
|
+
const directory = await range.read(directoryOffset, directorySize);
|
|
50
|
+
const entries = [];
|
|
51
|
+
let p = 0;
|
|
52
|
+
for (let i = 0; i < count && p + 46 <= directory.length; i++) {
|
|
53
|
+
if (directory.readUInt32LE(p) !== CENTRAL)
|
|
54
|
+
throw new Error('Corrupt zip (central directory).');
|
|
55
|
+
const method = directory.readUInt16LE(p + 10);
|
|
56
|
+
const compressed = directory.readUInt32LE(p + 20);
|
|
57
|
+
const size = directory.readUInt32LE(p + 24);
|
|
58
|
+
const nameLength = directory.readUInt16LE(p + 28);
|
|
59
|
+
const extraLength = directory.readUInt16LE(p + 30);
|
|
60
|
+
const commentLength = directory.readUInt16LE(p + 32);
|
|
61
|
+
const offset = directory.readUInt32LE(p + 42);
|
|
62
|
+
const name = directory.subarray(p + 46, p + 46 + nameLength).toString('utf8');
|
|
63
|
+
if (!name.endsWith('/'))
|
|
64
|
+
entries.push({ name, size, compressed, method, offset });
|
|
65
|
+
p += 46 + nameLength + extraLength + commentLength;
|
|
66
|
+
}
|
|
67
|
+
return entries;
|
|
68
|
+
}
|
|
69
|
+
/** Where an entry's bytes start (after its local header). */
|
|
70
|
+
export async function zipDataOffset(range, entry) {
|
|
71
|
+
const head = await range.read(entry.offset, 30);
|
|
72
|
+
if (head.length < 30 || head.readUInt32LE(0) !== LOCAL)
|
|
73
|
+
throw new Error(`Corrupt zip (${entry.name}).`);
|
|
74
|
+
return entry.offset + 30 + head.readUInt16LE(26) + head.readUInt16LE(28);
|
|
75
|
+
}
|
|
76
|
+
export async function zipRead(range, entry) {
|
|
77
|
+
const start = await zipDataOffset(range, entry);
|
|
78
|
+
const data = await range.read(start, entry.compressed);
|
|
79
|
+
if (entry.method === 0)
|
|
80
|
+
return data;
|
|
81
|
+
if (entry.method === 8)
|
|
82
|
+
return inflateRawSync(data);
|
|
83
|
+
throw new Error(`${entry.name}: compression method ${entry.method} is not supported (store or deflate).`);
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=zip.js.map
|
package/dist/zip.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip.js","sourceRoot":"","sources":["../src/zip.ts"],"names":[],"mappings":"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"}
|