connectbase-client 1.5.0 → 1.7.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/index.d.mts CHANGED
@@ -119,6 +119,146 @@ declare class HttpClient {
119
119
  fetchRaw(url: string, init?: RequestInit): Promise<Response>;
120
120
  }
121
121
 
122
+ interface AnalyticsConfig {
123
+ /** 자동 페이지뷰 추적 @default true */
124
+ trackPageViews?: boolean;
125
+ /** 커스텀 이벤트 활성화 @default true */
126
+ trackEvents?: boolean;
127
+ /** 세션 + heartbeat @default true */
128
+ trackSessions?: boolean;
129
+ /** 히트맵 (opt-in) @default false */
130
+ heatmap?: boolean;
131
+ /** 세션 녹화 (opt-in) @default false */
132
+ recording?: boolean;
133
+ /** 배치 크기 @default 10 */
134
+ batchSize?: number;
135
+ /** 배치 전송 간격 (ms) @default 5000 */
136
+ flushInterval?: number;
137
+ /** DNT 헤더 존중 @default true */
138
+ respectDoNotTrack?: boolean;
139
+ /** 디버그 모드 @default false */
140
+ debug?: boolean;
141
+ }
142
+ interface ConsentOptions {
143
+ analytics?: boolean;
144
+ heatmap?: boolean;
145
+ recording?: boolean;
146
+ }
147
+ interface AnalyticsEvent {
148
+ name: string;
149
+ properties?: Record<string, unknown>;
150
+ timestamp?: number;
151
+ }
152
+ declare class SessionManager {
153
+ private _sessionId;
154
+ private _visitorUid;
155
+ private _lastActivity;
156
+ private _isNewSession;
157
+ get sessionId(): string;
158
+ get visitorUid(): string;
159
+ get isNewSession(): boolean;
160
+ /** 활동 기록 — 세션 타임아웃 리셋 */
161
+ touch(): void;
162
+ /** 세션 강제 리셋 */
163
+ reset(): void;
164
+ private ensureSession;
165
+ private loadOrCreateVisitorUid;
166
+ }
167
+ declare class AnalyticsAPI {
168
+ private http;
169
+ private config;
170
+ private consent;
171
+ private session;
172
+ private storageWebId;
173
+ private memberId;
174
+ private eventQueue;
175
+ private batchTimer;
176
+ private isInitialized;
177
+ private heartbeatTimer;
178
+ private visibilityHandler;
179
+ private unloadHeartbeatHandler;
180
+ private popstateHandler;
181
+ private beforeUnloadHandler;
182
+ private origPushState;
183
+ private origReplaceState;
184
+ private heatmapClickHandler;
185
+ private heatmapScrollHandler;
186
+ private utm;
187
+ constructor(http: HttpClient);
188
+ /**
189
+ * Analytics 초기화
190
+ * @param storageWebId 웹 스토리지 ID
191
+ * @param config 설정 (선택)
192
+ */
193
+ init(storageWebId: string, config?: AnalyticsConfig): void;
194
+ /** Analytics 정리 */
195
+ destroy(): void;
196
+ /**
197
+ * 동의 설정 변경
198
+ */
199
+ setConsent(consent: ConsentOptions): void;
200
+ /** 현재 동의 상태 조회 */
201
+ getConsent(): ConsentOptions;
202
+ /**
203
+ * 페이지뷰 수동 추적
204
+ */
205
+ trackPageView(path?: string): void;
206
+ /**
207
+ * 커스텀 이벤트 추적
208
+ */
209
+ trackEvent(name: string, properties?: Record<string, unknown>): void;
210
+ /**
211
+ * 사용자 식별 (로그인 시)
212
+ * 이후 모든 방문 배치에 `app_member_id`가 첨부되어 게스트 방문자가 회원으로 연결됩니다.
213
+ */
214
+ identify(memberId: string): void;
215
+ /**
216
+ * 방문자 트래커에 현재 회원 ID 설정 (로그인/게스트 가입 시 호출)
217
+ * null 을 넘기면 익명 상태로 복귀 (로그아웃).
218
+ */
219
+ setMemberId(memberId: string | null): void;
220
+ /** 현재 설정된 회원 ID 조회 (미설정 시 null) */
221
+ getMemberId(): string | null;
222
+ /**
223
+ * 히트맵 수집 활성화 (opt-in)
224
+ */
225
+ enableHeatmap(options?: {
226
+ click?: boolean;
227
+ scroll?: boolean;
228
+ }): void;
229
+ /**
230
+ * 세션 heartbeat 자동 전송 시작 (30초 간격)
231
+ */
232
+ enableHeartbeat(): void;
233
+ /** 큐에 있는 이벤트 즉시 전송 */
234
+ flush(): Promise<void>;
235
+ /** 세션 매니저 접근 (고급) */
236
+ getSession(): SessionManager;
237
+ private canTrack;
238
+ private isDNT;
239
+ private createBaseEvent;
240
+ private enqueue;
241
+ private flushQueue;
242
+ /** sendBeacon으로 동기 flush (beforeunload용) */
243
+ private flushSync;
244
+ private trackSessionStart;
245
+ private startBatchTimer;
246
+ private stopBatchTimer;
247
+ private startHeartbeat;
248
+ private stopHeartbeat;
249
+ /** 하트비트를 큐에 넣어 배치 전송 */
250
+ private sendHeartbeat;
251
+ /** sendBeacon으로 하트비트 전송 (unload/visibility hidden용) */
252
+ private sendHeartbeatBeacon;
253
+ private setupAutoPageView;
254
+ private removeAutoPageView;
255
+ private removeHeatmapListeners;
256
+ private handleHeatmapClick;
257
+ private recordHeatmapEvent;
258
+ private heatmapQueue;
259
+ private log;
260
+ }
261
+
122
262
  /** 앱 멤버 게스트 가입 응답 */
