@valentinkolb/filegate 2.4.0 → 2.5.3

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.
Files changed (88) hide show
  1. package/README.md +109 -512
  2. package/dist/activity.d.ts +15 -0
  3. package/dist/activity.d.ts.map +1 -0
  4. package/dist/activity.js +21 -0
  5. package/dist/activity.js.map +1 -0
  6. package/dist/capabilities.d.ts +9 -0
  7. package/dist/capabilities.d.ts.map +1 -0
  8. package/dist/capabilities.js +11 -0
  9. package/dist/capabilities.js.map +1 -0
  10. package/dist/client.d.ts +37 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +77 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/core.d.ts +26 -0
  15. package/dist/core.d.ts.map +1 -0
  16. package/dist/core.js +58 -0
  17. package/dist/core.js.map +1 -0
  18. package/dist/downloads.d.ts +9 -0
  19. package/dist/downloads.d.ts.map +1 -0
  20. package/dist/downloads.js +11 -0
  21. package/dist/downloads.js.map +1 -0
  22. package/dist/errors.d.ts +18 -0
  23. package/dist/errors.d.ts.map +1 -0
  24. package/dist/errors.js +42 -0
  25. package/dist/errors.js.map +1 -0
  26. package/dist/index-client.d.ts +17 -0
  27. package/dist/index-client.d.ts.map +1 -0
  28. package/dist/index-client.js +29 -0
  29. package/dist/index-client.js.map +1 -0
  30. package/dist/index.d.ts +14 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +7 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/nodes.d.ts +27 -0
  35. package/dist/nodes.d.ts.map +1 -0
  36. package/dist/nodes.js +71 -0
  37. package/dist/nodes.js.map +1 -0
  38. package/dist/paths.d.ts +45 -0
  39. package/dist/paths.d.ts.map +1 -0
  40. package/dist/paths.js +71 -0
  41. package/dist/paths.js.map +1 -0
  42. package/dist/search.d.ts +17 -0
  43. package/dist/search.d.ts.map +1 -0
  44. package/dist/search.js +25 -0
  45. package/dist/search.js.map +1 -0
  46. package/dist/stats.d.ts +9 -0
  47. package/dist/stats.d.ts.map +1 -0
  48. package/dist/stats.js +11 -0
  49. package/dist/stats.js.map +1 -0
  50. package/dist/transfers.d.ts +9 -0
  51. package/dist/transfers.d.ts.map +1 -0
  52. package/dist/transfers.js +14 -0
  53. package/dist/transfers.js.map +1 -0
  54. package/dist/types.d.ts +285 -0
  55. package/dist/types.d.ts.map +1 -0
  56. package/dist/types.js +2 -0
  57. package/dist/types.js.map +1 -0
  58. package/dist/uploads.d.ts +246 -0
  59. package/dist/uploads.d.ts.map +1 -0
  60. package/dist/uploads.js +580 -0
  61. package/dist/uploads.js.map +1 -0
  62. package/dist/utils.d.ts +25 -0
  63. package/dist/utils.d.ts.map +1 -0
  64. package/dist/utils.js +41 -0
  65. package/dist/utils.js.map +1 -0
  66. package/dist/versions.d.ts +76 -0
  67. package/dist/versions.d.ts.map +1 -0
  68. package/dist/versions.js +82 -0
  69. package/dist/versions.js.map +1 -0
  70. package/package.json +36 -40
  71. package/LICENSE +0 -21
  72. package/src/client.ts +0 -436
  73. package/src/config.ts +0 -41
  74. package/src/handlers/files.ts +0 -696
  75. package/src/handlers/indexHandler.ts +0 -107
  76. package/src/handlers/search.ts +0 -144
  77. package/src/handlers/thumbnail.ts +0 -174
  78. package/src/handlers/upload.ts +0 -401
  79. package/src/index.ts +0 -131
  80. package/src/lib/index.ts +0 -325
  81. package/src/lib/openapi.ts +0 -48
  82. package/src/lib/ownership.ts +0 -133
  83. package/src/lib/path.ts +0 -128
  84. package/src/lib/response.ts +0 -10
  85. package/src/lib/scanner.ts +0 -121
  86. package/src/lib/validator.ts +0 -21
  87. package/src/schemas.ts +0 -376
  88. package/src/utils.ts +0 -282
