swarm-deploy 0.0.0 → 0.1.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/CHANGELOG.md +32 -0
- package/LICENSE.md +201 -0
- package/NOTICE.md +13 -0
- package/README.md +652 -0
- package/RELEASING.md +71 -0
- package/SECURITY.md +41 -0
- package/dist/abort.d.ts +16 -0
- package/dist/abort.js +52 -0
- package/dist/abort.js.map +1 -0
- package/dist/allowlist.d.ts +2 -0
- package/dist/allowlist.js +21 -0
- package/dist/allowlist.js.map +1 -0
- package/dist/bin/swarm-deploy.d.ts +2 -0
- package/dist/bin/swarm-deploy.js +41 -0
- package/dist/bin/swarm-deploy.js.map +1 -0
- package/dist/cli.d.ts +25 -0
- package/dist/cli.js +694 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +121 -0
- package/dist/client.js +285 -0
- package/dist/client.js.map +1 -0
- package/dist/direct-dht.d.ts +81 -0
- package/dist/direct-dht.js +254 -0
- package/dist/direct-dht.js.map +1 -0
- package/dist/error-code.d.ts +15 -0
- package/dist/error-code.js +30 -0
- package/dist/error-code.js.map +1 -0
- package/dist/errors.d.ts +27 -0
- package/dist/errors.js +33 -0
- package/dist/errors.js.map +1 -0
- package/dist/events-node.d.ts +2 -0
- package/dist/events-node.js +7 -0
- package/dist/events-node.js.map +1 -0
- package/dist/files.d.ts +47 -0
- package/dist/files.js +150 -0
- package/dist/files.js.map +1 -0
- package/dist/fs-node.d.ts +2 -0
- package/dist/fs-node.js +7 -0
- package/dist/fs-node.js.map +1 -0
- package/dist/identity.d.ts +7 -0
- package/dist/identity.js +50 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/os-node.d.ts +2 -0
- package/dist/os-node.js +7 -0
- package/dist/os-node.js.map +1 -0
- package/dist/path-node.d.ts +2 -0
- package/dist/path-node.js +7 -0
- package/dist/path-node.js.map +1 -0
- package/dist/process-node.d.ts +2 -0
- package/dist/process-node.js +7 -0
- package/dist/process-node.js.map +1 -0
- package/dist/server.d.ts +153 -0
- package/dist/server.js +576 -0
- package/dist/server.js.map +1 -0
- package/dist/storage/atomic-file.d.ts +15 -0
- package/dist/storage/atomic-file.js +172 -0
- package/dist/storage/atomic-file.js.map +1 -0
- package/dist/storage/commit-journal.d.ts +83 -0
- package/dist/storage/commit-journal.js +279 -0
- package/dist/storage/commit-journal.js.map +1 -0
- package/dist/storage/commit-store.d.ts +246 -0
- package/dist/storage/commit-store.js +1339 -0
- package/dist/storage/commit-store.js.map +1 -0
- package/dist/storage/layout.d.ts +16 -0
- package/dist/storage/layout.js +403 -0
- package/dist/storage/layout.js.map +1 -0
- package/dist/storage/recovery.d.ts +99 -0
- package/dist/storage/recovery.js +253 -0
- package/dist/storage/recovery.js.map +1 -0
- package/dist/storage/retention.d.ts +163 -0
- package/dist/storage/retention.js +465 -0
- package/dist/storage/retention.js.map +1 -0
- package/dist/storage/root-coordinator.d.ts +7 -0
- package/dist/storage/root-coordinator.js +27 -0
- package/dist/storage/root-coordinator.js.map +1 -0
- package/dist/storage/session-store.d.ts +2 -0
- package/dist/storage/session-store.js +7 -0
- package/dist/storage/session-store.js.map +1 -0
- package/dist/storage/tar-session-store.d.ts +116 -0
- package/dist/storage/tar-session-store.js +816 -0
- package/dist/storage/tar-session-store.js.map +1 -0
- package/dist/storage/types.d.ts +62 -0
- package/dist/storage/types.js +3 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/tar-protocol/controls.d.ts +48 -0
- package/dist/tar-protocol/controls.js +185 -0
- package/dist/tar-protocol/controls.js.map +1 -0
- package/dist/tar-protocol/direct-wire.d.ts +43 -0
- package/dist/tar-protocol/direct-wire.js +194 -0
- package/dist/tar-protocol/direct-wire.js.map +1 -0
- package/dist/tar-protocol/extract.d.ts +18 -0
- package/dist/tar-protocol/extract.js +124 -0
- package/dist/tar-protocol/extract.js.map +1 -0
- package/dist/tar-protocol/hash.d.ts +10 -0
- package/dist/tar-protocol/hash.js +44 -0
- package/dist/tar-protocol/hash.js.map +1 -0
- package/dist/tar-protocol/lifecycle.d.ts +13 -0
- package/dist/tar-protocol/lifecycle.js +90 -0
- package/dist/tar-protocol/lifecycle.js.map +1 -0
- package/dist/tar-protocol/manifest.d.ts +46 -0
- package/dist/tar-protocol/manifest.js +287 -0
- package/dist/tar-protocol/manifest.js.map +1 -0
- package/dist/tar-protocol/ustar.d.ts +22 -0
- package/dist/tar-protocol/ustar.js +87 -0
- package/dist/tar-protocol/ustar.js.map +1 -0
- package/dist/types.d.ts +58 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/validation.d.ts +4 -0
- package/dist/validation.js +26 -0
- package/dist/validation.js.map +1 -0
- package/package.json +101 -1
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DirectDhtClient = exports.DirectDhtServer = void 0;
|
|
7
|
+
const hyperdht_1 = __importDefault(require("hyperdht"));
|
|
8
|
+
const b4a_1 = __importDefault(require("b4a"));
|
|
9
|
+
const sodium_native_1 = __importDefault(require("sodium-native"));
|
|
10
|
+
const abort_js_1 = require("./abort.js");
|
|
11
|
+
const errors_js_1 = require("./errors.js");
|
|
12
|
+
const DEFAULT_CONNECT_TIMEOUT = 10_000;
|
|
13
|
+
const MAX_CONNECT_TIMEOUT = 5 * 60_000;
|
|
14
|
+
function copyBytes(value, length, label) {
|
|
15
|
+
if (!b4a_1.default.isBuffer(value) || value.byteLength !== length) {
|
|
16
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, `Expected ${length}-byte ${label}`);
|
|
17
|
+
}
|
|
18
|
+
return b4a_1.default.from(value);
|
|
19
|
+
}
|
|
20
|
+
function copyKeyPair(keyPair) {
|
|
21
|
+
if (!keyPair || typeof keyPair !== 'object') {
|
|
22
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, 'Expected seeded key pair');
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
publicKey: copyBytes(keyPair.publicKey, 32, 'public key'),
|
|
26
|
+
secretKey: copyBytes(keyPair.secretKey, 64, 'secret key')
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function assertTimeout(timeout) {
|
|
30
|
+
if (!Number.isFinite(timeout) || !Number.isInteger(timeout) || timeout <= 0) {
|
|
31
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, 'Connect timeout must be positive');
|
|
32
|
+
}
|
|
33
|
+
if (timeout > MAX_CONNECT_TIMEOUT) {
|
|
34
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, 'Connect timeout exceeds maximum');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function createNode(options) {
|
|
38
|
+
if (options.dht !== undefined && options.dhtFactory !== undefined) {
|
|
39
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, 'Specify either an injected DHT or a DHT factory');
|
|
40
|
+
}
|
|
41
|
+
if (options.dht !== undefined)
|
|
42
|
+
return { dht: options.dht, owned: false };
|
|
43
|
+
return {
|
|
44
|
+
dht: options.dhtFactory ? options.dhtFactory() : new hyperdht_1.default(),
|
|
45
|
+
owned: true
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function safeDestroy(socket, error) {
|
|
49
|
+
try {
|
|
50
|
+
socket.destroy(error);
|
|
51
|
+
}
|
|
52
|
+
catch { }
|
|
53
|
+
}
|
|
54
|
+
function transportError(code, message, cause = null) {
|
|
55
|
+
const error = new errors_js_1.SwarmDeployError(code, message, cause);
|
|
56
|
+
error.transport = true;
|
|
57
|
+
return error;
|
|
58
|
+
}
|
|
59
|
+
class DirectDhtServer {
|
|
60
|
+
publicKey;
|
|
61
|
+
keyPair;
|
|
62
|
+
dht;
|
|
63
|
+
ownedDht;
|
|
64
|
+
server;
|
|
65
|
+
allowedClientPublicKeys;
|
|
66
|
+
onConnection;
|
|
67
|
+
sockets = new Set();
|
|
68
|
+
listenPromise = null;
|
|
69
|
+
closePromise = null;
|
|
70
|
+
closed = false;
|
|
71
|
+
constructor(options) {
|
|
72
|
+
if (!options || typeof options !== 'object') {
|
|
73
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, 'Invalid direct DHT server options');
|
|
74
|
+
}
|
|
75
|
+
this.keyPair = copyKeyPair(options.keyPair);
|
|
76
|
+
this.publicKey = b4a_1.default.from(this.keyPair.publicKey);
|
|
77
|
+
if (!Array.isArray(options.allowedClientPublicKeys)) {
|
|
78
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, 'Expected client public key allowlist');
|
|
79
|
+
}
|
|
80
|
+
this.allowedClientPublicKeys = options.allowedClientPublicKeys.map((key) => copyBytes(key, 32, 'allowed client public key'));
|
|
81
|
+
if (options.onConnection !== undefined && typeof options.onConnection !== 'function') {
|
|
82
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, 'Invalid connection callback');
|
|
83
|
+
}
|
|
84
|
+
this.onConnection = options.onConnection;
|
|
85
|
+
const created = createNode(options);
|
|
86
|
+
this.dht = created.dht;
|
|
87
|
+
this.ownedDht = created.owned;
|
|
88
|
+
this.dht.on('error', () => { });
|
|
89
|
+
this.server = this.dht.createServer({
|
|
90
|
+
firewall: (remotePublicKey) => this.firewall(remotePublicKey)
|
|
91
|
+
}, (socket) => this.accept(socket));
|
|
92
|
+
this.server.on('error', () => { });
|
|
93
|
+
}
|
|
94
|
+
firewall(remotePublicKey) {
|
|
95
|
+
return !this.isAllowed(remotePublicKey);
|
|
96
|
+
}
|
|
97
|
+
isAllowed(remotePublicKey) {
|
|
98
|
+
if (!b4a_1.default.isBuffer(remotePublicKey) || remotePublicKey.byteLength !== 32)
|
|
99
|
+
return false;
|
|
100
|
+
let accepted = false;
|
|
101
|
+
for (const allowed of this.allowedClientPublicKeys) {
|
|
102
|
+
accepted = sodium_native_1.default.sodium_memcmp(remotePublicKey, allowed) || accepted;
|
|
103
|
+
}
|
|
104
|
+
return accepted;
|
|
105
|
+
}
|
|
106
|
+
accept(socket) {
|
|
107
|
+
if (this.closed || !this.isAllowed(socket.remotePublicKey)) {
|
|
108
|
+
safeDestroy(socket);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
socket.on('error', () => { });
|
|
112
|
+
this.sockets.add(socket);
|
|
113
|
+
socket.once('close', () => this.sockets.delete(socket));
|
|
114
|
+
if (!this.onConnection)
|
|
115
|
+
return;
|
|
116
|
+
try {
|
|
117
|
+
this.onConnection(socket);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
safeDestroy(socket, error);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
listen() {
|
|
124
|
+
if (this.closed) {
|
|
125
|
+
return Promise.reject(new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, 'Direct DHT server is closed'));
|
|
126
|
+
}
|
|
127
|
+
if (!this.listenPromise) {
|
|
128
|
+
this.listenPromise = this.server.listen(this.keyPair).then(() => this);
|
|
129
|
+
}
|
|
130
|
+
return this.listenPromise;
|
|
131
|
+
}
|
|
132
|
+
close() {
|
|
133
|
+
if (!this.closePromise)
|
|
134
|
+
this.closePromise = this.closeAll();
|
|
135
|
+
return this.closePromise;
|
|
136
|
+
}
|
|
137
|
+
async closeAll() {
|
|
138
|
+
this.closed = true;
|
|
139
|
+
for (const socket of this.sockets)
|
|
140
|
+
safeDestroy(socket);
|
|
141
|
+
this.sockets.clear();
|
|
142
|
+
let failure = null;
|
|
143
|
+
try {
|
|
144
|
+
await this.server.close();
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
failure = error;
|
|
148
|
+
}
|
|
149
|
+
if (this.ownedDht) {
|
|
150
|
+
try {
|
|
151
|
+
await this.dht.destroy();
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
if (failure === null)
|
|
155
|
+
failure = error;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (failure !== null)
|
|
159
|
+
throw failure;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
exports.DirectDhtServer = DirectDhtServer;
|
|
163
|
+
class DirectDhtClient {
|
|
164
|
+
publicKey;
|
|
165
|
+
keyPair;
|
|
166
|
+
dht;
|
|
167
|
+
ownedDht;
|
|
168
|
+
connectTimeout;
|
|
169
|
+
sockets = new Set();
|
|
170
|
+
closePromise = null;
|
|
171
|
+
closed = false;
|
|
172
|
+
constructor(options) {
|
|
173
|
+
if (!options || typeof options !== 'object') {
|
|
174
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, 'Invalid direct DHT client options');
|
|
175
|
+
}
|
|
176
|
+
this.keyPair = copyKeyPair(options.keyPair);
|
|
177
|
+
this.publicKey = b4a_1.default.from(this.keyPair.publicKey);
|
|
178
|
+
this.connectTimeout = options.connectTimeout ?? DEFAULT_CONNECT_TIMEOUT;
|
|
179
|
+
assertTimeout(this.connectTimeout);
|
|
180
|
+
const created = createNode(options);
|
|
181
|
+
this.dht = created.dht;
|
|
182
|
+
this.ownedDht = created.owned;
|
|
183
|
+
this.dht.on('error', () => { });
|
|
184
|
+
}
|
|
185
|
+
async connect(serverPublicKey, options = {}) {
|
|
186
|
+
if (this.closed) {
|
|
187
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, 'Direct DHT client is closed');
|
|
188
|
+
}
|
|
189
|
+
(0, abort_js_1.throwIfAborted)(options.signal);
|
|
190
|
+
const expectedServerPublicKey = copyBytes(serverPublicKey, 32, 'server public key');
|
|
191
|
+
const timeout = options.timeout ?? this.connectTimeout;
|
|
192
|
+
assertTimeout(timeout);
|
|
193
|
+
const socket = this.dht.connect(expectedServerPublicKey, { keyPair: this.keyPair });
|
|
194
|
+
let socketError = null;
|
|
195
|
+
socket.on('error', (error) => {
|
|
196
|
+
if (socketError === null)
|
|
197
|
+
socketError = error;
|
|
198
|
+
});
|
|
199
|
+
this.sockets.add(socket);
|
|
200
|
+
socket.once('close', () => this.sockets.delete(socket));
|
|
201
|
+
try {
|
|
202
|
+
const opened = await this.awaitOpened(socket.opened, timeout, options.signal);
|
|
203
|
+
if (opened !== true) {
|
|
204
|
+
throw (socketError ||
|
|
205
|
+
transportError(errors_js_1.ERRORS.SERVER_KEY_MISMATCH, 'Unable to authenticate expected direct DHT server'));
|
|
206
|
+
}
|
|
207
|
+
const remotePublicKey = socket.remotePublicKey;
|
|
208
|
+
if (!b4a_1.default.isBuffer(remotePublicKey) ||
|
|
209
|
+
remotePublicKey.byteLength !== 32 ||
|
|
210
|
+
!sodium_native_1.default.sodium_memcmp(remotePublicKey, expectedServerPublicKey)) {
|
|
211
|
+
throw transportError(errors_js_1.ERRORS.SERVER_KEY_MISMATCH, 'Connected direct DHT server key did not match commitment');
|
|
212
|
+
}
|
|
213
|
+
return socket;
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
safeDestroy(socket, error);
|
|
217
|
+
throw error;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
awaitOpened(opened, timeout, signal) {
|
|
221
|
+
return new Promise((resolve, reject) => {
|
|
222
|
+
let settled = false;
|
|
223
|
+
let removeAbort = () => { };
|
|
224
|
+
const timer = setTimeout(() => {
|
|
225
|
+
finish(reject, transportError(errors_js_1.ERRORS.CONNECT_TIMEOUT, 'Direct DHT connection timed out'));
|
|
226
|
+
}, timeout);
|
|
227
|
+
const finish = (callback, value) => {
|
|
228
|
+
if (settled)
|
|
229
|
+
return;
|
|
230
|
+
settled = true;
|
|
231
|
+
clearTimeout(timer);
|
|
232
|
+
removeAbort();
|
|
233
|
+
callback(value);
|
|
234
|
+
};
|
|
235
|
+
removeAbort = (0, abort_js_1.onAbort)(signal, () => finish(reject, (0, abort_js_1.abortError)()));
|
|
236
|
+
Promise.resolve(opened).then((value) => finish(resolve, value), (error) => finish(reject, error));
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
close() {
|
|
240
|
+
if (!this.closePromise)
|
|
241
|
+
this.closePromise = this.closeAll();
|
|
242
|
+
return this.closePromise;
|
|
243
|
+
}
|
|
244
|
+
async closeAll() {
|
|
245
|
+
this.closed = true;
|
|
246
|
+
for (const socket of this.sockets)
|
|
247
|
+
safeDestroy(socket);
|
|
248
|
+
this.sockets.clear();
|
|
249
|
+
if (this.ownedDht)
|
|
250
|
+
await this.dht.destroy();
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
exports.DirectDhtClient = DirectDhtClient;
|
|
254
|
+
//# sourceMappingURL=direct-dht.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct-dht.js","sourceRoot":"","sources":["../src/direct-dht.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single source for reading the `code` of an unknown thrown value.
|
|
3
|
+
*
|
|
4
|
+
* Every caller previously kept a private copy of these helpers. The one module
|
|
5
|
+
* that hand-inlined the cast instead dereferenced a null `cause`, so the shared
|
|
6
|
+
* implementation is deliberately null-safe at every step.
|
|
7
|
+
*/
|
|
8
|
+
export declare function errorCode(error: unknown): string | null;
|
|
9
|
+
/**
|
|
10
|
+
* True when `error`, or the cause it wraps, reports ENOENT.
|
|
11
|
+
*
|
|
12
|
+
* `SwarmDeployError` always defines an own `cause` property, so it is present
|
|
13
|
+
* even when null; `errorCode` absorbs that case rather than dereferencing it.
|
|
14
|
+
*/
|
|
15
|
+
export declare function isMissing(error: unknown): boolean;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.errorCode = errorCode;
|
|
4
|
+
exports.isMissing = isMissing;
|
|
5
|
+
/**
|
|
6
|
+
* Single source for reading the `code` of an unknown thrown value.
|
|
7
|
+
*
|
|
8
|
+
* Every caller previously kept a private copy of these helpers. The one module
|
|
9
|
+
* that hand-inlined the cast instead dereferenced a null `cause`, so the shared
|
|
10
|
+
* implementation is deliberately null-safe at every step.
|
|
11
|
+
*/
|
|
12
|
+
function errorCode(error) {
|
|
13
|
+
if (typeof error !== 'object' || error === null || !('code' in error))
|
|
14
|
+
return null;
|
|
15
|
+
return typeof error.code === 'string' ? error.code : null;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* True when `error`, or the cause it wraps, reports ENOENT.
|
|
19
|
+
*
|
|
20
|
+
* `SwarmDeployError` always defines an own `cause` property, so it is present
|
|
21
|
+
* even when null; `errorCode` absorbs that case rather than dereferencing it.
|
|
22
|
+
*/
|
|
23
|
+
function isMissing(error) {
|
|
24
|
+
if (errorCode(error) === 'ENOENT')
|
|
25
|
+
return true;
|
|
26
|
+
if (typeof error !== 'object' || error === null || !('cause' in error))
|
|
27
|
+
return false;
|
|
28
|
+
return errorCode(error.cause) === 'ENOENT';
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=error-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-code.js","sourceRoot":"","sources":["../src/error-code.ts"],"names":[],"mappings":";;;;AAAA;;;;;;GAMG;AACH,mBAA0B,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAClF,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;AAC3D,CAAC;AAED;;;;;GAKG;AACH,mBAA0B,KAAc;IACtC,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACpF,OAAO,SAAS,CAAE,KAA4B,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAA;AACpE,CAAC"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare const ERRORS: {
|
|
2
|
+
readonly AUTH_REJECTED: 'AUTH_REJECTED';
|
|
3
|
+
readonly SERVER_KEY_MISMATCH: 'SERVER_KEY_MISMATCH';
|
|
4
|
+
readonly PROTOCOL_INVALID: 'PROTOCOL_INVALID';
|
|
5
|
+
readonly INVALID_FILENAME: 'INVALID_FILENAME';
|
|
6
|
+
readonly INVALID_SEED: 'INVALID_SEED';
|
|
7
|
+
readonly INVALID_PUBLIC_KEY: 'INVALID_PUBLIC_KEY';
|
|
8
|
+
readonly FILE_TOO_LARGE: 'FILE_TOO_LARGE';
|
|
9
|
+
readonly STAGING_LIMIT: 'STAGING_LIMIT';
|
|
10
|
+
readonly ACTIVE_UPLOAD_LIMIT: 'ACTIVE_UPLOAD_LIMIT';
|
|
11
|
+
readonly DISK_RESERVE: 'DISK_RESERVE';
|
|
12
|
+
readonly FILE_EXISTS: 'FILE_EXISTS';
|
|
13
|
+
readonly FILE_BUSY: 'FILE_BUSY';
|
|
14
|
+
readonly CHECKSUM_MISMATCH: 'CHECKSUM_MISMATCH';
|
|
15
|
+
readonly CONNECT_TIMEOUT: 'CONNECT_TIMEOUT';
|
|
16
|
+
readonly UPLOAD_IDLE_TIMEOUT: 'UPLOAD_IDLE_TIMEOUT';
|
|
17
|
+
readonly ABORTED: 'ABORTED';
|
|
18
|
+
readonly COMMIT_FAILED: 'COMMIT_FAILED';
|
|
19
|
+
readonly CLEANUP_FAILED: 'CLEANUP_FAILED';
|
|
20
|
+
};
|
|
21
|
+
export type ErrorCode = (typeof ERRORS)[keyof typeof ERRORS];
|
|
22
|
+
export declare class SwarmDeployError extends Error {
|
|
23
|
+
code: ErrorCode | string;
|
|
24
|
+
cause: unknown | null;
|
|
25
|
+
transport?: boolean;
|
|
26
|
+
constructor(code: ErrorCode | string, message: string, cause?: unknown | null);
|
|
27
|
+
}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SwarmDeployError = exports.ERRORS = void 0;
|
|
4
|
+
exports.ERRORS = {
|
|
5
|
+
AUTH_REJECTED: 'AUTH_REJECTED',
|
|
6
|
+
SERVER_KEY_MISMATCH: 'SERVER_KEY_MISMATCH',
|
|
7
|
+
PROTOCOL_INVALID: 'PROTOCOL_INVALID',
|
|
8
|
+
INVALID_FILENAME: 'INVALID_FILENAME',
|
|
9
|
+
INVALID_SEED: 'INVALID_SEED',
|
|
10
|
+
INVALID_PUBLIC_KEY: 'INVALID_PUBLIC_KEY',
|
|
11
|
+
FILE_TOO_LARGE: 'FILE_TOO_LARGE',
|
|
12
|
+
STAGING_LIMIT: 'STAGING_LIMIT',
|
|
13
|
+
ACTIVE_UPLOAD_LIMIT: 'ACTIVE_UPLOAD_LIMIT',
|
|
14
|
+
DISK_RESERVE: 'DISK_RESERVE',
|
|
15
|
+
FILE_EXISTS: 'FILE_EXISTS',
|
|
16
|
+
FILE_BUSY: 'FILE_BUSY',
|
|
17
|
+
CHECKSUM_MISMATCH: 'CHECKSUM_MISMATCH',
|
|
18
|
+
CONNECT_TIMEOUT: 'CONNECT_TIMEOUT',
|
|
19
|
+
UPLOAD_IDLE_TIMEOUT: 'UPLOAD_IDLE_TIMEOUT',
|
|
20
|
+
ABORTED: 'ABORTED',
|
|
21
|
+
COMMIT_FAILED: 'COMMIT_FAILED',
|
|
22
|
+
CLEANUP_FAILED: 'CLEANUP_FAILED'
|
|
23
|
+
};
|
|
24
|
+
class SwarmDeployError extends Error {
|
|
25
|
+
constructor(code, message, cause = null) {
|
|
26
|
+
super(message);
|
|
27
|
+
this.name = 'SwarmDeployError';
|
|
28
|
+
this.code = code;
|
|
29
|
+
this.cause = cause;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.SwarmDeployError = SwarmDeployError;
|
|
33
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IACpB,aAAa,EAAE,eAAe;IAC9B,mBAAmB,EAAE,qBAAqB;IAC1C,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,YAAY,EAAE,cAAc;IAC5B,kBAAkB,EAAE,oBAAoB;IACxC,cAAc,EAAE,gBAAgB;IAChC,aAAa,EAAE,eAAe;IAC9B,mBAAmB,EAAE,qBAAqB;IAC1C,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,mBAAmB,EAAE,qBAAqB;IAC1C,OAAO,EAAE,SAAS;IAClB,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;CACxB,CAAA;AAIV,sBAA8B,SAAQ,KAAK;IAOzC,YAAY,IAAwB,EAAE,OAAe,EAAE,KAAK,GAAmB,IAAI;QACjF,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAA;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
const node_events_1 = __importDefault(require("node:events"));
|
|
6
|
+
module.exports = node_events_1.default;
|
|
7
|
+
//# sourceMappingURL=events-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-node.js","sourceRoot":"","sources":["../src/events-node.ts"],"names":[],"mappings":";;;;AAAA,8DAAgC;AAEhC,iBAAS,qBAAM,CAAA"}
|
package/dist/files.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/** Reserved top-level namespace for server-managed historical artifacts. */
|
|
2
|
+
export declare const HISTORY_NAME_PREFIX = "history-";
|
|
3
|
+
export interface SelectUploadPathsOptions {
|
|
4
|
+
signal?: {
|
|
5
|
+
readonly aborted: boolean;
|
|
6
|
+
addEventListener(event: 'abort', callback: () => void, options?: {
|
|
7
|
+
once?: boolean;
|
|
8
|
+
}): void;
|
|
9
|
+
removeEventListener(event: 'abort', callback: () => void): void;
|
|
10
|
+
} | null;
|
|
11
|
+
}
|
|
12
|
+
export declare function validateBasename(name: string): string;
|
|
13
|
+
export declare function isReservedHistoryName(name: unknown): boolean;
|
|
14
|
+
/** The unique top-level path preserving the inode a replacement superseded. */
|
|
15
|
+
export declare function historyName(oldTransferId: string): string;
|
|
16
|
+
/**
|
|
17
|
+
* Canonicalizes the opt-in mutable-name policy. Values are exact upload names;
|
|
18
|
+
* the reserved history namespace and duplicate entries are always rejected.
|
|
19
|
+
*/
|
|
20
|
+
export declare function validateReplaceNames(values?: Iterable<string>): Set<string>;
|
|
21
|
+
export type SkippedUploadReason = 'symlink' | 'directory' | 'not-regular-file' | 'invalid-filename' | 'reserved-history';
|
|
22
|
+
export interface SelectedUploadPath {
|
|
23
|
+
kind: 'selected';
|
|
24
|
+
name: string;
|
|
25
|
+
path: string;
|
|
26
|
+
}
|
|
27
|
+
export interface SkippedUploadPath {
|
|
28
|
+
kind: 'skipped';
|
|
29
|
+
name: string;
|
|
30
|
+
path: string;
|
|
31
|
+
reason: SkippedUploadReason;
|
|
32
|
+
}
|
|
33
|
+
export interface FailedUploadPath {
|
|
34
|
+
kind: 'failed';
|
|
35
|
+
name: string;
|
|
36
|
+
path: string;
|
|
37
|
+
reason: 'unreadable';
|
|
38
|
+
code: string | null;
|
|
39
|
+
}
|
|
40
|
+
export type UploadPathEntry = SelectedUploadPath | SkippedUploadPath | FailedUploadPath;
|
|
41
|
+
export interface UploadPathSelection {
|
|
42
|
+
paths: string[];
|
|
43
|
+
skipped: Array<Omit<SkippedUploadPath, 'kind'>>;
|
|
44
|
+
failed: Array<Omit<FailedUploadPath, 'kind'>>;
|
|
45
|
+
entries: UploadPathEntry[];
|
|
46
|
+
}
|
|
47
|
+
export declare function selectUploadPaths(inputPath: string, { signal }?: SelectUploadPathsOptions): Promise<UploadPathSelection>;
|
package/dist/files.js
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.HISTORY_NAME_PREFIX = void 0;
|
|
7
|
+
exports.validateBasename = validateBasename;
|
|
8
|
+
exports.isReservedHistoryName = isReservedHistoryName;
|
|
9
|
+
exports.historyName = historyName;
|
|
10
|
+
exports.validateReplaceNames = validateReplaceNames;
|
|
11
|
+
exports.selectUploadPaths = selectUploadPaths;
|
|
12
|
+
const b4a_1 = __importDefault(require("b4a"));
|
|
13
|
+
const error_code_js_1 = require("./error-code.js");
|
|
14
|
+
const _fs_1 = __importDefault(require("#fs"));
|
|
15
|
+
const _path_1 = __importDefault(require("#path"));
|
|
16
|
+
const abort_js_1 = require("./abort.js");
|
|
17
|
+
const errors_js_1 = require("./errors.js");
|
|
18
|
+
const SAFE_NAME = /^[A-Za-z0-9][A-Za-z0-9._-]{0,199}$/;
|
|
19
|
+
const TRANSFER_ID_HEX = /^[0-9a-f]{64}$/;
|
|
20
|
+
/** Reserved top-level namespace for server-managed historical artifacts. */
|
|
21
|
+
exports.HISTORY_NAME_PREFIX = 'history-';
|
|
22
|
+
function validateBasename(name) {
|
|
23
|
+
if (typeof name !== 'string' || !SAFE_NAME.test(name) || b4a_1.default.from(name).byteLength > 100) {
|
|
24
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.INVALID_FILENAME, 'Invalid filename');
|
|
25
|
+
}
|
|
26
|
+
return name;
|
|
27
|
+
}
|
|
28
|
+
function isReservedHistoryName(name) {
|
|
29
|
+
return typeof name === 'string' && name.startsWith(exports.HISTORY_NAME_PREFIX);
|
|
30
|
+
}
|
|
31
|
+
/** The unique top-level path preserving the inode a replacement superseded. */
|
|
32
|
+
function historyName(oldTransferId) {
|
|
33
|
+
if (typeof oldTransferId !== 'string' || !TRANSFER_ID_HEX.test(oldTransferId)) {
|
|
34
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, 'Invalid history transfer ID');
|
|
35
|
+
}
|
|
36
|
+
return `${exports.HISTORY_NAME_PREFIX}${oldTransferId}`;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Canonicalizes the opt-in mutable-name policy. Values are exact upload names;
|
|
40
|
+
* the reserved history namespace and duplicate entries are always rejected.
|
|
41
|
+
*/
|
|
42
|
+
function validateReplaceNames(values) {
|
|
43
|
+
if (values === undefined || values === null)
|
|
44
|
+
return new Set();
|
|
45
|
+
if (typeof values === 'string' ||
|
|
46
|
+
typeof values !== 'object' ||
|
|
47
|
+
typeof values[Symbol.iterator] !== 'function') {
|
|
48
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, 'Invalid replacement names');
|
|
49
|
+
}
|
|
50
|
+
const names = new Set();
|
|
51
|
+
for (const value of values) {
|
|
52
|
+
if (typeof value !== 'string') {
|
|
53
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.INVALID_FILENAME, 'Invalid filename');
|
|
54
|
+
}
|
|
55
|
+
validateBasename(value);
|
|
56
|
+
if (isReservedHistoryName(value)) {
|
|
57
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.INVALID_FILENAME, 'Reserved replacement name');
|
|
58
|
+
}
|
|
59
|
+
if (names.has(value)) {
|
|
60
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, 'Duplicate replacement name');
|
|
61
|
+
}
|
|
62
|
+
names.add(value);
|
|
63
|
+
}
|
|
64
|
+
return names;
|
|
65
|
+
}
|
|
66
|
+
function classifyEntry(entryPath, stat) {
|
|
67
|
+
if (stat.isSymbolicLink()) {
|
|
68
|
+
return { kind: 'skipped', reason: 'symlink' };
|
|
69
|
+
}
|
|
70
|
+
if (stat.isDirectory()) {
|
|
71
|
+
return { kind: 'skipped', reason: 'directory' };
|
|
72
|
+
}
|
|
73
|
+
if (!stat.isFile()) {
|
|
74
|
+
return { kind: 'skipped', reason: 'not-regular-file' };
|
|
75
|
+
}
|
|
76
|
+
const name = _path_1.default.basename(entryPath);
|
|
77
|
+
try {
|
|
78
|
+
validateBasename(name);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return { kind: 'skipped', reason: 'invalid-filename' };
|
|
82
|
+
}
|
|
83
|
+
if (isReservedHistoryName(name)) {
|
|
84
|
+
return { kind: 'skipped', reason: 'reserved-history' };
|
|
85
|
+
}
|
|
86
|
+
return { kind: 'selected', name };
|
|
87
|
+
}
|
|
88
|
+
async function selectUploadPaths(inputPath, { signal = null } = {}) {
|
|
89
|
+
(0, abort_js_1.throwIfAborted)(signal);
|
|
90
|
+
const rootStat = await _fs_1.default.promises.lstat(inputPath);
|
|
91
|
+
(0, abort_js_1.throwIfAborted)(signal);
|
|
92
|
+
if (rootStat.isSymbolicLink()) {
|
|
93
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.INVALID_FILENAME, 'Symlinks are not supported');
|
|
94
|
+
}
|
|
95
|
+
if (rootStat.isFile()) {
|
|
96
|
+
const name = validateBasename(_path_1.default.basename(inputPath));
|
|
97
|
+
if (isReservedHistoryName(name)) {
|
|
98
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.INVALID_FILENAME, 'Reserved artifact name');
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
paths: [inputPath],
|
|
102
|
+
skipped: [],
|
|
103
|
+
failed: [],
|
|
104
|
+
entries: [{ kind: 'selected', name, path: inputPath }]
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
if (!rootStat.isDirectory()) {
|
|
108
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.INVALID_FILENAME, 'Path must be a regular file or directory');
|
|
109
|
+
}
|
|
110
|
+
const names = await _fs_1.default.promises.readdir(inputPath);
|
|
111
|
+
names.sort();
|
|
112
|
+
const paths = [];
|
|
113
|
+
const skipped = [];
|
|
114
|
+
const failed = [];
|
|
115
|
+
const entries = [];
|
|
116
|
+
for (const name of names) {
|
|
117
|
+
(0, abort_js_1.throwIfAborted)(signal);
|
|
118
|
+
const entryPath = _path_1.default.join(inputPath, name);
|
|
119
|
+
let entryStat;
|
|
120
|
+
try {
|
|
121
|
+
entryStat = await _fs_1.default.promises.lstat(entryPath);
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
(0, abort_js_1.throwIfAborted)(signal);
|
|
125
|
+
const entry = {
|
|
126
|
+
name,
|
|
127
|
+
path: entryPath,
|
|
128
|
+
reason: 'unreadable',
|
|
129
|
+
code: (0, error_code_js_1.errorCode)(err)
|
|
130
|
+
};
|
|
131
|
+
failed.push(entry);
|
|
132
|
+
entries.push({ kind: 'failed', ...entry });
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
const classified = classifyEntry(entryPath, entryStat);
|
|
136
|
+
if (classified.kind === 'selected') {
|
|
137
|
+
paths.push(entryPath);
|
|
138
|
+
entries.push({ kind: 'selected', name, path: entryPath });
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
skipped.push({
|
|
142
|
+
name,
|
|
143
|
+
path: entryPath,
|
|
144
|
+
reason: classified.reason
|
|
145
|
+
});
|
|
146
|
+
entries.push({ kind: 'skipped', name, path: entryPath, reason: classified.reason });
|
|
147
|
+
}
|
|
148
|
+
return { paths, skipped, failed, entries };
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"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"}
|
package/dist/fs-node.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
6
|
+
module.exports = node_fs_1.default;
|
|
7
|
+
//# sourceMappingURL=fs-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-node.js","sourceRoot":"","sources":["../src/fs-node.ts"],"names":[],"mappings":";;;;AAAA,sDAAwB;AAExB,iBAAS,iBAAE,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { BinaryInput, KeyPair, PublicKey, Seed, SeedInput } from './types.js';
|
|
2
|
+
export type { BinaryInput, KeyPair };
|
|
3
|
+
export declare function parseSeed(value: string): Seed;
|
|
4
|
+
export declare function parsePublicKey(value: string): PublicKey;
|
|
5
|
+
export declare function generateSeed(): Seed;
|
|
6
|
+
export declare function keyPairFromSeed(seed: SeedInput): KeyPair;
|
|
7
|
+
export declare function publicKeyFromSeed(seed: SeedInput): PublicKey;
|