@cosmicdrift/kumiko-types 0.221.0 → 0.223.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.223.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>",
package/src/fields.ts CHANGED
@@ -334,6 +334,19 @@ export type MultiSelectFieldDef<TOptions extends readonly string[] = readonly st
334
334
  /** Default-Auswahl. Jeder Eintrag muss in `options` sein (Boot-Validator). */
335
335
  readonly default?: readonly TOptions[number][];
336
336
  readonly access?: FieldAccess;
337
+ /** Renderer metadata: `"checkboxes"` renders every option as a visible
338
+ * checkbox with a select-all toggle. Default (omitted) stays the combobox
339
+ * dropdown. */
340
+ readonly display?: "checkboxes" | "dropdown";
341
+ /** Renderer metadata: column count for the `"checkboxes"` grid at the widest
342
+ * breakpoint; narrow viewports always collapse to one column. Omitted =
343
+ * the renderer picks a sensible count. Ignored unless
344
+ * `display: "checkboxes"`. */
345
+ readonly columns?: 1 | 2 | 3 | 4;
346
+ /** Renderer metadata: how many grid rows stay visible before the
347
+ * `"checkboxes"` grid becomes scrollable. Omitted = the grid grows with its
348
+ * content and never scrolls. Ignored unless `display: "checkboxes"`. */
349
+ readonly maxRows?: number;
337
350
  } & ResolvedPiiFlags;
338
351
 
339
352
  /**
@@ -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
  };