@alwith/module-auth 0.1.8 → 0.1.10

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.
Files changed (203) hide show
  1. package/README.md +1 -1
  2. package/dist/chunk-01py4vpp.js +2 -0
  3. package/dist/chunk-1agdfzjz.js +2 -0
  4. package/dist/chunk-1mwjz4f1.js +2 -0
  5. package/dist/chunk-1sf9m7x2.js +2 -0
  6. package/dist/chunk-2j5re92x.js +2 -0
  7. package/dist/chunk-38vgcbpq.js +2 -0
  8. package/dist/chunk-3amxesw3.js +2 -0
  9. package/dist/chunk-3q1e1ksh.js +2 -0
  10. package/dist/chunk-3rpgxz1z.js +2 -0
  11. package/dist/chunk-3vpcfe38.js +2 -0
  12. package/dist/chunk-41jxjz9n.js +2 -0
  13. package/dist/chunk-4gegjx79.js +2 -0
  14. package/dist/chunk-4mwvph27.js +2 -0
  15. package/dist/chunk-5zpeb8cj.js +2 -0
  16. package/dist/chunk-6f02m6jw.js +2 -0
  17. package/dist/chunk-6t0bw1wy.js +2 -0
  18. package/dist/chunk-74hpp4me.js +2 -0
  19. package/dist/chunk-7pdpmxg2.js +2 -0
  20. package/dist/chunk-7y7stqn0.js +2 -0
  21. package/dist/chunk-8nzgysac.js +2 -0
  22. package/dist/chunk-8w0zccsf.js +0 -0
  23. package/dist/chunk-96emfz6b.js +2 -0
  24. package/dist/chunk-9h4j75af.js +2 -0
  25. package/dist/chunk-afy09ajr.js +2 -0
  26. package/dist/chunk-ax8zmvs0.js +2 -0
  27. package/dist/chunk-b5zfgr86.js +2 -0
  28. package/dist/chunk-b7v6g7a0.js +2 -0
  29. package/dist/chunk-bcyk6es8.js +2 -0
  30. package/dist/chunk-c9banqkx.js +2 -0
  31. package/dist/chunk-ctvwa8d3.js +2 -0
  32. package/dist/chunk-d13j3xks.js +2 -0
  33. package/dist/chunk-d4ezh3c4.js +6 -0
  34. package/dist/chunk-e20z911q.js +1 -0
  35. package/dist/chunk-enze3bpk.js +2 -0
  36. package/dist/chunk-ezj6gpm0.js +2 -0
  37. package/dist/chunk-f0awr1g7.js +2 -0
  38. package/dist/chunk-g8nah79y.js +2 -0
  39. package/dist/chunk-gq64get1.js +2 -0
  40. package/dist/chunk-gv5he3xg.js +2 -0
  41. package/dist/chunk-h994ssre.js +2 -0
  42. package/dist/chunk-hscsc9kx.js +2 -0
  43. package/dist/chunk-htw56xtp.js +2 -0
  44. package/dist/chunk-j03we9jz.js +2 -0
  45. package/dist/chunk-j2922k42.js +2 -0
  46. package/dist/chunk-jampyjt1.js +2 -0
  47. package/dist/chunk-jf77909y.js +2 -0
  48. package/dist/chunk-jppe84sk.js +2 -0
  49. package/dist/chunk-khnyadsg.js +0 -0
  50. package/dist/chunk-kqsxaxk8.js +2 -0
  51. package/dist/chunk-kwq26qhs.js +2 -0
  52. package/dist/chunk-m3e7wah7.js +2 -0
  53. package/dist/chunk-m96z2xh6.js +2 -0
  54. package/dist/chunk-mdqxdcxh.js +2 -0
  55. package/dist/chunk-mfrnyj0b.js +2 -0
  56. package/dist/chunk-mjsqb1wk.js +1 -0
  57. package/dist/chunk-nbfhs21c.js +2 -0
  58. package/dist/chunk-pbwt3qj9.js +0 -0
  59. package/dist/chunk-pe1mn10v.js +2 -0
  60. package/dist/chunk-pha0eyam.js +2 -0
  61. package/dist/chunk-pwsarey8.js +2 -0
  62. package/dist/chunk-qd5jhh2h.js +1 -0
  63. package/dist/chunk-qy364wgy.js +2 -0
  64. package/dist/chunk-rerywpwe.js +2 -0
  65. package/dist/chunk-rfxpf1eq.js +2 -0
  66. package/dist/chunk-rrhhytq1.js +2 -0
  67. package/dist/chunk-t6snsees.js +2 -0
  68. package/dist/chunk-t858h8ch.js +2 -0
  69. package/dist/chunk-tvmvzc41.js +2 -0
  70. package/dist/chunk-v5akzbxg.js +2 -0
  71. package/dist/chunk-v890qhc2.js +1 -0
  72. package/dist/chunk-v9czb1e6.js +2 -0
  73. package/dist/chunk-vt1sfk87.js +2 -0
  74. package/dist/chunk-w5yer870.js +2 -0
  75. package/dist/chunk-wa475kmq.js +2 -0
  76. package/dist/chunk-wfsdbf7j.js +2 -0
  77. package/dist/chunk-x61q358n.js +2 -0
  78. package/dist/chunk-xrw9s1th.js +2 -0
  79. package/dist/chunk-zar89jcs.js +3 -0
  80. package/dist/chunk-zkwggfj2.js +2 -0
  81. package/dist/client.d.ts +1 -1
  82. package/dist/client.js +1 -1
  83. package/dist/index.d.ts +6 -6
  84. package/dist/index.js +1 -1
  85. package/dist/oauth.js +1 -1
  86. package/dist/password.js +1 -1
  87. package/dist/pets/assets.d.ts +8 -8
  88. package/dist/pets/assets.js +1 -1
  89. package/dist/pets/client.d.ts +2 -2
  90. package/dist/pets/client.js +1 -1
  91. package/dist/pets/core/engine.d.ts +2 -2
  92. package/dist/pets/core/engine.js +1 -1
  93. package/dist/pets/core/host.d.ts +3 -3
  94. package/dist/pets/core/host.js +1 -1
  95. package/dist/pets/core/index.d.ts +11 -11
  96. package/dist/pets/core/index.js +1 -1
  97. package/dist/pets/core/lib/account-state.d.ts +1 -1
  98. package/dist/pets/core/lib/account-state.js +1 -1
  99. package/dist/pets/core/lib/bubble-outline.js +1 -1
  100. package/dist/pets/core/lib/draw-result.d.ts +1 -1
  101. package/dist/pets/core/lib/draw-result.js +1 -1
  102. package/dist/pets/core/lib/endpoints.d.ts +1 -1
  103. package/dist/pets/core/lib/endpoints.js +1 -1
  104. package/dist/pets/core/lib/gacha-pools.d.ts +1 -1
  105. package/dist/pets/core/lib/gacha-pools.js +1 -1
  106. package/dist/pets/core/lib/loading-progress.js +1 -1
  107. package/dist/pets/core/lib/pet-animation-sync.d.ts +2 -2
  108. package/dist/pets/core/lib/pet-animation-sync.js +1 -1
  109. package/dist/pets/core/lib/pet-bubble-state.d.ts +1 -1
  110. package/dist/pets/core/lib/pet-bubble-state.js +1 -1
  111. package/dist/pets/core/lib/pet-drag.d.ts +2 -2
  112. package/dist/pets/core/lib/pet-drag.js +1 -1
  113. package/dist/pets/core/lib/pet-presentation.d.ts +3 -3
  114. package/dist/pets/core/lib/pet-presentation.js +1 -1
  115. package/dist/pets/core/lib/pet-session-context.js +1 -1
  116. package/dist/pets/core/lib/preload-images.js +1 -1
  117. package/dist/pets/core/lib/presentation-readiness.js +1 -1
  118. package/dist/pets/core/lib/rarity.d.ts +1 -1
  119. package/dist/pets/core/lib/rarity.js +1 -1
  120. package/dist/pets/core/lib/recharge.js +1 -1
  121. package/dist/pets/core/lib/reply-submission.d.ts +1 -1
  122. package/dist/pets/core/lib/reply-submission.js +1 -1
  123. package/dist/pets/core/lib/resource-sync.js +1 -1
  124. package/dist/pets/core/lib/runtime-types.d.ts +1 -1
  125. package/dist/pets/core/lib/settings.js +1 -1
  126. package/dist/pets/core/lib/sprite-config.d.ts +2 -2
  127. package/dist/pets/core/lib/sprite-config.js +1 -1
  128. package/dist/pets/core/lib/vibemon-resources.d.ts +1 -1
  129. package/dist/pets/core/lib/vibemon-resources.js +1 -1
  130. package/dist/pets/core/lib/view-request.js +1 -1
  131. package/dist/pets/core/lib/window-frame.d.ts +1 -1
  132. package/dist/pets/core/lib/window-frame.js +1 -1
  133. package/dist/pets/core/lib/window-manager.d.ts +1 -1
  134. package/dist/pets/core/lib/window-manager.js +1 -1
  135. package/dist/pets/core/session-icon.js +1 -5
  136. package/dist/pets/core/types.js +1 -1
  137. package/dist/pets/host.js +1 -1
  138. package/dist/pets/index.d.ts +6 -6
  139. package/dist/pets/index.js +1 -1
  140. package/dist/pets/react/assets.js +1 -1
  141. package/dist/pets/react/components/album-view.d.ts +1 -1
  142. package/dist/pets/react/components/album-view.js +1 -1
  143. package/dist/pets/react/components/back-to-home.js +1 -1
  144. package/dist/pets/react/components/equip-view.d.ts +1 -1
  145. package/dist/pets/react/components/equip-view.js +1 -1
  146. package/dist/pets/react/components/gem-balance.js +1 -1
  147. package/dist/pets/react/components/home-view.js +1 -1
  148. package/dist/pets/react/components/insufficient-points-dialog.js +1 -1
  149. package/dist/pets/react/components/intro-overlay.js +1 -1
  150. package/dist/pets/react/components/loading-view.js +1 -1
  151. package/dist/pets/react/components/onboarding-guide.js +1 -1
  152. package/dist/pets/react/components/pet-bubble-background.js +1 -1
  153. package/dist/pets/react/components/pet-lounge.js +1 -1
  154. package/dist/pets/react/components/pet-mode-button.js +1 -1
  155. package/dist/pets/react/components/pet-window.js +1 -1
  156. package/dist/pets/react/components/pull-overlay.d.ts +1 -1
  157. package/dist/pets/react/components/pull-overlay.js +1 -1
  158. package/dist/pets/react/components/pull-video.js +1 -1
  159. package/dist/pets/react/components/pull-view.d.ts +1 -1
  160. package/dist/pets/react/components/pull-view.js +1 -1
  161. package/dist/pets/react/components/quick-reply.js +1 -2
  162. package/dist/pets/react/components/session-icon.d.ts +2 -2
  163. package/dist/pets/react/components/session-icon.js +1 -1
  164. package/dist/pets/react/components/single-pet-toast.js +1 -1
  165. package/dist/pets/react/components/sprite-renderer.d.ts +1 -1
  166. package/dist/pets/react/components/sprite-renderer.js +1 -1
  167. package/dist/pets/react/components/vibemon-empty-state.js +1 -1
  168. package/dist/pets/react/components/vibemon-header.js +1 -1
  169. package/dist/pets/react/components/vibemon-page.js +1 -1
  170. package/dist/pets/react/components/vibemon-scene.js +1 -1
  171. package/dist/pets/react/components/video-fader.js +1 -1
  172. package/dist/pets/react/components/wish-button.js +1 -1
  173. package/dist/pets/react/index.d.ts +5 -5
  174. package/dist/pets/react/index.js +1 -1
  175. package/dist/pets/react/lib/account-state.d.ts +1 -1
  176. package/dist/pets/react/lib/account-state.js +1 -1
  177. package/dist/pets/react/lib/card-image.js +1 -1
  178. package/dist/pets/react/lib/resource-sync.d.ts +2 -2
  179. package/dist/pets/react/lib/resource-sync.js +1 -1
  180. package/dist/pets/react/lib/season.js +1 -1
  181. package/dist/pets/react/lib/use-season.d.ts +1 -1
  182. package/dist/pets/react/lib/use-season.js +1 -1
  183. package/dist/pets/react/lib/utils.js +1 -1
  184. package/dist/pets/react/ui/button.d.ts +2 -2
  185. package/dist/pets/react/ui/button.js +1 -1
  186. package/dist/pets/react/ui/card.js +1 -1
  187. package/dist/pets/react/ui/input-group.d.ts +3 -3
  188. package/dist/pets/react/ui/input-group.js +1 -1
  189. package/dist/pets/react/ui/textarea.js +1 -1
  190. package/dist/pets/resource-package.d.ts +2 -2
  191. package/dist/pets/resource-package.js +1 -1
  192. package/dist/pets/resources.d.ts +5 -5
  193. package/dist/pets/resources.js +1 -1
  194. package/dist/pets/selection.d.ts +1 -1
  195. package/dist/pets/selection.js +1 -1
  196. package/dist/pets/sheet-layout.js +1 -1
  197. package/dist/pets/types.js +1 -0
  198. package/dist/state.d.ts +2 -2
  199. package/dist/state.js +1 -1
  200. package/dist/token-storage.d.ts +1 -1
  201. package/dist/token-storage.js +1 -1
  202. package/dist/types.js +1 -0
  203. package/package.json +13 -12
