@devvit/public-api 0.10.21-next-2024-05-14-cddb8b57c.0 → 0.10.21-next-2024-05-14-d444343c8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  import { type Metadata, type UIRequest, type UIResponse } from '@devvit/protos';
2
- import type { Hook, HookSegment, HookParams } from './types.js';
3
- import { RenderContext } from './RenderContext.js';
4
2
  import type { EffectEmitter } from '../EffectEmitter.js';
3
+ import { RenderContext } from './RenderContext.js';
4
+ import type { Hook, HookParams, HookSegment } from './types.js';
5
5
  /**
6
6
  * This can be a global/singleton because render is synchronous.
7
7
  *
@@ -1 +1 @@
1
- {"version":3,"file":"BlocksHandler.d.ts","sourceRoot":"","sources":["../../../../../src/devvit/internals/blocks/handler/BlocksHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAK7F,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAsB,MAAM,YAAY,CAAC;AAEpF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;;;;GAMG;AACH,eAAO,IAAI,oBAAoB,EAAE,aAAa,GAAG,IAAW,CAAC;AAE7D,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD;AAED,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,IAAI,EACzC,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,CAAC,GAChC,CAAC,CAgCH;AAED,eAAO,IAAI,oBAAoB,EAAE,aAAa,GAAG,IAAW,CAAC;AAE7D;;;;GAIG;AACH,qBAAa,aAAa;;IAIxB,oBAAoB,EAAE,aAAa,GAAG,IAAI,CAAQ;gBAEtC,IAAI,EAAE,GAAG,CAAC,iBAAiB;IAKjC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;CA8Q3E"}
1
+ {"version":3,"file":"BlocksHandler.d.ts","sourceRoot":"","sources":["../../../../../src/devvit/internals/blocks/handler/BlocksHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAK7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAe,IAAI,EAAE,UAAU,EAAE,WAAW,EAAS,MAAM,YAAY,CAAC;AAGpF;;;;;;GAMG;AACH,eAAO,IAAI,oBAAoB,EAAE,aAAa,GAAG,IAAW,CAAC;AAE7D,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD;AAED,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,IAAI,EACzC,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,CAAC,GAChC,CAAC,CAgCH;AAED,eAAO,IAAI,oBAAoB,EAAE,aAAa,GAAG,IAAW,CAAC;AAE7D;;;;GAIG;AACH,qBAAa,aAAa;;IAIxB,oBAAoB,EAAE,aAAa,GAAG,IAAI,CAAQ;gBAEtC,IAAI,EAAE,GAAG,CAAC,iBAAiB;IAKjC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;CAgR3E"}
@@ -10,10 +10,10 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
12
  var _BlocksHandler_instances, _BlocksHandler_root, _BlocksHandler_contextBuilder, _BlocksHandler_blocksTransformer, _BlocksHandler_loadHooks, _BlocksHandler_handleAsyncQueues, _BlocksHandler_attemptHook, _BlocksHandler_handleMainQueue, _BlocksHandler_renderRoot, _BlocksHandler_render, _BlocksHandler_renderList, _BlocksHandler_renderElement, _BlocksHandler_reifyProps;
13
- import { ContextBuilder } from './ContextBuilder.js';
14
13
  import { BlocksTransformer } from '../BlocksTransformer.js';
15
- import { RenderInterruptError } from './types.js';
14
+ import { ContextBuilder } from './ContextBuilder.js';
16
15
  import { RenderContext } from './RenderContext.js';
16
+ import { RenderInterruptError } from './types.js';
17
17
  /**
18
18
  * This can be a global/singleton because render is synchronous.
19
19
  *
@@ -109,6 +109,7 @@ export class BlocksHandler {
109
109
  const noEvents = !request.events?.length;
110
110
  const isMainQueue = noEvents || eventsToProcess.some((e) => !e.async);
111
111
  const isBlockingSSR = eventsToProcess.some((e) => e.blocking);
112
+ let changed;
112
113
  let progress;
113
114
  let remaining = [...eventsToProcess];
114
115
  while (eventsToProcess.length > 0) {
@@ -145,6 +146,7 @@ export class BlocksHandler {
145
146
  */
