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.
@@ -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 the file's full path string. Object
7
- * upload writes both stores within a single `readwrite` transaction
8
- * so the pair stays consistent a partial failure can't leave a
9
- * blob without metadata or vice versa.
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. Also the store key. */
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. v1 has a single implicit bucket. */
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 IndexedDB key order (lexicographic by path). The
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 both stores. Called by Slice 4's `StorageService.reset`.
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;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAmBH;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAE/D;AAWD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvE;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;IAEjD;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAE/D;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnE;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAExD;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,GAAE,MAAwB,GAC/B,OAAO,CAAC,cAAc,CAAC,CAOzB"}
1
+ {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../src/storage/persistence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAmBH;;GAEG;AACH,eAAO,MAAM,cAAc,kBAAkB,CAAC;AAE9C;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOpF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAE/D;AASD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvE;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;IAElE;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAEhF;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpF;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAEzE;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC;CACzC;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,GAAE,MAAwB,EAChC,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,cAAc,CAAC,CAOzB;AAED,qBAAa,sBAAuB,YAAW,cAAc;IAC3D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D,OAAO,CAAC,cAAc,CAAqB;gBAE/B,aAAa,CAAC,EAAE,MAAM;IAI5B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAatE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAoBjE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAoB/E,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnF,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAcxE,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB3C,KAAK,IAAI,IAAI;IAEb,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;CAGvC;AAID,qBAAa,uBAAwB,YAAW,cAAc;IAI1D,OAAO,CAAC,QAAQ,CAAC,EAAE;IAHrB,OAAO,CAAC,cAAc,CAAqB;gBAGxB,EAAE,EAAE,WAAW,EAChC,aAAa,CAAC,EAAE,MAAM;IAKlB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAetE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAiCjE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAiC/E,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASnF,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASpD,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAUxE,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe3C,KAAK,IAAI,IAAI;IAIb,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;CAGvC;AAED,qBAAa,oBAAqB,YAAW,cAAc;IAEvD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM;gBADN,UAAU,EAAE,cAAc,EAClC,MAAM,EAAE,MAAM;IAGzB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAIjE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAI/E,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnF,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAIxE,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,KAAK,IAAI,IAAI;IAIb,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;CAIvC"}
@@ -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 the file's full path string. Object
7
- * upload writes both stores within a single `readwrite` transaction
8
- * so the pair stays consistent a partial failure can't leave a
9
- * blob without metadata or vice versa.
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. Slice 3 ships v1: two object stores keyed by
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.blobs.set(path, blob);
86
- this.metadata.set(path, metadata);
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
- return this.blobs.get(path);
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
- return this.metadata.get(path);
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
- this.metadata.set(path, metadata);
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.blobs.delete(path);
99
- this.metadata.delete(path);
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(prefix)) {
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
- this.blobs.clear();
115
- this.metadata.clear();
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
- constructor(db) {
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, path);
128
- tx.objectStore(METADATA_STORE).put(metadata, path);
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
- return awaitRequest(tx.objectStore(BLOBS_STORE).get(path));
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
- return awaitRequest(tx.objectStore(METADATA_STORE).get(path));
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, path);
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(path);
147
- tx.objectStore(METADATA_STORE).delete(path);
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
- // `IDBKeyRange.bound(prefix, prefix + '￿')` returns every
153
- // key that starts with `prefix` '￿' is the highest BMP
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
- tx.objectStore(BLOBS_STORE).clear();
163
- tx.objectStore(METADATA_STORE).clear();
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. v1 has a
78
- * single implicit bucket and does not enforce cross-bucket
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":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/storage/service.ts"],"names":[],"mappings":"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"}