@offscript/sdk 0.1.6 → 0.1.7

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.
@@ -1,4 +1,4 @@
1
- import { buildPlaywrightContract, SDK_VERSION, SelectorGenerator, ACTION_SCHEMA_VERSION } from './chunk-KHKIWCLM.js';
1
+ import { buildPlaywrightContract, SDK_VERSION, SelectorGenerator, ACTION_SCHEMA_VERSION } from './chunk-4EPIPNDL.js';
2
2
 
3
3
  // src/types/config.ts
4
4
  var DEFAULT_RECORDING = {
@@ -2213,6 +2213,7 @@ var SUCCESS_TEMPLATE = `
2213
2213
  var TOKEN_STORAGE_KEY = "offscript-session-token";
2214
2214
  var DRAFT_STORAGE_KEY = "offscript-draft-key";
2215
2215
  var COMPLETED_TOKEN_STORAGE_KEY = "offscript-completed-token";
2216
+ var RECORDING_SEGMENT_START_QUERY = "offscript_recording_start";
2216
2217
  function tokenFingerprint(token) {
2217
2218
  let first = 2166136261;
2218
2219
  let second = 2654435769;
@@ -2314,8 +2315,27 @@ var Offscript = class {
2314
2315
  async initializeDraft() {
2315
2316
  if (!this.config.persistenceKey) return;
2316
2317
  this.store = await RecordingStore.open(this.config.persistenceKey);
2317
- if (this.launchTokenChanged) await this.store.clear();
2318
+ const startsNewSegment = await this.consumeRecordingSegmentMarker();
2319
+ if (this.launchTokenChanged || startsNewSegment) await this.store.clear();
2318
2320
  await this.restoreDraft();
2321
+ if (startsNewSegment) await this.startFreshRecording();
2322
+ }
2323
+ async consumeRecordingSegmentMarker() {
2324
+ const url = new URL(window.location.href);
2325
+ const marker = url.searchParams.get(RECORDING_SEGMENT_START_QUERY);
2326
+ if (!marker) return false;
2327
+ url.searchParams.delete(RECORDING_SEGMENT_START_QUERY);
2328
+ window.history.replaceState(window.history.state, "", url.href);
2329
+ if (!this.launchToken || !globalThis.crypto?.subtle) return false;
2330
+ let fingerprint;
2331
+ try {
2332
+ const tokenBytes = new TextEncoder().encode(this.launchToken);
2333
+ const digest = await globalThis.crypto.subtle.digest("SHA-256", tokenBytes);
2334
+ fingerprint = Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join("");
2335
+ } catch {
2336
+ return false;
2337
+ }
2338
+ return marker === fingerprint;
2319
2339
  }
2320
2340
  async restoreDraft() {
2321
2341
  const saved = await this.store.load();
@@ -2355,6 +2375,9 @@ var Offscript = class {
2355
2375
  }
2356
2376
  async doStart() {
2357
2377
  await this.init();
2378
+ await this.startFreshRecording();
2379
+ }
2380
+ async startFreshRecording() {
2358
2381
  if (this.status === "recording" || this.status === "paused") return;
2359
2382
  if (this.completePromise || this.stopPromise) throw new InvalidStateError("Finaliza\xE7\xE3o em andamento");
2360
2383
  await this.store?.clear();
@@ -2652,5 +2675,5 @@ var Offscript = class {
2652
2675
  Offscript.version = SDK_VERSION;
2653
2676
 
2654
2677
  export { ConfigError, DEFAULT_PRIVACY, DEFAULT_RECORDING, DataSanitizer, InvalidStateError, Offscript, OffscriptError };
2655
- //# sourceMappingURL=chunk-5ZBR6FI5.js.map
2656
- //# sourceMappingURL=chunk-5ZBR6FI5.js.map
2678
+ //# sourceMappingURL=chunk-LUTOFXSV.js.map
2679
+ //# sourceMappingURL=chunk-LUTOFXSV.js.map