connectbase-client 3.48.2 → 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 +93 -4
- package/dist/index.d.ts +93 -4
- package/dist/index.js +113 -8
- package/dist/index.mjs +113 -8
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1190,8 +1190,17 @@ interface FetchDataResponse {
|
|
|
1190
1190
|
*
|
|
1191
1191
|
* `count: false` 로 조회한 경우: 마지막 페이지(반환 건수 < limit)면 서버가 정확한
|
|
1192
1192
|
* 총계를 파생해 돌려주고, 아니면 `-1` (미상) 이 반환됩니다.
|
|
1193
|
+
* `cursor` 를 사용한 조회는 기본적으로 `-1` (잔여 카운트가 필요하면 `count: true` 명시).
|
|
1193
1194
|
*/
|
|
1194
1195
|
total_count: number;
|
|
1196
|
+
/**
|
|
1197
|
+
* 다음 페이지 커서 (keyset 페이지네이션).
|
|
1198
|
+
*
|
|
1199
|
+
* 값이 있으면 다음 페이지가 있을 수 있으며, 다음 요청의 `cursor` 옵션에 그대로
|
|
1200
|
+
* 전달하면 됩니다. 없으면 마지막 페이지입니다. 사용자 정렬(orderBy)과 함께는
|
|
1201
|
+
* 제공되지 않습니다.
|
|
1202
|
+
*/
|
|
1203
|
+
next_cursor?: string;
|
|
1195
1204
|
}
|
|
1196
1205
|
interface QueryOptions {
|
|
1197
1206
|
limit?: number;
|
|
@@ -1208,9 +1217,17 @@ interface QueryOptions {
|
|
|
1208
1217
|
*
|
|
1209
1218
|
* 필터가 붙은 COUNT 는 본 조회와 같은 비용의 스캔을 한 번 더 도는 것이므로,
|
|
1210
1219
|
* 총계가 필요 없는 목록/무한스크롤 조회는 `count: false` 로 눈에 띄게 빨라집니다.
|
|
1211
|
-
* 생략 시 기본값은 `true` (기존 동작 유지).
|
|
1220
|
+
* 생략 시 기본값은 `true` (기존 동작 유지). `cursor` 사용 시 기본값은 `false`.
|
|
1212
1221
|
*/
|
|
1213
1222
|
count?: boolean;
|
|
1223
|
+
/**
|
|
1224
|
+
* Keyset 페이지네이션 커서 — 이전 응답의 `next_cursor` 값.
|
|
1225
|
+
*
|
|
1226
|
+
* 설정하면 `offset` 은 무시되고 생성순(id) 정렬로 커서 이후 문서를 반환합니다.
|
|
1227
|
+
* `offset` 방식은 깊은 페이지일수록 느려지지만 커서 방식은 페이지 깊이와 무관하게
|
|
1228
|
+
* 일정합니다 (무한스크롤 권장). `orderBy` 와 함께 쓸 수 없습니다.
|
|
1229
|
+
*/
|
|
1230
|
+
cursor?: string;
|
|
1214
1231
|
}
|
|
1215
1232
|
type WhereCondition = {
|
|
1216
1233
|
/** OR 조건: 배열 내 조건들 중 하나 이상 만족 */
|
|
@@ -2272,12 +2289,58 @@ interface RenameFileResponse {
|
|
|
2272
2289
|
interface FetchFilesResponse {
|
|
2273
2290
|
files: FileItem[];
|
|
2274
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
|
+
}
|
|
2275
2330
|
/**
|
|
2276
2331
|
* 경로 기반 업로드 옵션
|
|
2277
2332
|
*/
|
|
2278
2333
|
interface UploadByPathOptions {
|
|
2279
2334
|
/** true면 기존 파일 덮어쓰기 (기본값: true) */
|
|
2280
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;
|
|
2281
2344
|
}
|
|
2282
2345
|
/**
|
|
2283
2346
|
* 경로로 파일 조회 응답
|
|
@@ -2420,8 +2483,18 @@ declare class StorageAPI {
|
|
|
2420
2483
|
* Presigned URL 로 직접 업로드. 호출 전에 URL 스킴(https)을 검증해
|
|
2421
2484
|
* 서버 응답을 그대로 신뢰하는 SSRF/오용 경로를 차단.
|
|
2422
2485
|
* 타임아웃과 외부 signal 을 모두 지원한다.
|
|
2486
|
+
*
|
|
2487
|
+
* `onProgress` 가 주어지고 `XMLHttpRequest` 를 쓸 수 있는(브라우저) 환경이면
|
|
2488
|
+
* XHR 의 `upload.onprogress` 로 바이트 단위 진행률을 보고한다. 그 외에는
|
|
2489
|
+
* fetch 로 업로드하고 시작(0%)/완료(100%)만 통지한다(Node/Edge 호환).
|
|
2423
2490
|
*/
|
|
2424
2491
|
private uploadToPresigned;
|
|
2492
|
+
/**
|
|
2493
|
+
* XMLHttpRequest 기반 PUT 업로드. `upload.onprogress` 로 바이트 진행률을
|
|
2494
|
+
* 보고하며, 외부 signal(취소)과 타임아웃을 모두 지원한다. URL 은 호출 전에
|
|
2495
|
+
* 이미 검증된 값을 받는다(uploadToPresigned 에서 스킴 검증 수행).
|
|
2496
|
+
*/
|
|
2497
|
+
private putViaXhr;
|
|
2425
2498
|
/**
|
|
2426
2499
|
* 파일 목록 조회
|
|
2427
2500
|
*
|
|
@@ -2444,18 +2517,34 @@ declare class StorageAPI {
|
|
|
2444
2517
|
*
|
|
2445
2518
|
* 서버를 거치지 않고 Object Storage에 직접 업로드합니다.
|
|
2446
2519
|
*
|
|
2520
|
+
* 3번째 인자는 부모 폴더 ID(문자열) 또는 옵션 객체를 받습니다. 옵션으로
|
|
2521
|
+
* `onProgress` 콜백을 넘기면 업로드 진행률(%)을 실시간으로 받을 수 있습니다
|
|
2522
|
+
* (브라우저 환경). 기존 `uploadFile(id, file, 'folder-id')` 호출과 하위 호환됩니다.
|
|
2523
|
+
*
|
|
2447
2524
|
* @example
|
|
2448
2525
|
* ```ts
|
|
2449
2526
|
* const fileInput = document.querySelector('input[type="file"]')
|
|
2450
2527
|
* const result = await cb.storage.uploadFile('storage-id', fileInput.files[0])
|
|
2451
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
|
+
* })
|
|
2452
2538
|
* ```
|
|
2453
2539
|
*/
|
|
2454
|
-
uploadFile(storageId: string, file: File,
|
|
2540
|
+
uploadFile(storageId: string, file: File, parentIdOrOptions?: string | UploadFileOptions): Promise<UploadFileResponse>;
|
|
2455
2541
|
/**
|
|
2456
2542
|
* 여러 파일 업로드
|
|
2543
|
+
*
|
|
2544
|
+
* `onProgress` 를 옵션으로 넘기면 **파일별로** 진행률 콜백이 호출됩니다
|
|
2545
|
+
* (각 파일마다 0→100%). 전체 진행률이 필요하면 완료된 파일 수를 직접 집계하세요.
|
|
2457
2546
|
*/
|
|
2458
|
-
uploadFiles(storageId: string, files: File[],
|
|
2547
|
+
uploadFiles(storageId: string, files: File[], parentIdOrOptions?: string | UploadFileOptions): Promise<UploadFileResponse[]>;
|
|
2459
2548
|
/**
|
|
2460
2549
|
* 폴더 생성
|
|
2461
2550
|
*/
|
|
@@ -9304,4 +9393,4 @@ declare class ConnectBase {
|
|
|
9304
9393
|
updateConfig(config: Partial<ConnectBaseConfig>): void;
|
|
9305
9394
|
}
|
|
9306
9395
|
|
|
9307
|
-
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
|
@@ -1190,8 +1190,17 @@ interface FetchDataResponse {
|
|
|
1190
1190
|
*
|
|
1191
1191
|
* `count: false` 로 조회한 경우: 마지막 페이지(반환 건수 < limit)면 서버가 정확한
|
|
1192
1192
|
* 총계를 파생해 돌려주고, 아니면 `-1` (미상) 이 반환됩니다.
|
|
1193
|
+
* `cursor` 를 사용한 조회는 기본적으로 `-1` (잔여 카운트가 필요하면 `count: true` 명시).
|
|
1193
1194
|
*/
|
|
1194
1195
|
total_count: number;
|
|
1196
|
+
/**
|
|
1197
|
+
* 다음 페이지 커서 (keyset 페이지네이션).
|
|
1198
|
+
*
|
|
1199
|
+
* 값이 있으면 다음 페이지가 있을 수 있으며, 다음 요청의 `cursor` 옵션에 그대로
|
|
1200
|
+
* 전달하면 됩니다. 없으면 마지막 페이지입니다. 사용자 정렬(orderBy)과 함께는
|
|
1201
|
+
* 제공되지 않습니다.
|
|
1202
|
+
*/
|
|
1203
|
+
next_cursor?: string;
|
|
1195
1204
|
}
|
|
1196
1205
|
interface QueryOptions {
|
|
1197
1206
|
limit?: number;
|
|
@@ -1208,9 +1217,17 @@ interface QueryOptions {
|
|
|
1208
1217
|
*
|
|
1209
1218
|
* 필터가 붙은 COUNT 는 본 조회와 같은 비용의 스캔을 한 번 더 도는 것이므로,
|
|
1210
1219
|
* 총계가 필요 없는 목록/무한스크롤 조회는 `count: false` 로 눈에 띄게 빨라집니다.
|
|
1211
|
-
* 생략 시 기본값은 `true` (기존 동작 유지).
|
|
1220
|
+
* 생략 시 기본값은 `true` (기존 동작 유지). `cursor` 사용 시 기본값은 `false`.
|
|
1212
1221
|
*/
|
|
1213
1222
|
count?: boolean;
|
|
1223
|
+
/**
|
|
1224
|
+
* Keyset 페이지네이션 커서 — 이전 응답의 `next_cursor` 값.
|
|
1225
|
+
*
|
|
1226
|
+
* 설정하면 `offset` 은 무시되고 생성순(id) 정렬로 커서 이후 문서를 반환합니다.
|
|
1227
|
+
* `offset` 방식은 깊은 페이지일수록 느려지지만 커서 방식은 페이지 깊이와 무관하게
|
|
1228
|
+
* 일정합니다 (무한스크롤 권장). `orderBy` 와 함께 쓸 수 없습니다.
|
|
1229
|
+
*/
|
|
1230
|
+
cursor?: string;
|
|
1214
1231
|
}
|
|
1215
1232
|
type WhereCondition = {
|
|
1216
1233
|
/** OR 조건: 배열 내 조건들 중 하나 이상 만족 */
|
|
@@ -2272,12 +2289,58 @@ interface RenameFileResponse {
|
|
|
2272
2289
|
interface FetchFilesResponse {
|
|
2273
2290
|
files: FileItem[];
|
|
2274
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
|
+
}
|
|
2275
2330
|
/**
|
|
2276
2331
|
* 경로 기반 업로드 옵션
|
|
2277
2332
|
*/
|
|
2278
2333
|
interface UploadByPathOptions {
|
|
2279
2334
|
/** true면 기존 파일 덮어쓰기 (기본값: true) */
|
|
2280
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;
|
|
2281
2344
|
}
|
|
2282
2345
|
/**
|
|
2283
2346
|
* 경로로 파일 조회 응답
|
|
@@ -2420,8 +2483,18 @@ declare class StorageAPI {
|
|
|
2420
2483
|
* Presigned URL 로 직접 업로드. 호출 전에 URL 스킴(https)을 검증해
|
|
2421
2484
|
* 서버 응답을 그대로 신뢰하는 SSRF/오용 경로를 차단.
|
|
2422
2485
|
* 타임아웃과 외부 signal 을 모두 지원한다.
|
|
2486
|
+
*
|
|
2487
|
+
* `onProgress` 가 주어지고 `XMLHttpRequest` 를 쓸 수 있는(브라우저) 환경이면
|
|
2488
|
+
* XHR 의 `upload.onprogress` 로 바이트 단위 진행률을 보고한다. 그 외에는
|
|
2489
|
+
* fetch 로 업로드하고 시작(0%)/완료(100%)만 통지한다(Node/Edge 호환).
|
|
2423
2490
|
*/
|
|
2424
2491
|
private uploadToPresigned;
|
|
2492
|
+
/**
|
|
2493
|
+
* XMLHttpRequest 기반 PUT 업로드. `upload.onprogress` 로 바이트 진행률을
|
|
2494
|
+
* 보고하며, 외부 signal(취소)과 타임아웃을 모두 지원한다. URL 은 호출 전에
|
|
2495
|
+
* 이미 검증된 값을 받는다(uploadToPresigned 에서 스킴 검증 수행).
|
|
2496
|
+
*/
|
|
2497
|
+
private putViaXhr;
|
|
2425
2498
|
/**
|
|
2426
2499
|
* 파일 목록 조회
|
|
2427
2500
|
*
|
|
@@ -2444,18 +2517,34 @@ declare class StorageAPI {
|
|
|
2444
2517
|
*
|
|
2445
2518
|
* 서버를 거치지 않고 Object Storage에 직접 업로드합니다.
|
|
2446
2519
|
*
|
|
2520
|
+
* 3번째 인자는 부모 폴더 ID(문자열) 또는 옵션 객체를 받습니다. 옵션으로
|
|
2521
|
+
* `onProgress` 콜백을 넘기면 업로드 진행률(%)을 실시간으로 받을 수 있습니다
|
|
2522
|
+
* (브라우저 환경). 기존 `uploadFile(id, file, 'folder-id')` 호출과 하위 호환됩니다.
|
|
2523
|
+
*
|
|
2447
2524
|
* @example
|
|
2448
2525
|
* ```ts
|
|
2449
2526
|
* const fileInput = document.querySelector('input[type="file"]')
|
|
2450
2527
|
* const result = await cb.storage.uploadFile('storage-id', fileInput.files[0])
|
|
2451
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
|
+
* })
|
|
2452
2538
|
* ```
|
|
2453
2539
|
*/
|
|
2454
|
-
uploadFile(storageId: string, file: File,
|
|
2540
|
+
uploadFile(storageId: string, file: File, parentIdOrOptions?: string | UploadFileOptions): Promise<UploadFileResponse>;
|
|
2455
2541
|
/**
|
|
2456
2542
|
* 여러 파일 업로드
|
|
2543
|
+
*
|
|
2544
|
+
* `onProgress` 를 옵션으로 넘기면 **파일별로** 진행률 콜백이 호출됩니다
|
|
2545
|
+
* (각 파일마다 0→100%). 전체 진행률이 필요하면 완료된 파일 수를 직접 집계하세요.
|
|
2457
2546
|
*/
|
|
2458
|
-
uploadFiles(storageId: string, files: File[],
|
|
2547
|
+
uploadFiles(storageId: string, files: File[], parentIdOrOptions?: string | UploadFileOptions): Promise<UploadFileResponse[]>;
|
|
2459
2548
|
/**
|
|
2460
2549
|
* 폴더 생성
|
|
2461
2550
|
*/
|
|
@@ -9304,4 +9393,4 @@ declare class ConnectBase {
|
|
|
9304
9393
|
updateConfig(config: Partial<ConnectBaseConfig>): void;
|
|
9305
9394
|
}
|
|
9306
9395
|
|
|
9307
|
-
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
|
@@ -1315,6 +1315,7 @@ var DatabaseAPI = class {
|
|
|
1315
1315
|
if (options?.limit) params.append("limit", options.limit.toString());
|
|
1316
1316
|
if (options?.offset) params.append("offset", options.offset.toString());
|
|
1317
1317
|
if (options?.count === false) params.append("count", "false");
|
|
1318
|
+
if (options?.cursor) params.append("cursor", options.cursor);
|
|
1318
1319
|
const queryString = params.toString();
|
|
1319
1320
|
const url = queryString ? `${prefix}/tables/${tableId}/data?${queryString}` : `${prefix}/tables/${tableId}/data`;
|
|
1320
1321
|
return this.http.get(url);
|
|
@@ -1334,7 +1335,8 @@ var DatabaseAPI = class {
|
|
|
1334
1335
|
offset: options.offset,
|
|
1335
1336
|
select: options.select,
|
|
1336
1337
|
exclude: options.exclude,
|
|
1337
|
-
count: options.count
|
|
1338
|
+
count: options.count,
|
|
1339
|
+
cursor: options.cursor
|
|
1338
1340
|
}
|
|
1339
1341
|
);
|
|
1340
1342
|
}
|
|
@@ -2295,18 +2297,27 @@ var StorageAPI = class {
|
|
|
2295
2297
|
* Presigned URL 로 직접 업로드. 호출 전에 URL 스킴(https)을 검증해
|
|
2296
2298
|
* 서버 응답을 그대로 신뢰하는 SSRF/오용 경로를 차단.
|
|
2297
2299
|
* 타임아웃과 외부 signal 을 모두 지원한다.
|
|
2300
|
+
*
|
|
2301
|
+
* `onProgress` 가 주어지고 `XMLHttpRequest` 를 쓸 수 있는(브라우저) 환경이면
|
|
2302
|
+
* XHR 의 `upload.onprogress` 로 바이트 단위 진행률을 보고한다. 그 외에는
|
|
2303
|
+
* fetch 로 업로드하고 시작(0%)/완료(100%)만 통지한다(Node/Edge 호환).
|
|
2298
2304
|
*/
|
|
2299
2305
|
async uploadToPresigned(rawUrl, file, options) {
|
|
2300
2306
|
const parsed = validateExternalUrl(rawUrl, {
|
|
2301
2307
|
allowLocalhost: isLocalhostOrigin(),
|
|
2302
2308
|
context: "storage.presigned-url"
|
|
2303
2309
|
});
|
|
2310
|
+
const url = parsed.toString();
|
|
2311
|
+
if (options?.onProgress && typeof XMLHttpRequest !== "undefined") {
|
|
2312
|
+
return this.putViaXhr(url, file, options.onProgress, options);
|
|
2313
|
+
}
|
|
2304
2314
|
const { signal, cleanup } = createTimeoutController({
|
|
2305
2315
|
timeout: options?.timeout,
|
|
2306
2316
|
signal: options?.signal
|
|
2307
2317
|
});
|
|
2308
2318
|
try {
|
|
2309
|
-
|
|
2319
|
+
options?.onProgress?.({ loaded: 0, total: file.size, percentage: 0 });
|
|
2320
|
+
const response = await fetch(url, {
|
|
2310
2321
|
method: "PUT",
|
|
2311
2322
|
body: file,
|
|
2312
2323
|
headers: {
|
|
@@ -2321,10 +2332,79 @@ var StorageAPI = class {
|
|
|
2321
2332
|
"PRESIGNED_UPLOAD_FAILED"
|
|
2322
2333
|
);
|
|
2323
2334
|
}
|
|
2335
|
+
options?.onProgress?.({ loaded: file.size, total: file.size, percentage: 100 });
|
|
2324
2336
|
} finally {
|
|
2325
2337
|
cleanup();
|
|
2326
2338
|
}
|
|
2327
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
|
+
}
|
|
2328
2408
|
/**
|
|
2329
2409
|
* 파일 목록 조회
|
|
2330
2410
|
*
|
|
@@ -2354,14 +2434,28 @@ var StorageAPI = class {
|
|
|
2354
2434
|
*
|
|
2355
2435
|
* 서버를 거치지 않고 Object Storage에 직접 업로드합니다.
|
|
2356
2436
|
*
|
|
2437
|
+
* 3번째 인자는 부모 폴더 ID(문자열) 또는 옵션 객체를 받습니다. 옵션으로
|
|
2438
|
+
* `onProgress` 콜백을 넘기면 업로드 진행률(%)을 실시간으로 받을 수 있습니다
|
|
2439
|
+
* (브라우저 환경). 기존 `uploadFile(id, file, 'folder-id')` 호출과 하위 호환됩니다.
|
|
2440
|
+
*
|
|
2357
2441
|
* @example
|
|
2358
2442
|
* ```ts
|
|
2359
2443
|
* const fileInput = document.querySelector('input[type="file"]')
|
|
2360
2444
|
* const result = await cb.storage.uploadFile('storage-id', fileInput.files[0])
|
|
2361
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
|
+
* })
|
|
2362
2455
|
* ```
|
|
2363
2456
|
*/
|
|
2364
|
-
async uploadFile(storageId, file,
|
|
2457
|
+
async uploadFile(storageId, file, parentIdOrOptions) {
|
|
2458
|
+
const options = typeof parentIdOrOptions === "string" ? { parentId: parentIdOrOptions } : parentIdOrOptions ?? {};
|
|
2365
2459
|
const prefix = this.getPublicPrefix();
|
|
2366
2460
|
const presignedResponse = await this.http.post(
|
|
2367
2461
|
`${prefix}/storages/files/${storageId}/presigned-url`,
|
|
@@ -2369,10 +2463,14 @@ var StorageAPI = class {
|
|
|
2369
2463
|
file_name: file.name,
|
|
2370
2464
|
file_size: file.size,
|
|
2371
2465
|
mime_type: file.type || "application/octet-stream",
|
|
2372
|
-
parent_id: parentId
|
|
2466
|
+
parent_id: options.parentId
|
|
2373
2467
|
}
|
|
2374
2468
|
);
|
|
2375
|
-
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
|
+
});
|
|
2376
2474
|
const completeResponse = await this.http.post(
|
|
2377
2475
|
`${prefix}/storages/files/${storageId}/complete-upload`,
|
|
2378
2476
|
{ file_id: presignedResponse.file_id }
|
|
@@ -2391,11 +2489,14 @@ var StorageAPI = class {
|
|
|
2391
2489
|
}
|
|
2392
2490
|
/**
|
|
2393
2491
|
* 여러 파일 업로드
|
|
2492
|
+
*
|
|
2493
|
+
* `onProgress` 를 옵션으로 넘기면 **파일별로** 진행률 콜백이 호출됩니다
|
|
2494
|
+
* (각 파일마다 0→100%). 전체 진행률이 필요하면 완료된 파일 수를 직접 집계하세요.
|
|
2394
2495
|
*/
|
|
2395
|
-
async uploadFiles(storageId, files,
|
|
2496
|
+
async uploadFiles(storageId, files, parentIdOrOptions) {
|
|
2396
2497
|
const results = [];
|
|
2397
2498
|
for (const file of files) {
|
|
2398
|
-
const result = await this.uploadFile(storageId, file,
|
|
2499
|
+
const result = await this.uploadFile(storageId, file, parentIdOrOptions);
|
|
2399
2500
|
results.push(result);
|
|
2400
2501
|
}
|
|
2401
2502
|
return results;
|
|
@@ -2494,7 +2595,11 @@ var StorageAPI = class {
|
|
|
2494
2595
|
overwrite
|
|
2495
2596
|
}
|
|
2496
2597
|
);
|
|
2497
|
-
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
|
+
});
|
|
2498
2603
|
const completeResponse = await this.http.post(
|
|
2499
2604
|
`${prefix}/storages/files/${storageId}/complete-upload`,
|
|
2500
2605
|
{ file_id: presignedResponse.file_id }
|