clearcote 0.16.0 → 0.17.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/dist/license.d.ts CHANGED
@@ -31,12 +31,11 @@ export interface LeaseSession {
31
31
  stop(): Promise<void>;
32
32
  }
33
33
  /**
34
- * Acquire a concurrency lease if a license key is configured.
35
- *
36
- * Returns `null` in free mode (no key) — the caller launches normally with no
37
- * token. Throws {@link ConcurrencyLimitError} / {@link LicenseRevokedError} /
38
- * {@link LicenseError} when a key IS present but the backend refuses. On a
39
- * network failure with a still-valid cached token, resumes offline (degraded).
34
+ * Acquire a per-MACHINE concurrency lease, shared across every launch in this
35
+ * process (checks out ~once per token-TTL, not once per launch). Returns `null` in
36
+ * free mode. Throws {@link ConcurrencyLimitError} / {@link LicenseRevokedError} /
37
+ * {@link LicenseError} only on a cold checkout the backend definitively refuses;
38
+ * falls back to a cached, still-valid token on a transient network failure.
40
39
  */
41
40
  export declare function acquireLease(opts?: LicenseOptions & {
42
41
  sdkVersion?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../src/license.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,cAAc;IAC7B;sFACkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,YAAa,SAAQ,KAAK;IACrC,IAAI,EAAE,MAAM,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,IAAI,SAAkB;CAKpD;AACD,qBAAa,qBAAsB,SAAQ,YAAY;gBACzC,OAAO,EAAE,MAAM;CAI5B;AACD,qBAAa,mBAAoB,SAAQ,YAAY;gBACvC,OAAO,EAAE,MAAM;CAI5B;AAED,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAcvE;AAED;;;;0EAI0E;AAC1E,wBAAgB,iBAAiB,IAAI,MAAM,CAqB1C;AA0DD,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,IAAI,GAAE,cAAc,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACnE,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAuF9B;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,GACtD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB"}
1
+ {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../src/license.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,cAAc;IAC7B;sFACkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,YAAa,SAAQ,KAAK;IACrC,IAAI,EAAE,MAAM,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,IAAI,SAAkB;CAKpD;AACD,qBAAa,qBAAsB,SAAQ,YAAY;gBACzC,OAAO,EAAE,MAAM;CAI5B;AACD,qBAAa,mBAAoB,SAAQ,YAAY;gBACvC,OAAO,EAAE,MAAM;CAI5B;AAED,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAcvE;AAED;;;;0EAI0E;AAC1E,wBAAgB,iBAAiB,IAAI,MAAM,CAqB1C;AA4DD,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AA4KD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,IAAI,GAAE,cAAc,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACnE,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAiB9B;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,GACtD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB"}
package/dist/license.js CHANGED
@@ -90,7 +90,9 @@ function apiBase(opts) {
90
90
  return (opts.licenseApiBase || process.env.CLEARCOTE_LICENSE_API || DEFAULT_API_BASE).replace(/\/$/, "");
91
91
  }
92
92
  const osTag = () => ({ win32: "windows", linux: "linux", darwin: "macos" }[process.platform] ?? "unknown");
93
- // ── offline token cache (best-effort grace) ───────────────────────────────
93
+ // ── shared token cache (cross-process reuse + offline grace) ───────────────
94
+ // {token, exp, lease_id}. A second process on the machine reuses a still-valid
95
+ // token instead of checking out again. Older caches without lease_id are honored.
94
96
  function cachePath(licenseKey) {
95
97
  const id = createHash("sha256").update(licenseKey).digest("hex").slice(0, 16);
96
98
  return join(homedir(), ".clearcote", `lease-${id}.json`);
@@ -106,11 +108,11 @@ function readCache(licenseKey) {
106
108
  }
107
109
  return null;
108
110
  }
109
- function writeCache(licenseKey, token, exp) {
111
+ function writeCache(licenseKey, token, exp, leaseId) {
110
112
  try {
111
113
  const dir = join(homedir(), ".clearcote");
112
114
  mkdirSync(dir, { recursive: true });
113
- writeFileSync(cachePath(licenseKey), JSON.stringify({ token, exp }));
115
+ writeFileSync(cachePath(licenseKey), JSON.stringify({ token, exp, lease_id: leaseId ?? null }));
114
116
  }
115
117
  catch {
116
118
  /* ignore */
@@ -131,102 +133,203 @@ function throwForStatus(status, body) {
131
133
  throw new LicenseRevokedError(msg);
132
134
  throw new LicenseError(msg, body?.code || `HTTP_${status}`);
133
135
  }
136
+ // Seconds of headroom kept before a token's exp: reuse it only while still valid
137
+ // with this much slack, so an in-flight launch never ships an expiring token.
138
+ const SKEW_SEC = 60;
134
139
  /**
135
- * Acquire a concurrency lease if a license key is configured.
140
+ * One shared lease per (process, license key).
136
141
  *
137
- * Returns `null` in free mode (no key) — the caller launches normally with no
138
- * token. Throws {@link ConcurrencyLimitError} / {@link LicenseRevokedError} /
139
- * {@link LicenseError} when a key IS present but the backend refuses. On a
140
- * network failure with a still-valid cached token, resumes offline (degraded).
142
+ * Concurrency is per-MACHINE (the backend dedups by instance_id), so re-checking
143
+ * out on every launch is redundant — the machine already holds its one slot. This
144
+ * checks out at most once per token-TTL and lets every launch in the process share
145
+ * the same run-token, cutting backend calls from O(launches) to O(TTL windows).
146
+ * Only the cold-checkout owner heartbeats + checks in at exit; a process that
147
+ * reuses a still-valid on-disk token makes no backend calls at all.
141
148
  */
142
- export async function acquireLease(opts = {}) {
143
- const licenseKey = resolveLicenseKey(opts.licenseKey);
144
- if (!licenseKey)
145
- return null; // free mode — inert
146
- const base = apiBase(opts);
147
- const instanceId = resolveInstanceId();
148
- const warn = (m) => {
149
- if (!opts.quiet)
150
- process.stderr.write(`[clearcote] [license] ${m}\n`);
151
- };
152
- let checkout;
153
- try {
154
- const res = await postJson(`${base}/api/v1/lease/checkout`, licenseKey, {
155
- instance_id: instanceId,
156
- os: osTag(),
157
- sdk_version: opts.sdkVersion,
158
- });
159
- if (!res.ok) {
160
- const body = (await res.json().catch(() => ({})));
161
- throwForStatus(res.status, body);
162
- }
163
- checkout = (await res.json());
164
- writeCache(licenseKey, checkout.token, checkout.exp);
165
- }
166
- catch (e) {
167
- // A definitive licensing verdict must surface (never silently downgrade).
168
- if (e instanceof LicenseError)
169
- throw e;
170
- // Network/other failure: fall back to a cached, still-valid token if we have one.
171
- const cached = readCache(licenseKey);
149
+ class MachineLease {
150
+ key;
151
+ base;
152
+ instanceId;
153
+ sdkVersion;
154
+ quiet;
155
+ token = null;
156
+ exp = 0;
157
+ leaseId = null;
158
+ hbSec = 270;
159
+ owner = false;
160
+ timer = null;
161
+ refs = 0;
162
+ ensuring = null;
163
+ constructor(key, base, instanceId, sdkVersion, quiet) {
164
+ this.key = key;
165
+ this.base = base;
166
+ this.instanceId = instanceId;
167
+ this.sdkVersion = sdkVersion;
168
+ this.quiet = quiet;
169
+ }
170
+ valid() {
171
+ return !!this.token && this.exp > Math.floor(Date.now() / 1000) + SKEW_SEC;
172
+ }
173
+ /** Serialize concurrent ensures so only one cold checkout happens. */
174
+ ensure() {
175
+ if (this.valid())
176
+ return Promise.resolve();
177
+ if (!this.ensuring)
178
+ this.ensuring = this._ensure().finally(() => { this.ensuring = null; });
179
+ return this.ensuring;
180
+ }
181
+ async _ensure() {
182
+ if (this.valid())
183
+ return;
172
184
  const now = Math.floor(Date.now() / 1000);
173
- if (cached && cached.exp > now + 60) {
174
- warn(`backend unreachable (${String(e)}); using cached run-token (offline grace).`);
175
- return { token: cached.token, leaseId: "cached", stop: async () => { } };
185
+ const cached = readCache(this.key);
186
+ if (cached && cached.exp > now + SKEW_SEC) {
187
+ // cross-process reuse: another process's owner keeps the slot alive.
188
+ this.token = cached.token;
189
+ this.exp = cached.exp;
190
+ this.leaseId = cached.lease_id ?? null;
191
+ this.owner = false;
192
+ return; // NO checkout, NO heartbeat
176
193
  }
177
- throw new LicenseError(`Could not reach the license server and no valid cached token: ${String(e)}`);
194
+ await this.checkout();
195
+ this.owner = true;
196
+ this.startHeartbeat();
178
197
  }
179
- let leaseId = checkout.lease_id;
180
- let currentToken = checkout.token;
181
- const hbMs = Math.max(5, checkout.heartbeat_interval_sec || 30) * 1000;
182
- const timer = setInterval(async () => {
198
+ async checkout() {
183
199
  try {
184
- const res = await postJson(`${base}/api/v1/lease/heartbeat`, licenseKey, { lease_id: leaseId, nonce: randomUUID() });
185
- if (res.status === 409) {
186
- // Lease reclaimed/expired server-side — re-check out to keep the slot.
187
- const co = await postJson(`${base}/api/v1/lease/checkout`, licenseKey, {
188
- instance_id: instanceId, os: osTag(), sdk_version: opts.sdkVersion,
189
- });
190
- if (co.ok) {
191
- const data = (await co.json());
192
- leaseId = data.lease_id;
193
- currentToken = data.token;
194
- writeCache(licenseKey, data.token, data.exp);
195
- }
196
- return;
197
- }
198
- if (res.ok) {
199
- const data = (await res.json());
200
- currentToken = data.token;
201
- writeCache(licenseKey, data.token, data.exp);
200
+ const res = await postJson(`${this.base}/api/v1/lease/checkout`, this.key, {
201
+ instance_id: this.instanceId,
202
+ os: osTag(),
203
+ sdk_version: this.sdkVersion,
204
+ });
205
+ if (!res.ok) {
206
+ const body = (await res.json().catch(() => ({})));
207
+ throwForStatus(res.status, body);
202
208
  }
209
+ const co = (await res.json());
210
+ this.token = co.token;
211
+ this.exp = co.exp;
212
+ this.leaseId = co.lease_id;
213
+ this.hbSec = Math.max(5, co.heartbeat_interval_sec || 270);
214
+ writeCache(this.key, co.token, co.exp, co.lease_id);
203
215
  }
204
- catch {
205
- /* transient — offline grace until token exp */
216
+ catch (e) {
217
+ if (e instanceof LicenseError)
218
+ throw e; // definitive verdict must surface
219
+ const cached = readCache(this.key);
220
+ const now = Math.floor(Date.now() / 1000);
221
+ if (cached && cached.exp > now + SKEW_SEC) {
222
+ if (!this.quiet)
223
+ process.stderr.write(`[clearcote] [license] backend unreachable (${String(e)}); using cached run-token.\n`);
224
+ this.token = cached.token;
225
+ this.exp = cached.exp;
226
+ this.leaseId = cached.lease_id ?? null;
227
+ return;
228
+ }
229
+ throw new LicenseError(`Could not reach the license server and no valid cached token: ${String(e)}`);
206
230
  }
207
- }, hbMs);
208
- // Don't keep the process alive just for the heartbeat.
209
- timer.unref?.();
210
- let stopped = false;
211
- const stop = async () => {
212
- if (stopped)
231
+ }
232
+ startHeartbeat() {
233
+ if (this.timer)
213
234
  return;
214
- stopped = true;
215
- clearInterval(timer);
216
- try {
217
- await postJson(`${base}/api/v1/lease/checkin`, licenseKey, { lease_id: leaseId });
235
+ this.timer = setInterval(async () => {
236
+ try {
237
+ const res = await postJson(`${this.base}/api/v1/lease/heartbeat`, this.key, {
238
+ lease_id: this.leaseId,
239
+ nonce: randomUUID(),
240
+ });
241
+ if (res.status === 409) {
242
+ const co = await postJson(`${this.base}/api/v1/lease/checkout`, this.key, {
243
+ instance_id: this.instanceId,
244
+ os: osTag(),
245
+ sdk_version: this.sdkVersion,
246
+ });
247
+ if (co.ok) {
248
+ const d = (await co.json());
249
+ this.leaseId = d.lease_id;
250
+ this.token = d.token;
251
+ this.exp = d.exp;
252
+ writeCache(this.key, d.token, d.exp, d.lease_id);
253
+ }
254
+ return;
255
+ }
256
+ if (res.ok) {
257
+ const d = (await res.json());
258
+ this.token = d.token;
259
+ this.exp = d.exp;
260
+ writeCache(this.key, d.token, d.exp, this.leaseId ?? undefined);
261
+ }
262
+ }
263
+ catch {
264
+ /* transient — offline grace until token exp */
265
+ }
266
+ }, this.hbSec * 1000);
267
+ this.timer.unref?.();
268
+ }
269
+ async acquire() {
270
+ await this.ensure();
271
+ this.refs++;
272
+ const self = this;
273
+ return {
274
+ get token() {
275
+ return self.token;
276
+ },
277
+ get leaseId() {
278
+ return (self.leaseId ?? "cached");
279
+ },
280
+ // Per-launch close: refcount only. The machine slot is held for the process
281
+ // lifetime and reclaimed by TTL after the heartbeat stops (see shutdown()).
282
+ stop: async () => {
283
+ self.release();
284
+ },
285
+ };
286
+ }
287
+ release() {
288
+ if (this.refs > 0)
289
+ this.refs--;
290
+ }
291
+ async shutdown() {
292
+ if (this.timer) {
293
+ clearInterval(this.timer);
294
+ this.timer = null;
218
295
  }
219
- catch {
220
- /* best-effort; the lease TTL will reclaim it anyway */
296
+ if (this.owner && this.leaseId) {
297
+ try {
298
+ await postJson(`${this.base}/api/v1/lease/checkin`, this.key, { lease_id: this.leaseId });
299
+ }
300
+ catch {
301
+ /* best-effort; the lease TTL reclaims it anyway */
302
+ }
221
303
  }
222
- };
223
- return {
224
- get token() {
225
- return currentToken;
226
- },
227
- leaseId,
228
- stop,
229
- };
304
+ }
305
+ }
306
+ const machineLeases = new Map();
307
+ let exitHooked = false;
308
+ /**
309
+ * Acquire a per-MACHINE concurrency lease, shared across every launch in this
310
+ * process (checks out ~once per token-TTL, not once per launch). Returns `null` in
311
+ * free mode. Throws {@link ConcurrencyLimitError} / {@link LicenseRevokedError} /
312
+ * {@link LicenseError} only on a cold checkout the backend definitively refuses;
313
+ * falls back to a cached, still-valid token on a transient network failure.
314
+ */
315
+ export async function acquireLease(opts = {}) {
316
+ const licenseKey = resolveLicenseKey(opts.licenseKey);
317
+ if (!licenseKey)
318
+ return null; // free mode — inert
319
+ const base = apiBase(opts);
320
+ let ml = machineLeases.get(licenseKey);
321
+ if (!ml) {
322
+ ml = new MachineLease(licenseKey, base, resolveInstanceId(), opts.sdkVersion, !!opts.quiet);
323
+ machineLeases.set(licenseKey, ml);
324
+ }
325
+ if (!exitHooked) {
326
+ exitHooked = true;
327
+ process.once("beforeExit", () => {
328
+ for (const m of machineLeases.values())
329
+ void m.shutdown();
330
+ });
331
+ }
332
+ return ml.acquire();
230
333
  }
231
334
  /** Merge the run-token into a child-process env (base defaults to the parent env). */
232
335
  export function withRunToken(token, baseEnv) {
@@ -1 +1 @@
1
- {"version":3,"file":"license.js","sourceRoot":"","sources":["../src/license.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"license.js","sourceRoot":"","sources":["../src/license.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,2EAA2E;AAC3E,kFAAkF;AAClF,gFAAgF;AAChF,+EAA+E;AAC/E,6DAA6D;AAC7D,EAAE;AACF,8EAA8E;AAC9E,wEAAwE;AAExE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAErD,gFAAgF;AAChF,MAAM,gBAAgB,GAAG,+BAA+B,CAAC;AACzD,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAU5C,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,IAAI,CAAS;IACb,YAAY,OAAe,EAAE,IAAI,GAAG,eAAe;QACjD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AACD,MAAM,OAAO,qBAAsB,SAAQ,YAAY;IACrD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AACD,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IACnD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,8FAA8F;AAC9F,MAAM,UAAU,iBAAiB,CAAC,QAAiB;IACjD,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAC9C,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;QACvD,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACzC,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;0EAI0E;AAC1E,MAAM,UAAU,iBAAiB;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAC9C,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACnC,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACzC,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;IACD,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxB,IAAI,CAAC;QACH,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,aAAa,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,+EAA+E;IACjF,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,OAAO,CAAC,IAAoB;IACnC,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3G,CAAC;AAED,MAAM,KAAK,GAAG,GAAW,EAAE,CACzB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAA6B,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAA,CAAC;AAEnH,8EAA8E;AAC9E,+EAA+E;AAC/E,kFAAkF;AAClF,SAAS,SAAS,CAAC,UAAkB;IACnC,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9E,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AACD,SAAS,SAAS,CAAC,UAAkB;IACnC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AACD,SAAS,UAAU,CAAC,UAAkB,EAAE,KAAa,EAAE,GAAW,EAAE,OAAgB;IAClF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;QAC1C,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IAClG,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;AACH,CAAC;AAWD,KAAK,UAAU,QAAQ,CAAC,GAAW,EAAE,UAAkB,EAAE,IAAa;IACpE,OAAO,KAAK,CAAC,GAAG,EAAE;QAChB,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,UAAU,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QACtF,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,IAAuC;IAC7E,MAAM,GAAG,GAAG,IAAI,EAAE,KAAK,IAAI,2BAA2B,MAAM,IAAI,CAAC;IACjE,IAAI,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,4BAA4B;QAAE,MAAM,IAAI,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACxG,IAAI,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,iBAAiB,IAAI,IAAI,EAAE,IAAI,KAAK,iBAAiB;QACxF,MAAM,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,IAAI,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,QAAQ,MAAM,EAAE,CAAC,CAAC;AAC9D,CAAC;AAUD,iFAAiF;AACjF,8EAA8E;AAC9E,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB;;;;;;;;;GASG;AACH,MAAM,YAAY;IAWG;IACA;IACA;IACA;IACA;IAdnB,KAAK,GAAkB,IAAI,CAAC;IAC5B,GAAG,GAAG,CAAC,CAAC;IACR,OAAO,GAAkB,IAAI,CAAC;IACtB,KAAK,GAAG,GAAG,CAAC;IACZ,KAAK,GAAG,KAAK,CAAC;IACd,KAAK,GAA0B,IAAI,CAAC;IACpC,IAAI,GAAG,CAAC,CAAC;IACT,QAAQ,GAAyB,IAAI,CAAC;IAE9C,YACmB,GAAW,EACX,IAAY,EACZ,UAAkB,EAClB,UAA8B,EAC9B,KAAc;QAJd,QAAG,GAAH,GAAG,CAAQ;QACX,SAAI,GAAJ,IAAI,CAAQ;QACZ,eAAU,GAAV,UAAU,CAAQ;QAClB,eAAU,GAAV,UAAU,CAAoB;QAC9B,UAAK,GAAL,KAAK,CAAS;IAC9B,CAAC;IAEI,KAAK;QACX,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC;IAC7E,CAAC;IAED,sEAAsE;IACtE,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,QAAQ,EAAE,CAAC;YAC1C,qEAAqE;YACrE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC1B,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;YACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO,CAAC,4BAA4B;QACtC,CAAC;QACD,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,wBAAwB,EAAE,IAAI,CAAC,GAAG,EAAE;gBACzE,WAAW,EAAE,IAAI,CAAC,UAAU;gBAC5B,EAAE,EAAE,KAAK,EAAE;gBACX,WAAW,EAAE,IAAI,CAAC,UAAU;aAC7B,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAsC,CAAC;gBACvF,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACnC,CAAC;YACD,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqB,CAAC;YAClD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;YACtB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC;YAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,IAAI,GAAG,CAAC,CAAC;YAC3D,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,YAAY;gBAAE,MAAM,CAAC,CAAC,CAAC,kCAAkC;YAC1E,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAC1C,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,QAAQ,EAAE,CAAC;gBAC1C,IAAI,CAAC,IAAI,CAAC,KAAK;oBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,MAAM,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC;gBAC9G,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC1B,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;gBACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;gBACvC,OAAO;YACT,CAAC;YACD,MAAM,IAAI,YAAY,CAAC,iEAAiE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvG,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QACvB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;YAClC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,yBAAyB,EAAE,IAAI,CAAC,GAAG,EAAE;oBAC1E,QAAQ,EAAE,IAAI,CAAC,OAAO;oBACtB,KAAK,EAAE,UAAU,EAAE;iBACpB,CAAC,CAAC;gBACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACvB,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,wBAAwB,EAAE,IAAI,CAAC,GAAG,EAAE;wBACxE,WAAW,EAAE,IAAI,CAAC,UAAU;wBAC5B,EAAE,EAAE,KAAK,EAAE;wBACX,WAAW,EAAE,IAAI,CAAC,UAAU;qBAC7B,CAAC,CAAC;oBACH,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;wBACV,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAqB,CAAC;wBAChD,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC;wBAC1B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;wBACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;wBACjB,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;oBACnD,CAAC;oBACD,OAAO;gBACT,CAAC;gBACD,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;oBACX,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAmC,CAAC;oBAC/D,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;oBACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;oBACjB,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,+CAA+C;YACjD,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,KAA2C,CAAC,KAAK,EAAE,EAAE,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO;YACL,IAAI,KAAK;gBACP,OAAO,IAAI,CAAC,KAAe,CAAC;YAC9B,CAAC;YACD,IAAI,OAAO;gBACT,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAW,CAAC;YAC9C,CAAC;YACD,4EAA4E;YAC5E,4EAA4E;YAC5E,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;SACc,CAAC;IACpB,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,uBAAuB,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5F,CAAC;YAAC,MAAM,CAAC;gBACP,mDAAmD;YACrD,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,aAAa,GAAG,IAAI,GAAG,EAAwB,CAAC;AACtD,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAkE,EAAE;IAEpE,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC,CAAC,oBAAoB;IAElD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,EAAE,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5F,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,IAAI,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;YAC9B,KAAK,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE;gBAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;AACtB,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,YAAY,CAC1B,KAAa,EACb,OAAuD;IAEvD,MAAM,GAAG,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;IACnC,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,IAAI,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1E,GAAG,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;IAC3B,OAAO,GAAG,CAAC;AACb,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clearcote",
3
- "version": "0.16.0",
3
+ "version": "0.17.0",
4
4
  "description": "Playwright drop-in for the Clearcote anti-fingerprint Chromium build. launch() returns a standard Playwright Browser backed by the verified Clearcote binary, which is auto-downloaded and SHA-256 checked.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",