@cosmicdrift/kumiko-types 0.221.0 → 0.222.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cosmicdrift/kumiko-types",
3
- "version": "0.221.0",
3
+ "version": "0.222.0",
4
4
  "description": "Framework-Type-Definitions für Kumiko — FeatureDefinition, BootCheck-Types und die reinen Engine-Types. Erlaubt Downstream-Konsumenten, gegen die Type-Contracts zu bauen, ohne das ganze Framework-Package zu importieren. Enthaelt keine identitaets-sensitiven Runtime-Werte mehr (Error-Klassen leben seit #1629 in kumiko-framework, Brand-Symbole nutzen Symbol.for) und ist deshalb eine plain dependency, keine peerDependency.",
5
5
  "license": "BUSL-1.1",
6
6
  "author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
@@ -26,6 +26,11 @@ export type WriteStreamOptions = {
26
26
  // type here would let a provider skip them and fail silently in production
27
27
  // the first time an export job hits it.
28
28
  //
29
+ // list is required for the same reason: GDPR forget/tenant-destroy erasure
30
+ // needs to find derived/variant keys that were never tracked anywhere else
31
+ // (see derivatives-context) — an optional `list` would let a provider skip
32
+ // it and erasure would silently leave those binaries behind.
33
+ //
29
34
  // getSignedUrl is optional — providers without native presigned-URL support
30
35
  // (filesystem) leave it undefined; the route then returns 501 and the
31
36
  // client falls back to streaming via GET /files/:id. Callers must
@@ -41,5 +46,9 @@ export type FileStorageProvider = {
41
46
  readStream(key: string): AsyncIterable<Uint8Array>;
42
47
  delete(key: string): Promise<void>;
43
48
  exists(key: string): Promise<boolean>;
49
+ // Keys currently stored under `prefix` (prefix-match, not glob). Paginates
50
+ // internally — callers get the full result set for however many pages the
51
+ // backend needs, never a silently-truncated first page.
52
+ list(prefix: string): Promise<readonly string[]>;
44
53
  getSignedUrl?(key: string, expiresInSeconds: number, options?: SignedUrlOptions): Promise<string>;
45
54
  };