issue-sticker 0.11.0 → 0.12.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.
@@ -27709,15 +27709,15 @@ export {
27709
27709
  createLucideIcon as c,
27710
27710
  usePortalContainer as d,
27711
27711
  OVERLAY_LAYER as e,
27712
- Primitive as f,
27713
- composeEventHandlers as g,
27714
- useDismissableLayerSurface as h,
27715
- useComposedRefs as i,
27716
- Portal as j,
27717
- createContextScope as k,
27718
- createSlot as l,
27719
- useControllableState as m,
27720
- useId as n,
27712
+ useControllableState as f,
27713
+ useId as g,
27714
+ Primitive as h,
27715
+ composeEventHandlers as i,
27716
+ useDismissableLayerSurface as j,
27717
+ useComposedRefs as k,
27718
+ Portal as l,
27719
+ createContextScope as m,
27720
+ createSlot as n,
27721
27721
  useLayoutEffect2 as o,
27722
27722
  useCallbackRef as p,
27723
27723
  PortalContainerProvider as q,
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
- import { P as Presence, j as Portal$1, E as Arrow, D as DismissableLayer, y as Content, G as Root, i as useComposedRefs, z as createPopperScope, k as createContextScope, H as createSlottable, n as useId, m as useControllableState, B as Root2, A as Anchor, f as Primitive, g as composeEventHandlers, d as usePortalContainer, a as cn, e as OVERLAY_LAYER, s as stopEscapePropagation } from "./three-DQdLNs7v.js";
3
+ import { P as Presence, l as Portal$1, E as Arrow, D as DismissableLayer, y as Content, G as Root, k as useComposedRefs, z as createPopperScope, m as createContextScope, H as createSlottable, g as useId, f as useControllableState, B as Root2, A as Anchor, h as Primitive, i as composeEventHandlers, d as usePortalContainer, a as cn, e as OVERLAY_LAYER, s as stopEscapePropagation } from "./three-B228j4M6.js";
4
4
  var [createTooltipContext] = createContextScope("Tooltip", [
5
5
  createPopperScope
6
6
  ]);
package/headless.d.ts CHANGED
@@ -101,6 +101,21 @@ export interface IssueStickerSummary {
101
101
  readonly color: string;
102
102
  readonly label: string | null;
103
103
  } | null;
104
+ /** 영상 URL. 업로드 중이거나 영상이 없으면 `null` 입니다. */
105
+ video?: string | null;
106
+ /**
107
+ * 영상 업로드 상태. `submitDraft()` 직후에는 `'uploading'` 이고, 업로드가 끝나면
108
+ * `snapshot.issues` 의 같은 이슈가 `'ready'` 로 바뀝니다. 영상 URL 은 `openIssue()` 로 연
109
+ * `snapshot.activeIssue.video` 에서 확인합니다. 업로드를 끝내 포기하면 `'failed'` 입니다.
110
+ * 영상이 없으면 `null`.
111
+ */
112
+ video_status?: 'uploading' | 'ready' | 'failed' | null;
113
+ /**
114
+ * 세션 리플레이 업로드 상태. 리플레이가 있는 이슈는 `submitDraft()`·`createIssue()` 직후
115
+ * `'uploading'` 이고, 업로드가 끝나면 `snapshot.issues` 의 같은 이슈가 `'ready'` 로 바뀝니다.
116
+ * 업로드를 끝내 포기하면 `'failed'` 이고 그 이슈에는 리플레이가 없습니다. 리플레이가 없으면 `null`.
117
+ */
118
+ replay_status?: 'uploading' | 'ready' | 'failed' | null;
104
119
  }
105
120
 
106
121
  /** 상세 조회한 이슈. */
@@ -257,6 +272,28 @@ export interface HeadlessSessionReplayState {
257
272
  readonly error: string | null;
258
273
  }
259
274
 
275
+ /** 뒤에서 올리는 영상 하나의 상태. 업로드가 끝나면 목록에서 빠집니다. */
276
+ export interface HeadlessVideoUpload {
277
+ readonly issueId: string;
278
+ /** `failed` 는 네트워크 재시도를 모두 쓴 상태입니다. `retryVideoUpload()` 로 이어 올립니다. */
279
+ readonly status: 'queued' | 'uploading' | 'failed';
280
+ /** 0~1 */
281
+ readonly progress: number;
282
+ }
283
+
284
+ /** 뒤에서 올리는 세션 리플레이·웹소켓 로그 하나의 상태. 업로드가 끝나면 목록에서 빠집니다. */
285
+ export interface HeadlessAttachmentUpload {
286
+ readonly issueId: string;
287
+ readonly kind: 'replay' | 'socket';
288
+ /**
289
+ * `failed` 는 네트워크 재시도를 모두 쓴 상태입니다. 연결이 돌아오거나 다음에 초기화할 때,
290
+ * 또는 `retryVideoUpload(issueId)` 를 부르면 다시 올립니다.
291
+ */
292
+ readonly status: 'queued' | 'uploading' | 'failed';
293
+ /** 0~1 */
294
+ readonly progress: number;
295
+ }
296
+
260
297
  export interface HeadlessSnapshot {
261
298
  readonly phase: HeadlessPhase;
262
299
  readonly auth: HeadlessAuthState;
@@ -265,6 +302,8 @@ export interface HeadlessSnapshot {
265
302
  readonly draft: HeadlessIssueDraft | null;
266
303
  readonly videoCapture: HeadlessVideoCaptureState;
267
304
  readonly sessionReplay: HeadlessSessionReplayState;
305
+ readonly videoUploads: readonly HeadlessVideoUpload[];
306
+ readonly attachmentUploads: readonly HeadlessAttachmentUpload[];
268
307
  readonly formSchema: IssueFormSchema | null;
269
308
  readonly filterSchema: IssueFilterSchema | null;
270
309
  readonly error: IssueStickerHeadlessError | null;
@@ -329,7 +368,13 @@ export interface HeadlessClient {
329
368
  stopVideoCapture(): Promise<void>;
330
369
  setSessionReplayEnabled(enabled: boolean): void;
331
370
  cancelIssueCapture(): void;
371
+ /**
372
+ * 이슈를 생성하고 바로 돌려줍니다. 녹화 영상·세션 리플레이·웹소켓 로그는 이슈가 생성된 뒤
373
+ * 따로 업로드되며, 진행은 `snapshot.videoUploads`·`snapshot.attachmentUploads` 로 확인합니다.
374
+ */
332
375
  submitDraft(input: SubmitDraftInput): Promise<Issue>;
376
+ /** 이슈의 실패한 업로드(영상·세션 리플레이·웹소켓 로그)를 다시 올립니다. */
377
+ retryVideoUpload(issueId: string): void;
333
378
  /**
334
379
  * 유저 액션 없이 코드에서 이슈를 만듭니다. 캡처 단계를 거치지 않으므로 `phase`와
335
380
  * `draft`를 건드리지 않고, 사용자가 이슈를 작성하는 중에도 호출할 수 있습니다.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "issue-sticker",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "IssueSticker SDK - Visual bug tracking widget for web applications",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "type": "module",