@velajs/storage 0.3.0 → 0.3.2
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 +6 -1
- package/dist/body-BMUcBeQ0.js +93 -0
- package/dist/body-BMUcBeQ0.js.map +1 -0
- package/dist/client/index.d.ts +49 -46
- package/dist/client/index.js +207 -228
- package/dist/client/index.js.map +1 -0
- package/dist/drivers/memory/index.d.ts +17 -13
- package/dist/drivers/memory/index.js +190 -197
- package/dist/drivers/memory/index.js.map +1 -0
- package/dist/drivers/r2/index.d.ts +7 -4
- package/dist/drivers/r2/index.js +162 -160
- package/dist/drivers/r2/index.js.map +1 -0
- package/dist/drivers/r2-http/index.d.ts +23 -19
- package/dist/drivers/r2-http/index.js +52 -45
- package/dist/drivers/r2-http/index.js.map +1 -0
- package/dist/drivers/s3/index.d.ts +79 -5
- package/dist/drivers/s3/index.js +2 -3
- package/dist/index.d.ts +271 -17
- package/dist/index.js +1078 -16
- package/dist/index.js.map +1 -0
- package/dist/middleware/index.d.ts +177 -15
- package/dist/middleware/index.js +553 -8
- package/dist/middleware/index.js.map +1 -0
- package/dist/protocol.types-C5PPBD12.d.ts +80 -0
- package/dist/r2.types-Bw4Ft83t.d.ts +71 -0
- package/dist/retry-DXtO6R9D.js +119 -0
- package/dist/retry-DXtO6R9D.js.map +1 -0
- package/dist/s3-DrE9NrnD.js +557 -0
- package/dist/s3-DrE9NrnD.js.map +1 -0
- package/dist/storage.error-DVCOkJhc.js +49 -0
- package/dist/storage.error-DVCOkJhc.js.map +1 -0
- package/dist/storage.types-BJN7Yp1J.d.ts +288 -0
- package/dist/storagesdk/index.d.ts +73 -69
- package/dist/storagesdk/index.js +117 -130
- package/dist/storagesdk/index.js.map +1 -0
- package/dist/stored-file-2Yl07eRc.js +105 -0
- package/dist/stored-file-2Yl07eRc.js.map +1 -0
- package/dist/testing/index.d.ts +12 -8
- package/dist/testing/index.js +36 -53
- package/dist/testing/index.js.map +1 -0
- package/package.json +62 -48
- package/dist/base64.d.ts +0 -8
- package/dist/base64.js +0 -25
- package/dist/decorators/inject-storage.decorator.d.ts +0 -17
- package/dist/decorators/inject-storage.decorator.js +0 -21
- package/dist/drivers/r2/r2.types.d.ts +0 -67
- package/dist/drivers/r2/r2.types.js +0 -5
- package/dist/drivers/s3/s3-client.d.ts +0 -33
- package/dist/drivers/s3/s3-client.js +0 -154
- package/dist/drivers/s3/s3.driver.d.ts +0 -4
- package/dist/drivers/s3/s3.driver.js +0 -404
- package/dist/drivers/s3/s3.types.d.ts +0 -28
- package/dist/drivers/s3/s3.types.js +0 -1
- package/dist/drivers/s3/xml.d.ts +0 -6
- package/dist/drivers/s3/xml.js +0 -52
- package/dist/http/authorizer.types.d.ts +0 -59
- package/dist/http/authorizer.types.js +0 -1
- package/dist/http/http-helpers.d.ts +0 -22
- package/dist/http/http-helpers.js +0 -80
- package/dist/http/protocol.types.d.ts +0 -76
- package/dist/http/protocol.types.js +0 -1
- package/dist/internal/body.d.ts +0 -18
- package/dist/internal/body.js +0 -90
- package/dist/internal/retry.d.ts +0 -41
- package/dist/internal/retry.js +0 -127
- package/dist/internal/stored-file.d.ts +0 -27
- package/dist/internal/stored-file.js +0 -114
- package/dist/middleware/cache.d.ts +0 -50
- package/dist/middleware/cache.js +0 -101
- package/dist/middleware/compose.d.ts +0 -12
- package/dist/middleware/compose.js +0 -11
- package/dist/middleware/compression.d.ts +0 -16
- package/dist/middleware/compression.js +0 -101
- package/dist/middleware/encryption.d.ts +0 -14
- package/dist/middleware/encryption.js +0 -134
- package/dist/middleware/failover.d.ts +0 -18
- package/dist/middleware/failover.js +0 -52
- package/dist/middleware/retry.d.ts +0 -14
- package/dist/middleware/retry.js +0 -47
- package/dist/middleware/versioning.d.ts +0 -36
- package/dist/middleware/versioning.js +0 -89
- package/dist/middleware/wrap.d.ts +0 -11
- package/dist/middleware/wrap.js +0 -46
- package/dist/object-key.d.ts +0 -17
- package/dist/object-key.js +0 -42
- package/dist/storage.controller.d.ts +0 -21
- package/dist/storage.controller.js +0 -380
- package/dist/storage.error.d.ts +0 -28
- package/dist/storage.error.js +0 -46
- package/dist/storage.facade.d.ts +0 -47
- package/dist/storage.facade.js +0 -443
- package/dist/storage.module.d.ts +0 -46
- package/dist/storage.module.js +0 -113
- package/dist/storage.service.d.ts +0 -42
- package/dist/storage.service.js +0 -86
- package/dist/storage.tokens.d.ts +0 -13
- package/dist/storage.tokens.js +0 -26
- package/dist/storage.types.d.ts +0 -245
- package/dist/storage.types.js +0 -1
package/dist/storage.service.js
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
}
|
|
7
|
-
function _ts_metadata(k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
}
|
|
10
|
-
import { Injectable } from "@velajs/vela";
|
|
11
|
-
import { createStorage } from "./storage.facade.js";
|
|
12
|
-
/**
|
|
13
|
-
* Build the real driver on first property access and delegate to it. This is
|
|
14
|
-
* the edge-binding-safe seam: the driver factory (which may read Cloudflare
|
|
15
|
-
* bindings / `c.env` secrets) does not run at module load — only on the first
|
|
16
|
-
* storage operation, which happens at request time.
|
|
17
|
-
*
|
|
18
|
-
* Functions are bound to the built driver so class-based drivers keep `this`.
|
|
19
|
-
*/ export function lazyDriver(build) {
|
|
20
|
-
let built;
|
|
21
|
-
const ensure = ()=>built ??= build();
|
|
22
|
-
return new Proxy({}, {
|
|
23
|
-
get (_target, prop) {
|
|
24
|
-
const driver = ensure();
|
|
25
|
-
const value = driver[prop];
|
|
26
|
-
return typeof value === 'function' ? value.bind(driver) : value;
|
|
27
|
-
},
|
|
28
|
-
has (_target, prop) {
|
|
29
|
-
return prop in ensure();
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
export class StorageService {
|
|
34
|
-
storage;
|
|
35
|
-
name;
|
|
36
|
-
constructor(build, options){
|
|
37
|
-
this.name = options.name;
|
|
38
|
-
this.storage = createStorage({
|
|
39
|
-
driver: lazyDriver(build),
|
|
40
|
-
prefix: options.prefix,
|
|
41
|
-
readonly: options.readonly,
|
|
42
|
-
hooks: options.hooks
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
upload(key, body, opts) {
|
|
46
|
-
return this.storage.upload(key, body, opts);
|
|
47
|
-
}
|
|
48
|
-
download(key, opts) {
|
|
49
|
-
return this.storage.download(key, opts);
|
|
50
|
-
}
|
|
51
|
-
head(key, opts) {
|
|
52
|
-
return this.storage.head(key, opts);
|
|
53
|
-
}
|
|
54
|
-
exists(key, opts) {
|
|
55
|
-
return this.storage.exists(key, opts);
|
|
56
|
-
}
|
|
57
|
-
delete(key, opts) {
|
|
58
|
-
return this.storage.delete(key, opts);
|
|
59
|
-
}
|
|
60
|
-
deleteMany(keys, opts) {
|
|
61
|
-
return this.storage.delete(keys, opts);
|
|
62
|
-
}
|
|
63
|
-
copy(from, to, opts) {
|
|
64
|
-
return this.storage.copy(from, to, opts);
|
|
65
|
-
}
|
|
66
|
-
move(from, to, opts) {
|
|
67
|
-
return this.storage.move(from, to, opts);
|
|
68
|
-
}
|
|
69
|
-
list(opts) {
|
|
70
|
-
return this.storage.list(opts);
|
|
71
|
-
}
|
|
72
|
-
url(key, opts) {
|
|
73
|
-
return this.storage.url(key, opts);
|
|
74
|
-
}
|
|
75
|
-
signedUploadUrl(key, opts) {
|
|
76
|
-
return this.storage.signedUploadUrl(key, opts);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
StorageService = _ts_decorate([
|
|
80
|
-
Injectable(),
|
|
81
|
-
_ts_metadata("design:type", Function),
|
|
82
|
-
_ts_metadata("design:paramtypes", [
|
|
83
|
-
Function,
|
|
84
|
-
typeof StorageServiceOptions === "undefined" ? Object : StorageServiceOptions
|
|
85
|
-
])
|
|
86
|
-
], StorageService);
|
package/dist/storage.tokens.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@velajs/vela';
|
|
2
|
-
import type { StorageDriver } from './storage.types';
|
|
3
|
-
import type { StorageService } from './storage.service';
|
|
4
|
-
/** Bucket name used when a registration omits `name`. */
|
|
5
|
-
export declare const DEFAULT_STORAGE_NAME = "default";
|
|
6
|
-
/** Internal token holding the lazy driver-construction thunk for `name`. */
|
|
7
|
-
export declare function storageDriverBuilder(name: string): InjectionToken<() => StorageDriver>;
|
|
8
|
-
/**
|
|
9
|
-
* Token that resolves to the {@link StorageService} for a named bucket.
|
|
10
|
-
* The default bucket uses the `StorageService` class token directly (see
|
|
11
|
-
* `@InjectStorage()`); named buckets use this.
|
|
12
|
-
*/
|
|
13
|
-
export declare function storageToken(name: string): InjectionToken<StorageService>;
|
package/dist/storage.tokens.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from "@velajs/vela";
|
|
2
|
-
/** Bucket name used when a registration omits `name`. */ export const DEFAULT_STORAGE_NAME = 'default';
|
|
3
|
-
// Tokens are memoized per bucket name so a module's `provide` and a
|
|
4
|
-
// consumer's `inject` resolve to the *same* token instance.
|
|
5
|
-
const builderTokens = new Map();
|
|
6
|
-
const serviceTokens = new Map();
|
|
7
|
-
/** Internal token holding the lazy driver-construction thunk for `name`. */ export function storageDriverBuilder(name) {
|
|
8
|
-
let token = builderTokens.get(name);
|
|
9
|
-
if (!token) {
|
|
10
|
-
token = new InjectionToken(`vela.storage.Builder:${name}`);
|
|
11
|
-
builderTokens.set(name, token);
|
|
12
|
-
}
|
|
13
|
-
return token;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Token that resolves to the {@link StorageService} for a named bucket.
|
|
17
|
-
* The default bucket uses the `StorageService` class token directly (see
|
|
18
|
-
* `@InjectStorage()`); named buckets use this.
|
|
19
|
-
*/ export function storageToken(name) {
|
|
20
|
-
let token = serviceTokens.get(name);
|
|
21
|
-
if (!token) {
|
|
22
|
-
token = new InjectionToken(`vela.storage.Service:${name}`);
|
|
23
|
-
serviceTokens.set(name, token);
|
|
24
|
-
}
|
|
25
|
-
return token;
|
|
26
|
-
}
|
package/dist/storage.types.d.ts
DELETED
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
import type { StorageError } from './storage.error';
|
|
2
|
-
export type Body = Blob | File | ReadableStream<Uint8Array> | ArrayBuffer | ArrayBufferView | Uint8Array | string;
|
|
3
|
-
/** A multipart part must have a known length, so streams are excluded. */
|
|
4
|
-
export type PartBody = Blob | ArrayBuffer | ArrayBufferView | Uint8Array;
|
|
5
|
-
export interface RetryBackoffContext {
|
|
6
|
-
/** 1-based retry number (attempt 1 is the first retry after the initial call). */
|
|
7
|
-
attempt: number;
|
|
8
|
-
error: StorageError;
|
|
9
|
-
}
|
|
10
|
-
export type RetryOptions = number | {
|
|
11
|
-
max: number;
|
|
12
|
-
backoff?: (ctx: RetryBackoffContext) => number;
|
|
13
|
-
};
|
|
14
|
-
export interface OperationOptions {
|
|
15
|
-
/** Abort the operation when this signal fires. */
|
|
16
|
-
signal?: AbortSignal;
|
|
17
|
-
/** Per-attempt timeout in ms. `0` or negative disables timeout handling. */
|
|
18
|
-
timeout?: number;
|
|
19
|
-
/** Retry transient failures. A number is treated as `{ max: number }`. */
|
|
20
|
-
retries?: RetryOptions;
|
|
21
|
-
}
|
|
22
|
-
export interface UploadProgress {
|
|
23
|
-
/** Cumulative bytes sent so far. */
|
|
24
|
-
loaded: number;
|
|
25
|
-
/** Total bytes to send, when known (omitted for unknown-length streams). */
|
|
26
|
-
total?: number;
|
|
27
|
-
}
|
|
28
|
-
/** Tuning for multipart uploads. `multipart: true` uses these defaults. */
|
|
29
|
-
export interface MultipartOptions {
|
|
30
|
-
/** Bytes per part. Default 5 MiB (S3's minimum non-final part size). */
|
|
31
|
-
partSize?: number;
|
|
32
|
-
/** Parts uploaded concurrently. Default 4. */
|
|
33
|
-
concurrency?: number;
|
|
34
|
-
}
|
|
35
|
-
export interface UploadOptions extends OperationOptions {
|
|
36
|
-
contentType?: string;
|
|
37
|
-
/** Persisted only when the driver advertises `supportsCacheControl`. */
|
|
38
|
-
cacheControl?: string;
|
|
39
|
-
/** Persisted only when the driver advertises `supportsMetadata` (empty == none). */
|
|
40
|
-
metadata?: Record<string, string>;
|
|
41
|
-
onProgress?: (p: UploadProgress) => void;
|
|
42
|
-
/** Force/relax multipart. `true` uses {@link MultipartOptions} defaults. */
|
|
43
|
-
multipart?: boolean | MultipartOptions;
|
|
44
|
-
}
|
|
45
|
-
export interface UploadResult {
|
|
46
|
-
key: string;
|
|
47
|
-
size: number;
|
|
48
|
-
contentType: string;
|
|
49
|
-
etag?: string;
|
|
50
|
-
lastModified?: number;
|
|
51
|
-
/** Reserved for the versioning middleware / provider versioning. */
|
|
52
|
-
versionId?: string;
|
|
53
|
-
}
|
|
54
|
-
/** 0-based, `end` inclusive (matches the HTTP `Range` header). */
|
|
55
|
-
export interface ByteRange {
|
|
56
|
-
start: number;
|
|
57
|
-
end?: number;
|
|
58
|
-
}
|
|
59
|
-
export interface DownloadOptions extends OperationOptions {
|
|
60
|
-
/** Honored only when the driver advertises `supportsRange`. */
|
|
61
|
-
range?: ByteRange;
|
|
62
|
-
}
|
|
63
|
-
export interface StoredFile {
|
|
64
|
-
key: string;
|
|
65
|
-
name: string;
|
|
66
|
-
size: number;
|
|
67
|
-
type: string;
|
|
68
|
-
lastModified?: number;
|
|
69
|
-
etag?: string;
|
|
70
|
-
metadata?: Record<string, string>;
|
|
71
|
-
arrayBuffer(): Promise<ArrayBuffer>;
|
|
72
|
-
text(): Promise<string>;
|
|
73
|
-
blob(): Promise<Blob>;
|
|
74
|
-
/** Web Streams only. */
|
|
75
|
-
stream(): ReadableStream<Uint8Array>;
|
|
76
|
-
}
|
|
77
|
-
export interface ListOptions extends OperationOptions {
|
|
78
|
-
prefix?: string;
|
|
79
|
-
cursor?: string;
|
|
80
|
-
limit?: number;
|
|
81
|
-
/** S3-style folder folding. Honored only when the driver advertises `supportsDelimiter`. */
|
|
82
|
-
delimiter?: string;
|
|
83
|
-
}
|
|
84
|
-
export interface ListResult {
|
|
85
|
-
items: StoredFile[];
|
|
86
|
-
/** Common prefixes when `delimiter` is set. */
|
|
87
|
-
prefixes?: string[];
|
|
88
|
-
/** Continuation cursor; absent when the listing is exhausted. */
|
|
89
|
-
cursor?: string;
|
|
90
|
-
}
|
|
91
|
-
export interface DeleteManyOptions extends OperationOptions {
|
|
92
|
-
/** Concurrency for the fan-out fallback. Default 8. */
|
|
93
|
-
concurrency?: number;
|
|
94
|
-
/** Stop at the first error instead of collecting all. Default false. */
|
|
95
|
-
stopOnError?: boolean;
|
|
96
|
-
}
|
|
97
|
-
export interface DeleteManyError {
|
|
98
|
-
key: string;
|
|
99
|
-
error: StorageError;
|
|
100
|
-
}
|
|
101
|
-
export interface DeleteManyResult {
|
|
102
|
-
deleted: string[];
|
|
103
|
-
errors?: DeleteManyError[];
|
|
104
|
-
}
|
|
105
|
-
export interface UrlOptions extends OperationOptions {
|
|
106
|
-
expiresIn?: number;
|
|
107
|
-
/** Forces the signing path (e.g. to set `Content-Disposition: attachment`). */
|
|
108
|
-
responseContentDisposition?: string;
|
|
109
|
-
}
|
|
110
|
-
export interface SignUploadOptions extends OperationOptions {
|
|
111
|
-
expiresIn: number;
|
|
112
|
-
contentType?: string;
|
|
113
|
-
/** When set, drivers use a POST policy so the store enforces the size cap. */
|
|
114
|
-
maxSize?: number;
|
|
115
|
-
minSize?: number;
|
|
116
|
-
}
|
|
117
|
-
export type SignedUpload = {
|
|
118
|
-
method: 'PUT';
|
|
119
|
-
url: string;
|
|
120
|
-
headers?: Record<string, string>;
|
|
121
|
-
} | {
|
|
122
|
-
method: 'POST';
|
|
123
|
-
url: string;
|
|
124
|
-
fields: Record<string, string>;
|
|
125
|
-
};
|
|
126
|
-
/** Advisory descriptor for what a driver's signing supports. */
|
|
127
|
-
export interface SignedUrlCapability {
|
|
128
|
-
/** Can mint a presigned download URL via `url()`. */
|
|
129
|
-
supported: boolean;
|
|
130
|
-
/** Can mint a presigned upload via `signedUploadUrl()`. */
|
|
131
|
-
upload: boolean;
|
|
132
|
-
/** Provider ceiling on `expiresIn` (seconds), if any. */
|
|
133
|
-
maxExpiresIn?: number;
|
|
134
|
-
}
|
|
135
|
-
export interface CreateMultipartOptions extends OperationOptions {
|
|
136
|
-
contentType?: string;
|
|
137
|
-
cacheControl?: string;
|
|
138
|
-
metadata?: Record<string, string>;
|
|
139
|
-
}
|
|
140
|
-
export interface UploadedPart {
|
|
141
|
-
partNumber: number;
|
|
142
|
-
etag: string;
|
|
143
|
-
size?: number;
|
|
144
|
-
}
|
|
145
|
-
export interface MultipartUpload {
|
|
146
|
-
readonly key: string;
|
|
147
|
-
readonly uploadId: string;
|
|
148
|
-
uploadPart(partNumber: number, body: PartBody, opts?: OperationOptions): Promise<UploadedPart>;
|
|
149
|
-
complete(parts: UploadedPart[], opts?: OperationOptions): Promise<UploadResult>;
|
|
150
|
-
abort(opts?: OperationOptions): Promise<void>;
|
|
151
|
-
/** Enables cross-request resume where the provider can list uploaded parts. */
|
|
152
|
-
listParts?(opts?: OperationOptions): Promise<UploadedPart[]>;
|
|
153
|
-
}
|
|
154
|
-
export interface SignedMultipartCreate {
|
|
155
|
-
uploadId: string;
|
|
156
|
-
partSize: number;
|
|
157
|
-
}
|
|
158
|
-
export interface SignedPart {
|
|
159
|
-
url: string;
|
|
160
|
-
headers?: Record<string, string>;
|
|
161
|
-
}
|
|
162
|
-
export interface SignedMultipartCapability {
|
|
163
|
-
create(key: string, opts: {
|
|
164
|
-
contentType?: string;
|
|
165
|
-
metadata?: Record<string, string>;
|
|
166
|
-
partSize?: number;
|
|
167
|
-
}): Promise<SignedMultipartCreate>;
|
|
168
|
-
signPart(key: string, uploadId: string, partNumber: number, opts?: {
|
|
169
|
-
expiresIn?: number;
|
|
170
|
-
}): Promise<SignedPart>;
|
|
171
|
-
complete(key: string, uploadId: string, parts: UploadedPart[]): Promise<UploadResult>;
|
|
172
|
-
abort(key: string, uploadId: string): Promise<void>;
|
|
173
|
-
}
|
|
174
|
-
export interface StorageDriver<Raw = unknown> {
|
|
175
|
-
readonly name: string;
|
|
176
|
-
readonly raw: Raw;
|
|
177
|
-
readonly reportsUploadProgress?: boolean;
|
|
178
|
-
readonly supportsRange?: boolean;
|
|
179
|
-
readonly supportsDelimiter?: boolean;
|
|
180
|
-
readonly supportsMetadata?: boolean;
|
|
181
|
-
readonly supportsCacheControl?: boolean;
|
|
182
|
-
readonly supportsServerSideCopy?: boolean;
|
|
183
|
-
readonly signedUrl?: SignedUrlCapability;
|
|
184
|
-
upload(key: string, body: Body, opts?: UploadOptions): Promise<UploadResult>;
|
|
185
|
-
download(key: string, opts?: DownloadOptions): Promise<StoredFile>;
|
|
186
|
-
head(key: string, opts?: OperationOptions): Promise<StoredFile>;
|
|
187
|
-
exists(key: string, opts?: OperationOptions): Promise<boolean>;
|
|
188
|
-
delete(key: string, opts?: OperationOptions): Promise<void>;
|
|
189
|
-
/** Optional native bulk delete; the facade fans out to `delete` otherwise. */
|
|
190
|
-
deleteMany?(keys: string[], opts?: DeleteManyOptions): Promise<DeleteManyResult>;
|
|
191
|
-
copy(from: string, to: string, opts?: OperationOptions): Promise<void>;
|
|
192
|
-
/** Optional native rename; the facade falls back to copy+delete otherwise. */
|
|
193
|
-
move?(from: string, to: string, opts?: OperationOptions): Promise<void>;
|
|
194
|
-
list(opts?: ListOptions): Promise<ListResult>;
|
|
195
|
-
url(key: string, opts?: UrlOptions): Promise<string>;
|
|
196
|
-
signedUploadUrl(key: string, opts: SignUploadOptions): Promise<SignedUpload>;
|
|
197
|
-
/** Server-side multipart. Presence == capability. */
|
|
198
|
-
createMultipartUpload?(key: string, opts?: CreateMultipartOptions): Promise<MultipartUpload>;
|
|
199
|
-
resumeMultipartUpload?(key: string, uploadId: string): MultipartUpload;
|
|
200
|
-
/** Browser-direct presigned multipart. Presence == capability. */
|
|
201
|
-
signedMultipart?: SignedMultipartCapability;
|
|
202
|
-
}
|
|
203
|
-
/** Queryable capability snapshot for callers that branch up-front. */
|
|
204
|
-
export interface StorageCapabilities {
|
|
205
|
-
rangeRead: boolean;
|
|
206
|
-
uploadProgress: boolean;
|
|
207
|
-
delimiter: boolean;
|
|
208
|
-
metadata: boolean;
|
|
209
|
-
cacheControl: boolean;
|
|
210
|
-
serverSideCopy: boolean;
|
|
211
|
-
multipart: boolean;
|
|
212
|
-
signedMultipart: boolean;
|
|
213
|
-
signedUrl: SignedUrlCapability;
|
|
214
|
-
}
|
|
215
|
-
export interface StorageHookEvent {
|
|
216
|
-
type: string;
|
|
217
|
-
key?: string;
|
|
218
|
-
status: 'success' | 'error';
|
|
219
|
-
durationMs: number;
|
|
220
|
-
error?: StorageError;
|
|
221
|
-
}
|
|
222
|
-
export interface StorageHooks {
|
|
223
|
-
onOperation?: (e: StorageHookEvent) => void;
|
|
224
|
-
onError?: (e: {
|
|
225
|
-
type: string;
|
|
226
|
-
key?: string;
|
|
227
|
-
error: StorageError;
|
|
228
|
-
}) => void;
|
|
229
|
-
onRetry?: (e: {
|
|
230
|
-
type: string;
|
|
231
|
-
key?: string;
|
|
232
|
-
attempt: number;
|
|
233
|
-
maxRetries: number;
|
|
234
|
-
delayMs: number;
|
|
235
|
-
error: StorageError;
|
|
236
|
-
}) => void;
|
|
237
|
-
}
|
|
238
|
-
export interface StorageOptions extends OperationOptions {
|
|
239
|
-
driver: StorageDriver;
|
|
240
|
-
/** Sub-scopes the keyspace within a bucket; normalized (no leading/trailing '/'). */
|
|
241
|
-
prefix?: string;
|
|
242
|
-
/** Reject all mutating operations. */
|
|
243
|
-
readonly?: boolean;
|
|
244
|
-
hooks?: StorageHooks;
|
|
245
|
-
}
|
package/dist/storage.types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { };
|