@@ -1 +1 @@
1
- import{VibemonPage as t}from"./components/vibemon-page.js";import{PetWindow as m}from"./components/pet-window.js";import{PetQuickReply as P}from"./components/quick-reply.js";import{PetModeButton as n}from"./components/pet-mode-button.js";import{PetLounge as i}from"./components/pet-lounge.js";export{t as PetCenter,i as PetLounge,n as PetModeButton,P as PetQuickReply,m as PetWindow};
1
+ import"../../chunk-htw56xtp.js";import"../../chunk-jampyjt1.js";import"../../chunk-vt1sfk87.js";import"../../chunk-pe1mn10v.js";import"../../chunk-9h4j75af.js";import"../../chunk-01py4vpp.js";import"../../chunk-6t0bw1wy.js";import"../../chunk-tvmvzc41.js";import"../../chunk-pbwt3qj9.js";import"../../chunk-rerywpwe.js";import"../../chunk-afy09ajr.js";import"../../chunk-ax8zmvs0.js";import"../../chunk-4gegjx79.js";import"../../chunk-nbfhs21c.js";import"../../chunk-3amxesw3.js";import"../../chunk-qy364wgy.js";import"../../chunk-khnyadsg.js";import"../../chunk-6f02m6jw.js";import"../../chunk-rfxpf1eq.js";import"../../chunk-h994ssre.js";import"../../chunk-ctvwa8d3.js";import"../../chunk-1agdfzjz.js";import"../../chunk-jppe84sk.js";import"../../chunk-xrw9s1th.js";import"../../chunk-mjsqb1wk.js";import"../../chunk-t6snsees.js";import"../../chunk-wa475kmq.js";import"../../chunk-wfsdbf7j.js";import"../../chunk-qd5jhh2h.js";import"../../chunk-j2922k42.js";import"../../chunk-mfrnyj0b.js";import"../../chunk-t858h8ch.js";import"../../chunk-w5yer870.js";import"../../chunk-rrhhytq1.js";import"../../chunk-v9czb1e6.js";import"../../chunk-41jxjz9n.js";import"../../chunk-j03we9jz.js";import"../../chunk-zkwggfj2.js";import"../../chunk-4mwvph27.js";import"../../chunk-pwsarey8.js";import"../../chunk-3rpgxz1z.js";import"../../chunk-x61q358n.js";import"../../chunk-hscsc9kx.js";import"../../chunk-b5zfgr86.js";import"../../chunk-bcyk6es8.js";import"../../chunk-b7v6g7a0.js";import"../../chunk-m3e7wah7.js";import"../../chunk-g8nah79y.js";import"../../chunk-7pdpmxg2.js";import{zt}from"../../chunk-enze3bpk.js";import"../../chunk-7y7stqn0.js";import"../../chunk-gv5he3xg.js";import"../../chunk-mdqxdcxh.js";import"../../chunk-3vpcfe38.js";import"../../chunk-v5akzbxg.js";import"../../chunk-96emfz6b.js";import"../../chunk-kwq26qhs.js";import"../../chunk-1sf9m7x2.js";import"../../chunk-8nzgysac.js";import{Gt}from"../../chunk-kqsxaxk8.js";import"../../chunk-pha0eyam.js";import"../../chunk-v890qhc2.js";import"../../chunk-e20z911q.js";import"../../chunk-f0awr1g7.js";import"../../chunk-38vgcbpq.js";import"../../chunk-d4ezh3c4.js";import"../../chunk-3q1e1ksh.js";import{Ft}from"../../chunk-zar89jcs.js";import{$t}from"../../chunk-1mwjz4f1.js";import"../../chunk-2j5re92x.js";import"../../chunk-gq64get1.js";import{Ht}from"../../chunk-5zpeb8cj.js";export{zt as PetCenter,Ht as PetLounge,$t as PetModeButton,Ft as PetQuickReply,Gt as PetWindow};
@@ -1,2 +1,2 @@
1
- export * from "../../core/lib/account-state.js";
1
+ export * from "../../core/lib/account-state";
2
2
  export declare const useVibemonState: () => import("../../core/lib/settings").PetAccountState;