123
263
  interface GuestMemberSignInResponse {
124
264
  member_id: string;
@@ -184,7 +324,14 @@ declare class AuthAPI {
184
324
  private http;
185
325
  private guestMemberLoginPromise;
186
326
  private cachedGuestMemberTokenKey;
327
+ private analytics;
187
328
  constructor(http: HttpClient);
329
+ /**
330
+ * AnalyticsAPI 주입 — 로그인/가입/로그아웃 시 방문자 트래커에 member_id 를 전달하여
331
+ * 게스트 방문자를 회원과 연결한다. ConnectBase 컨스트럭터에서 내부적으로 호출된다.
332
+ */
333
+ _attachAnalytics(analytics: AnalyticsAPI): void;
334
+ private notifyVisitorTracker;
188
335
  /**
189
336
  * 앱의 인증 설정 조회
190
337
  * 어떤 로그인 방식이 허용되는지 확인합니다.
@@ -1359,17 +1506,23 @@ declare class DatabaseAPI {
1359
1506
  createGeoIndex(appId: string, tableId: string, data: CreateGeoIndexRequest): Promise<GeoIndex>;
1360
1507
  deleteGeoIndex(appId: string, tableId: string, indexId: string): Promise<void>;
1361
1508
  /**
1362
- * 테이블 릴레이션 목록 조회
1509
+ * 테이블 릴레이션 목록 조회. `sourceTable` 생략 시 앱 전체의 릴레이션을 반환.
1510
+ *
1511
+ * 서버 경로: `GET /v1/apps/:appID/databases/relations[?source_table=...]`
1363
1512
  */
1364
- listRelations(appId: string, tableId: string): Promise<TableRelation[]>;
1513
+ listRelations(appId: string, sourceTable?: string): Promise<TableRelation[]>;
1365
1514
  /**
1366
- * 릴레이션 생성
1515
+ * 릴레이션 생성.
1516
+ *
1517
+ * 서버 경로: `POST /v1/apps/:appID/databases/relations` — body 내 `source_table`/`target_table` 로 테이블 지정.
1367
1518
  */
1368
- createRelation(appId: string, tableId: string, data: CreateRelationRequest): Promise<TableRelation>;
1519
+ createRelation(appId: string, data: CreateRelationRequest): Promise<TableRelation>;
1369
1520
  /**
1370
- * 릴레이션 삭제
1521
+ * 릴레이션 삭제. `relationId` 는 서버에서 발급한 UUID (listRelations 로 조회해 얻음).
1522
+ *
1523
+ * 서버 경로: `DELETE /v1/apps/:appID/databases/relations/:relationID`
1371
1524
  */
1372
- deleteRelation(appId: string, tableId: string, relationName: string): Promise<void>;
1525
+ deleteRelation(appId: string, relationId: string): Promise<void>;
1373
1526
  /**
1374
1527
  * 트리거 목록 조회
1375
1528
  */
@@ -6258,137 +6411,6 @@ declare class QueueAPI {
6258
6411
  getInfo(queueID: string): Promise<QueueInfoResponse>;
6259
6412
  }
6260
6413
 
6261
- interface AnalyticsConfig {
6262
- /** 자동 페이지뷰 추적 @default true */
6263
- trackPageViews?: boolean;
6264
- /** 커스텀 이벤트 활성화 @default true */
6265
- trackEvents?: boolean;
6266
- /** 세션 + heartbeat @default true */
6267
- trackSessions?: boolean;
6268
- /** 히트맵 (opt-in) @default false */
6269
- heatmap?: boolean;
6270
- /** 세션 녹화 (opt-in) @default false */
6271
- recording?: boolean;
6272
- /** 배치 크기 @default 10 */
6273
- batchSize?: number;
6274
- /** 배치 전송 간격 (ms) @default 5000 */
6275
- flushInterval?: number;
6276
- /** DNT 헤더 존중 @default true */
6277
- respectDoNotTrack?: boolean;
6278
- /** 디버그 모드 @default false */
6279
- debug?: boolean;
6280
- }
6281
- interface ConsentOptions {
6282
- analytics?: boolean;
6283
- heatmap?: boolean;
6284
- recording?: boolean;
6285
- }
6286
- interface AnalyticsEvent {
6287
- name: string;
6288
- properties?: Record<string, unknown>;
6289
- timestamp?: number;
6290
- }
6291
- declare class SessionManager {
6292
- private _sessionId;
6293
- private _visitorUid;
6294
- private _lastActivity;
6295
- private _isNewSession;
6296
- get sessionId(): string;
6297
- get visitorUid(): string;
6298
- get isNewSession(): boolean;
6299
- /** 활동 기록 — 세션 타임아웃 리셋 */
6300
- touch(): void;
6301
- /** 세션 강제 리셋 */
6302
- reset(): void;
6303
- private ensureSession;
6304
- private loadOrCreateVisitorUid;
6305
- }
6306
- declare class AnalyticsAPI {
6307
- private http;
6308
- private config;
6309
- private consent;
6310
- private session;
6311
- private storageWebId;
6312
- private eventQueue;
6313
- private batchTimer;
6314
- private isInitialized;
6315
- private heartbeatTimer;
6316
- private visibilityHandler;
6317
- private unloadHeartbeatHandler;
6318
- private popstateHandler;
6319
- private beforeUnloadHandler;
6320
- private origPushState;
6321
- private origReplaceState;
6322
- private heatmapClickHandler;
6323
- private heatmapScrollHandler;
6324
- private utm;
6325
- constructor(http: HttpClient);
6326
- /**
6327
- * Analytics 초기화
6328
- * @param storageWebId 웹 스토리지 ID
6329
- * @param config 설정 (선택)
6330
- */
6331
- init(storageWebId: string, config?: AnalyticsConfig): void;
6332
- /** Analytics 정리 */
6333
- destroy(): void;
6334
- /**
6335
- * 동의 설정 변경
6336
- */
6337
- setConsent(consent: ConsentOptions): void;
6338
- /** 현재 동의 상태 조회 */
6339
- getConsent(): ConsentOptions;
6340
- /**
6341
- * 페이지뷰 수동 추적
6342
- */
6343
- trackPageView(path?: string): void;
6344
- /**
6345
- * 커스텀 이벤트 추적
6346
- */
6347
- trackEvent(name: string, properties?: Record<string, unknown>): void;
6348
- /**
6349
- * 사용자 식별 (로그인 시)
6350
- */
6351
- identify(memberId: string): void;
6352
- /**
6353
- * 히트맵 수집 활성화 (opt-in)
6354
- */
6355
- enableHeatmap(options?: {
6356
- click?: boolean;
6357
- scroll?: boolean;
6358
- }): void;
6359
- /**
6360
- * 세션 heartbeat 자동 전송 시작 (30초 간격)
6361
- */
6362
- enableHeartbeat(): void;
6363
- /** 큐에 있는 이벤트 즉시 전송 */
6364
- flush(): Promise<void>;
6365
- /** 세션 매니저 접근 (고급) */
6366
- getSession(): SessionManager;
6367
- private canTrack;
6368
- private isDNT;
6369
- private createBaseEvent;
6370
- private enqueue;
6371
- private flushQueue;
6372
- /** sendBeacon으로 동기 flush (beforeunload용) */
6373
- private flushSync;
6374
- private trackSessionStart;
6375
- private startBatchTimer;
6376
- private stopBatchTimer;
6377
- private startHeartbeat;
6378
- private stopHeartbeat;
6379
- /** 하트비트를 큐에 넣어 배치 전송 */
6380
- private sendHeartbeat;
6381
- /** sendBeacon으로 하트비트 전송 (unload/visibility hidden용) */
6382
- private sendHeartbeatBeacon;
6383
- private setupAutoPageView;
6384
- private removeAutoPageView;
6385
- private removeHeatmapListeners;
6386
- private handleHeatmapClick;
6387
- private recordHeatmapEvent;
6388
- private heatmapQueue;
6389
- private log;
6390
- }
6391
-
6392
6414
  /**
6393
6415
  * WebTransport-based Game Client
6394
6416
  *
package/dist/index.d.ts CHANGED
@@ -119,6 +119,146 @@ declare class HttpClient {
119
119
  fetchRaw(url: string, init?: RequestInit): Promise<Response>;
120
120
  }
121
121
 
122
+ interface AnalyticsConfig {
123
+ /** 자동 페이지뷰 추적 @default true */
124
+ trackPageViews?: boolean;
125
+ /** 커스텀 이벤트 활성화 @default true */
126
+ trackEvents?: boolean;
127
+ /** 세션 + heartbeat @default true */
128
+ trackSessions?: boolean;
129
+ /** 히트맵 (opt-in) @default false */
130
+ heatmap?: boolean;
131
+ /** 세션 녹화 (opt-in) @default false */
132
+ recording?: boolean;
133
+ /** 배치 크기 @default 10 */
134
+ batchSize?: number;
135
+ /** 배치 전송 간격 (ms) @default 5000 */
136
+ flushInterval?: number;
137
+ /** DNT 헤더 존중 @default true */
138
+ respectDoNotTrack?: boolean;
139
+ /** 디버그 모드 @default false */
140
+ debug?: boolean;
141
+ }
142
+ interface ConsentOptions {
143
+ analytics?: boolean;
144
+ heatmap?: boolean;
145
+ recording?: boolean;
146
+ }
147
+ interface AnalyticsEvent {
148
+ name: string;
149
+ properties?: Record<string, unknown>;
150
+ timestamp?: number;
151
+ }
152
+ declare class SessionManager {
153
+ private _sessionId;
154
+ private _visitorUid;
155
+ private _lastActivity;
156
+ private _isNewSession;
157
+ get sessionId(): string;
158
+ get visitorUid(): string;
159
+ get isNewSession(): boolean;
160
+ /** 활동 기록 — 세션 타임아웃 리셋 */
161
+ touch(): void;
162
+ /** 세션 강제 리셋 */
163
+ reset(): void;
164
+ private ensureSession;
165
+ private loadOrCreateVisitorUid;
166
+ }
167
+ declare class AnalyticsAPI {
168
+ private http;
169
+ private config;
170
+ private consent;
171
+ private session;
172
+ private storageWebId;
173
+ private memberId;
174
+ private eventQueue;
175
+ private batchTimer;
176
+ private isInitialized;
177
+ private heartbeatTimer;
178
+ private visibilityHandler;
179
+ private unloadHeartbeatHandler;
180
+ private popstateHandler;
181
+ private beforeUnloadHandler;
182
+ private origPushState;
183
+ private origReplaceState;
184
+ private heatmapClickHandler;
185
+ private heatmapScrollHandler;
186
+ private utm;
187
+ constructor(http: HttpClient);
188
+ /**
189
+ * Analytics 초기화
190
+ * @param storageWebId 웹 스토리지 ID
191
+ * @param config 설정 (선택)
192
+ */
193
+ init(storageWebId: string, config?: AnalyticsConfig): void;
194
+ /** Analytics 정리 */
195
+ destroy(): void;
196
+ /**
197
+ * 동의 설정 변경
198
+ */
199
+ setConsent(consent: ConsentOptions): void;
200
+ /** 현재 동의 상태 조회 */
201
+ getConsent(): ConsentOptions;
202
+ /**
203
+ * 페이지뷰 수동 추적
204
+ */
205
+ trackPageView(path?: string): void;
206
+ /**
207
+ * 커스텀 이벤트 추적
208
+ */
209
+ trackEvent(name: string, properties?: Record<string, unknown>): void;
210
+ /**
211
+ * 사용자 식별 (로그인 시)
212
+ * 이후 모든 방문 배치에 `app_member_id`가 첨부되어 게스트 방문자가 회원으로 연결됩니다.
213
+ */
214
+ identify(memberId: string): void;
215
+ /**
216
+ * 방문자 트래커에 현재 회원 ID 설정 (로그인/게스트 가입 시 호출)
217
+ * null 을 넘기면 익명 상태로 복귀 (로그아웃).
218
+ */
219
+ setMemberId(memberId: string | null): void;
220
+ /** 현재 설정된 회원 ID 조회 (미설정 시 null) */
221
+ getMemberId(): string | null;
222
+ /**
223
+ * 히트맵 수집 활성화 (opt-in)
224
+ */
225
+ enableHeatmap(options?: {
226
+ click?: boolean;
227
+ scroll?: boolean;
228
+ }): void;
229
+ /**
230
+ * 세션 heartbeat 자동 전송 시작 (30초 간격)
231
+ */
232
+ enableHeartbeat(): void;
233
+ /** 큐에 있는 이벤트 즉시 전송 */
234
+ flush(): Promise<void>;
235
+ /** 세션 매니저 접근 (고급) */
236
+ getSession(): SessionManager;
237
+ private canTrack;
238
+ private isDNT;
239
+ private createBaseEvent;
240
+ private enqueue;
241
+ private flushQueue;
242
+ /** sendBeacon으로 동기 flush (beforeunload용) */
243
+ private flushSync;
244
+ private trackSessionStart;
245
+ private startBatchTimer;
246
+ private stopBatchTimer;
247
+ private startHeartbeat;
248
+ private stopHeartbeat;
249
+ /** 하트비트를 큐에 넣어 배치 전송 */
250
+ private sendHeartbeat;
251
+ /** sendBeacon으로 하트비트 전송 (unload/visibility hidden용) */
252
+ private sendHeartbeatBeacon;
253
+ private setupAutoPageView;
254
+ private removeAutoPageView;
255
+ private removeHeatmapListeners;
256
+ private handleHeatmapClick;
257
+ private recordHeatmapEvent;
258
+ private heatmapQueue;
259
+ private log;
260
+ }
261
+
122
262
  /** 앱 멤버 게스트 가입 응답 */
123
263
  interface GuestMemberSignInResponse {
124
264
  member_id: string;
@@ -184,7 +324,14 @@ declare class AuthAPI {
184
324
  private http;
185
325
  private guestMemberLoginPromise;
186
326
  private cachedGuestMemberTokenKey;
327
+ private analytics;
187
328
  constructor(http: HttpClient);
329
+ /**
330
+ * AnalyticsAPI 주입 — 로그인/가입/로그아웃 시 방문자 트래커에 member_id 를 전달하여
331
+ * 게스트 방문자를 회원과 연결한다. ConnectBase 컨스트럭터에서 내부적으로 호출된다.
332
+ */
333
+ _attachAnalytics(analytics: AnalyticsAPI): void;
334
+ private notifyVisitorTracker;
188
335
  /**
189
336
  * 앱의 인증 설정 조회
190
337
  * 어떤 로그인 방식이 허용되는지 확인합니다.
@@ -1359,17 +1506,23 @@ declare class DatabaseAPI {
1359
1506
  createGeoIndex(appId: string, tableId: string, data: CreateGeoIndexRequest): Promise<GeoIndex>;
1360
1507
  deleteGeoIndex(appId: string, tableId: string, indexId: string): Promise<void>;
1361
1508
  /**
1362
- * 테이블 릴레이션 목록 조회
1509
+ * 테이블 릴레이션 목록 조회. `sourceTable` 생략 시 앱 전체의 릴레이션을 반환.
1510
+ *
1511
+ * 서버 경로: `GET /v1/apps/:appID/databases/relations[?source_table=...]`
1363
1512
  */
1364
- listRelations(appId: string, tableId: string): Promise<TableRelation[]>;
1513
+ listRelations(appId: string, sourceTable?: string): Promise<TableRelation[]>;
1365
1514
  /**
1366
- * 릴레이션 생성
1515
+ * 릴레이션 생성.
1516
+ *
1517
+ * 서버 경로: `POST /v1/apps/:appID/databases/relations` — body 내 `source_table`/`target_table` 로 테이블 지정.
1367
1518
  */
1368
- createRelation(appId: string, tableId: string, data: CreateRelationRequest): Promise<TableRelation>;
1519
+ createRelation(appId: string, data: CreateRelationRequest): Promise<TableRelation>;
1369
1520
  /**
1370
- * 릴레이션 삭제
1521
+ * 릴레이션 삭제. `relationId` 는 서버에서 발급한 UUID (listRelations 로 조회해 얻음).
1522
+ *
1523
+ * 서버 경로: `DELETE /v1/apps/:appID/databases/relations/:relationID`
1371
1524
  */
1372
- deleteRelation(appId: string, tableId: string, relationName: string): Promise<void>;
1525
+ deleteRelation(appId: string, relationId: string): Promise<void>;
1373
1526
  /**
1374
1527
  * 트리거 목록 조회
1375
1528
  */
@@ -6258,137 +6411,6 @@ declare class QueueAPI {
6258
6411
  getInfo(queueID: string): Promise<QueueInfoResponse>;
6259
6412
  }
6260
6413
 
6261
- interface AnalyticsConfig {
6262
- /** 자동 페이지뷰 추적 @default true */
6263
- trackPageViews?: boolean;
6264
- /** 커스텀 이벤트 활성화 @default true */
6265
- trackEvents?: boolean;
6266
- /** 세션 + heartbeat @default true */
6267
- trackSessions?: boolean;
6268
- /** 히트맵 (opt-in) @default false */
6269
- heatmap?: boolean;
6270
- /** 세션 녹화 (opt-in) @default false */
6271
- recording?: boolean;
6272
- /** 배치 크기 @default 10 */
6273
- batchSize?: number;
6274
- /** 배치 전송 간격 (ms) @default 5000 */
6275
- flushInterval?: number;
6276
- /** DNT 헤더 존중 @default true */
6277
- respectDoNotTrack?: boolean;
6278
- /** 디버그 모드 @default false */
6279
- debug?: boolean;
6280
- }
6281
- interface ConsentOptions {
6282
- analytics?: boolean;
6283
- heatmap?: boolean;
6284
- recording?: boolean;
6285
- }
6286
- interface AnalyticsEvent {
6287
- name: string;
6288
- properties?: Record<string, unknown>;
6289
- timestamp?: number;
6290
- }
6291
- declare class SessionManager {
6292
- private _sessionId;
6293
- private _visitorUid;
6294
- private _lastActivity;
6295
- private _isNewSession;
6296
- get sessionId(): string;
6297
- get visitorUid(): string;
6298
- get isNewSession(): boolean;
6299
- /** 활동 기록 — 세션 타임아웃 리셋 */
6300
- touch(): void;
6301
- /** 세션 강제 리셋 */
6302
- reset(): void;
6303
- private ensureSession;
6304
- private loadOrCreateVisitorUid;
6305
- }
6306
- declare class AnalyticsAPI {
6307
- private http;
6308
- private config;
6309
- private consent;
6310
- private session;
6311
- private storageWebId;
6312
- private eventQueue;
6313
- private batchTimer;
6314
- private isInitialized;
6315
- private heartbeatTimer;
6316
- private visibilityHandler;
6317
- private unloadHeartbeatHandler;
6318
- private popstateHandler;
6319
- private beforeUnloadHandler;
6320
- private origPushState;
6321
- private origReplaceState;
6322
- private heatmapClickHandler;
6323
- private heatmapScrollHandler;
6324
- private utm;
6325
- constructor(http: HttpClient);
6326
- /**
6327
- * Analytics 초기화
6328
- * @param storageWebId 웹 스토리지 ID
6329
- * @param config 설정 (선택)
6330
- */
6331
- init(storageWebId: string, config?: AnalyticsConfig): void;
6332
- /** Analytics 정리 */
6333
- destroy(): void;
6334
- /**
6335
- * 동의 설정 변경
6336
- */
6337
- setConsent(consent: ConsentOptions): void;
6338
- /** 현재 동의 상태 조회 */
6339
- getConsent(): ConsentOptions;
6340
- /**
6341
- * 페이지뷰 수동 추적
6342
- */
6343
- trackPageView(path?: string): void;
6344
- /**
6345
- * 커스텀 이벤트 추적
6346
- */
6347
- trackEvent(name: string, properties?: Record<string, unknown>): void;
6348
- /**
6349
- * 사용자 식별 (로그인 시)
6350
- */
6351
- identify(memberId: string): void;
6352
- /**
6353
- * 히트맵 수집 활성화 (opt-in)
6354
- */
6355
- enableHeatmap(options?: {
6356
- click?: boolean;
6357
- scroll?: boolean;
6358
- }): void;
6359
- /**
6360
- * 세션 heartbeat 자동 전송 시작 (30초 간격)
6361
- */
6362
- enableHeartbeat(): void;
6363
- /** 큐에 있는 이벤트 즉시 전송 */
6364
- flush(): Promise<void>;
6365
- /** 세션 매니저 접근 (고급) */
6366
- getSession(): SessionManager;
6367
- private canTrack;
6368
- private isDNT;
6369
- private createBaseEvent;
6370
- private enqueue;
6371
- private flushQueue;
6372
- /** sendBeacon으로 동기 flush (beforeunload용) */
6373
- private flushSync;
6374
- private trackSessionStart;
6375
- private startBatchTimer;
6376
- private stopBatchTimer;
6377
- private startHeartbeat;
6378
- private stopHeartbeat;
6379
- /** 하트비트를 큐에 넣어 배치 전송 */
6380
- private sendHeartbeat;
6381
- /** sendBeacon으로 하트비트 전송 (unload/visibility hidden용) */
6382
- private sendHeartbeatBeacon;
6383
- private setupAutoPageView;
6384
- private removeAutoPageView;
6385
- private removeHeatmapListeners;
6386
- private handleHeatmapClick;
6387
- private recordHeatmapEvent;
6388
- private heatmapQueue;
6389
- private log;
6390
- }
6391
-
6392
6414
  /**
6393
6415
  * WebTransport-based Game Client
6394
6416
  *