@devvit/protos 0.12.4-next-2025-11-17-16-25-27-3e2f2ccec.0 → 0.12.4-next-2025-11-17-18-52-58-702bd4c00.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 (40) hide show
  1. package/json/devvit/gateway/app_info/v1alpha/app_info.d.ts +44 -0
  2. package/json/devvit/gateway/app_info/v1alpha/app_info.d.ts.map +1 -0
  3. package/json/devvit/gateway/app_info/v1alpha/app_info.js +8 -0
  4. package/json/devvit/ui/effects/v1alpha/effect.d.ts +5 -0
  5. package/json/devvit/ui/effects/v1alpha/effect.d.ts.map +1 -1
  6. package/json/devvit/ui/effects/web_view/v1alpha/post_message.d.ts +23 -7
  7. package/json/devvit/ui/effects/web_view/v1alpha/post_message.d.ts.map +1 -1
  8. package/json/devvit/ui/events/v1alpha/event.d.ts +5 -0
  9. package/json/devvit/ui/events/v1alpha/event.d.ts.map +1 -1
  10. package/json/devvit/ui/events/v1alpha/web_view.d.ts +51 -9
  11. package/json/devvit/ui/events/v1alpha/web_view.d.ts.map +1 -1
  12. package/json/devvit/ui/events/v1alpha/web_view.js +5 -0
  13. package/meta.min.json +5 -5
  14. package/package.json +4 -4
  15. package/protos.min.js.map +2 -2
  16. package/schema/devvit/gateway/app_info/v1alpha/app_info.proto +52 -0
  17. package/schema/devvit/ui/effects/v1alpha/effect.proto +2 -0
  18. package/schema/devvit/ui/effects/web_view/v1alpha/post_message.proto +18 -24
  19. package/schema/devvit/ui/events/v1alpha/event.proto +3 -0
  20. package/schema/devvit/ui/events/v1alpha/web_view.proto +34 -9
  21. package/schema/snootobuf.lock +0 -0
  22. package/schema/snootobuf.redditapi.lock +0 -0
  23. package/types/devvit/gateway/app_info/v1alpha/app_info.d.ts +128 -0
  24. package/types/devvit/gateway/app_info/v1alpha/app_info.d.ts.map +1 -0
  25. package/types/devvit/gateway/app_info/v1alpha/app_info.js +417 -0
  26. package/types/devvit/gateway/app_info/v1alpha/app_info.twirp-client.d.ts +19 -0
  27. package/types/devvit/gateway/app_info/v1alpha/app_info.twirp-client.d.ts.map +1 -0
  28. package/types/devvit/gateway/app_info/v1alpha/app_info.twirp-client.js +23 -0
  29. package/types/devvit/gateway/app_info/v1alpha/app_info.twirp.d.ts +11 -0
  30. package/types/devvit/gateway/app_info/v1alpha/app_info.twirp.d.ts.map +1 -0
  31. package/types/devvit/gateway/app_info/v1alpha/app_info.twirp.js +88 -0
  32. package/types/devvit/ui/effects/v1alpha/effect.d.ts +5 -0
  33. package/types/devvit/ui/effects/v1alpha/effect.d.ts.map +1 -1
  34. package/types/devvit/ui/effects/web_view/v1alpha/post_message.d.ts +23 -7
  35. package/types/devvit/ui/effects/web_view/v1alpha/post_message.d.ts.map +1 -1
  36. package/types/devvit/ui/events/v1alpha/event.d.ts +5 -0
  37. package/types/devvit/ui/events/v1alpha/event.d.ts.map +1 -1
  38. package/types/devvit/ui/events/v1alpha/web_view.d.ts +51 -9
  39. package/types/devvit/ui/events/v1alpha/web_view.d.ts.map +1 -1
  40. package/types/devvit/ui/events/v1alpha/web_view.js +5 -0