@@ -1 +1 @@
1
- import{useSyncExternalStore as t}from"react";import{currentState as r}from"../../core/lib/account-state.js";import{subscribeSettings as e}from"../../core/lib/settings.js";export*from"../../core/lib/account-state.js";var n=()=>t(e,r);export{n as useVibemonState};
1
+ import{d}from"../../../chunk-rfxpf1eq.js";import{a,X,Z,h,de}from"../../../chunk-6f02m6jw.js";import"../../../chunk-01py4vpp.js";import"../../../chunk-khnyadsg.js";import"../../../chunk-pbwt3qj9.js";import"../../../chunk-htw56xtp.js";import"../../../chunk-qy364wgy.js";import"../../../chunk-afy09ajr.js";import"../../../chunk-3amxesw3.js";import"../../../chunk-nbfhs21c.js";import"../../../chunk-ax8zmvs0.js";import"../../../chunk-rerywpwe.js";import"../../../chunk-4gegjx79.js";export{X as currentState,de as equipVibemonAfterDraw,a as getVibemonScopeSync,Z as getVibemonState,h as updateVibemonState,d as useVibemonState};
@@ -1 +1 @@
1
- import{placeholderCard as e}from"../assets.js";var o=["https://static.alwith.ai/","https://static-alwith-ai-dev.tos-ap-southeast-1.bytepluses.com/"],i="x-tos-process=image/format,webp",a=e;function r(t){if(!t)return a;if(!o.some((s)=>t.startsWith(s)))return t;if(t.includes("x-tos-process="))return t;return`${t}${t.includes("?")?"&":"?"}${i}`}export{r as cardThumb};
1
+ import{i}from"../../../chunk-h994ssre.js";import"../../../chunk-tvmvzc41.js";export{i as cardThumb};
@@ -1,5 +1,5 @@
1
- import { type ResourceSyncStatus } from "../../core/lib/resource-sync.js";
1
+ import { type ResourceSyncStatus } from "../../core/lib/resource-sync";
2
2
  export declare const useVibemonSyncStore: <T>(selector: (state: {
3
3
  status: ResourceSyncStatus;
4
4
  }) => T) => T;
5
- export { syncVibemonResources } from "../../core/lib/resource-sync.js";
5
+ export { syncVibemonResources } from "../../core/lib/resource-sync";
@@ -1 +1 @@
1
- import{useStore as e}from"zustand";import{vibemonSyncStore as r}from"../../core/lib/resource-sync.js";import{syncVibemonResources as i}from"../../core/lib/resource-sync.js";var n=(o)=>e(r,o);export{i as syncVibemonResources,n as useVibemonSyncStore};
1
+ import{Ue}from"../../../chunk-1agdfzjz.js";import{te}from"../../../chunk-ctvwa8d3.js";import"../../../chunk-khnyadsg.js";import"../../../chunk-pbwt3qj9.js";import"../../../chunk-htw56xtp.js";import"../../../chunk-qy364wgy.js";import"../../../chunk-afy09ajr.js";import"../../../chunk-3amxesw3.js";import"../../../chunk-nbfhs21c.js";import"../../../chunk-ax8zmvs0.js";import"../../../chunk-rerywpwe.js";import"../../../chunk-4gegjx79.js";export{te as syncVibemonResources,Ue as useVibemonSyncStore};
@@ -1 +1 @@
1
- import{SolarTime as u}from"tyme4ts";var s={立春:"spring",雨水:"spring",惊蛰:"spring",春分:"spring",清明:"spring",谷雨:"spring",立夏:"summer",小满:"summer",芒种:"summer",夏至:"summer",小暑:"summer",大暑:"summer",立秋:"autumn",处暑:"autumn",白露:"autumn",秋分:"autumn",寒露:"autumn",霜降:"autumn",立冬:"winter",小雪:"winter",大雪:"winter",冬至:"winter",小寒:"winter",大寒:"winter"},i={spring:"autumn",summer:"winter",autumn:"spring",winter:"summer"};function g(e=new Date,m="north"){let t=new Date(e.getTime()+28800000),r=u.fromYmdHms(t.getUTCFullYear(),t.getUTCMonth()+1,t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()).getTerm().getName(),n=s[r];if(!n)throw Error(`Unknown solar term: ${r}`);return m==="south"?i[n]:n}export{g as currentSeason};
1
+ import{ke}from"../../../chunk-2j5re92x.js";export{ke as currentSeason};
@@ -1,2 +1,2 @@
1
- import { type Season } from "./season.js";
1
+ import { type Season } from "./season";
2
2
  export declare function useSeason(): Season;
