@rslsp1/fa-app-tools 2.0.86 → 3.0.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.
@@ -1081,10 +1081,49 @@ function elementStoreContractChecks() {
1081
1081
  "setPreferredHead"
1082
1082
  );
1083
1083
  const snapshot = await snapshotOf(store, elementId);
1084
- const found = snapshot.preferredHeads.some(
1085
- (selection) => selection.context_id === "ctx" && selection.version_id === v1.version_id
1084
+ const selection = snapshot.preferredHeads.find(
1085
+ (eintrag) => eintrag.context_id === "ctx" && eintrag.version_id === v1.version_id
1086
1086
  );
1087
- isTrue(found, `Auswahl fehlt im gelesenen Stand: ${show(snapshot.preferredHeads)}`);
1087
+ isTrue(!!selection, `Auswahl fehlt im gelesenen Stand: ${show(snapshot.preferredHeads)}`);
1088
+ equal(selection.revision, 1, `Revision der Auswahl: ${show(snapshot.preferredHeads)}`);
1089
+ },
1090
+ "setPreferredHead"
1091
+ );
1092
+ check(
1093
+ "Preferred Head",
1094
+ "laesst die Auswahl mit der gelesenen Revision wechseln",
1095
+ async (store) => {
1096
+ const elementId = await seedElement(store, "style", "A", "ctx");
1097
+ const v1 = await seedVersion(store, elementId);
1098
+ const v2 = await seedVersion(store, elementId, STYLE_PAYLOAD_V2, [
1099
+ { parent_version_id: v1.version_id, relation: "derived_from" }
1100
+ ]);
1101
+ ok(
1102
+ await store.setPreferredHead({
1103
+ elementId,
1104
+ contextId: "ctx",
1105
+ versionId: v1.version_id,
1106
+ expectedRevision: 0,
1107
+ selectedBy: "vertrag"
1108
+ }),
1109
+ "erste Auswahl"
1110
+ );
1111
+ const gelesen = await snapshotOf(store, elementId);
1112
+ const aktuell = gelesen.preferredHeads.find((e) => e.context_id === "ctx");
1113
+ ok(
1114
+ await store.setPreferredHead({
1115
+ elementId,
1116
+ contextId: "ctx",
1117
+ versionId: v2.version_id,
1118
+ expectedRevision: aktuell?.revision ?? 0,
1119
+ selectedBy: "vertrag"
1120
+ }),
1121
+ "zweite Auswahl mit gelesener Revision"
1122
+ );
1123
+ const danach = await snapshotOf(store, elementId);
1124
+ const gewechselt = danach.preferredHeads.find((e) => e.context_id === "ctx");
1125
+ equal(gewechselt?.version_id, v2.version_id, "Auswahl nach dem Wechsel");
1126
+ equal(gewechselt?.revision, 2, "Revision nach dem Wechsel");
1088
1127
  },
1089
1128
  "setPreferredHead"
1090
1129
  );
@@ -6,6 +6,12 @@ import { uploadFile } from "@huggingface/hub";
6
6
  var HF_BASE = "https://huggingface.co";
7
7
  var HF_REPO = "RolandSch/fa-app-state";
8
8
  var CURRENT_EVENT_VERSION = { major: 1, minor: 0 };
9
+ var SPEICHERBARE_BILDTYPEN = ["image/png", "image/jpeg", "image/webp"];
10
+ function bildEndungFuer(mimeType) {
11
+ if (mimeType === "image/png") return "png";
12
+ if (mimeType === "image/webp") return "webp";
13
+ return "jpg";
14
+ }
9
15
 
10
16
  // src/lib/hfEventLog.ts
11
17
  function treeUrl(namespace, subdir = "") {
@@ -333,7 +339,7 @@ async function hfLoadMetadata(token) {
333
339
  }
334
340
  }
335
341
  async function hfUploadImage(base64, id, token, mimeType = "image/jpeg") {
336
- const ext = mimeType === "image/png" ? "png" : "jpg";
342
+ const ext = bildEndungFuer(mimeType);
337
343
  const binary = atob(base64);
338
344
  const bytes = new Uint8Array(binary.length);
339
345
  for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);
@@ -375,12 +381,14 @@ async function hfLoadImageAsBase64(id, token, namespace, filename, on404, mimeTy
375
381
  const result2 = await fetchBase64(`images/${filename}`);
376
382
  return result2 === "ABORT" ? null : result2;
377
383
  }
378
- const ext = mimeType === "image/png" ? "png" : "jpg";
384
+ const ext = bildEndungFuer(mimeType);
379
385
  const result = await fetchBase64(`images/${id}.${ext}`);
380
386
  return result === "ABORT" ? null : result;
381
387
  }
382
388
 
383
389
  export {
390
+ SPEICHERBARE_BILDTYPEN,
391
+ bildEndungFuer,
384
392
  hfListDir,
385
393
  hfDownloadJsonByPath,
386
394
  hfDownloadBinaryByPath,