@ai-ecoverse/slicc-kernel 1.102.6 → 1.103.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 +3 -3
- package/dist/index.js.map +2 -2
- package/dist/kernel-worker.js +118 -29
- package/dist/kernel-worker.js.map +4 -4
- package/dist/meta.js.map +2 -2
- package/dist/node-process-worker.js +29 -44
- package/dist/node-process-worker.js.map +3 -3
- package/dist/node.js +123 -34
- package/dist/node.js.map +4 -4
- package/dist/process-worker.js +44 -59
- package/dist/process-worker.js.map +3 -3
- package/dist/types/body-idle.d.ts +3 -0
- package/dist/types/bytes.d.ts +1 -0
- package/dist/types/cdp/facade.d.ts +27 -0
- package/dist/types/cdp/hosts.d.ts +14 -0
- package/dist/types/cdp/port.d.ts +24 -0
- package/dist/types/cdp/types.d.ts +12 -0
- package/dist/types/cdp/websocket.d.ts +61 -0
- package/dist/types/client/attach.d.ts +132 -0
- package/dist/types/client/dial-stream.d.ts +23 -0
- package/dist/types/client/loopback-fetch.d.ts +5 -0
- package/dist/types/client/protocol.d.ts +153 -0
- package/dist/types/client/serve-client.d.ts +18 -0
- package/dist/types/clipboard-relay.d.ts +25 -0
- package/dist/types/commands.d.ts +38 -0
- package/dist/types/cron/clock.d.ts +13 -0
- package/dist/types/driver.d.ts +3 -0
- package/dist/types/facade/hosts.d.ts +12 -0
- package/dist/types/facade/port.d.ts +16 -0
- package/dist/types/facade/types.d.ts +23 -0
- package/dist/types/fs/access.d.ts +29 -0
- package/dist/types/fs/attest.d.ts +41 -0
- package/dist/types/fs/changes.d.ts +19 -0
- package/dist/types/fs/commands.d.ts +4 -0
- package/dist/types/fs/dac.d.ts +64 -0
- package/dist/types/fs/dev-removal.d.ts +9 -0
- package/dist/types/fs/fresh-modules.d.ts +9 -0
- package/dist/types/fs/integrity.d.ts +53 -0
- package/dist/types/fs/meta.d.ts +86 -0
- package/dist/types/fs/opfs.d.ts +141 -0
- package/dist/types/fs/owners.d.ts +17 -0
- package/dist/types/fs/pages.d.ts +41 -0
- package/dist/types/fs/path-map.d.ts +16 -0
- package/dist/types/fs/physical-path.d.ts +14 -0
- package/dist/types/fs/protect.d.ts +27 -0
- package/dist/types/fs/ranged.d.ts +73 -0
- package/dist/types/fs/remote.d.ts +45 -0
- package/dist/types/fs/types.d.ts +117 -0
- package/dist/types/fs/unlinked.d.ts +75 -0
- package/dist/types/fs/view.d.ts +1 -0
- package/dist/types/fs/walk.d.ts +12 -0
- package/dist/types/fs/watch.d.ts +23 -0
- package/dist/types/index.d.ts +159 -0
- package/dist/types/integrity-relay.d.ts +18 -0
- package/dist/types/kernel/children.d.ts +90 -0
- package/dist/types/kernel/clipboard.d.ts +49 -0
- package/dist/types/kernel/cpu-clock.d.ts +56 -0
- package/dist/types/kernel/cred.d.ts +17 -0
- package/dist/types/kernel/dgram.d.ts +56 -0
- package/dist/types/kernel/dial.d.ts +20 -0
- package/dist/types/kernel/epoll.d.ts +67 -0
- package/dist/types/kernel/eventfd.d.ts +19 -0
- package/dist/types/kernel/exec-ticket.d.ts +25 -0
- package/dist/types/kernel/fd-table.d.ts +107 -0
- package/dist/types/kernel/host-ops.d.ts +98 -0
- package/dist/types/kernel/host.d.ts +116 -0
- package/dist/types/kernel/jobs.d.ts +50 -0
- package/dist/types/kernel/locks.d.ts +40 -0
- package/dist/types/kernel/net/datagram-wire.d.ts +8 -0
- package/dist/types/kernel/net/http-syscalls.d.ts +58 -0
- package/dist/types/kernel/net/http1.d.ts +48 -0
- package/dist/types/kernel/net/loopback-names.d.ts +14 -0
- package/dist/types/kernel/net/loopback-transport.d.ts +13 -0
- package/dist/types/kernel/net/network.d.ts +29 -0
- package/dist/types/kernel/net/proxy-service.d.ts +70 -0
- package/dist/types/kernel/net/realm-ca.d.ts +28 -0
- package/dist/types/kernel/net/redirect-hops.d.ts +5 -0
- package/dist/types/kernel/net/remote-transport.d.ts +98 -0
- package/dist/types/kernel/net/resolver.d.ts +29 -0
- package/dist/types/kernel/net/routes.d.ts +15 -0
- package/dist/types/kernel/net/tls-engine.d.ts +46 -0
- package/dist/types/kernel/net/tls-tunnel.d.ts +35 -0
- package/dist/types/kernel/net/transport.d.ts +64 -0
- package/dist/types/kernel/net/uplink-socket.d.ts +11 -0
- package/dist/types/kernel/net/uplink.d.ts +163 -0
- package/dist/types/kernel/net/ws-queue.d.ts +21 -0
- package/dist/types/kernel/net/ws-syscalls.d.ts +45 -0
- package/dist/types/kernel/net/x509.d.ts +34 -0
- package/dist/types/kernel/pipe.d.ts +29 -0
- package/dist/types/kernel/proc-info.d.ts +44 -0
- package/dist/types/kernel/process.d.ts +525 -0
- package/dist/types/kernel/protocol.d.ts +126 -0
- package/dist/types/kernel/pty.d.ts +84 -0
- package/dist/types/kernel/run-child.d.ts +39 -0
- package/dist/types/kernel/scrub-file.d.ts +13 -0
- package/dist/types/kernel/sealed.d.ts +74 -0
- package/dist/types/kernel/select.d.ts +7 -0
- package/dist/types/kernel/sem.d.ts +72 -0
- package/dist/types/kernel/settling.d.ts +16 -0
- package/dist/types/kernel/signals.d.ts +44 -0
- package/dist/types/kernel/socket-nodes.d.ts +20 -0
- package/dist/types/kernel/socket-syscalls.d.ts +76 -0
- package/dist/types/kernel/socket.d.ts +131 -0
- package/dist/types/kernel/timer.d.ts +4 -0
- package/dist/types/kernel/tty.d.ts +53 -0
- package/dist/types/kernel/vfs-file.d.ts +149 -0
- package/dist/types/launcher.d.ts +359 -0
- package/dist/types/local-proxy-transport.d.ts +39 -0
- package/dist/types/meta.d.ts +11 -0
- package/dist/types/mount/chunked.d.ts +9 -0
- package/dist/types/mount/connection.d.ts +35 -0
- package/dist/types/mount/driver.d.ts +50 -0
- package/dist/types/mount/fsa.d.ts +26 -0
- package/dist/types/mount/fstab.d.ts +17 -0
- package/dist/types/mount/host.d.ts +24 -0
- package/dist/types/mount/hostfs.d.ts +129 -0
- package/dist/types/mount/media.d.ts +8 -0
- package/dist/types/mount/medium.d.ts +12 -0
- package/dist/types/mount/mount-fs.d.ts +136 -0
- package/dist/types/mount/protocol.d.ts +140 -0
- package/dist/types/mount/syscall.d.ts +27 -0
- package/dist/types/mount/tmpfs.d.ts +2 -0
- package/dist/types/node/loopback.d.ts +11 -0
- package/dist/types/node/memory-root.d.ts +2 -0
- package/dist/types/node/ws-diagnose.d.ts +4 -0
- package/dist/types/node.d.ts +85 -0
- package/dist/types/process/fd-metadata.d.ts +4 -0
- package/dist/types/process/js/async-sab.d.ts +15 -0
- package/dist/types/process/js/js-children.d.ts +63 -0
- package/dist/types/process/js/js-context.d.ts +133 -0
- package/dist/types/process/js/js-dev.d.ts +50 -0
- package/dist/types/process/js/js-exit.d.ts +15 -0
- package/dist/types/process/js/js-fetch.d.ts +2 -0
- package/dist/types/process/js/js-io.d.ts +81 -0
- package/dist/types/process/js/js-kernel.d.ts +61 -0
- package/dist/types/process/js/js-net.d.ts +42 -0
- package/dist/types/process/js/js-proc.d.ts +31 -0
- package/dist/types/process/js/js-run.d.ts +35 -0
- package/dist/types/process/js/js-sync.d.ts +86 -0
- package/dist/types/process/js/js-tty.d.ts +30 -0
- package/dist/types/process/js/js-websocket.d.ts +21 -0
- package/dist/types/process/kernel-streams.d.ts +196 -0
- package/dist/types/process/process-fds.d.ts +95 -0
- package/dist/types/process/process-locks.d.ts +29 -0
- package/dist/types/process/process-pty.d.ts +20 -0
- package/dist/types/process/process-signals.d.ts +33 -0
- package/dist/types/process/procfs.d.ts +41 -0
- package/dist/types/process/wasi/dylink.d.ts +9 -0
- package/dist/types/process/wasi/slicc-lock.d.ts +26 -0
- package/dist/types/process/wasi/slicc-sem.d.ts +3 -0
- package/dist/types/process/wasi/wasi-abi.d.ts +156 -0
- package/dist/types/process/wasi/wasi-fds.d.ts +130 -0
- package/dist/types/process/wasi/wasi-files.d.ts +99 -0
- package/dist/types/process/wasi/wasi-host.d.ts +104 -0
- package/dist/types/process/wasi/wasi-memory.d.ts +16 -0
- package/dist/types/process/wasi/wasi-module.d.ts +13 -0
- package/dist/types/process/wasi/wasi-poll.d.ts +13 -0
- package/dist/types/process/wasi/wasi-procfs.d.ts +36 -0
- package/dist/types/process/wasi/wasi-sigmask.d.ts +19 -0
- package/dist/types/process/wasi/wasi-signals.d.ts +43 -0
- package/dist/types/process/wasi/wasi-termios.d.ts +10 -0
- package/dist/types/process/wasi/wasix-fork.d.ts +63 -0
- package/dist/types/process/wasi/wasix-linker.d.ts +108 -0
- package/dist/types/process/wasi/wasix-sockets.d.ts +9 -0
- package/dist/types/process/wasi/wasix-trampoline.d.ts +18 -0
- package/dist/types/process/wasi/wasm-functypes.d.ts +25 -0
- package/dist/types/process/wasi-errno.d.ts +1 -0
- package/dist/types/realm/emscripten-vfs-hook.d.ts +19 -0
- package/dist/types/realm/live-vfs-fs.d.ts +186 -0
- package/dist/types/realm/sync-fs-dispatch.d.ts +27 -0
- package/dist/types/realm/sync-fs-token-registry.d.ts +36 -0
- package/dist/types/realm/sync-fs-wire.d.ts +119 -0
- package/dist/types/realm/sync-sab-bridge.d.ts +21 -0
- package/dist/types/realm/sync-sab-responder.d.ts +16 -0
- package/dist/types/realm/sync-sab-wire.d.ts +64 -0
- package/dist/types/sealed-relay.d.ts +26 -0
- package/dist/types/serve.d.ts +190 -0
- package/dist/types/sudo-command.d.ts +4 -0
- package/dist/types/sudo.d.ts +105 -0
- package/dist/types/testing.d.ts +46 -0
- package/dist/types/transport.d.ts +25 -0
- package/dist/types/users.d.ts +86 -0
- package/dist/types/version.d.ts +3 -0
- package/dist/types/websocket-transport.d.ts +12 -0
- package/package.json +24 -8
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { RemoteChange } from './remote.js';
|
|
2
|
+
import { type KernelFs, type UsersMode } from './types.js';
|
|
3
|
+
import type { FsWatchers } from './watch.js';
|
|
4
|
+
export declare const ATTEST_MAX: number;
|
|
5
|
+
export interface AttestedDir {
|
|
6
|
+
path: string;
|
|
7
|
+
uid: number;
|
|
8
|
+
gid: number;
|
|
9
|
+
mode: number;
|
|
10
|
+
}
|
|
11
|
+
export interface Attestation {
|
|
12
|
+
path: string;
|
|
13
|
+
bytes: Uint8Array;
|
|
14
|
+
uid: number;
|
|
15
|
+
gid: number;
|
|
16
|
+
mode: number;
|
|
17
|
+
ino: number;
|
|
18
|
+
mtimeMs: number;
|
|
19
|
+
sha256: string;
|
|
20
|
+
users: UsersMode;
|
|
21
|
+
onRootFs: boolean;
|
|
22
|
+
parents: AttestedDir[];
|
|
23
|
+
}
|
|
24
|
+
export interface AttestContext {
|
|
25
|
+
users: UsersMode;
|
|
26
|
+
mounts: readonly string[];
|
|
27
|
+
}
|
|
28
|
+
export declare function attest(fs: KernelFs, asked: string, o: AttestContext): Promise<Attestation>;
|
|
29
|
+
export declare const WATCH_DEBOUNCE_MS = 50;
|
|
30
|
+
export interface RemoteFs {
|
|
31
|
+
remoteChanges?(listener: (change: RemoteChange) => void): () => void;
|
|
32
|
+
announceWatch?(paths: readonly string[]): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
export declare class FileWatches {
|
|
35
|
+
private readonly live;
|
|
36
|
+
private readonly local;
|
|
37
|
+
private readonly remote;
|
|
38
|
+
constructor(local: FsWatchers, remote: RemoteFs);
|
|
39
|
+
private announce;
|
|
40
|
+
watch(paths: readonly string[], notify: (path: string) => void): Promise<() => void>;
|
|
41
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const CHANGES_BYTES: number;
|
|
2
|
+
export declare function changeHash(path: string): number;
|
|
3
|
+
export declare class FileChanges {
|
|
4
|
+
readonly sab: SharedArrayBuffer;
|
|
5
|
+
private readonly view;
|
|
6
|
+
constructor(sab?: SharedArrayBuffer);
|
|
7
|
+
dirtied(delta: number): void;
|
|
8
|
+
publish(...paths: string[]): void;
|
|
9
|
+
}
|
|
10
|
+
export declare class ChangeView {
|
|
11
|
+
private readonly view;
|
|
12
|
+
constructor(sab: SharedArrayBuffer);
|
|
13
|
+
now(): number;
|
|
14
|
+
clean(): boolean;
|
|
15
|
+
changedSince(seen: number, path: string): {
|
|
16
|
+
now: number;
|
|
17
|
+
changed: boolean;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type KernelFs } from './types.js';
|
|
2
|
+
export declare function followLinks(fs: KernelFs, path: string): Promise<string>;
|
|
3
|
+
export type UserCommandDir = (dir: string) => Promise<ReadonlySet<string> | undefined>;
|
|
4
|
+
export declare function withCommandDirs(fs: KernelFs, names: () => Promise<ReadonlySet<string>>, userDir?: UserCommandDir, owners?: boolean): KernelFs;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { Cred } from '../kernel/cred.js';
|
|
2
|
+
import { type AccessOptions, type Walked } from './access.js';
|
|
3
|
+
import { type FsStat, type KernelFs, type Perm } from './types.js';
|
|
4
|
+
export interface Denial {
|
|
5
|
+
pid: number;
|
|
6
|
+
uid: number;
|
|
7
|
+
op: string;
|
|
8
|
+
path: string;
|
|
9
|
+
errno: string;
|
|
10
|
+
tag?: string;
|
|
11
|
+
expected?: string;
|
|
12
|
+
actual?: string;
|
|
13
|
+
}
|
|
14
|
+
export type DenialHook = (denial: Denial) => void;
|
|
15
|
+
export declare const MAX_DENIAL_KEYS = 10000;
|
|
16
|
+
export declare class Dac {
|
|
17
|
+
readonly mode: 'report' | 'enforce';
|
|
18
|
+
private readonly hook;
|
|
19
|
+
private readonly log;
|
|
20
|
+
private readonly seen;
|
|
21
|
+
private suppressed;
|
|
22
|
+
tagOf: (pid: number) => string | undefined;
|
|
23
|
+
constructor(mode: 'report' | 'enforce', hook?: DenialHook, log?: (line: string) => void);
|
|
24
|
+
get enforcing(): boolean;
|
|
25
|
+
denied(given: Denial): void;
|
|
26
|
+
private note;
|
|
27
|
+
}
|
|
28
|
+
export declare class Created {
|
|
29
|
+
private readonly paths;
|
|
30
|
+
add(path: string): void;
|
|
31
|
+
take(path: string): boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface Guard {
|
|
34
|
+
fs: KernelFs;
|
|
35
|
+
cred: Readonly<Cred>;
|
|
36
|
+
pid: number;
|
|
37
|
+
dac: Dac;
|
|
38
|
+
tag?: string | undefined;
|
|
39
|
+
links?: number | undefined;
|
|
40
|
+
}
|
|
41
|
+
export declare function deny(g: Guard, op: string, path: string, errno?: string): void;
|
|
42
|
+
export declare const TTY_MODE = 400;
|
|
43
|
+
export declare function ttyOpenable(g: Guard | undefined, tty: {
|
|
44
|
+
name?: string;
|
|
45
|
+
owner?: Perm;
|
|
46
|
+
}): void;
|
|
47
|
+
export declare function need(g: Guard, op: string, path: string, want: number, options?: AccessOptions, shown?: string): Promise<Walked>;
|
|
48
|
+
export declare function inParent(g: Guard, op: string, path: string, old?: boolean | 'replaced'): Promise<void>;
|
|
49
|
+
export declare function makeIn(g: Guard, op: string, path: string): Promise<void>;
|
|
50
|
+
export declare function removable(g: Guard, op: string, path: string): Promise<void>;
|
|
51
|
+
export declare function renamable(g: Guard, from: string, to: string): Promise<void>;
|
|
52
|
+
export declare function linkable(g: Guard, from: string, to: string, follow: boolean): Promise<void>;
|
|
53
|
+
export declare function chmodMode(g: Guard, path: string, mode: number): Promise<number>;
|
|
54
|
+
export declare function heldChmodMode(g: Guard, path: string, st: FsStat, mode: number): number;
|
|
55
|
+
export declare function heldRetimable(g: Guard, path: string, st: FsStat, now: boolean): void;
|
|
56
|
+
export declare function retimable(g: Guard, op: string, path: string, now?: boolean): Promise<undefined>;
|
|
57
|
+
export declare function fileWritable(g: Guard, op: string, path: string): Promise<void>;
|
|
58
|
+
export declare function realIds(cred: Readonly<Cred>): Cred;
|
|
59
|
+
export declare function listable(g: Guard, op: string, path: string): Promise<void>;
|
|
60
|
+
export declare function searchable(g: Guard, op: string, path: string, follow: boolean): Promise<void>;
|
|
61
|
+
export declare function readable(g: Guard, op: string, path: string): Promise<void>;
|
|
62
|
+
export declare function writable(g: Guard, op: string, path: string): Promise<void>;
|
|
63
|
+
export declare function creatable(g: Guard, op: string, path: string): Promise<void>;
|
|
64
|
+
export declare function openable(g: Guard, op: string, path: string, want: number, create: boolean): Promise<void>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const SHM = "/dev/shm";
|
|
2
|
+
export declare function inShm(path: string): boolean;
|
|
3
|
+
export declare function inDevTree(path: string): boolean;
|
|
4
|
+
export declare function devRemoval(path: string, cred: Readonly<{
|
|
5
|
+
euid: number;
|
|
6
|
+
}> | undefined): 'EACCES' | 'EPERM' | 'EBUSY' | undefined;
|
|
7
|
+
export declare function devCreation(path: string, cred: Readonly<{
|
|
8
|
+
euid: number;
|
|
9
|
+
}> | undefined): 'EACCES' | 'EPERM' | 'EROFS' | undefined;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { DenialHook } from './dac.js';
|
|
2
|
+
import { type KernelFs } from './types.js';
|
|
3
|
+
export type IntegrityLookup = (path: string) => string | undefined | Promise<string | undefined>;
|
|
4
|
+
export interface IntegrityOptions {
|
|
5
|
+
readonly lookup: IntegrityLookup;
|
|
6
|
+
readonly unknown?: 'allow' | 'deny';
|
|
7
|
+
readonly sources?: readonly string[];
|
|
8
|
+
}
|
|
9
|
+
export declare const SOURCE_SUFFIXES: readonly string[];
|
|
10
|
+
export interface IntegrityCaller {
|
|
11
|
+
pid: number;
|
|
12
|
+
uid: number;
|
|
13
|
+
tag?: string | undefined;
|
|
14
|
+
}
|
|
15
|
+
export declare const KERNEL_CALLER: IntegrityCaller;
|
|
16
|
+
export declare function integrityOptions(options: IntegrityOptions | undefined): void;
|
|
17
|
+
export declare function integritySources(options: {
|
|
18
|
+
sources?: unknown;
|
|
19
|
+
} | undefined): readonly string[];
|
|
20
|
+
export declare function integrityUnknown(options: {
|
|
21
|
+
unknown?: string;
|
|
22
|
+
} | undefined): 'allow' | 'deny';
|
|
23
|
+
export declare function sha256(bytes: Uint8Array): Promise<string>;
|
|
24
|
+
export declare class Integrity {
|
|
25
|
+
private readonly prefixes;
|
|
26
|
+
private readonly root;
|
|
27
|
+
private readonly lookup;
|
|
28
|
+
private readonly unknown;
|
|
29
|
+
private readonly report;
|
|
30
|
+
private readonly unverified;
|
|
31
|
+
private readonly unread;
|
|
32
|
+
private readonly sources;
|
|
33
|
+
private readonly passed;
|
|
34
|
+
private generation;
|
|
35
|
+
constructor(prefixes: readonly string[], root: KernelFs, options: IntegrityOptions, report: DenialHook);
|
|
36
|
+
private real;
|
|
37
|
+
key(path: string, asked?: string): Promise<string | undefined>;
|
|
38
|
+
read(path: string, caller: IntegrityCaller, plain: () => Promise<Uint8Array>, asked?: string): Promise<Uint8Array>;
|
|
39
|
+
readKeyed(path: string, caller: IntegrityCaller, plain: () => Promise<Uint8Array>, asked?: string): Promise<{
|
|
40
|
+
bytes: Uint8Array;
|
|
41
|
+
key?: string;
|
|
42
|
+
}>;
|
|
43
|
+
get readsChecked(): boolean;
|
|
44
|
+
readSource(path: string, caller: IntegrityCaller, plain: () => Promise<Uint8Array>): Promise<Uint8Array>;
|
|
45
|
+
openSource(path: string, caller: IntegrityCaller, real?: string): Promise<void>;
|
|
46
|
+
private checked;
|
|
47
|
+
private pass;
|
|
48
|
+
private source;
|
|
49
|
+
private verify;
|
|
50
|
+
forget(path?: string): void;
|
|
51
|
+
private expected;
|
|
52
|
+
private say;
|
|
53
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export interface MetaEntry {
|
|
2
|
+
path: string;
|
|
3
|
+
mode?: number;
|
|
4
|
+
atimeMs?: number;
|
|
5
|
+
mtimeMs?: number;
|
|
6
|
+
mtimeFor?: number;
|
|
7
|
+
timesAt?: number;
|
|
8
|
+
timesBy?: string;
|
|
9
|
+
ctimeMs?: number;
|
|
10
|
+
ino?: number;
|
|
11
|
+
link?: string;
|
|
12
|
+
socket?: true;
|
|
13
|
+
dir?: string;
|
|
14
|
+
uid?: number;
|
|
15
|
+
gid?: number;
|
|
16
|
+
heir?: [number, number];
|
|
17
|
+
writes?: number;
|
|
18
|
+
epoch?: number;
|
|
19
|
+
}
|
|
20
|
+
export type MetaChange = (entry: MetaEntry | undefined) => MetaEntry | undefined;
|
|
21
|
+
export interface MetaStore {
|
|
22
|
+
get(paths: readonly string[]): Promise<Array<MetaEntry | undefined>>;
|
|
23
|
+
fresh?(paths: readonly string[]): Promise<Array<MetaEntry | undefined>>;
|
|
24
|
+
update(path: string, change: MetaChange): Promise<void>;
|
|
25
|
+
move(from: string, to: string, root: (entry: MetaEntry | undefined) => MetaEntry): Promise<void>;
|
|
26
|
+
remove(paths: readonly string[]): Promise<void>;
|
|
27
|
+
links(dir: string): Promise<MetaEntry[]>;
|
|
28
|
+
under(path: string): Promise<MetaEntry[]>;
|
|
29
|
+
all(): Promise<MetaEntry[]>;
|
|
30
|
+
absent?(path: string): boolean;
|
|
31
|
+
removeFile?(path: string): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
export declare const META_DB = "slicc-kernel";
|
|
34
|
+
export declare const META_VERSION = 1;
|
|
35
|
+
export declare const META_STORE = "entries";
|
|
36
|
+
export declare class MemoryMeta implements MetaStore {
|
|
37
|
+
private readonly entries;
|
|
38
|
+
get(paths: readonly string[]): Promise<Array<MetaEntry | undefined>>;
|
|
39
|
+
fresh(paths: readonly string[]): Promise<Array<MetaEntry | undefined>>;
|
|
40
|
+
update(path: string, change: MetaChange): Promise<void>;
|
|
41
|
+
private set;
|
|
42
|
+
move(from: string, to: string, root: (entry: MetaEntry | undefined) => MetaEntry): Promise<void>;
|
|
43
|
+
remove(paths: readonly string[]): Promise<void>;
|
|
44
|
+
absent(path: string): boolean;
|
|
45
|
+
links(dir: string): Promise<MetaEntry[]>;
|
|
46
|
+
under(path: string): Promise<MetaEntry[]>;
|
|
47
|
+
all(): Promise<MetaEntry[]>;
|
|
48
|
+
}
|
|
49
|
+
interface Invalidation {
|
|
50
|
+
paths?: readonly string[];
|
|
51
|
+
trees?: readonly string[];
|
|
52
|
+
}
|
|
53
|
+
export declare class IndexedDbMeta implements MetaStore {
|
|
54
|
+
private readonly db;
|
|
55
|
+
private readonly cache;
|
|
56
|
+
private readonly channel;
|
|
57
|
+
private generation;
|
|
58
|
+
private readonly listeners;
|
|
59
|
+
listen(listener: (change: Invalidation) => void): void;
|
|
60
|
+
constructor(db: IDBDatabase);
|
|
61
|
+
private drop;
|
|
62
|
+
private changed;
|
|
63
|
+
private transaction;
|
|
64
|
+
get(paths: readonly string[]): Promise<Array<MetaEntry | undefined>>;
|
|
65
|
+
fresh(paths: readonly string[]): Promise<Array<MetaEntry | undefined>>;
|
|
66
|
+
update(path: string, change: MetaChange): Promise<void>;
|
|
67
|
+
updateMany(changes: ReadonlyArray<{
|
|
68
|
+
path: string;
|
|
69
|
+
change: (entry: MetaEntry | undefined) => MetaEntry;
|
|
70
|
+
}>): Promise<void>;
|
|
71
|
+
close(): void;
|
|
72
|
+
move(from: string, to: string, root: (entry: MetaEntry | undefined) => MetaEntry): Promise<void>;
|
|
73
|
+
absent(path: string): boolean;
|
|
74
|
+
private removing;
|
|
75
|
+
private removeTimer;
|
|
76
|
+
remove(paths: readonly string[]): Promise<void>;
|
|
77
|
+
removeFile(path: string): Promise<void>;
|
|
78
|
+
private removeNow;
|
|
79
|
+
private settleRemoves;
|
|
80
|
+
private flushRemoves;
|
|
81
|
+
links(dir: string): Promise<MetaEntry[]>;
|
|
82
|
+
under(path: string): Promise<MetaEntry[]>;
|
|
83
|
+
all(): Promise<MetaEntry[]>;
|
|
84
|
+
}
|
|
85
|
+
export declare function openMeta(name: string, factory: IDBFactory): Promise<IndexedDbMeta>;
|
|
86
|
+
export {};
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { type MetaStore } from './meta.js';
|
|
2
|
+
import { type LockManagerLike, type RemoteListener } from './remote.js';
|
|
3
|
+
import { type FsStat, type KernelFs, type NewOwner, type OwnerChange, type Perm } from './types.js';
|
|
4
|
+
export type OpfsOp = 'lookup' | 'read' | 'write' | 'commit' | 'sidecar';
|
|
5
|
+
export declare function translate(err: unknown, path: string, op?: OpfsOp, mapped?: boolean): Error;
|
|
6
|
+
export interface WriteSession {
|
|
7
|
+
write(at: number, bytes: Uint8Array): Promise<void>;
|
|
8
|
+
truncate(size: number): Promise<void>;
|
|
9
|
+
close(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare function syncAccessHandles(scope?: object): boolean;
|
|
12
|
+
export declare const FILE_TIMES_MS = 100;
|
|
13
|
+
export declare class OpfsFs implements KernelFs {
|
|
14
|
+
private readonly root;
|
|
15
|
+
private readonly meta;
|
|
16
|
+
private readonly dirs;
|
|
17
|
+
private readonly checked;
|
|
18
|
+
private readonly channel;
|
|
19
|
+
private readonly remote;
|
|
20
|
+
private readonly ranged;
|
|
21
|
+
private owners;
|
|
22
|
+
private rejectLinks;
|
|
23
|
+
private readonly mounts;
|
|
24
|
+
private readonly locks;
|
|
25
|
+
private readonly lockPrefix;
|
|
26
|
+
constructor(root: FileSystemDirectoryHandle, meta?: MetaStore, channel?: string, options?: {
|
|
27
|
+
ranged?: boolean;
|
|
28
|
+
locks?: LockManagerLike | null;
|
|
29
|
+
});
|
|
30
|
+
private changed;
|
|
31
|
+
remoteChanges(listener: RemoteListener): () => void;
|
|
32
|
+
announceWatch(paths: readonly string[]): Promise<void>;
|
|
33
|
+
private committed;
|
|
34
|
+
private counted;
|
|
35
|
+
private stamp;
|
|
36
|
+
private epoch;
|
|
37
|
+
private entering;
|
|
38
|
+
private counting;
|
|
39
|
+
private recounting;
|
|
40
|
+
resolvePath(base: string, path: string): string;
|
|
41
|
+
trackOwners(): void;
|
|
42
|
+
crossings(mounted: (path: string) => boolean): void;
|
|
43
|
+
private crossing;
|
|
44
|
+
hasOwner(path: string): Promise<boolean>;
|
|
45
|
+
ancestry(path: string): Promise<Perm[]>;
|
|
46
|
+
private handedTo;
|
|
47
|
+
private ownerAt;
|
|
48
|
+
private owned;
|
|
49
|
+
private newFields;
|
|
50
|
+
private stampNew;
|
|
51
|
+
private guarded;
|
|
52
|
+
protect(prefixes: readonly string[], versions?: boolean): void;
|
|
53
|
+
unguarded(): KernelFs;
|
|
54
|
+
noLinks(): KernelFs;
|
|
55
|
+
private refuse;
|
|
56
|
+
private locked;
|
|
57
|
+
chown(path: string, change: OwnerChange): Promise<void>;
|
|
58
|
+
private movedOwner;
|
|
59
|
+
private walk;
|
|
60
|
+
private dir;
|
|
61
|
+
private current;
|
|
62
|
+
private forget;
|
|
63
|
+
private inDir;
|
|
64
|
+
private child;
|
|
65
|
+
private parent;
|
|
66
|
+
private handle;
|
|
67
|
+
private real;
|
|
68
|
+
private linkAlong;
|
|
69
|
+
private locate;
|
|
70
|
+
private physical;
|
|
71
|
+
private mode;
|
|
72
|
+
private readonly id;
|
|
73
|
+
private readonly dirTimes;
|
|
74
|
+
private readonly dirDirty;
|
|
75
|
+
private readonly fileTimes;
|
|
76
|
+
private written;
|
|
77
|
+
private scheduleFileTimes;
|
|
78
|
+
private flushFileTimes;
|
|
79
|
+
private timesOf;
|
|
80
|
+
private explicitWins;
|
|
81
|
+
private movePending;
|
|
82
|
+
private readonly flushing;
|
|
83
|
+
private touch;
|
|
84
|
+
private flushDirTimes;
|
|
85
|
+
private statOf;
|
|
86
|
+
private linkStat;
|
|
87
|
+
private describe;
|
|
88
|
+
private described;
|
|
89
|
+
stat(path: string): Promise<FsStat>;
|
|
90
|
+
lstat(path: string): Promise<FsStat>;
|
|
91
|
+
exists(path: string): Promise<boolean>;
|
|
92
|
+
private retrying;
|
|
93
|
+
private existing;
|
|
94
|
+
readFileBuffer(path: string): Promise<Uint8Array>;
|
|
95
|
+
readVersioned(path: string, cached?: boolean): Promise<{
|
|
96
|
+
bytes: Uint8Array;
|
|
97
|
+
version: string;
|
|
98
|
+
}>;
|
|
99
|
+
version(path: string, cached?: boolean): Promise<string>;
|
|
100
|
+
pread(path: string, offset: number, length: number): Promise<Uint8Array>;
|
|
101
|
+
pwrite(path: string, offset: number, bytes: Uint8Array): Promise<void>;
|
|
102
|
+
truncate(path: string, size: number): Promise<void>;
|
|
103
|
+
writeSession(path: string, truncate: boolean): Promise<WriteSession>;
|
|
104
|
+
readFile(path: string): Promise<string>;
|
|
105
|
+
private writeTarget;
|
|
106
|
+
private locateWrite;
|
|
107
|
+
private fileFor;
|
|
108
|
+
writeFile(path: string, content: Uint8Array | string, owner?: NewOwner): Promise<void>;
|
|
109
|
+
private listing;
|
|
110
|
+
readdir(path: string): Promise<string[]>;
|
|
111
|
+
readdirStat(path: string): Promise<Array<[string, FsStat | null]>>;
|
|
112
|
+
mkdir(path: string, options?: {
|
|
113
|
+
recursive?: boolean;
|
|
114
|
+
owner?: NewOwner;
|
|
115
|
+
}): Promise<void>;
|
|
116
|
+
private mkdirExcl;
|
|
117
|
+
createExclusive(path: string, owner?: NewOwner): Promise<void>;
|
|
118
|
+
private handleExists;
|
|
119
|
+
rm(path: string, options?: {
|
|
120
|
+
recursive?: boolean;
|
|
121
|
+
force?: boolean;
|
|
122
|
+
file?: boolean;
|
|
123
|
+
}): Promise<void>;
|
|
124
|
+
links(): boolean;
|
|
125
|
+
link(from: string, to: string, follow?: boolean): Promise<void>;
|
|
126
|
+
rename(from: string, to: string): Promise<void>;
|
|
127
|
+
private moveTo;
|
|
128
|
+
private modified;
|
|
129
|
+
private explicitTimes;
|
|
130
|
+
private restamp;
|
|
131
|
+
private place;
|
|
132
|
+
private copy;
|
|
133
|
+
symlink(target: string, path: string, owner?: NewOwner): Promise<void>;
|
|
134
|
+
realpath(path: string, follow: boolean): Promise<string>;
|
|
135
|
+
readlink(path: string): Promise<string>;
|
|
136
|
+
chmod(path: string, mode: number): Promise<void>;
|
|
137
|
+
utimes(path: string, atime: Date, mtime: Date): Promise<void>;
|
|
138
|
+
lutimes(path: string, atime: Date, mtime: Date): Promise<void>;
|
|
139
|
+
private setTimes;
|
|
140
|
+
reconcile(): Promise<number>;
|
|
141
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Cred } from '../kernel/cred.js';
|
|
2
|
+
import type { MetaEntry } from './meta.js';
|
|
3
|
+
import { type KernelFs, type NewOwner, type Owner } from './types.js';
|
|
4
|
+
export declare const ROOT_OWNER: Readonly<Owner>;
|
|
5
|
+
export declare function ownOf(entry: MetaEntry | undefined): Owner | undefined;
|
|
6
|
+
export declare function inherit(entries: ReadonlyArray<MetaEntry | undefined>): Owner;
|
|
7
|
+
export declare function chain(path: string): string[];
|
|
8
|
+
export declare function sameOwner(a: Owner, b: Owner): boolean;
|
|
9
|
+
export declare function ownerOf(cred: Readonly<Cred>, mode?: number): NewOwner;
|
|
10
|
+
export declare function inGroup(cred: Readonly<Cred>, gid: number): boolean;
|
|
11
|
+
export declare function mayChown(cred: Readonly<Cred>, current: Owner, uid: number | undefined, gid: number | undefined): boolean;
|
|
12
|
+
export declare function clearedSetId(mode: number): number;
|
|
13
|
+
export declare function chownAs(fs: KernelFs, cred: Readonly<Cred>, path: string, change: {
|
|
14
|
+
uid?: number;
|
|
15
|
+
gid?: number;
|
|
16
|
+
follow: boolean;
|
|
17
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export declare const PAGE: number;
|
|
2
|
+
export declare const READAHEAD: number;
|
|
3
|
+
export declare const CLEAN_LIMIT: number;
|
|
4
|
+
export declare const WRITEBACK: number;
|
|
5
|
+
export declare const RUN: number;
|
|
6
|
+
export interface Run {
|
|
7
|
+
offset: number;
|
|
8
|
+
bytes: Uint8Array;
|
|
9
|
+
}
|
|
10
|
+
export interface FlushPlan {
|
|
11
|
+
shrink?: number;
|
|
12
|
+
runs: Run[];
|
|
13
|
+
extend?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare class Pages {
|
|
16
|
+
length: number;
|
|
17
|
+
private stored;
|
|
18
|
+
private shrink;
|
|
19
|
+
private readonly pages;
|
|
20
|
+
private readonly dirty;
|
|
21
|
+
private readonly free;
|
|
22
|
+
private pinned;
|
|
23
|
+
constructor(size: number);
|
|
24
|
+
get dirtyBytes(): number;
|
|
25
|
+
get changed(): boolean;
|
|
26
|
+
missing(at: number, length: number): Array<[number, number]>;
|
|
27
|
+
partial(at: number, length: number): Array<[number, number]>;
|
|
28
|
+
fill(start: number, bytes: Uint8Array): void;
|
|
29
|
+
read(at: number, length: number): Uint8Array;
|
|
30
|
+
readInto(at: number, out: Uint8Array): number;
|
|
31
|
+
write(at: number, bytes: Uint8Array): void;
|
|
32
|
+
truncate(size: number): void;
|
|
33
|
+
plan(): FlushPlan;
|
|
34
|
+
flushed(): void;
|
|
35
|
+
pin(): void;
|
|
36
|
+
reset(size: number): void;
|
|
37
|
+
refresh(size: number): void;
|
|
38
|
+
private evict;
|
|
39
|
+
private take;
|
|
40
|
+
private drop;
|
|
41
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class PathMap<V> {
|
|
2
|
+
private readonly values;
|
|
3
|
+
private readonly children;
|
|
4
|
+
get size(): number;
|
|
5
|
+
has(path: string): boolean;
|
|
6
|
+
get(path: string): V | undefined;
|
|
7
|
+
keys(): IterableIterator<string>;
|
|
8
|
+
set(path: string, value: V): this;
|
|
9
|
+
delete(path: string): boolean;
|
|
10
|
+
subtree(root: string): string[];
|
|
11
|
+
entries(): IterableIterator<[string, V]>;
|
|
12
|
+
deleteTree(root: string): void;
|
|
13
|
+
clear(): void;
|
|
14
|
+
private link;
|
|
15
|
+
private prune;
|
|
16
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface LinkReader {
|
|
2
|
+
lstat(path: string): {
|
|
3
|
+
isSymbolicLink?: boolean;
|
|
4
|
+
};
|
|
5
|
+
readlink(path: string): string;
|
|
6
|
+
}
|
|
7
|
+
export declare function physicalPath(fs: LinkReader, path: string): string;
|
|
8
|
+
export interface AsyncLinkReader {
|
|
9
|
+
lstat(path: string): Promise<{
|
|
10
|
+
isSymbolicLink?: boolean;
|
|
11
|
+
}>;
|
|
12
|
+
readlink(path: string): Promise<string>;
|
|
13
|
+
}
|
|
14
|
+
export declare function physicalPathAsync(fs: AsyncLinkReader, path: string): Promise<string>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type IntegrityOptions } from './integrity.js';
|
|
2
|
+
import { type KernelFs } from './types.js';
|
|
3
|
+
export interface Protection {
|
|
4
|
+
readonly paths: readonly string[];
|
|
5
|
+
readonly writers?: readonly string[];
|
|
6
|
+
readonly integrity?: IntegrityOptions;
|
|
7
|
+
}
|
|
8
|
+
export interface ProtectInit {
|
|
9
|
+
paths: string[];
|
|
10
|
+
writers?: string[];
|
|
11
|
+
integrity?: {
|
|
12
|
+
unknown: 'allow' | 'deny';
|
|
13
|
+
sources?: readonly string[];
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export declare function protectInit(protection: ProtectInit | Protection): ProtectInit;
|
|
17
|
+
export declare function writerTags(protection: Protection | undefined): ReadonlySet<string>;
|
|
18
|
+
export declare function protectedPrefixes(paths: readonly string[]): string[];
|
|
19
|
+
export declare function isProtected(prefixes: readonly string[], path: string): boolean;
|
|
20
|
+
export declare function holdsProtected(prefixes: readonly string[], path: string): boolean;
|
|
21
|
+
export declare function namesOf(fs: KernelFs, path: string): Promise<string[]>;
|
|
22
|
+
export declare class ProtectedFs {
|
|
23
|
+
private readonly prefixes;
|
|
24
|
+
constructor(prefixes: readonly string[]);
|
|
25
|
+
check(fs: KernelFs, path: string, follow: boolean, whole?: boolean): Promise<void>;
|
|
26
|
+
view(fs: KernelFs): KernelFs;
|
|
27
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { ChangeView } from './changes.js';
|
|
2
|
+
type WatchStat = {
|
|
3
|
+
size: number;
|
|
4
|
+
version?: string | undefined;
|
|
5
|
+
ino?: number | undefined;
|
|
6
|
+
mtimeMs?: number | undefined;
|
|
7
|
+
nlink?: number | undefined;
|
|
8
|
+
};
|
|
9
|
+
export interface RangedWatch {
|
|
10
|
+
view: ChangeView;
|
|
11
|
+
ino?: number | undefined;
|
|
12
|
+
seen?: number | undefined;
|
|
13
|
+
stat(path: string): WatchStat;
|
|
14
|
+
real?: () => string | undefined;
|
|
15
|
+
linked?: boolean;
|
|
16
|
+
resolved?: string | null;
|
|
17
|
+
sig?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare const signatureOf: (st: WatchStat) => string;
|
|
20
|
+
export declare function linkedWatch<T extends RangedWatch>(watch: T, st: WatchStat): T;
|
|
21
|
+
export declare function watchedChange(watch: RangedWatch, seen: number, path: string): {
|
|
22
|
+
now: number;
|
|
23
|
+
changed: boolean;
|
|
24
|
+
};
|
|
25
|
+
export interface RangedIo {
|
|
26
|
+
pread(path: string, offset: number, length: number, version?: string): Uint8Array;
|
|
27
|
+
pwrite(path: string, offset: number, bytes: Uint8Array, transfer?: boolean): void;
|
|
28
|
+
truncate(path: string, size: number): void;
|
|
29
|
+
}
|
|
30
|
+
export interface AsyncRangedIo {
|
|
31
|
+
pread(path: string, offset: number, length: number, version?: string): Promise<Uint8Array>;
|
|
32
|
+
pwrite(path: string, offset: number, bytes: Uint8Array, transfer?: boolean): Promise<void>;
|
|
33
|
+
truncate(path: string, size: number): Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
export declare class RangedFile {
|
|
36
|
+
private readonly pages;
|
|
37
|
+
private readonly io;
|
|
38
|
+
private pinned;
|
|
39
|
+
private version;
|
|
40
|
+
private readonly watch;
|
|
41
|
+
private seen;
|
|
42
|
+
path: string;
|
|
43
|
+
constructor(io: RangedIo, path: string, size: number, version?: string, watch?: RangedWatch);
|
|
44
|
+
private fresh;
|
|
45
|
+
get changed(): boolean;
|
|
46
|
+
get pinnedVersion(): string | undefined;
|
|
47
|
+
forget(): void;
|
|
48
|
+
size(): number;
|
|
49
|
+
private fetch;
|
|
50
|
+
read(at: number, length: number): Uint8Array;
|
|
51
|
+
readInto(at: number, out: Uint8Array): number;
|
|
52
|
+
write(at: number, bytes: Uint8Array): void;
|
|
53
|
+
truncate(size: number): void;
|
|
54
|
+
flush(): void;
|
|
55
|
+
pin(): void;
|
|
56
|
+
reset(size: number): void;
|
|
57
|
+
}
|
|
58
|
+
export declare class AsyncRangedFile {
|
|
59
|
+
private readonly pages;
|
|
60
|
+
private readonly io;
|
|
61
|
+
private pinned;
|
|
62
|
+
private version;
|
|
63
|
+
path: string;
|
|
64
|
+
constructor(io: AsyncRangedIo, path: string, size: number, version?: string);
|
|
65
|
+
size(): number;
|
|
66
|
+
private fetch;
|
|
67
|
+
read(at: number, length: number): Promise<Uint8Array>;
|
|
68
|
+
write(at: number, bytes: Uint8Array): Promise<void>;
|
|
69
|
+
truncate(size: number): void;
|
|
70
|
+
flush(): Promise<void>;
|
|
71
|
+
pin(): Promise<void>;
|
|
72
|
+
}
|
|
73
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export interface RemoteChange {
|
|
2
|
+
paths: readonly string[];
|
|
3
|
+
trees: readonly string[];
|
|
4
|
+
}
|
|
5
|
+
export type RemoteListener = (change: RemoteChange) => void;
|
|
6
|
+
export declare const ANNOUNCE_WAIT_MS = 500;
|
|
7
|
+
export declare const PRUNE_EVERY_MS = 30000;
|
|
8
|
+
export interface LockManagerLike {
|
|
9
|
+
request(name: string, callback: () => Promise<void>): Promise<unknown>;
|
|
10
|
+
query(): Promise<{
|
|
11
|
+
held?: Array<{
|
|
12
|
+
name?: string;
|
|
13
|
+
}>;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
export declare function lockManager(): LockManagerLike | undefined;
|
|
17
|
+
export declare class RemoteWatch {
|
|
18
|
+
private readonly channel;
|
|
19
|
+
private readonly name;
|
|
20
|
+
private readonly tab;
|
|
21
|
+
private readonly peers;
|
|
22
|
+
private readonly others;
|
|
23
|
+
private readonly union;
|
|
24
|
+
private readonly listeners;
|
|
25
|
+
private readonly waiting;
|
|
26
|
+
private readonly locks;
|
|
27
|
+
private mine;
|
|
28
|
+
private seq;
|
|
29
|
+
private pruned;
|
|
30
|
+
constructor(name: string, options?: {
|
|
31
|
+
locks?: LockManagerLike | null;
|
|
32
|
+
});
|
|
33
|
+
private lockOf;
|
|
34
|
+
private receive;
|
|
35
|
+
private greeted;
|
|
36
|
+
private announced;
|
|
37
|
+
private acked;
|
|
38
|
+
private rebuild;
|
|
39
|
+
prune(): Promise<void>;
|
|
40
|
+
watched(): boolean;
|
|
41
|
+
wrote(path: string): void;
|
|
42
|
+
announce(paths: readonly string[]): Promise<void>;
|
|
43
|
+
emit(change: RemoteChange): void;
|
|
44
|
+
listen(listener: RemoteListener): () => void;
|
|
45
|
+
}
|