@offscript/sdk 0.1.1 → 0.1.2

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.
Files changed (37) hide show
  1. package/README.md +3 -3
  2. package/dist/adapters/nuxt.cjs +3 -3
  3. package/dist/adapters/nuxt.js +2 -2
  4. package/dist/adapters/vanilla.cjs +5 -5
  5. package/dist/adapters/vanilla.js +3 -3
  6. package/dist/adapters/vue.cjs +3 -3
  7. package/dist/adapters/vue.js +2 -2
  8. package/dist/{chunk-MBYNQSKA.js → chunk-HECPMGDC.js} +3 -3
  9. package/dist/{chunk-MBYNQSKA.js.map → chunk-HECPMGDC.js.map} +1 -1
  10. package/dist/{chunk-3NX2AGXM.cjs → chunk-I6JPZAQA.cjs} +738 -31
  11. package/dist/chunk-I6JPZAQA.cjs.map +1 -0
  12. package/dist/{chunk-3OSCH7J2.js → chunk-IBEPWI7S.js} +729 -22
  13. package/dist/chunk-IBEPWI7S.js.map +1 -0
  14. package/dist/{chunk-B6GO5FE5.cjs → chunk-KQVK5EJR.cjs} +4 -3
  15. package/dist/chunk-KQVK5EJR.cjs.map +1 -0
  16. package/dist/{chunk-HAPNSHFG.cjs → chunk-TBPD2LMI.cjs} +4 -4
  17. package/dist/{chunk-HAPNSHFG.cjs.map → chunk-TBPD2LMI.cjs.map} +1 -1
  18. package/dist/{chunk-LFXHB4PN.js → chunk-WUFW7TEL.js} +4 -3
  19. package/dist/chunk-WUFW7TEL.js.map +1 -0
  20. package/dist/core/OffscriptSDK.d.ts +19 -0
  21. package/dist/core/SessionManager.d.ts +1 -0
  22. package/dist/index.cjs +25 -25
  23. package/dist/index.js +3 -3
  24. package/dist/playwright.cjs +13 -13
  25. package/dist/playwright.js +1 -1
  26. package/dist/privacy/DataSanitizer.d.ts +1 -0
  27. package/dist/recorders/ContextRecorder.d.ts +1 -1
  28. package/dist/types/config.d.ts +11 -0
  29. package/dist/types/events.d.ts +2 -0
  30. package/dist/types/session.d.ts +2 -2
  31. package/dist/ui/RecordingControls.d.ts +60 -0
  32. package/docs/api-contract.md +1 -1
  33. package/package.json +1 -1
  34. package/dist/chunk-3NX2AGXM.cjs.map +0 -1
  35. package/dist/chunk-3OSCH7J2.js.map +0 -1
  36. package/dist/chunk-B6GO5FE5.cjs.map +0 -1
  37. package/dist/chunk-LFXHB4PN.js.map +0 -1
