@hexclave/shared 1.0.61 → 1.0.62
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/{admin-interface-ChuyYSXj.d.ts → admin-interface-D63SFHX_.d.ts} +94 -12
- package/dist/admin-interface-D63SFHX_.d.ts.map +1 -0
- package/dist/{admin-metrics-1yiWGq9z.d.ts → admin-metrics-bsOkw4YQ.d.ts} +15 -15
- package/dist/{admin-metrics-1yiWGq9z.d.ts.map → admin-metrics-bsOkw4YQ.d.ts.map} +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt-parts/deployments-skill.d.ts +5 -0
- package/dist/ai/unified-prompts/skill-site-prompt-parts/deployments-skill.d.ts.map +1 -0
- package/dist/ai/unified-prompts/skill-site-prompt-parts/deployments-skill.js +128 -0
- package/dist/ai/unified-prompts/skill-site-prompt-parts/deployments-skill.js.map +1 -0
- package/dist/ai/unified-prompts/skill-site-prompt.d.ts +3 -1
- package/dist/ai/unified-prompts/skill-site-prompt.d.ts.map +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt.js +11 -0
- package/dist/ai/unified-prompts/skill-site-prompt.js.map +1 -1
- package/dist/apps/apps-config.d.ts +6 -0
- package/dist/apps/apps-config.d.ts.map +1 -1
- package/dist/apps/apps-config.js +6 -0
- package/dist/apps/apps-config.js.map +1 -1
- package/dist/{client-interface-C4H4gn_G.d.ts → client-interface-DvkciaL0.d.ts} +10 -10
- package/dist/{client-interface-C4H4gn_G.d.ts.map → client-interface-DvkciaL0.d.ts.map} +1 -1
- package/dist/config/schema-fuzzer.test.js +38 -1
- package/dist/config/schema-fuzzer.test.js.map +1 -1
- package/dist/config/schema.d.ts +2 -2
- package/dist/config/schema.js +45 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/config-authoring.d.ts +1 -1
- package/dist/{current-user-BCkMYzHx.d.ts → current-user-BBoN3hsn.d.ts} +17 -17
- package/dist/{current-user-BCkMYzHx.d.ts.map → current-user-BBoN3hsn.d.ts.map} +1 -1
- package/dist/{email-outbox-BRZiK0ZG.d.ts → email-outbox-CqzwInBL.d.ts} +313 -313
- package/dist/{email-outbox-BRZiK0ZG.d.ts.map → email-outbox-CqzwInBL.d.ts.map} +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/deployments-skill.d.ts +5 -0
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/deployments-skill.d.ts.map +1 -0
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/deployments-skill.js +128 -0
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/deployments-skill.js.map +1 -0
- package/dist/esm/ai/unified-prompts/skill-site-prompt.d.ts +3 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt.d.ts.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt.js +10 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt.js.map +1 -1
- package/dist/esm/apps/apps-config.d.ts +6 -0
- package/dist/esm/apps/apps-config.d.ts.map +1 -1
- package/dist/esm/apps/apps-config.js +6 -0
- package/dist/esm/apps/apps-config.js.map +1 -1
- package/dist/esm/config/schema-fuzzer.test.js +38 -1
- package/dist/esm/config/schema-fuzzer.test.js.map +1 -1
- package/dist/esm/config/schema.d.ts +249 -119
- package/dist/esm/config/schema.d.ts.map +1 -1
- package/dist/esm/config/schema.js +42 -1
- package/dist/esm/config/schema.js.map +1 -1
- package/dist/esm/interface/admin-interface.d.ts +83 -1
- package/dist/esm/interface/admin-interface.d.ts.map +1 -1
- package/dist/esm/interface/admin-interface.js +48 -0
- package/dist/esm/interface/admin-interface.js.map +1 -1
- package/dist/esm/interface/admin-metrics.d.ts +14 -14
- package/dist/esm/interface/conversations.d.ts +37 -37
- package/dist/esm/interface/crud/current-user.d.ts +16 -16
- package/dist/esm/interface/crud/email-outbox.d.ts +312 -312
- package/dist/esm/interface/crud/invoices.d.ts +2 -2
- package/dist/esm/interface/crud/products.d.ts +23 -23
- package/dist/esm/interface/crud/project-api-keys.d.ts +4 -4
- package/dist/esm/interface/crud/projects.d.ts +59 -59
- package/dist/esm/interface/crud/team-member-profiles.d.ts +32 -32
- package/dist/esm/interface/crud/transactions.d.ts +29 -29
- package/dist/esm/interface/crud/transactions.d.ts.map +1 -1
- package/dist/esm/interface/crud/users.d.ts +22 -22
- package/dist/esm/interface/plan-usage.d.ts +1 -1
- package/dist/esm/interface/webhooks.d.ts +4 -4
- package/dist/esm/known-errors.d.ts +4 -4
- package/dist/esm/schema-fields.d.ts +12 -12
- package/dist/esm/sessions.d.ts +9 -9
- package/dist/esm/utils/tar.d.ts +26 -0
- package/dist/esm/utils/tar.d.ts.map +1 -0
- package/dist/esm/utils/tar.js +136 -0
- package/dist/esm/utils/tar.js.map +1 -0
- package/dist/helpers/password.d.ts +1 -1
- package/dist/helpers/production-mode.d.ts +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/interface/admin-interface.d.ts +3 -3
- package/dist/interface/admin-interface.js +48 -0
- package/dist/interface/admin-interface.js.map +1 -1
- package/dist/interface/admin-metrics.d.ts +1 -1
- package/dist/interface/client-interface.d.ts +1 -1
- package/dist/interface/conversations.d.ts +37 -37
- package/dist/interface/crud/current-user.d.ts +1 -1
- package/dist/interface/crud/email-outbox.d.ts +1 -1
- package/dist/interface/crud/invoices.d.ts +1 -1
- package/dist/interface/crud/products.d.ts +1 -1
- package/dist/interface/crud/project-api-keys.d.ts +1 -1
- package/dist/interface/crud/projects.d.ts +1 -1
- package/dist/interface/crud/team-member-profiles.d.ts +1 -1
- package/dist/interface/crud/transactions.d.ts +1 -1
- package/dist/interface/crud/users.d.ts +1 -1
- package/dist/interface/plan-usage.d.ts +1 -1
- package/dist/interface/server-interface.d.ts +1 -1
- package/dist/interface/webhooks.d.ts +1 -1
- package/dist/{invoices-BGLLnTlR.d.ts → invoices-CHo9YKbI.d.ts} +3 -3
- package/dist/{invoices-BGLLnTlR.d.ts.map → invoices-CHo9YKbI.d.ts.map} +1 -1
- package/dist/{known-errors-Bhd0JAgh.d.ts → known-errors-Bm4a61wL.d.ts} +5 -5
- package/dist/{known-errors-Bhd0JAgh.d.ts.map → known-errors-Bm4a61wL.d.ts.map} +1 -1
- package/dist/known-errors.d.ts +1 -1
- package/dist/{plan-usage-COq9I00z.d.ts → plan-usage-BaDxcLZ1.d.ts} +2 -2
- package/dist/{plan-usage-COq9I00z.d.ts.map → plan-usage-BaDxcLZ1.d.ts.map} +1 -1
- package/dist/{products-BkPf1X78.d.ts → products-D4o8A2W0.d.ts} +24 -24
- package/dist/{products-BkPf1X78.d.ts.map → products-D4o8A2W0.d.ts.map} +1 -1
- package/dist/{project-api-keys-CK9SIo0q.d.ts → project-api-keys--7V5X_UW.d.ts} +5 -5
- package/dist/{project-api-keys-CK9SIo0q.d.ts.map → project-api-keys--7V5X_UW.d.ts.map} +1 -1
- package/dist/{projects-CVqfljhv.d.ts → projects-BX5Y50kJ.d.ts} +60 -60
- package/dist/{projects-CVqfljhv.d.ts.map → projects-BX5Y50kJ.d.ts.map} +1 -1
- package/dist/{schema-BPMGhu_7.d.ts → schema-dJ_7rUCO.d.ts} +250 -120
- package/dist/schema-dJ_7rUCO.d.ts.map +1 -0
- package/dist/{schema-fields-C8sIQVTq.d.ts → schema-fields-DZtDQEEO.d.ts} +13 -13
- package/dist/{schema-fields-C8sIQVTq.d.ts.map → schema-fields-DZtDQEEO.d.ts.map} +1 -1
- package/dist/schema-fields.d.ts +1 -1
- package/dist/{server-interface-CRp4VVZh.d.ts → server-interface-Ra_vIHP4.d.ts} +8 -8
- package/dist/{server-interface-CRp4VVZh.d.ts.map → server-interface-Ra_vIHP4.d.ts.map} +1 -1
- package/dist/{sessions-COluKK6_.d.ts → sessions-CI-0TBQb.d.ts} +11 -11
- package/dist/{sessions-COluKK6_.d.ts.map → sessions-CI-0TBQb.d.ts.map} +1 -1
- package/dist/sessions.d.ts +1 -1
- package/dist/{team-member-profiles-CgYXR-Rx.d.ts → team-member-profiles-BoDEqx-0.d.ts} +33 -33
- package/dist/{team-member-profiles-CgYXR-Rx.d.ts.map → team-member-profiles-BoDEqx-0.d.ts.map} +1 -1
- package/dist/{transactions-7q13mxhG.d.ts → transactions-CHNUJ42J.d.ts} +30 -30
- package/dist/transactions-CHNUJ42J.d.ts.map +1 -0
- package/dist/{users-7MKfEyyq.d.ts → users-DHNRwoSz.d.ts} +24 -24
- package/dist/{users-7MKfEyyq.d.ts.map → users-DHNRwoSz.d.ts.map} +1 -1
- package/dist/utils/tar.d.ts +26 -0
- package/dist/utils/tar.d.ts.map +1 -0
- package/dist/utils/tar.js +138 -0
- package/dist/utils/tar.js.map +1 -0
- package/dist/{webhooks-C5gG85Ce.d.ts → webhooks-8Ts1Clcb.d.ts} +5 -5
- package/dist/{webhooks-C5gG85Ce.d.ts.map → webhooks-8Ts1Clcb.d.ts.map} +1 -1
- package/package.json +1 -1
- package/src/ai/unified-prompts/skill-site-prompt-parts/deployments-skill.ts +128 -0
- package/src/ai/unified-prompts/skill-site-prompt.ts +15 -0
- package/src/apps/apps-config.ts +9 -0
- package/src/config/schema-fuzzer.test.ts +37 -0
- package/src/config/schema.ts +193 -0
- package/src/interface/admin-interface.ts +173 -0
- package/src/utils/tar.tsx +261 -0
- package/dist/admin-interface-ChuyYSXj.d.ts.map +0 -1
- package/dist/schema-BPMGhu_7.d.ts.map +0 -1
- package/dist/transactions-7q13mxhG.d.ts.map +0 -1
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
// A minimal, dependency-free ustar (POSIX.1-1988) tarball writer/reader.
|
|
2
|
+
//
|
|
3
|
+
// Why hand-rolled: the `hexclave deploy` CLI packages a source directory into a
|
|
4
|
+
// tarball and the backend unpacks it to forward the files to Vercel. Both ends
|
|
5
|
+
// are our own code, so we only need the ustar subset we produce ourselves
|
|
6
|
+
// (regular files + directories), and hand-rolling avoids adding an npm
|
|
7
|
+
// dependency to the CLI and backend. The reader is intentionally strict — it
|
|
8
|
+
// rejects anything our writer wouldn't produce (symlinks, PAX extensions,
|
|
9
|
+
// absolute or `..` paths) because on the backend it processes untrusted user
|
|
10
|
+
// uploads.
|
|
11
|
+
|
|
12
|
+
import { HexclaveAssertionError, StatusError } from "./errors";
|
|
13
|
+
|
|
14
|
+
const BLOCK_SIZE = 512;
|
|
15
|
+
|
|
16
|
+
export type TarEntry = {
|
|
17
|
+
// Relative POSIX path, e.g. "src/index.ts". Directories end with "/".
|
|
18
|
+
path: string,
|
|
19
|
+
data: Uint8Array,
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export type TarLimits = {
|
|
23
|
+
maxEntries: number,
|
|
24
|
+
maxTotalBytes: number,
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
function writeOctal(header: Uint8Array, offset: number, length: number, value: number): void {
|
|
28
|
+
if (value < 0 || !Number.isSafeInteger(value)) {
|
|
29
|
+
throw new HexclaveAssertionError(`Invalid tar octal value: ${value}`);
|
|
30
|
+
}
|
|
31
|
+
const str = value.toString(8).padStart(length - 1, "0");
|
|
32
|
+
if (str.length > length - 1) {
|
|
33
|
+
throw new HexclaveAssertionError(`Tar octal value too large for field: ${value} (field length ${length})`);
|
|
34
|
+
}
|
|
35
|
+
for (let i = 0; i < str.length; i++) {
|
|
36
|
+
header[offset + i] = str.charCodeAt(i);
|
|
37
|
+
}
|
|
38
|
+
// NUL terminator (field is left NUL-filled past the digits).
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function writeString(header: Uint8Array, offset: number, length: number, value: string): void {
|
|
42
|
+
const bytes = new TextEncoder().encode(value);
|
|
43
|
+
if (bytes.length > length) {
|
|
44
|
+
throw new HexclaveAssertionError(`Tar string too long for field: ${value}`);
|
|
45
|
+
}
|
|
46
|
+
header.set(bytes, offset);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Splits a path into (prefix, name) fitting ustar's 155+100 byte fields.
|
|
50
|
+
// Returns undefined if the path can't be represented.
|
|
51
|
+
function splitUstarPath(path: string): { prefix: string, name: string } | undefined {
|
|
52
|
+
const bytes = new TextEncoder().encode(path);
|
|
53
|
+
if (bytes.length <= 100) {
|
|
54
|
+
return { prefix: "", name: path };
|
|
55
|
+
}
|
|
56
|
+
// Find a "/" such that everything before it fits in prefix (<=155) and
|
|
57
|
+
// everything after fits in name (<=100). Prefer the longest possible prefix.
|
|
58
|
+
const parts = path.split("/");
|
|
59
|
+
for (let i = parts.length - 1; i > 0; i--) {
|
|
60
|
+
const prefix = parts.slice(0, i).join("/");
|
|
61
|
+
const name = parts.slice(i).join("/");
|
|
62
|
+
const prefixLen = new TextEncoder().encode(prefix).length;
|
|
63
|
+
const nameLen = new TextEncoder().encode(name).length;
|
|
64
|
+
if (prefixLen <= 155 && nameLen > 0 && nameLen <= 100) {
|
|
65
|
+
return { prefix, name };
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Serializes entries into an (uncompressed) ustar tarball. Entries whose path
|
|
73
|
+
* ends with "/" are written as directories and must have empty data.
|
|
74
|
+
*/
|
|
75
|
+
export function createTar(entries: TarEntry[]): Uint8Array<ArrayBuffer> {
|
|
76
|
+
const chunks: Uint8Array[] = [];
|
|
77
|
+
for (const entry of entries) {
|
|
78
|
+
if (entry.path.startsWith("/") || entry.path.split("/").includes("..") || entry.path === "") {
|
|
79
|
+
throw new HexclaveAssertionError(`Invalid tar entry path: ${JSON.stringify(entry.path)}`);
|
|
80
|
+
}
|
|
81
|
+
const isDirectory = entry.path.endsWith("/");
|
|
82
|
+
if (isDirectory && entry.data.length > 0) {
|
|
83
|
+
throw new HexclaveAssertionError(`Tar directory entry must have empty data: ${entry.path}`);
|
|
84
|
+
}
|
|
85
|
+
const split = splitUstarPath(entry.path) ?? throwPathTooLong(entry.path);
|
|
86
|
+
const header = new Uint8Array(BLOCK_SIZE);
|
|
87
|
+
writeString(header, 0, 100, split.name);
|
|
88
|
+
writeOctal(header, 100, 8, isDirectory ? 0o755 : 0o644); // mode
|
|
89
|
+
writeOctal(header, 108, 8, 0); // uid
|
|
90
|
+
writeOctal(header, 116, 8, 0); // gid
|
|
91
|
+
writeOctal(header, 124, 12, entry.data.length); // size
|
|
92
|
+
writeOctal(header, 136, 12, 0); // mtime — fixed at 0 so tarballs are deterministic for identical input
|
|
93
|
+
header[156] = isDirectory ? 0x35 /* '5' */ : 0x30 /* '0' */; // typeflag
|
|
94
|
+
writeString(header, 257, 6, "ustar");
|
|
95
|
+
header[263] = 0x30; // version "00"
|
|
96
|
+
header[264] = 0x30;
|
|
97
|
+
writeString(header, 345, 155, split.prefix);
|
|
98
|
+
// Checksum: sum of all header bytes with the checksum field as spaces.
|
|
99
|
+
header.fill(0x20, 148, 156);
|
|
100
|
+
let checksum = 0;
|
|
101
|
+
for (const byte of header) checksum += byte;
|
|
102
|
+
header.fill(0, 148, 156);
|
|
103
|
+
writeOctal(header, 148, 7, checksum);
|
|
104
|
+
header[155] = 0x20;
|
|
105
|
+
chunks.push(header);
|
|
106
|
+
if (entry.data.length > 0) {
|
|
107
|
+
chunks.push(entry.data);
|
|
108
|
+
const padding = (BLOCK_SIZE - (entry.data.length % BLOCK_SIZE)) % BLOCK_SIZE;
|
|
109
|
+
if (padding > 0) chunks.push(new Uint8Array(padding));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
chunks.push(new Uint8Array(2 * BLOCK_SIZE)); // end-of-archive marker
|
|
113
|
+
const total = chunks.reduce((sum, c) => sum + c.length, 0);
|
|
114
|
+
const result = new Uint8Array(total);
|
|
115
|
+
let offset = 0;
|
|
116
|
+
for (const chunk of chunks) {
|
|
117
|
+
result.set(chunk, offset);
|
|
118
|
+
offset += chunk.length;
|
|
119
|
+
}
|
|
120
|
+
return result;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function throwPathTooLong(path: string): never {
|
|
124
|
+
throw new StatusError(400, `File path too long to be packaged: ${JSON.stringify(path)}`);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function readString(block: Uint8Array, offset: number, length: number): string {
|
|
128
|
+
let end = offset;
|
|
129
|
+
while (end < offset + length && block[end] !== 0) end++;
|
|
130
|
+
return new TextDecoder().decode(block.subarray(offset, end));
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function readOctal(block: Uint8Array, offset: number, length: number): number {
|
|
134
|
+
const str = readString(block, offset, length).trim();
|
|
135
|
+
if (str === "") return 0;
|
|
136
|
+
if (!/^[0-7]+$/.test(str)) {
|
|
137
|
+
throw new StatusError(400, "Invalid tarball: malformed octal header field");
|
|
138
|
+
}
|
|
139
|
+
return parseInt(str, 8);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Parses an (uncompressed) ustar tarball produced by `createTar` (or any tool
|
|
144
|
+
* emitting the plain ustar subset). Strict by design — see module comment.
|
|
145
|
+
* Directory entries are returned with a trailing "/" and empty data.
|
|
146
|
+
*
|
|
147
|
+
* Throws `StatusError(400, ...)` on malformed or unsafe input so backend routes
|
|
148
|
+
* can surface it directly to the uploader.
|
|
149
|
+
*/
|
|
150
|
+
export function parseTar(bytes: Uint8Array, limits: TarLimits): TarEntry[] {
|
|
151
|
+
const entries: TarEntry[] = [];
|
|
152
|
+
let offset = 0;
|
|
153
|
+
let totalBytes = 0;
|
|
154
|
+
while (offset + BLOCK_SIZE <= bytes.length) {
|
|
155
|
+
const header = bytes.subarray(offset, offset + BLOCK_SIZE);
|
|
156
|
+
if (header.every((b) => b === 0)) {
|
|
157
|
+
// End-of-archive marker (we accept a single zero block too).
|
|
158
|
+
return entries;
|
|
159
|
+
}
|
|
160
|
+
const magic = readString(header, 257, 6);
|
|
161
|
+
if (magic !== "ustar") {
|
|
162
|
+
throw new StatusError(400, "Invalid tarball: not a ustar archive");
|
|
163
|
+
}
|
|
164
|
+
let expectedChecksum = 0;
|
|
165
|
+
for (let i = 0; i < BLOCK_SIZE; i++) {
|
|
166
|
+
expectedChecksum += (i >= 148 && i < 156) ? 0x20 : header[i];
|
|
167
|
+
}
|
|
168
|
+
if (readOctal(header, 148, 8) !== expectedChecksum) {
|
|
169
|
+
throw new StatusError(400, "Invalid tarball: header checksum mismatch");
|
|
170
|
+
}
|
|
171
|
+
const typeflag = header[156];
|
|
172
|
+
if (typeflag !== 0x30 && typeflag !== 0 && typeflag !== 0x35) {
|
|
173
|
+
throw new StatusError(400, "Invalid tarball: only regular files and directories are supported");
|
|
174
|
+
}
|
|
175
|
+
const prefix = readString(header, 345, 155);
|
|
176
|
+
const name = readString(header, 0, 100);
|
|
177
|
+
const path = prefix === "" ? name : `${prefix}/${name}`;
|
|
178
|
+
if (path === "" || path.startsWith("/") || path.split("/").includes("..") || path.includes("\\")) {
|
|
179
|
+
throw new StatusError(400, `Invalid tarball: unsafe entry path ${JSON.stringify(path)}`);
|
|
180
|
+
}
|
|
181
|
+
const size = readOctal(header, 124, 12);
|
|
182
|
+
const isDirectory = typeflag === 0x35;
|
|
183
|
+
if (isDirectory && size !== 0) {
|
|
184
|
+
throw new StatusError(400, "Invalid tarball: directory entry with non-zero size");
|
|
185
|
+
}
|
|
186
|
+
offset += BLOCK_SIZE;
|
|
187
|
+
if (offset + size > bytes.length) {
|
|
188
|
+
throw new StatusError(400, "Invalid tarball: truncated file data");
|
|
189
|
+
}
|
|
190
|
+
totalBytes += size;
|
|
191
|
+
if (entries.length + 1 > limits.maxEntries) {
|
|
192
|
+
throw new StatusError(400, `Tarball contains too many files (max ${limits.maxEntries})`);
|
|
193
|
+
}
|
|
194
|
+
if (totalBytes > limits.maxTotalBytes) {
|
|
195
|
+
throw new StatusError(400, `Tarball contents too large (max ${limits.maxTotalBytes} bytes)`);
|
|
196
|
+
}
|
|
197
|
+
entries.push({
|
|
198
|
+
path: isDirectory && !path.endsWith("/") ? `${path}/` : path,
|
|
199
|
+
data: bytes.slice(offset, offset + size),
|
|
200
|
+
});
|
|
201
|
+
offset += size + ((BLOCK_SIZE - (size % BLOCK_SIZE)) % BLOCK_SIZE);
|
|
202
|
+
}
|
|
203
|
+
throw new StatusError(400, "Invalid tarball: missing end-of-archive marker");
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
const TEST_LIMITS: TarLimits = { maxEntries: 1000, maxTotalBytes: 10 * 1024 * 1024 };
|
|
207
|
+
|
|
208
|
+
import.meta.vitest?.test("createTar/parseTar roundtrip", ({ expect }) => {
|
|
209
|
+
const entries: TarEntry[] = [
|
|
210
|
+
{ path: "package.json", data: new TextEncoder().encode(`{"name":"x"}`) },
|
|
211
|
+
{ path: "src/", data: new Uint8Array(0) },
|
|
212
|
+
{ path: "src/index.ts", data: new TextEncoder().encode("export const a = 1;\n") },
|
|
213
|
+
{ path: "empty.txt", data: new Uint8Array(0) },
|
|
214
|
+
{ path: "binary.bin", data: new Uint8Array([0, 1, 2, 255, 254, 253]) },
|
|
215
|
+
];
|
|
216
|
+
const tar = createTar(entries);
|
|
217
|
+
expect(tar.length % 512).toBe(0);
|
|
218
|
+
const parsed = parseTar(tar, TEST_LIMITS);
|
|
219
|
+
expect(parsed.map((e) => e.path)).toEqual(entries.map((e) => e.path));
|
|
220
|
+
for (let i = 0; i < entries.length; i++) {
|
|
221
|
+
expect([...parsed[i].data]).toEqual([...entries[i].data]);
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
import.meta.vitest?.test("createTar/parseTar long paths use the ustar prefix field", ({ expect }) => {
|
|
226
|
+
const longDir = Array.from({ length: 12 }, (_, i) => `directory-number-${i}`).join("/");
|
|
227
|
+
const path = `${longDir}/file.txt`;
|
|
228
|
+
expect(path.length).toBeGreaterThan(100);
|
|
229
|
+
const tar = createTar([{ path, data: new TextEncoder().encode("hello") }]);
|
|
230
|
+
const parsed = parseTar(tar, TEST_LIMITS);
|
|
231
|
+
expect(parsed).toHaveLength(1);
|
|
232
|
+
expect(parsed[0].path).toBe(path);
|
|
233
|
+
expect(new TextDecoder().decode(parsed[0].data)).toBe("hello");
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
import.meta.vitest?.test("createTar rejects unsafe paths", ({ expect }) => {
|
|
237
|
+
expect(() => createTar([{ path: "/etc/passwd", data: new Uint8Array(0) }])).toThrow();
|
|
238
|
+
expect(() => createTar([{ path: "../escape", data: new Uint8Array(0) }])).toThrow();
|
|
239
|
+
expect(() => createTar([{ path: "a/../b", data: new Uint8Array(0) }])).toThrow();
|
|
240
|
+
expect(() => createTar([{ path: "", data: new Uint8Array(0) }])).toThrow();
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
import.meta.vitest?.test("parseTar rejects malformed and unsafe archives", ({ expect }) => {
|
|
244
|
+
expect(() => parseTar(new Uint8Array(1024), TEST_LIMITS)).not.toThrow(); // all-zero = empty archive
|
|
245
|
+
expect(() => parseTar(new TextEncoder().encode("too short to contain a single header block"), TEST_LIMITS)).toThrow("missing end-of-archive marker");
|
|
246
|
+
const garbageBlock = new Uint8Array(512).fill(0x41 /* 'A' */);
|
|
247
|
+
expect(() => parseTar(garbageBlock, TEST_LIMITS)).toThrow("not a ustar archive");
|
|
248
|
+
|
|
249
|
+
// Corrupt a valid archive's checksum.
|
|
250
|
+
const tar = createTar([{ path: "a.txt", data: new TextEncoder().encode("hi") }]);
|
|
251
|
+
const corrupted = tar.slice();
|
|
252
|
+
corrupted[0] ^= 0xff;
|
|
253
|
+
expect(() => parseTar(corrupted, TEST_LIMITS)).toThrow("checksum mismatch");
|
|
254
|
+
|
|
255
|
+
// Truncated data section.
|
|
256
|
+
expect(() => parseTar(tar.subarray(0, 512), TEST_LIMITS)).toThrow("truncated");
|
|
257
|
+
|
|
258
|
+
// Limits.
|
|
259
|
+
expect(() => parseTar(tar, { maxEntries: 0, maxTotalBytes: 1000 })).toThrow("too many files");
|
|
260
|
+
expect(() => parseTar(tar, { maxEntries: 10, maxTotalBytes: 1 })).toThrow("too large");
|
|
261
|
+
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admin-interface-ChuyYSXj.d.ts","names":[],"sources":["../src/interface/admin-interface.ts"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema-BPMGhu_7.d.ts","names":[],"sources":["../src/config/schema.ts"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transactions-7q13mxhG.d.ts","names":[],"sources":["../src/interface/crud/transactions.ts"],"mappings":";;;;cAwFa,sBAAA,gBAAsB,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMxB,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAEC,gBAAA,GAAmB,SAAS,QAAQ,sBAAA;AAAA,cAEnC,iBAAA;AAAA,KAUD,eAAA,WAA0B,iBAAiB;AAAA,cAE1C,iBAAA,gBAAiB,YAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAkBlB,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAEA,WAAA,GAAc,SAAS,QAAQ,iBAAA"}
|