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
package/dist/storage/service.js
CHANGED
|
@@ -54,10 +54,30 @@ export class StorageService {
|
|
|
54
54
|
}
|
|
55
55
|
/** One open storage service, with its opening configuration, per `Sandbox`. */
|
|
56
56
|
const OPEN_SERVICES = new WeakMap();
|
|
57
|
-
/** One
|
|
57
|
+
/** One scoped `StorageService` per (Sandbox, bucket). */
|
|
58
|
+
const SCOPED_SERVICES = new WeakMap();
|
|
59
|
+
function getOrCreateScopedService(sandbox, bucket, rootServicePromise) {
|
|
60
|
+
let bucketMap = SCOPED_SERVICES.get(sandbox);
|
|
61
|
+
if (!bucketMap) {
|
|
62
|
+
bucketMap = new Map();
|
|
63
|
+
SCOPED_SERVICES.set(sandbox, bucketMap);
|
|
64
|
+
}
|
|
65
|
+
let existing = bucketMap.get(bucket);
|
|
66
|
+
if (!existing) {
|
|
67
|
+
existing = rootServicePromise.then((rootService) => {
|
|
68
|
+
const backend = rootService.backend.scoped
|
|
69
|
+
? rootService.backend.scoped(bucket)
|
|
70
|
+
: rootService.backend;
|
|
71
|
+
return new StorageService(backend, rootService.rules, rootService.crossServiceIam);
|
|
72
|
+
});
|
|
73
|
+
bucketMap.set(bucket, existing);
|
|
74
|
+
}
|
|
75
|
+
return existing;
|
|
76
|
+
}
|
|
77
|
+
/** Sandbox `FirebaseStorage` handles cached per `(SandboxContext, bucket)`. */
|
|
58
78
|
const SANDBOX_HANDLES = new WeakMap();
|
|
59
79
|
/**
|
|
60
|
-
*
|
|
80
|
+
* Anonymous handles cached per `(Sandbox, bucket)`. `Sandbox.withAuth(null)`
|
|
61
81
|
* mints a FRESH `SandboxContext` on every call, so the per-context
|
|
62
82
|
* cache above would miss for the bare-`Sandbox` convenience path —
|
|
63
83
|
* `getStorageSandbox(sandbox)` twice returned two different handles
|
|
@@ -123,7 +143,7 @@ function ensureService(sandbox, options, caller) {
|
|
|
123
143
|
// Explicit dbName wins; otherwise scope the default by project identity so
|
|
124
144
|
// two projects on one origin never share a storage database (issue #359).
|
|
125
145
|
const crossServiceIam = options.crossServiceIam ?? 'granted';
|
|
126
|
-
const servicePromise = openStorageBackend(options.dbName ?? storageDbName(options.projectId)).then((backend) => new StorageService(backend, rules, crossServiceIam));
|
|
146
|
+
const servicePromise = openStorageBackend(options.dbName ?? storageDbName(options.projectId), options.bucket ?? DEFAULT_BUCKET).then((backend) => new StorageService(backend, rules, crossServiceIam));
|
|
127
147
|
OPEN_SERVICES.set(sandbox, {
|
|
128
148
|
service: servicePromise,
|
|
129
149
|
rulesSource: options.rules ?? null,
|
|
@@ -166,22 +186,20 @@ export function getStorageSandbox(target, options = {}) {
|
|
|
166
186
|
// Open (or fetch) the ONE per-sandbox service FIRST — before any handle
|
|
167
187
|
// cache fast-path — so a late, differing `rules` option throws instead of
|
|
168
188
|
// being silently discarded (see ensureService).
|
|
169
|
-
const
|
|
189
|
+
const rootServicePromise = ensureService(sandbox, options, 'getStorageSandbox');
|
|
190
|
+
const bucket = options.bucket ?? DEFAULT_BUCKET;
|
|
170
191
|
// Fast path: a repeat bare-`Sandbox` call returns the cached
|
|
171
|
-
// anonymous handle
|
|
172
|
-
// because `withAuth(null)` mints a fresh context each time). Like
|
|
173
|
-
// the per-context path, bucket/dbName options are honored only on
|
|
174
|
-
// the FIRST call per Sandbox.
|
|
192
|
+
// anonymous handle for the requested bucket.
|
|
175
193
|
if (fromBareSandbox) {
|
|
176
|
-
const cachedBare = BARE_SANDBOX_HANDLES.get(sandbox);
|
|
194
|
+
const cachedBare = BARE_SANDBOX_HANDLES.get(sandbox)?.get(bucket);
|
|
177
195
|
if (cachedBare)
|
|
178
196
|
return cachedBare;
|
|
179
197
|
}
|
|
180
198
|
const ctx = isContext(target) ? target : target.withAuth(null);
|
|
181
|
-
const
|
|
182
|
-
const cached = SANDBOX_HANDLES.get(ctx);
|
|
199
|
+
const cached = SANDBOX_HANDLES.get(ctx)?.get(bucket);
|
|
183
200
|
if (cached)
|
|
184
201
|
return cached;
|
|
202
|
+
const servicePromise = getOrCreateScopedService(sandbox, bucket, rootServicePromise);
|
|
185
203
|
const sandboxTarget = {
|
|
186
204
|
kind: 'sandbox',
|
|
187
205
|
sandbox,
|
|
@@ -191,9 +209,20 @@ export function getStorageSandbox(target, options = {}) {
|
|
|
191
209
|
servicePromise,
|
|
192
210
|
};
|
|
193
211
|
const handle = Object.freeze({ [TARGET_SYMBOL]: sandboxTarget });
|
|
194
|
-
SANDBOX_HANDLES.
|
|
195
|
-
if (
|
|
196
|
-
|
|
212
|
+
let ctxMap = SANDBOX_HANDLES.get(ctx);
|
|
213
|
+
if (!ctxMap) {
|
|
214
|
+
ctxMap = new Map();
|
|
215
|
+
SANDBOX_HANDLES.set(ctx, ctxMap);
|
|
216
|
+
}
|
|
217
|
+
ctxMap.set(bucket, handle);
|
|
218
|
+
if (fromBareSandbox) {
|
|
219
|
+
let bareMap = BARE_SANDBOX_HANDLES.get(sandbox);
|
|
220
|
+
if (!bareMap) {
|
|
221
|
+
bareMap = new Map();
|
|
222
|
+
BARE_SANDBOX_HANDLES.set(sandbox, bareMap);
|
|
223
|
+
}
|
|
224
|
+
bareMap.set(bucket, handle);
|
|
225
|
+
}
|
|
197
226
|
return handle;
|
|
198
227
|
}
|
|
199
228
|
/** Admin handles are cached by bound context so Studio, agent, and
|
|
@@ -219,9 +248,10 @@ export function getAdminStorageSandbox(target, options = {}) {
|
|
|
219
248
|
const fromBareSandbox = !isContext(target);
|
|
220
249
|
const sandbox = isContext(target) ? target.sandbox : target;
|
|
221
250
|
// Service first (late differing `rules` must throw, even on a cache hit).
|
|
222
|
-
const
|
|
251
|
+
const rootServicePromise = ensureService(sandbox, options, 'getAdminStorageSandbox');
|
|
252
|
+
const bucket = options.bucket ?? DEFAULT_BUCKET;
|
|
223
253
|
if (fromBareSandbox) {
|
|
224
|
-
const cachedBare = BARE_ADMIN_HANDLES.get(sandbox);
|
|
254
|
+
const cachedBare = BARE_ADMIN_HANDLES.get(sandbox)?.get(bucket);
|
|
225
255
|
if (cachedBare)
|
|
226
256
|
return cachedBare;
|
|
227
257
|
}
|
|
@@ -235,21 +265,33 @@ export function getAdminStorageSandbox(target, options = {}) {
|
|
|
235
265
|
? {}
|
|
236
266
|
: { planId: baseContext.operationContext.planId }),
|
|
237
267
|
});
|
|
238
|
-
const cached = ADMIN_CONTEXT_HANDLES.get(baseContext);
|
|
268
|
+
const cached = ADMIN_CONTEXT_HANDLES.get(baseContext)?.get(bucket);
|
|
239
269
|
if (cached)
|
|
240
270
|
return cached;
|
|
271
|
+
const servicePromise = getOrCreateScopedService(sandbox, bucket, rootServicePromise);
|
|
241
272
|
const sandboxTarget = {
|
|
242
273
|
kind: 'sandbox',
|
|
243
274
|
sandbox,
|
|
244
275
|
context,
|
|
245
|
-
bucket
|
|
276
|
+
bucket,
|
|
246
277
|
servicePromise,
|
|
247
278
|
admin: true,
|
|
248
279
|
};
|
|
249
280
|
const handle = Object.freeze({ [TARGET_SYMBOL]: sandboxTarget });
|
|
250
|
-
ADMIN_CONTEXT_HANDLES.
|
|
251
|
-
if (
|
|
252
|
-
|
|
281
|
+
let ctxMap = ADMIN_CONTEXT_HANDLES.get(baseContext);
|
|
282
|
+
if (!ctxMap) {
|
|
283
|
+
ctxMap = new Map();
|
|
284
|
+
ADMIN_CONTEXT_HANDLES.set(baseContext, ctxMap);
|
|
285
|
+
}
|
|
286
|
+
ctxMap.set(bucket, handle);
|
|
287
|
+
if (fromBareSandbox) {
|
|
288
|
+
let bareMap = BARE_ADMIN_HANDLES.get(sandbox);
|
|
289
|
+
if (!bareMap) {
|
|
290
|
+
bareMap = new Map();
|
|
291
|
+
BARE_ADMIN_HANDLES.set(sandbox, bareMap);
|
|
292
|
+
}
|
|
293
|
+
bareMap.set(bucket, handle);
|
|
294
|
+
}
|
|
253
295
|
return handle;
|
|
254
296
|
}
|
|
255
297
|
/** Merge a host override with the immutable provenance bound to a Storage
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/storage/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGnD,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAC7B,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAuB,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAqB,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EACL,4BAA4B,GAE7B,MAAM,uBAAuB,CAAC;AAE/B;;;;GAIG;AACH,MAAM,cAAc,GAAG,eAAe,CAAC;AAEvC;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAkB,MAAM,CAAC,sBAAsB,CAAC,CAAC;AA6B3E,MAAM,UAAU,WAAW,CAAC,MAAqB;IAC/C,OAAO,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AACvD,CAAC;AA8BD;;;GAGG;AACH,MAAM,OAAO,cAAc;IAEd;IACA;IACA;IAHX,YACW,OAAuB,EACvB,QAA6B,IAAI,EACjC,kBAAmC,SAAS;QAF5C,YAAO,GAAP,OAAO,CAAgB;QACvB,UAAK,GAAL,KAAK,CAA4B;QACjC,oBAAe,GAAf,eAAe,CAA6B;IACpD,CAAC;CACL;
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/storage/service.ts"],"names":[],"mappings":"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"}
|