@civitai/blocks-react 0.23.0 → 0.25.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.
Files changed (36) hide show
  1. package/dist/hooks/useBuzzAccounts.d.ts +39 -0
  2. package/dist/hooks/useBuzzAccounts.d.ts.map +1 -0
  3. package/dist/hooks/useBuzzAccounts.js +57 -0
  4. package/dist/hooks/useBuzzAccounts.js.map +1 -0
  5. package/dist/hooks/useBuzzTransactions.d.ts +52 -0
  6. package/dist/hooks/useBuzzTransactions.d.ts.map +1 -0
  7. package/dist/hooks/useBuzzTransactions.js +77 -0
  8. package/dist/hooks/useBuzzTransactions.js.map +1 -0
  9. package/dist/hooks/useDailyCompensation.d.ts +44 -0
  10. package/dist/hooks/useDailyCompensation.d.ts.map +1 -0
  11. package/dist/hooks/useDailyCompensation.js +62 -0
  12. package/dist/hooks/useDailyCompensation.js.map +1 -0
  13. package/dist/hooks/useSharedStorage.d.ts +11 -0
  14. package/dist/hooks/useSharedStorage.d.ts.map +1 -1
  15. package/dist/hooks/useSharedStorage.js +6 -0
  16. package/dist/hooks/useSharedStorage.js.map +1 -1
  17. package/dist/hooks/useWildcardPack.d.ts +49 -0
  18. package/dist/hooks/useWildcardPack.d.ts.map +1 -0
  19. package/dist/hooks/useWildcardPack.js +81 -0
  20. package/dist/hooks/useWildcardPack.js.map +1 -0
  21. package/dist/index.d.ts +9 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +4 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/internal/liveHost.d.ts.map +1 -1
  26. package/dist/internal/liveHost.js +63 -0
  27. package/dist/internal/liveHost.js.map +1 -1
  28. package/dist/internal/mockHost.d.ts +46 -2
  29. package/dist/internal/mockHost.d.ts.map +1 -1
  30. package/dist/internal/mockHost.js +244 -0
  31. package/dist/internal/mockHost.js.map +1 -1
  32. package/dist/internal/validate.d.ts +41 -0
  33. package/dist/internal/validate.d.ts.map +1 -1
  34. package/dist/internal/validate.js +189 -0
  35. package/dist/internal/validate.js.map +1 -1
  36. package/package.json +3 -3