@@ -55,6 +55,11 @@ export interface PrivacyConfig {
55
55
  redactHeaders: string[];
56
56
  /** Chaves adicionais (query/body/json) a redigir. */
57
57
  redactKeys: string[];
58
+ /**
59
+ * Guarda os valores sensíveis por completo: senha, token, cookie, CPF, cartão.
60
+ * Padrão: false. Quando true, nada vira [REDACTED].
61
+ */
62
+ captureSensitiveValues: boolean;
58
63
  /** Tamanho máximo (bytes) de cada body capturado. */
59
64
  maxBodyBytes: number;
60
65
  /** Content-types capturáveis como texto. */
@@ -96,6 +101,11 @@ export interface OffscriptConfig {
96
101
  /** Prefixo de chaves de storage. */
97
102
  storagePrefix?: string;
98
103
  debug?: boolean;
104
+ /**
105
+ * Mostra a barra de pausar, retomar, retornar, finalizar e nova sessão durante a gravação.
106
+ * Padrão: true. O overlay não entra no filme nem nas ações.
107
+ */
108
+ controls?: boolean;
99
109
  }
100
110
  export interface ResolvedConfig {
101
111
  apiUrl: string;
@@ -109,6 +119,7 @@ export interface ResolvedConfig {
109
119
  heartbeatIntervalMs: number;
110
120
  storagePrefix: string;
111
121
  debug: boolean;
122
+ controls: boolean;
112
123
  }
113
124
  export declare const DEFAULT_RECORDING: RecordingConfig;
114
125
  export declare const DEFAULT_PRIVACY: PrivacyConfig;
@@ -163,6 +163,8 @@ export interface ContextEventData {
163
163
  executionId: string;
164
164
  sdkVersion: string;
165
165
  appVersion?: string;
166
+ /** A gravação guardou senhas, tokens e demais valores sem máscara. */
167
+ captureSensitiveValues?: boolean;
166
168
  }
167
169
  export interface IframeEventData {
168
170
  phase: "present" | "removed" | "focus" | "blur" | "resized";
@@ -2,8 +2,8 @@ export type RecordingStatus = "idle" | "initializing" | "recording" | "paused" |
2
2
  export interface StartRecordingOptions {
3
3
  testCaseId: string;
4
4
  executionId: string;
5
- /** Token de curta duração emitido pelo backend da Offscript. */
6
- sessionToken: string;
5
+ /** Token de curta duração emitido pelo backend da Offscript. Quando omitido, é lido de `?offscript_token=`. */
6
+ sessionToken?: string;
7
7
  }
8
8
  /** Estado persistido em sessionStorage (escopo: aba). */
9
9
  export interface PersistedSessionState {
@@ -0,0 +1,60 @@
1
+ import type { OffscriptState, RecordingStatus, SessionInfo, StopSummary } from "../types/session";
2
+ /**
3
+ * Alvo mínimo para o overlay não importar a classe do SDK.
4
+ */
5
+ export interface RecordingControlTarget {
6
+ getState(): OffscriptState;
7
+ on(type: "statusChange", fn: (payload: {
8
+ from: RecordingStatus;
9
+ to: RecordingStatus;
10
+ }) => void): () => void;
11
+ pauseRecording(): Promise<void>;
12
+ resumeRecording(): Promise<void>;
13
+ stopRecording(): Promise<StopSummary>;
14
+ startArmedRecording(): Promise<SessionInfo>;
15
+ startNewSession(): Promise<void>;
16
+ capturesSensitiveValues(): boolean;
17
+ }
18
+ /**
19
+ * Controles da gravação. Fechado, só a marca; aberto, a logo e os ícones.
20
+ * O host fica com tamanho zero e a interface mora num shadow fechado.
21
+ */
22
+ export declare class RecordingControls {
23
+ private readonly sdk;
24
+ private host?;
25
+ private shadow?;
26
+ private note?;
27
+ private observer?;
28
+ private dockWatch?;
29
+ private unsubscribe?;
30
+ private eyeTimer;
31
+ private placeFrame;
32
+ private eyeIndex;
33
+ private busy;
34
+ private expanded;
35
+ private privacyOpen;
36
+ private failure;
37
+ private readonly onVisibility;
38
+ private readonly onViewport;
39
+ constructor(sdk: RecordingControlTarget);
40
+ mount(): void;
41
+ unmount(): void;
42
+ private place;
43
+ private watchDom;
44
+ private watchDock;
45
+ private bind;
46
+ private openConfirm;
47
+ private placeConfirm;
48
+ private closeConfirm;
49
+ private run;
50
+ private render;
51
+ private paintPrivacy;
52
+ private schedulePlacePrivacy;
53
+ private clearPrivacyPlace;
54
+ private placePrivacy;
55
+ private setEnabled;
56
+ private setHidden;
57
+ private startEyes;
58
+ private scheduleEye;
59
+ private applyPose;
60
+ }
@@ -1,6 +1,6 @@
1
1
  # Contrato da API Offscript (SDK ↔ backend)
2
2
 
3
- Todos os endpoints exigem `Authorization: Bearer <sessionToken>` (token de curta duração, escopo: plataforma + execução + sessão). Respostas em JSON. CORS: o backend deve permitir os headers `Authorization, Content-Type, Content-Encoding, Idempotency-Key, X-Offscript-Sdk` (um `*` **não** cobre `Authorization`).
3
+ Todos os endpoints exigem `Authorization: Bearer <sessionToken>` (token de curta duração, escopo: plataforma + execução + sessão). A aplicação pode entregar esse token ao SDK em `?offscript_token=` na URL inicial; o SDK o captura, remove o parâmetro da barra de endereço e o reutiliza em todas as chamadas, inclusive `/complete`. Respostas em JSON. CORS: o backend deve permitir os headers `Authorization, Content-Type, Content-Encoding, Idempotency-Key, X-Offscript-Sdk` (um `*` **não** cobre `Authorization`).
4
4
 
5
5
  | Método | Caminho | Finalidade |
6
6
  |---|---|---|
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@offscript/sdk",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Offscript SDK - gravação de sessões de teste QA (rrweb, ações, rede, erros)",
5
5
  "license": "MIT",
6
6
  "type": "module",