@proxyshard/shardx 2.1.0 → 2.1.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/dist/runtime.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export declare const PUB_BASE = "https://pub-e57a7c60f6934eb09a6600bf2fc59cdc.r2.dev";
2
2
  export declare const CHROMIUM_VERSION = "156.0.8078.48";
3
3
  /** This SDK's own version, compared against the manifest's `min_sdk_version`. */
4
- export declare const SDK_VERSION = "2.1.0";
4
+ export declare const SDK_VERSION = "2.1.1";
5
5
  export declare const MANIFEST_URL = "https://raw.githubusercontent.com/ProxyShard/ShardBrowser/main/runtime.json";
6
6
  export declare function defaultCacheDir(): string;
7
7
  export interface Archive {
@@ -80,17 +80,86 @@ export declare class Runtime {
80
80
  install(opts?: {
81
81
  force?: boolean;
82
82
  }): Promise<void>;
83
+ /** Another process may have swapped the engine since this one checked: the
84
+ * version profiles claim follows the engine on disk, from its record. */
85
+ private adoptInstalled;
86
+ private installLocked;
83
87
  /** Fetch the version manifest (GitHub raw) — one request that yields every
84
88
  * archive's current etag + the chromium version, replacing per-archive HEADs
85
89
  * against R2/S3. Empty archives / undefined version when unreachable. */
86
90
  private fetchManifest;
87
- /** Downloads `arch` beside `dest` and returns where it landed, with its etag. */
91
+ /** Downloads `arch` beside `dest` and returns where it landed, with its etag.
92
+ * `unpacks`: refused before a byte is written when the disk cannot also
93
+ * hold it unpacked beside what is installed. */
88
94
  private download;
89
95
  /** Unpacks an archive `download` left behind, and removes it. */
90
96
  private extractArchive;
97
+ /** Brings the engine to the archive the manifest offers (`wanted`: its etag,
98
+ * when known). A checked tree an earlier run staged is used as it is; else
99
+ * the archive is downloaded and staged. Returns the etag that went in. */
100
+ private installEngine;
101
+ /** Unpacks the engine archive at `tmp` into the staging folder beside the
102
+ * live engine and checks every file the archive lists. Nothing installed is
103
+ * touched: the tree waits there, noted, until `swapStaged` moves it in. The
104
+ * archive is removed either way. */
105
+ stageEngine(tmp: string, etag: string): void;
106
+ /** Swaps the staged tree in. Refused while processes run from the engine;
107
+ * every refusal keeps the staged tree for the next run. */
108
+ swapStaged(lock?: InstallLock): void;
91
109
  /** Downloads and unpacks in one step, for everything that has nothing to lose. */
92
110
  private downloadAndExtract;
93
111
  private placeWidevine;
94
112
  private installFingerprints;
95
113
  }
114
+ /** What the install asks the OS; tests swap in their own. */
115
+ export declare const engineHooks: {
116
+ freeBytes: typeof freeBytes;
117
+ processesUnder: typeof processesUnder;
118
+ };
119
+ /** The file operations an engine swap makes; tests hand in failing ones.
120
+ * `tries`: how often a rename Windows refuses for a moment is tried. */
121
+ export interface SwapFs {
122
+ rename(from: string, to: string): void;
123
+ rm(path: string): void;
124
+ tries?: number;
125
+ }
126
+ /** Files and links under `dir`, links not followed. */
127
+ export declare function countFiles(dir: string): number;
128
+ /** Puts `<root>/.<top>.previous` back when a run died between the two renames
129
+ * of an update (or could not undo the first) — only as its journal left it,
130
+ * and only whole. Any other copy is a leftover and goes: one a cleanup left
131
+ * half removed never stands in for a missing engine. True when put back. */
132
+ export declare function recoverEngine(root: string, top: string, fs?: SwapFs): boolean;
133
+ /** Swaps the complete tree at `staged` in for `<root>/<top>`: live → previous,
134
+ * staged → live, the first undone if the second fails. Any failure leaves the
135
+ * engine that was there (or `.previous` with its journal, put back by the
136
+ * next install()). */
137
+ export declare function swapEngineTree(root: string, top: string, staged: string, fs?: SwapFs): void;
138
+ /** Bytes the current user may still write on the disk holding `dir`. */
139
+ export declare function freeBytes(dir: string): number | undefined;
140
+ /** How many processes run from `dir`. On macOS and Linux a swap would pull
141
+ * the files from under them; Windows refuses the rename itself. */
142
+ export declare function processesUnder(dir: string): number;
143
+ /** One install at a time over a cache dir, across processes and the three
144
+ * SDKs (same file, same rules). A holder that died is taken over. */
145
+ export declare class InstallLock {
146
+ readonly path: string;
147
+ readonly token: string;
148
+ private constructor();
149
+ static acquire(root: string, opts?: {
150
+ pollMs?: number;
151
+ }): Promise<InstallLock>;
152
+ /** Still ours: nobody took it over as stale. */
153
+ held(): boolean;
154
+ release(): void;
155
+ }
156
+ export declare function pidAlive(pid: unknown): boolean;
157
+ interface ZipListing {
158
+ names: string[];
159
+ unpacked: number;
160
+ }
161
+ /** The archive's own table of contents, read from its end without loading the
162
+ * rest: entry names and the bytes they unpack to. Throws when there is none. */
163
+ export declare function zipListing(path: string): ZipListing;
164
+ export {};
96
165
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,QAAQ,wDAAwD,CAAC;AAC9E,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,iFAAiF;AACjF,eAAO,MAAM,WAAW,UAAU,CAAC;AAInC,eAAO,MAAM,YAAY,gFAAgF,CAAC;AAE1G,wBAAgB,eAAe,IAAI,MAAM,CAKxC;AAED,MAAM,WAAW,OAAO;IAAG,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;CAAE;AAExD,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAgB,QAAQ,IAAI,QAAQ,CA8BnC;AAED,eAAO,MAAM,oBAAoB,EAAE,OAGlC,CAAC;AAGF,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAclF,qBAAa,OAAO;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAa;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;IACxC;;uCAEmC;IACnC,OAAO,CAAC,iBAAiB,CAAS;IAClC;4EACwE;IACxE,OAAO,CAAC,gBAAgB,CAA4B;IACpD;2EACuE;IACvE,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC;;;oEAGgE;IAChE,OAAO,CAAC,IAAI,CAAC,CAA0B;gBAE3B,IAAI,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAO;IAQzF,IAAI,YAAY,IAAI,MAAM,CAA8C;IACxE,IAAI,UAAU,IAAI,MAAM,CAA2D;IACnF,IAAI,eAAe,IAAI,MAAM,CAI5B;IACD;;iEAE6D;IAC7D,IAAI,YAAY,IAAI,MAAM,CAIzB;IACD,IAAI,SAAS,IAAI,OAAO,CAA2C;IACnE,mEAAmE;IACnE,IAAI,eAAe,IAAI,MAAM,CAAkC;IAC/D,6EAA6E;IAC7E,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAA8B;IACnE,sEAAsE;IACtE,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAAgC;IACvE,yDAAyD;IACzD,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAsB;IAEpE;2EACuE;IACvE,OAAO,CAAC,sBAAsB;IAqB9B;;;kFAG8E;IAC9E,OAAO,CAAC,yBAAyB;IAIjC;kDAC8C;IAC9C,OAAO,CAAC,oBAAoB;IAU5B,4DAA4D;IAC5D,OAAO,CAAC,MAAM,CAAC,SAAS;IAWxB;4EACwE;IACxE,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IAMd,OAAO,CAAC,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAsE5D;;8EAE0E;YAC5D,aAAa;IAuB3B,iFAAiF;YACnE,QAAQ;IA8BtB,iEAAiE;IACjE,OAAO,CAAC,cAAc;IAetB,kFAAkF;YACpE,kBAAkB;IAMhC,OAAO,CAAC,aAAa;YAYP,mBAAmB;CA0ClC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/dist/runtime.js CHANGED
@@ -2,17 +2,19 @@
2
2
  // library from the ProxyShard CDN, extract into a per-user cache dir,
3
3
  // place Widevine inside the engine bundle, remember etags so subsequent
4
4
  // runs are zero-network. Mirrors src-tauri/src/runtime.rs in the launcher.
5
- import { closeSync, createWriteStream, existsSync, mkdirSync, openSync, readdirSync, readFileSync, readSync, renameSync, rmSync, writeFileSync, chmodSync, copyFileSync, lstatSync } from "node:fs";
6
- import { homedir, platform as osPlatform, arch as osArch } from "node:os";
7
- import { join, dirname, resolve } from "node:path";
5
+ import { closeSync, createWriteStream, existsSync, fstatSync, fsyncSync, linkSync, mkdirSync, openSync, readdirSync, readFileSync, readlinkSync, readSync, realpathSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync, writeSync, chmodSync, copyFileSync, lstatSync } from "node:fs";
6
+ import * as nodeFs from "node:fs";
7
+ import { homedir, hostname, platform as osPlatform, arch as osArch } from "node:os";
8
+ import { join, dirname, resolve, sep } from "node:path";
8
9
  import { pipeline } from "node:stream/promises";
9
10
  import { Readable } from "node:stream";
10
11
  import { spawnSync } from "node:child_process";
12
+ import { randomBytes } from "node:crypto";
11
13
  import AdmZip from "adm-zip";
12
14
  export const PUB_BASE = "https://pub-e57a7c60f6934eb09a6600bf2fc59cdc.r2.dev";
13
15
  export const CHROMIUM_VERSION = "156.0.8078.48";
14
16
  /** This SDK's own version, compared against the manifest's `min_sdk_version`. */
15
- export const SDK_VERSION = "2.1.0";
17
+ export const SDK_VERSION = "2.1.1";
16
18
  // Version manifest (GitHub raw) — one tiny GET yields every archive's current
17
19
  // etag, so we never poll R2/S3 (no per-archive HEAD). Changed archives are then
18
20
  // pulled from PUB_BASE.
@@ -188,29 +190,79 @@ export class Runtime {
188
190
  }
189
191
  }
