@kiyasov/platform-hono 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/drivers/graphQLUpload/GraphQLUpload.d.ts +1 -1
- package/dist/cjs/src/drivers/graphQLUpload/Upload.d.ts +9 -4
- package/dist/cjs/src/drivers/graphQLUpload/Upload.js.map +1 -1
- package/dist/cjs/src/drivers/graphQLUpload/index.d.ts +1 -1
- package/dist/cjs/src/drivers/graphQLUpload/index.js.map +1 -1
- package/dist/cjs/src/drivers/graphQLUpload/processRequest.d.ts +2 -2
- package/dist/cjs/src/drivers/graphQLUpload/processRequest.js.map +1 -1
- package/dist/cjs/src/drivers/graphQLUpload/storage/capacitor-storage.d.ts +3 -3
- package/dist/cjs/src/drivers/graphQLUpload/storage/capacitor-storage.js +1 -1
- package/dist/cjs/src/drivers/graphQLUpload/storage/capacitor-storage.js.map +1 -1
- package/dist/cjs/src/drivers/graphQLUpload/storage/memory-storage.d.ts +3 -3
- package/dist/cjs/src/drivers/graphQLUpload/storage/memory-storage.js +1 -1
- package/dist/cjs/src/drivers/graphQLUpload/storage/memory-storage.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/drivers/graphQLUpload/GraphQLUpload.d.ts +1 -1
- package/dist/esm/src/drivers/graphQLUpload/Upload.d.ts +9 -4
- package/dist/esm/src/drivers/graphQLUpload/Upload.js.map +1 -1
- package/dist/esm/src/drivers/graphQLUpload/index.d.ts +1 -1
- package/dist/esm/src/drivers/graphQLUpload/index.js.map +1 -1
- package/dist/esm/src/drivers/graphQLUpload/processRequest.d.ts +2 -2
- package/dist/esm/src/drivers/graphQLUpload/processRequest.js.map +1 -1
- package/dist/esm/src/drivers/graphQLUpload/storage/capacitor-storage.d.ts +3 -3
- package/dist/esm/src/drivers/graphQLUpload/storage/capacitor-storage.js +1 -1
- package/dist/esm/src/drivers/graphQLUpload/storage/capacitor-storage.js.map +1 -1
- package/dist/esm/src/drivers/graphQLUpload/storage/memory-storage.d.ts +3 -3
- package/dist/esm/src/drivers/graphQLUpload/storage/memory-storage.js +1 -1
- package/dist/esm/src/drivers/graphQLUpload/storage/memory-storage.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/drivers/graphQLUpload/Upload.ts +21 -8
- package/src/drivers/graphQLUpload/index.ts +1 -1
- package/src/drivers/graphQLUpload/processRequest.ts +2 -2
- package/src/drivers/graphQLUpload/storage/capacitor-storage.ts +3 -7
- package/src/drivers/graphQLUpload/storage/memory-storage.ts +3 -7
- package/test/graphql-upload.test.ts +4 -4
package/package.json
CHANGED
|
@@ -2,12 +2,11 @@ import { ReadStream, ReadStreamOptions, WriteStream } from './fs-capacitor';
|
|
|
2
2
|
import { StorageFile } from './storage';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* Extends StorageFile with optional stream support for capacitor storage.
|
|
5
|
+
* Memory upload file with optional stream support.
|
|
6
|
+
* Used for files stored in memory (buffer-based).
|
|
7
|
+
* Stream and capacitor fields are optional since not all storage types support them.
|
|
9
8
|
*/
|
|
10
|
-
export interface
|
|
9
|
+
export interface MemoryUploadFile extends StorageFile {
|
|
11
10
|
/** Creates a readable stream for the file content (capacitor storage only) */
|
|
12
11
|
createReadStream?(options?: ReadStreamOptions): ReadStream;
|
|
13
12
|
/** The write stream capacitor (capacitor storage only) */
|
|
@@ -16,15 +15,29 @@ export interface FileUpload extends StorageFile {
|
|
|
16
15
|
file?: File;
|
|
17
16
|
}
|
|
18
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Stream upload file with guaranteed stream support.
|
|
20
|
+
* Used in GraphQL resolvers when CapacitorStorage is the default storage.
|
|
21
|
+
* Ensures createReadStream and capacitor are always available for streaming file content.
|
|
22
|
+
*/
|
|
23
|
+
export interface StreamUploadFile extends StorageFile {
|
|
24
|
+
/** Creates a readable stream for the file content */
|
|
25
|
+
createReadStream(options?: ReadStreamOptions): ReadStream;
|
|
26
|
+
/** The write stream capacitor */
|
|
27
|
+
capacitor: WriteStream;
|
|
28
|
+
/** Original File object if available */
|
|
29
|
+
file?: File;
|
|
30
|
+
}
|
|
31
|
+
|
|
19
32
|
/**
|
|
20
33
|
* Upload promise wrapper for GraphQL file uploads.
|
|
21
34
|
* Manages the asynchronous file upload process with proper error handling.
|
|
22
35
|
*/
|
|
23
36
|
export class Upload {
|
|
24
|
-
promise: Promise<
|
|
25
|
-
resolve: (file?:
|
|
37
|
+
promise: Promise<MemoryUploadFile>;
|
|
38
|
+
resolve: (file?: MemoryUploadFile) => void;
|
|
26
39
|
reject: (error?: Error | string) => void;
|
|
27
|
-
file?:
|
|
40
|
+
file?: MemoryUploadFile;
|
|
28
41
|
|
|
29
42
|
constructor() {
|
|
30
43
|
this.promise = new Promise((resolve, reject) => {
|
|
@@ -2,14 +2,14 @@ import { Context } from 'hono';
|
|
|
2
2
|
|
|
3
3
|
import { CapacitorStorage } from './storage/capacitor-storage';
|
|
4
4
|
import { Storage } from './storage/storage';
|
|
5
|
-
import {
|
|
5
|
+
import { MemoryUploadFile, Upload } from './Upload';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Options for processing GraphQL file uploads
|
|
9
9
|
*/
|
|
10
10
|
export interface ProcessRequestOptions {
|
|
11
11
|
/** Storage implementation to use for uploaded files */
|
|
12
|
-
storage?: Storage<
|
|
12
|
+
storage?: Storage<MemoryUploadFile>;
|
|
13
13
|
/** Maximum file size in bytes */
|
|
14
14
|
maxFileSize?: number;
|
|
15
15
|
/** Temporary directory for capacitor storage */
|
|
@@ -2,13 +2,13 @@ import { HonoRequest } from 'hono';
|
|
|
2
2
|
import { Readable } from 'stream';
|
|
3
3
|
|
|
4
4
|
import { ReadStream, ReadStreamOptions, WriteStream } from '../fs-capacitor';
|
|
5
|
-
import {
|
|
5
|
+
import { StreamUploadFile } from '../Upload';
|
|
6
6
|
import { Storage, StorageOptions } from './storage';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* File upload with stream support for capacitor storage
|
|
10
10
|
*/
|
|
11
|
-
export interface CapacitorStorageFile extends
|
|
11
|
+
export interface CapacitorStorageFile extends StreamUploadFile {
|
|
12
12
|
/** Original File object */
|
|
13
13
|
file: File;
|
|
14
14
|
/** Creates a readable stream for the file content */
|
|
@@ -76,11 +76,7 @@ export class CapacitorStorage implements Storage<CapacitorStorageFile> {
|
|
|
76
76
|
};
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
public async removeFile(
|
|
80
|
-
file: CapacitorStorageFile,
|
|
81
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
82
|
-
force?: boolean,
|
|
83
|
-
): Promise<void> {
|
|
79
|
+
public async removeFile(file: CapacitorStorageFile): Promise<void> {
|
|
84
80
|
file.capacitor.release();
|
|
85
81
|
}
|
|
86
82
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { HonoRequest } from 'hono';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { MemoryUploadFile } from '../Upload';
|
|
4
4
|
import { Storage, StorageOptions } from './storage';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* In-memory storage file with buffer
|
|
8
8
|
*/
|
|
9
|
-
export interface MemoryStorageFile extends
|
|
9
|
+
export interface MemoryStorageFile extends MemoryUploadFile {
|
|
10
10
|
/** Buffer containing the file data */
|
|
11
11
|
buffer: Buffer;
|
|
12
12
|
/** Original File object */
|
|
@@ -50,11 +50,7 @@ export class MemoryStorage implements Storage<MemoryStorageFile> {
|
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
public async removeFile(
|
|
54
|
-
file: MemoryStorageFile,
|
|
55
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
56
|
-
force?: boolean,
|
|
57
|
-
): Promise<void> {
|
|
53
|
+
public async removeFile(file: MemoryStorageFile): Promise<void> {
|
|
58
54
|
if ('buffer' in file) {
|
|
59
55
|
delete (file as MemoryStorageFile).buffer;
|
|
60
56
|
}
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
type MemoryStorageFile,
|
|
14
14
|
} from '../src/drivers/graphQLUpload/storage/memory-storage';
|
|
15
15
|
import { Storage } from '../src/drivers/graphQLUpload/storage/storage';
|
|
16
|
-
import {
|
|
16
|
+
import { MemoryUploadFile, Upload } from '../src/drivers/graphQLUpload/Upload';
|
|
17
17
|
import {
|
|
18
18
|
asContext,
|
|
19
19
|
asHonoRequest,
|
|
@@ -34,7 +34,7 @@ describe('GraphQL Upload', () => {
|
|
|
34
34
|
|
|
35
35
|
test('should resolve upload with file', async () => {
|
|
36
36
|
const upload = new Upload();
|
|
37
|
-
const mockFile:
|
|
37
|
+
const mockFile: MemoryUploadFile = {
|
|
38
38
|
fieldName: 'file',
|
|
39
39
|
originalFilename: 'test.txt',
|
|
40
40
|
mimetype: 'text/plain',
|
|
@@ -392,8 +392,8 @@ describe('GraphQL Upload', () => {
|
|
|
392
392
|
});
|
|
393
393
|
|
|
394
394
|
test('should use custom storage when provided', async () => {
|
|
395
|
-
const customStorage: Storage<
|
|
396
|
-
async handleFile(file, _req, fieldName): Promise<
|
|
395
|
+
const customStorage: Storage<MemoryUploadFile> = {
|
|
396
|
+
async handleFile(file, _req, fieldName): Promise<MemoryUploadFile> {
|
|
397
397
|
return {
|
|
398
398
|
fieldName,
|
|
399
399
|
originalFilename: file.name,
|