@@ -1 +1 @@
1
- import{currentSeason as r}from"./season.js";var i=new Set(["Antarctica","Australia","Pacific/Auckland","Pacific/Chatham","Pacific/Fiji","Pacific/Noumea","Pacific/Port_Moresby","Pacific/Guadalcanal","Pacific/Tongatapu","Pacific/Apia","Pacific/Tahiti","America/Sao_Paulo","America/Argentina","America/Santiago","America/Montevideo","America/Asuncion","America/La_Paz","America/Lima","America/Recife","America/Bahia","America/Cuiaba","America/Campo_Grande","Africa/Johannesburg","Africa/Maputo","Africa/Windhoek","Africa/Harare","Africa/Lusaka","Africa/Gaborone","Africa/Luanda","Africa/Dar_es_Salaam","Indian/Antananarivo","Indian/Mauritius","Indian/Reunion"]);function c(){let a=Intl.DateTimeFormat().resolvedOptions().timeZone;if(!a)return"north";let e=a.split("/")[0];if(i.has(a)||i.has(e))return"south";let n=a.split("/").slice(0,2).join("/");return i.has(n)?"south":"north"}function t(){return r(new Date,c())}export{t as useSeason};
1
+ import{Ee}from"../../../chunk-gq64get1.js";import"../../../chunk-2j5re92x.js";export{Ee as useSeason};
@@ -1 +1 @@
1
- import{cn as c}from"cn";export{c as cn};
1
+ import{o}from"../../../chunk-xrw9s1th.js";export{o as cn};
@@ -1,8 +1,8 @@
1
1
  import { Button as ButtonPrimitive } from "@base-ui/react/button";
2
2
  import { type VariantProps } from "class-variance-authority";