@@ -0,0 +1,52 @@
1
+ syntax = "proto3";
2
+
3
+ package devvit.gateway.app_info.v1alpha;
4
+
5
+ import "google/protobuf/timestamp.proto";
6
+
7
+ option go_package = "github.snooguts.net/reddit/reddit-devplatform-monorepo/go-common/generated/protos/types/devvit/gateway/appinfo";
8
+
9
+ // AppInfoService provides read-only information about apps, fetched by slug.
10
+ service AppInfoService {
11
+ // GetAppInfoBySlug returns minimal information about an app identified by slug.
12
+ rpc GetAppInfoBySlug(GetAppInfoBySlugRequest) returns (GetAppInfoBySlugResponse);
13
+ }
14
+
15
+ message GetAppInfoBySlugRequest {
16
+ string slug = 1; // app slug
17
+ }
18
+
19
+ message GetAppInfoBySlugResponse {
20
+ AppInfo app = 1;
21
+ }
22
+
23
+ message AppInfo {
24
+ // UUID of the app
25
+ string id = 1;
26
+ // App account T2 ID
27
+ optional string app_account_id = 2;
28
+ // Base part of the slug before uniquifying
29
+ string slug_base = 3;
30
+ // Unique app slug
31
+ string slug = 4;
32
+ // Human-readable name
33
+ string name = 5;
34
+ // App description
35
+ string description = 6;
36
+ // NSFW flag
37
+ bool is_nsfw = 7;
38
+ // Delisted flag
39
+ bool is_delisted = 8;
40
+ // Archived flag
41
+ bool is_archived = 9;
42
+ // First-party flag
43
+ bool is_first_party = 10;
44
+ // Moderation/flagged status
45
+ bool is_flagged = 11;
46
+ // Created at
47
+ google.protobuf.Timestamp created_at = 12;
48
+ // Owner ID
49
+ string owner_id = 13;
50
+ // Disabled flag
51
+ bool is_disabled = 14;
52
+ }
@@ -49,7 +49,9 @@ enum EffectType {
49
49
  // next 12
50
50
  }
51
51
 
