connectbase-client 3.49.0 → 3.50.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/CHANGELOG.md +12 -0
- package/README.md +7 -0
- package/dist/connect-base.umd.js +5 -5
- package/dist/index.d.mts +75 -3
- package/dist/index.d.ts +75 -3
- package/dist/index.js +110 -7
- package/dist/index.mjs +110 -7
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -2289,12 +2289,58 @@ interface RenameFileResponse {
|
|
|
2289
2289
|
interface FetchFilesResponse {
|
|
2290
2290
|
files: FileItem[];
|
|
2291
2291
|
}
|
|
2292
|
+
/**
|
|
2293
|
+
* 파일 업로드 진행률 (바이트 단위).
|
|
2294
|
+
*
|
|
2295
|
+
* presigned URL 로의 직접 PUT 은 단일 요청이라 청크 개념이 없어,
|
|
2296
|
+
* 영상 업로드(`UploadProgress`, 청크 기반)와 달리 바이트 기준으로 보고한다.
|
|
2297
|
+
* `percentage` 필드명은 영상 업로드와 통일했다.
|
|
2298
|
+
*/
|
|
2299
|
+
interface StorageUploadProgress {
|
|
2300
|
+
/** 지금까지 업로드된 바이트 */
|
|
2301
|
+
loaded: number;
|
|
2302
|
+
/** 전체 바이트 (= file.size) */
|
|
2303
|
+
total: number;
|
|
2304
|
+
/** 0~100 정수 백분율 */
|
|
2305
|
+
percentage: number;
|
|
2306
|
+
}
|
|
2307
|
+
/**
|
|
2308
|
+
* 파일 업로드 옵션 (`uploadFile` / `uploadFiles`).
|
|
2309
|
+
*
|
|
2310
|
+
* 기존 `uploadFile(storageId, file, parentId)` 시그니처와 하위 호환을 위해
|
|
2311
|
+
* 3번째 인자는 문자열(parentId) 또는 이 옵션 객체를 모두 받는다.
|
|
2312
|
+
*/
|
|
2313
|
+
interface UploadFileOptions {
|
|
2314
|
+
/** 부모 폴더 ID (기존 3번째 인자와 동일 의미) */
|
|
2315
|
+
parentId?: string;
|
|
2316
|
+
/**
|
|
2317
|
+
* 업로드 진행률 콜백. 브라우저 환경(XMLHttpRequest 사용 가능)에서만
|
|
2318
|
+
* 바이트 단위 진행률을 실시간으로 받는다. Node/Edge 등 XHR 이 없는
|
|
2319
|
+
* 환경에서는 시작(0%)/완료(100%)만 통지한다.
|
|
2320
|
+
*/
|
|
2321
|
+
onProgress?: (progress: StorageUploadProgress) => void;
|
|
2322
|
+
/** 업로드 취소용 외부 AbortSignal */
|
|
2323
|
+
signal?: AbortSignal;
|
|
2324
|
+
/**
|
|
2325
|
+
* PUT 요청 타임아웃(ms). 기본 30초. 대용량 파일은 이보다 오래 걸릴 수
|
|
2326
|
+
* 있으므로 필요 시 늘린다. 0 또는 무한대면 타임아웃을 두지 않는다.
|
|
2327
|
+
*/
|
|
2328
|
+
timeout?: number;
|
|
2329
|
+
}
|
|
2292
2330
|
/**
|
|
2293
2331
|
* 경로 기반 업로드 옵션
|
|
2294
2332
|
*/
|
|
2295
2333
|
interface UploadByPathOptions {
|
|
2296
2334
|
/** true면 기존 파일 덮어쓰기 (기본값: true) */
|
|
2297
2335
|
overwrite?: boolean;
|
|
2336
|
+
/**
|
|
2337
|
+
* 업로드 진행률 콜백. 동작은 {@link UploadFileOptions.onProgress} 와 동일하다.
|
|
2338
|
+
*/
|
|
2339
|
+
onProgress?: (progress: StorageUploadProgress) => void;
|
|
2340
|
+
/** 업로드 취소용 외부 AbortSignal */
|
|
2341
|
+
signal?: AbortSignal;
|
|
2342
|
+
/** PUT 요청 타임아웃(ms). 기본 30초. */
|
|
2343
|
+
timeout?: number;
|
|
2298
2344
|
}
|
|
2299
2345
|
/**
|
|
2300
2346
|
* 경로로 파일 조회 응답
|
|
@@ -2437,8 +2483,18 @@ declare class StorageAPI {
|
|
|
2437
2483
|
* Presigned URL 로 직접 업로드. 호출 전에 URL 스킴(https)을 검증해
|
|
2438
2484
|
* 서버 응답을 그대로 신뢰하는 SSRF/오용 경로를 차단.
|
|
2439
2485
|
* 타임아웃과 외부 signal 을 모두 지원한다.
|
|
2486
|
+
*
|
|
2487
|
+
* `onProgress` 가 주어지고 `XMLHttpRequest` 를 쓸 수 있는(브라우저) 환경이면
|
|
2488
|
+
* XHR 의 `upload.onprogress` 로 바이트 단위 진행률을 보고한다. 그 외에는
|
|
2489
|
+
* fetch 로 업로드하고 시작(0%)/완료(100%)만 통지한다(Node/Edge 호환).
|
|
2440
2490
|
*/
|
|
2441
2491
|
private uploadToPresigned;
|
|
2492
|
+
/**
|
|
2493
|
+
* XMLHttpRequest 기반 PUT 업로드. `upload.onprogress` 로 바이트 진행률을
|
|
2494
|
+
* 보고하며, 외부 signal(취소)과 타임아웃을 모두 지원한다. URL 은 호출 전에
|
|
2495
|
+
* 이미 검증된 값을 받는다(uploadToPresigned 에서 스킴 검증 수행).
|
|
2496
|
+
*/
|
|
2497
|
+
private putViaXhr;
|
|
2442
2498
|
/**
|
|
2443
2499
|
* 파일 목록 조회
|
|
2444
2500
|
*
|
|
@@ -2461,18 +2517,34 @@ declare class StorageAPI {
|
|
|
2461
2517
|
*
|
|
2462
2518
|
* 서버를 거치지 않고 Object Storage에 직접 업로드합니다.
|
|
2463
2519
|
*
|
|
2520
|
+
* 3번째 인자는 부모 폴더 ID(문자열) 또는 옵션 객체를 받습니다. 옵션으로
|
|
2521
|
+
* `onProgress` 콜백을 넘기면 업로드 진행률(%)을 실시간으로 받을 수 있습니다
|
|
2522
|
+
* (브라우저 환경). 기존 `uploadFile(id, file, 'folder-id')` 호출과 하위 호환됩니다.
|
|
2523
|
+
*
|
|
2464
2524
|
* @example
|
|
2465
2525
|
* ```ts
|
|
2466
2526
|
* const fileInput = document.querySelector('input[type="file"]')
|
|
2467
2527
|
* const result = await cb.storage.uploadFile('storage-id', fileInput.files[0])
|
|
2468
2528
|
* console.log(result.url) // 업로드된 파일 URL
|
|
2529
|
+
*
|
|
2530
|
+
* // 특정 폴더에 업로드 (기존 방식 그대로)
|
|
2531
|
+
* await cb.storage.uploadFile('storage-id', file, 'folder-id')
|
|
2532
|
+
*
|
|
2533
|
+
* // 진행률 표시 + 특정 폴더
|
|
2534
|
+
* await cb.storage.uploadFile('storage-id', file, {
|
|
2535
|
+
* parentId: 'folder-id',
|
|
2536
|
+
* onProgress: (p) => console.log(`${p.percentage}%`), // { loaded, total, percentage }
|
|
2537
|
+
* })
|
|
2469
2538
|
* ```
|
|
2470
2539
|
*/
|
|
2471
|
-
uploadFile(storageId: string, file: File,
|
|
2540
|
+
uploadFile(storageId: string, file: File, parentIdOrOptions?: string | UploadFileOptions): Promise<UploadFileResponse>;
|
|
2472
2541
|
/**
|
|
2473
2542
|
* 여러 파일 업로드
|
|
2543
|
+
*
|
|
2544
|
+
* `onProgress` 를 옵션으로 넘기면 **파일별로** 진행률 콜백이 호출됩니다
|
|
2545
|
+
* (각 파일마다 0→100%). 전체 진행률이 필요하면 완료된 파일 수를 직접 집계하세요.
|
|
2474
2546
|
*/
|
|
2475
|
-
uploadFiles(storageId: string, files: File[],
|
|
2547
|
+
uploadFiles(storageId: string, files: File[], parentIdOrOptions?: string | UploadFileOptions): Promise<UploadFileResponse[]>;
|
|
2476
2548
|
/**
|
|
2477
2549
|
* 폴더 생성
|
|
2478
2550
|
*/
|
|
@@ -9321,4 +9393,4 @@ declare class ConnectBase {
|
|
|
9321
9393
|
updateConfig(config: Partial<ConnectBaseConfig>): void;
|
|
9322
9394
|
}
|
|
9323
9395
|
|
|
9324
|
-
export { AIAPI, type AIChatRequest, type AIChatResponse, type AIChatStreamCallbacks, type AIChatStreamOptions, type AIMessage, type AISource, type AIStreamChunk, type AITool, type AIToolCall, type AIToolEvent, AUTH_MEMBER_ID_TOKEN, type AckMessagesRequest, type AdMobDailyReport, type AdMobReportResponse, type AdMobReportSummary, type AdReportResponse, type AdReportSummary, type AdmobConnectionInfo, AdsAPI, type AdsenseConnectionInfo, type AgenticSearchProgress, type AggregateResult, type AggregateStage, type AnalyticsConfig, type AnalyticsEvent, ApiError, type ApiErrorDetail, type AppStatsResponse, type ArchivePolicy, type AtomicOperator, type AtomicOperatorType, AuthError, type AuthSettingsResponse, type BackupInfo, type BatchOperation, type BatchOperationResult, type BatchSetPageMetaRequest, type BatchWriteResult, type BillingCycle, type BillingKeyResponse, type BiometricInfo, type BiometricResult, type BulkCreateResponse, type BulkError, type CPUInfo, type CancelPaymentRequest, type CancelPaymentResponse, type CancelSubscriptionRequest, type CategoryInfo, type Channel, type ChannelMembership, type ChannelStats, type ChargeWithBillingKeyRequest, type ChargeWithBillingKeyResponse, type ChatMessage, type ClientMessage, type ColumnSchema, type CommentListResponse, type CompleteUploadRequest, type CompleteUploadResponse, type ConfirmBillingKeyRequest, type ConfirmPaymentRequest, type ConfirmPaymentResponse, ConnectBase, type ConnectBaseConfig, type ConnectedData, type ConnectionState, type ConsentOptions, type ConsumeMessagesResponse, type ConsumeOptions, type CopyTableRequest, type CopyTableResponse, type CreateBackupRequest, type CreateChannelRequest, type CreateCheckoutSessionRequest, type CreateCheckoutSessionResponse, type CreateColumnRequest, type CreateDataRequest, type CreateDocumentRequest, type CreateFolderRequest, type CreateFolderResponse, type CreateGeoIndexRequest, type CreateIndexRequest, type CreateLobbyRequest, type CreatePlaylistRequest, type CreatePublicKeyRequest, type CreatePublicKeyResponse, type CreateRelationRequest, type CreateRolePayload, type CreateRoleResult, type CreateRoomResult, type CreateSearchIndexRequest, type CreateSecurityRuleRequest, type CreateSubscriptionRequest, type CreateTableRequest, type CreateTriggerRequest, type CreateVideoStorageRequest, type DailyReport, type DataItem, type DataType, type DatabaseChange, type DatabaseChangeMessage, type DatabaseChangeType, type DatabaseRealtimeConnectOptions, type DatabaseRealtimeFilter, type DatabaseRealtimeHandlers, type DatabaseRealtimeSubscription, type DatabaseSnapshot, type DatabaseSnapshotMessage, type DatabaseSubscribeOptions, type DeleteWhereResponse, type DeviceInfo, type DocumentResponse, type EnabledProviderInfo, type EnabledProvidersResponse, EndpointAPI, type EndpointCallInit, type ErrorHandler, type ErrorMessage, type ErrorReport, type ErrorTrackerConfig, type ErrorType, type ExportDataRequest, type ExportDataResponse, type FetchDataResponse, type FetchFilesResponse, type FetchPublicKeysResponse, type FileItem, type FileStats, GameAPI, type GameAction, type GameClientConfig, type GameConfig, GameConfigAPI, type GameConfigPatch, type GameConnectionState, type GameConnectionStatus, type GameDelta, GameError, type GameErrorCode, type GameEventHandlers, type GamePlayer, GameRoom, type GameRoomConfig, type GameRoomInfo, GameRoomTransport, type GameServerMessage, type GameServerMessageType, type GameState, type GameTransportConfig, type GenerateUploadURLByPathRequest, type GenerateUploadURLRequest, type GenerateUploadURLResponse, type GeoBoundingBox, type GeoIndex, type GeoNear, type GeoPoint, type GeoPolygon, type GeoQuery, type GeoResponse, type GeoResult, type GetAuthorizationURLResponse, type GetFileByPathResponse, type GoogleConnectionStatus, type HistoryResponse, type ICEServer, type ICEServersResponse, type ImageResult, type ImportDataRequest, type ImportDataResponse, type IndexAnalysis, type IndexRecommendation, type InitUploadResponse, type InvokeFunctionRequest, type InvokeFunctionResponse, type IssueBillingKeyRequest, type IssueBillingKeyResponse, type JoinQueueRequest, type JoinRoomRequest, type JoinRoomResponse, type KnowledgeSearchRequest, type KnowledgeSearchResponse, type KnowledgeSearchResult, type LeaderboardEntry, type LeaderboardListResponse, type LeaderboardScoreEntry, type LifecyclePolicy, type ListBillingKeysResponse, type ListDocumentsResponse, type ListPageMetasOptions, type ListPageMetasResponse, type ListPaymentsOptions, type ListSubscriptionPaymentsRequest, type ListSubscriptionPaymentsResponse, type ListSubscriptionsRequest, type ListSubscriptionsResponse, type LobbyInfo, type LobbyInvite, type LobbyMember, type LobbyVisibility, type MatchResult, type MatchmakingTicket, type MatchqueueListResponse, type MatchqueueTicket, type MemberInfoResponse, type MemberSignInRequest, type MemberSignInResponse, type MemberSignUpRequest, type MemberSignUpResponse, type MembershipTier, type MemoryInfo, type MessageHandler, type MigrateDataRequest, type MigrateDataResponse, type MoveFileRequest, type NackMessageRequest, NativeAPI, type OAuthCallbackResponse, type OAuthProvider, type OpenDialogOptions, type OpenDialogResult, type PageMetaResponse, type PartyInfo, type PartyInvite, type PartyMember, type PauseSubscriptionRequest, type PaymentDetail, type PaymentListItem, type PaymentListResult, type PaymentProvider, type PaymentStatus, type PeerInfo, type Platform, type PlayerEvent, type PlayerStats, type Playlist, type PlaylistItem, type PollUntilOptions, type PongMessage, type PopulateOption, type Position, type PreparePaymentRequest, type PreparePaymentResponse, type PresenceChangeHandler, type PresenceInfo, type PresenceSetOptions, type PresenceStatus, type PresenceStatusResult, type PublicKeyItem, type PublishBatchRequest, type PublishBatchResponse, type PublishMessageRequest, type PublishMessageResponse, type PushPlatform, type PushStatsResult, type QualityProgress, type QueryOptions, type QueueInfoResponse, type QueueMessage, type ReadReceiptHandler, type ReadReceiptInfo, type RealtimeConnectOptions, type RealtimeMessage, type RegisterDeviceRequest, type RelationType, type RenameFileRequest, type RenameFileResponse, type ReplayHighlight, type ReplayInfo, type ReplayPlayerInfo, type RestoreBackupRequest, type RestoreBackupResponse, type RetentionPolicy, type RoleDetail, type RoleList, type RoleListItem, type RolePermissionItem, type RoleUserItem, RolesAPI, type RoomInfo, type RoomStaleMessage, type RoomSummary, type RoomsResponse, type SaveDialogOptions, type SaveDialogResult, type ScriptDetailResponse, type ScriptListResponse, type ScriptMeta, type ScriptVersion, type ScriptVersionListResponse, type SearchIndex, type SearchOptions, type SearchResponse, type SearchResult, type SecurityRule, type SendOptions, type SendSuperChatOptions, type SendSuperChatResponse, type ServerMessage, SessionManager, type SetPageMetaRequest, type Shorts, type ShortsListResponse, type SignalingMessage, type SignalingMessageType, type SlowQueryInfo, type SpectatorInfo, type SpectatorPlayerState, type SpectatorState, type SpeechRecognizeOptions, type SpeechResult, type StateChange, type StateChangeHandler, type StorageUploadOptions, type StreamContentPart, type StreamDoneCallback, type StreamDoneData, type StreamErrorCallback, type StreamHandlers, type StreamImageURLPart, type StreamMessage, type StreamOptions, type StreamSession, type StreamTextPart, type StreamTokenCallback, type StreamToolCallCallback, type StreamToolResultCallback, type StreamURLResponse, type SubscribeOptions, type SubscribeTopicRequest, type SubscribedData, type Subscription, type SubscriptionPaymentResponse, type SubscriptionPaymentStatus, type SubscriptionResponse, type SubscriptionStatus, type SuperChat, type SuperChatType, type SystemInfo, type TTLConfig, type TableAccessLevel, type TableColumnDef, type TableIndex, type TableRelation, type TableSchema, type TableSchemaDefinition, type TokenPersistence, type TransactionRead, type TransactionResult, type TransactionWrite, type TransactionWriteResult, type TranscodeStatus, type TransportType, type Trigger, type TriggerEvent, type TriggerHandlerType, type TypingChangeHandler, type TypingInfo, type UpdateBillingKeyRequest, type UpdateChannelRequest, type UpdateColumnRequest, type UpdateCustomDataRequest, type UpdateCustomDataResponse, type UpdateDataRequest, type UpdateDocumentRequest, type UpdateLobbyRequest, type UpdatePublicKeyRequest, type UpdatePublicKeyResponse, type UpdateRolePayload, type UpdateSecurityRuleRequest, type UpdateSubscriptionRequest, type UpdateTriggerRequest, type UpdateVideoRequest, type UpdateVideoStorageRequest, type UploadByPathOptions, type UploadFileResponse, type UploadOptions, type UploadProgress, type VAPIDPublicKeyResponse, type ValidateResponse, type ValidationSchema, type ValidationSchemaField, type ValidationStateTransitions, type Video, type VideoComment, type VideoCompleteUploadResponse, type VideoListOptions, type VideoListResponse, VideoProcessingError, type VideoQuality, type VideoStatus, type VideoStorage, type VideoStorageListResponse, type VideoVisibility, type VoiceChannel, type VoiceMember, type WaitOptions, type WatchHistoryItem, type WebPushSubscription, type WebRTCConnectOptions, type WebRTCConnectionState, type WebRTCMode, type WhereCondition, type WhereOperator, ConnectBase as default, detectInAppBrowser, escapeToExternalBrowser, isWebTransportSupported, toCreateRoomWire };
|
|
9396
|
+
export { AIAPI, type AIChatRequest, type AIChatResponse, type AIChatStreamCallbacks, type AIChatStreamOptions, type AIMessage, type AISource, type AIStreamChunk, type AITool, type AIToolCall, type AIToolEvent, AUTH_MEMBER_ID_TOKEN, type AckMessagesRequest, type AdMobDailyReport, type AdMobReportResponse, type AdMobReportSummary, type AdReportResponse, type AdReportSummary, type AdmobConnectionInfo, AdsAPI, type AdsenseConnectionInfo, type AgenticSearchProgress, type AggregateResult, type AggregateStage, type AnalyticsConfig, type AnalyticsEvent, ApiError, type ApiErrorDetail, type AppStatsResponse, type ArchivePolicy, type AtomicOperator, type AtomicOperatorType, AuthError, type AuthSettingsResponse, type BackupInfo, type BatchOperation, type BatchOperationResult, type BatchSetPageMetaRequest, type BatchWriteResult, type BillingCycle, type BillingKeyResponse, type BiometricInfo, type BiometricResult, type BulkCreateResponse, type BulkError, type CPUInfo, type CancelPaymentRequest, type CancelPaymentResponse, type CancelSubscriptionRequest, type CategoryInfo, type Channel, type ChannelMembership, type ChannelStats, type ChargeWithBillingKeyRequest, type ChargeWithBillingKeyResponse, type ChatMessage, type ClientMessage, type ColumnSchema, type CommentListResponse, type CompleteUploadRequest, type CompleteUploadResponse, type ConfirmBillingKeyRequest, type ConfirmPaymentRequest, type ConfirmPaymentResponse, ConnectBase, type ConnectBaseConfig, type ConnectedData, type ConnectionState, type ConsentOptions, type ConsumeMessagesResponse, type ConsumeOptions, type CopyTableRequest, type CopyTableResponse, type CreateBackupRequest, type CreateChannelRequest, type CreateCheckoutSessionRequest, type CreateCheckoutSessionResponse, type CreateColumnRequest, type CreateDataRequest, type CreateDocumentRequest, type CreateFolderRequest, type CreateFolderResponse, type CreateGeoIndexRequest, type CreateIndexRequest, type CreateLobbyRequest, type CreatePlaylistRequest, type CreatePublicKeyRequest, type CreatePublicKeyResponse, type CreateRelationRequest, type CreateRolePayload, type CreateRoleResult, type CreateRoomResult, type CreateSearchIndexRequest, type CreateSecurityRuleRequest, type CreateSubscriptionRequest, type CreateTableRequest, type CreateTriggerRequest, type CreateVideoStorageRequest, type DailyReport, type DataItem, type DataType, type DatabaseChange, type DatabaseChangeMessage, type DatabaseChangeType, type DatabaseRealtimeConnectOptions, type DatabaseRealtimeFilter, type DatabaseRealtimeHandlers, type DatabaseRealtimeSubscription, type DatabaseSnapshot, type DatabaseSnapshotMessage, type DatabaseSubscribeOptions, type DeleteWhereResponse, type DeviceInfo, type DocumentResponse, type EnabledProviderInfo, type EnabledProvidersResponse, EndpointAPI, type EndpointCallInit, type ErrorHandler, type ErrorMessage, type ErrorReport, type ErrorTrackerConfig, type ErrorType, type ExportDataRequest, type ExportDataResponse, type FetchDataResponse, type FetchFilesResponse, type FetchPublicKeysResponse, type FileItem, type FileStats, GameAPI, type GameAction, type GameClientConfig, type GameConfig, GameConfigAPI, type GameConfigPatch, type GameConnectionState, type GameConnectionStatus, type GameDelta, GameError, type GameErrorCode, type GameEventHandlers, type GamePlayer, GameRoom, type GameRoomConfig, type GameRoomInfo, GameRoomTransport, type GameServerMessage, type GameServerMessageType, type GameState, type GameTransportConfig, type GenerateUploadURLByPathRequest, type GenerateUploadURLRequest, type GenerateUploadURLResponse, type GeoBoundingBox, type GeoIndex, type GeoNear, type GeoPoint, type GeoPolygon, type GeoQuery, type GeoResponse, type GeoResult, type GetAuthorizationURLResponse, type GetFileByPathResponse, type GoogleConnectionStatus, type HistoryResponse, type ICEServer, type ICEServersResponse, type ImageResult, type ImportDataRequest, type ImportDataResponse, type IndexAnalysis, type IndexRecommendation, type InitUploadResponse, type InvokeFunctionRequest, type InvokeFunctionResponse, type IssueBillingKeyRequest, type IssueBillingKeyResponse, type JoinQueueRequest, type JoinRoomRequest, type JoinRoomResponse, type KnowledgeSearchRequest, type KnowledgeSearchResponse, type KnowledgeSearchResult, type LeaderboardEntry, type LeaderboardListResponse, type LeaderboardScoreEntry, type LifecyclePolicy, type ListBillingKeysResponse, type ListDocumentsResponse, type ListPageMetasOptions, type ListPageMetasResponse, type ListPaymentsOptions, type ListSubscriptionPaymentsRequest, type ListSubscriptionPaymentsResponse, type ListSubscriptionsRequest, type ListSubscriptionsResponse, type LobbyInfo, type LobbyInvite, type LobbyMember, type LobbyVisibility, type MatchResult, type MatchmakingTicket, type MatchqueueListResponse, type MatchqueueTicket, type MemberInfoResponse, type MemberSignInRequest, type MemberSignInResponse, type MemberSignUpRequest, type MemberSignUpResponse, type MembershipTier, type MemoryInfo, type MessageHandler, type MigrateDataRequest, type MigrateDataResponse, type MoveFileRequest, type NackMessageRequest, NativeAPI, type OAuthCallbackResponse, type OAuthProvider, type OpenDialogOptions, type OpenDialogResult, type PageMetaResponse, type PartyInfo, type PartyInvite, type PartyMember, type PauseSubscriptionRequest, type PaymentDetail, type PaymentListItem, type PaymentListResult, type PaymentProvider, type PaymentStatus, type PeerInfo, type Platform, type PlayerEvent, type PlayerStats, type Playlist, type PlaylistItem, type PollUntilOptions, type PongMessage, type PopulateOption, type Position, type PreparePaymentRequest, type PreparePaymentResponse, type PresenceChangeHandler, type PresenceInfo, type PresenceSetOptions, type PresenceStatus, type PresenceStatusResult, type PublicKeyItem, type PublishBatchRequest, type PublishBatchResponse, type PublishMessageRequest, type PublishMessageResponse, type PushPlatform, type PushStatsResult, type QualityProgress, type QueryOptions, type QueueInfoResponse, type QueueMessage, type ReadReceiptHandler, type ReadReceiptInfo, type RealtimeConnectOptions, type RealtimeMessage, type RegisterDeviceRequest, type RelationType, type RenameFileRequest, type RenameFileResponse, type ReplayHighlight, type ReplayInfo, type ReplayPlayerInfo, type RestoreBackupRequest, type RestoreBackupResponse, type RetentionPolicy, type RoleDetail, type RoleList, type RoleListItem, type RolePermissionItem, type RoleUserItem, RolesAPI, type RoomInfo, type RoomStaleMessage, type RoomSummary, type RoomsResponse, type SaveDialogOptions, type SaveDialogResult, type ScriptDetailResponse, type ScriptListResponse, type ScriptMeta, type ScriptVersion, type ScriptVersionListResponse, type SearchIndex, type SearchOptions, type SearchResponse, type SearchResult, type SecurityRule, type SendOptions, type SendSuperChatOptions, type SendSuperChatResponse, type ServerMessage, SessionManager, type SetPageMetaRequest, type Shorts, type ShortsListResponse, type SignalingMessage, type SignalingMessageType, type SlowQueryInfo, type SpectatorInfo, type SpectatorPlayerState, type SpectatorState, type SpeechRecognizeOptions, type SpeechResult, type StateChange, type StateChangeHandler, type StorageUploadOptions, type StorageUploadProgress, type StreamContentPart, type StreamDoneCallback, type StreamDoneData, type StreamErrorCallback, type StreamHandlers, type StreamImageURLPart, type StreamMessage, type StreamOptions, type StreamSession, type StreamTextPart, type StreamTokenCallback, type StreamToolCallCallback, type StreamToolResultCallback, type StreamURLResponse, type SubscribeOptions, type SubscribeTopicRequest, type SubscribedData, type Subscription, type SubscriptionPaymentResponse, type SubscriptionPaymentStatus, type SubscriptionResponse, type SubscriptionStatus, type SuperChat, type SuperChatType, type SystemInfo, type TTLConfig, type TableAccessLevel, type TableColumnDef, type TableIndex, type TableRelation, type TableSchema, type TableSchemaDefinition, type TokenPersistence, type TransactionRead, type TransactionResult, type TransactionWrite, type TransactionWriteResult, type TranscodeStatus, type TransportType, type Trigger, type TriggerEvent, type TriggerHandlerType, type TypingChangeHandler, type TypingInfo, type UpdateBillingKeyRequest, type UpdateChannelRequest, type UpdateColumnRequest, type UpdateCustomDataRequest, type UpdateCustomDataResponse, type UpdateDataRequest, type UpdateDocumentRequest, type UpdateLobbyRequest, type UpdatePublicKeyRequest, type UpdatePublicKeyResponse, type UpdateRolePayload, type UpdateSecurityRuleRequest, type UpdateSubscriptionRequest, type UpdateTriggerRequest, type UpdateVideoRequest, type UpdateVideoStorageRequest, type UploadByPathOptions, type UploadFileOptions, type UploadFileResponse, type UploadOptions, type UploadProgress, type VAPIDPublicKeyResponse, type ValidateResponse, type ValidationSchema, type ValidationSchemaField, type ValidationStateTransitions, type Video, type VideoComment, type VideoCompleteUploadResponse, type VideoListOptions, type VideoListResponse, VideoProcessingError, type VideoQuality, type VideoStatus, type VideoStorage, type VideoStorageListResponse, type VideoVisibility, type VoiceChannel, type VoiceMember, type WaitOptions, type WatchHistoryItem, type WebPushSubscription, type WebRTCConnectOptions, type WebRTCConnectionState, type WebRTCMode, type WhereCondition, type WhereOperator, ConnectBase as default, detectInAppBrowser, escapeToExternalBrowser, isWebTransportSupported, toCreateRoomWire };
|
package/dist/index.d.ts
CHANGED
|
@@ -2289,12 +2289,58 @@ interface RenameFileResponse {
|
|
|
2289
2289
|
interface FetchFilesResponse {
|
|
2290
2290
|
files: FileItem[];
|
|
2291
2291
|
}
|
|
2292
|
+
/**
|
|
2293
|
+
* 파일 업로드 진행률 (바이트 단위).
|
|
2294
|
+
*
|
|
2295
|
+
* presigned URL 로의 직접 PUT 은 단일 요청이라 청크 개념이 없어,
|
|
2296
|
+
* 영상 업로드(`UploadProgress`, 청크 기반)와 달리 바이트 기준으로 보고한다.
|
|
2297
|
+
* `percentage` 필드명은 영상 업로드와 통일했다.
|
|
2298
|
+
*/
|
|
2299
|
+
interface StorageUploadProgress {
|
|
2300
|
+
/** 지금까지 업로드된 바이트 */
|
|
2301
|
+
loaded: number;
|
|
2302
|
+
/** 전체 바이트 (= file.size) */
|
|
2303
|
+
total: number;
|
|
2304
|
+
/** 0~100 정수 백분율 */
|
|
2305
|
+
percentage: number;
|
|
2306
|
+
}
|
|
2307
|
+
/**
|
|
2308
|
+
* 파일 업로드 옵션 (`uploadFile` / `uploadFiles`).
|
|
2309
|
+
*
|
|
2310
|
+
* 기존 `uploadFile(storageId, file, parentId)` 시그니처와 하위 호환을 위해
|
|
2311
|
+
* 3번째 인자는 문자열(parentId) 또는 이 옵션 객체를 모두 받는다.
|
|
2312
|
+
*/
|
|
2313
|
+
interface UploadFileOptions {
|
|
2314
|
+
/** 부모 폴더 ID (기존 3번째 인자와 동일 의미) */
|
|
2315
|
+
parentId?: string;
|
|
2316
|
+
/**
|
|
2317
|
+
* 업로드 진행률 콜백. 브라우저 환경(XMLHttpRequest 사용 가능)에서만
|
|
2318
|
+
* 바이트 단위 진행률을 실시간으로 받는다. Node/Edge 등 XHR 이 없는
|
|
2319
|
+
* 환경에서는 시작(0%)/완료(100%)만 통지한다.
|
|
2320
|
+
*/
|
|
2321
|
+
onProgress?: (progress: StorageUploadProgress) => void;
|
|
2322
|
+
/** 업로드 취소용 외부 AbortSignal */
|
|
2323
|
+
signal?: AbortSignal;
|
|
2324
|
+
/**
|
|
2325
|
+
* PUT 요청 타임아웃(ms). 기본 30초. 대용량 파일은 이보다 오래 걸릴 수
|
|
2326
|
+
* 있으므로 필요 시 늘린다. 0 또는 무한대면 타임아웃을 두지 않는다.
|
|
2327
|
+
*/
|
|
2328
|
+
timeout?: number;
|
|
2329
|
+
}
|
|
2292
2330
|
/**
|
|
2293
2331
|
* 경로 기반 업로드 옵션
|
|
2294
2332
|
*/
|
|
2295
2333
|
interface UploadByPathOptions {
|
|
2296
2334
|
/** true면 기존 파일 덮어쓰기 (기본값: true) */
|
|
2297
2335
|
overwrite?: boolean;
|
|
2336
|
+
/**
|
|
2337
|
+
* 업로드 진행률 콜백. 동작은 {@link UploadFileOptions.onProgress} 와 동일하다.
|
|
2338
|
+
*/
|
|
2339
|
+
onProgress?: (progress: StorageUploadProgress) => void;
|
|
2340
|
+
/** 업로드 취소용 외부 AbortSignal */
|
|
2341
|
+
signal?: AbortSignal;
|
|
2342
|
+
/** PUT 요청 타임아웃(ms). 기본 30초. */
|
|
2343
|
+
timeout?: number;
|
|
2298
2344
|
}
|
|
2299
2345
|
/**
|
|
2300
2346
|
* 경로로 파일 조회 응답
|
|
@@ -2437,8 +2483,18 @@ declare class StorageAPI {
|
|
|
2437
2483
|
* Presigned URL 로 직접 업로드. 호출 전에 URL 스킴(https)을 검증해
|
|
2438
2484
|
* 서버 응답을 그대로 신뢰하는 SSRF/오용 경로를 차단.
|
|
2439
2485
|
* 타임아웃과 외부 signal 을 모두 지원한다.
|
|
2486
|
+
*
|
|
2487
|
+
* `onProgress` 가 주어지고 `XMLHttpRequest` 를 쓸 수 있는(브라우저) 환경이면
|
|
2488
|
+
* XHR 의 `upload.onprogress` 로 바이트 단위 진행률을 보고한다. 그 외에는
|
|
2489
|
+
* fetch 로 업로드하고 시작(0%)/완료(100%)만 통지한다(Node/Edge 호환).
|
|
2440
2490
|
*/
|
|
2441
2491
|
private uploadToPresigned;
|
|
2492
|
+
/**
|
|
2493
|
+
* XMLHttpRequest 기반 PUT 업로드. `upload.onprogress` 로 바이트 진행률을
|
|
2494
|
+
* 보고하며, 외부 signal(취소)과 타임아웃을 모두 지원한다. URL 은 호출 전에
|
|
2495
|
+
* 이미 검증된 값을 받는다(uploadToPresigned 에서 스킴 검증 수행).
|
|
2496
|
+
*/
|
|
2497
|
+
private putViaXhr;
|
|
2442
2498
|
/**
|
|
2443
2499
|
* 파일 목록 조회
|
|
2444
2500
|
*
|
|
@@ -2461,18 +2517,34 @@ declare class StorageAPI {
|
|
|
2461
2517
|
*
|
|
2462
2518
|
* 서버를 거치지 않고 Object Storage에 직접 업로드합니다.
|
|
2463
2519
|
*
|
|
2520
|
+
* 3번째 인자는 부모 폴더 ID(문자열) 또는 옵션 객체를 받습니다. 옵션으로
|
|
2521
|
+
* `onProgress` 콜백을 넘기면 업로드 진행률(%)을 실시간으로 받을 수 있습니다
|
|
2522
|
+
* (브라우저 환경). 기존 `uploadFile(id, file, 'folder-id')` 호출과 하위 호환됩니다.
|
|
2523
|
+
*
|
|
2464
2524
|
* @example
|
|
2465
2525
|
* ```ts
|
|
2466
2526
|
* const fileInput = document.querySelector('input[type="file"]')
|
|
2467
2527
|
* const result = await cb.storage.uploadFile('storage-id', fileInput.files[0])
|
|
2468
2528
|
* console.log(result.url) // 업로드된 파일 URL
|
|
2529
|
+
*
|
|
2530
|
+
* // 특정 폴더에 업로드 (기존 방식 그대로)
|
|
2531
|
+
* await cb.storage.uploadFile('storage-id', file, 'folder-id')
|
|
2532
|
+
*
|
|
2533
|
+
* // 진행률 표시 + 특정 폴더
|
|
2534
|
+
* await cb.storage.uploadFile('storage-id', file, {
|
|
2535
|
+
* parentId: 'folder-id',
|
|
2536
|
+
* onProgress: (p) => console.log(`${p.percentage}%`), // { loaded, total, percentage }
|
|
2537
|
+
* })
|
|
2469
2538
|
* ```
|
|
2470
2539
|
*/
|
|
2471
|
-
uploadFile(storageId: string, file: File,
|
|
2540
|
+
uploadFile(storageId: string, file: File, parentIdOrOptions?: string | UploadFileOptions): Promise<UploadFileResponse>;
|
|
2472
2541
|
/**
|
|
2473
2542
|
* 여러 파일 업로드
|
|
2543
|
+
*
|
|
2544
|
+
* `onProgress` 를 옵션으로 넘기면 **파일별로** 진행률 콜백이 호출됩니다
|
|
2545
|
+
* (각 파일마다 0→100%). 전체 진행률이 필요하면 완료된 파일 수를 직접 집계하세요.
|
|
2474
2546
|
*/
|
|
2475
|
-
uploadFiles(storageId: string, files: File[],
|
|
2547
|
+
uploadFiles(storageId: string, files: File[], parentIdOrOptions?: string | UploadFileOptions): Promise<UploadFileResponse[]>;
|
|
2476
2548
|
/**
|
|
2477
2549
|
* 폴더 생성
|
|
2478
2550
|
*/
|
|
@@ -9321,4 +9393,4 @@ declare class ConnectBase {
|
|
|
9321
9393
|
updateConfig(config: Partial<ConnectBaseConfig>): void;
|
|
9322
9394
|
}
|
|
9323
9395
|
|
|
9324
|
-
export { AIAPI, type AIChatRequest, type AIChatResponse, type AIChatStreamCallbacks, type AIChatStreamOptions, type AIMessage, type AISource, type AIStreamChunk, type AITool, type AIToolCall, type AIToolEvent, AUTH_MEMBER_ID_TOKEN, type AckMessagesRequest, type AdMobDailyReport, type AdMobReportResponse, type AdMobReportSummary, type AdReportResponse, type AdReportSummary, type AdmobConnectionInfo, AdsAPI, type AdsenseConnectionInfo, type AgenticSearchProgress, type AggregateResult, type AggregateStage, type AnalyticsConfig, type AnalyticsEvent, ApiError, type ApiErrorDetail, type AppStatsResponse, type ArchivePolicy, type AtomicOperator, type AtomicOperatorType, AuthError, type AuthSettingsResponse, type BackupInfo, type BatchOperation, type BatchOperationResult, type BatchSetPageMetaRequest, type BatchWriteResult, type BillingCycle, type BillingKeyResponse, type BiometricInfo, type BiometricResult, type BulkCreateResponse, type BulkError, type CPUInfo, type CancelPaymentRequest, type CancelPaymentResponse, type CancelSubscriptionRequest, type CategoryInfo, type Channel, type ChannelMembership, type ChannelStats, type ChargeWithBillingKeyRequest, type ChargeWithBillingKeyResponse, type ChatMessage, type ClientMessage, type ColumnSchema, type CommentListResponse, type CompleteUploadRequest, type CompleteUploadResponse, type ConfirmBillingKeyRequest, type ConfirmPaymentRequest, type ConfirmPaymentResponse, ConnectBase, type ConnectBaseConfig, type ConnectedData, type ConnectionState, type ConsentOptions, type ConsumeMessagesResponse, type ConsumeOptions, type CopyTableRequest, type CopyTableResponse, type CreateBackupRequest, type CreateChannelRequest, type CreateCheckoutSessionRequest, type CreateCheckoutSessionResponse, type CreateColumnRequest, type CreateDataRequest, type CreateDocumentRequest, type CreateFolderRequest, type CreateFolderResponse, type CreateGeoIndexRequest, type CreateIndexRequest, type CreateLobbyRequest, type CreatePlaylistRequest, type CreatePublicKeyRequest, type CreatePublicKeyResponse, type CreateRelationRequest, type CreateRolePayload, type CreateRoleResult, type CreateRoomResult, type CreateSearchIndexRequest, type CreateSecurityRuleRequest, type CreateSubscriptionRequest, type CreateTableRequest, type CreateTriggerRequest, type CreateVideoStorageRequest, type DailyReport, type DataItem, type DataType, type DatabaseChange, type DatabaseChangeMessage, type DatabaseChangeType, type DatabaseRealtimeConnectOptions, type DatabaseRealtimeFilter, type DatabaseRealtimeHandlers, type DatabaseRealtimeSubscription, type DatabaseSnapshot, type DatabaseSnapshotMessage, type DatabaseSubscribeOptions, type DeleteWhereResponse, type DeviceInfo, type DocumentResponse, type EnabledProviderInfo, type EnabledProvidersResponse, EndpointAPI, type EndpointCallInit, type ErrorHandler, type ErrorMessage, type ErrorReport, type ErrorTrackerConfig, type ErrorType, type ExportDataRequest, type ExportDataResponse, type FetchDataResponse, type FetchFilesResponse, type FetchPublicKeysResponse, type FileItem, type FileStats, GameAPI, type GameAction, type GameClientConfig, type GameConfig, GameConfigAPI, type GameConfigPatch, type GameConnectionState, type GameConnectionStatus, type GameDelta, GameError, type GameErrorCode, type GameEventHandlers, type GamePlayer, GameRoom, type GameRoomConfig, type GameRoomInfo, GameRoomTransport, type GameServerMessage, type GameServerMessageType, type GameState, type GameTransportConfig, type GenerateUploadURLByPathRequest, type GenerateUploadURLRequest, type GenerateUploadURLResponse, type GeoBoundingBox, type GeoIndex, type GeoNear, type GeoPoint, type GeoPolygon, type GeoQuery, type GeoResponse, type GeoResult, type GetAuthorizationURLResponse, type GetFileByPathResponse, type GoogleConnectionStatus, type HistoryResponse, type ICEServer, type ICEServersResponse, type ImageResult, type ImportDataRequest, type ImportDataResponse, type IndexAnalysis, type IndexRecommendation, type InitUploadResponse, type InvokeFunctionRequest, type InvokeFunctionResponse, type IssueBillingKeyRequest, type IssueBillingKeyResponse, type JoinQueueRequest, type JoinRoomRequest, type JoinRoomResponse, type KnowledgeSearchRequest, type KnowledgeSearchResponse, type KnowledgeSearchResult, type LeaderboardEntry, type LeaderboardListResponse, type LeaderboardScoreEntry, type LifecyclePolicy, type ListBillingKeysResponse, type ListDocumentsResponse, type ListPageMetasOptions, type ListPageMetasResponse, type ListPaymentsOptions, type ListSubscriptionPaymentsRequest, type ListSubscriptionPaymentsResponse, type ListSubscriptionsRequest, type ListSubscriptionsResponse, type LobbyInfo, type LobbyInvite, type LobbyMember, type LobbyVisibility, type MatchResult, type MatchmakingTicket, type MatchqueueListResponse, type MatchqueueTicket, type MemberInfoResponse, type MemberSignInRequest, type MemberSignInResponse, type MemberSignUpRequest, type MemberSignUpResponse, type MembershipTier, type MemoryInfo, type MessageHandler, type MigrateDataRequest, type MigrateDataResponse, type MoveFileRequest, type NackMessageRequest, NativeAPI, type OAuthCallbackResponse, type OAuthProvider, type OpenDialogOptions, type OpenDialogResult, type PageMetaResponse, type PartyInfo, type PartyInvite, type PartyMember, type PauseSubscriptionRequest, type PaymentDetail, type PaymentListItem, type PaymentListResult, type PaymentProvider, type PaymentStatus, type PeerInfo, type Platform, type PlayerEvent, type PlayerStats, type Playlist, type PlaylistItem, type PollUntilOptions, type PongMessage, type PopulateOption, type Position, type PreparePaymentRequest, type PreparePaymentResponse, type PresenceChangeHandler, type PresenceInfo, type PresenceSetOptions, type PresenceStatus, type PresenceStatusResult, type PublicKeyItem, type PublishBatchRequest, type PublishBatchResponse, type PublishMessageRequest, type PublishMessageResponse, type PushPlatform, type PushStatsResult, type QualityProgress, type QueryOptions, type QueueInfoResponse, type QueueMessage, type ReadReceiptHandler, type ReadReceiptInfo, type RealtimeConnectOptions, type RealtimeMessage, type RegisterDeviceRequest, type RelationType, type RenameFileRequest, type RenameFileResponse, type ReplayHighlight, type ReplayInfo, type ReplayPlayerInfo, type RestoreBackupRequest, type RestoreBackupResponse, type RetentionPolicy, type RoleDetail, type RoleList, type RoleListItem, type RolePermissionItem, type RoleUserItem, RolesAPI, type RoomInfo, type RoomStaleMessage, type RoomSummary, type RoomsResponse, type SaveDialogOptions, type SaveDialogResult, type ScriptDetailResponse, type ScriptListResponse, type ScriptMeta, type ScriptVersion, type ScriptVersionListResponse, type SearchIndex, type SearchOptions, type SearchResponse, type SearchResult, type SecurityRule, type SendOptions, type SendSuperChatOptions, type SendSuperChatResponse, type ServerMessage, SessionManager, type SetPageMetaRequest, type Shorts, type ShortsListResponse, type SignalingMessage, type SignalingMessageType, type SlowQueryInfo, type SpectatorInfo, type SpectatorPlayerState, type SpectatorState, type SpeechRecognizeOptions, type SpeechResult, type StateChange, type StateChangeHandler, type StorageUploadOptions, type StreamContentPart, type StreamDoneCallback, type StreamDoneData, type StreamErrorCallback, type StreamHandlers, type StreamImageURLPart, type StreamMessage, type StreamOptions, type StreamSession, type StreamTextPart, type StreamTokenCallback, type StreamToolCallCallback, type StreamToolResultCallback, type StreamURLResponse, type SubscribeOptions, type SubscribeTopicRequest, type SubscribedData, type Subscription, type SubscriptionPaymentResponse, type SubscriptionPaymentStatus, type SubscriptionResponse, type SubscriptionStatus, type SuperChat, type SuperChatType, type SystemInfo, type TTLConfig, type TableAccessLevel, type TableColumnDef, type TableIndex, type TableRelation, type TableSchema, type TableSchemaDefinition, type TokenPersistence, type TransactionRead, type TransactionResult, type TransactionWrite, type TransactionWriteResult, type TranscodeStatus, type TransportType, type Trigger, type TriggerEvent, type TriggerHandlerType, type TypingChangeHandler, type TypingInfo, type UpdateBillingKeyRequest, type UpdateChannelRequest, type UpdateColumnRequest, type UpdateCustomDataRequest, type UpdateCustomDataResponse, type UpdateDataRequest, type UpdateDocumentRequest, type UpdateLobbyRequest, type UpdatePublicKeyRequest, type UpdatePublicKeyResponse, type UpdateRolePayload, type UpdateSecurityRuleRequest, type UpdateSubscriptionRequest, type UpdateTriggerRequest, type UpdateVideoRequest, type UpdateVideoStorageRequest, type UploadByPathOptions, type UploadFileResponse, type UploadOptions, type UploadProgress, type VAPIDPublicKeyResponse, type ValidateResponse, type ValidationSchema, type ValidationSchemaField, type ValidationStateTransitions, type Video, type VideoComment, type VideoCompleteUploadResponse, type VideoListOptions, type VideoListResponse, VideoProcessingError, type VideoQuality, type VideoStatus, type VideoStorage, type VideoStorageListResponse, type VideoVisibility, type VoiceChannel, type VoiceMember, type WaitOptions, type WatchHistoryItem, type WebPushSubscription, type WebRTCConnectOptions, type WebRTCConnectionState, type WebRTCMode, type WhereCondition, type WhereOperator, ConnectBase as default, detectInAppBrowser, escapeToExternalBrowser, isWebTransportSupported, toCreateRoomWire };
|
|
9396
|
+
export { AIAPI, type AIChatRequest, type AIChatResponse, type AIChatStreamCallbacks, type AIChatStreamOptions, type AIMessage, type AISource, type AIStreamChunk, type AITool, type AIToolCall, type AIToolEvent, AUTH_MEMBER_ID_TOKEN, type AckMessagesRequest, type AdMobDailyReport, type AdMobReportResponse, type AdMobReportSummary, type AdReportResponse, type AdReportSummary, type AdmobConnectionInfo, AdsAPI, type AdsenseConnectionInfo, type AgenticSearchProgress, type AggregateResult, type AggregateStage, type AnalyticsConfig, type AnalyticsEvent, ApiError, type ApiErrorDetail, type AppStatsResponse, type ArchivePolicy, type AtomicOperator, type AtomicOperatorType, AuthError, type AuthSettingsResponse, type BackupInfo, type BatchOperation, type BatchOperationResult, type BatchSetPageMetaRequest, type BatchWriteResult, type BillingCycle, type BillingKeyResponse, type BiometricInfo, type BiometricResult, type BulkCreateResponse, type BulkError, type CPUInfo, type CancelPaymentRequest, type CancelPaymentResponse, type CancelSubscriptionRequest, type CategoryInfo, type Channel, type ChannelMembership, type ChannelStats, type ChargeWithBillingKeyRequest, type ChargeWithBillingKeyResponse, type ChatMessage, type ClientMessage, type ColumnSchema, type CommentListResponse, type CompleteUploadRequest, type CompleteUploadResponse, type ConfirmBillingKeyRequest, type ConfirmPaymentRequest, type ConfirmPaymentResponse, ConnectBase, type ConnectBaseConfig, type ConnectedData, type ConnectionState, type ConsentOptions, type ConsumeMessagesResponse, type ConsumeOptions, type CopyTableRequest, type CopyTableResponse, type CreateBackupRequest, type CreateChannelRequest, type CreateCheckoutSessionRequest, type CreateCheckoutSessionResponse, type CreateColumnRequest, type CreateDataRequest, type CreateDocumentRequest, type CreateFolderRequest, type CreateFolderResponse, type CreateGeoIndexRequest, type CreateIndexRequest, type CreateLobbyRequest, type CreatePlaylistRequest, type CreatePublicKeyRequest, type CreatePublicKeyResponse, type CreateRelationRequest, type CreateRolePayload, type CreateRoleResult, type CreateRoomResult, type CreateSearchIndexRequest, type CreateSecurityRuleRequest, type CreateSubscriptionRequest, type CreateTableRequest, type CreateTriggerRequest, type CreateVideoStorageRequest, type DailyReport, type DataItem, type DataType, type DatabaseChange, type DatabaseChangeMessage, type DatabaseChangeType, type DatabaseRealtimeConnectOptions, type DatabaseRealtimeFilter, type DatabaseRealtimeHandlers, type DatabaseRealtimeSubscription, type DatabaseSnapshot, type DatabaseSnapshotMessage, type DatabaseSubscribeOptions, type DeleteWhereResponse, type DeviceInfo, type DocumentResponse, type EnabledProviderInfo, type EnabledProvidersResponse, EndpointAPI, type EndpointCallInit, type ErrorHandler, type ErrorMessage, type ErrorReport, type ErrorTrackerConfig, type ErrorType, type ExportDataRequest, type ExportDataResponse, type FetchDataResponse, type FetchFilesResponse, type FetchPublicKeysResponse, type FileItem, type FileStats, GameAPI, type GameAction, type GameClientConfig, type GameConfig, GameConfigAPI, type GameConfigPatch, type GameConnectionState, type GameConnectionStatus, type GameDelta, GameError, type GameErrorCode, type GameEventHandlers, type GamePlayer, GameRoom, type GameRoomConfig, type GameRoomInfo, GameRoomTransport, type GameServerMessage, type GameServerMessageType, type GameState, type GameTransportConfig, type GenerateUploadURLByPathRequest, type GenerateUploadURLRequest, type GenerateUploadURLResponse, type GeoBoundingBox, type GeoIndex, type GeoNear, type GeoPoint, type GeoPolygon, type GeoQuery, type GeoResponse, type GeoResult, type GetAuthorizationURLResponse, type GetFileByPathResponse, type GoogleConnectionStatus, type HistoryResponse, type ICEServer, type ICEServersResponse, type ImageResult, type ImportDataRequest, type ImportDataResponse, type IndexAnalysis, type IndexRecommendation, type InitUploadResponse, type InvokeFunctionRequest, type InvokeFunctionResponse, type IssueBillingKeyRequest, type IssueBillingKeyResponse, type JoinQueueRequest, type JoinRoomRequest, type JoinRoomResponse, type KnowledgeSearchRequest, type KnowledgeSearchResponse, type KnowledgeSearchResult, type LeaderboardEntry, type LeaderboardListResponse, type LeaderboardScoreEntry, type LifecyclePolicy, type ListBillingKeysResponse, type ListDocumentsResponse, type ListPageMetasOptions, type ListPageMetasResponse, type ListPaymentsOptions, type ListSubscriptionPaymentsRequest, type ListSubscriptionPaymentsResponse, type ListSubscriptionsRequest, type ListSubscriptionsResponse, type LobbyInfo, type LobbyInvite, type LobbyMember, type LobbyVisibility, type MatchResult, type MatchmakingTicket, type MatchqueueListResponse, type MatchqueueTicket, type MemberInfoResponse, type MemberSignInRequest, type MemberSignInResponse, type MemberSignUpRequest, type MemberSignUpResponse, type MembershipTier, type MemoryInfo, type MessageHandler, type MigrateDataRequest, type MigrateDataResponse, type MoveFileRequest, type NackMessageRequest, NativeAPI, type OAuthCallbackResponse, type OAuthProvider, type OpenDialogOptions, type OpenDialogResult, type PageMetaResponse, type PartyInfo, type PartyInvite, type PartyMember, type PauseSubscriptionRequest, type PaymentDetail, type PaymentListItem, type PaymentListResult, type PaymentProvider, type PaymentStatus, type PeerInfo, type Platform, type PlayerEvent, type PlayerStats, type Playlist, type PlaylistItem, type PollUntilOptions, type PongMessage, type PopulateOption, type Position, type PreparePaymentRequest, type PreparePaymentResponse, type PresenceChangeHandler, type PresenceInfo, type PresenceSetOptions, type PresenceStatus, type PresenceStatusResult, type PublicKeyItem, type PublishBatchRequest, type PublishBatchResponse, type PublishMessageRequest, type PublishMessageResponse, type PushPlatform, type PushStatsResult, type QualityProgress, type QueryOptions, type QueueInfoResponse, type QueueMessage, type ReadReceiptHandler, type ReadReceiptInfo, type RealtimeConnectOptions, type RealtimeMessage, type RegisterDeviceRequest, type RelationType, type RenameFileRequest, type RenameFileResponse, type ReplayHighlight, type ReplayInfo, type ReplayPlayerInfo, type RestoreBackupRequest, type RestoreBackupResponse, type RetentionPolicy, type RoleDetail, type RoleList, type RoleListItem, type RolePermissionItem, type RoleUserItem, RolesAPI, type RoomInfo, type RoomStaleMessage, type RoomSummary, type RoomsResponse, type SaveDialogOptions, type SaveDialogResult, type ScriptDetailResponse, type ScriptListResponse, type ScriptMeta, type ScriptVersion, type ScriptVersionListResponse, type SearchIndex, type SearchOptions, type SearchResponse, type SearchResult, type SecurityRule, type SendOptions, type SendSuperChatOptions, type SendSuperChatResponse, type ServerMessage, SessionManager, type SetPageMetaRequest, type Shorts, type ShortsListResponse, type SignalingMessage, type SignalingMessageType, type SlowQueryInfo, type SpectatorInfo, type SpectatorPlayerState, type SpectatorState, type SpeechRecognizeOptions, type SpeechResult, type StateChange, type StateChangeHandler, type StorageUploadOptions, type StorageUploadProgress, type StreamContentPart, type StreamDoneCallback, type StreamDoneData, type StreamErrorCallback, type StreamHandlers, type StreamImageURLPart, type StreamMessage, type StreamOptions, type StreamSession, type StreamTextPart, type StreamTokenCallback, type StreamToolCallCallback, type StreamToolResultCallback, type StreamURLResponse, type SubscribeOptions, type SubscribeTopicRequest, type SubscribedData, type Subscription, type SubscriptionPaymentResponse, type SubscriptionPaymentStatus, type SubscriptionResponse, type SubscriptionStatus, type SuperChat, type SuperChatType, type SystemInfo, type TTLConfig, type TableAccessLevel, type TableColumnDef, type TableIndex, type TableRelation, type TableSchema, type TableSchemaDefinition, type TokenPersistence, type TransactionRead, type TransactionResult, type TransactionWrite, type TransactionWriteResult, type TranscodeStatus, type TransportType, type Trigger, type TriggerEvent, type TriggerHandlerType, type TypingChangeHandler, type TypingInfo, type UpdateBillingKeyRequest, type UpdateChannelRequest, type UpdateColumnRequest, type UpdateCustomDataRequest, type UpdateCustomDataResponse, type UpdateDataRequest, type UpdateDocumentRequest, type UpdateLobbyRequest, type UpdatePublicKeyRequest, type UpdatePublicKeyResponse, type UpdateRolePayload, type UpdateSecurityRuleRequest, type UpdateSubscriptionRequest, type UpdateTriggerRequest, type UpdateVideoRequest, type UpdateVideoStorageRequest, type UploadByPathOptions, type UploadFileOptions, type UploadFileResponse, type UploadOptions, type UploadProgress, type VAPIDPublicKeyResponse, type ValidateResponse, type ValidationSchema, type ValidationSchemaField, type ValidationStateTransitions, type Video, type VideoComment, type VideoCompleteUploadResponse, type VideoListOptions, type VideoListResponse, VideoProcessingError, type VideoQuality, type VideoStatus, type VideoStorage, type VideoStorageListResponse, type VideoVisibility, type VoiceChannel, type VoiceMember, type WaitOptions, type WatchHistoryItem, type WebPushSubscription, type WebRTCConnectOptions, type WebRTCConnectionState, type WebRTCMode, type WhereCondition, type WhereOperator, ConnectBase as default, detectInAppBrowser, escapeToExternalBrowser, isWebTransportSupported, toCreateRoomWire };
|
package/dist/index.js
CHANGED
|
@@ -2297,18 +2297,27 @@ var StorageAPI = class {
|
|
|
2297
2297
|
* Presigned URL 로 직접 업로드. 호출 전에 URL 스킴(https)을 검증해
|
|
2298
2298
|
* 서버 응답을 그대로 신뢰하는 SSRF/오용 경로를 차단.
|
|
2299
2299
|
* 타임아웃과 외부 signal 을 모두 지원한다.
|
|
2300
|
+
*
|
|
2301
|
+
* `onProgress` 가 주어지고 `XMLHttpRequest` 를 쓸 수 있는(브라우저) 환경이면
|
|
2302
|
+
* XHR 의 `upload.onprogress` 로 바이트 단위 진행률을 보고한다. 그 외에는
|
|
2303
|
+
* fetch 로 업로드하고 시작(0%)/완료(100%)만 통지한다(Node/Edge 호환).
|
|
2300
2304
|
*/
|
|
2301
2305
|
async uploadToPresigned(rawUrl, file, options) {
|
|
2302
2306
|
const parsed = validateExternalUrl(rawUrl, {
|
|
2303
2307
|
allowLocalhost: isLocalhostOrigin(),
|
|
2304
2308
|
context: "storage.presigned-url"
|
|
2305
2309
|
});
|
|
2310
|
+
const url = parsed.toString();
|
|
2311
|
+
if (options?.onProgress && typeof XMLHttpRequest !== "undefined") {
|
|
2312
|
+
return this.putViaXhr(url, file, options.onProgress, options);
|
|
2313
|
+
}
|
|
2306
2314
|
const { signal, cleanup } = createTimeoutController({
|
|
2307
2315
|
timeout: options?.timeout,
|
|
2308
2316
|
signal: options?.signal
|
|
2309
2317
|
});
|
|
2310
2318
|
try {
|
|
2311
|
-
|
|
2319
|
+
options?.onProgress?.({ loaded: 0, total: file.size, percentage: 0 });
|
|
2320
|
+
const response = await fetch(url, {
|
|
2312
2321
|
method: "PUT",
|
|
2313
2322
|
body: file,
|
|
2314
2323
|
headers: {
|
|
@@ -2323,10 +2332,79 @@ var StorageAPI = class {
|
|
|
2323
2332
|
"PRESIGNED_UPLOAD_FAILED"
|
|
2324
2333
|
);
|
|
2325
2334
|
}
|
|
2335
|
+
options?.onProgress?.({ loaded: file.size, total: file.size, percentage: 100 });
|
|
2326
2336
|
} finally {
|
|
2327
2337
|
cleanup();
|
|
2328
2338
|
}
|
|
2329
2339
|
}
|
|
2340
|
+
/**
|
|
2341
|
+
* XMLHttpRequest 기반 PUT 업로드. `upload.onprogress` 로 바이트 진행률을
|
|
2342
|
+
* 보고하며, 외부 signal(취소)과 타임아웃을 모두 지원한다. URL 은 호출 전에
|
|
2343
|
+
* 이미 검증된 값을 받는다(uploadToPresigned 에서 스킴 검증 수행).
|
|
2344
|
+
*/
|
|
2345
|
+
putViaXhr(url, file, onProgress, options) {
|
|
2346
|
+
return new Promise((resolve, reject) => {
|
|
2347
|
+
const external = options?.signal;
|
|
2348
|
+
if (external?.aborted) {
|
|
2349
|
+
reject(external.reason ?? new DOMException("Aborted", "AbortError"));
|
|
2350
|
+
return;
|
|
2351
|
+
}
|
|
2352
|
+
const xhr = new XMLHttpRequest();
|
|
2353
|
+
xhr.open("PUT", url, true);
|
|
2354
|
+
xhr.setRequestHeader("Content-Type", file.type || "application/octet-stream");
|
|
2355
|
+
const timeout = options?.timeout ?? DEFAULT_REQUEST_TIMEOUT_MS;
|
|
2356
|
+
if (timeout > 0 && Number.isFinite(timeout)) {
|
|
2357
|
+
xhr.timeout = timeout;
|
|
2358
|
+
}
|
|
2359
|
+
let abortListener = null;
|
|
2360
|
+
const cleanup = () => {
|
|
2361
|
+
if (external && abortListener) {
|
|
2362
|
+
external.removeEventListener("abort", abortListener);
|
|
2363
|
+
}
|
|
2364
|
+
};
|
|
2365
|
+
if (external) {
|
|
2366
|
+
abortListener = () => xhr.abort();
|
|
2367
|
+
external.addEventListener("abort", abortListener, { once: true });
|
|
2368
|
+
}
|
|
2369
|
+
xhr.upload.onprogress = (event) => {
|
|
2370
|
+
if (!event.lengthComputable) return;
|
|
2371
|
+
const total = event.total || file.size;
|
|
2372
|
+
onProgress({
|
|
2373
|
+
loaded: event.loaded,
|
|
2374
|
+
total,
|
|
2375
|
+
percentage: total > 0 ? Math.round(event.loaded / total * 100) : 0
|
|
2376
|
+
});
|
|
2377
|
+
};
|
|
2378
|
+
xhr.onload = () => {
|
|
2379
|
+
cleanup();
|
|
2380
|
+
if (xhr.status >= 200 && xhr.status < 300) {
|
|
2381
|
+
onProgress({ loaded: file.size, total: file.size, percentage: 100 });
|
|
2382
|
+
resolve();
|
|
2383
|
+
} else {
|
|
2384
|
+
reject(
|
|
2385
|
+
new ApiError(
|
|
2386
|
+
xhr.status,
|
|
2387
|
+
`Upload failed: ${xhr.statusText || "unknown error"}`,
|
|
2388
|
+
"PRESIGNED_UPLOAD_FAILED"
|
|
2389
|
+
)
|
|
2390
|
+
);
|
|
2391
|
+
}
|
|
2392
|
+
};
|
|
2393
|
+
xhr.onerror = () => {
|
|
2394
|
+
cleanup();
|
|
2395
|
+
reject(new ApiError(0, "Upload failed: network error", "PRESIGNED_UPLOAD_FAILED"));
|
|
2396
|
+
};
|
|
2397
|
+
xhr.ontimeout = () => {
|
|
2398
|
+
cleanup();
|
|
2399
|
+
reject(new DOMException(`Request timed out after ${timeout}ms`, "TimeoutError"));
|
|
2400
|
+
};
|
|
2401
|
+
xhr.onabort = () => {
|
|
2402
|
+
cleanup();
|
|
2403
|
+
reject(external?.reason ?? new DOMException("Aborted", "AbortError"));
|
|
2404
|
+
};
|
|
2405
|
+
xhr.send(file);
|
|
2406
|
+
});
|
|
2407
|
+
}
|
|
2330
2408
|
/**
|
|
2331
2409
|
* 파일 목록 조회
|
|
2332
2410
|
*
|
|
@@ -2356,14 +2434,28 @@ var StorageAPI = class {
|
|
|
2356
2434
|
*
|
|
2357
2435
|
* 서버를 거치지 않고 Object Storage에 직접 업로드합니다.
|
|
2358
2436
|
*
|
|
2437
|
+
* 3번째 인자는 부모 폴더 ID(문자열) 또는 옵션 객체를 받습니다. 옵션으로
|
|
2438
|
+
* `onProgress` 콜백을 넘기면 업로드 진행률(%)을 실시간으로 받을 수 있습니다
|
|
2439
|
+
* (브라우저 환경). 기존 `uploadFile(id, file, 'folder-id')` 호출과 하위 호환됩니다.
|
|
2440
|
+
*
|
|
2359
2441
|
* @example
|
|
2360
2442
|
* ```ts
|
|
2361
2443
|
* const fileInput = document.querySelector('input[type="file"]')
|
|
2362
2444
|
* const result = await cb.storage.uploadFile('storage-id', fileInput.files[0])
|
|
2363
2445
|
* console.log(result.url) // 업로드된 파일 URL
|
|
2446
|
+
*
|
|
2447
|
+
* // 특정 폴더에 업로드 (기존 방식 그대로)
|
|
2448
|
+
* await cb.storage.uploadFile('storage-id', file, 'folder-id')
|
|
2449
|
+
*
|
|
2450
|
+
* // 진행률 표시 + 특정 폴더
|
|
2451
|
+
* await cb.storage.uploadFile('storage-id', file, {
|
|
2452
|
+
* parentId: 'folder-id',
|
|
2453
|
+
* onProgress: (p) => console.log(`${p.percentage}%`), // { loaded, total, percentage }
|
|
2454
|
+
* })
|
|
2364
2455
|
* ```
|
|
2365
2456
|
*/
|
|
2366
|
-
async uploadFile(storageId, file,
|
|
2457
|
+
async uploadFile(storageId, file, parentIdOrOptions) {
|
|
2458
|
+
const options = typeof parentIdOrOptions === "string" ? { parentId: parentIdOrOptions } : parentIdOrOptions ?? {};
|
|
2367
2459
|
const prefix = this.getPublicPrefix();
|
|
2368
2460
|
const presignedResponse = await this.http.post(
|
|
2369
2461
|
`${prefix}/storages/files/${storageId}/presigned-url`,
|
|
@@ -2371,10 +2463,14 @@ var StorageAPI = class {
|
|
|
2371
2463
|
file_name: file.name,
|
|
2372
2464
|
file_size: file.size,
|
|
2373
2465
|
mime_type: file.type || "application/octet-stream",
|
|
2374
|
-
parent_id: parentId
|
|
2466
|
+
parent_id: options.parentId
|
|
2375
2467
|
}
|
|
2376
2468
|
);
|
|
2377
|
-
await this.uploadToPresigned(presignedResponse.upload_url, file
|
|
2469
|
+
await this.uploadToPresigned(presignedResponse.upload_url, file, {
|
|
2470
|
+
onProgress: options.onProgress,
|
|
2471
|
+
signal: options.signal,
|
|
2472
|
+
timeout: options.timeout
|
|
2473
|
+
});
|
|
2378
2474
|
const completeResponse = await this.http.post(
|
|
2379
2475
|
`${prefix}/storages/files/${storageId}/complete-upload`,
|
|
2380
2476
|
{ file_id: presignedResponse.file_id }
|
|
@@ -2393,11 +2489,14 @@ var StorageAPI = class {
|
|
|
2393
2489
|
}
|
|
2394
2490
|
/**
|
|
2395
2491
|
* 여러 파일 업로드
|
|
2492
|
+
*
|
|
2493
|
+
* `onProgress` 를 옵션으로 넘기면 **파일별로** 진행률 콜백이 호출됩니다
|
|
2494
|
+
* (각 파일마다 0→100%). 전체 진행률이 필요하면 완료된 파일 수를 직접 집계하세요.
|
|
2396
2495
|
*/
|
|
2397
|
-
async uploadFiles(storageId, files,
|
|
2496
|
+
async uploadFiles(storageId, files, parentIdOrOptions) {
|
|
2398
2497
|
const results = [];
|
|
2399
2498
|
for (const file of files) {
|
|
2400
|
-
const result = await this.uploadFile(storageId, file,
|
|
2499
|
+
const result = await this.uploadFile(storageId, file, parentIdOrOptions);
|
|
2401
2500
|
results.push(result);
|
|
2402
2501
|
}
|
|
2403
2502
|
return results;
|
|
@@ -2496,7 +2595,11 @@ var StorageAPI = class {
|
|
|
2496
2595
|
overwrite
|
|
2497
2596
|
}
|
|
2498
2597
|
);
|
|
2499
|
-
await this.uploadToPresigned(presignedResponse.upload_url, file
|
|
2598
|
+
await this.uploadToPresigned(presignedResponse.upload_url, file, {
|
|
2599
|
+
onProgress: options?.onProgress,
|
|
2600
|
+
signal: options?.signal,
|
|
2601
|
+
timeout: options?.timeout
|
|
2602
|
+
});
|
|
2500
2603
|
const completeResponse = await this.http.post(
|
|
2501
2604
|
`${prefix}/storages/files/${storageId}/complete-upload`,
|
|
2502
2605
|
{ file_id: presignedResponse.file_id }
|