146
147
  if (progress) {
147
148
  context._state = progress._state;
149
+ context._changed = changed;
148
150
  context._effects = progress._effects;
149
151
  remaining.forEach((e) => {
150
152
  // e.retry = true;
@@ -179,6 +181,7 @@ export class BlocksHandler {
179
181
  * If we're going back through this again, we need to capture the progress, and the remaining events.
180
182
  */
181
183
  if (eventsToProcess.length > 0) {
184
+ changed = { ...context._changed };
182
185
  progress = {
183
186
  _state: _structuredClone(context._state),
184
187
  _effects: { ...context._effects },
@@ -195,7 +198,7 @@ export class BlocksHandler {
195
198
  }
196
199
  }
197
200
  return {
198
- state: context._state,
201
+ state: context._changedState,
199
202
  effects: context.effects,
200
203
  blocks,
201
204
  events: context._requeueEvents,
@@ -235,7 +238,6 @@ async function _BlocksHandler_handleAsyncQueues(context, ...batch) {
235
238
  // We need to handle events in order, so that the state is updated in the correct order.
236
239
  for (const event of batch) {
237
240
  __classPrivateFieldGet(this, _BlocksHandler_instances, "m", _BlocksHandler_loadHooks).call(this, context, event);
238
- context._state.__generation = Number(context._state.__generation ?? 0) + 1;
239
241
  await __classPrivateFieldGet(this, _BlocksHandler_instances, "m", _BlocksHandler_attemptHook).call(this, context, event);
240
242
  }
241
243
  }, _BlocksHandler_renderRoot = function _BlocksHandler_renderRoot(component, props, context) {
@@ -1,7 +1,7 @@
1
- import type { Effect, UIRequest, UIEvent } from '@devvit/protos';
1
+ import type { Effect, UIEvent, UIRequest } from '@devvit/protos';
2
2
  import type { Devvit } from '../../../Devvit.js';
3
- import type { BlocksState, HookSegment, Hook, EventHandler, HookRef } from './types.js';
4
3
  import type { EffectEmitter } from '../EffectEmitter.js';
4
+ import type { BlocksState, EventHandler, Hook, HookRef, HookSegment } from './types.js';
5
5
  /**
6
6
  * The RenderContext is a class that holds the state of the rendering process.
7
7
  *
@@ -13,8 +13,8 @@ import type { EffectEmitter } from '../EffectEmitter.js';
13
13
  * to add special cases for new features, but we should strive to work within the existing framework.
14
14
  */
15
15
  export declare class RenderContext implements EffectEmitter {
16
+ #private;
16
17
  request: UIRequest;
17
- _state: BlocksState;
18
18
  _segments: (HookSegment & {
19
19
  next: number;
20
20
  })[];
@@ -26,7 +26,7 @@ export declare class RenderContext implements EffectEmitter {
26
26
  [key: string]: Effect;
27
27
  };
28
28
  _changed: {
29
- [key: string]: boolean;
29
+ [hookID: string]: true;
30
30
  };
31
31
  /** Events that will re-enter the dispatcher queue */
32
32
  _requeueEvents: UIEvent[];
@@ -46,6 +46,12 @@ export declare class RenderContext implements EffectEmitter {
46
46
  get devvitContext(): Devvit.Context;
47
47
  set devvitContext(context: Devvit.Context);
48
48
  constructor(request: UIRequest);
49
+ /** The state delta new to this render. */
50
+ get _changedState(): BlocksState;
51
+ /** The complete render state. */
52
+ get _state(): BlocksState;
53
+ /** Replacing state resets the delta for the next render. */
54
+ set _state(state: BlocksState);
49
55
  push(options: HookSegment): void;
50
56
  pop(): void;
51
57
  addUndeliveredEventHandler(id: string, handler: EventHandler): void;
@@ -1 +1 @@
1
- {"version":3,"file":"RenderContext.d.ts","sourceRoot":"","sources":["../../../../../src/devvit/internals/blocks/handler/RenderContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;;;;;;;GASG;AACH,qBAAa,aAAc,YAAW,aAAa;IA2B9B,OAAO,EAAE,SAAS;IA1BrC,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,CAAC,WAAW,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAM;IACnD,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAM;IACrC,WAAW,EAAE,MAAM,CAAM;IACzB,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAM;IACzC,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAM;IAC1C,qDAAqD;IACrD,cAAc,EAAE,OAAO,EAAE,CAAM;IAE/B,UAAU,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAM;IACxC,UAAU,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAM;IAC5C,MAAM,CAAC,0BAA0B,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAA;KAAE,CAAM;IACxE,oBAAoB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAA;KAAE,CAAM;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IAEhC,IAAI,aAAa,IAAI,MAAM,CAAC,OAAO,CAKlC;IAED,IAAI,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAExC;gBAEkB,OAAO,EAAE,SAAS;IAKrC,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAIhC,GAAG,IAAI,IAAI;IAIX,0BAA0B,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAInE,gCAAgC,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAIzE,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAI3B,MAAM,CAAC,gCAAgC,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAI1E,sBAAsB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAUnE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAInD;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIxC,IAAI,OAAO,IAAI,MAAM,EAAE,CAEtB;IAED,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM;CA0CzC"}
1
+ {"version":3,"file":"RenderContext.d.ts","sourceRoot":"","sources":["../../../../../src/devvit/internals/blocks/handler/RenderContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAExF;;;;;;;;;GASG;AACH,qBAAa,aAAc,YAAW,aAAa;;IA2B9B,OAAO,EAAE,SAAS;IAzBrC,SAAS,EAAE,CAAC,WAAW,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAM;IACnD,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAM;IACrC,WAAW,EAAE,MAAM,CAAM;IACzB,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAM;IACzC,QAAQ,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAM;IAC1C,qDAAqD;IACrD,cAAc,EAAE,OAAO,EAAE,CAAM;IAE/B,UAAU,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAM;IACxC,UAAU,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAM;IAC5C,MAAM,CAAC,0BAA0B,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAA;KAAE,CAAM;IACxE,oBAAoB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAA;KAAE,CAAM;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IAEhC,IAAI,aAAa,IAAI,MAAM,CAAC,OAAO,CAKlC;IAED,IAAI,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAExC;gBAEkB,OAAO,EAAE,SAAS;IAKrC,0CAA0C;IAC1C,IAAI,aAAa,IAAI,WAAW,CAI/B;IAED,iCAAiC;IACjC,IAAI,MAAM,IAAI,WAAW,CAExB;IAED,4DAA4D;IAC5D,IAAI,MAAM,CAAC,KAAK,EAAE,WAAW,EAG5B;IAED,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAIhC,GAAG,IAAI,IAAI;IAIX,0BAA0B,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAInE,gCAAgC,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAIzE,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAI3B,MAAM,CAAC,gCAAgC,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAI1E,sBAAsB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAUnE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAInD;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIxC,IAAI,OAAO,IAAI,MAAM,EAAE,CAEtB;IAED,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM;CA0CzC"}
@@ -1,3 +1,15 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _RenderContext_state;
1
13
  /**
2
14
  * The RenderContext is a class that holds the state of the rendering process.
3
15
  *
@@ -20,6 +32,7 @@ export class RenderContext {
20
32
  }
21
33
  constructor(request) {
22
34
  this.request = request;
35
+ _RenderContext_state.set(this, void 0);
23
36
  this._segments = [];
24
37
  this._hooks = {};
25
38
  this._prevHookId = '';
@@ -31,9 +44,25 @@ export class RenderContext {
31
44
  this._rootProps = {};
32
45
  this._generated = {};
33
46
  this._undeliveredHandlers = {};
34
- this._state = request.state ?? {};
47
+ __classPrivateFieldSet(this, _RenderContext_state, request.state ?? {}, "f");
35
48
  this._rootProps = request.props ?? {};
36
49
  }
50
+ /** The state delta new to this render. */
51
+ get _changedState() {
52
+ const changed = {};
53
+ for (const key in this._changed)
54
+ changed[key] = this._state[key];
55
+ return changed;
56
+ }
57
+ /** The complete render state. */
58
+ get _state() {
59
+ return __classPrivateFieldGet(this, _RenderContext_state, "f");
60
+ }
61
+ /** Replacing state resets the delta for the next render. */
62
+ set _state(state) {
63
+ this._changed = {};
64
+ __classPrivateFieldSet(this, _RenderContext_state, state, "f");
65
+ }
37
66
  push(options) {
38
67
  this._segments.push({ ...options, next: 0 });
39
68
  }
@@ -112,4 +141,5 @@ export class RenderContext {
112
141
  }
113
142
  }
114
143
  }
144
+ _RenderContext_state = new WeakMap();
115
145
  RenderContext._staticUndeliveredHandlers = {};
@@ -1,8 +1,9 @@
1
1
  import type { UIRequest } from '@devvit/protos';
2
2
  import type { JSONValue } from '@devvit/shared-types/json.js';
3
- import type { HookRef } from './types.js';
3
+ import type { BlocksState, HookRef } from './types.js';
4
4
  export declare const findHookId: (ref: HookRef) => string;
5
5
  export declare const findHookState: (ref: HookRef) => JSONValue;
6
+ export declare const getLatestBlocksState: () => BlocksState;
6
7
  export declare const EmptyRequest: UIRequest;
7
8
  export declare const generatePressRequest: (ref: HookRef) => UIRequest;
8
9
  export declare const generateTimerRequest: (ref: HookRef) => UIRequest;
@@ -1 +1 @@
1
- {"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../../../../src/devvit/internals/blocks/handler/test-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,UAAU,QAAS,OAAO,KAAG,MAEzC,CAAC;AAEF,eAAO,MAAM,aAAa,QAAS,OAAO,KAAG,SAE5C,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,SAA0B,CAAC;AAEtD,eAAO,MAAM,oBAAoB,QAAS,OAAO,KAAG,SAWnD,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAS,OAAO,KAAG,SASnD,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;CAUxB,CAAC"}
1
+ {"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../../../../src/devvit/internals/blocks/handler/test-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEvD,eAAO,MAAM,UAAU,QAAS,OAAO,KAAG,MAEzC,CAAC;AAEF,eAAO,MAAM,aAAa,QAAS,OAAO,KAAG,SAE5C,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAO,WAEvC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,SAA0B,CAAC;AAEtD,eAAO,MAAM,oBAAoB,QAAS,OAAO,KAAG,SAWnD,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAS,OAAO,KAAG,SASnD,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;CAUxB,CAAC"}
@@ -4,7 +4,10 @@ export const findHookId = (ref) => {
4
4
  return ref.id;
5
5
  };
6
6
  export const findHookState = (ref) => {
7
- return _latestBlocksHandler._latestRenderContext._state[ref.id];
7
+ return getLatestBlocksState()[ref.id];
8
+ };
9
+ export const getLatestBlocksState = () => {
10
+ return _latestBlocksHandler?._latestRenderContext?._state ?? {};
8
11
  };
9
12
  export const EmptyRequest = { events: [] };
10
13
  export const generatePressRequest = (ref) => {
@@ -15,7 +18,7 @@ export const generatePressRequest = (ref) => {
15
18
  },
16
19
  };
17
20
  return {
18
- state: _latestBlocksHandler?._latestRenderContext?._state ?? {},
21
+ state: getLatestBlocksState(),
19
22
  events: [event],
20
23
  };
21
24
  };
@@ -25,7 +28,7 @@ export const generateTimerRequest = (ref) => {
25
28
  timer: {},
26
29
  };
27
30
  return {
28
- state: _latestBlocksHandler?._latestRenderContext?._state ?? {},
31
+ state: getLatestBlocksState(),
29
32
  events: [event],
30
33
  };
31
34
  };
@@ -2,7 +2,7 @@ import type { UIEvent } from '@devvit/protos';
2
2
  import type { JSONValue } from '@devvit/shared-types/json.js';
3
3
  import type { RenderContext } from './RenderContext.js';
4
4
  export type BlocksState = {
5
- [key: string]: JSONValue;
5
+ [hookID: string]: JSONValue;
6
6
  };
7
7
  export type Props = {
8
8
  [key: string]: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/devvit/internals/blocks/handler/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,MAAM,WAAW,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEvD,MAAM,MAAM,KAAK,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAE/C,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;OAKG;IAEH,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAErB;;;OAGG;IAEH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAErF,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC;IAEzB;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,OAAO,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC,MAAM,MAAM,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,CAAC;AAEzF,qBAAa,oBAAqB,SAAQ,KAAK;CAAG"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/devvit/internals/blocks/handler/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,MAAM,WAAW,GAAG;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAE1D,MAAM,MAAM,KAAK,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAE/C,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;OAKG;IAEH,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAErB;;;OAGG;IAEH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAErF,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC;IAEzB;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,OAAO,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC,MAAM,MAAM,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,CAAC;AAEzF,qBAAa,oBAAqB,SAAQ,KAAK;CAAG"}
package/meta.json CHANGED
@@ -12554,7 +12554,7 @@
12554
12554
  "format": "esm"
12555
12555
  },
12556
12556
  "src/devvit/internals/blocks/handler/types.ts": {
12557
- "bytes": 1692,
12557
+ "bytes": 1695,
12558
12558
  "imports": [],
12559
12559
  "format": "esm"
12560
12560
  },
@@ -12580,8 +12580,14 @@
12580
12580
  "format": "esm"
12581
12581
  },
12582
12582
  "src/devvit/internals/blocks/handler/RenderContext.ts": {
12583
- "bytes": 4346,
12584
- "imports": [],
12583
+ "bytes": 4807,
12584
+ "imports": [
12585
+ {
12586
+ "path": "<runtime>",
12587
+ "kind": "import-statement",
12588
+ "external": true
12589
+ }
12590
+ ],
12585
12591
  "format": "esm"
12586
12592
  },
12587
12593
  "src/devvit/internals/blocks/handler/useInterval.ts": {
@@ -12744,33 +12750,33 @@
12744
12750
  "format": "esm"
12745
12751
  },
12746
12752
  "src/devvit/internals/blocks/handler/BlocksHandler.ts": {
12747
- "bytes": 13065,
12753
+ "bytes": 13117,
12748
12754
  "imports": [
12749
12755
  {
12750
12756
  "path": "@devvit/protos",
12751
12757
  "kind": "import-statement",
12752
12758
  "external": true
12753
12759
  },
12754
- {
12755
- "path": "src/devvit/internals/blocks/handler/ContextBuilder.ts",
12756
- "kind": "import-statement",
12757
- "original": "./ContextBuilder.js"
12758
- },
12759
12760
  {
12760
12761
  "path": "src/devvit/internals/blocks/BlocksTransformer.ts",
12761
12762
  "kind": "import-statement",
12762
12763
  "original": "../BlocksTransformer.js"
12763
12764
  },
12764
12765
  {
12765
- "path": "src/devvit/internals/blocks/handler/types.ts",
12766
+ "path": "src/devvit/internals/blocks/handler/ContextBuilder.ts",
12766
12767
  "kind": "import-statement",
12767
- "original": "./types.js"
12768
+ "original": "./ContextBuilder.js"
12768
12769
  },
12769
12770
  {
12770
12771
  "path": "src/devvit/internals/blocks/handler/RenderContext.ts",
12771
12772
  "kind": "import-statement",
12772
12773
  "original": "./RenderContext.js"
12773
12774
  },
12775
+ {
12776
+ "path": "src/devvit/internals/blocks/handler/types.ts",
12777
+ "kind": "import-statement",
12778
+ "original": "./types.js"
12779
+ },
12774
12780
  {
12775
12781
  "path": "<runtime>",
12776
12782
  "kind": "import-statement",
@@ -14645,7 +14651,7 @@
14645
14651
  "bytesInOutput": 567
14646
14652
  },
14647
14653
  "src/devvit/internals/blocks/handler/RenderContext.ts": {
14648
- "bytesInOutput": 3100
14654
+ "bytesInOutput": 3675
14649
14655
  },
14650
14656
  "src/devvit/internals/blocks/handler/useInterval.ts": {
14651
14657
  "bytesInOutput": 2317
@@ -14660,7 +14666,7 @@
14660
14666
  "bytesInOutput": 1330
14661
14667
  },
14662
14668
  "src/devvit/internals/blocks/handler/BlocksHandler.ts": {
14663
- "bytesInOutput": 10877
14669
+ "bytesInOutput": 10906
14664
14670
  },
14665
14671
  "src/devvit/internals/ui-request-handler.ts": {
14666
14672
  "bytesInOutput": 618
@@ -14744,7 +14750,7 @@
14744
14750
  "bytesInOutput": 370
14745
14751
  }
14746
14752
  },
14747
- "bytes": 14587439
14753
+ "bytes": 14589191
14748
14754
  }
14749
14755
  }
14750
14756
  }
package/meta.min.json CHANGED
@@ -3470,7 +3470,7 @@
3470
3470
  "format": "esm"
3471
3471
  },
3472
3472
  "src/devvit/internals/blocks/handler/types.ts": {
3473
- "bytes": 1692,
3473
+ "bytes": 1695,
3474
3474
  "imports": [],
3475
3475
  "format": "esm"
3476
3476
  },
@@ -3496,8 +3496,14 @@
3496
3496
  "format": "esm"
3497
3497
  },
3498
3498
  "src/devvit/internals/blocks/handler/RenderContext.ts": {
3499
- "bytes": 4346,
3500
- "imports": [],
3499
+ "bytes": 4807,
3500
+ "imports": [
3501
+ {
3502
+ "path": "<runtime>",
3503
+ "kind": "import-statement",
3504
+ "external": true
3505
+ }
3506
+ ],
3501
3507
  "format": "esm"
3502
3508
  },
3503
3509
  "src/devvit/internals/blocks/handler/useInterval.ts": {
@@ -3660,33 +3666,33 @@
3660
3666
  "format": "esm"
3661
3667
  },
3662
3668
  "src/devvit/internals/blocks/handler/BlocksHandler.ts": {
3663
- "bytes": 13065,
3669
+ "bytes": 13117,
3664
3670
  "imports": [
3665
3671
  {
3666
3672
  "path": "@devvit/protos",
3667
3673
  "kind": "import-statement",
3668
3674
  "external": true
3669
3675
  },
3670
- {
3671
- "path": "src/devvit/internals/blocks/handler/ContextBuilder.ts",
3672
- "kind": "import-statement",
3673
- "original": "./ContextBuilder.js"
3674
- },
3675
3676
  {
3676
3677
  "path": "src/devvit/internals/blocks/BlocksTransformer.ts",
3677
3678
  "kind": "import-statement",
3678
3679
  "original": "../BlocksTransformer.js"
3679
3680
  },
3680
3681
  {
3681
- "path": "src/devvit/internals/blocks/handler/types.ts",
3682
+ "path": "src/devvit/internals/blocks/handler/ContextBuilder.ts",
3682
3683
  "kind": "import-statement",
3683
- "original": "./types.js"
3684
+ "original": "./ContextBuilder.js"
3684
3685
  },
3685
3686
  {
3686
3687
  "path": "src/devvit/internals/blocks/handler/RenderContext.ts",
3687
3688
  "kind": "import-statement",
3688
3689
  "original": "./RenderContext.js"
3689
3690
  },
3691
+ {
3692
+ "path": "src/devvit/internals/blocks/handler/types.ts",
3693
+ "kind": "import-statement",
3694
+ "original": "./types.js"
3695
+ },
3690
3696
  {
3691
3697
  "path": "<runtime>",
3692
3698
  "kind": "import-statement",
@@ -4530,7 +4536,7 @@
4530
4536
  "imports": [],
4531
4537
  "exports": [],
4532
4538
  "inputs": {},
4533
- "bytes": 1106552
4539
+ "bytes": 1107475
4534
4540
  },
4535
4541
  "dist/public-api.min.js": {
4536
4542
  "imports": [
@@ -5206,7 +5212,7 @@
5206
5212
  "bytesInOutput": 1174
5207
5213
  },
5208
5214
  "src/devvit/internals/blocks/handler/RenderContext.ts": {
5209
- "bytesInOutput": 1629
5215
+ "bytesInOutput": 1824
5210
5216
  },
5211
5217
  "src/devvit/internals/blocks/handler/UIClient.ts": {
5212
5218
  "bytesInOutput": 974
@@ -5218,7 +5224,7 @@
5218
5224
  "bytesInOutput": 469
5219
5225
  },
5220
5226
  "src/devvit/internals/blocks/handler/BlocksHandler.ts": {
5221
- "bytesInOutput": 4468
5227
+ "bytesInOutput": 4451
5222
5228
  },
5223
5229
  "src/apis/reddit/helpers/makeGettersEnumerable.ts": {
5224
5230
  "bytesInOutput": 166
@@ -5296,7 +5302,7 @@
5296
5302
  "bytesInOutput": 178
5297
5303
  }
5298
5304
  },
5299
- "bytes": 233724
5305
+ "bytes": 233902
5300
5306
  }
5301
5307
  }
5302
5308
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devvit/public-api",
3
- "version": "0.10.21-next-2024-05-14-cddb8b57c.0",
3
+ "version": "0.10.21-next-2024-05-14-d444343c8.0",
4
4
  "license": "BSD-3-Clause",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,8 +30,8 @@
30
30
  },
