@devvit/public-api 0.11.17-next-2025-05-27-7cf402c0e.0 → 0.11.17-next-2025-05-28-417d95f5a.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.
@@ -1,3 +1,19 @@
1
+ import type { Block, BlockRenderRequest, Dimensions, Effect, FormSubmittedEvent, Metadata, RealtimeSubscriptionEvent, UIEvent } from '@devvit/protos';
2
+ import type { JSONObject, PartialJSONObject } from '@devvit/shared-types/json.js';
3
+ import type { FormKey } from '@devvit/shared-types/useForm.js';
4
+ import type { AssetsClient } from '../../../apis/AssetsClient/AssetsClient.js';
5
+ import type { ModLogClient } from '../../../apis/modLog/ModLogClient.js';
6
+ import type { RealtimeClient } from '../../../apis/realtime/RealtimeClient.js';
7
+ import type { RedditAPIClient } from '../../../apis/reddit/RedditAPIClient.js';
8
+ import type { Form, FormFunction, MediaPlugin, Scheduler, SettingsClient, UIClient, UseChannelHook, UseFormHook, UseFormHookState, UseIntervalHook, UseIntervalHookState, UseStateHook } from '../../../types/index.js';
9
+ import type { KVStore } from '../../../types/kvStore.js';
10
+ import type { RedisClient } from '../../../types/redis.js';
11
+ import type { BlockElement } from '../../Devvit.js';
12
+ import { Devvit } from '../../Devvit.js';
13
+ import type { CacheHelper } from '../cache.js';
14
+ import type { LocalCache } from '../promise_cache.js';
15
+ import { BlocksTransformer } from './BlocksTransformer.js';
16
+ import type { EffectEmitter } from './EffectEmitter.js';
1
17
  export type ReifiedBlockElement = {
2
18
  type: string;
3
19
  props: {
@@ -6,5 +22,94 @@ export type ReifiedBlockElement = {
6
22
  children: ReifiedBlockElementOrLiteral[];
7
23
  };
8
24
  export type ReifiedBlockElementOrLiteral = ReifiedBlockElement | string;
25
+ /** Serializable. */
26
+ type ComponentState = {
27
+ [hookIndex: number]: UseIntervalHookState | UseFormHookState | JSONObject;
28
+ };
29
+ /** Serializable. */
30
+ type RenderState = {
31
+ [componentKey: string]: ComponentState;
32
+ };
9
33
  export declare function assertNotString(reified: ReifiedBlockElementOrLiteral): asserts reified is ReifiedBlockElement;
34
+ /**
35
+ * @experimental Do not use directly, for internal use only.
36
+ * An instance of this class should be instantiated for each OnRender call.
37
+ * This class is responsible for:
38
+ * - rendering JSX elements into Blocks.
39
+ * - managing state and hooks for each component.
40
+ * - drilling the shared clients into function components.
41
+ */
42
+ export declare class BlocksReconciler implements EffectEmitter {
43
+ #private;
44
+ component: JSX.ComponentFunction;
45
+ event: BlockRenderRequest | UIEvent | undefined;
46
+ state: {
47
+ __renderState: RenderState;
48
+ __postData?: {
49
+ thingId?: string;
50
+ };
51
+ __realtimeChannels?: string[];
52
+ __cache?: LocalCache;
53
+ };
54
+ metadata: Metadata;
55
+ modLog: ModLogClient;
56
+ reddit: RedditAPIClient;
57
+ kvStore: KVStore;
58
+ cache: CacheHelper;
59
+ redis: RedisClient;
60
+ scheduler: Scheduler;
61
+ dimensions?: Dimensions;
62
+ ui: UIClient;
63
+ settings: SettingsClient;
64
+ media: MediaPlugin;
65
+ assets: AssetsClient;
66
+ realtime: RealtimeClient;
67
+ hooks: {
68
+ useState: UseStateHook;
69
+ useInterval: UseIntervalHook;
70
+ useForm: UseFormHook;
71
+ useChannel: UseChannelHook;
72
+ };
73
+ emitEffect(_dedupeKey: string, effect: Effect): void;
74
+ renderState: RenderState;
75
+ currentComponentKey: string[];
76
+ currentHookIndex: number;
77
+ actions: Map<string, Function>;
78
+ forms: Map<FormKey, Form | FormFunction>;
79
+ realtimeChannels: string[];
80
+ realtimeUpdated: boolean;
81
+ pendingHooks: (() => Promise<void>)[];
82
+ isRendering: boolean;
83
+ transformer: BlocksTransformer;
84
+ effects: Effect[];
85
+ constructor(component: JSX.ComponentFunction, event: BlockRenderRequest | UIEvent | undefined, state: PartialJSONObject | undefined, metadata: Metadata, dimensions: Dimensions | undefined);
86
+ render(): Promise<Block>;
87
+ makeUniqueActionID(id: string): string;
88
+ reconcile(): Promise<void>;
89
+ buildBlocksUI(): Promise<Block>;
90
+ renderElement(ctx: Devvit.Context, element: JSX.Element): Promise<Block>;
91
+ processProps(block: BlockElement): Promise<void>;
92
+ processBlock(element: JSX.Element | JSX.Element[], idGenerator?: (id: string) => string, path?: string[]): Promise<ReifiedBlockElementOrLiteral>;
93
+ getCurrentComponentKey(): string[];
94
+ getCurrentComponentState<S>(): {
95
+ [hookIndex: number]: S;
96
+ };
97
+ getPreviousComponentState<S>(): {
98
+ [hookIndex: number]: S;
99
+ };
100
+ get isInitialRender(): boolean;
101
+ get isUserActionRender(): boolean;
102
+ get isEffectRender(): boolean;
103
+ get formSubmittedEvent(): FormSubmittedEvent | undefined | false;
104
+ get blockRenderEventId(): string | undefined | false;
105
+ get realtimeEvent(): RealtimeSubscriptionEvent | undefined | false;
106
+ runHook(hook: () => Promise<void>): void;
107
+ rerenderIn(delayMs: number): void;
108
+ addRealtimeChannel(channel: string): void;
109
+ removeRealtimeChannel(channel: string): void;
110
+ get realtimeEffect(): Effect[];
111
+ getEffects(): Effect[];
112
+ buildNextState(): void;
113
+ }
114
+ export {};
10
115
  //# sourceMappingURL=BlocksReconciler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlocksReconciler.d.ts","sourceRoot":"","sources":["../../../../src/devvit/internals/blocks/BlocksReconciler.ts"],"names":[],"mappings":"AA8CA,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IAEb,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;IAC9C,QAAQ,EAAE,4BAA4B,EAAE,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,mBAAmB,GAAG,MAAM,CAAC;AAYxE,wBAAgB,eAAe,CAC7B,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,OAAO,IAAI,mBAAmB,CAIxC"}
1
+ {"version":3,"file":"BlocksReconciler.d.ts","sourceRoot":"","sources":["../../../../src/devvit/internals/blocks/BlocksReconciler.ts"],"names":[],"mappings":"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"}
@@ -78,7 +78,7 @@ function indentXML(xml) {
78
78
  return formatted;
79
79
  }
80
80
  /**
81
- * @internal
81
+ * @experimental Do not use directly, for internal use only.
82
82
  * An instance of this class should be instantiated for each OnRender call.
83
83
  * This class is responsible for:
84
84
  * - rendering JSX elements into Blocks.
package/meta.json CHANGED
@@ -8008,7 +8008,7 @@
8008
8008
  "format": "esm"
8009
8009
  },
8010
8010
  "src/devvit/internals/blocks/BlocksReconciler.ts": {
8011
- "bytes": 19520,
8011
+ "bytes": 19568,
8012
8012
  "imports": [
8013
8013
  {
8014
8014
  "path": "../protos/dist/index.js",
@@ -10410,7 +10410,7 @@
10410
10410
  "bytesInOutput": 4418
10411
10411
  }
10412
10412
  },
10413
- "bytes": 12557122
10413
+ "bytes": 12557186
10414
10414
  }
10415
10415
  }
10416
10416
  }
package/meta.min.json CHANGED
@@ -812,7 +812,7 @@
812
812
  "format": "esm"
813
813
  },
814
814
  "src/devvit/internals/blocks/BlocksReconciler.ts": {
815
- "bytes": 19520,
815
+ "bytes": 19568,
816
816
  "imports": [
817
817
  {
818
818
  "path": "@devvit/protos",
@@ -2546,7 +2546,7 @@
2546
2546
  "imports": [],
2547
2547
  "exports": [],
2548
2548
  "inputs": {},
2549
- "bytes": 1078184
2549
+ "bytes": 1078232
2550
2550
  },
2551
2551
  "dist/public-api.min.js": {
2552
2552
  "imports": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devvit/public-api",
3
- "version": "0.11.17-next-2025-05-27-7cf402c0e.0",
3
+ "version": "0.11.17-next-2025-05-28-417d95f5a.0",
4
4
  "license": "BSD-3-Clause",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,17 +30,17 @@
30
30
  },
31
31
  "types": "./index.d.ts",
32
32
  "dependencies": {
33
- "@devvit/metrics": "0.11.17-next-2025-05-27-7cf402c0e.0",
34
- "@devvit/protos": "0.11.17-next-2025-05-27-7cf402c0e.0",
35
- "@devvit/shared-types": "0.11.17-next-2025-05-27-7cf402c0e.0",
33
+ "@devvit/metrics": "0.11.17-next-2025-05-28-417d95f5a.0",
34
+ "@devvit/protos": "0.11.17-next-2025-05-28-417d95f5a.0",
35
+ "@devvit/shared-types": "0.11.17-next-2025-05-28-417d95f5a.0",
36
36
  "base64-js": "1.5.1",
37
37
  "clone-deep": "4.0.1",
38
38
  "moderndash": "4.0.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@ampproject/filesize": "4.3.0",
42
- "@devvit/repo-tools": "0.11.17-next-2025-05-27-7cf402c0e.0",
43
- "@devvit/tsconfig": "0.11.17-next-2025-05-27-7cf402c0e.0",
42
+ "@devvit/repo-tools": "0.11.17-next-2025-05-28-417d95f5a.0",
43
+ "@devvit/tsconfig": "0.11.17-next-2025-05-28-417d95f5a.0",
44
44
  "@microsoft/api-extractor": "7.41.0",
45
45
  "@reddit/faceplate-ui": "18.0.1",
46
46
  "@types/clone-deep": "4.0.1",
@@ -61,5 +61,5 @@
61
61
  }
62
62
  },
63
63
  "source": "./src/index.ts",
64
- "gitHead": "7bc975913d312efeda46745a4e18ea0448c578a7"
64
+ "gitHead": "4628c8a78af5dabb1c9d2d35ec2a4c637fd8a46d"
65
65
  }