@qmuse/cloud-client 0.0.1-dev.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAOV,kBAAkB,EAElB,YAAY,EACZ,aAAa,EAEb,eAAe,EAChB,MAAM,YAAY,CAAC;AAcpB,KAAK,YAAY,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAoB5E,wBAAgB,gBAAgB,CAAC,UAAU,EACzC,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,GACzC,eAAe,CAAC,UAAU,CAAC,CA6I7B"}
package/dist/files.js ADDED
@@ -0,0 +1,149 @@
1
+ import { QmuseCloudError } from './errors.js';
2
+ function requireId(value, name) {
3
+ if (typeof value !== 'string' || !value.trim()) {
4
+ throw new TypeError(`${name} must be a non-empty string`);
5
+ }
6
+ return value.trim();
7
+ }
8
+ function unwrapData(response) {
9
+ if (!response.data || typeof response.data !== 'object' || !('data' in response.data)) {
10
+ throw new QmuseCloudError('Cloud API returned an invalid file response', 'FILE_RESPONSE_INVALID');
11
+ }
12
+ return response.data.data;
13
+ }
14
+ function disposableUrl(url) {
15
+ return { url, dispose() { } };
16
+ }
17
+ export function createCloudFiles(request, transport) {
18
+ const requireTransport = () => {
19
+ if (!transport) {
20
+ throw new QmuseCloudError('Cloud file transport is not configured', 'FILE_TRANSPORT_UNAVAILABLE');
21
+ }
22
+ return transport;
23
+ };
24
+ const cancelUpload = async (uploadId) => {
25
+ try {
26
+ await request({ method: 'DELETE', path: `/api/files/uploads/${encodeURIComponent(uploadId)}` });
27
+ }
28
+ catch {
29
+ // Preserve the primary upload/complete failure. The backend expires abandoned intents.
30
+ }
31
+ };
32
+ const createAccessUrl = async (fileId, kind, options) => {
33
+ const response = await request({
34
+ method: 'POST',
35
+ path: `/api/files/${encodeURIComponent(requireId(fileId, 'fileId'))}/access`,
36
+ body: { kind, ...options },
37
+ });
38
+ const access = unwrapData(response);
39
+ if (!access || typeof access.url !== 'string' || !access.url) {
40
+ throw new QmuseCloudError('Cloud API returned an invalid file access response', 'FILE_ACCESS_INVALID');
41
+ }
42
+ if (access.mode !== 'authenticated-url')
43
+ return disposableUrl(access.url);
44
+ const activeTransport = requireTransport();
45
+ if (!activeTransport.createReadableUrl) {
46
+ throw new QmuseCloudError('Authenticated file reads are unavailable on this platform', 'FILE_READ_UNAVAILABLE');
47
+ }
48
+ return activeTransport.createReadableUrl({
49
+ url: access.url,
50
+ ...(access.headers ? { headers: access.headers } : {}),
51
+ });
52
+ };
53
+ return {
54
+ async upload(input) {
55
+ if (!input || typeof input !== 'object')
56
+ throw new TypeError('upload input is required');
57
+ const activeTransport = requireTransport();
58
+ const resource = requireId(input.resource, 'resource');
59
+ const descriptor = activeTransport.describe(input.file, {
60
+ ...(input.name === undefined ? {} : { name: input.name }),
61
+ ...(input.mimeType === undefined ? {} : { mimeType: input.mimeType }),
62
+ });
63
+ if (!Number.isInteger(descriptor.size) || descriptor.size < 0) {
64
+ throw new TypeError('file size must be a non-negative integer');
65
+ }
66
+ requireId(descriptor.name, 'file name');
67
+ const intentResponse = await request({
68
+ method: 'POST',
69
+ path: '/api/files/uploads',
70
+ ...(input.idempotencyKey ? { headers: { 'idempotency-key': input.idempotencyKey } } : {}),
71
+ body: {
72
+ resource,
73
+ name: descriptor.name,
74
+ size: descriptor.size,
75
+ ...(descriptor.mimeType ? { mimeType: descriptor.mimeType } : {}),
76
+ ...(input.relation ? { relation: input.relation } : {}),
77
+ },
78
+ });
79
+ const intent = unwrapData(intentResponse);
80
+ if (!intent || typeof intent.uploadId !== 'string' || typeof intent.fileId !== 'string' ||
81
+ !intent.target || intent.target.fileId !== intent.fileId) {
82
+ throw new QmuseCloudError('Cloud API returned an invalid upload intent', 'UPLOAD_INTENT_INVALID');
83
+ }
84
+ try {
85
+ const receipt = await activeTransport.upload({
86
+ target: intent.target,
87
+ file: input.file,
88
+ ...(input.onProgress ? { onProgress: input.onProgress } : {}),
89
+ });
90
+ if (receipt.fileId !== intent.fileId) {
91
+ throw new QmuseCloudError('Storage returned a different file ID', 'UPLOAD_FILE_ID_MISMATCH');
92
+ }
93
+ const completeResponse = await request({
94
+ method: 'POST',
95
+ path: `/api/files/uploads/${encodeURIComponent(intent.uploadId)}/complete`,
96
+ body: {
97
+ fileId: receipt.fileId,
98
+ ...(receipt.metadata ? { storage: receipt.metadata } : {}),
99
+ },
100
+ });
101
+ return unwrapData(completeResponse);
102
+ }
103
+ catch (error) {
104
+ await cancelUpload(intent.uploadId);
105
+ throw error;
106
+ }
107
+ },
108
+ async list(input) {
109
+ const response = await request({
110
+ method: 'GET',
111
+ path: '/api/files',
112
+ query: {
113
+ resource: requireId(input.resource, 'resource'),
114
+ cursor: input.cursor,
115
+ limit: input.limit,
116
+ search: input.search,
117
+ },
118
+ });
119
+ return unwrapData(response);
120
+ },
121
+ async get(fileId) {
122
+ const response = await request({
123
+ method: 'GET',
124
+ path: `/api/files/${encodeURIComponent(requireId(fileId, 'fileId'))}`,
125
+ });
126
+ return unwrapData(response);
127
+ },
128
+ async delete(fileId) {
129
+ await request({
130
+ method: 'DELETE',
131
+ path: `/api/files/${encodeURIComponent(requireId(fileId, 'fileId'))}`,
132
+ });
133
+ },
134
+ createPreview(input) {
135
+ return createAccessUrl(input.fileId, 'preview', {
136
+ ...(input.width === undefined ? {} : { width: input.width }),
137
+ ...(input.height === undefined ? {} : { height: input.height }),
138
+ ...(input.quality === undefined ? {} : { quality: input.quality }),
139
+ ...(input.output === undefined ? {} : { output: input.output }),
140
+ });
141
+ },
142
+ createDownload(input) {
143
+ return createAccessUrl(input.fileId, 'download', {
144
+ disposition: input.disposition ?? 'attachment',
145
+ });
146
+ },
147
+ };
148
+ }
149
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { createQmuseCloudClient } from './client.js';
2
+ export { createCloudFiles } from './files.js';
3
+ export { createCloudAuth } from './auth.js';
4
+ export { createAppBaseWebCloudClient, createPortableCloudClient, } from './adapters.js';
5
+ export { QmuseCloudError, QmuseCloudHttpError } from './errors.js';
6
+ export type { CloudExecution, CloudExecutionInput, CloudMethod, CloudQueryValue, CloudRequest, CloudResponse, ExecutionHeader, QmuseCloudClient, QmuseCloudClientOptions, CloudAuthCredentialStore, CloudAuthCredentials, CloudAuthOptions, CloudAuthSessionResult, CloudAuthUser, CloudLoginInput, CloudRegisterInput, CloudShadowSessionCapability, CloudShadowSessionToken, QmuseCloudAuth, CloudDisposableUrl, CloudFileAccessInput, CloudFileDescriptor, CloudFileList, CloudFileListInput, CloudFilePreviewInput, CloudFileRecord, CloudFileTransport, CloudFileUploadInput, CloudReadableUrlInput, CloudUploadProgress, CloudUploadReceipt, CloudUploadTarget, QmuseCloudFiles, } from './types.js';
7
+ export type { AppBaseFunctionsCapability, HostAdapterOptions, PortableAppwriteCapability, PortableExecutionInput, } from './adapters.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACnE,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,eAAe,EACf,YAAY,EACZ,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,4BAA4B,EAC5B,uBAAuB,EACvB,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,0BAA0B,EAC1B,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export { createQmuseCloudClient } from './client.js';
2
+ export { createCloudFiles } from './files.js';
3
+ export { createCloudAuth } from './auth.js';
4
+ export { createAppBaseWebCloudClient, createPortableCloudClient, } from './adapters.js';
5
+ export { QmuseCloudError, QmuseCloudHttpError } from './errors.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,60 @@
1
+ import type { CloudFileTransport } from './types.js';
2
+ export interface MiniappCloudFile {
3
+ path: string;
4
+ size: number;
5
+ name?: string;
6
+ mimeType?: string;
7
+ }
8
+ export interface MiniappUploadResult {
9
+ statusCode: number;
10
+ data: string;
11
+ header?: Record<string, unknown>;
12
+ headers?: Record<string, unknown>;
13
+ }
14
+ export interface MiniappUploadTask extends PromiseLike<MiniappUploadResult> {
15
+ onProgressUpdate?(callback: (progress: {
16
+ totalBytesSent: number;
17
+ totalBytesExpectedToSend: number;
18
+ }) => void): void;
19
+ progress?(callback: (progress: {
20
+ totalBytesSent: number;
21
+ totalBytesExpectedToSend: number;
22
+ }) => void): void;
23
+ }
24
+ export interface MiniappFileSystem {
25
+ readFile(input: {
26
+ filePath: string;
27
+ position: number;
28
+ length: number;
29
+ success(result: {
30
+ data: ArrayBuffer | string;
31
+ }): void;
32
+ fail(error: unknown): void;
33
+ }): void;
34
+ writeFile(input: {
35
+ filePath: string;
36
+ data: ArrayBuffer;
37
+ success(): void;
38
+ fail(error: unknown): void;
39
+ }): void;
40
+ unlink(input: {
41
+ filePath: string;
42
+ success(): void;
43
+ fail(error: unknown): void;
44
+ }): void;
45
+ }
46
+ export interface CloudMiniappCapabilities {
47
+ uploadFile(input: {
48
+ url: string;
49
+ filePath: string;
50
+ name: string;
51
+ header: Record<string, string>;
52
+ formData: Record<string, string>;
53
+ }): MiniappUploadTask;
54
+ getFileSystemManager(): MiniappFileSystem;
55
+ userDataPath: string;
56
+ getSessionHeaders?(): Record<string, string>;
57
+ observeResponseHeaders?(headers: Record<string, unknown>): void;
58
+ }
59
+ export declare function createMiniappFileTransport(capabilities: CloudMiniappCapabilities): CloudFileTransport<MiniappCloudFile>;
60
+ //# sourceMappingURL=miniapp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"miniapp.d.ts","sourceRoot":"","sources":["../src/miniapp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAuB,kBAAkB,EAA0C,MAAM,YAAY,CAAC;AAKlH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,iBAAkB,SAAQ,WAAW,CAAC,mBAAmB,CAAC;IACzE,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACrC,cAAc,EAAE,MAAM,CAAC;QACvB,wBAAwB,EAAE,MAAM,CAAC;KAClC,KAAK,IAAI,GAAG,IAAI,CAAC;IAClB,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAC7B,cAAc,EAAE,MAAM,CAAC;QACvB,wBAAwB,EAAE,MAAM,CAAC;KAClC,KAAK,IAAI,GAAG,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QACtD,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;KAC5B,GAAG,IAAI,CAAC;IACT,SAAS,CAAC,KAAK,EAAE;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,WAAW,CAAC;QAClB,OAAO,IAAI,IAAI,CAAC;QAChB,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;KAC5B,GAAG,IAAI,CAAC;IACT,MAAM,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,IAAI,IAAI,CAAC;QAAC,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CACxF;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,KAAK,EAAE;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,GAAG,iBAAiB,CAAC;IACtB,oBAAoB,IAAI,iBAAiB,CAAC;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,sBAAsB,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACjE;AA0ED,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,wBAAwB,GACrC,kBAAkB,CAAC,gBAAgB,CAAC,CAgFtC"}
@@ -0,0 +1,161 @@
1
+ import { QmuseCloudHttpError } from './errors.js';
2
+ const DEFAULT_CHUNK_SIZE = 5 * 1024 * 1024;
3
+ let chunkSequence = 0;
4
+ function safeName(file, override) {
5
+ if (override?.trim())
6
+ return override.trim();
7
+ if (file.name?.trim())
8
+ return file.name.trim();
9
+ const path = file.path.split(/[?#]/, 1)[0] ?? '';
10
+ const name = path.split('/').pop();
11
+ if (!name)
12
+ return 'upload';
13
+ try {
14
+ return decodeURIComponent(name);
15
+ }
16
+ catch {
17
+ return name;
18
+ }
19
+ }
20
+ function validateFile(file) {
21
+ if (!file || typeof file.path !== 'string' || !file.path || !Number.isInteger(file.size) || file.size < 0) {
22
+ throw new TypeError('mini-program file requires path and a non-negative integer size');
23
+ }
24
+ return file;
25
+ }
26
+ function parseData(data) {
27
+ if (!data)
28
+ return {};
29
+ try {
30
+ const parsed = JSON.parse(data);
31
+ return parsed && typeof parsed === 'object' && !Array.isArray(parsed)
32
+ ? parsed
33
+ : { value: parsed };
34
+ }
35
+ catch {
36
+ return { message: data };
37
+ }
38
+ }
39
+ function progress(target, size, chunkSize, uploaded) {
40
+ const chunksTotal = Math.max(1, Math.ceil(size / chunkSize));
41
+ return {
42
+ fileId: target.fileId,
43
+ progress: size === 0 ? 100 : Math.min(100, Math.round((uploaded / size) * 100)),
44
+ sizeUploaded: uploaded,
45
+ chunksTotal,
46
+ chunksUploaded: uploaded >= size ? chunksTotal : Math.min(chunksTotal, Math.floor(uploaded / chunkSize)),
47
+ };
48
+ }
49
+ async function writeChunk(capabilities, file, start, end) {
50
+ const fs = capabilities.getFileSystemManager();
51
+ const data = await new Promise((resolve, reject) => {
52
+ fs.readFile({
53
+ filePath: file.path,
54
+ position: start,
55
+ length: end - start,
56
+ success: result => result.data instanceof ArrayBuffer
57
+ ? resolve(result.data)
58
+ : reject(new Error('Mini-program file system returned non-binary data')),
59
+ fail: reject,
60
+ });
61
+ });
62
+ const name = safeName(file).replace(/[^A-Za-z0-9._-]/g, '_');
63
+ const path = `${capabilities.userDataPath}/qmuse-${Date.now()}-${chunkSequence++}-${start}-${name}`;
64
+ await new Promise((resolve, reject) => {
65
+ fs.writeFile({ filePath: path, data, success: resolve, fail: reject });
66
+ });
67
+ return path;
68
+ }
69
+ async function removeChunk(capabilities, path) {
70
+ if (!path)
71
+ return;
72
+ await new Promise(resolve => {
73
+ capabilities.getFileSystemManager().unlink({ filePath: path, success: resolve, fail: () => resolve() });
74
+ });
75
+ }
76
+ export function createMiniappFileTransport(capabilities) {
77
+ if (!capabilities || typeof capabilities.uploadFile !== 'function' ||
78
+ typeof capabilities.getFileSystemManager !== 'function' || !capabilities.userDataPath) {
79
+ throw new TypeError('Mini-program file capabilities require uploadFile, file system and userDataPath');
80
+ }
81
+ return {
82
+ describe(file, overrides = {}) {
83
+ const source = validateFile(file);
84
+ const mimeType = overrides.mimeType ?? source.mimeType;
85
+ return {
86
+ name: safeName(source, overrides.name),
87
+ size: source.size,
88
+ ...(mimeType ? { mimeType } : {}),
89
+ };
90
+ },
91
+ async upload({ target, file, onProgress }) {
92
+ const source = validateFile(file);
93
+ const chunkSize = target.chunkSize ?? DEFAULT_CHUNK_SIZE;
94
+ if (!Number.isInteger(chunkSize) || chunkSize < 1)
95
+ throw new TypeError('upload chunkSize must be a positive integer');
96
+ const chunksTotal = Math.max(1, Math.ceil(source.size / chunkSize));
97
+ let storageId;
98
+ let metadata = {};
99
+ let lastUploaded = -1;
100
+ for (let start = 0; start < Math.max(source.size, 1); start += chunkSize) {
101
+ const end = source.size === 0 ? 0 : Math.min(source.size, start + chunkSize);
102
+ const chunkPath = chunksTotal > 1 ? await writeChunk(capabilities, source, start, end) : null;
103
+ try {
104
+ const task = capabilities.uploadFile({
105
+ url: target.url,
106
+ filePath: chunkPath ?? source.path,
107
+ name: target.fieldName ?? 'file',
108
+ header: {
109
+ ...(capabilities.getSessionHeaders?.() ?? {}),
110
+ ...(target.headers ?? {}),
111
+ ...(storageId ? { 'X-Appwrite-ID': storageId } : {}),
112
+ ...(chunksTotal > 1 ? { 'Content-Range': `bytes ${start}-${end - 1}/${source.size}` } : {}),
113
+ },
114
+ formData: { fileId: target.fileId, ...(target.formData ?? {}) },
115
+ });
116
+ if (onProgress) {
117
+ const handler = (value) => {
118
+ const uploaded = Math.min(end, start + value.totalBytesSent);
119
+ if (uploaded === lastUploaded)
120
+ return;
121
+ lastUploaded = uploaded;
122
+ onProgress(progress(target, source.size, chunkSize, uploaded));
123
+ };
124
+ if (typeof task.onProgressUpdate === 'function')
125
+ task.onProgressUpdate(handler);
126
+ else if (typeof task.progress === 'function')
127
+ task.progress(handler);
128
+ }
129
+ const response = await task;
130
+ capabilities.observeResponseHeaders?.(response.header ?? response.headers ?? {});
131
+ metadata = parseData(response.data);
132
+ if (response.statusCode < 200 || response.statusCode >= 300) {
133
+ throw new QmuseCloudHttpError({
134
+ status: response.statusCode,
135
+ code: 'STORAGE_UPLOAD_FAILED',
136
+ message: typeof metadata.message === 'string'
137
+ ? metadata.message
138
+ : `Storage upload failed with status ${response.statusCode}`,
139
+ details: metadata,
140
+ });
141
+ }
142
+ const responseId = metadata.$id ?? metadata.id;
143
+ if (typeof responseId === 'string' && responseId)
144
+ storageId = responseId;
145
+ storageId ??= target.fileId;
146
+ if (onProgress && end !== lastUploaded) {
147
+ lastUploaded = end;
148
+ onProgress(progress(target, source.size, chunkSize, end));
149
+ }
150
+ }
151
+ finally {
152
+ await removeChunk(capabilities, chunkPath);
153
+ }
154
+ if (source.size === 0)
155
+ break;
156
+ }
157
+ return { fileId: storageId ?? target.fileId, metadata };
158
+ },
159
+ };
160
+ }
161
+ //# sourceMappingURL=miniapp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"miniapp.js","sourceRoot":"","sources":["../src/miniapp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,184 @@
1
+ export type CloudMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
2
+ export type CloudQueryValue = string | number | boolean | null | undefined;
3
+ export interface CloudRequest {
4
+ method: CloudMethod;
5
+ path: string;
6
+ query?: Record<string, CloudQueryValue>;
7
+ body?: unknown;
8
+ headers?: Record<string, string>;
9
+ }
10
+ export interface CloudResponse<T> {
11
+ status: number;
12
+ headers: Record<string, string>;
13
+ data: T;
14
+ }
15
+ export interface ExecutionHeader {
16
+ name: string;
17
+ value: string;
18
+ }
19
+ export interface CloudExecution {
20
+ status: string;
21
+ responseStatusCode: number;
22
+ responseBody: string;
23
+ responseHeaders?: ExecutionHeader[] | Record<string, string>;
24
+ }
25
+ export interface CloudExecutionInput {
26
+ functionId: 'qmuse-cloud-api';
27
+ body: string;
28
+ async: false;
29
+ path: string;
30
+ method: CloudMethod;
31
+ headers: Record<string, string>;
32
+ }
33
+ export interface QmuseCloudClientOptions {
34
+ execute(input: CloudExecutionInput): Promise<CloudExecution>;
35
+ fileTransport?: CloudFileTransport<unknown>;
36
+ auth?: CloudAuthOptions;
37
+ }
38
+ export interface QmuseCloudClient<FileSource = never> {
39
+ request<T>(request: CloudRequest): Promise<CloudResponse<T>>;
40
+ auth: QmuseCloudAuth;
41
+ files: QmuseCloudFiles<FileSource>;
42
+ }
43
+ export interface CloudAuthUser {
44
+ id: string;
45
+ [key: string]: unknown;
46
+ }
47
+ export interface CloudAuthCredentials {
48
+ accessToken: string;
49
+ refreshToken: string;
50
+ accessTokenExpiresAt: string;
51
+ user: CloudAuthUser;
52
+ }
53
+ export interface CloudShadowSessionToken {
54
+ userId: string;
55
+ secret: string;
56
+ expire: string;
57
+ }
58
+ export interface CloudAuthSessionResult {
59
+ credentials: CloudAuthCredentials;
60
+ shadowSession: CloudShadowSessionToken;
61
+ }
62
+ export interface CloudAuthCredentialStore {
63
+ load(): Promise<CloudAuthCredentials | null>;
64
+ save(credentials: CloudAuthCredentials): Promise<void>;
65
+ clear(): Promise<void>;
66
+ }
67
+ export interface CloudShadowSessionCapability {
68
+ createSession(input: {
69
+ userId: string;
70
+ secret: string;
71
+ }): Promise<unknown>;
72
+ deleteCurrentSession(): Promise<void>;
73
+ }
74
+ export interface CloudAuthOptions {
75
+ credentialStore: CloudAuthCredentialStore;
76
+ shadowSession: CloudShadowSessionCapability;
77
+ }
78
+ export interface CloudLoginInput {
79
+ email: string;
80
+ password: string;
81
+ }
82
+ export interface CloudRegisterInput extends CloudLoginInput {
83
+ name?: string;
84
+ }
85
+ export interface QmuseCloudAuth {
86
+ register(input: CloudRegisterInput): Promise<CloudAuthUser>;
87
+ login(input: CloudLoginInput): Promise<CloudAuthUser>;
88
+ refresh(): Promise<CloudAuthUser>;
89
+ restore(): Promise<CloudAuthUser | null>;
90
+ logout(): Promise<void>;
91
+ getCurrentUser(): Promise<CloudAuthUser | null>;
92
+ }
93
+ export interface CloudFileDescriptor {
94
+ name: string;
95
+ size: number;
96
+ mimeType?: string;
97
+ }
98
+ export interface CloudUploadProgress {
99
+ fileId: string;
100
+ progress: number;
101
+ sizeUploaded: number;
102
+ chunksTotal: number;
103
+ chunksUploaded: number;
104
+ }
105
+ export interface CloudUploadTarget {
106
+ url: string;
107
+ fileId: string;
108
+ fieldName?: string;
109
+ headers?: Record<string, string>;
110
+ formData?: Record<string, string>;
111
+ chunkSize?: number;
112
+ }
113
+ export interface CloudUploadReceipt {
114
+ fileId: string;
115
+ metadata?: Record<string, unknown>;
116
+ }
117
+ export interface CloudReadableUrlInput {
118
+ url: string;
119
+ headers?: Record<string, string>;
120
+ }
121
+ export interface CloudDisposableUrl {
122
+ url: string;
123
+ dispose(): void;
124
+ }
125
+ export interface CloudFileTransport<FileSource> {
126
+ describe(file: FileSource, overrides?: {
127
+ name?: string;
128
+ mimeType?: string;
129
+ }): CloudFileDescriptor;
130
+ upload(input: {
131
+ target: CloudUploadTarget;
132
+ file: FileSource;
133
+ onProgress?: (progress: CloudUploadProgress) => void;
134
+ }): Promise<CloudUploadReceipt>;
135
+ createReadableUrl?(input: CloudReadableUrlInput): Promise<CloudDisposableUrl>;
136
+ }
137
+ export interface CloudFileRecord {
138
+ id: string;
139
+ resource: string;
140
+ name: string;
141
+ size: number;
142
+ mimeType?: string;
143
+ createdAt?: string;
144
+ updatedAt?: string;
145
+ }
146
+ export interface CloudFileUploadInput<FileSource> {
147
+ resource: string;
148
+ file: FileSource;
149
+ name?: string;
150
+ mimeType?: string;
151
+ relation?: Record<string, string>;
152
+ idempotencyKey?: string;
153
+ onProgress?: (progress: CloudUploadProgress) => void;
154
+ }
155
+ export interface CloudFileListInput {
156
+ resource: string;
157
+ cursor?: string;
158
+ limit?: number;
159
+ search?: string;
160
+ }
161
+ export interface CloudFileList {
162
+ files: CloudFileRecord[];
163
+ nextCursor: string | null;
164
+ }
165
+ export interface CloudFilePreviewInput {
166
+ fileId: string;
167
+ width?: number;
168
+ height?: number;
169
+ quality?: number;
170
+ output?: 'jpg' | 'jpeg' | 'png' | 'webp' | 'gif' | 'avif' | 'heic';
171
+ }
172
+ export interface CloudFileAccessInput {
173
+ fileId: string;
174
+ disposition?: 'inline' | 'attachment';
175
+ }
176
+ export interface QmuseCloudFiles<FileSource> {
177
+ upload(input: CloudFileUploadInput<FileSource>): Promise<CloudFileRecord>;
178
+ list(input: CloudFileListInput): Promise<CloudFileList>;
179
+ get(fileId: string): Promise<CloudFileRecord>;
180
+ delete(fileId: string): Promise<void>;
181
+ createPreview(input: CloudFilePreviewInput): Promise<CloudDisposableUrl>;
182
+ createDownload(input: CloudFileAccessInput): Promise<CloudDisposableUrl>;
183
+ }
184
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/dist/web.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import type { CloudFileTransport } from './types.js';
2
+ export interface CloudWebCapabilities {
3
+ fetch: typeof globalThis.fetch;
4
+ FormData: typeof globalThis.FormData;
5
+ createObjectURL?(blob: Blob): string;
6
+ revokeObjectURL?(url: string): void;
7
+ getSessionHeaders?(): Record<string, string>;
8
+ observeResponseHeaders?(headers: Headers): void;
9
+ }
10
+ export declare function createWebFileTransport(capabilities: CloudWebCapabilities): CloudFileTransport<Blob>;
11
+ //# sourceMappingURL=web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,kBAAkB,EAGnB,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC/B,QAAQ,EAAE,OAAO,UAAU,CAAC,QAAQ,CAAC;IACrC,eAAe,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC;IACrC,eAAe,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,iBAAiB,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,sBAAsB,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACjD;AAgDD,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,oBAAoB,GACjC,kBAAkB,CAAC,IAAI,CAAC,CAmG1B"}