@@ -0,0 +1,39 @@
1
+ import type { BlockBuzzAccount } from '@civitai/app-sdk/blocks';
2
+ /**
3
+ * What {@link useBuzzAccounts} returns.
4
+ */
5
+ export interface UseBuzzAccounts {
6
+ /**
7
+ * The viewer's all-pool balances — the three spendable pools PLUS the creator
8
+ * payout pools (`creatorProgramBank`, `cashSettled`, …) the spendable-only
9
+ * {@link useBuzzBalance} omits. `null` until the first successful fetch.
10
+ */
11
+ accounts: BlockBuzzAccount[] | null;
12
+ /** `true` while a fetch (initial or `refetch`) is in flight. */
13
+ loading: boolean;
14
+ /**
15
+ * The last fetch's failure — a host-reported error (anon viewer / missing
16
+ * `buzz:read:self` scope / host failure) or the transport timeout. Free-text.
17
+ * Cleared at the start of the next fetch.
18
+ */
19
+ error: Error | null;
20
+ /** Re-request the balances. */
21
+ refetch: () => void;
22
+ }
23
+ /**
24
+ * Read the signed-in viewer's ALL-pool Buzz balances through the host-mediated
25
+ * `GET_BUZZ_ACCOUNTS` → `BUZZ_ACCOUNTS_RESULT` bridge. Token-bound: the host
26
+ * self-binds off the block token and reads via its `blocks.getMyBuzzAccounts`
27
+ * mutation (scope `buzz:read:self`). Unlike {@link useBuzzBalance} (the three
28
+ * spendable pools), this returns every pool in the block API's set — including
29
+ * the creator payout pools — as `{ accountType, balance }` rows.
30
+ *
31
+ * Fetches once on mount and exposes `refetch`. A host that never answers surfaces
32
+ * as an `error` after the transport timeout; late post-unmount responses are
33
+ * ignored.
34
+ *
35
+ * @example
36
+ * const { accounts, loading, error } = useBuzzAccounts();
37
+ */
38
+ export declare function useBuzzAccounts(): UseBuzzAccounts;
39
+ //# sourceMappingURL=useBuzzAccounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBuzzAccounts.d.ts","sourceRoot":"","sources":["../../src/hooks/useBuzzAccounts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKhE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,QAAQ,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IACpC,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,IAAI,eAAe,CA2CjD"}
@@ -0,0 +1,57 @@
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
+ import { getTransport } from '../internal/singleton.js';
3
+ import { sendTypedRequest } from '../internal/transport.js';
4
+ /**
5
+ * Read the signed-in viewer's ALL-pool Buzz balances through the host-mediated
6
+ * `GET_BUZZ_ACCOUNTS` → `BUZZ_ACCOUNTS_RESULT` bridge. Token-bound: the host
7
+ * self-binds off the block token and reads via its `blocks.getMyBuzzAccounts`
8
+ * mutation (scope `buzz:read:self`). Unlike {@link useBuzzBalance} (the three
9
+ * spendable pools), this returns every pool in the block API's set — including
10
+ * the creator payout pools — as `{ accountType, balance }` rows.
11
+ *
12
+ * Fetches once on mount and exposes `refetch`. A host that never answers surfaces
13
+ * as an `error` after the transport timeout; late post-unmount responses are
14
+ * ignored.
15
+ *
16
+ * @example
17
+ * const { accounts, loading, error } = useBuzzAccounts();
18
+ */
19
+ export function useBuzzAccounts() {
20
+ const [accounts, setAccounts] = useState(null);
21
+ const [loading, setLoading] = useState(true);
22
+ const [error, setError] = useState(null);
23
+ const mountedRef = useRef(true);
24
+ useEffect(() => {
25
+ mountedRef.current = true;
26
+ return () => {
27
+ mountedRef.current = false;
28
+ };
29
+ }, []);
30
+ const refetch = useCallback(() => {
31
+ setLoading(true);
32
+ setError(null);
33
+ sendTypedRequest(getTransport(), { type: 'GET_BUZZ_ACCOUNTS', payload: {} }, 'BUZZ_ACCOUNTS_RESULT')
34
+ .then((result) => {
35
+ if (!mountedRef.current)
36
+ return;
37
+ if (result.error || !result.result) {
38
+ setError(new Error(result.error ?? 'failed to fetch buzz accounts'));
39
+ setLoading(false);
40
+ return;
41
+ }
42
+ setAccounts(result.result.accounts);
43
+ setLoading(false);
44
+ })
45
+ .catch((err) => {
46
+ if (!mountedRef.current)
47
+ return;
48
+ setError(err instanceof Error ? err : new Error(String(err)));
49
+ setLoading(false);
50
+ });
51
+ }, []);
52
+ useEffect(() => {
53
+ refetch();
54
+ }, [refetch]);
55
+ return { accounts, loading, error, refetch };
56
+ }
57
+ //# sourceMappingURL=useBuzzAccounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBuzzAccounts.js","sourceRoot":"","sources":["../../src/hooks/useBuzzAccounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAIjE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAwB5D;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAA4B,IAAI,CAAC,CAAC;IAC1E,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,OAAO,GAAG,EAAE;YACV,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,gBAAgB,CACd,YAAY,EAAE,EACd,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,EAAE,EAAE,EAC1C,sBAAsB,CACvB;aACE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,IAAI,CAAC,UAAU,CAAC,OAAO;gBAAE,OAAO;YAChC,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,+BAA+B,CAAC,CAAC,CAAC;gBACrE,UAAU,CAAC,KAAK,CAAC,CAAC;gBAClB,OAAO;YACT,CAAC;YACD,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACpC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACtB,IAAI,CAAC,UAAU,CAAC,OAAO;gBAAE,OAAO;YAChC,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9D,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,52 @@
1
+ import type { BlockBuzzTransaction, BlockBuzzTransactionsParams } from '@civitai/app-sdk/blocks';
2
+ /**
3
+ * One Buzz-transaction row, REHYDRATED for block consumption: identical to the
4
+ * wire {@link BlockBuzzTransaction} except `date` is a `Date` (rehydrated from
5
+ * the ISO string / `Date` the host sends — see the DATE WIRE CAVEAT on
6
+ * `BlockBuzzTransaction`).
7
+ */
8
+ export interface BuzzTransaction extends Omit<BlockBuzzTransaction, 'date'> {
9
+ date: Date;
10
+ }
11
+ /**
12
+ * What {@link useBuzzTransactions} returns.
13
+ */
14
+ export interface UseBuzzTransactions {
15
+ /** The current page's rows (newest-first), or `null` until the first successful fetch. */
16
+ transactions: BuzzTransaction[] | null;
17
+ /**
18
+ * The next-page cursor (ISO-8601), or `null` when there's no further page.
19
+ * Pass it back as `params.cursor` on a subsequent call to page forward.
20
+ */
21
+ cursor: string | null;
22
+ /** `true` while a fetch (initial or `refetch`) is in flight. */
23
+ loading: boolean;
24
+ /**
25
+ * The last fetch's failure — a host-reported error (anon viewer / missing
26
+ * `buzz:read:self` scope / host failure) or the transport timeout. Free-text
27
+ * (the buzz bridge does not use a discriminated error enum). Cleared at the
28
+ * start of the next fetch.
29
+ */
30
+ error: Error | null;
31
+ /** Re-request the current page. */
32
+ refetch: () => void;
33
+ }
34
+ /**
35
+ * Read the signed-in viewer's Buzz-transaction ledger through the host-mediated
36
+ * `GET_BUZZ_TRANSACTIONS` → `BUZZ_TRANSACTIONS_RESULT` bridge. Token-bound: the
37
+ * host self-binds the account off the block token and reads via its
38
+ * `blocks.getMyBuzzTransactions` mutation (scope `buzz:read:self`) — the block
39
+ * never touches the ledger API or credentials directly (same trust model as
40
+ * {@link useBuzzBalance}).
41
+ *
42
+ * Fetches on mount and whenever `params` change (by value), and exposes `refetch`.
43
+ * A host that never answers surfaces as an `error` after the transport's request
44
+ * timeout — the hook never hangs. Late responses that arrive after unmount are
45
+ * ignored. Transaction `date`s are rehydrated to `Date`; `cursor` is normalized
46
+ * to an ISO string for round-tripping.
47
+ *
48
+ * @example
49
+ * const { transactions, cursor, loading, error } = useBuzzTransactions({ type: 'Tip', limit: 20 });
50
+ */
51
+ export declare function useBuzzTransactions(params?: BlockBuzzTransactionsParams): UseBuzzTransactions;
52
+ //# sourceMappingURL=useBuzzTransactions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBuzzTransactions.d.ts","sourceRoot":"","sources":["../../src/hooks/useBuzzTransactions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAKjG;;;;;GAKG;AACH,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACzE,IAAI,EAAE,IAAI,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,0FAA0F;IAC1F,YAAY,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IACvC;;;OAGG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,mCAAmC;IACnC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAWD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,2BAA2B,GAAG,mBAAmB,CAqD7F"}
@@ -0,0 +1,77 @@
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
+ import { getTransport } from '../internal/singleton.js';
3
+ import { sendTypedRequest } from '../internal/transport.js';
4
+ /** Rehydrate the host's `date`/`cursor` (a `Date` instance OR an ISO string). */
5
+ function toDate(v) {
6
+ return v instanceof Date ? v : new Date(v);
7
+ }
8
+ function toIso(v) {
9
+ if (v === undefined || v === null)
10
+ return null;
11
+ return v instanceof Date ? v.toISOString() : String(v);
12
+ }
13
+ /**
14
+ * Read the signed-in viewer's Buzz-transaction ledger through the host-mediated
15
+ * `GET_BUZZ_TRANSACTIONS` → `BUZZ_TRANSACTIONS_RESULT` bridge. Token-bound: the
16
+ * host self-binds the account off the block token and reads via its
17
+ * `blocks.getMyBuzzTransactions` mutation (scope `buzz:read:self`) — the block
18
+ * never touches the ledger API or credentials directly (same trust model as
19
+ * {@link useBuzzBalance}).
20
+ *
21
+ * Fetches on mount and whenever `params` change (by value), and exposes `refetch`.
22
+ * A host that never answers surfaces as an `error` after the transport's request
23
+ * timeout — the hook never hangs. Late responses that arrive after unmount are
24
+ * ignored. Transaction `date`s are rehydrated to `Date`; `cursor` is normalized
25
+ * to an ISO string for round-tripping.
26
+ *
27
+ * @example
28
+ * const { transactions, cursor, loading, error } = useBuzzTransactions({ type: 'Tip', limit: 20 });
29
+ */
30
+ export function useBuzzTransactions(params) {
31
+ const [transactions, setTransactions] = useState(null);
32
+ const [cursor, setCursor] = useState(null);
33
+ const [loading, setLoading] = useState(true);
34
+ const [error, setError] = useState(null);
35
+ const mountedRef = useRef(true);
36
+ useEffect(() => {
37
+ mountedRef.current = true;
38
+ return () => {
39
+ mountedRef.current = false;
40
+ };
41
+ }, []);
42
+ // Serialize the params to a stable key so `refetch`'s identity only changes
43
+ // when the params VALUE changes (not on every render's fresh object). The
44
+ // callback re-parses the key so it closes over NOTHING but the key.
45
+ const paramsKey = params ? JSON.stringify(params) : '';
46
+ const refetch = useCallback(() => {
47
+ setLoading(true);
48
+ setError(null);
49
+ const parsed = paramsKey ? JSON.parse(paramsKey) : undefined;
50
+ const payload = parsed ? { params: parsed } : {};
51
+ sendTypedRequest(getTransport(), { type: 'GET_BUZZ_TRANSACTIONS', payload }, 'BUZZ_TRANSACTIONS_RESULT')
52
+ .then((result) => {
53
+ if (!mountedRef.current)
54
+ return;
55
+ if (result.error || !result.result) {
56
+ setError(new Error(result.error ?? 'failed to fetch buzz transactions'));
57
+ setLoading(false);
58
+ return;
59
+ }
60
+ const wire = result.result;
61
+ setTransactions(wire.transactions.map((t) => ({ ...t, date: toDate(t.date) })));
62
+ setCursor(toIso(wire.cursor));
63
+ setLoading(false);
64
+ })
65
+ .catch((err) => {
66
+ if (!mountedRef.current)
67
+ return;
68
+ setError(err instanceof Error ? err : new Error(String(err)));
69
+ setLoading(false);
70
+ });
71
+ }, [paramsKey]);
72
+ useEffect(() => {
73
+ refetch();
74
+ }, [refetch]);
75
+ return { transactions, cursor, loading, error, refetch };
76
+ }
77
+ //# sourceMappingURL=useBuzzTransactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBuzzTransactions.js","sourceRoot":"","sources":["../../src/hooks/useBuzzTransactions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { BlockDailyCompensationParams, BlockDailyCompensationResource } from '@civitai/app-sdk/blocks';
2
+ /**
3
+ * What {@link useDailyCompensation} returns.
4
+ */
5
+ export interface UseDailyCompensation {
6
+ /**
7
+ * Per-modelVersion generation-compensation rows for the month of the requested
8
+ * `date`, or `null` until the first successful fetch. `data`/`cashData`
9
+ * `createdAt` are `YYYY-MM-DD` day-strings (NOT rehydrated to `Date`).
10
+ */
11
+ resources: BlockDailyCompensationResource[] | null;
12
+ /**
13
+ * Whether the viewer has ANY published resource — `false` distinguishes "no
14
+ * published models" from "published models that earned nothing this month"
15
+ * (both give `resources: []`). `null` until the first successful fetch.
16
+ */
17
+ hasPublishedResources: boolean | null;
18
+ /** `true` while a fetch (initial or `refetch`) is in flight. */
19
+ loading: boolean;
20
+ /**
21
+ * The last fetch's failure — a host-reported error (anon viewer / missing
22
+ * `buzz:read:self` scope / a ClickHouse blip surfaced as a retryable error) or
23
+ * the transport timeout. Free-text. Cleared at the start of the next fetch.
24
+ */
25
+ error: Error | null;
26
+ /** Re-request the compensation for the current `params`. */
27
+ refetch: () => void;
28
+ }
29
+ /**
30
+ * Read the signed-in viewer's per-modelVersion generation compensation for the
31
+ * MONTH containing `params.date`, through the host-mediated
32
+ * `GET_DAILY_COMPENSATION` → `DAILY_COMPENSATION_RESULT` bridge. Token-bound: the
33
+ * host self-binds off the block token and reads via its
34
+ * `blocks.getMyDailyCompensation` mutation (scope `buzz:read:self`).
35
+ *
36
+ * Fetches on mount and whenever `params` change (by value), and exposes `refetch`.
37
+ * A host that never answers surfaces as an `error` after the transport timeout;
38
+ * late post-unmount responses are ignored.
39
+ *
40
+ * @example
41
+ * const { resources, hasPublishedResources } = useDailyCompensation({ date: '2026-07-01' });
42
+ */
43
+ export declare function useDailyCompensation(params: BlockDailyCompensationParams): UseDailyCompensation;
44
+ //# sourceMappingURL=useDailyCompensation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDailyCompensation.d.ts","sourceRoot":"","sources":["../../src/hooks/useDailyCompensation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,4BAA4B,EAC5B,8BAA8B,EAC/B,MAAM,yBAAyB,CAAC;AAKjC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,SAAS,EAAE,8BAA8B,EAAE,GAAG,IAAI,CAAC;IACnD;;;;OAIG;IACH,qBAAqB,EAAE,OAAO,GAAG,IAAI,CAAC;IACtC,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,4BAA4B,GAAG,oBAAoB,CAkD/F"}
@@ -0,0 +1,62 @@
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
+ import { getTransport } from '../internal/singleton.js';
3
+ import { sendTypedRequest } from '../internal/transport.js';
4
+ /**
5
+ * Read the signed-in viewer's per-modelVersion generation compensation for the
6
+ * MONTH containing `params.date`, through the host-mediated
7
+ * `GET_DAILY_COMPENSATION` → `DAILY_COMPENSATION_RESULT` bridge. Token-bound: the
8
+ * host self-binds off the block token and reads via its
9
+ * `blocks.getMyDailyCompensation` mutation (scope `buzz:read:self`).
10
+ *
11
+ * Fetches on mount and whenever `params` change (by value), and exposes `refetch`.
12
+ * A host that never answers surfaces as an `error` after the transport timeout;
13
+ * late post-unmount responses are ignored.
14
+ *
15
+ * @example
16
+ * const { resources, hasPublishedResources } = useDailyCompensation({ date: '2026-07-01' });
17
+ */
18
+ export function useDailyCompensation(params) {
19
+ const [resources, setResources] = useState(null);
20
+ const [hasPublishedResources, setHasPublishedResources] = useState(null);
21
+ const [loading, setLoading] = useState(true);
22
+ const [error, setError] = useState(null);
23
+ const mountedRef = useRef(true);
24
+ useEffect(() => {
25
+ mountedRef.current = true;
26
+ return () => {
27
+ mountedRef.current = false;
28
+ };
29
+ }, []);
30
+ // Stable params key so `refetch`'s identity only changes when the params VALUE
31
+ // changes; the callback re-parses it so it closes over nothing but the key.
32
+ const paramsKey = JSON.stringify(params);
33
+ const refetch = useCallback(() => {
34
+ setLoading(true);
35
+ setError(null);
36
+ const parsed = JSON.parse(paramsKey);
37
+ sendTypedRequest(getTransport(), { type: 'GET_DAILY_COMPENSATION', payload: { params: parsed } }, 'DAILY_COMPENSATION_RESULT')
38
+ .then((result) => {
39
+ if (!mountedRef.current)
40
+ return;
41
+ if (result.error || !result.result) {
42
+ setError(new Error(result.error ?? 'failed to fetch daily compensation'));
43
+ setLoading(false);
44
+ return;
45
+ }
46
+ setResources(result.result.resources);
47
+ setHasPublishedResources(result.result.hasPublishedResources);
48
+ setLoading(false);
49
+ })
50
+ .catch((err) => {
51
+ if (!mountedRef.current)
52
+ return;
53
+ setError(err instanceof Error ? err : new Error(String(err)));
54
+ setLoading(false);
55
+ });
56
+ }, [paramsKey]);
57
+ useEffect(() => {
58
+ refetch();
59
+ }, [refetch]);
60
+ return { resources, hasPublishedResources, loading, error, refetch };
61
+ }
62
+ //# sourceMappingURL=useDailyCompensation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDailyCompensation.js","sourceRoot":"","sources":["../../src/hooks/useDailyCompensation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAOjE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AA8B5D;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAoC;IACvE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAA0C,IAAI,CAAC,CAAC;IAC1F,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAAiB,IAAI,CAAC,CAAC;IACzF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,OAAO,GAAG,EAAE;YACV,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,+EAA+E;IAC/E,4EAA4E;IAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEzC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAiC,CAAC;QACrE,gBAAgB,CACd,YAAY,EAAE,EACd,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAC/D,2BAA2B,CAC5B;aACE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,IAAI,CAAC,UAAU,CAAC,OAAO;gBAAE,OAAO;YAChC,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,oCAAoC,CAAC,CAAC,CAAC;gBAC1E,UAAU,CAAC,KAAK,CAAC,CAAC;gBAClB,OAAO;YACT,CAAC;YACD,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACtC,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;YAC9D,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACtB,IAAI,CAAC,UAAU,CAAC,OAAO;gBAAE,OAAO;YAChC,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9D,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACvE,CAAC"}
@@ -53,6 +53,17 @@ export interface UseSharedStorage {
53
53
  append(value: SharedAppendValue): Promise<{
54
54
  key: string;
55
55
  }>;
56
+ /**
57
+ * Update the viewer's OWN entry in place. Author-scoped: the host rejects when
58
+ * the viewer isn't the entry's author (`FORBIDDEN`) or the key is missing/hidden
59
+ * (`NOT_FOUND`). The `key` and the entry's vote/report totals are preserved —
60
+ * only the contributed `{ title, body?, data? }` value changes. `title`/`body`
61
+ * go through the same content belt as {@link append}; `data` is opaque.
62
+ * Resolves once the update lands; rejects with the host's `error` string on
63
+ * failure (or when the viewer is anonymous). Gated by the same
64
+ * `apps:storage:shared:write` scope as `append` — no new scope.
65
+ */
66
+ update(key: string, value: SharedAppendValue): Promise<void>;
56
67
  /**
57
68
  * Cast (or re-affirm) this viewer's up-vote on an entry — idempotent, one
58
69
  * vote per viewer. Resolves with the entry's vote total AFTER the vote.
@@ -1 +1 @@
1
- {"version":3,"file":"useSharedStorage.d.ts","sourceRoot":"","sources":["../../src/hooks/useSharedStorage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAKlE;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,IAAI,CAAC,IAAI,CAAC,EAAE;QACV,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D;;;OAGG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACnE;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,IAAI,gBAAgB,CAwFnD"}
1
+ {"version":3,"file":"useSharedStorage.d.ts","sourceRoot":"","sources":["../../src/hooks/useSharedStorage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAKlE;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,IAAI,CAAC,IAAI,CAAC,EAAE;QACV,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D;;;;;;;;;OASG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D;;;OAGG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACnE;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,IAAI,gBAAgB,CAkGnD"}
@@ -71,6 +71,12 @@ export function useSharedStorage() {
71
71
  throw new Error(result.error);
72
72
  return { key: result.key };
73
73
  },
74
+ async update(key, value) {
75
+ const result = await sendTypedRequest(transport, { type: 'SHARED_UPDATE', payload: { key, value } }, 'SHARED_UPDATE_RESULT');
76
+ if (!result.ok || result.error) {
77
+ throw new Error(result.error ?? 'shared update failed');
78
+ }
79
+ },
74
80
  async vote(key) {
75
81
  const result = await sendTypedRequest(transport, { type: 'SHARED_VOTE', payload: { key } }, 'SHARED_VOTE_RESULT');
76
82
  if (result.error)
@@ -1 +1 @@
1
- {"version":3,"file":"useSharedStorage.js","sourceRoot":"","sources":["../../src/hooks/useSharedStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useSharedStorage.js","sourceRoot":"","sources":["../../src/hooks/useSharedStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import type { BlockWildcardPack, BlockWildcardPackErrorCode } from '@civitai/app-sdk/blocks';
2
+ export type { BlockWildcardPack, BlockWildcardPackErrorCode };
3
+ /**
4
+ * A wildcard-pack import failure. Unlike the buzz bridges' free-text errors, the
5
+ * host returns a DISCRIMINATED code — this error carries it on `.code` so a block
6
+ * can branch on the exact reason (`busy` is retryable; `too-large`/`forbidden`/
7
+ * `not-found`/`parse-failed` are terminal). `.message` equals the code.
8
+ */
9
+ export declare class WildcardPackError extends Error {
10
+ readonly code: BlockWildcardPackErrorCode;
11
+ constructor(code: BlockWildcardPackErrorCode);
12
+ }
13
+ /**
14
+ * What {@link useWildcardPack} returns.
15
+ */
16
+ export interface UseWildcardPack {
17
+ /** The parsed pack, or `null` until the first successful fetch. */
18
+ pack: BlockWildcardPack | null;
19
+ /** `true` while a fetch (initial or `refetch`) is in flight. */
20
+ loading: boolean;
21
+ /**
22
+ * The last fetch's failure as a {@link WildcardPackError} (`.code` is the
23
+ * discriminated reason), or a plain `Error` on a transport timeout. Cleared at
24
+ * the start of the next fetch.
25
+ */
26
+ error: Error | null;
27
+ /** Re-request the pack. */
28
+ refetch: () => void;
29
+ }
30
+ /**
31
+ * Import a wildcard pack's parsed prompt lists by model-version id, through the
32
+ * host-mediated `GET_WILDCARD_PACK` → `WILDCARD_PACK_RESULT` bridge.
33
+ * TOKEN-INDEPENDENT (no block scope): the host resolves + fetches + unzips +
34
+ * parses the pack in the viewer's authenticated page session — enforcing every
35
+ * real download gate — and returns only the parsed JSON. The untrusted iframe
36
+ * never sees the session, the signed URL, or the raw bytes.
37
+ *
38
+ * Fetches on mount and whenever `modelVersionId` changes; exposes `refetch` (e.g.
39
+ * to retry a `busy` result). On failure `error` is a {@link WildcardPackError}
40
+ * whose `.code` is the discriminated reason. A non-positive `modelVersionId` is a
41
+ * no-op (nothing to fetch). A host that never answers surfaces as an `error`
42
+ * after the transport timeout; late post-unmount responses are ignored.
43
+ *
44
+ * @example
45
+ * const { pack, loading, error } = useWildcardPack(modelVersionId);
46
+ * if (error instanceof WildcardPackError && error.code === 'busy') return <RetryLater />;
47
+ */
48
+ export declare function useWildcardPack(modelVersionId: number): UseWildcardPack;
49
+ //# sourceMappingURL=useWildcardPack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWildcardPack.d.ts","sourceRoot":"","sources":["../../src/hooks/useWildcardPack.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAK7F,YAAY,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,CAAC;AAE9D;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;gBAC9B,IAAI,EAAE,0BAA0B;CAK7C;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC/B,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,eAAe,CAmDvE"}
@@ -0,0 +1,81 @@
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
+ import { getTransport } from '../internal/singleton.js';
3
+ import { sendTypedRequest } from '../internal/transport.js';
4
+ /**
5
+ * A wildcard-pack import failure. Unlike the buzz bridges' free-text errors, the
6
+ * host returns a DISCRIMINATED code — this error carries it on `.code` so a block
7
+ * can branch on the exact reason (`busy` is retryable; `too-large`/`forbidden`/
8
+ * `not-found`/`parse-failed` are terminal). `.message` equals the code.
9
+ */
10
+ export class WildcardPackError extends Error {
11
+ code;
12
+ constructor(code) {
13
+ super(code);
14
+ this.name = 'WildcardPackError';
15
+ this.code = code;
16
+ }
17
+ }
18
+ /**
19
+ * Import a wildcard pack's parsed prompt lists by model-version id, through the
20
+ * host-mediated `GET_WILDCARD_PACK` → `WILDCARD_PACK_RESULT` bridge.
21
+ * TOKEN-INDEPENDENT (no block scope): the host resolves + fetches + unzips +
22
+ * parses the pack in the viewer's authenticated page session — enforcing every
23
+ * real download gate — and returns only the parsed JSON. The untrusted iframe
24
+ * never sees the session, the signed URL, or the raw bytes.
25
+ *
26
+ * Fetches on mount and whenever `modelVersionId` changes; exposes `refetch` (e.g.
27
+ * to retry a `busy` result). On failure `error` is a {@link WildcardPackError}
28
+ * whose `.code` is the discriminated reason. A non-positive `modelVersionId` is a
29
+ * no-op (nothing to fetch). A host that never answers surfaces as an `error`
30
+ * after the transport timeout; late post-unmount responses are ignored.
31
+ *
32
+ * @example
33
+ * const { pack, loading, error } = useWildcardPack(modelVersionId);
34
+ * if (error instanceof WildcardPackError && error.code === 'busy') return <RetryLater />;
35
+ */
36
+ export function useWildcardPack(modelVersionId) {
37
+ const [pack, setPack] = useState(null);
38
+ const [loading, setLoading] = useState(true);
39
+ const [error, setError] = useState(null);
40
+ const mountedRef = useRef(true);
41
+ useEffect(() => {
42
+ mountedRef.current = true;
43
+ return () => {
44
+ mountedRef.current = false;
45
+ };
46
+ }, []);
47
+ const valid = Number.isInteger(modelVersionId) && modelVersionId > 0;
48
+ const refetch = useCallback(() => {
49
+ if (!valid) {
50
+ // Nothing to fetch — don't summon a host round-trip that would only time
51
+ // out (the host drops a non-positive modelVersionId).
52
+ setLoading(false);
53
+ return;
54
+ }
55
+ setLoading(true);
56
+ setError(null);
57
+ sendTypedRequest(getTransport(), { type: 'GET_WILDCARD_PACK', payload: { modelVersionId } }, 'WILDCARD_PACK_RESULT')
58
+ .then((result) => {
59
+ if (!mountedRef.current)
60
+ return;
61
+ if (result.error || !result.pack) {
62
+ setError(new WildcardPackError(result.error ?? 'parse-failed'));
63
+ setLoading(false);
64
+ return;
65
+ }
66
+ setPack(result.pack);
67
+ setLoading(false);
68
+ })
69
+ .catch((err) => {
70
+ if (!mountedRef.current)
71
+ return;
72
+ setError(err instanceof Error ? err : new Error(String(err)));
73
+ setLoading(false);
74
+ });
75
+ }, [valid, modelVersionId]);
76
+ useEffect(() => {
77
+ refetch();
78
+ }, [refetch]);
79
+ return { pack, loading, error, refetch };
80
+ }
81
+ //# sourceMappingURL=useWildcardPack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWildcardPack.js","sourceRoot":"","sources":["../../src/hooks/useWildcardPack.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -22,6 +22,15 @@ export { useBlockResize } from './hooks/useBlockResize.js';
22
22
  export { useBuzzPurchase } from './hooks/useBuzzPurchase.js';
23
23
  export { useBuzzBalance } from './hooks/useBuzzBalance.js';
24
24
  export type { BuzzBalance, UseBuzzBalance } from './hooks/useBuzzBalance.js';
25
+ export { useBuzzTransactions } from './hooks/useBuzzTransactions.js';
26
+ export type { BuzzTransaction, UseBuzzTransactions } from './hooks/useBuzzTransactions.js';
27
+ export { useBuzzAccounts } from './hooks/useBuzzAccounts.js';
28
+ export type { UseBuzzAccounts } from './hooks/useBuzzAccounts.js';
29
+ export { useDailyCompensation } from './hooks/useDailyCompensation.js';
30
+ export type { UseDailyCompensation } from './hooks/useDailyCompensation.js';
31
+ export { useWildcardPack, WildcardPackError } from './hooks/useWildcardPack.js';
32
+ export type { UseWildcardPack } from './hooks/useWildcardPack.js';
33
+ export type { BlockBuzzTransaction, BlockBuzzAccount, BlockDailyCompensationResource, BlockWildcardPack, BlockWildcardPackErrorCode, } from '@civitai/app-sdk/blocks';
25
34
  export { useCheckpointPicker } from './hooks/useCheckpointPicker.js';
26
35
  export { useResourcePicker } from './hooks/useResourcePicker.js';
27
36
  export { useImageUpload } from './hooks/useImageUpload.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,YAAY,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EACV,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,YAAY,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -19,6 +19,10 @@ export { useBuzzWorkflow } from './hooks/useBuzzWorkflow.js';
19
19
  export { useBlockResize } from './hooks/useBlockResize.js';
20
20
  export { useBuzzPurchase } from './hooks/useBuzzPurchase.js';
21
21
  export { useBuzzBalance } from './hooks/useBuzzBalance.js';
22
+ export { useBuzzTransactions } from './hooks/useBuzzTransactions.js';
23
+ export { useBuzzAccounts } from './hooks/useBuzzAccounts.js';
24
+ export { useDailyCompensation } from './hooks/useDailyCompensation.js';
25
+ export { useWildcardPack, WildcardPackError } from './hooks/useWildcardPack.js';
22
26
  export { useCheckpointPicker } from './hooks/useCheckpointPicker.js';
23
27
  export { useResourcePicker } from './hooks/useResourcePicker.js';
24
28
  export { useImageUpload } from './hooks/useImageUpload.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAG3F,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAO3D,QAAQ;AACR,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAG3F,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAO3D,QAAQ;AACR,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAShF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"liveHost.d.ts","sourceRoot":"","sources":["../../src/internal/liveHost.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AAEH,OAAO,EACL,KAAK,YAAY,EAGjB,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,UAAU,EAGhB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,QAAQ,EAAyC,MAAM,eAAe,CAAC;AACrF,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,oBAAoB,CAAC;AAK5B;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B,wEAAwE;IACxE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAChE,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,UAAU,CAAC;IACpC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;CACvD;AAQD;;;;;GAKG;AACH,UAAU,wBAAwB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,wBAAwB,CAgB/E;AAyHD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CAu2BjE"}
1
+ {"version":3,"file":"liveHost.d.ts","sourceRoot":"","sources":["../../src/internal/liveHost.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AAEH,OAAO,EACL,KAAK,YAAY,EAGjB,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,UAAU,EAGhB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,QAAQ,EAAyC,MAAM,eAAe,CAAC;AACrF,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,oBAAoB,CAAC;AAK5B;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B,wEAAwE;IACxE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAChE,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,UAAU,CAAC;IACpC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;CACvD;AAQD;;;;;GAKG;AACH,UAAU,wBAAwB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,wBAAwB,CAgB/E;AAyHD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CAu7BjE"}