pyric 0.1.0-alpha.21 → 0.1.0-alpha.22
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/storage/persistence.d.ts +81 -17
- package/dist/storage/persistence.d.ts.map +1 -1
- package/dist/storage/persistence.js +267 -50
- package/dist/storage/persistence.js.map +1 -1
- package/dist/storage/service.d.ts +2 -4
- package/dist/storage/service.d.ts.map +1 -1
- package/dist/storage/service.js +63 -21
- package/dist/storage/service.js.map +1 -1
- package/package.json +1 -1
- package/src/storage/persistence.ts +291 -63
- package/src/storage/service.ts +81 -27
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* One database (`pyric-storage` by default), two object stores —
|
|
5
5
|
* `blobs` for the file content and `metadata` for the descriptive
|
|
6
|
-
* record. Both stores key on
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* record. Both stores key on composite bucket and path strings
|
|
7
|
+
* (`${bucket}/${fullPath}`) to isolate storage persistence across
|
|
8
|
+
* buckets. Object upload writes both stores within a single `readwrite`
|
|
9
|
+
* transaction so the pair stays consistent — a partial failure can't
|
|
10
|
+
* leave a blob without metadata or vice versa.
|
|
10
11
|
*
|
|
11
12
|
* Slice 3 of the v1 scope (per the design rationale):
|
|
12
13
|
*
|
|
@@ -25,6 +26,21 @@
|
|
|
25
26
|
* objects — translation into Firebase-shaped `StorageError`s happens
|
|
26
27
|
* in Slice 8 inside `errors.ts`. Keep this layer mechanical.
|
|
27
28
|
*/
|
|
29
|
+
/**
|
|
30
|
+
* Default sandbox bucket identifier when not explicitly provided.
|
|
31
|
+
*/
|
|
32
|
+
export declare const DEFAULT_BUCKET = "pyric-default";
|
|
33
|
+
/**
|
|
34
|
+
* Encode a composite key scoping an object path to its bucket: `${bucket}/${fullPath}`.
|
|
35
|
+
*/
|
|
36
|
+
export declare function toStorageKey(bucket: string, path: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* Decode a composite key into bucket and object path.
|
|
39
|
+
*/
|
|
40
|
+
export declare function parseStorageKey(key: string): {
|
|
41
|
+
bucket: string;
|
|
42
|
+
path: string;
|
|
43
|
+
} | null;
|
|
28
44
|
/**
|
|
29
45
|
* Resolve the default IndexedDB database name for a project identity:
|
|
30
46
|
* `pyric-storage:<projectId>`, or the legacy shared {@link DEFAULT_DB_NAME}
|
|
@@ -44,11 +60,11 @@ export declare function storageDbName(projectId?: string | null): string;
|
|
|
44
60
|
* caller's `SettableMetadata`.
|
|
45
61
|
*/
|
|
46
62
|
export interface StoredMetadata {
|
|
47
|
-
/** Full path of the object within the bucket.
|
|
63
|
+
/** Full path of the object within the bucket. */
|
|
48
64
|
fullPath: string;
|
|
49
65
|
/** Last path segment (`b.txt` in `a/b.txt`). */
|
|
50
66
|
name: string;
|
|
51
|
-
/** Sandbox bucket id.
|
|
67
|
+
/** Sandbox bucket id. */
|
|
52
68
|
bucket: string;
|
|
53
69
|
/** Monotonically increasing version of the object content. */
|
|
54
70
|
generation: string;
|
|
@@ -90,42 +106,47 @@ export interface StorageBackend {
|
|
|
90
106
|
*/
|
|
91
107
|
put(path: string, blob: Blob, metadata: StoredMetadata): Promise<void>;
|
|
92
108
|
/**
|
|
93
|
-
* Read the blob stored at `path`. Resolves to `undefined` when no
|
|
109
|
+
* Read the blob stored at `path` within `bucket`. Resolves to `undefined` when no
|
|
94
110
|
* entry exists — callers translate that into `object-not-found`.
|
|
95
111
|
*/
|
|
96
|
-
getBlob(path: string): Promise<Blob | undefined>;
|
|
112
|
+
getBlob(path: string, bucket?: string): Promise<Blob | undefined>;
|
|
97
113
|
/**
|
|
98
|
-
* Read the metadata record stored at `path`. Resolves to
|
|
114
|
+
* Read the metadata record stored at `path` within `bucket`. Resolves to
|
|
99
115
|
* `undefined` when no entry exists.
|
|
100
116
|
*/
|
|
101
|
-
getMetadata(path: string): Promise<StoredMetadata | undefined>;
|
|
117
|
+
getMetadata(path: string, bucket?: string): Promise<StoredMetadata | undefined>;
|
|
102
118
|
/**
|
|
103
119
|
* Replace the metadata record at `path` without touching the blob.
|
|
104
120
|
* Used by `updateMetadata` (Slice 6). Caller is responsible for
|
|
105
121
|
* preserving server-set fields (`generation`, `timeCreated`, …)
|
|
106
122
|
* the spec says metadata-only updates leave intact.
|
|
107
123
|
*/
|
|
108
|
-
putMetadata(path: string, metadata: StoredMetadata): Promise<void>;
|
|
124
|
+
putMetadata(path: string, metadata: StoredMetadata, bucket?: string): Promise<void>;
|
|
109
125
|
/**
|
|
110
126
|
* Delete both the blob and the metadata at `path` atomically.
|
|
111
127
|
* No-op when neither entry exists.
|
|
112
128
|
*/
|
|
113
|
-
delete(path: string): Promise<void>;
|
|
129
|
+
delete(path: string, bucket?: string): Promise<void>;
|
|
114
130
|
/**
|
|
115
131
|
* Enumerate metadata records whose `fullPath` starts with `prefix`.
|
|
116
|
-
* Returned in
|
|
132
|
+
* Returned in key order (lexicographic by path within bucket). The
|
|
117
133
|
* prefix is used verbatim — no implicit trailing-slash addition,
|
|
118
134
|
* matching the survey's path-semantics call (Section 6).
|
|
119
135
|
*/
|
|
120
|
-
listByPrefix(prefix: string): Promise<StoredMetadata[]>;
|
|
136
|
+
listByPrefix(prefix: string, bucket?: string): Promise<StoredMetadata[]>;
|
|
121
137
|
/**
|
|
122
|
-
* Clear
|
|
138
|
+
* Clear stores. If `bucket` is supplied, clears only entries in that bucket;
|
|
139
|
+
* otherwise clears all stores.
|
|
123
140
|
*/
|
|
124
|
-
reset(): Promise<void>;
|
|
141
|
+
reset(bucket?: string): Promise<void>;
|
|
125
142
|
/**
|
|
126
143
|
* Close the underlying IndexedDB connection. Idempotent.
|
|
127
144
|
*/
|
|
128
145
|
close(): void;
|
|
146
|
+
/**
|
|
147
|
+
* Return a view of this backend scoped to a specific bucket.
|
|
148
|
+
*/
|
|
149
|
+
scoped?(bucket: string): StorageBackend;
|
|
129
150
|
}
|
|
130
151
|
/**
|
|
131
152
|
* Open (or create) the backing database and return a backend bound
|
|
@@ -137,5 +158,48 @@ export interface StorageBackend {
|
|
|
137
158
|
* production, callers pass nothing and inherit the default
|
|
138
159
|
* `pyric-storage`.
|
|
139
160
|
*/
|
|
140
|
-
export declare function openStorageBackend(dbName?: string): Promise<StorageBackend>;
|
|
161
|
+
export declare function openStorageBackend(dbName?: string, defaultBucket?: string): Promise<StorageBackend>;
|
|
162
|
+
export declare class InMemoryStorageBackend implements StorageBackend {
|
|
163
|
+
private readonly blobs;
|
|
164
|
+
private readonly metadata;
|
|
165
|
+
private _defaultBucket;
|
|
166
|
+
constructor(defaultBucket?: string);
|
|
167
|
+
put(path: string, blob: Blob, metadata: StoredMetadata): Promise<void>;
|
|
168
|
+
getBlob(path: string, bucket?: string): Promise<Blob | undefined>;
|
|
169
|
+
getMetadata(path: string, bucket?: string): Promise<StoredMetadata | undefined>;
|
|
170
|
+
putMetadata(path: string, metadata: StoredMetadata, bucket?: string): Promise<void>;
|
|
171
|
+
delete(path: string, bucket?: string): Promise<void>;
|
|
172
|
+
listByPrefix(prefix: string, bucket?: string): Promise<StoredMetadata[]>;
|
|
173
|
+
reset(bucket?: string): Promise<void>;
|
|
174
|
+
close(): void;
|
|
175
|
+
scoped(bucket: string): StorageBackend;
|
|
176
|
+
}
|
|
177
|
+
export declare class IndexedDbStorageBackend implements StorageBackend {
|
|
178
|
+
private readonly db;
|
|
179
|
+
private _defaultBucket;
|
|
180
|
+
constructor(db: IDBDatabase, defaultBucket?: string);
|
|
181
|
+
put(path: string, blob: Blob, metadata: StoredMetadata): Promise<void>;
|
|
182
|
+
getBlob(path: string, bucket?: string): Promise<Blob | undefined>;
|
|
183
|
+
getMetadata(path: string, bucket?: string): Promise<StoredMetadata | undefined>;
|
|
184
|
+
putMetadata(path: string, metadata: StoredMetadata, bucket?: string): Promise<void>;
|
|
185
|
+
delete(path: string, bucket?: string): Promise<void>;
|
|
186
|
+
listByPrefix(prefix: string, bucket?: string): Promise<StoredMetadata[]>;
|
|
187
|
+
reset(bucket?: string): Promise<void>;
|
|
188
|
+
close(): void;
|
|
189
|
+
scoped(bucket: string): StorageBackend;
|
|
190
|
+
}
|
|
191
|
+
export declare class ScopedStorageBackend implements StorageBackend {
|
|
192
|
+
private readonly underlying;
|
|
193
|
+
readonly bucket: string;
|
|
194
|
+
constructor(underlying: StorageBackend, bucket: string);
|
|
195
|
+
put(path: string, blob: Blob, metadata: StoredMetadata): Promise<void>;
|
|
196
|
+
getBlob(path: string, bucket?: string): Promise<Blob | undefined>;
|
|
197
|
+
getMetadata(path: string, bucket?: string): Promise<StoredMetadata | undefined>;
|
|
198
|
+
putMetadata(path: string, metadata: StoredMetadata, bucket?: string): Promise<void>;
|
|
199
|
+
delete(path: string, bucket?: string): Promise<void>;
|
|
200
|
+
listByPrefix(prefix: string, bucket?: string): Promise<StoredMetadata[]>;
|
|
201
|
+
reset(bucket?: string): Promise<void>;
|
|
202
|
+
close(): void;
|
|
203
|
+
scoped(bucket: string): StorageBackend;
|
|
204
|
+
}
|
|
141
205
|
//# sourceMappingURL=persistence.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../src/storage/persistence.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../src/storage/persistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* One database (`pyric-storage` by default), two object stores —
|
|
5
5
|
* `blobs` for the file content and `metadata` for the descriptive
|
|
6
|
-
* record. Both stores key on
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* record. Both stores key on composite bucket and path strings
|
|
7
|
+
* (`${bucket}/${fullPath}`) to isolate storage persistence across
|
|
8
|
+
* buckets. Object upload writes both stores within a single `readwrite`
|
|
9
|
+
* transaction so the pair stays consistent — a partial failure can't
|
|
10
|
+
* leave a blob without metadata or vice versa.
|
|
10
11
|
*
|
|
11
12
|
* Slice 3 of the v1 scope (per the design rationale):
|
|
12
13
|
*
|
|
@@ -41,6 +42,28 @@
|
|
|
41
42
|
* deleted either: other pyric versions on the same origin may still read it.
|
|
42
43
|
*/
|
|
43
44
|
const DEFAULT_DB_NAME = 'pyric-storage';
|
|
45
|
+
/**
|
|
46
|
+
* Default sandbox bucket identifier when not explicitly provided.
|
|
47
|
+
*/
|
|
48
|
+
export const DEFAULT_BUCKET = 'pyric-default';
|
|
49
|
+
/**
|
|
50
|
+
* Encode a composite key scoping an object path to its bucket: `${bucket}/${fullPath}`.
|
|
51
|
+
*/
|
|
52
|
+
export function toStorageKey(bucket, path) {
|
|
53
|
+
return `${bucket}/${path}`;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Decode a composite key into bucket and object path.
|
|
57
|
+
*/
|
|
58
|
+
export function parseStorageKey(key) {
|
|
59
|
+
const slashIdx = key.indexOf('/');
|
|
60
|
+
if (slashIdx === -1)
|
|
61
|
+
return null;
|
|
62
|
+
return {
|
|
63
|
+
bucket: key.slice(0, slashIdx),
|
|
64
|
+
path: key.slice(slashIdx + 1),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
44
67
|
/**
|
|
45
68
|
* Resolve the default IndexedDB database name for a project identity:
|
|
46
69
|
* `pyric-storage:<projectId>`, or the legacy shared {@link DEFAULT_DB_NAME}
|
|
@@ -52,9 +75,7 @@ export function storageDbName(projectId) {
|
|
|
52
75
|
}
|
|
53
76
|
/**
|
|
54
77
|
* Schema version. Bump and add an `upgradeneeded` branch when the
|
|
55
|
-
* store layout changes.
|
|
56
|
-
* fullPath, no indexes. Future migrations follow IndexedDB's standard
|
|
57
|
-
* upgrade path.
|
|
78
|
+
* store layout changes.
|
|
58
79
|
*/
|
|
59
80
|
const SCHEMA_VERSION = 1;
|
|
60
81
|
const BLOBS_STORE = 'blobs';
|
|
@@ -69,40 +90,94 @@ const METADATA_STORE = 'metadata';
|
|
|
69
90
|
* production, callers pass nothing and inherit the default
|
|
70
91
|
* `pyric-storage`.
|
|
71
92
|
*/
|
|
72
|
-
export async function openStorageBackend(dbName = DEFAULT_DB_NAME) {
|
|
93
|
+
export async function openStorageBackend(dbName = DEFAULT_DB_NAME, defaultBucket) {
|
|
73
94
|
try {
|
|
74
95
|
const db = await openDatabase(dbName);
|
|
75
|
-
return new IndexedDbStorageBackend(db);
|
|
96
|
+
return new IndexedDbStorageBackend(db, defaultBucket);
|
|
76
97
|
}
|
|
77
98
|
catch (err) {
|
|
78
|
-
return new InMemoryStorageBackend();
|
|
99
|
+
return new InMemoryStorageBackend(defaultBucket);
|
|
79
100
|
}
|
|
80
101
|
}
|
|
81
|
-
class InMemoryStorageBackend {
|
|
102
|
+
export class InMemoryStorageBackend {
|
|
82
103
|
blobs = new Map();
|
|
83
104
|
metadata = new Map();
|
|
105
|
+
_defaultBucket;
|
|
106
|
+
constructor(defaultBucket) {
|
|
107
|
+
this._defaultBucket = defaultBucket;
|
|
108
|
+
}
|
|
84
109
|
async put(path, blob, metadata) {
|
|
85
|
-
this.
|
|
86
|
-
this.
|
|
110
|
+
const bucket = metadata.bucket || this._defaultBucket || DEFAULT_BUCKET;
|
|
111
|
+
if (!this._defaultBucket) {
|
|
112
|
+
this._defaultBucket = bucket;
|
|
113
|
+
}
|
|
114
|
+
if (!metadata.bucket) {
|
|
115
|
+
metadata.bucket = bucket;
|
|
116
|
+
}
|
|
117
|
+
const key = toStorageKey(bucket, path);
|
|
118
|
+
this.blobs.set(key, blob);
|
|
119
|
+
this.metadata.set(key, metadata);
|
|
87
120
|
}
|
|
88
|
-
async getBlob(path) {
|
|
89
|
-
|
|
121
|
+
async getBlob(path, bucket) {
|
|
122
|
+
if (bucket) {
|
|
123
|
+
return this.blobs.get(toStorageKey(bucket, path));
|
|
124
|
+
}
|
|
125
|
+
const targetBucket = this._defaultBucket ?? DEFAULT_BUCKET;
|
|
126
|
+
const direct = this.blobs.get(toStorageKey(targetBucket, path));
|
|
127
|
+
if (direct !== undefined)
|
|
128
|
+
return direct;
|
|
129
|
+
if (targetBucket !== DEFAULT_BUCKET) {
|
|
130
|
+
const def = this.blobs.get(toStorageKey(DEFAULT_BUCKET, path));
|
|
131
|
+
if (def !== undefined)
|
|
132
|
+
return def;
|
|
133
|
+
}
|
|
134
|
+
for (const [key, blob] of this.blobs.entries()) {
|
|
135
|
+
const parsed = parseStorageKey(key);
|
|
136
|
+
if (parsed && parsed.path === path) {
|
|
137
|
+
return blob;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return undefined;
|
|
90
141
|
}
|
|
91
|
-
async getMetadata(path) {
|
|
92
|
-
|
|
142
|
+
async getMetadata(path, bucket) {
|
|
143
|
+
if (bucket) {
|
|
144
|
+
return this.metadata.get(toStorageKey(bucket, path));
|
|
145
|
+
}
|
|
146
|
+
const targetBucket = this._defaultBucket ?? DEFAULT_BUCKET;
|
|
147
|
+
const direct = this.metadata.get(toStorageKey(targetBucket, path));
|
|
148
|
+
if (direct !== undefined)
|
|
149
|
+
return direct;
|
|
150
|
+
if (targetBucket !== DEFAULT_BUCKET) {
|
|
151
|
+
const def = this.metadata.get(toStorageKey(DEFAULT_BUCKET, path));
|
|
152
|
+
if (def !== undefined)
|
|
153
|
+
return def;
|
|
154
|
+
}
|
|
155
|
+
for (const [key, meta] of this.metadata.entries()) {
|
|
156
|
+
const parsed = parseStorageKey(key);
|
|
157
|
+
if (parsed && parsed.path === path) {
|
|
158
|
+
return meta;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return undefined;
|
|
93
162
|
}
|
|
94
|
-
async putMetadata(path, metadata) {
|
|
95
|
-
|
|
163
|
+
async putMetadata(path, metadata, bucket) {
|
|
164
|
+
const b = bucket ?? metadata.bucket ?? this._defaultBucket ?? DEFAULT_BUCKET;
|
|
165
|
+
if (!metadata.bucket)
|
|
166
|
+
metadata.bucket = b;
|
|
167
|
+
this.metadata.set(toStorageKey(b, path), metadata);
|
|
96
168
|
}
|
|
97
|
-
async delete(path) {
|
|
98
|
-
this.
|
|
99
|
-
this.
|
|
169
|
+
async delete(path, bucket) {
|
|
170
|
+
const targetBucket = bucket ?? this._defaultBucket ?? DEFAULT_BUCKET;
|
|
171
|
+
this.blobs.delete(toStorageKey(targetBucket, path));
|
|
172
|
+
this.metadata.delete(toStorageKey(targetBucket, path));
|
|
100
173
|
}
|
|
101
|
-
async listByPrefix(prefix) {
|
|
174
|
+
async listByPrefix(prefix, bucket) {
|
|
175
|
+
const targetBucket = bucket ?? this._defaultBucket ?? DEFAULT_BUCKET;
|
|
176
|
+
const keyPrefix = `${targetBucket}/${prefix}`;
|
|
102
177
|
const results = [];
|
|
103
178
|
const keys = Array.from(this.metadata.keys()).sort();
|
|
104
179
|
for (const key of keys) {
|
|
105
|
-
if (key.startsWith(
|
|
180
|
+
if (key.startsWith(keyPrefix)) {
|
|
106
181
|
const meta = this.metadata.get(key);
|
|
107
182
|
if (meta)
|
|
108
183
|
results.push(meta);
|
|
@@ -110,62 +185,204 @@ class InMemoryStorageBackend {
|
|
|
110
185
|
}
|
|
111
186
|
return results;
|
|
112
187
|
}
|
|
113
|
-
async reset() {
|
|
114
|
-
|
|
115
|
-
|
|
188
|
+
async reset(bucket) {
|
|
189
|
+
if (!bucket) {
|
|
190
|
+
this.blobs.clear();
|
|
191
|
+
this.metadata.clear();
|
|
192
|
+
this._defaultBucket = undefined;
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
const bucketPrefix = `${bucket}/`;
|
|
196
|
+
for (const key of Array.from(this.blobs.keys())) {
|
|
197
|
+
if (key.startsWith(bucketPrefix)) {
|
|
198
|
+
this.blobs.delete(key);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
for (const key of Array.from(this.metadata.keys())) {
|
|
202
|
+
if (key.startsWith(bucketPrefix)) {
|
|
203
|
+
this.metadata.delete(key);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
116
206
|
}
|
|
117
207
|
close() { }
|
|
208
|
+
scoped(bucket) {
|
|
209
|
+
return new ScopedStorageBackend(this, bucket);
|
|
210
|
+
}
|
|
118
211
|
}
|
|
119
212
|
// ─── Internal ──────────────────────────────────────────────────────
|
|
120
|
-
class IndexedDbStorageBackend {
|
|
213
|
+
export class IndexedDbStorageBackend {
|
|
121
214
|
db;
|
|
122
|
-
|
|
215
|
+
_defaultBucket;
|
|
216
|
+
constructor(db, defaultBucket) {
|
|
123
217
|
this.db = db;
|
|
218
|
+
this._defaultBucket = defaultBucket;
|
|
124
219
|
}
|
|
125
220
|
async put(path, blob, metadata) {
|
|
221
|
+
const bucket = metadata.bucket || this._defaultBucket || DEFAULT_BUCKET;
|
|
222
|
+
if (!this._defaultBucket) {
|
|
223
|
+
this._defaultBucket = bucket;
|
|
224
|
+
}
|
|
225
|
+
if (!metadata.bucket) {
|
|
226
|
+
metadata.bucket = bucket;
|
|
227
|
+
}
|
|
228
|
+
const key = toStorageKey(bucket, path);
|
|
126
229
|
const tx = this.db.transaction([BLOBS_STORE, METADATA_STORE], 'readwrite');
|
|
127
|
-
tx.objectStore(BLOBS_STORE).put(blob,
|
|
128
|
-
tx.objectStore(METADATA_STORE).put(metadata,
|
|
230
|
+
tx.objectStore(BLOBS_STORE).put(blob, key);
|
|
231
|
+
tx.objectStore(METADATA_STORE).put(metadata, key);
|
|
129
232
|
await awaitTransaction(tx);
|
|
130
233
|
}
|
|
131
|
-
async getBlob(path) {
|
|
234
|
+
async getBlob(path, bucket) {
|
|
132
235
|
const tx = this.db.transaction(BLOBS_STORE, 'readonly');
|
|
133
|
-
|
|
236
|
+
const store = tx.objectStore(BLOBS_STORE);
|
|
237
|
+
if (bucket) {
|
|
238
|
+
return awaitRequest(store.get(toStorageKey(bucket, path)));
|
|
239
|
+
}
|
|
240
|
+
const targetBucket = this._defaultBucket ?? DEFAULT_BUCKET;
|
|
241
|
+
const direct = await awaitRequest(store.get(toStorageKey(targetBucket, path)));
|
|
242
|
+
if (direct !== undefined)
|
|
243
|
+
return direct;
|
|
244
|
+
if (targetBucket !== DEFAULT_BUCKET) {
|
|
245
|
+
const def = await awaitRequest(store.get(toStorageKey(DEFAULT_BUCKET, path)));
|
|
246
|
+
if (def !== undefined)
|
|
247
|
+
return def;
|
|
248
|
+
}
|
|
249
|
+
return new Promise((resolve, reject) => {
|
|
250
|
+
const req = store.openCursor();
|
|
251
|
+
req.addEventListener('success', () => {
|
|
252
|
+
const cursor = req.result;
|
|
253
|
+
if (!cursor) {
|
|
254
|
+
resolve(undefined);
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
const key = String(cursor.key);
|
|
258
|
+
const parsed = parseStorageKey(key);
|
|
259
|
+
if (parsed && parsed.path === path) {
|
|
260
|
+
resolve(cursor.value);
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
cursor.continue();
|
|
264
|
+
});
|
|
265
|
+
req.addEventListener('error', () => reject(req.error));
|
|
266
|
+
});
|
|
134
267
|
}
|
|
135
|
-
async getMetadata(path) {
|
|
268
|
+
async getMetadata(path, bucket) {
|
|
136
269
|
const tx = this.db.transaction(METADATA_STORE, 'readonly');
|
|
137
|
-
|
|
270
|
+
const store = tx.objectStore(METADATA_STORE);
|
|
271
|
+
if (bucket) {
|
|
272
|
+
return awaitRequest(store.get(toStorageKey(bucket, path)));
|
|
273
|
+
}
|
|
274
|
+
const targetBucket = this._defaultBucket ?? DEFAULT_BUCKET;
|
|
275
|
+
const direct = await awaitRequest(store.get(toStorageKey(targetBucket, path)));
|
|
276
|
+
if (direct !== undefined)
|
|
277
|
+
return direct;
|
|
278
|
+
if (targetBucket !== DEFAULT_BUCKET) {
|
|
279
|
+
const def = await awaitRequest(store.get(toStorageKey(DEFAULT_BUCKET, path)));
|
|
280
|
+
if (def !== undefined)
|
|
281
|
+
return def;
|
|
282
|
+
}
|
|
283
|
+
return new Promise((resolve, reject) => {
|
|
284
|
+
const req = store.openCursor();
|
|
285
|
+
req.addEventListener('success', () => {
|
|
286
|
+
const cursor = req.result;
|
|
287
|
+
if (!cursor) {
|
|
288
|
+
resolve(undefined);
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
const key = String(cursor.key);
|
|
292
|
+
const parsed = parseStorageKey(key);
|
|
293
|
+
if (parsed && parsed.path === path) {
|
|
294
|
+
resolve(cursor.value);
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
cursor.continue();
|
|
298
|
+
});
|
|
299
|
+
req.addEventListener('error', () => reject(req.error));
|
|
300
|
+
});
|
|
138
301
|
}
|
|
139
|
-
async putMetadata(path, metadata) {
|
|
302
|
+
async putMetadata(path, metadata, bucket) {
|
|
303
|
+
const b = bucket ?? metadata.bucket ?? this._defaultBucket ?? DEFAULT_BUCKET;
|
|
304
|
+
if (!metadata.bucket)
|
|
305
|
+
metadata.bucket = b;
|
|
306
|
+
const key = toStorageKey(b, path);
|
|
140
307
|
const tx = this.db.transaction(METADATA_STORE, 'readwrite');
|
|
141
|
-
tx.objectStore(METADATA_STORE).put(metadata,
|
|
308
|
+
tx.objectStore(METADATA_STORE).put(metadata, key);
|
|
142
309
|
await awaitTransaction(tx);
|
|
143
310
|
}
|
|
144
|
-
async delete(path) {
|
|
311
|
+
async delete(path, bucket) {
|
|
312
|
+
const targetBucket = bucket ?? this._defaultBucket ?? DEFAULT_BUCKET;
|
|
313
|
+
const key = toStorageKey(targetBucket, path);
|
|
145
314
|
const tx = this.db.transaction([BLOBS_STORE, METADATA_STORE], 'readwrite');
|
|
146
|
-
tx.objectStore(BLOBS_STORE).delete(
|
|
147
|
-
tx.objectStore(METADATA_STORE).delete(
|
|
315
|
+
tx.objectStore(BLOBS_STORE).delete(key);
|
|
316
|
+
tx.objectStore(METADATA_STORE).delete(key);
|
|
148
317
|
await awaitTransaction(tx);
|
|
149
318
|
}
|
|
150
|
-
async listByPrefix(prefix) {
|
|
319
|
+
async listByPrefix(prefix, bucket) {
|
|
320
|
+
const targetBucket = bucket ?? this._defaultBucket ?? DEFAULT_BUCKET;
|
|
151
321
|
const tx = this.db.transaction(METADATA_STORE, 'readonly');
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
// code point, so any path whose first char beyond `prefix` is
|
|
155
|
-
// legal will sort below it. Matches the survey's recommended
|
|
156
|
-
// prefix-query pattern (Section 6).
|
|
157
|
-
const range = IDBKeyRange.bound(prefix, prefix + '', false, false);
|
|
322
|
+
const keyPrefix = `${targetBucket}/${prefix}`;
|
|
323
|
+
const range = IDBKeyRange.bound(keyPrefix, keyPrefix + '\ufffd', false, false);
|
|
158
324
|
return awaitRequest(tx.objectStore(METADATA_STORE).getAll(range));
|
|
159
325
|
}
|
|
160
|
-
async reset() {
|
|
326
|
+
async reset(bucket) {
|
|
161
327
|
const tx = this.db.transaction([BLOBS_STORE, METADATA_STORE], 'readwrite');
|
|
162
|
-
|
|
163
|
-
|
|
328
|
+
if (!bucket) {
|
|
329
|
+
tx.objectStore(BLOBS_STORE).clear();
|
|
330
|
+
tx.objectStore(METADATA_STORE).clear();
|
|
331
|
+
this._defaultBucket = undefined;
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
const bucketPrefix = `${bucket}/`;
|
|
335
|
+
const range = IDBKeyRange.bound(bucketPrefix, bucketPrefix + '\ufffd', false, false);
|
|
336
|
+
tx.objectStore(BLOBS_STORE).delete(range);
|
|
337
|
+
tx.objectStore(METADATA_STORE).delete(range);
|
|
338
|
+
}
|
|
164
339
|
await awaitTransaction(tx);
|
|
165
340
|
}
|
|
166
341
|
close() {
|
|
167
342
|
this.db.close();
|
|
168
343
|
}
|
|
344
|
+
scoped(bucket) {
|
|
345
|
+
return new ScopedStorageBackend(this, bucket);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
export class ScopedStorageBackend {
|
|
349
|
+
underlying;
|
|
350
|
+
bucket;
|
|
351
|
+
constructor(underlying, bucket) {
|
|
352
|
+
this.underlying = underlying;
|
|
353
|
+
this.bucket = bucket;
|
|
354
|
+
}
|
|
355
|
+
put(path, blob, metadata) {
|
|
356
|
+
const meta = metadata.bucket ? metadata : { ...metadata, bucket: this.bucket };
|
|
357
|
+
return this.underlying.put(path, blob, meta);
|
|
358
|
+
}
|
|
359
|
+
getBlob(path, bucket) {
|
|
360
|
+
return this.underlying.getBlob(path, bucket ?? this.bucket);
|
|
361
|
+
}
|
|
362
|
+
getMetadata(path, bucket) {
|
|
363
|
+
return this.underlying.getMetadata(path, bucket ?? this.bucket);
|
|
364
|
+
}
|
|
365
|
+
putMetadata(path, metadata, bucket) {
|
|
366
|
+
const meta = metadata.bucket ? metadata : { ...metadata, bucket: this.bucket };
|
|
367
|
+
return this.underlying.putMetadata(path, meta, bucket ?? this.bucket);
|
|
368
|
+
}
|
|
369
|
+
delete(path, bucket) {
|
|
370
|
+
return this.underlying.delete(path, bucket ?? this.bucket);
|
|
371
|
+
}
|
|
372
|
+
listByPrefix(prefix, bucket) {
|
|
373
|
+
return this.underlying.listByPrefix(prefix, bucket ?? this.bucket);
|
|
374
|
+
}
|
|
375
|
+
reset(bucket) {
|
|
376
|
+
return this.underlying.reset(bucket ?? this.bucket);
|
|
377
|
+
}
|
|
378
|
+
close() {
|
|
379
|
+
this.underlying.close();
|
|
380
|
+
}
|
|
381
|
+
scoped(bucket) {
|
|
382
|
+
if (bucket === this.bucket)
|
|
383
|
+
return this;
|
|
384
|
+
return this.underlying.scoped ? this.underlying.scoped(bucket) : new ScopedStorageBackend(this.underlying, bucket);
|
|
385
|
+
}
|
|
169
386
|
}
|
|
170
387
|
function openDatabase(dbName) {
|
|
171
388
|
return new Promise((resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../src/storage/persistence.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../src/storage/persistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -74,10 +74,8 @@ export declare class StorageService {
|
|
|
74
74
|
/** Options for {@link getStorageSandbox}. */
|
|
75
75
|
export interface StorageOptions {
|
|
76
76
|
/**
|
|
77
|
-
* Bucket identifier recorded on uploaded metadata
|
|
78
|
-
*
|
|
79
|
-
* isolation — passing different values per call is accepted and
|
|
80
|
-
* round-trips in metadata, but the data store is shared.
|
|
77
|
+
* Bucket identifier recorded on uploaded metadata and used to isolate
|
|
78
|
+
* storage persistence across multiple buckets.
|
|
81
79
|
*/
|
|
82
80
|
bucket?: string;
|
|
83
81
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/storage/service.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAMnD,OAAO,EAAqC,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,uBAAuB,CAAC;AAS/B;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,OAAO,MAAuC,CAAC;AAE3E;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,iFAAiF;IACjF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,SAAS,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjD;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC;AAEnC,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CAE5D;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC;CAC5B;AAED,gEAAgE;AAChE,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;CAAE,CAAC;AAEjF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEnD;;;GAGG;AACH,qBAAa,cAAc;IAEvB,QAAQ,CAAC,OAAO,EAAE,cAAc;IAChC,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IACnC,QAAQ,CAAC,eAAe,EAAE,eAAe;gBAFhC,OAAO,EAAE,cAAc,EACvB,KAAK,GAAE,YAAY,GAAG,IAAW,EACjC,eAAe,GAAE,eAA2B;CAExD;AAED,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/storage/service.ts"],"names":[],"mappings":"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"}
|