swarm-deploy 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +44 -0
- package/README.md +680 -49
- package/RELEASING.md +2 -2
- package/SECURITY.md +2 -3
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +79 -22
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +19 -29
- package/dist/client.js +46 -55
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +4 -0
- package/dist/errors.js +4 -0
- package/dist/errors.js.map +1 -1
- package/dist/files.d.ts +13 -28
- package/dist/files.js +13 -78
- package/dist/files.js.map +1 -1
- package/dist/hooks-module.d.ts +9 -0
- package/dist/hooks-module.js +118 -0
- package/dist/hooks-module.js.map +1 -0
- package/dist/hooks.d.ts +69 -0
- package/dist/hooks.js +88 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +7 -3
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/release.d.ts +26 -0
- package/dist/release.js +419 -0
- package/dist/release.js.map +1 -0
- package/dist/server.d.ts +86 -0
- package/dist/server.js +405 -53
- package/dist/server.js.map +1 -1
- package/dist/storage/commit-journal.d.ts +39 -2
- package/dist/storage/commit-journal.js +140 -2
- package/dist/storage/commit-journal.js.map +1 -1
- package/dist/storage/commit-store.d.ts +69 -8
- package/dist/storage/commit-store.js +374 -22
- package/dist/storage/commit-store.js.map +1 -1
- package/dist/storage/layout.js +7 -1
- package/dist/storage/layout.js.map +1 -1
- package/dist/storage/link-store.d.ts +70 -0
- package/dist/storage/link-store.js +363 -0
- package/dist/storage/link-store.js.map +1 -0
- package/dist/storage/recovery.d.ts +2 -1
- package/dist/storage/recovery.js +8 -1
- package/dist/storage/recovery.js.map +1 -1
- package/dist/storage/retention.d.ts +41 -21
- package/dist/storage/retention.js +162 -8
- package/dist/storage/retention.js.map +1 -1
- package/dist/storage/tar-session-store.d.ts +36 -5
- package/dist/storage/tar-session-store.js +283 -55
- package/dist/storage/tar-session-store.js.map +1 -1
- package/dist/storage/tree-fs.d.ts +44 -0
- package/dist/storage/tree-fs.js +580 -0
- package/dist/storage/tree-fs.js.map +1 -0
- package/dist/storage/tree-staging.d.ts +9 -0
- package/dist/storage/tree-staging.js +64 -0
- package/dist/storage/tree-staging.js.map +1 -0
- package/dist/storage/types.d.ts +15 -0
- package/dist/symlinks.d.ts +36 -0
- package/dist/symlinks.js +128 -0
- package/dist/symlinks.js.map +1 -0
- package/dist/tar-protocol/controls.d.ts +25 -0
- package/dist/tar-protocol/controls.js +108 -2
- package/dist/tar-protocol/controls.js.map +1 -1
- package/dist/tar-protocol/direct-wire.d.ts +3 -3
- package/dist/tar-protocol/direct-wire.js +2 -2
- package/dist/tar-protocol/direct-wire.js.map +1 -1
- package/dist/tar-protocol/manifest.d.ts +13 -1
- package/dist/tar-protocol/manifest.js +26 -1
- package/dist/tar-protocol/manifest.js.map +1 -1
- package/dist/tar-protocol/tree-extract.d.ts +37 -0
- package/dist/tar-protocol/tree-extract.js +240 -0
- package/dist/tar-protocol/tree-extract.js.map +1 -0
- package/dist/tar-protocol/tree-manifest.d.ts +45 -0
- package/dist/tar-protocol/tree-manifest.js +277 -0
- package/dist/tar-protocol/tree-manifest.js.map +1 -0
- package/dist/tar-protocol/tree-path.d.ts +15 -0
- package/dist/tar-protocol/tree-path.js +68 -0
- package/dist/tar-protocol/tree-path.js.map +1 -0
- package/dist/tar-protocol/tree.d.ts +68 -0
- package/dist/tar-protocol/tree.js +269 -0
- package/dist/tar-protocol/tree.js.map +1 -0
- package/dist/tar-protocol/ustar.d.ts +14 -0
- package/dist/tar-protocol/ustar.js +81 -1
- package/dist/tar-protocol/ustar.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/package.json +3 -1
package/dist/client.js
CHANGED
|
@@ -7,7 +7,6 @@ exports.FINGERPRINT_LENGTH = exports.DEFAULT_IDLE_TIMEOUT = exports.MAX_CONNECT_
|
|
|
7
7
|
exports.fingerprint = fingerprint;
|
|
8
8
|
const b4a_1 = __importDefault(require("b4a"));
|
|
9
9
|
const _events_1 = __importDefault(require("#events"));
|
|
10
|
-
const _fs_1 = __importDefault(require("#fs"));
|
|
11
10
|
const abort_js_1 = require("./abort.js");
|
|
12
11
|
const direct_dht_js_1 = require("./direct-dht.js");
|
|
13
12
|
const errors_js_1 = require("./errors.js");
|
|
@@ -15,6 +14,7 @@ const files_js_1 = require("./files.js");
|
|
|
15
14
|
const identity_js_1 = require("./identity.js");
|
|
16
15
|
const direct_wire_js_1 = require("./tar-protocol/direct-wire.js");
|
|
17
16
|
const manifest_js_1 = require("./tar-protocol/manifest.js");
|
|
17
|
+
const tree_manifest_js_1 = require("./tar-protocol/tree-manifest.js");
|
|
18
18
|
const hash_js_1 = require("./tar-protocol/hash.js");
|
|
19
19
|
const EventEmitter = _events_1.default.EventEmitter;
|
|
20
20
|
const DEFAULT_CONNECT_TIMEOUT = 30_000;
|
|
@@ -64,11 +64,31 @@ function logger(log) {
|
|
|
64
64
|
error: (m, d) => call('error', m, d)
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
|
+
function isTreeManifest(manifest) {
|
|
68
|
+
return 'kind' in manifest && manifest.kind === 'directory';
|
|
69
|
+
}
|
|
70
|
+
function manifestMetadata(manifest, reset) {
|
|
71
|
+
return isTreeManifest(manifest)
|
|
72
|
+
? (0, tree_manifest_js_1.treeMetadataFromManifest)(manifest, reset)
|
|
73
|
+
: (0, manifest_js_1.metadataFromManifest)(manifest, reset);
|
|
74
|
+
}
|
|
75
|
+
function manifestPayloadBytes(manifest) {
|
|
76
|
+
return isTreeManifest(manifest) ? manifest.payloadBytes : manifest.fileSize;
|
|
77
|
+
}
|
|
78
|
+
function manifestDigest(manifest) {
|
|
79
|
+
return isTreeManifest(manifest) ? manifest.treeSha256 : manifest.fileSha256;
|
|
80
|
+
}
|
|
81
|
+
function regenerateSuffix(manifest, offset, write, options) {
|
|
82
|
+
return isTreeManifest(manifest)
|
|
83
|
+
? (0, tree_manifest_js_1.regenerateTreeTarSuffix)(manifest, offset, write, options)
|
|
84
|
+
: (0, manifest_js_1.regenerateTarSuffix)(manifest, offset, write, options);
|
|
85
|
+
}
|
|
67
86
|
class Client extends EventEmitter {
|
|
68
87
|
publicKey;
|
|
69
88
|
serverPublicKey;
|
|
70
89
|
connectTimeout;
|
|
71
90
|
idleTimeout;
|
|
91
|
+
includeSourceParent;
|
|
72
92
|
logger;
|
|
73
93
|
direct;
|
|
74
94
|
abort = (0, abort_js_1.createAbortController)();
|
|
@@ -85,6 +105,11 @@ class Client extends EventEmitter {
|
|
|
85
105
|
this.serverPublicKey = key(options.serverPublicKey, 'server public key', errors_js_1.ERRORS.INVALID_PUBLIC_KEY);
|
|
86
106
|
this.connectTimeout = duration(options.connectTimeout, 'connect timeout', DEFAULT_CONNECT_TIMEOUT);
|
|
87
107
|
this.idleTimeout = duration(options.idleTimeout, 'idle timeout', DEFAULT_IDLE_TIMEOUT);
|
|
108
|
+
if (options.includeSourceParent !== undefined &&
|
|
109
|
+
typeof options.includeSourceParent !== 'boolean') {
|
|
110
|
+
throw fail(errors_js_1.ERRORS.PROTOCOL_INVALID, 'Invalid source parent option');
|
|
111
|
+
}
|
|
112
|
+
this.includeSourceParent = options.includeSourceParent !== false;
|
|
88
113
|
this.publicKey = b4a_1.default.from(keyPair.publicKey);
|
|
89
114
|
this.direct = new direct_dht_js_1.DirectDhtClient({
|
|
90
115
|
keyPair,
|
|
@@ -100,7 +125,7 @@ class Client extends EventEmitter {
|
|
|
100
125
|
}
|
|
101
126
|
catch { }
|
|
102
127
|
}
|
|
103
|
-
async uploadManifest(manifest, reset = false
|
|
128
|
+
async uploadManifest(manifest, reset = false) {
|
|
104
129
|
(0, abort_js_1.throwIfAborted)(this.signal);
|
|
105
130
|
const socket = await this.direct.connect(this.serverPublicKey, {
|
|
106
131
|
signal: this.signal,
|
|
@@ -115,13 +140,13 @@ class Client extends EventEmitter {
|
|
|
115
140
|
const reader = new direct_wire_js_1.DirectWireReader(socket);
|
|
116
141
|
let verificationStarted = false;
|
|
117
142
|
try {
|
|
118
|
-
const metadata = (
|
|
143
|
+
const metadata = manifestMetadata(manifest, reset);
|
|
119
144
|
await (0, direct_wire_js_1.writeMetadata)(socket, metadata, { signal: this.signal, timeout: this.idleTimeout });
|
|
120
145
|
this.emitSafe('offer', { name: manifest.name, status: 'offered' });
|
|
121
146
|
const admission = await reader.control(direct_wire_js_1.decodeDirectAdmission, this.signal, this.idleTimeout);
|
|
122
147
|
if (admission.status === 'ALREADY_COMMITTED') {
|
|
123
148
|
this.emitSafe('offer', { name: manifest.name, status: 'already-committed' });
|
|
124
|
-
return this.result(manifest, 'ALREADY_COMMITTED'
|
|
149
|
+
return this.result(manifest, 'ALREADY_COMMITTED');
|
|
125
150
|
}
|
|
126
151
|
if (admission.status === 'REJECTED')
|
|
127
152
|
throw fail(admission.code, 'Server rejected upload');
|
|
@@ -133,7 +158,7 @@ class Client extends EventEmitter {
|
|
|
133
158
|
throw fail(final.code, 'Server failed verified upload');
|
|
134
159
|
this.emitSafe('verification', { name: manifest.name, status: 'succeeded' });
|
|
135
160
|
this.emitSafe('commit', { name: manifest.name, status: 'succeeded' });
|
|
136
|
-
return this.result(manifest, 'COMMITTED'
|
|
161
|
+
return this.result(manifest, 'COMMITTED');
|
|
137
162
|
}
|
|
138
163
|
const offset = admission.offset;
|
|
139
164
|
const expected = admission.status === 'RESUME' ? b4a_1.default.from(admission.prefixSha256, 'hex') : null;
|
|
@@ -143,7 +168,7 @@ class Client extends EventEmitter {
|
|
|
143
168
|
offset
|
|
144
169
|
});
|
|
145
170
|
let progress = offset;
|
|
146
|
-
const regenerated = await (
|
|
171
|
+
const regenerated = await regenerateSuffix(manifest, offset, async (chunk) => {
|
|
147
172
|
await (0, direct_wire_js_1.writeTar)(socket, chunk, { signal: this.signal, timeout: this.idleTimeout });
|
|
148
173
|
progress += chunk.byteLength;
|
|
149
174
|
this.emitSafe('progress', {
|
|
@@ -158,7 +183,7 @@ class Client extends EventEmitter {
|
|
|
158
183
|
this.emitSafe('offer', { name: manifest.name, status: 'reset', offset: 0 });
|
|
159
184
|
reader.closeReader();
|
|
160
185
|
socket.destroy();
|
|
161
|
-
return this.uploadManifest(manifest, true
|
|
186
|
+
return this.uploadManifest(manifest, true);
|
|
162
187
|
}
|
|
163
188
|
if (regenerated.bytesSent !== manifest.tarSize - offset) {
|
|
164
189
|
throw fail(errors_js_1.ERRORS.PROTOCOL_INVALID, 'Incomplete deterministic TAR transfer');
|
|
@@ -180,7 +205,7 @@ class Client extends EventEmitter {
|
|
|
180
205
|
}
|
|
181
206
|
this.emitSafe('verification', { name: manifest.name, status: 'succeeded' });
|
|
182
207
|
this.emitSafe('commit', { name: manifest.name, status: 'succeeded' });
|
|
183
|
-
return this.result(manifest, 'COMMITTED'
|
|
208
|
+
return this.result(manifest, 'COMMITTED');
|
|
184
209
|
}
|
|
185
210
|
catch (error) {
|
|
186
211
|
const reason = codeOf(error);
|
|
@@ -198,63 +223,30 @@ class Client extends EventEmitter {
|
|
|
198
223
|
catch { }
|
|
199
224
|
}
|
|
200
225
|
}
|
|
201
|
-
result(manifest, status
|
|
226
|
+
result(manifest, status) {
|
|
227
|
+
const kind = isTreeManifest(manifest) ? 'directory' : 'file';
|
|
202
228
|
const result = {
|
|
203
229
|
status,
|
|
230
|
+
kind,
|
|
204
231
|
name: manifest.name,
|
|
205
|
-
size: manifest
|
|
206
|
-
digest: b4a_1.default.from(manifest
|
|
207
|
-
transferId: b4a_1.default.from(manifest.transferId)
|
|
232
|
+
size: manifestPayloadBytes(manifest),
|
|
233
|
+
digest: b4a_1.default.from(manifestDigest(manifest)),
|
|
234
|
+
transferId: b4a_1.default.from(manifest.transferId),
|
|
235
|
+
...(isTreeManifest(manifest) ? { entryCount: manifest.entryCount } : {})
|
|
208
236
|
};
|
|
209
237
|
this.logger.info('Direct upload completed', { name: result.name, status: result.status });
|
|
210
|
-
this.emitSafe('result', { name: result.name, status, final });
|
|
238
|
+
this.emitSafe('result', { name: result.name, kind, status, final: true });
|
|
211
239
|
return result;
|
|
212
240
|
}
|
|
213
241
|
async perform(inputPath) {
|
|
214
242
|
if (typeof inputPath !== 'string' || !inputPath) {
|
|
215
243
|
throw fail(errors_js_1.ERRORS.INVALID_FILENAME, 'Invalid upload path');
|
|
216
244
|
}
|
|
217
|
-
const
|
|
218
|
-
const
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
const results = [];
|
|
223
|
-
for (const skipped of selection.skipped) {
|
|
224
|
-
this.emitSafe('skipped', { name: skipped.name, reason: skipped.reason });
|
|
225
|
-
}
|
|
226
|
-
for (const entry of selection.entries) {
|
|
227
|
-
if (entry.kind === 'skipped')
|
|
228
|
-
continue;
|
|
229
|
-
if (entry.kind === 'failed') {
|
|
230
|
-
results.push({ name: entry.name, status: errors_js_1.ERRORS.PROTOCOL_INVALID, reason: entry.reason });
|
|
231
|
-
continue;
|
|
232
|
-
}
|
|
233
|
-
try {
|
|
234
|
-
results.push(await this.uploadManifest(await (0, manifest_js_1.buildTarManifest)(entry.path, this.publicKey, { signal: this.signal }), false, false));
|
|
235
|
-
}
|
|
236
|
-
catch (error) {
|
|
237
|
-
const status = codeOf(error);
|
|
238
|
-
results.push({ name: entry.name, status });
|
|
239
|
-
this.emitSafe('result', { name: entry.name, status, final: false });
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
const failed = results.some((result) => result.status !== 'COMMITTED' && result.status !== 'ALREADY_COMMITTED');
|
|
243
|
-
const result = {
|
|
244
|
-
status: failed ? 'FAILED' : 'COMMITTED',
|
|
245
|
-
results,
|
|
246
|
-
skipped: selection.skipped
|
|
247
|
-
};
|
|
248
|
-
const committed = results.filter((entry) => entry.status === 'COMMITTED' || entry.status === 'ALREADY_COMMITTED').length;
|
|
249
|
-
this.emitSafe('result', {
|
|
250
|
-
status: result.status,
|
|
251
|
-
final: true,
|
|
252
|
-
files: results.length,
|
|
253
|
-
committed,
|
|
254
|
-
failed: results.length - committed,
|
|
255
|
-
skipped: selection.skipped.length
|
|
256
|
-
});
|
|
257
|
-
return result;
|
|
245
|
+
const target = await (0, files_js_1.selectUploadTarget)(inputPath, { signal: this.signal });
|
|
246
|
+
const options = { signal: this.signal, includeSourceParent: this.includeSourceParent };
|
|
247
|
+
return this.uploadManifest(target.kind === 'directory'
|
|
248
|
+
? await (0, tree_manifest_js_1.buildTreeManifest)(target.path, this.publicKey, options)
|
|
249
|
+
: await (0, manifest_js_1.buildTarManifest)(target.path, this.publicKey, options));
|
|
258
250
|
}
|
|
259
251
|
upload(inputPath) {
|
|
260
252
|
if (this.closed)
|
|
@@ -264,7 +256,6 @@ class Client extends EventEmitter {
|
|
|
264
256
|
.catch((error) => {
|
|
265
257
|
const reason = codeOf(error);
|
|
266
258
|
this.emitSafe('failure', { fingerprint: fingerprint(this.serverPublicKey), reason });
|
|
267
|
-
this.emitSafe('result', { status: reason, final: true });
|
|
268
259
|
throw error;
|
|
269
260
|
});
|
|
270
261
|
this.queue = operation.then(() => undefined, () => undefined);
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -16,6 +16,10 @@ export declare const ERRORS: {
|
|
|
16
16
|
readonly UPLOAD_IDLE_TIMEOUT: 'UPLOAD_IDLE_TIMEOUT';
|
|
17
17
|
readonly ABORTED: 'ABORTED';
|
|
18
18
|
readonly COMMIT_FAILED: 'COMMIT_FAILED';
|
|
19
|
+
readonly LINK_CONFLICT: 'LINK_CONFLICT';
|
|
20
|
+
readonly LINK_FAILED: 'LINK_FAILED';
|
|
21
|
+
readonly UNSUPPORTED_STORAGE: 'UNSUPPORTED_STORAGE';
|
|
22
|
+
readonly HOOK_FAILED: 'HOOK_FAILED';
|
|
19
23
|
readonly CLEANUP_FAILED: 'CLEANUP_FAILED';
|
|
20
24
|
};
|
|
21
25
|
export type ErrorCode = (typeof ERRORS)[keyof typeof ERRORS];
|
package/dist/errors.js
CHANGED
|
@@ -19,6 +19,10 @@ exports.ERRORS = {
|
|
|
19
19
|
UPLOAD_IDLE_TIMEOUT: 'UPLOAD_IDLE_TIMEOUT',
|
|
20
20
|
ABORTED: 'ABORTED',
|
|
21
21
|
COMMIT_FAILED: 'COMMIT_FAILED',
|
|
22
|
+
LINK_CONFLICT: 'LINK_CONFLICT',
|
|
23
|
+
LINK_FAILED: 'LINK_FAILED',
|
|
24
|
+
UNSUPPORTED_STORAGE: 'UNSUPPORTED_STORAGE',
|
|
25
|
+
HOOK_FAILED: 'HOOK_FAILED',
|
|
22
26
|
CLEANUP_FAILED: 'CLEANUP_FAILED'
|
|
23
27
|
};
|
|
24
28
|
class SwarmDeployError extends Error {
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +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"}
|
|
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,aAAa,EAAE,eAAe;IAC9B,WAAW,EAAE,aAAa;IAC1B,mBAAmB,EAAE,qBAAqB;IAC1C,WAAW,EAAE,aAAa;IAC1B,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"}
|
package/dist/files.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import type { ArtifactKind } from './types.js';
|
|
1
2
|
/** Reserved top-level namespace for server-managed historical artifacts. */
|
|
2
3
|
export declare const HISTORY_NAME_PREFIX = "history-";
|
|
3
|
-
export interface
|
|
4
|
+
export interface SelectUploadTargetOptions {
|
|
4
5
|
signal?: {
|
|
5
6
|
readonly aborted: boolean;
|
|
6
7
|
addEventListener(event: 'abort', callback: () => void, options?: {
|
|
@@ -9,6 +10,12 @@ export interface SelectUploadPathsOptions {
|
|
|
9
10
|
removeEventListener(event: 'abort', callback: () => void): void;
|
|
10
11
|
} | null;
|
|
11
12
|
}
|
|
13
|
+
export interface UploadTarget {
|
|
14
|
+
kind: ArtifactKind;
|
|
15
|
+
/** The managed artifact basename. */
|
|
16
|
+
name: string;
|
|
17
|
+
path: string;
|
|
18
|
+
}
|
|
12
19
|
export declare function validateBasename(name: string): string;
|
|
13
20
|
export declare function isReservedHistoryName(name: unknown): boolean;
|
|
14
21
|
/** The unique top-level path preserving the inode a replacement superseded. */
|
|
@@ -18,30 +25,8 @@ export declare function historyName(oldTransferId: string): string;
|
|
|
18
25
|
* the reserved history namespace and duplicate entries are always rejected.
|
|
19
26
|
*/
|
|
20
27
|
export declare function validateReplaceNames(values?: Iterable<string>): Set<string>;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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>;
|
|
28
|
+
/**
|
|
29
|
+
* Classifies one upload input. A directory becomes exactly one recursive
|
|
30
|
+
* directory artifact; children are never uploaded independently.
|
|
31
|
+
*/
|
|
32
|
+
export declare function selectUploadTarget(inputPath: string, { signal }?: SelectUploadTargetOptions): Promise<UploadTarget>;
|
package/dist/files.js
CHANGED
|
@@ -8,9 +8,8 @@ exports.validateBasename = validateBasename;
|
|
|
8
8
|
exports.isReservedHistoryName = isReservedHistoryName;
|
|
9
9
|
exports.historyName = historyName;
|
|
10
10
|
exports.validateReplaceNames = validateReplaceNames;
|
|
11
|
-
exports.
|
|
11
|
+
exports.selectUploadTarget = selectUploadTarget;
|
|
12
12
|
const b4a_1 = __importDefault(require("b4a"));
|
|
13
|
-
const error_code_js_1 = require("./error-code.js");
|
|
14
13
|
const _fs_1 = __importDefault(require("#fs"));
|
|
15
14
|
const _path_1 = __importDefault(require("#path"));
|
|
16
15
|
const abort_js_1 = require("./abort.js");
|
|
@@ -63,88 +62,24 @@ function validateReplaceNames(values) {
|
|
|
63
62
|
}
|
|
64
63
|
return names;
|
|
65
64
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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 } = {}) {
|
|
65
|
+
/**
|
|
66
|
+
* Classifies one upload input. A directory becomes exactly one recursive
|
|
67
|
+
* directory artifact; children are never uploaded independently.
|
|
68
|
+
*/
|
|
69
|
+
async function selectUploadTarget(inputPath, { signal = null } = {}) {
|
|
89
70
|
(0, abort_js_1.throwIfAborted)(signal);
|
|
90
|
-
const
|
|
71
|
+
const stat = await _fs_1.default.promises.lstat(inputPath);
|
|
91
72
|
(0, abort_js_1.throwIfAborted)(signal);
|
|
92
|
-
if (
|
|
73
|
+
if (stat.isSymbolicLink()) {
|
|
93
74
|
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.INVALID_FILENAME, 'Symlinks are not supported');
|
|
94
75
|
}
|
|
95
|
-
if (
|
|
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()) {
|
|
76
|
+
if (!stat.isFile() && !stat.isDirectory()) {
|
|
108
77
|
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.INVALID_FILENAME, 'Path must be a regular file or directory');
|
|
109
78
|
}
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
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 });
|
|
79
|
+
const name = validateBasename(_path_1.default.basename(_path_1.default.resolve(inputPath)));
|
|
80
|
+
if (isReservedHistoryName(name)) {
|
|
81
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.INVALID_FILENAME, 'Reserved artifact name');
|
|
147
82
|
}
|
|
148
|
-
return {
|
|
83
|
+
return { kind: stat.isDirectory() ? 'directory' : 'file', name, path: inputPath };
|
|
149
84
|
}
|
|
150
85
|
//# sourceMappingURL=files.js.map
|
package/dist/files.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,8CAAqB;AACrB,
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ServerHooks } from './hooks.js';
|
|
2
|
+
/**
|
|
3
|
+
* Loads a JavaScript hooks module (`.js`, `.mjs` or `.cjs`) and returns the
|
|
4
|
+
* validated, frozen hook snapshot. Only `beforeCommit`, `afterCommit` and
|
|
5
|
+
* `onFailure` are picked, by own property name; other exports are ignored.
|
|
6
|
+
* Defined named exports take precedence over the default export's callbacks. Every failure is a fixed-message configuration
|
|
7
|
+
* error that never includes module content.
|
|
8
|
+
*/
|
|
9
|
+
export declare function loadHooksModule(modulePath: string, cwd: string): Promise<ServerHooks>;
|
|
@@ -0,0 +1,118 @@
|
|
|
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.loadHooksModule = loadHooksModule;
|
|
7
|
+
const _path_1 = __importDefault(require("#path"));
|
|
8
|
+
const errors_js_1 = require("./errors.js");
|
|
9
|
+
const hooks_js_1 = require("./hooks.js");
|
|
10
|
+
const HOOK_NAMES = ['beforeCommit', 'afterCommit', 'onFailure'];
|
|
11
|
+
const HOOK_EXTENSIONS = ['.js', '.mjs', '.cjs'];
|
|
12
|
+
function rejected(modulePath, reason) {
|
|
13
|
+
// Only the basename and a fixed reason: module text, stack traces, causes and
|
|
14
|
+
// directory names can carry secrets and must never reach the operator log.
|
|
15
|
+
return new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, `Unable to load hooks module ${_path_1.default.basename(modulePath)}: ${reason}`);
|
|
16
|
+
}
|
|
17
|
+
function fileUrl(file) {
|
|
18
|
+
if (/^[A-Za-z]:[\\/]/.test(file)) {
|
|
19
|
+
return `file:///${encodeURI(file.replace(/\\/g, '/')).replace(/[?#]/g, encodeURIComponent)}`;
|
|
20
|
+
}
|
|
21
|
+
return `file://${encodeURI(file).replace(/[?#]/g, encodeURIComponent)}`;
|
|
22
|
+
}
|
|
23
|
+
function isRecord(value) {
|
|
24
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
25
|
+
}
|
|
26
|
+
function hasOwn(value, name) {
|
|
27
|
+
return Object.prototype.hasOwnProperty.call(value, name);
|
|
28
|
+
}
|
|
29
|
+
/** Reads an error's string `code` without ever letting a hostile getter or proxy throw. */
|
|
30
|
+
function errorCode(error) {
|
|
31
|
+
try {
|
|
32
|
+
if ((typeof error !== 'object' && typeof error !== 'function') || error === null) {
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
const code = error.code;
|
|
36
|
+
return typeof code === 'string' ? code : undefined;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The default export's hook object, or `undefined` when the default is absent or not
|
|
44
|
+
* a plain object (function, primitive, null, array). Unwraps exactly one explicit
|
|
45
|
+
* `__esModule` interop level (TypeScript-compiled CommonJS).
|
|
46
|
+
*/
|
|
47
|
+
function defaultHooks(namespace) {
|
|
48
|
+
if (!hasOwn(namespace, 'default'))
|
|
49
|
+
return undefined;
|
|
50
|
+
const fallback = namespace.default;
|
|
51
|
+
if (fallback === undefined)
|
|
52
|
+
return undefined;
|
|
53
|
+
if (!isRecord(fallback))
|
|
54
|
+
return undefined;
|
|
55
|
+
if (hasOwn(fallback, '__esModule') &&
|
|
56
|
+
fallback.__esModule === true &&
|
|
57
|
+
hasOwn(fallback, 'default')) {
|
|
58
|
+
const inner = fallback.default;
|
|
59
|
+
return isRecord(inner) ? inner : undefined;
|
|
60
|
+
}
|
|
61
|
+
return fallback;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Loads a JavaScript hooks module (`.js`, `.mjs` or `.cjs`) and returns the
|
|
65
|
+
* validated, frozen hook snapshot. Only `beforeCommit`, `afterCommit` and
|
|
66
|
+
* `onFailure` are picked, by own property name; other exports are ignored.
|
|
67
|
+
* Defined named exports take precedence over the default export's callbacks. Every failure is a fixed-message configuration
|
|
68
|
+
* error that never includes module content.
|
|
69
|
+
*/
|
|
70
|
+
async function loadHooksModule(modulePath, cwd) {
|
|
71
|
+
if (typeof modulePath !== 'string' || modulePath.length === 0) {
|
|
72
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, 'Invalid hooks module path');
|
|
73
|
+
}
|
|
74
|
+
if (typeof cwd !== 'string' || cwd.length === 0) {
|
|
75
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, 'Invalid working directory');
|
|
76
|
+
}
|
|
77
|
+
const resolved = _path_1.default.resolve(cwd, modulePath);
|
|
78
|
+
// Checked before the import so an unsupported extension gives a precise
|
|
79
|
+
// startup error instead of whatever the runtime's loader happens to say.
|
|
80
|
+
if (!HOOK_EXTENSIONS.includes(_path_1.default.extname(resolved))) {
|
|
81
|
+
throw rejected(modulePath, 'unsupported module extension');
|
|
82
|
+
}
|
|
83
|
+
let namespace;
|
|
84
|
+
try {
|
|
85
|
+
namespace = (await import(fileUrl(resolved)));
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
const code = errorCode(error);
|
|
89
|
+
if (code === 'ERR_MODULE_NOT_FOUND' || code === 'MODULE_NOT_FOUND') {
|
|
90
|
+
throw rejected(modulePath, 'module not found');
|
|
91
|
+
}
|
|
92
|
+
throw rejected(modulePath, 'module failed to load');
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
const merged = Object.create(null);
|
|
96
|
+
const fallback = defaultHooks(namespace);
|
|
97
|
+
for (const name of HOOK_NAMES) {
|
|
98
|
+
if (fallback !== undefined && hasOwn(fallback, name)) {
|
|
99
|
+
const value = fallback[name];
|
|
100
|
+
if (value !== undefined)
|
|
101
|
+
merged[name] = value;
|
|
102
|
+
}
|
|
103
|
+
if (hasOwn(namespace, name)) {
|
|
104
|
+
const value = namespace[name];
|
|
105
|
+
if (value !== undefined)
|
|
106
|
+
merged[name] = value;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const snapshot = (0, hooks_js_1.snapshotHooks)(merged);
|
|
110
|
+
if (Reflect.ownKeys(snapshot).length === 0)
|
|
111
|
+
throw new Error('empty');
|
|
112
|
+
return snapshot;
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
throw rejected(modulePath, 'invalid hooks exports');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=hooks-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks-module.js","sourceRoot":"","sources":["../src/hooks-module.ts"],"names":[],"mappings":"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"}
|