31
31
  "types": "./index.d.ts",
32
32
  "dependencies": {
33
- "@devvit/protos": "0.10.21-next-2024-05-14-cddb8b57c.0",
34
- "@devvit/shared-types": "0.10.21-next-2024-05-14-cddb8b57c.0",
33
+ "@devvit/protos": "0.10.21-next-2024-05-14-d444343c8.0",
34
+ "@devvit/shared-types": "0.10.21-next-2024-05-14-d444343c8.0",
35
35
  "base64-js": "1.5.1",
36
36
  "clone-deep": "4.0.1",
37
37
  "core-js": "3.27.2",
@@ -41,7 +41,7 @@
41
41
  "@ampproject/filesize": "4.3.0",
42
42
  "@devvit/eslint-config": "0.10.20",
43
43
  "@devvit/repo-tools": "0.10.20",
44
- "@devvit/tsconfig": "0.10.21-next-2024-05-14-cddb8b57c.0",
44
+ "@devvit/tsconfig": "0.10.21-next-2024-05-14-d444343c8.0",
45
45
  "@microsoft/api-extractor": "7.41.0",
46
46
  "@reddit/faceplate-ui": "11.1.0",
47
47
  "@types/clone-deep": "4.0.1",
@@ -64,5 +64,5 @@
64
64
  }
65
65
  },
66
66
  "source": "./src/index.ts",
67
- "gitHead": "d7172e513eea0aee718547d93b9eadc11ffb2ca0"
67
+ "gitHead": "9fd7891b53a7a666c0465fe86a7184fcef029b8b"
68
68
  }
package/public-api.d.ts CHANGED
@@ -66038,7 +66038,11 @@ declare const UIRequest: {
66038
66038
  };
66039
66039
 
66040
66040
  declare interface UIResponse {
66041
- /** Stateful data to be sent back. This will be sent back to you in the next request. */
66041
+ /**
66042
+ * Stateful data to be sent back. Event responses only contain state deltas to
66043
+ * allow the requester to aggregate and reconcile local and remote state. This
66044
+ * will be sent back to you in the next request.
66045
+ */
66042
66046
  state?: {
66043
66047
  [key: string]: any;
66044
66048
  } | undefined;