@civitai/blocks-react 0.38.0 → 0.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -5
- package/dist/hooks/useBlockContext.d.ts +6 -0
- package/dist/hooks/useBlockContext.d.ts.map +1 -1
- package/dist/hooks/useBlockContext.js +6 -0
- package/dist/hooks/useBlockContext.js.map +1 -1
- package/dist/hooks/useBlockTheme.d.ts +39 -0
- package/dist/hooks/useBlockTheme.d.ts.map +1 -0
- package/dist/hooks/useBlockTheme.js +41 -0
- package/dist/hooks/useBlockTheme.js.map +1 -0
- package/dist/hooks/useBuzzWorkflow.d.ts +121 -12
- package/dist/hooks/useBuzzWorkflow.d.ts.map +1 -1
- package/dist/hooks/useBuzzWorkflow.js +173 -15
- package/dist/hooks/useBuzzWorkflow.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/iframeTransport.d.ts +54 -0
- package/dist/internal/iframeTransport.d.ts.map +1 -1
- package/dist/internal/iframeTransport.js +160 -1
- package/dist/internal/iframeTransport.js.map +1 -1
- package/dist/internal/liveHost.d.ts +8 -2
- package/dist/internal/liveHost.d.ts.map +1 -1
- package/dist/internal/liveHost.js +73 -6
- package/dist/internal/liveHost.js.map +1 -1
- package/dist/internal/mockHost.d.ts +20 -5
- package/dist/internal/mockHost.d.ts.map +1 -1
- package/dist/internal/mockHost.js +128 -10
- package/dist/internal/mockHost.js.map +1 -1
- package/dist/internal/transport.d.ts +58 -1
- package/dist/internal/transport.d.ts.map +1 -1
- package/dist/internal/transport.js +62 -0
- package/dist/internal/transport.js.map +1 -1
- package/dist/internal/validate.d.ts +47 -3
- package/dist/internal/validate.d.ts.map +1 -1
- package/dist/internal/validate.js +99 -3
- package/dist/internal/validate.js.map +1 -1
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -15,11 +15,12 @@ export { getTransport } from './internal/singleton.js';
|
|
|
15
15
|
export { sendTypedRequest } from './internal/transport.js';
|
|
16
16
|
export type { BlockSnapshot, BlockTransport, OutboundRequest, } from './internal/transport.js';
|
|
17
17
|
export { useBlockContext } from './hooks/useBlockContext.js';
|
|
18
|
+
export { useBlockTheme } from './hooks/useBlockTheme.js';
|
|
18
19
|
export { useBlockSettings } from './hooks/useBlockSettings.js';
|
|
19
20
|
export { useBlockToken } from './hooks/useBlockToken.js';
|
|
20
21
|
export { useHostOrigin } from './hooks/useHostOrigin.js';
|
|
21
|
-
export { useBuzzWorkflow } from './hooks/useBuzzWorkflow.js';
|
|
22
|
-
export type { SubmitWorkflowOptions } from './hooks/useBuzzWorkflow.js';
|
|
22
|
+
export { DEFAULT_WATCH_WAIT_SECONDS, useBuzzWorkflow } from './hooks/useBuzzWorkflow.js';
|
|
23
|
+
export type { SubmitWorkflowOptions, WatchWorkflowOptions } from './hooks/useBuzzWorkflow.js';
|
|
23
24
|
export { useTip } from './hooks/useTip.js';
|
|
24
25
|
export type { TipParams, TipOptions, TipResult, UseTip } from './hooks/useTip.js';
|
|
25
26
|
export { useTipAllowance } from './hooks/useTipAllowance.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,+BAA+B,CAAC;AAEvC,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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -19,10 +19,11 @@ export { getTransport } from './internal/singleton.js';
|
|
|
19
19
|
export { sendTypedRequest } from './internal/transport.js';
|
|
20
20
|
// Hooks
|
|
21
21
|
export { useBlockContext } from './hooks/useBlockContext.js';
|
|
22
|
+
export { useBlockTheme } from './hooks/useBlockTheme.js';
|
|
22
23
|
export { useBlockSettings } from './hooks/useBlockSettings.js';
|
|
23
24
|
export { useBlockToken } from './hooks/useBlockToken.js';
|
|
24
25
|
export { useHostOrigin } from './hooks/useHostOrigin.js';
|
|
25
|
-
export { useBuzzWorkflow } from './hooks/useBuzzWorkflow.js';
|
|
26
|
+
export { DEFAULT_WATCH_WAIT_SECONDS, useBuzzWorkflow } from './hooks/useBuzzWorkflow.js';
|
|
26
27
|
export { useTip } from './hooks/useTip.js';
|
|
27
28
|
export { useTipAllowance } from './hooks/useTipAllowance.js';
|
|
28
29
|
export { useBlockResize } from './hooks/useBlockResize.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,8EAA8E;AAC9E,mEAAmE;AACnE,yEAAyE;AACzE,6EAA6E;AAC7E,+EAA+E;AAC/E,yEAAyE;AACzE,OAAO,+BAA+B,CAAC;AAEvC,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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,8EAA8E;AAC9E,mEAAmE;AACnE,yEAAyE;AACzE,6EAA6E;AAC7E,+EAA+E;AAC/E,yEAAyE;AACzE,OAAO,+BAA+B,CAAC;AAEvC,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,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,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,0BAA0B,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAEzF,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,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,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,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;AAEhF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AAErF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAavD,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;AAEzD,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -21,6 +21,13 @@ export interface IframeTransportOptions {
|
|
|
21
21
|
*/
|
|
22
22
|
export declare class IframeTransport implements BlockTransport {
|
|
23
23
|
private readonly originMatcher;
|
|
24
|
+
/**
|
|
25
|
+
* The EXACT (non-wildcard) entries of `allowedParentOrigins`, usable as a
|
|
26
|
+
* `postMessage` `targetOrigin`. A wildcard entry (`https://*.civitaic.com`)
|
|
27
|
+
* is not a concrete origin and cannot be a target, so it is excluded here —
|
|
28
|
+
* see {@link announceReady} for what happens when nothing exact remains.
|
|
29
|
+
*/
|
|
30
|
+
private readonly exactAllowedOrigins;
|
|
24
31
|
private readonly window;
|
|
25
32
|
private snapshot;
|
|
26
33
|
private readonly listeners;
|
|
@@ -42,6 +49,28 @@ export declare class IframeTransport implements BlockTransport {
|
|
|
42
49
|
private initResolved;
|
|
43
50
|
private readonly messageListener;
|
|
44
51
|
constructor(opts: IframeTransportOptions);
|
|
52
|
+
/**
|
|
53
|
+
* Read the host's URL-fragment fast path into the pre-init snapshot.
|
|
54
|
+
*
|
|
55
|
+
* Silent no-op when the fragment is absent, belongs to the block app itself,
|
|
56
|
+
* or is a version we do not understand — in every one of those cases the
|
|
57
|
+
* block falls back to waiting for `BLOCK_INIT`, i.e. today's behaviour.
|
|
58
|
+
*/
|
|
59
|
+
private seedFromFragment;
|
|
60
|
+
/**
|
|
61
|
+
* Post the contentless `BLOCK_HELLO` announce to the parent.
|
|
62
|
+
*
|
|
63
|
+
* Targeting: the announce goes out BEFORE any `BLOCK_INIT` has been
|
|
64
|
+
* validated, so `parentOrigin` is still null and we cannot use the normal
|
|
65
|
+
* `postToParent` path. We therefore aim at each EXACT entry of the configured
|
|
66
|
+
* allowlist — the set of origins this block was built to trust — rather than
|
|
67
|
+
* broadcasting. Only when the allowlist is wildcard-only (no exact origin can
|
|
68
|
+
* be derived, e.g. a preview-subdomain-only build) do we fall back to `'*'`,
|
|
69
|
+
* which is acceptable solely because the message carries no payload: it
|
|
70
|
+
* discloses nothing a framing page does not already know from the URL it
|
|
71
|
+
* chose to frame.
|
|
72
|
+
*/
|
|
73
|
+
private announceReady;
|
|
45
74
|
getSnapshot(): BlockSnapshot;
|
|
46
75
|
/**
|
|
47
76
|
* The validated parent origin — `null` until `BLOCK_INIT` lands.
|
|
@@ -75,6 +104,31 @@ export declare class IframeTransport implements BlockTransport {
|
|
|
75
104
|
private postToParent;
|
|
76
105
|
private handleMessage;
|
|
77
106
|
private applyTokenRefresh;
|
|
107
|
+
/**
|
|
108
|
+
* Apply a host-pushed `THEME_CHANGE` to the snapshot.
|
|
109
|
+
*
|
|
110
|
+
* Emits only when the value actually MOVED. `useSyncExternalStore` re-reads
|
|
111
|
+
* `getSnapshot()` on every emit and re-renders when the identity differs, so
|
|
112
|
+
* an unconditional `{ ...snapshot }` would re-render every subscriber on a
|
|
113
|
+
* redundant push (the host re-sending the same theme, e.g. after a re-mount
|
|
114
|
+
* of its effect) even though nothing changed.
|
|
115
|
+
*
|
|
116
|
+
* Updates BOTH readers. The host forwards the theme TWICE — as the top-level
|
|
117
|
+
* `BLOCK_INIT.theme` and again inside `BLOCK_INIT.context` (`theme` is on the
|
|
118
|
+
* host's context allowlist, and `ModelSlotContext.theme` is a documented,
|
|
119
|
+
* publicly exported SDK field: "Host-page color scheme; lets the iframe match
|
|
120
|
+
* without a flicker"). Moving only the top-level field would leave a block
|
|
121
|
+
* that reads `context.theme` frozen at its mount-time value while
|
|
122
|
+
* `useBlockContext().theme` moved — a silent divergence between two fields
|
|
123
|
+
* the SDK's own types invite you to read interchangeably.
|
|
124
|
+
*
|
|
125
|
+
* Only ever UPDATES a context that already carries the key; never INTRODUCES
|
|
126
|
+
* it. A host/slot that omits `theme` from its context said something by
|
|
127
|
+
* omitting it, and synthesising the field here would make the SDK assert a
|
|
128
|
+
* value the host never sent (and needlessly break `context` identity for
|
|
129
|
+
* every non-model slot).
|
|
130
|
+
*/
|
|
131
|
+
private applyThemeChange;
|
|
78
132
|
private emit;
|
|
79
133
|
}
|
|
80
134
|
//# sourceMappingURL=iframeTransport.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iframeTransport.d.ts","sourceRoot":"","sources":["../../src/internal/iframeTransport.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"iframeTransport.d.ts","sourceRoot":"","sources":["../../src/internal/iframeTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAEzB,KAAK,wBAAwB,EAC9B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AASxB,MAAM,WAAW,sBAAsB;IACrC;;;;;;;OAOG;IACH,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AASD;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,cAAc;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAoB;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IAEnD,yEAAyE;IACzE,OAAO,CAAC,YAAY,CAAuB;IAE3C,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiD;IAC1E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAE7D;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsD;IAEpF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;IACxD,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;gBAEpD,IAAI,EAAE,sBAAsB;IA6DxC;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAgDxB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,aAAa;IAqBrB,WAAW,IAAI,aAAa;IAI5B;;;;;;;;;;;;;;;;OAgBG;IACH,aAAa,IAAI,MAAM,GAAG,IAAI;IAI9B,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAO3C,WAAW,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAIxC,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAIhD,WAAW,CACT,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,wBAAwB,EACtC,IAAI,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAChC,OAAO,CAAC,OAAO,CAAC;IAmBnB,SAAS,CACP,IAAI,EAAE,wBAAwB,EAC9B,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAClC,MAAM,IAAI;IAeb,uDAAuD;IACvD,OAAO,IAAI,IAAI;IAYf,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,aAAa;IA0HrB,OAAO,CAAC,iBAAiB;IASzB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,IAAI;CAGb"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isMessage, } from '@civitai/app-sdk/blocks';
|
|
1
|
+
import { isMessage, parseBlockInitFragment, stripBlockInitFragment, } from '@civitai/app-sdk/blocks';
|
|
2
2
|
import { EMPTY_SNAPSHOT, nextRequestId, snapshotFromInit, tokenFromWrapped, } from './transport.js';
|
|
3
3
|
import { OriginMatcher } from './originMatcher.js';
|
|
4
4
|
import { payloadValidatorFor } from './validate.js';
|
|
@@ -12,6 +12,13 @@ const DEFAULT_REQUEST_TIMEOUT_MS = 30_000;
|
|
|
12
12
|
*/
|
|
13
13
|
export class IframeTransport {
|
|
14
14
|
originMatcher;
|
|
15
|
+
/**
|
|
16
|
+
* The EXACT (non-wildcard) entries of `allowedParentOrigins`, usable as a
|
|
17
|
+
* `postMessage` `targetOrigin`. A wildcard entry (`https://*.civitaic.com`)
|
|
18
|
+
* is not a concrete origin and cannot be a target, so it is excluded here —
|
|
19
|
+
* see {@link announceReady} for what happens when nothing exact remains.
|
|
20
|
+
*/
|
|
21
|
+
exactAllowedOrigins;
|
|
15
22
|
window;
|
|
16
23
|
snapshot = EMPTY_SNAPSHOT;
|
|
17
24
|
listeners = new Set();
|
|
@@ -41,6 +48,9 @@ export class IframeTransport {
|
|
|
41
48
|
// `https://*.example.com` entries match any subdomain on a dot boundary
|
|
42
49
|
// (mirrors the host-side CSP frame-ancestors convention).
|
|
43
50
|
this.originMatcher = new OriginMatcher(opts.allowedParentOrigins);
|
|
51
|
+
this.exactAllowedOrigins = opts.allowedParentOrigins
|
|
52
|
+
.map((entry) => entry.trim())
|
|
53
|
+
.filter((entry) => entry.length > 0 && !entry.includes('*'));
|
|
44
54
|
this.window = opts.window ?? globalThis.window;
|
|
45
55
|
if (!this.window) {
|
|
46
56
|
throw new Error('IframeTransport: no window available; cannot mount on the server.');
|
|
@@ -56,8 +66,110 @@ export class IframeTransport {
|
|
|
56
66
|
'Verify the host frame is sending the init message and that its origin is in allowedParentOrigins.'));
|
|
57
67
|
}
|
|
58
68
|
}, INIT_TIMEOUT_MS);
|
|
69
|
+
// FAST PATH (additive): seed the three non-secret init fields from the URL
|
|
70
|
+
// fragment, if the host put one there. This runs BEFORE the listener is
|
|
71
|
+
// attached so that even a `BLOCK_INIT` racing in on the very next task
|
|
72
|
+
// finds a snapshot already carrying theme/renderMode/blockInstanceId.
|
|
73
|
+
//
|
|
74
|
+
// 🔴 `ready` stays FALSE. Only `BLOCK_INIT` flips it, and only
|
|
75
|
+
// `snapshotFromInit` — which runs later and overwrites all three fields —
|
|
76
|
+
// is authoritative. No token, viewer, context or settings is ever sourced
|
|
77
|
+
// from the URL.
|
|
78
|
+
this.seedFromFragment();
|
|
59
79
|
this.messageListener = (event) => this.handleMessage(event);
|
|
60
80
|
this.window.addEventListener('message', this.messageListener);
|
|
81
|
+
// INVERTED HANDSHAKE (additive): tell the parent we are listening, so it can
|
|
82
|
+
// push `BLOCK_INIT` in response rather than waiting out its retry tick. This
|
|
83
|
+
// MUST come after `addEventListener` — otherwise a host that answers
|
|
84
|
+
// synchronously would post into a frame with no listener and the announce
|
|
85
|
+
// would have made things worse, not better.
|
|
86
|
+
//
|
|
87
|
+
// 🔴 Best-effort only. Nothing downstream depends on it: the host keeps its
|
|
88
|
+
// own bounded retry + readiness timeout, so a dropped/ignored announce costs
|
|
89
|
+
// at most the latency this was meant to save.
|
|
90
|
+
this.announceReady();
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Read the host's URL-fragment fast path into the pre-init snapshot.
|
|
94
|
+
*
|
|
95
|
+
* Silent no-op when the fragment is absent, belongs to the block app itself,
|
|
96
|
+
* or is a version we do not understand — in every one of those cases the
|
|
97
|
+
* block falls back to waiting for `BLOCK_INIT`, i.e. today's behaviour.
|
|
98
|
+
*/
|
|
99
|
+
seedFromFragment() {
|
|
100
|
+
let hash;
|
|
101
|
+
try {
|
|
102
|
+
hash = this.window.location?.hash;
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// A location read can throw in exotic embeddings; the fast path is
|
|
106
|
+
// optional, so degrade to "no fragment".
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const fragment = parseBlockInitFragment(hash);
|
|
110
|
+
if (fragment.theme === undefined &&
|
|
111
|
+
fragment.renderMode === undefined &&
|
|
112
|
+
fragment.blockInstanceId === undefined) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
this.snapshot = {
|
|
116
|
+
...this.snapshot,
|
|
117
|
+
...(fragment.theme !== undefined ? { theme: fragment.theme } : {}),
|
|
118
|
+
...(fragment.renderMode !== undefined ? { renderMode: fragment.renderMode } : {}),
|
|
119
|
+
...(fragment.blockInstanceId !== undefined
|
|
120
|
+
? { blockInstanceId: fragment.blockInstanceId }
|
|
121
|
+
: {}),
|
|
122
|
+
};
|
|
123
|
+
// Hygiene: take our keys back out of the visible URL, preserving anything
|
|
124
|
+
// the block app itself put in the fragment. Purely cosmetic — every
|
|
125
|
+
// consumer reads the snapshot, not the URL — so a failure (an opaque-origin
|
|
126
|
+
// sandbox rejects `history.replaceState`) is swallowed.
|
|
127
|
+
try {
|
|
128
|
+
const remainder = stripBlockInitFragment(hash);
|
|
129
|
+
if (remainder !== null) {
|
|
130
|
+
const loc = this.window.location;
|
|
131
|
+
const base = `${loc.pathname}${loc.search}`;
|
|
132
|
+
this.window.history.replaceState(this.window.history.state, '', remainder.length > 0 ? `${base}#${remainder}` : base);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
// Sandboxed opaque origin, or no History API. Nothing depends on this.
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Post the contentless `BLOCK_HELLO` announce to the parent.
|
|
141
|
+
*
|
|
142
|
+
* Targeting: the announce goes out BEFORE any `BLOCK_INIT` has been
|
|
143
|
+
* validated, so `parentOrigin` is still null and we cannot use the normal
|
|
144
|
+
* `postToParent` path. We therefore aim at each EXACT entry of the configured
|
|
145
|
+
* allowlist — the set of origins this block was built to trust — rather than
|
|
146
|
+
* broadcasting. Only when the allowlist is wildcard-only (no exact origin can
|
|
147
|
+
* be derived, e.g. a preview-subdomain-only build) do we fall back to `'*'`,
|
|
148
|
+
* which is acceptable solely because the message carries no payload: it
|
|
149
|
+
* discloses nothing a framing page does not already know from the URL it
|
|
150
|
+
* chose to frame.
|
|
151
|
+
*/
|
|
152
|
+
announceReady() {
|
|
153
|
+
let parent;
|
|
154
|
+
try {
|
|
155
|
+
parent = this.window.parent;
|
|
156
|
+
// Not framed (or self-framed) — nobody to announce to.
|
|
157
|
+
if (!parent || parent === this.window)
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const targets = this.exactAllowedOrigins.length > 0 ? this.exactAllowedOrigins : ['*'];
|
|
164
|
+
for (const target of targets) {
|
|
165
|
+
try {
|
|
166
|
+
parent.postMessage({ type: 'BLOCK_HELLO' }, target);
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
// An unreachable/mismatched target throws nothing in practice; guard
|
|
170
|
+
// anyway so one bad allowlist entry can't abort the remaining posts.
|
|
171
|
+
}
|
|
172
|
+
}
|
|
61
173
|
}
|
|
62
174
|
getSnapshot() {
|
|
63
175
|
return this.snapshot;
|
|
@@ -207,6 +319,20 @@ export class IframeTransport {
|
|
|
207
319
|
this.applyTokenRefresh(data.payload.token);
|
|
208
320
|
return;
|
|
209
321
|
}
|
|
322
|
+
// Host-pushed SITE-THEME change (viewer toggled light/dark mid-session; no
|
|
323
|
+
// requestId). Same shape of handling as TOKEN_REFRESH: apply to the snapshot
|
|
324
|
+
// and emit, never matches a pending request.
|
|
325
|
+
//
|
|
326
|
+
// Deliberately NOT gated on `initResolved`. A push that lands before
|
|
327
|
+
// BLOCK_INIT is still the freshest value the host has, and it cannot
|
|
328
|
+
// "half-init" anything: `ready` stays false (only BLOCK_INIT flips it) and
|
|
329
|
+
// `snapshotFromInit` replaces the whole snapshot when init lands, so the
|
|
330
|
+
// payload remains authoritative exactly as it is for the URL-fragment fast
|
|
331
|
+
// path seeded in the constructor.
|
|
332
|
+
if (isMessage(data, 'THEME_CHANGE')) {
|
|
333
|
+
this.applyThemeChange(data.payload.theme);
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
210
336
|
// For request/response replies, look up the pending entry by `requestId`.
|
|
211
337
|
const payload = data.payload;
|
|
212
338
|
let pending;
|
|
@@ -264,6 +390,39 @@ export class IframeTransport {
|
|
|
264
390
|
this.snapshot = { ...this.snapshot, token: tokenFromWrapped(wrapped) };
|
|
265
391
|
this.emit();
|
|
266
392
|
}
|
|
393
|
+
/**
|
|
394
|
+
* Apply a host-pushed `THEME_CHANGE` to the snapshot.
|
|
395
|
+
*
|
|
396
|
+
* Emits only when the value actually MOVED. `useSyncExternalStore` re-reads
|
|
397
|
+
* `getSnapshot()` on every emit and re-renders when the identity differs, so
|
|
398
|
+
* an unconditional `{ ...snapshot }` would re-render every subscriber on a
|
|
399
|
+
* redundant push (the host re-sending the same theme, e.g. after a re-mount
|
|
400
|
+
* of its effect) even though nothing changed.
|
|
401
|
+
*
|
|
402
|
+
* Updates BOTH readers. The host forwards the theme TWICE — as the top-level
|
|
403
|
+
* `BLOCK_INIT.theme` and again inside `BLOCK_INIT.context` (`theme` is on the
|
|
404
|
+
* host's context allowlist, and `ModelSlotContext.theme` is a documented,
|
|
405
|
+
* publicly exported SDK field: "Host-page color scheme; lets the iframe match
|
|
406
|
+
* without a flicker"). Moving only the top-level field would leave a block
|
|
407
|
+
* that reads `context.theme` frozen at its mount-time value while
|
|
408
|
+
* `useBlockContext().theme` moved — a silent divergence between two fields
|
|
409
|
+
* the SDK's own types invite you to read interchangeably.
|
|
410
|
+
*
|
|
411
|
+
* Only ever UPDATES a context that already carries the key; never INTRODUCES
|
|
412
|
+
* it. A host/slot that omits `theme` from its context said something by
|
|
413
|
+
* omitting it, and synthesising the field here would make the SDK assert a
|
|
414
|
+
* value the host never sent (and needlessly break `context` identity for
|
|
415
|
+
* every non-model slot).
|
|
416
|
+
*/
|
|
417
|
+
applyThemeChange(theme) {
|
|
418
|
+
if (this.snapshot.theme === theme)
|
|
419
|
+
return;
|
|
420
|
+
const next = { ...this.snapshot, theme };
|
|
421
|
+
if ('theme' in next.context)
|
|
422
|
+
next.context = { ...next.context, theme };
|
|
423
|
+
this.snapshot = next;
|
|
424
|
+
this.emit();
|
|
425
|
+
}
|
|
267
426
|
emit() {
|
|
268
427
|
for (const listener of this.listeners)
|
|
269
428
|
listener();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iframeTransport.js","sourceRoot":"","sources":["../../src/internal/iframeTransport.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"iframeTransport.js","sourceRoot":"","sources":["../../src/internal/iframeTransport.ts"],"names":[],"mappings":"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"}
|
|
@@ -88,8 +88,14 @@ export interface LiveHostOptions {
|
|
|
88
88
|
/** Host theme delivered in `BLOCK_INIT` + context. Default `'dark'`. */
|
|
89
89
|
theme?: Theme;
|
|
90
90
|
/**
|
|
91
|
-
* The `BLOCK_INIT` context. Defaults to a
|
|
92
|
-
*
|
|
91
|
+
* The `BLOCK_INIT` context. Defaults to a COMPLETE `PageSlotContext` mirroring
|
|
92
|
+
* what `PageBlockHost.buildContext()` sends (slug/subPath/viewerUserId/
|
|
93
|
+
* viewerUsername/theme), since dev-token mints PAGE tokens only — not a
|
|
94
|
+
* `{ slotId }` stub, which would not even narrow through `isPageSlotContext`.
|
|
95
|
+
*
|
|
96
|
+
* Pass this to set a REAL `slug`: the block token carries no slug claim, so the
|
|
97
|
+
* default is the placeholder `'live-dev-app'`. `theme` is layered in from
|
|
98
|
+
* {@link LiveHostOptions.theme} even if the context you pass omits it.
|
|
93
99
|
*/
|
|
94
100
|
context?: BlockContext;
|
|
95
101
|
/**
|
|
@@ -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;
|
|
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;AAGjC,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;;;;;;;;;OASG;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,CA61CjE"}
|
|
@@ -61,6 +61,7 @@
|
|
|
61
61
|
* purchase page and replies `purchased: false` — honest-by-design, never a
|
|
62
62
|
* fabricated success. See the per-message handlers below.
|
|
63
63
|
*/
|
|
64
|
+
import { hostContextWithTheme } from './transport.js';
|
|
64
65
|
import { openPickerOverlay, } from './pickerOverlay.js';
|
|
65
66
|
/** Default civitai backend the live host forwards to. */
|
|
66
67
|
const DEFAULT_BACKEND_BASE_URL = 'https://civitai.com';
|
|
@@ -342,6 +343,13 @@ export function createLiveHost(options) {
|
|
|
342
343
|
}
|
|
343
344
|
let installed = false;
|
|
344
345
|
let teardown = () => { };
|
|
346
|
+
// Current theme + a handle on the installed dispatcher, so `setTheme` can push
|
|
347
|
+
// a host-initiated `THEME_CHANGE` the way civitai.com does when the viewer
|
|
348
|
+
// toggles dark mode. Mirrors createMockHost — `dev:live` must be able to
|
|
349
|
+
// exercise the same push, or a block's live-theme handling is untestable on
|
|
350
|
+
// the host that is otherwise the closest thing to prod.
|
|
351
|
+
let currentTheme = theme;
|
|
352
|
+
let pushToBlock = null;
|
|
345
353
|
function install() {
|
|
346
354
|
if (installed)
|
|
347
355
|
return teardown;
|
|
@@ -358,6 +366,7 @@ export function createLiveHost(options) {
|
|
|
358
366
|
return;
|
|
359
367
|
win.dispatchEvent(new MessageEvent('message', { data, origin: parentOrigin }));
|
|
360
368
|
};
|
|
369
|
+
pushToBlock = dispatchToBlock;
|
|
361
370
|
const after = (ms, fn) => {
|
|
362
371
|
const t = setTimeout(() => {
|
|
363
372
|
timers.delete(t);
|
|
@@ -384,10 +393,19 @@ export function createLiveHost(options) {
|
|
|
384
393
|
const me = (await res.json());
|
|
385
394
|
if (typeof me.id !== 'number')
|
|
386
395
|
return anonFallbackViewer();
|
|
396
|
+
// `/api/v1/blocks/me` is the AUTHORITATIVE self-read and does carry
|
|
397
|
+
// `status` — but this builds `BLOCK_INIT.viewer`, which the real host
|
|
398
|
+
// projects down to `{ id, username }` today (civitai/civitai `main`'s
|
|
399
|
+
// `projectBlockInitViewer`), and to `{ id, username, signedIn }` once
|
|
400
|
+
// civitai/civitai#3707 (OPEN, unmerged) lands. Never moderation state,
|
|
401
|
+
// in either version (civitai #2521). Forwarding `me.status` here would
|
|
402
|
+
// make the live dev host more generous than production. A block that
|
|
403
|
+
// wants `status` must ask for it via `GET_VIEWER` / `useViewer()`, which
|
|
404
|
+
// is exactly the scope-gated path this release steers authors to.
|
|
387
405
|
return {
|
|
388
406
|
id: me.id,
|
|
389
407
|
username: me.username ?? null,
|
|
390
|
-
|
|
408
|
+
signedIn: true,
|
|
391
409
|
};
|
|
392
410
|
}
|
|
393
411
|
catch (err) {
|
|
@@ -401,8 +419,26 @@ export function createLiveHost(options) {
|
|
|
401
419
|
const viewer = await resolveViewer();
|
|
402
420
|
if (torn)
|
|
403
421
|
return;
|
|
404
|
-
|
|
405
|
-
|
|
422
|
+
// A FAITHFUL `PageSlotContext` default — see the same note in `mockHost`.
|
|
423
|
+
// The real `PageBlockHost` always sends slug/subPath/viewerUserId/theme.
|
|
424
|
+
//
|
|
425
|
+
// `slug` is a PLACEHOLDER, not a derived value: the block token carries no
|
|
426
|
+
// slug claim (see `DecodedBlockTokenPayload`), so the live host genuinely
|
|
427
|
+
// cannot know the app's `<slug>` in `<slug>.civit.ai`. It must not be
|
|
428
|
+
// filled from `decoded.blockId` — a blockId is a different identifier in a
|
|
429
|
+
// different namespace, and handing it over as a slug is the kind of
|
|
430
|
+
// plausible-but-wrong dev value a block would build a URL out of. A dev who
|
|
431
|
+
// needs the real slug passes `options.context`.
|
|
432
|
+
const baseContext = options.context ?? {
|
|
433
|
+
slotId: PAGE_SLOT_ID,
|
|
434
|
+
entityType: 'none',
|
|
435
|
+
slug: 'live-dev-app',
|
|
436
|
+
subPath: '',
|
|
437
|
+
viewerUserId: viewer?.id ?? null,
|
|
438
|
+
viewerUsername: viewer?.username ?? null,
|
|
439
|
+
theme: currentTheme,
|
|
440
|
+
};
|
|
441
|
+
const context = hostContextWithTheme(baseContext, currentTheme);
|
|
406
442
|
const initPayload = {
|
|
407
443
|
blockInstanceId: decoded.blockInstanceId ?? 'page_live',
|
|
408
444
|
blockId: decoded.blockId ?? 'live-block',
|
|
@@ -411,7 +447,7 @@ export function createLiveHost(options) {
|
|
|
411
447
|
context,
|
|
412
448
|
settings: { publisherSettings: {}, userSettings: {} },
|
|
413
449
|
viewer,
|
|
414
|
-
theme,
|
|
450
|
+
theme: currentTheme,
|
|
415
451
|
renderMode: 'iframe',
|
|
416
452
|
...(decoded.domain != null ? { domain: decoded.domain } : {}),
|
|
417
453
|
...(typeof decoded.maxBrowsingLevel === 'number'
|
|
@@ -1266,6 +1302,7 @@ export function createLiveHost(options) {
|
|
|
1266
1302
|
return;
|
|
1267
1303
|
torn = true;
|
|
1268
1304
|
installed = false;
|
|
1305
|
+
pushToBlock = null;
|
|
1269
1306
|
for (const t of timers)
|
|
1270
1307
|
clearTimeout(t);
|
|
1271
1308
|
timers.clear();
|
|
@@ -1295,12 +1332,42 @@ export function createLiveHost(options) {
|
|
|
1295
1332
|
setScenario: (_patch) => {
|
|
1296
1333
|
/* no-op in live mode */
|
|
1297
1334
|
},
|
|
1335
|
+
// NOT a no-op (unlike setScenario/buzz): the theme is a real, host-owned
|
|
1336
|
+
// value the live host genuinely controls, so flipping it pushes a real
|
|
1337
|
+
// THEME_CHANGE. Skips a redundant push when the value didn't change,
|
|
1338
|
+
// matching the real host's changed-value-only effect.
|
|
1339
|
+
setTheme: (next) => {
|
|
1340
|
+
if (currentTheme === next)
|
|
1341
|
+
return;
|
|
1342
|
+
currentTheme = next;
|
|
1343
|
+
pushToBlock?.({ type: 'THEME_CHANGE', payload: { theme: next } });
|
|
1344
|
+
},
|
|
1298
1345
|
buzz: buzzHandle,
|
|
1299
1346
|
};
|
|
1300
1347
|
}
|
|
1301
|
-
/**
|
|
1348
|
+
/**
|
|
1349
|
+
* A minimal anon-ish viewer used when `/api/v1/blocks/me` can't be reached.
|
|
1350
|
+
*
|
|
1351
|
+
* Carries EXACTLY `{ id, username, signedIn }` — the key set the BLOCK_INIT
|
|
1352
|
+
* contract is moving to. The two halves have different provenance:
|
|
1353
|
+
*
|
|
1354
|
+
* - NO `status` is production TODAY. civitai/civitai `main`'s
|
|
1355
|
+
* `projectBlockInitViewer` builds `{ id, username }`, pinned as exactly
|
|
1356
|
+
* `['id', 'username']` by `__tests__/projectBlockInit.test.ts`. The platform
|
|
1357
|
+
* withholds the viewer's moderation state from third-party iframes (civitai
|
|
1358
|
+
* #2521), so a dev host that sends it invites a block to read a field
|
|
1359
|
+
* production never provides.
|
|
1360
|
+
* - `signedIn` is NOT production yet. It appears zero times under
|
|
1361
|
+
* `src/components/AppBlocks/` on `main`; it arrives with civitai/civitai#3707
|
|
1362
|
+
* (OPEN, unmerged), which also moves the host's pinned key set to
|
|
1363
|
+
* `['id', 'signedIn', 'username']`. Emitted here so the field is exercisable
|
|
1364
|
+
* locally ahead of the host — `viewer !== null` is still the gate to SHIP.
|
|
1365
|
+
*
|
|
1366
|
+
* See {@link DEFAULT_VIEWER} in `mockHost` for the same note and for what to
|
|
1367
|
+
* unwind if #3707 is abandoned.
|
|
1368
|
+
*/
|
|
1302
1369
|
function anonFallbackViewer() {
|
|
1303
|
-
return { id: 0, username: 'dev-live',
|
|
1370
|
+
return { id: 0, username: 'dev-live', signedIn: true };
|
|
1304
1371
|
}
|
|
1305
1372
|
/**
|
|
1306
1373
|
* Extract the `snapshot` from a tRPC response. Handles the superjson
|