@rslsp1/fa-app-tools 2.0.86 → 2.0.87

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.
@@ -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,
@@ -5,12 +5,14 @@ import {
5
5
  resolvePreferredHead
6
6
  } from "./chunk-FUY2OCVC.mjs";
7
7
  import {
8
+ SPEICHERBARE_BILDTYPEN,
9
+ bildEndungFuer,
8
10
  hfLoadImageAsBase64,
9
11
  hfUploadImage,
10
12
  loadHFState,
11
13
  loadPendingEvents,
12
14
  writeHFEvent
13
- } from "./chunk-LFPOXNOZ.mjs";
15
+ } from "./chunk-NBUS7AWR.mjs";
14
16
 
15
17
  // src/lib/szenen/viewPort.ts
16
18
  function capabilitiesOf(port) {
@@ -11142,9 +11144,7 @@ var LEERER_BESTAND = {
11142
11144
  tags: { by_category: {}, all: [] },
11143
11145
  meta: { consolidatedAt: 0, version: 1 }
11144
11146
  };
11145
- function endungFuer(mimeType) {
11146
- return mimeType === "image/png" ? "png" : "jpg";
11147
- }
11147
+ var endungFuer = bildEndungFuer;
11148
11148
  function bildPfad(id, mimeType) {
11149
11149
  return `images/${id}.${endungFuer(mimeType)}`;
11150
11150
  }
@@ -11191,6 +11191,11 @@ function createHfImageStore(options) {
11191
11191
  bestand: bestandAbgleichen,
11192
11192
  async putWithId(id, base64, mimeType, titel) {
11193
11193
  const echterTyp = typAusBytes(base64, mimeType);
11194
+ if (!SPEICHERBARE_BILDTYPEN.includes(echterTyp)) {
11195
+ throw new Error(
11196
+ `Das Bild ${id} ist ${echterTyp}; der Bildbestand kann nur ${SPEICHERBARE_BILDTYPEN.join(", ")} wahrheitsgemaess ablegen. Es wurde nichts geschrieben.`
11197
+ );
11198
+ }
11194
11199
  await hfUploadImage(base64, id, token, echterTyp);
11195
11200
  await writeHFEvent(namespace, token, "image_added", {
11196
11201
  id,
@@ -25,7 +25,7 @@ import {
25
25
  setHFToken,
26
26
  tsFromEventPath,
27
27
  writeHFEvent
28
- } from "./chunk-LFPOXNOZ.mjs";
28
+ } from "./chunk-NBUS7AWR.mjs";
29
29
  export {
30
30
  HF_TOKEN_KEY,
31
31
  getHFToken,
package/dist/index.d.mts CHANGED
@@ -6,7 +6,7 @@ import { Node, Edge } from '@xyflow/react';
6
6
  import * as zustand_vanilla from 'zustand/vanilla';
7
7
  import { F as FeatureSliceId, b as SliceContract, a as PersistenceDescriptor, W as WorkspacePersistence, P as PersistedSlice, L as LoadResult, f as WriteResult, e as WorkspaceTabId, C as CommandResult, R as RequestContext, Q as QueryResult } from './contracts-DdYOMBl9.mjs';
8
8
 
9
- var version = "2.0.86";
9
+ var version = "2.0.87";
10
10
 
11
11
  declare function useOnClickOutside(ref: RefObject<HTMLElement | null>, handler: (e: MouseEvent | TouchEvent) => void): void;
12
12
 
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ import { Node, Edge } from '@xyflow/react';
6
6
  import * as zustand_vanilla from 'zustand/vanilla';
7
7
  import { F as FeatureSliceId, b as SliceContract, a as PersistenceDescriptor, W as WorkspacePersistence, P as PersistedSlice, L as LoadResult, f as WriteResult, e as WorkspaceTabId, C as CommandResult, R as RequestContext, Q as QueryResult } from './contracts-DdYOMBl9.js';
8
8
 
9
- var version = "2.0.86";
9
+ var version = "2.0.87";
10
10
 
11
11
  declare function useOnClickOutside(ref: RefObject<HTMLElement | null>, handler: (e: MouseEvent | TouchEvent) => void): void;
12
12
 
package/dist/index.js CHANGED
@@ -260,13 +260,19 @@ var init_project = __esm({
260
260
  });
261
261
 
262
262
  // src/lib/hfEventTypes.ts
263
- var HF_BASE, HF_REPO, CURRENT_EVENT_VERSION;
263
+ function bildEndungFuer(mimeType) {
264
+ if (mimeType === "image/png") return "png";
265
+ if (mimeType === "image/webp") return "webp";
266
+ return "jpg";
267
+ }
268
+ var HF_BASE, HF_REPO, CURRENT_EVENT_VERSION, SPEICHERBARE_BILDTYPEN;
264
269
  var init_hfEventTypes = __esm({
265
270
  "src/lib/hfEventTypes.ts"() {
266
271
  "use strict";
267
272
  HF_BASE = "https://huggingface.co";
268
273
  HF_REPO = "RolandSch/fa-app-state";
269
274
  CURRENT_EVENT_VERSION = { major: 1, minor: 0 };
275
+ SPEICHERBARE_BILDTYPEN = ["image/png", "image/jpeg", "image/webp"];
270
276
  }
271
277
  });
272
278
 
@@ -631,7 +637,7 @@ async function hfLoadMetadata(token) {
631
637
  }
632
638
  }
633
639
  async function hfUploadImage(base64, id, token, mimeType = "image/jpeg") {
634
- const ext = mimeType === "image/png" ? "png" : "jpg";
640
+ const ext = bildEndungFuer(mimeType);
635
641
  const binary = atob(base64);
636
642
  const bytes = new Uint8Array(binary.length);
637
643
  for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);
@@ -673,7 +679,7 @@ async function hfLoadImageAsBase64(id, token, namespace, filename, on404, mimeTy
673
679
  const result2 = await fetchBase64(`images/${filename}`);
674
680
  return result2 === "ABORT" ? null : result2;
675
681
  }
676
- const ext = mimeType === "image/png" ? "png" : "jpg";
682
+ const ext = bildEndungFuer(mimeType);
677
683
  const result = await fetchBase64(`images/${id}.${ext}`);
678
684
  return result === "ABORT" ? null : result;
679
685
  }
@@ -801,7 +807,7 @@ __export(index_exports, {
801
807
  module.exports = __toCommonJS(index_exports);
802
808
 
803
809
  // package.json
804
- var version = "2.0.86";
810
+ var version = "2.0.87";
805
811
 
806
812
  // src/hooks/useOnClickOutside.ts
807
813
  var import_react = require("react");
@@ -17441,14 +17447,13 @@ function createClientRunPort(options) {
17441
17447
  // src/lib/szenen/hfImageStore.ts
17442
17448
  init_hfStateService();
17443
17449
  init_hfEventLog();
17450
+ init_hfEventTypes();
17444
17451
  var LEERER_BESTAND = {
17445
17452
  metadata: [],
17446
17453
  tags: { by_category: {}, all: [] },
17447
17454
  meta: { consolidatedAt: 0, version: 1 }
17448
17455
  };
17449
- function endungFuer(mimeType) {
17450
- return mimeType === "image/png" ? "png" : "jpg";
17451
- }
17456
+ var endungFuer = bildEndungFuer;
17452
17457
  function bildPfad(id, mimeType) {
17453
17458
  return `images/${id}.${endungFuer(mimeType)}`;
17454
17459
  }
@@ -17495,6 +17500,11 @@ function createHfImageStore(options) {
17495
17500
  bestand: bestandAbgleichen,
17496
17501
  async putWithId(id, base64, mimeType, titel) {
17497
17502
  const echterTyp = typAusBytes(base64, mimeType);
17503
+ if (!SPEICHERBARE_BILDTYPEN.includes(echterTyp)) {
17504
+ throw new Error(
17505
+ `Das Bild ${id} ist ${echterTyp}; der Bildbestand kann nur ${SPEICHERBARE_BILDTYPEN.join(", ")} wahrheitsgemaess ablegen. Es wurde nichts geschrieben.`
17506
+ );
17507
+ }
17498
17508
  await hfUploadImage(base64, id, token, echterTyp);
17499
17509
  await writeHFEvent(namespace, token, "image_added", {
17500
17510
  id,
package/dist/index.mjs CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  SzenenView,
3
3
  applyEvents,
4
4
  createFlowSzenenViewPort
5
- } from "./chunk-DGFMONWO.mjs";
5
+ } from "./chunk-ZVHEHQ7A.mjs";
6
6
  import "./chunk-FUY2OCVC.mjs";
7
7
  import {
8
8
  exportProjectToZip,
@@ -28,10 +28,10 @@ import {
28
28
  setHFToken,
29
29
  tsFromEventPath,
30
30
  writeHFEvent
31
- } from "./chunk-LFPOXNOZ.mjs";
31
+ } from "./chunk-NBUS7AWR.mjs";
32
32
 
33
33
  // package.json
34
- var version = "2.0.86";
34
+ var version = "2.0.87";
35
35
 
36
36
  // src/hooks/useOnClickOutside.ts
37
37
  import { useEffect } from "react";
@@ -2309,7 +2309,7 @@ var ProjectSyncTab = ({
2309
2309
  {
2310
2310
  onClick: async () => {
2311
2311
  try {
2312
- const { hfDownloadProject: hfDownloadProject2 } = await import("./hfStateService-PZH2IDKF.mjs");
2312
+ const { hfDownloadProject: hfDownloadProject2 } = await import("./hfStateService-W7KO2FOH.mjs");
2313
2313
  const file = await hfDownloadProject2(p.path, hfToken);
2314
2314
  onHfLoad(file);
2315
2315
  } catch (e) {
@@ -6788,7 +6788,7 @@ function AvatarArchitectApp({ onGenerateImage, onGeneratePrompt, onDownload, onS
6788
6788
  onClick: async () => {
6789
6789
  setIsLoadingFromHF(true);
6790
6790
  try {
6791
- const { hfListProjects: hfListProjects2, hfDownloadProject: hfDownloadProject2 } = await import("./hfStateService-PZH2IDKF.mjs");
6791
+ const { hfListProjects: hfListProjects2, hfDownloadProject: hfDownloadProject2 } = await import("./hfStateService-W7KO2FOH.mjs");
6792
6792
  const projects = await hfListProjects2(hfToken);
6793
6793
  if (projects.length > 0) {
6794
6794
  const file = await hfDownloadProject2(projects[0].path, hfToken);
package/dist/szenen.js CHANGED
@@ -7566,6 +7566,12 @@ function createHfElementStore(options) {
7566
7566
  var HF_BASE = "https://huggingface.co";
7567
7567
  var HF_REPO = "RolandSch/fa-app-state";
7568
7568
  var CURRENT_EVENT_VERSION = { major: 1, minor: 0 };
7569
+ var SPEICHERBARE_BILDTYPEN = ["image/png", "image/jpeg", "image/webp"];
7570
+ function bildEndungFuer(mimeType) {
7571
+ if (mimeType === "image/png") return "png";
7572
+ if (mimeType === "image/webp") return "webp";
7573
+ return "jpg";
7574
+ }
7569
7575
 
7570
7576
  // src/lib/hfEventLog.ts
7571
7577
  function treeUrl(namespace, subdir = "") {
@@ -9308,7 +9314,7 @@ async function loadHFState(namespace, token) {
9308
9314
  };
9309
9315
  }
9310
9316
  async function hfUploadImage(base64, id, token, mimeType = "image/jpeg") {
9311
- const ext = mimeType === "image/png" ? "png" : "jpg";
9317
+ const ext = bildEndungFuer(mimeType);
9312
9318
  const binary = atob(base64);
9313
9319
  const bytes = new Uint8Array(binary.length);
9314
9320
  for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);
@@ -9350,7 +9356,7 @@ async function hfLoadImageAsBase64(id, token, namespace, filename, on404, mimeTy
9350
9356
  const result2 = await fetchBase64(`images/${filename}`);
9351
9357
  return result2 === "ABORT" ? null : result2;
9352
9358
  }
9353
- const ext = mimeType === "image/png" ? "png" : "jpg";
9359
+ const ext = bildEndungFuer(mimeType);
9354
9360
  const result = await fetchBase64(`images/${id}.${ext}`);
9355
9361
  return result === "ABORT" ? null : result;
9356
9362
  }
@@ -9430,9 +9436,7 @@ var LEERER_BESTAND = {
9430
9436
  tags: { by_category: {}, all: [] },
9431
9437
  meta: { consolidatedAt: 0, version: 1 }
9432
9438
  };
9433
- function endungFuer(mimeType) {
9434
- return mimeType === "image/png" ? "png" : "jpg";
9435
- }
9439
+ var endungFuer = bildEndungFuer;
9436
9440
  function bildPfad(id, mimeType) {
9437
9441
  return `images/${id}.${endungFuer(mimeType)}`;
9438
9442
  }
@@ -9479,6 +9483,11 @@ function createHfImageStore(options) {
9479
9483
  bestand: bestandAbgleichen,
9480
9484
  async putWithId(id, base64, mimeType, titel) {
9481
9485
  const echterTyp = typAusBytes(base64, mimeType);
9486
+ if (!SPEICHERBARE_BILDTYPEN.includes(echterTyp)) {
9487
+ throw new Error(
9488
+ `Das Bild ${id} ist ${echterTyp}; der Bildbestand kann nur ${SPEICHERBARE_BILDTYPEN.join(", ")} wahrheitsgemaess ablegen. Es wurde nichts geschrieben.`
9489
+ );
9490
+ }
9482
9491
  await hfUploadImage(base64, id, token, echterTyp);
9483
9492
  await writeHFEvent(namespace, token, "image_added", {
9484
9493
  id,
package/dist/szenen.mjs CHANGED
@@ -133,7 +133,7 @@ import {
133
133
  validateElementVersion,
134
134
  validatePayload,
135
135
  withReference
136
- } from "./chunk-DGFMONWO.mjs";
136
+ } from "./chunk-ZVHEHQ7A.mjs";
137
137
  import {
138
138
  ContractViolation,
139
139
  STYLE_PAYLOAD,
@@ -147,7 +147,7 @@ import {
147
147
  preferredVersionId,
148
148
  resolvePreferredHead
149
149
  } from "./chunk-FUY2OCVC.mjs";
150
- import "./chunk-LFPOXNOZ.mjs";
150
+ import "./chunk-NBUS7AWR.mjs";
151
151
 
152
152
  // src/lib/szenen/providerCheckStore.ts
153
153
  function collectProviderChecks(events) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rslsp1/fa-app-tools",
3
- "version": "2.0.86",
3
+ "version": "2.0.87",
4
4
  "description": "Shared tools and hooks for Fine Art flow apps",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",