@@ -0,0 +1,246 @@
1
+ import { ClientCore, type FetchImpl } from "./core.js";
2
+ import type { DirectUploadURLRequest, DirectUploadURLResponse, Node, UploadSegmentResponse, UploadSessionBatchCreateRequest, UploadSessionBatchCreateResponse, UploadSessionCommitResponse, UploadSessionCreateRequest, UploadSessionDirect, UploadSessionResponse } from "./types.js";
3
+ export interface UploadSessionStatusRequest {
4
+ sessionId: string;
5
+ }
6
+ export interface UploadSessionPutSegmentRequest {
7
+ sessionId: string;
8
+ index: number;
9
+ body: BodyInit;
10
+ checksum?: string;
11
+ contentType?: string;
12
+ }
13
+ export interface UploadSessionCommitRequest {
14
+ sessionId: string;
15
+ }
16
+ export interface UploadSessionAbortRequest {
17
+ sessionId: string;
18
+ }
19
+ export declare class UploadSessionsClient {
20
+ private readonly core;
21
+ readonly segments: {
22
+ readonly put: (req: UploadSessionPutSegmentRequest) => Promise<UploadSegmentResponse>;
23
+ readonly putRaw: (req: UploadSessionPutSegmentRequest) => Promise<Response>;
24
+ };
25
+ constructor(core: ClientCore);
26
+ /** Create one resumable upload session for one file. */
27
+ create(req: UploadSessionCreateRequest): Promise<UploadSessionResponse>;
28
+ /** Create independent upload sessions in one request. */
29
+ createBatch(req: UploadSessionBatchCreateRequest): Promise<UploadSessionBatchCreateResponse>;
30
+ /** Get current session status. */
31
+ status(req: UploadSessionStatusRequest): Promise<UploadSessionResponse>;
32
+ /** Upload one segment and throw on non-2xx responses. */
33
+ private putSegment;
34
+ /** Upload one segment and return the raw Response for relay/proxy handlers. */
35
+ private putSegmentRaw;
36
+ /** Commit a complete session and return the created/updated node. */
37
+ commit(req: UploadSessionCommitRequest): Promise<UploadSessionCommitResponse>;
38
+ /** Abort an in-progress session. */
39
+ abort(req: UploadSessionAbortRequest): Promise<void>;
40
+ }
41
+ export declare class UploadsClient {
42
+ private readonly core;
43
+ readonly sessions: UploadSessionsClient;
44
+ constructor(core: ClientCore);
45
+ /** Mint a short-lived direct PUT URL for a browser/client upload. */
46
+ createDirectUploadURL(req: DirectUploadURLRequest): Promise<DirectUploadURLResponse>;
47
+ }
48
+ export interface DirectUploadResult {
49
+ node: Node;
50
+ nodeId: string;
51
+ createdId: string;
52
+ statusCode: number;
53
+ headers: Headers;
54
+ }
55
+ export type DirectUploadFinish = {
56
+ ok: true;
57
+ result: DirectUploadResult;
58
+ } | {
59
+ ok: false;
60
+ error: unknown;
61
+ };
62
+ export interface DirectUploadOptions {
63
+ fetchImpl?: FetchImpl;
64
+ contentType?: string;
65
+ signal?: AbortSignal;
66
+ onSuccess?: (result: DirectUploadResult) => void | Promise<void>;
67
+ onError?: (error: unknown) => void | Promise<void>;
68
+ onFinish?: (outcome: DirectUploadFinish) => void | Promise<void>;
69
+ }
70
+ export interface DirectUploadSessionRequest {
71
+ direct: UploadSessionDirect;
72
+ }
73
+ export interface DirectUploadSegmentRequest extends DirectUploadSessionRequest {
74
+ index: number;
75
+ body: BodyInit;
76
+ checksum?: string;
77
+ contentType?: string;
78
+ fetchImpl?: FetchImpl;
79
+ signal?: AbortSignal;
80
+ }
81
+ declare function putDirectSegment(req: DirectUploadSegmentRequest): Promise<UploadSegmentResponse>;
82
+ declare function status(req: DirectUploadSessionRequest & {
83
+ fetchImpl?: FetchImpl;
84
+ signal?: AbortSignal;
85
+ }): Promise<UploadSessionResponse>;
86
+ declare function commit(req: DirectUploadSessionRequest & {
87
+ fetchImpl?: FetchImpl;
88
+ signal?: AbortSignal;
89
+ }): Promise<UploadSessionCommitResponse>;
90
+ declare function abort(req: DirectUploadSessionRequest & {
91
+ fetchImpl?: FetchImpl;
92
+ signal?: AbortSignal;
93
+ }): Promise<void>;
94
+ export declare const directUploads: {
95
+ readonly segments: {
96
+ readonly put: typeof putDirectSegment;
97
+ };
98
+ readonly status: typeof status;
99
+ readonly commit: typeof commit;
100
+ readonly abort: typeof abort;
101
+ };
102
+ export interface BrowserUploadFile {
103
+ name: string;
104
+ size: number;
105
+ type?: string;
106
+ webkitRelativePath?: string;
107
+ slice(start?: number, end?: number): Blob;
108
+ }
109
+ export interface BrowserUploadSegment {
110
+ index: number;
111
+ offset: number;
112
+ size: number;
113
+ checksum: string;
114
+ }
115
+ export interface BrowserUploadAllowItem {
116
+ id: string;
117
+ kind: "direct" | "session";
118
+ path: string;
119
+ name: string;
120
+ size: number;
121
+ checksum?: string;
122
+ segmentSize?: number;
123
+ contentType?: string;
124
+ segments?: BrowserUploadSegment[];
125
+ }
126
+ export type BrowserUploadDirective = {
127
+ kind: "direct";
128
+ direct: DirectUploadURLResponse;
129
+ } | {
130
+ kind: "session";
131
+ session: UploadSessionResponse;
132
+ };
133
+ export type BrowserUploadConflictMode = "skip-existing" | "skip-identical" | "error" | "overwrite" | "rename";
134
+ export type BrowserUploadAllowResult = {
135
+ id: string;
136
+ ok: true;
137
+ upload?: BrowserUploadDirective;
138
+ session?: UploadSessionResponse;
139
+ node?: Node;
140
+ } | {
141
+ id: string;
142
+ ok: false;
143
+ error: string;
144
+ code?: string;
145
+ skipped?: boolean;
146
+ node?: Node;
147
+ };
148
+ export interface BrowserUploadAllowRequest {
149
+ uploads: BrowserUploadAllowItem[];
150
+ onConflict: BrowserUploadConflictMode;
151
+ }
152
+ export interface BrowserUploadAllowResponse {
153
+ uploads: BrowserUploadAllowResult[];
154
+ }
155
+ export interface BrowserUploadConfig {
156
+ segmentSize?: number;
157
+ chunkSize?: number;
158
+ directThresholdBytes?: number;
159
+ onConflict?: BrowserUploadConflictMode;
160
+ concurrency?: {
161
+ hash?: number;
162
+ files?: number;
163
+ segments?: number;
164
+ };
165
+ batch?: {
166
+ size: number;
167
+ flushMs: number;
168
+ };
169
+ }
170
+ export type BrowserUploadEvent = {
171
+ type: "start";
172
+ files: number;
173
+ bytes: number;
174
+ } | {
175
+ type: "file:hashing";
176
+ id: string;
177
+ path: string;
178
+ loaded: number;
179
+ total: number;
180
+ } | {
181
+ type: "file:allowed";
182
+ id: string;
183
+ path: string;
184
+ } | {
185
+ type: "file:skipped";
186
+ id: string;
187
+ path: string;
188
+ reason: string;
189
+ code?: string;
190
+ node?: Node;
191
+ } | {
192
+ type: "file:rejected";
193
+ id: string;
194
+ path: string;
195
+ error: string;
196
+ code?: string;
197
+ } | {
198
+ type: "file:uploading";
199
+ id: string;
200
+ path: string;
201
+ loaded: number;
202
+ total: number;
203
+ } | {
204
+ type: "file:committing";
205
+ id: string;
206
+ path: string;
207
+ } | {
208
+ type: "file:done";
209
+ id: string;
210
+ path: string;
211
+ node?: Node;
212
+ } | {
213
+ type: "file:error";
214
+ id: string;
215
+ path: string;
216
+ error: unknown;
217
+ } | {
218
+ type: "stats";
219
+ transferred: number;
220
+ total: number;
221
+ elapsedMs: number;
222
+ bytesPerSecond: number;
223
+ remainingMs?: number;
224
+ };
225
+ export interface BrowserUploadRequest {
226
+ files: Iterable<BrowserUploadFile>;
227
+ path: string;
228
+ allow(req: BrowserUploadAllowRequest): Promise<BrowserUploadAllowResponse>;
229
+ config?: BrowserUploadConfig;
230
+ fetchImpl?: FetchImpl;
231
+ signal?: AbortSignal;
232
+ onEvent?: (event: BrowserUploadEvent) => void;
233
+ }
234
+ export interface BrowserUploadResult {
235
+ total: number;
236
+ done: number;
237
+ failed: number;
238
+ rejected: number;
239
+ skipped: number;
240
+ }
241
+ /** Upload browser files through Filegate direct upload sessions. */
242
+ export declare function upload(req: BrowserUploadRequest): Promise<BrowserUploadResult>;
243
+ /** Upload to a presigned Filegate direct-upload URL without a REST bearer token. */
244
+ export declare function uploadDirect(uploadUrl: string, data: BodyInit, opts?: DirectUploadOptions): Promise<DirectUploadResult>;
245
+ export {};
246
+ //# sourceMappingURL=uploads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploads.d.ts","sourceRoot":"","sources":["../src/uploads.ts"],"names":[],"mappings":"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"}