3
3
  declare const buttonVariants: (props?: ({
4
- variant?: "link" | "default" | "outline" | "secondary" | "ghost" | "destructive" | null | undefined;
5
- size?: "icon" | "default" | "xs" | "sm" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
4
+ variant?: "default" | "destructive" | "ghost" | "link" | "outline" | "secondary" | null | undefined;
5
+ size?: "default" | "icon" | "icon-lg" | "icon-sm" | "icon-xs" | "lg" | "sm" | "xs" | null | undefined;
6
6
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
7
  declare function Button({ className, variant, size, ...props }: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>): import("react").JSX.Element;
8
8
  export { Button, buttonVariants };
@@ -1 +1 @@
1
- import{jsx as a}from"react/jsx-runtime";import{Button as n}from"@base-ui/react/button";import{cva as d}from"class-variance-authority";import{cn as o}from"cn";var s=d("group/button focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 inline-flex shrink-0 items-center justify-center rounded-md border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:ring-3 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:ring-3 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50 shadow-xs",secondary:"bg-secondary text-secondary-foreground aria-expanded:bg-secondary aria-expanded:text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)]",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 gap-1.5 px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),8px)] px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 gap-1 rounded-[min(var(--radius-md),10px)] px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5",lg:"h-10 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-9","icon-xs":"size-6 rounded-[min(var(--radius-md),8px)] in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-md","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function g({className:e,variant:r="default",size:i="default",...t}){return a(n,{"data-slot":"button",className:o(s({variant:r,size:i,className:e})),...t})}export{g as Button,s as buttonVariants};
1
+ import{Qt,t}from"../../../chunk-mjsqb1wk.js";export{t as Button,Qt as buttonVariants};
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{cn as d}from"cn";function c({className:a,size:r="default",...e}){return t("div",{"data-slot":"card","data-size":r,className:d("group/card bg-card text-card-foreground ring-foreground/10 flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl py-(--card-spacing) text-sm shadow-xs ring-1 [--card-spacing:--spacing(6)] has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(4)] *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",a),...e})}function n({className:a,...r}){return t("div",{"data-slot":"card-header",className:d("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",a),...r})}function i({className:a,...r}){return t("div",{"data-slot":"card-title",className:d("font-heading text-base leading-normal font-medium group-data-[size=sm]/card:text-sm",a),...r})}function l({className:a,...r}){return t("div",{"data-slot":"card-description",className:d("text-muted-foreground text-sm",a),...r})}function u({className:a,...r}){return t("div",{"data-slot":"card-action",className:d("col-start-2 row-span-2 row-start-1 self-start justify-self-end",a),...r})}function g({className:a,...r}){return t("div",{"data-slot":"card-content",className:d("flex flex-col gap-3 px-(--card-spacing)",a),...r})}function p({className:a,...r}){return t("div",{"data-slot":"card-footer",className:d("flex items-center rounded-b-xl px-(--card-spacing) [.border-t]:pt-(--card-spacing)",a),...r})}export{c as Card,u as CardAction,g as CardContent,l as CardDescription,p as CardFooter,n as CardHeader,i as CardTitle};
1
+ import{je,hn,bn,wn,vn,yn,xn}from"../../../chunk-qd5jhh2h.js";export{je as Card,vn as CardAction,yn as CardContent,wn as CardDescription,xn as CardFooter,hn as CardHeader,bn as CardTitle};
@@ -1,13 +1,13 @@
1
1
  import { type VariantProps } from "class-variance-authority";
2
2
  import * as React from "react";
3
- import { Button } from "./button.js";
3
+ import { Button } from "./button";
4
4
  declare function InputGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
5
5
  declare const inputGroupAddonVariants: (props?: ({
6
- align?: "inline-start" | "inline-end" | "block-start" | "block-end" | null | undefined;
6
+ align?: "block-end" | "block-start" | "inline-end" | "inline-start" | null | undefined;
7
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
8
  declare function InputGroupAddon({ className, align, ...props }: React.ComponentProps<"div"> & VariantProps<typeof inputGroupAddonVariants>): React.JSX.Element;
9
9
  declare const inputGroupButtonVariants: (props?: ({
10
- size?: "xs" | "sm" | "icon-xs" | "icon-sm" | null | undefined;
10
+ size?: "icon-sm" | "icon-xs" | "sm" | "xs" | null | undefined;
11
11
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
12
  declare function InputGroupButton({ className, type, variant, size, ...props }: Omit<React.ComponentProps<typeof Button>, "size" | "type"> & VariantProps<typeof inputGroupButtonVariants> & {
13
13
  type?: "button" | "submit" | "reset";
@@ -1 +1 @@
1
- import{jsx as n}from"react/jsx-runtime";import{cva as s}from"class-variance-authority";import{cn as o}from"cn";import{Button as u}from"./button.js";import{Textarea as l}from"./textarea.js";function m({className:a,...t}){return n("div",{"data-slot":"input-group",role:"group",className:o("group/input-group border-input has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-destructive/20 dark:bg-input/30 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 relative flex h-9 w-full min-w-0 items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5",a),...t})}var d=s("text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",{variants:{align:{"inline-start":"order-first pl-2 has-[>button]:-ml-1 has-[>kbd]:ml-[-0.15rem]","inline-end":"order-last pr-2 has-[>button]:-mr-1 has-[>kbd]:mr-[-0.15rem]","block-start":"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2","block-end":"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2"}},defaultVariants:{align:"inline-start"}});function x({className:a,align:t="inline-start",...i}){return n("div",{role:"group","data-slot":"input-group-addon","data-align":t,className:o(d({align:t}),a),onClick:(r)=>{if(r.target.closest("button"))return;r.currentTarget.parentElement?.querySelector("input")?.focus()},...i})}var p=s("flex items-center gap-2 text-sm shadow-none",{variants:{size:{xs:"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",sm:"","icon-xs":"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0","icon-sm":"size-8 p-0 has-[>svg]:p-0"}},defaultVariants:{size:"xs"}});function v({className:a,type:t="button",variant:i="ghost",size:r="xs",...e}){return n(u,{type:t,"data-size":r,variant:i,className:o(p({size:r}),a),...e})}function k({className:a,...t}){return n(l,{"data-slot":"input-group-control",className:o("flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent",a),...t})}export{m as InputGroup,x as InputGroupAddon,v as InputGroupButton,k as InputGroupTextarea};
1
+ import{De,Le,V,Oe}from"../../../chunk-e20z911q.js";import"../../../chunk-v890qhc2.js";import"../../../chunk-mjsqb1wk.js";export{De as InputGroup,Le as InputGroupAddon,V as InputGroupButton,Oe as InputGroupTextarea};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{cn as a}from"cn";function n({className:r,...i}){return e("textarea",{"data-slot":"textarea",className:a("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-2.5 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-3 md:text-sm",r),...i})}export{n as Textarea};
1
+ import{qe}from"../../../chunk-v890qhc2.js";export{qe as Textarea};
@@ -1,5 +1,5 @@
1
- import type { PetAssetsHost } from "./host.js";
2
- import { type SheetLayout } from "./sheet-layout.js";
1
+ import type { PetAssetsHost } from "./host";
2
+ import { type SheetLayout } from "./sheet-layout";
3
3
  export declare const IMAGE_ASSETS: readonly ["cover", "gacha", "multi_draw", "icon", "background", "pool_card", "sidebar_selected", "sidebar_hover", "sidebar_unselected"];
4
4
  export type ImageAsset = (typeof IMAGE_ASSETS)[number];
5
5
  export interface PackageAsset {
@@ -1 +1 @@
1
- import{Unzip as j,UnzipInflate as k}from"fflate";import{parseSheetLayout as A}from"./sheet-layout.js";var z=["cover","gacha","multi_draw","icon","background","pool_card","sidebar_selected","sidebar_hover","sidebar_unselected"],g=209715200,d=65536,E=new TextDecoder("utf-8",{fatal:!0});function P(e){return e.length>0&&!/[\\\u0000-\u001f:]/.test(e)&&e.split("/").every((n)=>n!==""&&n!=="."&&n!=="..")}async function Z(e){let n=await crypto.subtle.digest("SHA-256",new Uint8Array(e).buffer);return Array.from(new Uint8Array(n),(a)=>a.toString(16).padStart(2,"0")).join("")}function _(e){if(e.length>d)throw Error("Vibemon manifest exceeds 64 KiB");let n=JSON.parse(E.decode(e));if(n?.format_version!==1||!n.assets||typeof n.assets!=="object"||Array.isArray(n.assets))throw Error("Invalid Vibemon package manifest");let a=Object.entries(n.assets);if(a.length>11)throw Error("Too many Vibemon assets");let o=new Set;for(let[,t]of a){if(!t||typeof t.path!=="string"||!P(t.path)||t.path==="manifest.json"||typeof t.sha256!=="string"||!/^[a-f0-9]{64}$/.test(t.sha256)||o.has(t.path))throw Error("Invalid Vibemon asset reference");o.add(t.path)}if(Boolean(n.assets.sheet)!==Boolean(n.assets.layout))throw Error("Vibemon animation requires both sheet and layout");return n}function M(e){let n=new DataView(e.buffer,e.byteOffset,e.byteLength),a=(r,f)=>String.fromCharCode(...e.subarray(r,r+f)),o="",t=0,s=0;if(e.length>=24&&e[0]===137&&a(1,3)==="PNG")o="image/png",t=n.getUint32(16),s=n.getUint32(20);else if(e.length>=10&&/GIF8[79]a/.test(a(0,6)))o="image/gif",t=n.getUint16(6,!0),s=n.getUint16(8,!0);else if(e.length>=30&&a(0,4)==="RIFF"&&a(8,4)==="WEBP"){o="image/webp";let r=a(12,4);if(r==="VP8X")t=1+(n.getUint32(24,!0)&16777215),s=1+(e[27]|e[28]<<8|e[29]<<16);else if(r==="VP8L"&&e[20]===47){let f=n.getUint32(21,!0);t=1+(f&16383),s=1+(f>>>14&16383)}else if(r==="VP8 "&&e[23]===157&&e[24]===1&&e[25]===42)t=n.getUint16(26,!0)&16383,s=n.getUint16(28,!0)&16383}else if(e.length>4&&e[0]===255&&e[1]===216){o="image/jpeg";for(let r=2;r+8<e.length;){if(e[r++]!==255)break;while(e[r]===255)r++;let f=e[r++];if(f===217||f===218)break;if(f===1||f>=208&&f<=215)continue;let c=n.getUint16(r);if(c<2||r+c>e.length)break;if([192,193,194,195,197,198,199,201,202,203,205,206,207].includes(f)){s=n.getUint16(r+3),t=n.getUint16(r+5);break}r+=c}}if(!t||!s||t>16384||s>16384)throw Error("Invalid or unsupported Vibemon image dimensions");return{mime:o,width:t,height:s}}async function O(e,n,a){let o=0,t=null,s=null;for(let[r,f]of Object.entries(e.assets)){let c=await n(f.path);if(c===null||await Z(c)!==f.sha256)throw Error(`Vibemon asset checksum mismatch: ${r}`);if(o+=c.length,o>g)throw Error("Vibemon resource expansion limit exceeded");if(r==="layout"){if(c.length>d)throw Error("Vibemon layout exceeds 64 KiB");t=A(E.decode(c))}else if(r==="sheet"||z.includes(r)){let h=M(c);if(await a?.(c,h.mime),r==="sheet")s=h}}if(t&&s&&t.states.some((r)=>r.frames*t.frameWidth>s.width||(r.row+1)*t.frameHeight>s.height))throw Error("Vibemon animation exceeds the spritesheet");return t}async function L(e,n){if(e.length>g)throw Error("Vibemon ZIP exceeds 200 MiB");let a=new DataView(e.buffer,e.byteOffset,e.byteLength),o=e.length-22;while(o>=Math.max(0,e.length-65557)&&a.getUint32(o,!0)!==101010256)o--;if(o<0||e.length<22||a.getUint32(o,!0)!==101010256||o+22+a.getUint16(o+20,!0)!==e.length||a.getUint16(o+4,!0)!==0||a.getUint16(o+6,!0)!==0||a.getUint32(o+16,!0)+a.getUint32(o+12,!0)!==o)throw Error("Incomplete or unsupported Vibemon ZIP");let t=new Map,s=new Set,r=0,f=0,c=new j((i)=>{let l=i.name.endsWith("/"),u=l?i.name.slice(0,-1):i.name;if(!P(u)||s.has(u)||s.size>=44)throw Error("Invalid or duplicate Vibemon ZIP path");if((i.originalSize??0)>g)throw Error("Vibemon ZIP expansion limit exceeded");s.add(u);let p=[],m=0;i.ondata=(x,w,S)=>{if(x)throw x;if(r+=w.length,m+=w.length,r>g||(i.name==="manifest.json"||i.name.endsWith(".json"))&&m>d)throw Error("Vibemon ZIP expansion limit exceeded");if(p.push(w),S){let I=new Uint8Array(m),U=0;for(let V of p)I.set(V,U),U+=V.length;if(l){if(m!==0)throw Error("Invalid Vibemon ZIP directory")}else{if(t.size>=12)throw Error("Too many Vibemon ZIP files");t.set(i.name,I)}f++}},i.start()});c.register(k);for(let i=0;i<e.length;i+=65536)if(c.push(e.subarray(i,i+65536),i+65536>=e.length),i>0&&i%1048576===0)await new Promise((l)=>setTimeout(l,0));if(f!==s.size||s.size!==a.getUint16(o+10,!0)||!t.has("manifest.json"))throw Error("Incomplete Vibemon ZIP");let h=_(t.get("manifest.json")),b=new Set(["manifest.json",...Object.values(h.assets).map((i)=>i.path)]);if([...t.keys()].some((i)=>!b.has(i)))throw Error("Unexpected Vibemon ZIP file");let v=await O(h,(i)=>Promise.resolve(t.get(i)??null),n);return{files:t,manifest:h,layout:v}}export{z as IMAGE_ASSETS,g as PACKAGE_LIMIT,M as imageInfo,_ as parseManifest,P as resourcePath,Z as sha256,L as unpackResourcePackage,O as validatePackageFiles};
1
+ import{y,Se,ie,se,Pe,k,_e,qt}from"../chunk-nbfhs21c.js";import"../chunk-4gegjx79.js";export{y as IMAGE_ASSETS,Se as PACKAGE_LIMIT,k as imageInfo,Pe as parseManifest,ie as resourcePath,se as sha256,qt as unpackResourcePackage,_e as validatePackageFiles};
@@ -1,8 +1,8 @@
1
- import { type PetAssetsHost } from "./host.js";
2
- import { type ImageAsset, type PackageManifest } from "./resource-package.js";
3
- import { type SheetLayout } from "./sheet-layout.js";
4
- import type { VibemonResourceDescriptor } from "./types.js";
5
- export { parseSheetLayout, type SheetLayout } from "./sheet-layout.js";
1
+ import { type PetAssetsHost } from "./host";
2
+ import { type ImageAsset, type PackageManifest } from "./resource-package";
3
+ import { type SheetLayout } from "./sheet-layout";
4
+ import type { VibemonResourceDescriptor } from "./types";
5
+ export { parseSheetLayout, type SheetLayout } from "./sheet-layout";
6
6
  export interface CachedPetMetadata {
7
7
  directory: string;
8
8
  sheetName: string | null;
@@ -1 +1 @@
1
- import{assertAccount as i}from"./host.js";import{IMAGE_ASSETS as W,imageInfo as q,parseManifest as B,resourcePath as D,sha256 as J,unpackResourcePackage as F,validatePackageFiles as Z}from"./resource-package.js";import{parseSheetLayout as I}from"./sheet-layout.js";import{parseSheetLayout as ne}from"./sheet-layout.js";var R=new TextEncoder,N=new TextDecoder;function G(r,w){let p=w.resource_package_format??0;return(r.format??0)===p&&r.version===(w.resource_version??null)&&(r.sourceUrl===void 0?p===0:r.sourceUrl===(p===1?w.resource_url:w.sheet_url))}function Y(r){let w=!1,p=new Map,_=new Map,V=new Map,S=new Map,k=new Set,O=Promise.resolve();function U(e){if(w)throw Error("Vibemon resources disposed");let o=r.account();if(o===null)throw Error("Sign in to load Vibemon resources");if(!/^[a-zA-Z0-9_-]+$/.test(e)||!/^[a-zA-Z0-9.-]+$/.test(o.apiHost))throw Error("Invalid resource identity");return`vibemon/catalog/${o.apiHost}/${e}`}function P(e){let o=r.account();if(o===null)return Promise.reject(Error("Sign in to load Vibemon resources"));let n=`${U(e)}/${o.userId}/${o.revision}`,a=_.get(n);if(a)return a;let s=H(e).finally(()=>{if(_.get(n)===s)_.delete(n)});return _.set(n,s),s}async function H(e){let o=r.account();if(o===null)throw Error("Sign in to load Vibemon resources");let n=U(e),a=await r.resources.read(`${n}/resource.json`);if(a===null){for(let l of[n,`vibemon/${o.apiHost}/${o.userId}/${e}`]){let f=await r.resources.read(`${l}/config.json`);if(f===null)continue;let t=JSON.parse(N.decode(f));if(!/^sprite-sheet\.(webp|png)$/.test(t.spritesheet))throw Error("Invalid legacy sprite filename");let v=I(JSON.stringify({frameWidth:t.frameSize,frameHeight:t.frameSize,states:t.states}));if(await r.resources.exists(`${l}/${t.spritesheet}`)){let y=await r.storage.get("vibemon.resourceVersion");return i(r,o),{directory:l,sheetName:t.spritesheet,layout:v,version:y?.[o.apiHost]?.[e]??0,config:t}}}return null}let s;try{s=JSON.parse(N.decode(a))}catch{return null}if(!s||s.format!==void 0&&s.format!==0&&s.format!==1)return null;if(s.format===1)try{let l=await r.resources.read(`${n}/manifest.json`),f=await r.resources.read(`${n}/resource.zip`);if(!l||!f||await J(f)!==s.archiveSha256)return null;let t=B(l),v=await Z(t,(y)=>r.resources.read(`${n}/${y}`));return i(r,o),{...s,directory:n,manifest:t,layout:v,sheetName:t.assets.sheet?.path??null}}catch{return i(r,o),null}let c=JSON.parse(N.decode(a));if(I(JSON.stringify(c.layout)),!/^sprite-sheet\.(webp|png)$/.test(c.sheet))throw Error("Invalid sprite filename");let u=await r.resources.exists(`${n}/${c.sheet}`);i(r,o);let g=await r.resources.read(`${n}/config.json`);return i(r,o),!u?null:{directory:n,sheetName:c.sheet,name:c.name,layout:c.layout,version:c.version,format:0,sourceUrl:s.sourceUrl,config:g===null?void 0:JSON.parse(N.decode(g))}}async function L(e){let o=r.account();if(o===null)throw Error("Sign in to load Vibemon resources");let n=await P(e);if(n===null)return null;if(n.sheetName===null)return{...n,sheet:null};let a=await r.resources.read(`${n.directory}/${n.sheetName}`);return i(r,o),a===null?null:{...n,sheet:a}}function M(e){let o=r.account();if(o===null)return Promise.reject(Error("Sign in to download Vibemon resources"));if(e.resource_package_format!=null&&(!Number.isInteger(e.resource_package_format)||e.resource_package_format<0))return Promise.reject(Error("Invalid Vibemon resource format"));if(e.resource_version!=null&&(!Number.isInteger(e.resource_version)||e.resource_version<0))return Promise.reject(Error("Invalid Vibemon resource version"));let n=U(e.uuid),a=JSON.stringify([o.revision,e.resource_package_format??0,e.resource_version??null,e.resource_url,e.sheet_url,e.layout]),s=p.get(n);if(s?.key===a)return s.work;let c=(V.get(n)??0)+1;V.set(n,c);let u=()=>{if(i(r,o),w||V.get(n)!==c)throw Error("Vibemon resource request superseded")},l=(async()=>{await s?.work.catch(()=>{}),u();let f=await L(e.uuid);if(i(r,o),f!==null&&G(f,e))return{...f,name:e.name};let t=e.resource_package_format??0;if(t!==0&&t!==1)throw Error(`Unsupported Vibemon resource format: ${t}`);if(t===1&&!e.resource_url)throw Error("Vibemon package URL is missing");if(t===0&&(!e.sheet_url||!e.layout))throw Error("Vibemon animation is unavailable");let v=t===0?I(e.layout):null,y=new URL(t===1?e.resource_url:e.sheet_url);if(y.protocol!=="https:")throw Error("Vibemon sprites require HTTPS");let j=y.pathname.toLowerCase().endsWith(".png")?"sprite-sheet.png":"sprite-sheet.webp",h=new AbortController;k.add(h);let d=`${n}.${crypto.randomUUID()}.tmp`;try{let b=await r.download(y.href,h.signal);if(u(),t===1){let m=await F(b,r.validateImage);u();for(let[T,C]of m.files)await r.resources.write(`${d}/${T}`,C);await r.resources.write(`${d}/resource.zip`,b);let E={directory:n,format:1,sourceUrl:e.resource_url,version:e.resource_version??null,name:e.name,manifest:m.manifest,layout:m.layout,sheetName:m.manifest.assets.sheet?.path??null,archiveSha256:await J(b)};return await r.resources.write(`${d}/resource.json`,R.encode(JSON.stringify(E))),u(),h.signal.throwIfAborted(),await r.resources.replace(d,n),{...E,sheet:E.sheetName?m.files.get(E.sheetName):null}}if(b.byteLength===0)throw Error("Empty Vibemon spritesheet");await r.resources.write(`${d}/${j}`,b),await r.resources.write(`${d}/resource.json`,R.encode(JSON.stringify({layout:v,version:e.resource_version??null,sheet:j,name:e.name,sourceUrl:e.sheet_url}))),i(r,o),h.signal.throwIfAborted(),u(),await r.resources.replace(d,n),i(r,o);let A=O.catch(()=>{}).then(async()=>{i(r,o);let m=await r.storage.get("vibemon.resourceVersion")??{};i(r,o),await r.storage.set("vibemon.resourceVersion",{...m,[o.apiHost]:{...m[o.apiHost],[e.uuid]:e.resource_version??0}})});return O=A,await A,i(r,o),{directory:n,sheetName:j,sheet:b,name:e.name,layout:v,version:e.resource_version??null,format:0,sourceUrl:e.sheet_url}}finally{k.delete(h),await r.resources.remove(d)}})().finally(()=>{if(p.get(n)?.work===l)p.delete(n)});return p.set(n,{key:a,generation:c,work:l}),l}async function z(e){if(e.format!==1||!e.manifest)return{};let o=e.manifest,n={};return await Promise.all(W.map(async(a)=>{let s=o.assets[a];if(!s){n[a]=null;return}if(!D(s.path))throw Error("Invalid cached Vibemon path");if(r.resources.url)n[a]=`${await r.resources.url(`${e.directory}/${s.path}`)}?v=${s.sha256}`;else{let c=`${e.directory}/${s.sha256}`,u=S.get(c);if(!u){let g=await r.resources.read(`${e.directory}/${s.path}`);if(g===null)throw Error("Cached Vibemon image is missing");u=URL.createObjectURL(new Blob([new Uint8Array(g).buffer],{type:q(g).mime})),S.set(c,u)}n[a]=u}})),n}function x(){for(let e of k)e.abort();k.clear()}return{inspect:P,visuals:z,async preview(e){let o=e.manifest?.assets.cover??e.manifest?.assets.icon;return o?r.resources.read(`${e.directory}/${o.path}`):null},cached:L,ensure:M,cancel:x,dispose(){w=!0,x();for(let e of S.values())URL.revokeObjectURL(e);S.clear()}}}export{Y as createPetResources,G as matchesResource,ne as parseSheetLayout};
1
+ import{re,xe}from"../chunk-3amxesw3.js";import"../chunk-nbfhs21c.js";import"../chunk-rerywpwe.js";import{m}from"../chunk-4gegjx79.js";export{xe as createPetResources,re as matchesResource,m as parseSheetLayout};
@@ -1,4 +1,4 @@
1
- import { type PetAssetsHost } from "./host.js";
1
+ import { type PetAssetsHost } from "./host";
2
2
  export declare function createPetSelection(host: PetAssetsHost, owned: (petId: string) => Promise<readonly {
3
3
  vibemon_uuid: string;
4
4
  }[]>): {
@@ -1 +1 @@
1
- import{accountKey as u,assertAccount as c}from"./host.js";function w(n,s){let a=Promise.resolve();return{get:async()=>{let e=n.account();if(e===null)return null;let t=await n.storage.get("vibemon.accounts");return c(n,e),t?.[u(e)]?.pet||null},async select(e){let t=n.account();if(t===null)throw Error("Sign in to select a Vibemon");if(e!==null&&!(await s(e)).some((o)=>o.vibemon_uuid===e))throw Error("This account does not own the selected Vibemon");c(n,t);let r=a.catch(()=>{}).then(async()=>{c(n,t);let o=await n.storage.get("vibemon.accounts")??{};c(n,t);let i=u(t);await n.storage.set("vibemon.accounts",{...o,[i]:{...o[i],pet:e??""}}),c(n,t)});a=r,await r}}}export{w as createPetSelection};
1
+ import{Re}from"../chunk-ax8zmvs0.js";import"../chunk-rerywpwe.js";export{Re as createPetSelection};
@@ -1 +1 @@
1
- function i(t){let e=JSON.parse(t);if(!e||!Number.isInteger(e.frameWidth)||e.frameWidth<1||e.frameWidth>4096||!Number.isInteger(e.frameHeight)||e.frameHeight<1||e.frameHeight>4096||!Array.isArray(e.states)||e.states.length<1||e.states.length>32||e.states.some((r)=>!r||typeof r.id!=="string"||!r.id||!Number.isInteger(r.row)||r.row<0||!Number.isInteger(r.frames)||r.frames<1||r.frames>128)||new Set(e.states.map((r)=>r.id)).size!==e.states.length||e.states.reduce((r,s)=>r+s.frames,0)>512)throw Error("Invalid Vibemon sprite layout");return e}export{i as parseSheetLayout};
1
+ import{m}from"../chunk-4gegjx79.js";export{m as parseSheetLayout};
@@ -0,0 +1 @@
1
+ import"../chunk-pbwt3qj9.js";
package/dist/state.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { createTokenStorage } from "./token-storage.js";
2
- import type { AuthUser, LoginResponse } from "./types.js";
1
+ import type { createTokenStorage } from "./token-storage";
2
+ import type { AuthUser, LoginResponse } from "./types";
3
3
  export interface AuthState {
4
4
  user: AuthUser | null;
5
5
  isAuthenticated: boolean;
package/dist/state.js CHANGED
@@ -1 +1 @@
1
- function w(e){let{tokenStorage:l,loadUser:d,saveUser:s,clearAllAuth:f}=e.storage,n=0;return(r,o)=>({user:null,isAuthenticated:!1,isLoading:!0,_initialized:!1,init:()=>{if(o()._initialized)return;r({_initialized:!0}),e.onInit();let a=n;(async()=>{try{let i=await l.getAccess(),t=await l.getRefresh();if(a!==n)return;if(!i||!t){await e.handleUnauthenticated(),r({isLoading:!1});return}let v=e.validateProfile(),c=await d();if(a!==n)return;if(!v){if(c)r({user:c,isAuthenticated:!0}),e.loadProviders();return}if(c)r({user:c,isAuthenticated:!0,isLoading:!1}),e.onSignedIn(c,"restore");e.loadProviders();try{let u=await e.getProfile();if(a!==n)return;let g={user_uuid:u.uuid,nickname:u.nickname,login_email:u.login_email,avatar:u.avatar};r({user:g,isAuthenticated:!0}),await s(g),e.onProfileRestored()}catch{let u=await d();if(a!==n)return;if(u)r({user:u,isAuthenticated:!0});else await f(),e.clearProviders(),r({user:null,isAuthenticated:!1})}if(!c)r({isLoading:!1})}catch(i){console.error("[auth] session restore failed unexpectedly",i)}finally{if(o().isLoading)r({isLoading:!1})}})(),e.subscribeExpired(()=>{n++,e.clearAccountConversation(o().user).then(e.handleUnauthenticated).then((i)=>{if(i)return;r({user:null,isAuthenticated:!1})})}),e.subscribeState((i)=>{if(i.action==="logout")n++,e.clearAccountConversation(o().user).then(e.handleUnauthenticated).then((t)=>{if(t)return;e.clearProviders(),r({user:null,isAuthenticated:!1})});else if(i.action==="login"&&i.user)n++,r({user:i.user,isAuthenticated:!0}),e.loadProviders();else if(i.action==="update"&&i.user)r({user:i.user})})},login:async(a)=>{n++,await l.save(a.access_token,a.refresh_token);let i={user_uuid:a.user_uuid,nickname:a.nickname,login_email:a.login_email};await s(i),r({user:i,isAuthenticated:!0}),e.loadProviders(),await e.broadcast({action:"login",user:i}),e.onSignedIn(i,"login")},logout:async()=>{if(n++,e.clearProviders(),await e.logoutApi(),await e.clearAccountConversation(o().user),await f(),await e.broadcast({action:"logout"}),await e.handleUnauthenticated())return;r({user:null,isAuthenticated:!1})},refreshUser:async()=>{try{let a=await e.getProfile(),i={user_uuid:a.uuid,nickname:a.nickname,login_email:a.login_email,avatar:a.avatar};r({user:i}),await s(i)}catch(a){console.warn("[auth] refreshUser failed",a)}},updateUser:(a)=>{let i=o().user;if(!i)return;let t={...i,...a};r({user:t}),s(t),e.broadcast({action:"update",user:t})}})}export{w as createAuthState};
1
+ import{nn}from"./chunk-d13j3xks.js";export{nn as createAuthState};
@@ -1,4 +1,4 @@
1
- import type { AuthUser } from "./types.js";
1
+ import type { AuthUser } from "./types";
2
2
  export interface AuthStore {
3
3
  get: <T>(key: string) => Promise<T | undefined>;
4
4
  set: (key: string, value: unknown) => Promise<void>;
@@ -1 +1 @@
1
- function r(a){return`auth.${new URL(a).host}`}function u(a){let e={ACCESS:"access_token",REFRESH:"refresh_token",DEVICE_ID:"device_id",USER:"user"},n={save:async(t,S)=>{await a.set(e.ACCESS,t),await a.set(e.REFRESH,S)},getAccess:async()=>await a.get(e.ACCESS)??"",getRefresh:async()=>await a.get(e.REFRESH)??"",updateAccess:async(t)=>{await a.set(e.ACCESS,t)},clear:async()=>{await a.delete(e.ACCESS),await a.delete(e.REFRESH)},getDeviceId:async()=>{let t=await a.get(e.DEVICE_ID);if(!t)t=crypto.randomUUID(),await a.set(e.DEVICE_ID,t);return t}};async function i(t){await a.set(e.USER,t)}async function E(){return await a.get(e.USER)??null}async function c(){await a.delete(e.USER)}async function s(){await n.clear(),await c()}return{tokenStorage:n,saveUser:i,loadUser:E,clearUser:c,clearAllAuth:s}}export{r as authStoreName,u as createTokenStorage};
1
+ import{pn,fn}from"./chunk-m96z2xh6.js";export{pn as authStoreName,fn as createTokenStorage};
package/dist/types.js CHANGED
@@ -0,0 +1 @@
1
+ import"./chunk-8w0zccsf.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alwith/module-auth",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "exports": {
@@ -59,7 +59,9 @@
59
59
  "import": "./dist/pets/react/locales.js",
60
60
  "default": "./dist/pets/react/locales.js"
61
61
  },
62
- "./pets/styles.css": "./dist/pets/react/styles.css"
62
+ "./pets/styles.css": "./dist/pets/react/styles.css",
63
+ "./assets/*": "./assets/*",
64
+ "./pets/lounge-burst.css": "./dist/pets/react/components/lounge-burst.css"
63
65
  },
64
66
  "files": [
65
67
  "dist",
@@ -71,13 +73,12 @@
71
73
  ],
72
74
  "devDependencies": {
73
75
  "typescript": "^7.0.2",
74
- "@types/bun": "^1.4.3",
76
+ "@types/bun": "^1.4.4",
75
77
  "@types/react": "^19.3.0",
76
78
  "@types/react-dom": "^19.3.0"
77
79
  },
78
80
  "scripts": {
79
81
  "test": "bun test src",
80
- "typecheck": "tsc --noEmit",
81
82
  "build": "bun ../../../scripts/build-npm.ts",
82
83
  "prepack": "bun run build"
83
84
  },
@@ -92,21 +93,21 @@
92
93
  "directory": "crates/auth/guest-js"
93
94
  },
94
95
  "dependencies": {
95
- "@base-ui/react": "^1.8.0",
96
+ "@base-ui/react": "^1.9.0",
96
97
  "class-variance-authority": "^0.7.1",
97
98
  "cn": "^0.5.0",
98
99
  "fflate": "0.8.3",
99
- "i18next": "^26.4.2",
100
- "lucide-react": "^1.49.0",
101
- "motion": "^13.4.6",
102
- "react-i18next": "^17.0.15",
100
+ "i18next": "^26.5.10",
101
+ "lucide-react": "^1.61.0",
102
+ "motion": "^14.6.0",
103
+ "react-i18next": "^17.1.8",
103
104
  "sonner": "^2.0.8",
104
105
  "tyme4ts": "^1.5.3",
105
- "zustand": "^5.0.15"
106
+ "zustand": "^5.0.16"
106
107
  },
107
108
  "peerDependencies": {
108
- "react": "^19.3.0",
109
- "react-dom": "^19.3.0"
109
+ "react": "^19.3.1",
110
+ "react-dom": "^19.3.1"
110
111
  },
111
112
  "peerDependenciesMeta": {
112
113
  "react": {