190
192
  saveManifest(m) {
191
- writeFileSync(this.manifestPath, JSON.stringify(m, null, 2));
193
+ // Whole or not at all: other processes read it (adoptInstalled).
194
+ const tmp = `${this.manifestPath}.tmp`;
195
+ writeFileSync(tmp, JSON.stringify(m, null, 2));
196
+ renameSync(tmp, this.manifestPath);
192
197
  }
193
198
  // ---- install ----
194
199
  async install(opts = {}) {
195
200
  const force = !!opts.force;
196
- if (this._checkedInProcess && !force)
201
+ if (this._checkedInProcess && !force) {
202
+ this.adoptInstalled();
197
203
  return;
204
+ }
205
+ // One install at a time over this cache, across processes and the SDKs.
206
+ const lock = await InstallLock.acquire(this.root);
207
+ try {
208
+ // Another call of this process did it while this one waited.
209
+ if (this._checkedInProcess && !force) {
210
+ this.adoptInstalled();
211
+ return;
212
+ }
213
+ await this.installLocked(force, lock);
214
+ }
215
+ finally {
216
+ lock.release();
217
+ }
218
+ }
219
+ /** Another process may have swapped the engine since this one checked: the
220
+ * version profiles claim follows the engine on disk, from its record. */
221
+ adoptInstalled() {
222
+ const local = this.loadManifest();
223
+ const v = local.installed_chromium_version;
224
+ if (!v || v === this._chromiumVersion)
225
+ return;
226
+ this._chromiumVersion = v;
227
+ this._greaseBrand = local.installed_grease_brand;
228
+ this._greaseVersion = local.installed_grease_version;
229
+ this._tls = local.installed_tls;
230
+ }
231
+ async installLocked(force, lock) {
232
+ const top = this.spec.binarySubpath[0];
233
+ // A run that died between the two renames of an update left the engine
234
+ // as `.previous`: put back before anything asks whether it is installed.
235
+ recoverEngine(this.root, top);
236
+ sweepLeftovers(this.root, top, this.spec.browser.key, this.spec.binarySubpath);
198
237
  const local = this.loadManifest();
199
238
  const remote = await this.fetchManifest();
239
+ // An engine this SDK is too old to drive is not installed, but the one
240
+ // already on disk keeps running. Refusing outright stopped every run on an
241
+ // engine that worked yesterday, for an update nobody had asked for. With
242
+ // nothing installed, or a reinstall asked for, there is nothing to keep.
243
+ const tooOld = !!remote.minSdkVersion && Runtime.versionLt(SDK_VERSION, remote.minSdkVersion);
244
+ if (tooOld && (force || !this.installed)) {
245
+ throw new Error(`this engine build needs @proxyshard/shardx ${remote.minSdkVersion} or newer — `
246
+ + `you are on ${SDK_VERSION}; upgrade the SDK first`);
247
+ }
200
248
  // Remember the engine version + grease so launch can normalise profiles.
201
249
  // Without the manifest, what is ALREADY installed — not the version this
202
250
  // SDK was published with. Falling back to the constant made an offline
203
251
  // run record 152 over an engine that is 156, and profiles then declared
204
- // a version the engine does not have.
252
+ // a version the engine does not have. Skipping an update, the manifest
253
+ // describes an engine that is not the one on disk, so it is not read.
254
+ const offered = tooOld ? undefined : remote;
205
255
  this._chromiumVersion =
206
- remote.chromiumVersion ?? local.installed_chromium_version ?? CHROMIUM_VERSION;
207
- this._greaseBrand = remote.greaseBrand;
208
- this._greaseVersion = remote.greaseVersion;
209
- this._tls = remote.tls;
210
- // Refused rather than installed: this SDK could not configure it.
211
- if (remote.minSdkVersion && Runtime.versionLt(SDK_VERSION, remote.minSdkVersion)) {
212
- throw new Error(`this engine build needs @proxyshard/shardx ${remote.minSdkVersion} or newer — `
213
- + `you are on ${SDK_VERSION}; upgrade the SDK first`);
256
+ offered?.chromiumVersion ?? this.effectiveInstalledVersion(local) ?? CHROMIUM_VERSION;
257
+ this._greaseBrand = offered?.greaseBrand ?? local.installed_grease_brand;
258
+ this._greaseVersion = offered?.greaseVersion ?? local.installed_grease_version;
259
+ this._tls = offered?.tls ?? local.installed_tls;
260
+ if (tooOld) {
261
+ console.warn(`[shardx] engine ${remote.chromiumVersion ?? "update"} needs @proxyshard/shardx `
262
+ + `${remote.minSdkVersion} or newer (this is ${SDK_VERSION}); staying on the installed `
263
+ + `engine ${this._chromiumVersion}. Upgrade the SDK to get it.`);
264
+ this._checkedInProcess = true;
265
+ return;
214
266
  }
215
267
  // Unknown is never a mismatch, so adopt a stamp once or the first bump
216
268
  // never lands.
@@ -219,23 +271,55 @@ export class Runtime {
219
271
  }
220
272
  // Manifest unreachable → don't force a re-download.
221
273
  const needBrowser = force || !this.installed || this.engineOutdated(local, remote);
274
+ let swapped = false;
222
275
  if (needBrowser) {
223
- // Download BEFORE wiping. The old tree has to go — a leftover
224
- // `<old>.manifest` or a stale lib beside the new ones pinned the
225
- // detected version and the SDK re-downloaded for ever — but doing it
226
- // first meant a download that failed left no engine at all, and the
227
- // next run had nothing to fall back to. The archive is on disk by the
228
- // time anything is removed.
229
- const { tmp, etag } = await this.download(this.spec.browser, this.root);
230
- rmSync(join(this.root, this.spec.binarySubpath[0]), { recursive: true, force: true });
231
- this.extractArchive(tmp, this.root);
232
- local.browser_etag = etag;
276
+ // Nothing installed is touched until a complete new tree is unpacked
277
+ // beside it (see installEngine). The old tree still has to go whole — a
278
+ // leftover `<old>.manifest` or a stale lib beside the new ones pinned the
279
+ // detected version and the SDK re-downloaded for ever — but a download or
280
+ // an archive that fails must never be what removes it: that left the
281
+ // machine with no engine and nothing to fall back to.
282
+ try {
283
+ local.browser_etag = await this.installEngine(remote.archives[this.spec.browser.key], force, lock);
284
+ swapped = true;
285
+ }
286
+ catch (e) {
287
+ // With nothing installed, or a reinstall asked for, there is nothing to stay on.
288
+ if (force || !this.installed)
289
+ throw e;
290
+ // The engine on disk works: stay on it, as for an update this SDK is too old for.
291
+ this._chromiumVersion = this.effectiveInstalledVersion(local) ?? CHROMIUM_VERSION;
292
+ this._greaseBrand = local.installed_grease_brand;
293
+ this._greaseVersion = local.installed_grease_version;
294
+ this._tls = local.installed_tls;
295
+ console.warn(`[shardx] the engine update was not installed: ${e.message}. Staying on the `
296
+ + `installed engine ${this._chromiumVersion}; the update is tried again on the next run.`);
297
+ }
298
+ }
299
+ if (swapped) {
233
300
  if (remote.engineBuild)
234
301
  local.installed_engine_build = remote.engineBuild;
302
+ // Saved at once: the engine on disk is the new one, whatever fails next.
303
+ // The new tree has no CDM yet, so the old one's etag must not say it has.
304
+ local.installed_chromium_version = this._chromiumVersion;
305
+ if (remote.greaseBrand)
306
+ local.installed_grease_brand = remote.greaseBrand;
307
+ if (remote.greaseVersion)
308
+ local.installed_grease_version = remote.greaseVersion;
309
+ if (remote.tls)
310
+ local.installed_tls = remote.tls;
311
+ delete local.widevine_etag;
312
+ this.saveManifest(local);
235
313
  }
236
- if (this.spec.widevine && (needBrowser || !local.widevine_etag)) {
237
- local.widevine_etag = await this.downloadAndExtract(this.spec.widevine, this.root);
238
- this.placeWidevine();
314
+ if (this.spec.widevine && (swapped || !local.widevine_etag)) {
315
+ // The CDM is no reason to fail a run whose engine is in: tried again next time.
316
+ try {
317
+ local.widevine_etag = await this.downloadAndExtract(this.spec.widevine, this.root);
318
+ this.placeWidevine();
319
+ }
320
+ catch (e) {
321
+ console.warn(`[shardx] Widevine CDM not installed (${e.message}); tried again on the next run.`);
322
+ }
239
323
  }
240
324
  const remoteFp = remote.archives[FINGERPRINTS_ARCHIVE.key];
241
325
  const fpDirHasJson = readdirSync(this.fingerprintsDir).some((f) => f.endsWith(".json"));
@@ -244,9 +328,18 @@ export class Runtime {
244
328
  if (remoteFp !== undefined)
245
329
  local.fingerprints_etag = remoteFp;
246
330
  }
247
- // Authoritative: we just extracted exactly this version (old tree wiped
248
- // first). Recording the known value beats re-reading it off disk.
331
+ // Authoritative: the tree was replaced whole with exactly this version.
332
+ // Recording the known value beats re-reading it off disk. What the
333
+ // manifest says describes the engine on disk only when that is current.
249
334
  local.installed_chromium_version = this._chromiumVersion;
335
+ if (!needBrowser || swapped) {
336
+ if (remote.greaseBrand)
337
+ local.installed_grease_brand = remote.greaseBrand;
338
+ if (remote.greaseVersion)
339
+ local.installed_grease_version = remote.greaseVersion;
340
+ if (remote.tls)
341
+ local.installed_tls = remote.tls;
342
+ }
250
343
  this.saveManifest(local);
251
344
  // Linux/mac archives produced on Windows lose every Unix exec bit;
252
345
  // restore +x on every ELF/Mach-O file under the engine tree (not
@@ -287,8 +380,10 @@ export class Runtime {
287
380
  return { archives: {} };
288
381
  }
289
382
  }
290
- /** Downloads `arch` beside `dest` and returns where it landed, with its etag. */
291
- async download(arch, dest) {
383
+ /** Downloads `arch` beside `dest` and returns where it landed, with its etag.
384
+ * `unpacks`: refused before a byte is written when the disk cannot also
385
+ * hold it unpacked beside what is installed. */
386
+ async download(arch, dest, unpacks = false) {
292
387
  const url = `${PUB_BASE}/${arch.key}`;
293
388
  mkdirSync(dest, { recursive: true });
294
389
  const tmp = join(dest, `.${arch.key}.tmp`);
@@ -297,6 +392,15 @@ export class Runtime {
297
392
  throw new Error(`download ${arch.key}: HTTP ${r.status}`);
298
393
  const etag = r.headers.get("etag")?.replace(/^"|"$/g, "") ?? "";
299
394
  const total = Number(r.headers.get("content-length") ?? 0);
395
+ if (unpacks && total > 0) {
396
+ try {
397
+ assertRoom(dest, total * (1 + UNPACK_GUESS) + SPACE_MARGIN);
398
+ }
399
+ catch (e) {
400
+ await r.body.cancel().catch(() => { });
401
+ throw e;
402
+ }
403
+ }
300
404
  let received = 0;
301
405
  const reader = r.body.getReader();
302
406
  const out = createWriteStream(tmp);
@@ -317,6 +421,12 @@ export class Runtime {
317
421
  stream.on("data", () => this.progress(arch.label, received, total));
318
422
  }
319
423
  await pipeline(stream, out);
424
+ // A connection cut mid-body still leaves us with a 200 and a short file;
425
+ // the length the server promised is the only thing that says so.
426
+ if (total > 0 && received < total) {
427
+ rmQuiet(tmp);
428
+ throw new Error(`download ${arch.key}: got ${received} of ${total} bytes`);
429
+ }
320
430
  return { tmp, etag };
321
431
  }
322
432
  /** Unpacks an archive `download` left behind, and removes it. */
@@ -335,6 +445,101 @@ export class Runtime {
335
445
  }
336
446
  rmSync(tmp, { force: true });
337
447
  }
448
+ /** Brings the engine to the archive the manifest offers (`wanted`: its etag,
449
+ * when known). A checked tree an earlier run staged is used as it is; else
450
+ * the archive is downloaded and staged. Returns the etag that went in. */
451
+ async installEngine(wanted, force, lock) {
452
+ const top = this.spec.binarySubpath[0];
453
+ const { staging } = enginePaths(this.root, top);
454
+ const kept = readStaged(staging, top, this.spec.binarySubpath);
455
+ let etag;
456
+ if (kept && !force && (wanted === undefined || kept.etag === wanted)) {
457
+ etag = kept.etag;
458
+ }
459
+ else {
460
+ // An outdated tree goes before the download: its room counts.
461
+ rmSync(staging, { recursive: true, force: true });
462
+ const dl = await this.download(this.spec.browser, this.root, true);
463
+ this.stageEngine(dl.tmp, dl.etag);
464
+ etag = dl.etag;
465
+ }
466
+ this.swapStaged(lock);
467
+ return etag;
468
+ }
469
+ /** Unpacks the engine archive at `tmp` into the staging folder beside the
470
+ * live engine and checks every file the archive lists. Nothing installed is
471
+ * touched: the tree waits there, noted, until `swapStaged` moves it in. The
472
+ * archive is removed either way. */
473
+ stageEngine(tmp, etag) {
474
+ const top = this.spec.binarySubpath[0];
475
+ const { staging } = enginePaths(this.root, top);
476
+ const key = this.spec.browser.key;
477
+ const entry = this.spec.binarySubpath.join("/");
478
+ // Zips produced on Windows store backslashes; compare on one spelling.
479
+ const norm = (p) => p.replace(/\\/g, "/").replace(/^\.\//, "");
480
+ try {
481
+ // The table of contents sits at the end of the file: exactly what a
482
+ // download cut short is missing.
483
+ let listing;
484
+ try {
485
+ listing = zipListing(tmp);
486
+ }
487
+ catch (e) {
488
+ throw new Error(`download ${key}: not a readable zip (${e.message}) — not touching the installed engine`);
489
+ }
490
+ const names = listing.names.map(norm);
491
+ if (!names.includes(entry)) {
492
+ throw new Error(`download ${key}: no ${entry} inside — not touching the installed engine`);
493
+ }
494
+ // A dirty staging dir would mix an old engine into the new one; one we
495
+ // cannot clear stops the install while the engine still works.
496
+ rmSync(staging, { recursive: true, force: true });
497
+ assertRoom(this.root, listing.unpacked + SPACE_MARGIN);
498
+ try {
499
+ this.extractArchive(tmp, staging);
500
+ const gone = names.find((n) => n.startsWith(`${top}/`) && !n.endsWith("/") && !lexists(join(staging, n)));
501
+ if (gone)
502
+ throw new Error(`download ${key}: unpacked without ${gone} — an antivirus may have removed it`);
503
+ if (osPlatform() !== "win32")
504
+ fixUnixExecBits(join(staging, top));
505
+ writeFileSync(join(staging, STAGED_NOTE), JSON.stringify({ etag, files: countFiles(join(staging, top)) }));
506
+ }
507
+ catch (e) {
508
+ rmQuiet(staging);
509
+ throw e;
510
+ }
511
+ // Whatever else the archive carries (`__MACOSX` and such) replaces its
512
+ // namesake in the cache root, as extracting over the root used to do.
513
+ for (const name of readdirSync(staging)) {
514
+ if (name === top || name === STAGED_NOTE)
515
+ continue;
516
+ rmSync(join(this.root, name), { recursive: true, force: true });
517
+ renameSync(join(staging, name), join(this.root, name));
518
+ }
519
+ }
520
+ finally {
521
+ rmQuiet(tmp);
522
+ }
523
+ }
524
+ /** Swaps the staged tree in. Refused while processes run from the engine;
525
+ * every refusal keeps the staged tree for the next run. */
526
+ swapStaged(lock) {
527
+ const top = this.spec.binarySubpath[0];
528
+ const { staging, target } = enginePaths(this.root, top);
529
+ if (!readStaged(staging, top, this.spec.binarySubpath)) {
530
+ rmQuiet(staging);
531
+ throw new Error("the unpacked engine update is no longer complete (an antivirus may have removed a file); it is downloaded again on the next run");
532
+ }
533
+ if (lock && !lock.held())
534
+ throw new Error("another process took the engine install over");
535
+ const busy = engineHooks.processesUnder(target);
536
+ if (busy > 0) {
537
+ throw new Error(`${busy} process${busy === 1 ? " is" : "es are"} still running from ${target}; the update is kept `
538
+ + "and goes in once the browsers started from it are closed");
539
+ }
540
+ swapEngineTree(this.root, top, join(staging, top));
541
+ rmQuiet(staging);
542
+ }
338
543
  /** Downloads and unpacks in one step, for everything that has nothing to lose. */
339
544
  async downloadAndExtract(arch, dest) {
340
545
  const { tmp, etag } = await this.download(arch, dest);
@@ -348,7 +553,11 @@ export class Runtime {
348
553
  const src = join(this.root, wrapper, "WidevineCdm");
349
554
  if (!existsSync(src))
350
555
  return;
351
- const dst = join(this.root, ...this.spec.widevineSubpath);
556
+ // On macOS the CDM sits inside the framework's versioned folder. That is
557
+ // the version of the engine on disk, not the one this SDK was published
558
+ // with: the constant put it in a folder the engine never reads.
559
+ const onDisk = this.installedEngineVersion() ?? CHROMIUM_VERSION;
560
+ const dst = join(this.root, ...this.spec.widevineSubpath.map((seg) => (seg === CHROMIUM_VERSION ? onDisk : seg)));
352
561
  if (existsSync(dst))
353
562
  rmSync(dst, { recursive: true, force: true });
354
563
  mkdirSync(dirname(dst), { recursive: true });
@@ -400,6 +609,465 @@ export class Runtime {
400
609
  rmSync(staging, { recursive: true, force: true });
401
610
  }
402
611
  }
612
+ // ---- engine swap (#122) ----
613
+ // Shared with the Python and Rust SDKs, which use the same cache dir: in
614
+ // `<cache>`, `.install.lock`, `.<top>.staging/` (+ `staged.json`),
615
+ // `.<top>.previous` and the journal `.<top>.swapping` mean the same in all three.
616
+ /** Room kept free beyond what the unpacked engine takes. */
617
+ const SPACE_MARGIN = 256 * 1024 * 1024;
618
+ /** Unpacked bytes per archive byte, guessed before the archive is in. */
619
+ const UNPACK_GUESS = 3;
620
+ /** A lock this old is taken whoever holds it (a pid the OS gave to another). */
621
+ const LOCK_MAX_AGE_MS = 6 * 60 * 60 * 1000;
622
+ const STAGED_NOTE = "staged.json";
623
+ function enginePaths(root, top) {
624
+ return {
625
+ target: join(root, top),
626
+ previous: join(root, `.${top}.previous`),
627
+ journal: join(root, `.${top}.swapping`),
628
+ staging: join(root, `.${top}.staging`),
629
+ };
630
+ }
631
+ /** What the install asks the OS; tests swap in their own. */
632
+ export const engineHooks = { freeBytes, processesUnder };
633
+ const realFs = {
634
+ rename: (from, to) => renameSync(from, to),
635
+ rm: (path) => rmSync(path, { recursive: true, force: true }),
636
+ tries: 6,
637
+ };
638
+ /** `f` again while a file is held for now (an antivirus reading a new one);
639
+ * any other error at once. */
640
+ function retrySync(f, tries) {
641
+ let pause = 100;
642
+ for (let i = 1;; i++) {
643
+ try {
644
+ f();
645
+ return;
646
+ }
647
+ catch (e) {
648
+ const code = e.code;
649
+ const held = code === "EBUSY" || (osPlatform() === "win32" && (code === "EPERM" || code === "EACCES"));
650
+ if (i >= tries || !held)
651
+ throw e;
652
+ }
653
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, pause);
654
+ pause = Math.min(pause * 2, 2000);
655
+ }
656
+ }
657
+ /** Files and links under `dir`, links not followed. */
658
+ export function countFiles(dir) {
659
+ let entries;
660
+ try {
661
+ entries = readdirSync(dir, { withFileTypes: true });
662
+ }
663
+ catch {
664
+ return 0;
665
+ }
666
+ let n = 0;
667
+ for (const e of entries)
668
+ n += e.isDirectory() ? countFiles(join(dir, e.name)) : 1;
669
+ return n;
670
+ }
671
+ /** On disk before the rename it announces, whole or not at all. */
672
+ function writeJournal(path, files) {
673
+ const tmp = `${path}.tmp`;
674
+ const fd = openSync(tmp, "w");
675
+ try {
676
+ writeSync(fd, JSON.stringify({ files }));
677
+ fsyncSync(fd);
678
+ }
679
+ finally {
680
+ closeSync(fd);
681
+ }
682
+ renameSync(tmp, path);
683
+ }
684
+ function readJournal(path) {
685
+ try {
686
+ const v = JSON.parse(readFileSync(path, "utf8"));
687
+ return typeof v?.files === "number" ? v.files : undefined;
688
+ }
689
+ catch {
690
+ return undefined;
691
+ }
692
+ }
693
+ /** Puts `<root>/.<top>.previous` back when a run died between the two renames
694
+ * of an update (or could not undo the first) — only as its journal left it,
695
+ * and only whole. Any other copy is a leftover and goes: one a cleanup left
696
+ * half removed never stands in for a missing engine. True when put back. */
697
+ export function recoverEngine(root, top, fs = realFs) {
698
+ const { target, previous, journal } = enginePaths(root, top);
699
+ if (existsSync(previous)) {
700
+ const moved = readJournal(journal);
701
+ if (!existsSync(target) && moved !== undefined && countFiles(previous) === moved) {
702
+ // Still held: kept, with its journal, for the next try.
703
+ try {
704
+ retrySync(() => fs.rename(previous, target), fs.tries ?? 1);
705
+ }
706
+ catch {
707
+ return false;
708
+ }
709
+ rmQuiet(journal);
710
+ return true;
711
+ }
712
+ try {
713
+ fs.rm(previous);
714
+ }
715
+ catch { /* the next install() tries again */ }
716
+ }
717
+ if (!existsSync(previous))
718
+ rmQuiet(journal);
719
+ return false;
720
+ }
721
+ /** Swaps the complete tree at `staged` in for `<root>/<top>`: live → previous,
722
+ * staged → live, the first undone if the second fails. Any failure leaves the
723
+ * engine that was there (or `.previous` with its journal, put back by the
724
+ * next install()). */
725
+ export function swapEngineTree(root, top, staged, fs = realFs) {
726
+ const { target, previous, journal } = enginePaths(root, top);
727
+ const again = (f) => retrySync(f, fs.tries ?? 1);
728
+ recoverEngine(root, top, fs);
729
+ if (existsSync(previous)) {
730
+ throw new Error(existsSync(target)
731
+ ? `a copy of an earlier engine at ${previous} could not be removed; delete it and try again`
732
+ : `the previous engine at ${previous} could not be put back yet; close the browsers started from it and try again`);
733
+ }
734
+ const hadLive = existsSync(target);
735
+ if (hadLive) {
736
+ writeJournal(journal, countFiles(target));
737
+ try {
738
+ again(() => fs.rename(target, previous));
739
+ }
740
+ catch (e) {
741
+ rmQuiet(journal);
742
+ throw new Error(`the engine at ${target} is in use and was not replaced (${e.message}); `
743
+ + "close the browsers started from it and try again");
744
+ }
745
+ }
746
+ try {
747
+ again(() => fs.rename(staged, target));
748
+ }
749
+ catch (e) {
750
+ if (hadLive) {
751
+ try {
752
+ again(() => fs.rename(previous, target));
753
+ }
754
+ catch {
755
+ // The journal stays: it is what puts the engine back.
756
+ throw new Error(`replacing the engine failed (${e.message}) and the previous one could not be `
757
+ + `put back yet; it is kept at ${previous} and restored by the next install()`);
758
+ }
759
+ rmQuiet(journal);
760
+ }
761
+ throw e;
762
+ }
763
+ rmQuiet(journal);
764
+ // A tree Windows still holds is clutter: the next install() removes it.
765
+ try {
766
+ fs.rm(previous);
767
+ }
768
+ catch { /* clutter */ }
769
+ }
770
+ /** A tree an earlier run unpacked, checked and noted, still whole. */
771
+ function readStaged(staging, top, binarySubpath) {
772
+ try {
773
+ const v = JSON.parse(readFileSync(join(staging, STAGED_NOTE), "utf8"));
774
+ if (typeof v?.etag !== "string" || typeof v?.files !== "number")
775
+ return undefined;
776
+ const tree = join(staging, top);
777
+ if (!existsSync(join(staging, ...binarySubpath)) || countFiles(tree) !== v.files)
778
+ return undefined;
779
+ return { etag: v.etag, files: v.files };
780
+ }
781
+ catch {
782
+ return undefined;
783
+ }
784
+ }
785
+ /** What an install that died left: an unfinished staging folder, a partial
786
+ * download. A checked staged tree stays for the next swap. */
787
+ function sweepLeftovers(root, top, key, binarySubpath) {
788
+ const { staging } = enginePaths(root, top);
789
+ if (existsSync(staging) && !readStaged(staging, top, binarySubpath))
790
+ rmQuiet(staging);
791
+ rmQuiet(join(root, `.${key}.tmp`));
792
+ }
793
+ /** Bytes the current user may still write on the disk holding `dir`. */
794
+ export function freeBytes(dir) {
795
+ // Node 18.15 and later.
796
+ const statfs = nodeFs.statfsSync;
797
+ if (!statfs)
798
+ return undefined;
799
+ try {
800
+ const s = statfs(dir);
801
+ return s.bavail * s.bsize;
802
+ }
803
+ catch {
804
+ return undefined;
805
+ }
806
+ }
807
+ function assertRoom(dir, need) {
808
+ const free = engineHooks.freeBytes(dir);
809
+ if (free !== undefined && free < need) {
810
+ const mb = (n) => Math.ceil(n / (1 << 20));
811
+ throw new Error(`not enough free disk space for the engine update: it needs about ${mb(need)} MB and `
812
+ + `${mb(free)} MB is free in ${dir}; the engine you have was not touched`);
813
+ }
814
+ }
815
+ /** How many processes run from `dir`. On macOS and Linux a swap would pull
816
+ * the files from under them; Windows refuses the rename itself. */
817
+ export function processesUnder(dir) {
818
+ // As given and as resolved: a process names the path it was started by.
819
+ let roots;
820
+ try {
821
+ roots = [...new Set([resolve(dir), realpathSync(dir)])].map((r) => r.replace(/[\\/]+$/, "") + sep);
822
+ }
823
+ catch {
824
+ return 0;
825
+ }
826
+ const under = (p) => roots.some((r) => p.startsWith(r));
827
+ if (osPlatform() === "linux") {
828
+ let pids;
829
+ try {
830
+ pids = readdirSync("/proc");
831
+ }
832
+ catch {
833
+ return 0;
834
+ }
835
+ let n = 0;
836
+ for (const pid of pids) {
837
+ if (!/^\d+$/.test(pid))
838
+ continue;
839
+ // A replaced binary reads "<path> (deleted)": still that folder.
840
+ try {
841
+ if (under(readlinkSync(`/proc/${pid}/exe`).replace(/ \(deleted\)$/, "")))
842
+ n++;
843
+ }
844
+ catch { /* gone, or not ours */ }
845
+ }
846
+ return n;
847
+ }
848
+ if (osPlatform() === "darwin") {
849
+ const r = spawnSync("ps", ["-axwwo", "comm="], { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] });
850
+ return (r.stdout ?? "").split("\n").filter((l) => under(l.trim())).length;
851
+ }
852
+ return 0;
853
+ }
854
+ /** One install at a time over a cache dir, across processes and the three
855
+ * SDKs (same file, same rules). A holder that died is taken over. */
856
+ export class InstallLock {
857
+ path;
858
+ token;
859
+ constructor(path, token) {
860
+ this.path = path;
861
+ this.token = token;
862
+ }
863
+ static async acquire(root, opts = {}) {
864
+ const path = join(root, ".install.lock");
865
+ const token = randomBytes(8).toString("hex");
866
+ let told = false;
867
+ for (;;) {
868
+ if (createLock(path, token))
869
+ return new InstallLock(path, token);
870
+ const seen = readLock(path);
871
+ if (seen === null)
872
+ continue; // released meanwhile
873
+ if (lockIsStale(path, seen)) {
874
+ stealLock(path, seen, token);
875
+ continue;
876
+ }
877
+ if (!told && seen.pid !== process.pid) {
878
+ console.warn(`[shardx] waiting for another process (pid ${seen.pid ?? "?"}) to finish installing the engine… `
879
+ + `(if none is running, delete ${path})`);
880
+ told = true;
881
+ }
882
+ await new Promise((r) => setTimeout(r, (opts.pollMs ?? 500) + Math.random() * 100));
883
+ }
884
+ }
885
+ /** Still ours: nobody took it over as stale. */
886
+ held() { return readLock(this.path)?.token === this.token; }
887
+ release() {
888
+ if (this.held()) {
889
+ try {
890
+ unlinkSync(this.path);
891
+ }
892
+ catch { /* gone */ }
893
+ }
894
+ }
895
+ }
896
+ function createLock(path, token) {
897
+ let fd;
898
+ try {
899
+ fd = openSync(path, "wx");
900
+ }
901
+ catch (e) {
902
+ if (e.code === "EEXIST")
903
+ return false;
904
+ throw e;
905
+ }
906
+ try {
907
+ writeSync(fd, JSON.stringify({ pid: process.pid, host: hostname().toLowerCase(), token, at: Date.now() }));
908
+ fsyncSync(fd);
909
+ }
910
+ finally {
911
+ closeSync(fd);
912
+ }
913
+ return true;
914
+ }
915
+ /** null when there is no lock; {} when it cannot be read as one. */
916
+ function readLock(path) {
917
+ let text;
918
+ try {
919
+ text = readFileSync(path, "utf8");
920
+ }
921
+ catch {
922
+ return null;
923
+ }
924
+ try {
925
+ const v = JSON.parse(text);
926
+ return v && typeof v === "object" ? v : {};
927
+ }
928
+ catch {
929
+ return {};
930
+ }
931
+ }
932
+ function lockIsStale(path, l) {
933
+ let mtime;
934
+ try {
935
+ mtime = statSync(path).mtimeMs;
936
+ }
937
+ catch {
938
+ return false;
939
+ }
940
+ // Unreadable: being written this instant, or by a process that died doing so.
941
+ if (typeof l.token !== "string")
942
+ return Date.now() - mtime > 10_000;
943
+ if (Date.now() - (typeof l.at === "number" ? l.at : mtime) > LOCK_MAX_AGE_MS)
944
+ return true;
945
+ // Another computer's process cannot be asked about.
946
+ if (l.host !== hostname().toLowerCase())
947
+ return false;
948
+ return !pidAlive(l.pid);
949
+ }
950
+ export function pidAlive(pid) {
951
+ if (typeof pid !== "number" || pid <= 0)
952
+ return false;
953
+ try {
954
+ process.kill(pid, 0);
955
+ return true;
956
+ }
957
+ catch (e) {
958
+ return e.code === "EPERM";
959
+ }
960
+ }
961
+ /** Moves the stale lock aside and drops it, unless what moved was a fresh one
962
+ * another process took in the meantime: that one is put back. */
963
+ function stealLock(path, seen, token) {
964
+ const aside = `${path}.stale-${token}`;
965
+ try {
966
+ renameSync(path, aside);
967
+ }
968
+ catch {
969
+ return;
970
+ }
971
+ const got = readLock(aside);
972
+ if (got && got.token !== seen.token) {
973
+ try {
974
+ linkSync(aside, path);
975
+ }
976
+ catch { /* a third one has it */ }
977
+ }
978
+ try {
979
+ unlinkSync(aside);
980
+ }
981
+ catch { /* gone */ }
982
+ }
983
+ /** The archive's own table of contents, read from its end without loading the
984
+ * rest: entry names and the bytes they unpack to. Throws when there is none. */
985
+ export function zipListing(path) {
986
+ const fd = openSync(path, "r");
987
+ try {
988
+ const size = fstatSync(fd).size;
989
+ const tailLen = Math.min(size, 22 + 0xffff);
990
+ const tail = Buffer.alloc(tailLen);
991
+ readSync(fd, tail, 0, tailLen, size - tailLen);
992
+ let end = -1;
993
+ for (let i = tailLen - 22; i >= 0; i--) {
994
+ if (tail.readUInt32LE(i) === 0x06054b50) {
995
+ end = i;
996
+ break;
997
+ }
998
+ }
999
+ if (end < 0)
1000
+ throw new Error("no end of central directory");
1001
+ let count = tail.readUInt16LE(end + 10);
1002
+ let cdSize = tail.readUInt32LE(end + 12);
1003
+ let cdOff = tail.readUInt32LE(end + 16);
1004
+ if (count === 0xffff || cdSize === 0xffffffff || cdOff === 0xffffffff) {
1005
+ // ZIP64: its locator sits just before the end record.
1006
+ const loc = end - 20;
1007
+ if (loc < 0 || tail.readUInt32LE(loc) !== 0x07064b50)
1008
+ throw new Error("no zip64 locator");
1009
+ const rec = Buffer.alloc(56);
1010
+ readSync(fd, rec, 0, 56, Number(tail.readBigUInt64LE(loc + 8)));
1011
+ if (rec.readUInt32LE(0) !== 0x06064b50)
1012
+ throw new Error("no zip64 end record");
1013
+ count = Number(rec.readBigUInt64LE(32));
1014
+ cdSize = Number(rec.readBigUInt64LE(40));
1015
+ cdOff = Number(rec.readBigUInt64LE(48));
1016
+ }
1017
+ if (cdOff + cdSize > size)
1018
+ throw new Error("central directory past the end of the file");
1019
+ const cd = Buffer.alloc(cdSize);
1020
+ readSync(fd, cd, 0, cdSize, cdOff);
1021
+ const names = [];
1022
+ let unpacked = 0;
1023
+ let p = 0;
1024
+ for (let n = 0; n < count; n++) {
1025
+ if (p + 46 > cd.length || cd.readUInt32LE(p) !== 0x02014b50)
1026
+ throw new Error("damaged central directory");
1027
+ let usize = cd.readUInt32LE(p + 24);
1028
+ const nameLen = cd.readUInt16LE(p + 28);
1029
+ const extraLen = cd.readUInt16LE(p + 30);
1030
+ const commentLen = cd.readUInt16LE(p + 32);
1031
+ names.push(cd.toString("utf8", p + 46, p + 46 + nameLen));
1032
+ if (usize === 0xffffffff) {
1033
+ // The zip64 extra field leads with the real size.
1034
+ for (let e = p + 46 + nameLen; e + 4 <= p + 46 + nameLen + extraLen;) {
1035
+ const id = cd.readUInt16LE(e);
1036
+ const len = cd.readUInt16LE(e + 2);
1037
+ if (id === 0x0001 && len >= 8) {
1038
+ usize = Number(cd.readBigUInt64LE(e + 4));
1039
+ break;
1040
+ }
1041
+ e += 4 + len;
1042
+ }
1043
+ }
1044
+ unpacked += usize;
1045
+ p += 46 + nameLen + extraLen + commentLen;
1046
+ }
1047
+ return { names, unpacked };
1048
+ }
1049
+ finally {
1050
+ closeSync(fd);
1051
+ }
1052
+ }
1053
+ function lexists(p) {
1054
+ try {
1055
+ lstatSync(p);
1056
+ return true;
1057
+ }
1058
+ catch {
1059
+ return false;
1060
+ }
1061
+ }
1062
+ /** Delete that is allowed to fail: a staging or backup dir we cannot remove
1063
+ * (Windows holds files of a running engine open) is clutter, not a reason to
1064
+ * report an install that already succeeded as failed. */
1065
+ function rmQuiet(p) {
1066
+ try {
1067
+ rmSync(p, { recursive: true, force: true });
1068
+ }
1069
+ catch { /* clutter */ }
1070
+ }
403
1071
  /** Extract via /usr/bin/unzip — preserves symlinks and permission
404
1072
  * bits that adm-zip silently drops. Required for any macOS .app
405
1073
  * bundle (Versions/Current symlinks + Helper exec bits).
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proxyshard/shardx",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "description": "Self-contained Node SDK for the ShardX anti-detect browser — downloads the engine + Widevine + fingerprint library on first use, launches isolated profiles.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -18,6 +18,7 @@
18
18
  ],
19
19
  "scripts": {
20
20
  "build": "tsc",
21
+ "test": "tsc && node --test test/*.test.mjs",
21
22
  "prepublishOnly": "npm run build"
22
23
  },
23
24
  "engines": {