@nimbus-sh/platform 0.7.1 → 0.8.1
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/heavy-alloc-coord.d.ts +5 -0
- package/dist/heavy-alloc-coord.d.ts.map +1 -1
- package/dist/heavy-alloc-coord.js +12 -1
- package/dist/limits.d.ts +3 -8
- package/dist/limits.d.ts.map +1 -1
- package/dist/limits.js +9 -8
- package/dist/lost-call.d.ts +62 -0
- package/dist/lost-call.d.ts.map +1 -0
- package/dist/lost-call.js +67 -0
- package/dist/module-source.d.ts +31 -0
- package/dist/module-source.d.ts.map +1 -0
- package/dist/module-source.js +52 -0
- package/dist/oom-classify.d.ts +14 -0
- package/dist/oom-classify.d.ts.map +1 -1
- package/dist/oom-classify.js +30 -0
- package/dist/retry.d.ts +49 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +59 -0
- package/dist/utf8.d.ts +11 -0
- package/dist/utf8.d.ts.map +1 -0
- package/dist/utf8.js +35 -0
- package/dist/w7-frame.d.ts +278 -6
- package/dist/w7-frame.d.ts.map +1 -1
- package/dist/w7-frame.js +657 -134
- package/dist/wave-writer.d.ts +392 -0
- package/dist/wave-writer.d.ts.map +1 -0
- package/dist/wave-writer.js +921 -0
- package/package.json +1 -1
- package/src/heavy-alloc-coord.ts +15 -1
- package/src/limits.ts +10 -9
- package/src/lost-call.ts +80 -0
- package/src/module-source.ts +57 -0
- package/src/oom-classify.ts +32 -0
- package/src/retry.ts +74 -0
- package/src/utf8.ts +31 -0
- package/src/w7-frame.ts +780 -149
- package/src/wave-writer.ts +1108 -0
package/dist/w7-frame.d.ts
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* W7
|
|
3
|
-
*
|
|
2
|
+
* W7 v4 — incremental typed records for streamed filesystem writes, in
|
|
3
|
+
* program order: the records are the operations a writer made, in the order
|
|
4
|
+
* it made them, and a stream that stops commits a prefix of them (each group
|
|
5
|
+
* whole). A path may be named by several operations (a file written, renamed,
|
|
6
|
+
* written again). Every producer speaks v4; the format is internal, and every
|
|
7
|
+
* producer and consumer deploys together. v3 (no rename, truncate or setattr,
|
|
8
|
+
* one operation per path, deletes then directories then files) is still
|
|
9
|
+
* decoded for the one release that rolls v4 out: delete it with W7_MAGIC_V3.
|
|
10
|
+
* Fields added to v4 since (each deploys with both ends, so the magic stays):
|
|
11
|
+
* a create call's `umask`; the `open` and `close` calls (a write
|
|
12
|
+
* description's), an `open`'s `ino`, and a description's `description` on
|
|
13
|
+
* its write, append and ftruncate calls.
|
|
4
14
|
*/
|
|
5
15
|
export type VfsInodeKind = 'file' | 'directory' | 'symlink';
|
|
6
16
|
/** Entry for bulk inode creation via writeBatch(). */
|
|
@@ -17,6 +27,12 @@ export interface BatchInodeEntry {
|
|
|
17
27
|
uid?: number;
|
|
18
28
|
gid?: number;
|
|
19
29
|
chunkCount: number;
|
|
30
|
+
/**
|
|
31
|
+
* The inode number a delegation's holder gave a file or directory it made
|
|
32
|
+
* (v4): one of the numbers its grant reserved, so the name keeps the
|
|
33
|
+
* number the holder already showed. Absent: the session numbers it.
|
|
34
|
+
*/
|
|
35
|
+
ino?: number;
|
|
20
36
|
}
|
|
21
37
|
/** Entry for bulk chunk creation via writeBatch(). */
|
|
22
38
|
export interface BatchChunkEntry {
|
|
@@ -24,18 +40,240 @@ export interface BatchChunkEntry {
|
|
|
24
40
|
chunkId: number;
|
|
25
41
|
data: Uint8Array;
|
|
26
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* A file whose bytes are read from `source` while the stream is drained, never
|
|
45
|
+
* held whole: its inode (in `inodes`) carries the size, and the source must
|
|
46
|
+
* yield exactly that many bytes, in pieces of any size.
|
|
47
|
+
*/
|
|
48
|
+
export interface BatchStreamEntry {
|
|
49
|
+
path: string;
|
|
50
|
+
source: AsyncIterable<Uint8Array>;
|
|
51
|
+
}
|
|
27
52
|
/** Payload for writeBatch() — all inodes + chunks written in ONE transactionSync(). */
|
|
28
53
|
export interface BatchWritePayload {
|
|
29
54
|
inodes: BatchInodeEntry[];
|
|
30
55
|
chunks: BatchChunkEntry[];
|
|
31
56
|
/** Paths to delete before writing (for clean reinstall). */
|
|
32
57
|
deletePaths?: string[];
|
|
58
|
+
/** Files streamed from a source rather than given as chunks; encoder only. */
|
|
59
|
+
streams?: BatchStreamEntry[];
|
|
60
|
+
/**
|
|
61
|
+
* The operations themselves, in program order (encoder only): a writer
|
|
62
|
+
* with an order to keep (a delegation's holder) gives these, and nothing
|
|
63
|
+
* in `inodes`, `chunks`, `deletePaths` or `streams`. Without them, a
|
|
64
|
+
* payload is encoded as its deletes, then its directories, then its files.
|
|
65
|
+
*/
|
|
66
|
+
ops?: W7Op[];
|
|
67
|
+
}
|
|
68
|
+
/** One attribute change (setattr): the mode, the owner, or the times; what chmod, chown and utimes each make. */
|
|
69
|
+
export type W7Attrs = {
|
|
70
|
+
mode: number;
|
|
71
|
+
} | {
|
|
72
|
+
uid: number;
|
|
73
|
+
gid: number;
|
|
74
|
+
} | {
|
|
75
|
+
atime: number;
|
|
76
|
+
mtime: number;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* A process's filesystem call as a record (v4), applied by the session's own
|
|
80
|
+
* operation of that name with that operation's semantics and refusals: a
|
|
81
|
+
* writeFile follows a link at its name and refuses a directory (EISDIR), a
|
|
82
|
+
* new file is `mode` less the process's umask and an existing one keeps its
|
|
83
|
+
* mode, owner and inode, a mkdir refuses a name that exists (EEXIST), and
|
|
84
|
+
* nothing makes a missing parent. The program-order counterpart of the
|
|
85
|
+
* syscall, where `file` and `directory` are a checkout's upserts.
|
|
86
|
+
*/
|
|
87
|
+
export type W7Call =
|
|
88
|
+
/**
|
|
89
|
+
* `ino`, on a call that makes a name (writeFile, appendFile, mkdir,
|
|
90
|
+
* symlink): the number a delegation's holder gave the name it made, from
|
|
91
|
+
* its grant's range, kept when the call makes it (W7 v4 `ino`).
|
|
92
|
+
*/
|
|
93
|
+
/**
|
|
94
|
+
* `umask`, on a call that makes a name with a mode (writeFile, appendFile,
|
|
95
|
+
* mkdir): the process's umask when it made the call, applied in place of
|
|
96
|
+
* the session's record of it (which a later change may have moved).
|
|
97
|
+
*/
|
|
98
|
+
{
|
|
99
|
+
call: 'writeFile';
|
|
100
|
+
path: string;
|
|
101
|
+
mode: number;
|
|
102
|
+
ino?: number;
|
|
103
|
+
umask?: number;
|
|
104
|
+
data: Uint8Array;
|
|
105
|
+
} | {
|
|
106
|
+
call: 'appendFile';
|
|
107
|
+
path: string;
|
|
108
|
+
mode: number;
|
|
109
|
+
ino?: number;
|
|
110
|
+
umask?: number;
|
|
111
|
+
data: Uint8Array;
|
|
33
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* A write through an open description (pwrite(2)) at `offset`: through
|
|
115
|
+
* the session's description `description` when given (opened by an `open`
|
|
116
|
+
* call: its access was decided then, and no later chmod, chown, rename or
|
|
117
|
+
* unlink changes it), else of the file whose inode is `ino` (wherever that
|
|
118
|
+
* file is named now, and nowhere once no name has it), else of the file at
|
|
119
|
+
* `path`. Past its end, the gap reads as zeros.
|
|
120
|
+
*/
|
|
121
|
+
| {
|
|
122
|
+
call: 'write';
|
|
123
|
+
path: string;
|
|
124
|
+
ino?: number;
|
|
125
|
+
description?: string;
|
|
126
|
+
offset: number;
|
|
127
|
+
data: Uint8Array;
|
|
128
|
+
}
|
|
129
|
+
/** A write through an O_APPEND description: at the file's end as it is when the write lands. */
|
|
130
|
+
| {
|
|
131
|
+
call: 'append';
|
|
132
|
+
path: string;
|
|
133
|
+
ino?: number;
|
|
134
|
+
description?: string;
|
|
135
|
+
data: Uint8Array;
|
|
136
|
+
}
|
|
137
|
+
/** ftruncate(2) through an open description: `description`'s file, else the file `ino` names, else the one at `path`. */
|
|
138
|
+
| {
|
|
139
|
+
call: 'ftruncate';
|
|
140
|
+
path: string;
|
|
141
|
+
ino?: number;
|
|
142
|
+
description?: string;
|
|
143
|
+
size: number;
|
|
144
|
+
}
|
|
145
|
+
/** `existing: 'ok'`: a directory already there answers success, as `mkdir -p` takes it (anything else there is still EEXIST). */
|
|
146
|
+
| {
|
|
147
|
+
call: 'mkdir';
|
|
148
|
+
path: string;
|
|
149
|
+
mode: number;
|
|
150
|
+
ino?: number;
|
|
151
|
+
umask?: number;
|
|
152
|
+
existing?: 'ok';
|
|
153
|
+
} | {
|
|
154
|
+
call: 'unlink';
|
|
155
|
+
path: string;
|
|
156
|
+
} | {
|
|
157
|
+
call: 'rmdir';
|
|
158
|
+
path: string;
|
|
159
|
+
} | {
|
|
160
|
+
call: 'symlink';
|
|
161
|
+
path: string;
|
|
162
|
+
target: string;
|
|
163
|
+
ino?: number;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* rm(1) as fs.rm makes it: a file or link unlinked, a directory with all
|
|
167
|
+
* it holds when `recursive` (else EISDIR's refusal, as unlink's), and a
|
|
168
|
+
* name not there no refusal when `force`.
|
|
169
|
+
*/
|
|
170
|
+
| {
|
|
171
|
+
call: 'rm';
|
|
172
|
+
path: string;
|
|
173
|
+
recursive?: true;
|
|
174
|
+
force?: true;
|
|
175
|
+
}
|
|
176
|
+
/** chown(2) of the link itself (lchown): the name's own entry, never what it names. */
|
|
177
|
+
| {
|
|
178
|
+
call: 'lchown';
|
|
179
|
+
path: string;
|
|
180
|
+
uid: number;
|
|
181
|
+
gid: number;
|
|
182
|
+
}
|
|
183
|
+
/** utimes of the link itself (lutimes). */
|
|
184
|
+
| {
|
|
185
|
+
call: 'lutimes';
|
|
186
|
+
path: string;
|
|
187
|
+
atime: number;
|
|
188
|
+
mtime: number;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* open(2) of a file to write it (and to read it when `read`), as the
|
|
192
|
+
* session's own open decides it: a name made (`create`, `mode` less
|
|
193
|
+
* `umask`) or refused (EEXIST when `exclusive`, ENOENT without `create`,
|
|
194
|
+
* EISDIR, EACCES for any access asked that the file's mode refuses),
|
|
195
|
+
* emptied when `truncate`, a link at the name followed unless `nofollow`
|
|
196
|
+
* (ELOOP). Its answer is the file's stat. With `description` (an id the
|
|
197
|
+
* process chose), the session keeps the open description under it, its
|
|
198
|
+
* access fixed now; the description's write, append and ftruncate calls
|
|
199
|
+
* name it, and its `close` ends it. `ino`: the number a name it makes is
|
|
200
|
+
* given (a delegation's, as a mkdir's).
|
|
201
|
+
*/
|
|
202
|
+
| {
|
|
203
|
+
call: 'open';
|
|
204
|
+
path: string;
|
|
205
|
+
mode: number;
|
|
206
|
+
ino?: number;
|
|
207
|
+
umask?: number;
|
|
208
|
+
read?: true;
|
|
209
|
+
create?: true;
|
|
210
|
+
truncate?: true;
|
|
211
|
+
exclusive?: true;
|
|
212
|
+
nofollow?: true;
|
|
213
|
+
description?: string;
|
|
214
|
+
}
|
|
215
|
+
/** close(2) of the session's open description `description` (an `open` call's). */
|
|
216
|
+
| {
|
|
217
|
+
call: 'close';
|
|
218
|
+
path: string;
|
|
219
|
+
description: string;
|
|
220
|
+
};
|
|
221
|
+
/** A call whose bytes travel as a file's chunks. */
|
|
222
|
+
export type W7DataCall = Extract<W7Call, {
|
|
223
|
+
data: Uint8Array;
|
|
224
|
+
}>['call'];
|
|
225
|
+
/** A call that is one metadata record. */
|
|
226
|
+
export type W7PathCall = Exclude<W7Call, {
|
|
227
|
+
data: Uint8Array;
|
|
228
|
+
}>;
|
|
229
|
+
/** One operation of a program-order payload (BatchWritePayload.ops). */
|
|
230
|
+
export type W7Op = {
|
|
231
|
+
type: 'delete';
|
|
232
|
+
path: string;
|
|
233
|
+
} | {
|
|
234
|
+
type: 'directory';
|
|
235
|
+
inode: BatchInodeEntry;
|
|
236
|
+
} | {
|
|
237
|
+
type: 'file';
|
|
238
|
+
inode: BatchInodeEntry;
|
|
239
|
+
data: Uint8Array;
|
|
240
|
+
} | {
|
|
241
|
+
type: 'file';
|
|
242
|
+
inode: BatchInodeEntry;
|
|
243
|
+
source: AsyncIterable<Uint8Array>;
|
|
244
|
+
} | {
|
|
245
|
+
type: 'rename';
|
|
246
|
+
from: string;
|
|
247
|
+
to: string;
|
|
248
|
+
} | {
|
|
249
|
+
type: 'truncate';
|
|
250
|
+
path: string;
|
|
251
|
+
size: number;
|
|
252
|
+
} | {
|
|
253
|
+
type: 'setattr';
|
|
254
|
+
path: string;
|
|
255
|
+
attrs: W7Attrs;
|
|
256
|
+
} | {
|
|
257
|
+
type: 'call';
|
|
258
|
+
call: W7Call;
|
|
259
|
+
};
|
|
34
260
|
export declare const W7_MAGIC: Uint8Array<ArrayBuffer>;
|
|
35
|
-
|
|
261
|
+
/**
|
|
262
|
+
* A batch's owned paths. Each stream costs the receiver a round trip and a
|
|
263
|
+
* publication's fixed work, so a batch is as wide as its byte budget allows;
|
|
264
|
+
* ownership is a set of names, small beside the bytes.
|
|
265
|
+
*/
|
|
266
|
+
export declare const W7_MAX_PATHS_PER_BATCH = 1024;
|
|
36
267
|
export declare const W7_MAX_OWNED_PATH_BYTES: number;
|
|
37
268
|
export declare const W7_MAX_RECORD_BYTES: number;
|
|
38
|
-
|
|
269
|
+
/** The wire chunks a file or link of `size` bytes travels as: CHUNK_SIZE each, the last short, none when empty. */
|
|
270
|
+
export declare function w7ChunkCount(size: number): number;
|
|
271
|
+
/** `data`, the content at `path`, as its wire chunks (w7ChunkCount): views of it, not copies. */
|
|
272
|
+
export declare function w7Chunks(path: string, data: Uint8Array): BatchChunkEntry[];
|
|
273
|
+
declare const MODE: "program-order-committed-prefix";
|
|
274
|
+
/** v3's batch mode. Delete with v3 decoding. */
|
|
275
|
+
declare const MODE_V3: "path-atomic-committed-prefix";
|
|
276
|
+
type W7Mode = typeof MODE | typeof MODE_V3;
|
|
39
277
|
export interface W7BatchSummary {
|
|
40
278
|
recordCount: number;
|
|
41
279
|
pathCount: number;
|
|
@@ -44,6 +282,8 @@ export interface W7BatchSummary {
|
|
|
44
282
|
fileCount: number;
|
|
45
283
|
chunkCount: number;
|
|
46
284
|
byteCount: number;
|
|
285
|
+
/** Renames, truncates, attribute changes and path calls (v4; none in v3). */
|
|
286
|
+
opCount: number;
|
|
47
287
|
check: number;
|
|
48
288
|
}
|
|
49
289
|
export interface W7ChunkRetention {
|
|
@@ -58,9 +298,14 @@ type W7DirectoryInode = BatchInodeEntry & {
|
|
|
58
298
|
kind: 'directory';
|
|
59
299
|
isDir: true;
|
|
60
300
|
};
|
|
301
|
+
/** `call`: the file is a W7DataCall's bytes (its path, mode and size), not an upsert's inode. */
|
|
61
302
|
type W7ContentInode = BatchInodeEntry & {
|
|
62
303
|
kind: 'file' | 'symlink';
|
|
63
304
|
isDir: false;
|
|
305
|
+
call?: W7DataCall;
|
|
306
|
+
offset?: number;
|
|
307
|
+
umask?: number;
|
|
308
|
+
description?: string;
|
|
64
309
|
};
|
|
65
310
|
export type W7DecodedRecord = {
|
|
66
311
|
type: 'delete';
|
|
@@ -86,17 +331,44 @@ export type W7DecodedRecord = {
|
|
|
86
331
|
size: number;
|
|
87
332
|
chunkCount: number;
|
|
88
333
|
check: number;
|
|
334
|
+
} | {
|
|
335
|
+
type: 'rename';
|
|
336
|
+
from: string;
|
|
337
|
+
to: string;
|
|
338
|
+
} | {
|
|
339
|
+
type: 'truncate';
|
|
340
|
+
path: string;
|
|
341
|
+
size: number;
|
|
342
|
+
} | {
|
|
343
|
+
type: 'setattr';
|
|
344
|
+
path: string;
|
|
345
|
+
attrs: W7Attrs;
|
|
346
|
+
} | {
|
|
347
|
+
type: 'call';
|
|
348
|
+
call: W7PathCall;
|
|
89
349
|
} | {
|
|
90
350
|
type: 'batch-end';
|
|
91
351
|
summary: W7BatchSummary;
|
|
92
352
|
};
|
|
93
353
|
export interface W7DecodedStream {
|
|
94
354
|
readonly batchId: string;
|
|
95
|
-
readonly mode:
|
|
355
|
+
readonly mode: W7Mode;
|
|
96
356
|
readonly records: AsyncIterable<W7DecodedRecord>;
|
|
97
357
|
}
|
|
98
|
-
/**
|
|
358
|
+
/**
|
|
359
|
+
* Encode the records a pull reaches into one enqueued chunk of about
|
|
360
|
+
* ENCODER_PULL_BYTES (a record never splits; a file's chunk is at most
|
|
361
|
+
* CHUNK_SIZE), so a wave crosses the RPC boundary in a few writes rather than
|
|
362
|
+
* one per record. The bytes are the same records either way; no batch-sized
|
|
363
|
+
* metadata header exists.
|
|
364
|
+
*/
|
|
99
365
|
export declare function encodeWriteBatchStream(payload: BatchWritePayload): ReadableStream<Uint8Array>;
|
|
366
|
+
/**
|
|
367
|
+
* The bytes encodeWriteBatchStream would stream for `payload`, as one buffer:
|
|
368
|
+
* for a payload held in memory (no streamed sources), the same records in
|
|
369
|
+
* the same order, copied once.
|
|
370
|
+
*/
|
|
371
|
+
export declare function encodeWriteBatch(payload: BatchWritePayload): Promise<Uint8Array>;
|
|
100
372
|
/**
|
|
101
373
|
* Parse the v3 preamble eagerly, then expose validated operation records
|
|
102
374
|
* incrementally. Chunk credit is acquired after its bounded header validates
|
package/dist/w7-frame.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"w7-frame.d.ts","sourceRoot":"","sources":["../src/w7-frame.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"w7-frame.d.ts","sourceRoot":"","sources":["../src/w7-frame.ts"],"names":[],"mappings":"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"}
|