52
+ // Blocks only.
52
53
  message Effect {
54
+ option deprecated = true;
53
55
  oneof effect_type {
54
56
  RealtimeSubscriptionsEffect realtime_subscriptions = 1;
55
57
  RerenderEffect rerender_ui = 2;
@@ -20,7 +20,8 @@ enum WebViewInternalMessageScope {
20
20
  CLIENT = 0;
21
21
  }
22
22
 
23
- // Devvit internal message, sent via postMessage
23
+ // `devvit-internal` message from web view to client via postMessage(). Used
24
+ // often for sending effects from the iframe.
24
25
  message WebViewInternalMessage {
25
26
  // type: devvit-internal
26
27
  string type = 1;
@@ -61,17 +62,22 @@ message WebViewInternalMessage {
61
62
  // }
62
63
  // }
63
64
 
64
- // Generic structure of messages sent via postMessage from WebView block
65
+ // Generic structure of messages sent via postMessage from web view block.
66
+ // Blocks only.
65
67
  message WebViewPostMessage {
68
+ option deprecated = true;
69
+
66
70
  // See comments for each message
67
71
  string type = 1;
68
72
  // One of the following messages converted to a Struct
69
73
  google.protobuf.Struct data = 2;
70
74
  }
71
75
 
72
- // Arbitrary message, sent by block app to a WebView block
73
- // type: devvit-message
76
+ // Arbitrary `devvit-message` message, sent by block app to a web view block.
77
+ // Blocks only.
74
78
  message WebViewAppMessage {
79
+ option deprecated = true;
80
+
75
81
  // Any serializable value given to postMessage in a WebView
76
82
  // @deprecated Use json_string instead
77
83
  google.protobuf.Value message = 1;
@@ -80,31 +86,19 @@ message WebViewAppMessage {
80
86
  optional string json_string = 2;
81
87
  }
82
88
 
83
- // Used to pass stateful data into a WebView
84
- // type: devvit-state
85
- // @deprecated
89
+ // `devvit-state` message. Used to pass stateful data into a web view. Blocks
90
+ // only.
86
91
  message WebViewStateMessage {
92
+ option deprecated = true;
93
+
87
94
  google.protobuf.Struct state = 1;
88
95
  }
89
96
 
90
- // TODO: Add once UI messages are properly organized out of the block_kit package.
91
- // This is creating an import cycle in golang and cannot be compiled.
92
- // Used to mirror some UIEvents to the WebView to handle it for apps automatically
93
- // type: devvit-event
94
- // message WebViewUIEventMessage {
95
- // devvit.ui.events.v1alpha.UIEvent event = 1;
96
- // }
97
-
98
- // TODO: Add once UI messages are properly organized out of the block_kit package.
99
- // This is creating an import cycle in golang and cannot be compiled.
100
- // Used to inform a WebView of client environment changes
101
- // type: devvit-environment
102
- // message WebViewUIEnvironmentMessage {
103
- // devvit.ui.block_kit.v1beta.UIEnvironment environment = 1;
104
- // }
105
-
106
- // Message wrapper for messages sent by block app to a webview block
97
+ // Message wrapper for messages sent by block app to a web view block. Composed
98
+ // by `WebViewEffect`. Blocks only.
107
99
  message WebViewPostMessageEffect {
100
+ option deprecated = true;
101
+
108
102
  // ID of the WebView block
109
103
  string web_view_id = 1;
110
104
 
@@ -24,7 +24,10 @@ enum UIEventScope {
24
24
  REMOTE = 2;
25
25
  }
26
26
 
27
+ // Blocks events. Don't add Webbit events here.
27
28
  message UIEvent {
29
+ option deprecated = true;
30
+
28
31
  oneof event {
29
32
  devvit.ui.effects.v1alpha.RealtimeSubscriptionEvent realtime_event = 2;
30
33
  devvit.ui.effect_types.v1alpha.FormSubmittedEvent form_submitted = 3;
@@ -12,14 +12,20 @@ import "google/protobuf/struct.proto";
12
12
  option go_package = "github.snooguts.net/reddit/reddit-devplatform-monorepo/go-common/generated/protos/types/devvit/ui/events/v1alpha";
13
13
  option java_package = "com.reddit.devvit.ui.events.v1alpha";
14
14
 
15
+ // Blocks only.
15
16
  enum WebViewVisibility {
17
+ option deprecated = true;
16
18
  WEBVIEW_VISIBLE = 0;
17
19
  WEBVIEW_HIDDEN = 1;
18
20
  }
19
21
 
20
- // Fired when the content of a WebView within a <webview> block calls window.parent.postMessage()
22
+ // Fired when the content of a WebView within a `<webview>` block calls
23
+ // `window.parent.postMessage()`. Blocks only.
21
24
  message WebViewPostMessageEvent {
22
- // Can be a Struct or a scalar value since postMessage doesn't restrict the type of 'message'.
25
+ option deprecated = true;
26
+
27
+ // Can be a Struct or a scalar value since postMessage doesn't restrict the
28
+ // type of 'message'.
23
29
  // @deprecated Use json_string instead
24
30
  google.protobuf.Value message = 1;
25
31
 
@@ -27,27 +33,38 @@ message WebViewPostMessageEvent {
27
33
  string json_string = 2;
28
34
  }
29
35
 
30
- // Fired from the client when the visibility of a fullscreen WebView changes
36
+ // Fired from the client when the visibility of a fullscreen WebView changes.
37
+ // Blocks only.
31
38
  message WebViewFullScreenEvent {
39
+ option deprecated = true;
32
40
  WebViewVisibility visibility = 1;
33
41
  }
34
42
 
35
- // Fired when the content of a WebView within a <webview> block triggers an event
43
+ // Eg, the user initiates a request to mount the Blocks
44
+ // view (`useWebView().mount()`), the web view is shown in the client, and the
45
+ // client posts an event to Blocks that the web view is visible. Blocks only.
36
46
  message WebViewEvent {
47
+ option deprecated = true;
37
48
  oneof payload {
38
49
  WebViewPostMessageEvent post_message = 1;
39
50
  WebViewFullScreenEvent full_screen = 2;
40
51
  }
41
52
  }
42
53
 
43
- // Fired when a WebView in a devvit web app changes its immersive mode
54
+ // Event dispatched from the client to the web view when the user initiates
55
+ // expanded or inline mode.
44
56
  message WebViewImmersiveModeChangedEvent {
45
57
  devvit.ui.effects.web_view.v1alpha.WebViewImmersiveMode immersive_mode = 1;
46
58
  }
47
59
 
48
- // Fired from the client when a devvit web app triggers an event
60
+ // This is the message sent from the client to the web view via `postMessage()`
61
+ // for all Webbit events. For web, this is the sender's type. Events are
62
+ // initiated by the user as opposed to effects which are side-effects of running
63
+ // the web view. Additionally, some effects have responses that may be events.
49
64
  message WebViewInternalEventMessage {
50
- // ID of the event message, matches the id of the WebViewInternalMessage that triggered it
65
+ // ID of the event message, matches the id of the
66
+ // `WebViewInternalMessage` effect that triggered it. Empty when event is not
67
+ // an effect response.
51
68
  string id = 1;
52
69
  oneof data {
53
70
  devvit.ui.effect_types.v1alpha.FormCanceledEvent form_canceled = 2;
@@ -59,9 +76,17 @@ message WebViewInternalEventMessage {
59
76
  }
60
77
  }
61
78
 
62
- // Payload to be used in a MessageEvent sent via postMessage to the web view from the client
63
- // See: https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent
79
+ // Message sent from the client to the web view via `postMessage()`. The
80
+ // structure must match `MessageEvent`. Web uses the actual `MessageEvent` from
81
+ // the standard web API. Only the native clients use `WebViewMessageEvent` but
82
+ // all clients use `MessageData`.
83
+ //
84
+ // "Event" refers to a `MessageEvent`, not event as in event vs effect. The
85
+ // data of `WebViewMessageEvent` could be anything.
86
+ //
87
+ // See https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.
64
88
  message WebViewMessageEvent {
89
+ // For web view's, this is the type of MessageEvent.data.
65
90
  message MessageData {
66
91
  string type = 1; // 'devvit-message'
67
92
  WebViewInternalEventMessage data = 2; // event type
Binary file
Binary file
@@ -0,0 +1,128 @@
1
+ /**
2
+ * #app_info.ts
3
+ *
4
+ * Code generated by ts-proto. DO NOT EDIT.
5
+ * @packageDocumentation
6
+ */
7
+ import _m0 from "protobufjs/minimal.js";
8
+ import { Metadata } from "../../../../../lib/Types.js";
9
+ export interface GetAppInfoBySlugRequest {
10
+ /** app slug */
11
+ slug: string;
12
+ }
13
+ export interface GetAppInfoBySlugResponse {
14
+ app?: AppInfo | undefined;
15
+ }
16
+ export interface AppInfo {
17
+ /** UUID of the app */
18
+ id: string;
19
+ /** App account T2 ID */
20
+ appAccountId?: string | undefined;
21
+ /** Base part of the slug before uniquifying */
22
+ slugBase: string;
23
+ /** Unique app slug */
24
+ slug: string;
25
+ /** Human-readable name */
26
+ name: string;
27
+ /** App description */
28
+ description: string;
29
+ /** NSFW flag */
30
+ isNsfw: boolean;
31
+ /** Delisted flag */
32
+ isDelisted: boolean;
33
+ /** Archived flag */
34
+ isArchived: boolean;
35
+ /** First-party flag */
36
+ isFirstParty: boolean;
37
+ /** Moderation/flagged status */
38
+ isFlagged: boolean;
39
+ /** Created at */
40
+ createdAt?: Date | undefined;
41
+ /** Owner ID */
42
+ ownerId: string;
43
+ /** Disabled flag */
44
+ isDisabled: boolean;
45
+ }
46
+ export declare const GetAppInfoBySlugRequest: {
47
+ $type: "devvit.gateway.app_info.v1alpha.GetAppInfoBySlugRequest";
48
+ encode(message: GetAppInfoBySlugRequest, writer?: _m0.Writer): _m0.Writer;
49
+ decode(input: _m0.Reader | Uint8Array, length?: number): GetAppInfoBySlugRequest;
50
+ fromJSON(object: any): GetAppInfoBySlugRequest;
51
+ toJSON(message: GetAppInfoBySlugRequest): unknown;
52
+ create(base?: DeepPartial<GetAppInfoBySlugRequest>): GetAppInfoBySlugRequest;
53
+ fromPartial(object: DeepPartial<GetAppInfoBySlugRequest>): GetAppInfoBySlugRequest;
54
+ };
55
+ export declare const GetAppInfoBySlugResponse: {
56
+ $type: "devvit.gateway.app_info.v1alpha.GetAppInfoBySlugResponse";
57
+ encode(message: GetAppInfoBySlugResponse, writer?: _m0.Writer): _m0.Writer;
58
+ decode(input: _m0.Reader | Uint8Array, length?: number): GetAppInfoBySlugResponse;
59
+ fromJSON(object: any): GetAppInfoBySlugResponse;
60
+ toJSON(message: GetAppInfoBySlugResponse): unknown;
61
+ create(base?: DeepPartial<GetAppInfoBySlugResponse>): GetAppInfoBySlugResponse;
62
+ fromPartial(object: DeepPartial<GetAppInfoBySlugResponse>): GetAppInfoBySlugResponse;
63
+ };
64
+ export declare const AppInfo: {
65
+ $type: "devvit.gateway.app_info.v1alpha.AppInfo";
66
+ encode(message: AppInfo, writer?: _m0.Writer): _m0.Writer;
67
+ decode(input: _m0.Reader | Uint8Array, length?: number): AppInfo;
68
+ fromJSON(object: any): AppInfo;
69
+ toJSON(message: AppInfo): unknown;
70
+ create(base?: DeepPartial<AppInfo>): AppInfo;
71
+ fromPartial(object: DeepPartial<AppInfo>): AppInfo;
72
+ };
73
+ /** AppInfoService provides read-only information about apps, fetched by slug. */
74
+ export interface AppInfoService {
75
+ /** GetAppInfoBySlug returns minimal information about an app identified by slug. */
76
+ GetAppInfoBySlug(request: GetAppInfoBySlugRequest, metadata?: Metadata): Promise<GetAppInfoBySlugResponse>;
77
+ }
78
+ export declare const AppInfoServiceServiceName = "devvit.gateway.app_info.v1alpha.AppInfoService";
79
+ export declare class AppInfoServiceClientImpl implements AppInfoService {
80
+ private readonly rpc;
81
+ private readonly service;
82
+ constructor(rpc: Rpc, opts?: {
83
+ service?: string;
84
+ });
85
+ GetAppInfoBySlug(request: GetAppInfoBySlugRequest, metadata?: Metadata): Promise<GetAppInfoBySlugResponse>;
86
+ }
87
+ /** AppInfoService provides read-only information about apps, fetched by slug. */
88
+ export type AppInfoServiceDefinition = typeof AppInfoServiceDefinition;
89
+ export declare const AppInfoServiceDefinition: {
90
+ readonly name: "AppInfoService";
91
+ readonly fullName: "devvit.gateway.app_info.v1alpha.AppInfoService";
92
+ readonly methods: {
93
+ /** GetAppInfoBySlug returns minimal information about an app identified by slug. */
94
+ readonly getAppInfoBySlug: {
95
+ readonly name: "GetAppInfoBySlug";
96
+ readonly requestType: {
97
+ $type: "devvit.gateway.app_info.v1alpha.GetAppInfoBySlugRequest";
98
+ encode(message: GetAppInfoBySlugRequest, writer?: _m0.Writer): _m0.Writer;
99
+ decode(input: _m0.Reader | Uint8Array, length?: number): GetAppInfoBySlugRequest;
100
+ fromJSON(object: any): GetAppInfoBySlugRequest;
101
+ toJSON(message: GetAppInfoBySlugRequest): unknown;
102
+ create(base?: DeepPartial<GetAppInfoBySlugRequest>): GetAppInfoBySlugRequest;
103
+ fromPartial(object: DeepPartial<GetAppInfoBySlugRequest>): GetAppInfoBySlugRequest;
104
+ };
105
+ readonly requestStream: false;
106
+ readonly responseType: {
107
+ $type: "devvit.gateway.app_info.v1alpha.GetAppInfoBySlugResponse";
108
+ encode(message: GetAppInfoBySlugResponse, writer?: _m0.Writer): _m0.Writer;
109
+ decode(input: _m0.Reader | Uint8Array, length?: number): GetAppInfoBySlugResponse;
110
+ fromJSON(object: any): GetAppInfoBySlugResponse;
111
+ toJSON(message: GetAppInfoBySlugResponse): unknown;
112
+ create(base?: DeepPartial<GetAppInfoBySlugResponse>): GetAppInfoBySlugResponse;
113
+ fromPartial(object: DeepPartial<GetAppInfoBySlugResponse>): GetAppInfoBySlugResponse;
114
+ };
115
+ readonly responseStream: false;
116
+ readonly options: {};
117
+ };
118
+ };
119
+ };
120
+ interface Rpc {
121
+ request(service: string, method: string, data: Uint8Array, metadata?: Metadata): Promise<Uint8Array>;
122
+ }
123
+ type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
124
+ type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
125
+ [K in keyof T]?: DeepPartial<T[K]>;
126
+ } : Partial<T>;
127
+ export {};
128
+ //# sourceMappingURL=app_info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app_info.d.ts","sourceRoot":"","sources":["../../../../../../src/types/devvit/gateway/app_info/v1alpha/app_info.ts"],"names":[],"mappings":"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"}