@devvit/reddit 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.
- package/LICENSE +26 -0
- package/README.md +5 -0
- package/RedditClient.d.ts +1155 -0
- package/RedditClient.d.ts.map +1 -0
- package/RedditClient.js +1417 -0
- package/common.d.ts +10 -0
- package/common.d.ts.map +1 -0
- package/common.js +5 -0
- package/getReddit.d.ts +3 -0
- package/getReddit.d.ts.map +1 -0
- package/getReddit.js +8 -0
- package/getRedditApiPlugins.d.ts +23 -0
- package/getRedditApiPlugins.d.ts.map +1 -0
- package/getRedditApiPlugins.js +25 -0
- package/getUserActionsPlugin.d.ts +6 -0
- package/getUserActionsPlugin.d.ts.map +1 -0
- package/getUserActionsPlugin.js +12 -0
- package/graphql/GraphQL.d.ts +10 -0
- package/graphql/GraphQL.d.ts.map +1 -0
- package/graphql/GraphQL.js +27 -0
- package/helpers/makeGettersEnumerable.d.ts +2 -0
- package/helpers/makeGettersEnumerable.d.ts.map +1 -0
- package/helpers/makeGettersEnumerable.js +19 -0
- package/helpers/permissions.d.ts +6 -0
- package/helpers/permissions.d.ts.map +1 -0
- package/helpers/permissions.js +24 -0
- package/helpers/richtextToString.d.ts +3 -0
- package/helpers/richtextToString.d.ts.map +1 -0
- package/helpers/richtextToString.js +14 -0
- package/helpers/textFallbackToRichtext.d.ts +4 -0
- package/helpers/textFallbackToRichtext.d.ts.map +1 -0
- package/helpers/textFallbackToRichtext.js +14 -0
- package/index.d.ts +3 -0
- package/index.d.ts.map +1 -0
- package/index.js +1 -0
- package/models/Comment.d.ts +138 -0
- package/models/Comment.d.ts.map +1 -0
- package/models/Comment.js +597 -0
- package/models/Flair.d.ts +171 -0
- package/models/Flair.d.ts.map +1 -0
- package/models/Flair.js +293 -0
- package/models/Listing.d.ts +53 -0
- package/models/Listing.d.ts.map +1 -0
- package/models/Listing.js +101 -0
- package/models/ModAction.d.ts +32 -0
- package/models/ModAction.d.ts.map +1 -0
- package/models/ModAction.js +70 -0
- package/models/ModMail.d.ts +655 -0
- package/models/ModMail.d.ts.map +1 -0
- package/models/ModMail.js +723 -0
- package/models/ModNote.d.ts +57 -0
- package/models/ModNote.d.ts.map +1 -0
- package/models/ModNote.js +103 -0
- package/models/Post.d.ts +491 -0
- package/models/Post.d.ts.map +1 -0
- package/models/Post.js +1022 -0
- package/models/PrivateMessage.d.ts +52 -0
- package/models/PrivateMessage.d.ts.map +1 -0
- package/models/PrivateMessage.js +126 -0
- package/models/Subreddit.d.ts +606 -0
- package/models/Subreddit.d.ts.map +1 -0
- package/models/Subreddit.js +750 -0
- package/models/User.d.ts +238 -0
- package/models/User.d.ts.map +1 -0
- package/models/User.js +458 -0
- package/models/Vault.d.ts +32 -0
- package/models/Vault.d.ts.map +1 -0
- package/models/Vault.js +25 -0
- package/models/Widget.d.ts +133 -0
- package/models/Widget.d.ts.map +1 -0
- package/models/Widget.js +467 -0
- package/models/WikiPage.d.ts +137 -0
- package/models/WikiPage.d.ts.map +1 -0
- package/models/WikiPage.js +329 -0
- package/models/index.d.ts +14 -0
- package/models/index.d.ts.map +1 -0
- package/models/index.js +13 -0
- package/package.json +46 -0
- package/tests/comment.api.test.d.ts.map +1 -0
- package/tests/flair.api.test.d.ts.map +1 -0
- package/tests/modmail.api.test.d.ts.map +1 -0
- package/tests/modnote.api.test.d.ts.map +1 -0
- package/tests/post.api.test.d.ts.map +1 -0
- package/tests/subreddit.api.test.d.ts.map +1 -0
- package/tests/user.api.test.d.ts.map +1 -0
- package/tests/utils/createTestPreview.d.ts +2 -0
- package/tests/utils/createTestPreview.d.ts.map +1 -0
- package/tests/utils/createTestPreview.js +5 -0
- package/tests/utils/redditApiPluginsMock.d.ts +203 -0
- package/tests/utils/redditApiPluginsMock.d.ts.map +1 -0
- package/tests/utils/redditApiPluginsMock.js +202 -0
- package/tests/utils/runWithTestContext.d.ts +4 -0
- package/tests/utils/runWithTestContext.d.ts.map +1 -0
- package/tests/utils/runWithTestContext.js +12 -0
- package/tests/utils/userActionsPluginMock.d.ts +6 -0
- package/tests/utils/userActionsPluginMock.d.ts.map +1 -0
- package/tests/utils/userActionsPluginMock.js +5 -0
package/models/Widget.js
ADDED
|
@@ -0,0 +1,467 @@
|
|
|
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 _Widget_id, _Widget_name, _Widget_subredditName, _ImageWidget_images, _CalendarWidget_googleCalendarId, _CalendarWidget_configuration, _CalendarWidget_styles, _TextAreaWidget_text, _TextAreaWidget_styles, _ButtonWidget_buttons, _ButtonWidget_description, _ButtonWidget_styles, _CommunityListWidget_communities, _CommunityListWidget_styles, _PostFlairWidget_styles, _PostFlairWidget_templates, _PostFlairWidget_display, _CustomWidget_images, _CustomWidget_text, _CustomWidget_stylesheetUrl, _CustomWidget_height, _CustomWidget_css, _SubredditRulesWidget_rules;
|
|
13
|
+
import { CommunityListWidget_CommunityData as CommunityData, GetWidgetsResponse_WidgetItem as WidgetItem, } from '@devvit/protos';
|
|
14
|
+
import { getContext } from '@devvit/server';
|
|
15
|
+
import { assertNonNull } from '@devvit/shared-types/NonNull.js';
|
|
16
|
+
import { getRedditApiPlugins } from '../getRedditApiPlugins.js';
|
|
17
|
+
import { makeGettersEnumerable } from '../helpers/makeGettersEnumerable.js';
|
|
18
|
+
function getMetadata() {
|
|
19
|
+
return getContext().debug.metadata;
|
|
20
|
+
}
|
|
21
|
+
export class Widget {
|
|
22
|
+
constructor(widgetData, subredditName) {
|
|
23
|
+
_Widget_id.set(this, void 0);
|
|
24
|
+
_Widget_name.set(this, void 0);
|
|
25
|
+
_Widget_subredditName.set(this, void 0);
|
|
26
|
+
makeGettersEnumerable(this);
|
|
27
|
+
__classPrivateFieldSet(this, _Widget_id, widgetData.id, "f");
|
|
28
|
+
__classPrivateFieldSet(this, _Widget_name, widgetData.shortName, "f");
|
|
29
|
+
__classPrivateFieldSet(this, _Widget_subredditName, subredditName, "f");
|
|
30
|
+
}
|
|
31
|
+
get id() {
|
|
32
|
+
return __classPrivateFieldGet(this, _Widget_id, "f");
|
|
33
|
+
}
|
|
34
|
+
get name() {
|
|
35
|
+
return __classPrivateFieldGet(this, _Widget_name, "f");
|
|
36
|
+
}
|
|
37
|
+
get subredditName() {
|
|
38
|
+
return __classPrivateFieldGet(this, _Widget_subredditName, "f");
|
|
39
|
+
}
|
|
40
|
+
toJSON() {
|
|
41
|
+
return {
|
|
42
|
+
id: this.id,
|
|
43
|
+
name: this.name,
|
|
44
|
+
subredditName: this.subredditName,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
delete() {
|
|
48
|
+
return Widget.delete(this.subredditName, this.id);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* @internal
|
|
52
|
+
* @note - This method only returns the widgets listed on the sidebar.
|
|
53
|
+
*/
|
|
54
|
+
static async getWidgets(subredditName) {
|
|
55
|
+
const client = getRedditApiPlugins().Widgets;
|
|
56
|
+
const response = await client.GetWidgets({
|
|
57
|
+
subreddit: subredditName,
|
|
58
|
+
}, getMetadata());
|
|
59
|
+
assertNonNull(response.layout, 'Failed to load widgets for subreddit');
|
|
60
|
+
const widgetsMap = response.items;
|
|
61
|
+
const widgets = [];
|
|
62
|
+
for (const widgetId of response.layout.sidebar?.order ?? []) {
|
|
63
|
+
const widgetData = widgetsMap[widgetId];
|
|
64
|
+
switch (widgetData?.kind) {
|
|
65
|
+
case 'image':
|
|
66
|
+
widgets.push(new ImageWidget(widgetData, subredditName));
|
|
67
|
+
break;
|
|
68
|
+
case 'calendar':
|
|
69
|
+
widgets.push(new CalendarWidget(widgetData, subredditName));
|
|
70
|
+
break;
|
|
71
|
+
case 'textarea':
|
|
72
|
+
widgets.push(new TextAreaWidget(widgetData, subredditName));
|
|
73
|
+
break;
|
|
74
|
+
case 'button':
|
|
75
|
+
widgets.push(new ButtonWidget(widgetData, subredditName));
|
|
76
|
+
break;
|
|
77
|
+
case 'community-list':
|
|
78
|
+
widgets.push(new CommunityListWidget(widgetData, subredditName));
|
|
79
|
+
break;
|
|
80
|
+
case 'post-flair':
|
|
81
|
+
widgets.push(new PostFlairWidget(widgetData, subredditName));
|
|
82
|
+
break;
|
|
83
|
+
case 'custom':
|
|
84
|
+
widgets.push(new CustomWidget(widgetData, subredditName));
|
|
85
|
+
break;
|
|
86
|
+
case 'subreddit-rules': {
|
|
87
|
+
// subreddit rule widget does not contain any data
|
|
88
|
+
// we need to fetch it separately
|
|
89
|
+
const rulesRsp = await getRedditApiPlugins().Subreddits.SubredditAboutRules({
|
|
90
|
+
subreddit: subredditName,
|
|
91
|
+
}, getMetadata());
|
|
92
|
+
widgets.push(new SubredditRulesWidget(rulesRsp, widgetData, subredditName));
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
default:
|
|
96
|
+
throw new Error(`Unknown widget type: ${widgetData.kind}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return widgets;
|
|
100
|
+
}
|
|
101
|
+
/** @internal */
|
|
102
|
+
static async delete(subredditName, id) {
|
|
103
|
+
const client = getRedditApiPlugins().Widgets;
|
|
104
|
+
await client.DeleteWidget({
|
|
105
|
+
subreddit: subredditName,
|
|
106
|
+
id,
|
|
107
|
+
}, getMetadata());
|
|
108
|
+
}
|
|
109
|
+
/** @internal */
|
|
110
|
+
static async reorder(subredditName, orderByIds) {
|
|
111
|
+
const client = getRedditApiPlugins().Widgets;
|
|
112
|
+
await client.OrderWidgets({
|
|
113
|
+
subreddit: subredditName,
|
|
114
|
+
order: orderByIds,
|
|
115
|
+
}, getMetadata());
|
|
116
|
+
}
|
|
117
|
+
/** @internal */
|
|
118
|
+
static async add(widgetData) {
|
|
119
|
+
switch (widgetData?.type) {
|
|
120
|
+
case 'image':
|
|
121
|
+
return ImageWidget.create(widgetData);
|
|
122
|
+
case 'calendar':
|
|
123
|
+
return CalendarWidget.create(widgetData);
|
|
124
|
+
case 'textarea':
|
|
125
|
+
return TextAreaWidget.create(widgetData);
|
|
126
|
+
case 'button':
|
|
127
|
+
return ButtonWidget.create(widgetData);
|
|
128
|
+
case 'community-list':
|
|
129
|
+
return CommunityListWidget.create(widgetData);
|
|
130
|
+
case 'post-flair':
|
|
131
|
+
return PostFlairWidget.create(widgetData);
|
|
132
|
+
case 'custom':
|
|
133
|
+
return CustomWidget.create(widgetData);
|
|
134
|
+
default:
|
|
135
|
+
throw new Error('Unknown widget type');
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
_Widget_id = new WeakMap(), _Widget_name = new WeakMap(), _Widget_subredditName = new WeakMap();
|
|
140
|
+
export class ImageWidget extends Widget {
|
|
141
|
+
constructor(widgetData, subredditName) {
|
|
142
|
+
super(widgetData, subredditName);
|
|
143
|
+
_ImageWidget_images.set(this, void 0);
|
|
144
|
+
__classPrivateFieldSet(this, _ImageWidget_images, widgetData.data.map((data) => {
|
|
145
|
+
assertNonNull(data.url, 'Image widget data is missing url');
|
|
146
|
+
assertNonNull(data.height, 'Image widget data is missing height');
|
|
147
|
+
assertNonNull(data.width, 'Image widget data is missing width');
|
|
148
|
+
assertNonNull(data.linkUrl, 'Image widget data is missing linkUrl');
|
|
149
|
+
return {
|
|
150
|
+
url: data.url,
|
|
151
|
+
height: data.height,
|
|
152
|
+
width: data.width,
|
|
153
|
+
linkUrl: data.linkUrl,
|
|
154
|
+
};
|
|
155
|
+
}), "f");
|
|
156
|
+
}
|
|
157
|
+
get images() {
|
|
158
|
+
return __classPrivateFieldGet(this, _ImageWidget_images, "f");
|
|
159
|
+
}
|
|
160
|
+
toJSON() {
|
|
161
|
+
return {
|
|
162
|
+
...super.toJSON(),
|
|
163
|
+
images: this.images,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/** @internal */
|
|
167
|
+
static async create(options) {
|
|
168
|
+
const client = getRedditApiPlugins().Widgets;
|
|
169
|
+
const response = await client.AddImageWidget(options, getMetadata());
|
|
170
|
+
return new ImageWidget(WidgetItem.fromJSON(response), options.subreddit);
|
|
171
|
+
}
|
|
172
|
+
/** @internal */
|
|
173
|
+
static async update(options) {
|
|
174
|
+
const client = getRedditApiPlugins().Widgets;
|
|
175
|
+
const response = await client.UpdateImageWidget(options, getMetadata());
|
|
176
|
+
return new ImageWidget(WidgetItem.fromJSON(response), options.subreddit);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
_ImageWidget_images = new WeakMap();
|
|
180
|
+
export class CalendarWidget extends Widget {
|
|
181
|
+
constructor(widgetData, subredditName) {
|
|
182
|
+
super(widgetData, subredditName);
|
|
183
|
+
_CalendarWidget_googleCalendarId.set(this, void 0);
|
|
184
|
+
_CalendarWidget_configuration.set(this, void 0);
|
|
185
|
+
_CalendarWidget_styles.set(this, void 0);
|
|
186
|
+
assertNonNull(widgetData.googleCalendarId, 'Calendar widget data is missing googleCalendarId');
|
|
187
|
+
assertNonNull(widgetData.configuration, 'Calendar widget data is missing configuration');
|
|
188
|
+
assertNonNull(widgetData.styles, 'Calendar widget data is missing styles');
|
|
189
|
+
__classPrivateFieldSet(this, _CalendarWidget_googleCalendarId, widgetData.googleCalendarId, "f");
|
|
190
|
+
__classPrivateFieldSet(this, _CalendarWidget_configuration, widgetData.configuration, "f");
|
|
191
|
+
__classPrivateFieldSet(this, _CalendarWidget_styles, widgetData.styles, "f");
|
|
192
|
+
}
|
|
193
|
+
get googleCalendarId() {
|
|
194
|
+
return __classPrivateFieldGet(this, _CalendarWidget_googleCalendarId, "f");
|
|
195
|
+
}
|
|
196
|
+
get configuration() {
|
|
197
|
+
return __classPrivateFieldGet(this, _CalendarWidget_configuration, "f");
|
|
198
|
+
}
|
|
199
|
+
get styles() {
|
|
200
|
+
return __classPrivateFieldGet(this, _CalendarWidget_styles, "f");
|
|
201
|
+
}
|
|
202
|
+
toJSON() {
|
|
203
|
+
return {
|
|
204
|
+
...super.toJSON(),
|
|
205
|
+
googleCalendarId: this.googleCalendarId,
|
|
206
|
+
configuration: this.configuration,
|
|
207
|
+
styles: this.styles,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
/** @internal */
|
|
211
|
+
static async create(options) {
|
|
212
|
+
const client = getRedditApiPlugins().Widgets;
|
|
213
|
+
const response = await client.AddCalendarWidget(options, getMetadata());
|
|
214
|
+
return new CalendarWidget(WidgetItem.fromJSON(response), options.subreddit);
|
|
215
|
+
}
|
|
216
|
+
/** @internal */
|
|
217
|
+
static async update(options) {
|
|
218
|
+
const client = getRedditApiPlugins().Widgets;
|
|
219
|
+
const response = await client.UpdateCalendarWidget(options, getMetadata());
|
|
220
|
+
return new CalendarWidget(WidgetItem.fromJSON(response), options.subreddit);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
_CalendarWidget_googleCalendarId = new WeakMap(), _CalendarWidget_configuration = new WeakMap(), _CalendarWidget_styles = new WeakMap();
|
|
224
|
+
export class TextAreaWidget extends Widget {
|
|
225
|
+
constructor(widgetData, subredditName) {
|
|
226
|
+
super(widgetData, subredditName);
|
|
227
|
+
_TextAreaWidget_text.set(this, void 0);
|
|
228
|
+
_TextAreaWidget_styles.set(this, void 0);
|
|
229
|
+
assertNonNull(widgetData.text, 'Textarea widget data is missing text');
|
|
230
|
+
assertNonNull(widgetData.styles, 'Textarea widget data is missing styles');
|
|
231
|
+
__classPrivateFieldSet(this, _TextAreaWidget_text, widgetData.text, "f");
|
|
232
|
+
__classPrivateFieldSet(this, _TextAreaWidget_styles, widgetData.styles, "f");
|
|
233
|
+
}
|
|
234
|
+
get text() {
|
|
235
|
+
return __classPrivateFieldGet(this, _TextAreaWidget_text, "f");
|
|
236
|
+
}
|
|
237
|
+
get styles() {
|
|
238
|
+
return __classPrivateFieldGet(this, _TextAreaWidget_styles, "f");
|
|
239
|
+
}
|
|
240
|
+
toJSON() {
|
|
241
|
+
return {
|
|
242
|
+
...super.toJSON(),
|
|
243
|
+
text: this.text,
|
|
244
|
+
styles: this.styles,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/** @internal */
|
|
248
|
+
static async create(options) {
|
|
249
|
+
const client = getRedditApiPlugins().Widgets;
|
|
250
|
+
const response = await client.AddTextAreaWidget(options, getMetadata());
|
|
251
|
+
return new TextAreaWidget(WidgetItem.fromJSON(response), options.subreddit);
|
|
252
|
+
}
|
|
253
|
+
/** @internal */
|
|
254
|
+
static async update(options) {
|
|
255
|
+
const client = getRedditApiPlugins().Widgets;
|
|
256
|
+
const response = await client.UpdateTextAreaWidget(options, getMetadata());
|
|
257
|
+
return new TextAreaWidget(WidgetItem.fromJSON(response), options.subreddit);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
_TextAreaWidget_text = new WeakMap(), _TextAreaWidget_styles = new WeakMap();
|
|
261
|
+
export class ButtonWidget extends Widget {
|
|
262
|
+
constructor(widgetData, subredditName) {
|
|
263
|
+
super(widgetData, subredditName);
|
|
264
|
+
_ButtonWidget_buttons.set(this, void 0);
|
|
265
|
+
_ButtonWidget_description.set(this, void 0);
|
|
266
|
+
_ButtonWidget_styles.set(this, void 0);
|
|
267
|
+
assertNonNull(widgetData.styles, 'Button widget data is missing styles');
|
|
268
|
+
__classPrivateFieldSet(this, _ButtonWidget_buttons, widgetData.buttons, "f");
|
|
269
|
+
__classPrivateFieldSet(this, _ButtonWidget_description, widgetData.description ?? '', "f");
|
|
270
|
+
__classPrivateFieldSet(this, _ButtonWidget_styles, widgetData.styles, "f");
|
|
271
|
+
}
|
|
272
|
+
get buttons() {
|
|
273
|
+
return __classPrivateFieldGet(this, _ButtonWidget_buttons, "f");
|
|
274
|
+
}
|
|
275
|
+
get description() {
|
|
276
|
+
return __classPrivateFieldGet(this, _ButtonWidget_description, "f");
|
|
277
|
+
}
|
|
278
|
+
get styles() {
|
|
279
|
+
return __classPrivateFieldGet(this, _ButtonWidget_styles, "f");
|
|
280
|
+
}
|
|
281
|
+
toJSON() {
|
|
282
|
+
return {
|
|
283
|
+
...super.toJSON(),
|
|
284
|
+
buttons: this.buttons,
|
|
285
|
+
description: this.description,
|
|
286
|
+
styles: this.styles,
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
/** @internal */
|
|
290
|
+
static async create(options) {
|
|
291
|
+
const client = getRedditApiPlugins().Widgets;
|
|
292
|
+
const response = await client.AddButtonWidget(options, getMetadata());
|
|
293
|
+
return new ButtonWidget(WidgetItem.fromJSON(response), options.subreddit);
|
|
294
|
+
}
|
|
295
|
+
/** @internal */
|
|
296
|
+
static async update(options) {
|
|
297
|
+
const client = getRedditApiPlugins().Widgets;
|
|
298
|
+
const response = await client.UpdateButtonWidget(options, getMetadata());
|
|
299
|
+
return new ButtonWidget(WidgetItem.fromJSON(response), options.subreddit);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
_ButtonWidget_buttons = new WeakMap(), _ButtonWidget_description = new WeakMap(), _ButtonWidget_styles = new WeakMap();
|
|
303
|
+
export class CommunityListWidget extends Widget {
|
|
304
|
+
constructor(widgetData, subredditName) {
|
|
305
|
+
super(widgetData, subredditName);
|
|
306
|
+
_CommunityListWidget_communities.set(this, void 0);
|
|
307
|
+
_CommunityListWidget_styles.set(this, void 0);
|
|
308
|
+
__classPrivateFieldSet(this, _CommunityListWidget_communities, widgetData.data.map((communityData) => CommunityData.fromJSON(communityData)), "f");
|
|
309
|
+
assertNonNull(widgetData.styles, 'Community list widget data is missing styles');
|
|
310
|
+
__classPrivateFieldSet(this, _CommunityListWidget_styles, widgetData.styles, "f");
|
|
311
|
+
}
|
|
312
|
+
get communities() {
|
|
313
|
+
return __classPrivateFieldGet(this, _CommunityListWidget_communities, "f");
|
|
314
|
+
}
|
|
315
|
+
get styles() {
|
|
316
|
+
return __classPrivateFieldGet(this, _CommunityListWidget_styles, "f");
|
|
317
|
+
}
|
|
318
|
+
toJSON() {
|
|
319
|
+
return {
|
|
320
|
+
...super.toJSON(),
|
|
321
|
+
communities: this.communities,
|
|
322
|
+
styles: this.styles,
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
/** @internal */
|
|
326
|
+
static async create(options) {
|
|
327
|
+
const client = getRedditApiPlugins().Widgets;
|
|
328
|
+
const response = await client.AddCommunityListWidget(options, getMetadata());
|
|
329
|
+
return new CommunityListWidget(WidgetItem.fromJSON(response), options.subreddit);
|
|
330
|
+
}
|
|
331
|
+
/** @internal */
|
|
332
|
+
static async update(options) {
|
|
333
|
+
const client = getRedditApiPlugins().Widgets;
|
|
334
|
+
const response = await client.UpdateCommunityListWidget(options, getMetadata());
|
|
335
|
+
return new CommunityListWidget(WidgetItem.fromJSON(response), options.subreddit);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
_CommunityListWidget_communities = new WeakMap(), _CommunityListWidget_styles = new WeakMap();
|
|
339
|
+
export class PostFlairWidget extends Widget {
|
|
340
|
+
constructor(widgetData, subredditName) {
|
|
341
|
+
super(widgetData, subredditName);
|
|
342
|
+
_PostFlairWidget_styles.set(this, void 0);
|
|
343
|
+
_PostFlairWidget_templates.set(this, void 0);
|
|
344
|
+
_PostFlairWidget_display.set(this, void 0);
|
|
345
|
+
assertNonNull(widgetData.styles, 'Post flair widget data is missing styles');
|
|
346
|
+
__classPrivateFieldSet(this, _PostFlairWidget_styles, widgetData.styles, "f");
|
|
347
|
+
__classPrivateFieldSet(this, _PostFlairWidget_templates, widgetData.order.map((templateId) => widgetData.templates[templateId]), "f");
|
|
348
|
+
if (!((widgetData.display && widgetData.display === 'list') || widgetData.display === 'cloud')) {
|
|
349
|
+
throw new Error('Post flair widget data is missing display type');
|
|
350
|
+
}
|
|
351
|
+
__classPrivateFieldSet(this, _PostFlairWidget_display, widgetData.display, "f");
|
|
352
|
+
}
|
|
353
|
+
get styles() {
|
|
354
|
+
return __classPrivateFieldGet(this, _PostFlairWidget_styles, "f");
|
|
355
|
+
}
|
|
356
|
+
get templates() {
|
|
357
|
+
return __classPrivateFieldGet(this, _PostFlairWidget_templates, "f");
|
|
358
|
+
}
|
|
359
|
+
get display() {
|
|
360
|
+
return __classPrivateFieldGet(this, _PostFlairWidget_display, "f");
|
|
361
|
+
}
|
|
362
|
+
toJSON() {
|
|
363
|
+
return {
|
|
364
|
+
...super.toJSON(),
|
|
365
|
+
styles: this.styles,
|
|
366
|
+
templates: this.templates,
|
|
367
|
+
display: this.display,
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
/** @internal */
|
|
371
|
+
static async create(options) {
|
|
372
|
+
const client = getRedditApiPlugins().Widgets;
|
|
373
|
+
const response = await client.AddPostFlairWidget(options, getMetadata());
|
|
374
|
+
return new PostFlairWidget(WidgetItem.fromJSON(response), options.subreddit);
|
|
375
|
+
}
|
|
376
|
+
/** @internal */
|
|
377
|
+
static async update(options) {
|
|
378
|
+
const client = getRedditApiPlugins().Widgets;
|
|
379
|
+
const response = await client.UpdatePostFlairWidget(options, getMetadata());
|
|
380
|
+
return new PostFlairWidget(WidgetItem.fromJSON(response), options.subreddit);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
_PostFlairWidget_styles = new WeakMap(), _PostFlairWidget_templates = new WeakMap(), _PostFlairWidget_display = new WeakMap();
|
|
384
|
+
export class CustomWidget extends Widget {
|
|
385
|
+
constructor(widgetData, subredditName) {
|
|
386
|
+
super(widgetData, subredditName);
|
|
387
|
+
_CustomWidget_images.set(this, void 0);
|
|
388
|
+
_CustomWidget_text.set(this, void 0);
|
|
389
|
+
_CustomWidget_stylesheetUrl.set(this, void 0);
|
|
390
|
+
_CustomWidget_height.set(this, void 0);
|
|
391
|
+
_CustomWidget_css.set(this, void 0);
|
|
392
|
+
assertNonNull(widgetData.stylesheetUrl, 'Custom widget data is missing stylesheetUrl');
|
|
393
|
+
assertNonNull(widgetData.height, 'Custom widget data is missing height');
|
|
394
|
+
assertNonNull(widgetData.css, 'Custom widget data is missing css');
|
|
395
|
+
__classPrivateFieldSet(this, _CustomWidget_images, widgetData.imageData ?? [], "f");
|
|
396
|
+
__classPrivateFieldSet(this, _CustomWidget_text, widgetData.text ?? '', "f");
|
|
397
|
+
__classPrivateFieldSet(this, _CustomWidget_stylesheetUrl, widgetData.stylesheetUrl, "f");
|
|
398
|
+
__classPrivateFieldSet(this, _CustomWidget_height, widgetData.height, "f");
|
|
399
|
+
__classPrivateFieldSet(this, _CustomWidget_css, widgetData.css, "f");
|
|
400
|
+
}
|
|
401
|
+
get images() {
|
|
402
|
+
return __classPrivateFieldGet(this, _CustomWidget_images, "f");
|
|
403
|
+
}
|
|
404
|
+
get text() {
|
|
405
|
+
return __classPrivateFieldGet(this, _CustomWidget_text, "f");
|
|
406
|
+
}
|
|
407
|
+
get stylesheetUrl() {
|
|
408
|
+
return __classPrivateFieldGet(this, _CustomWidget_stylesheetUrl, "f");
|
|
409
|
+
}
|
|
410
|
+
get height() {
|
|
411
|
+
return __classPrivateFieldGet(this, _CustomWidget_height, "f");
|
|
412
|
+
}
|
|
413
|
+
get css() {
|
|
414
|
+
return __classPrivateFieldGet(this, _CustomWidget_css, "f");
|
|
415
|
+
}
|
|
416
|
+
toJSON() {
|
|
417
|
+
return {
|
|
418
|
+
...super.toJSON(),
|
|
419
|
+
images: this.images,
|
|
420
|
+
text: this.text,
|
|
421
|
+
stylesheetUrl: this.stylesheetUrl,
|
|
422
|
+
height: this.height,
|
|
423
|
+
css: this.css,
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
/** @internal */
|
|
427
|
+
static async create(options) {
|
|
428
|
+
const client = getRedditApiPlugins().Widgets;
|
|
429
|
+
const response = await client.AddCustomWidget(options, getMetadata());
|
|
430
|
+
return new CustomWidget(WidgetItem.fromJSON(response), options.subreddit);
|
|
431
|
+
}
|
|
432
|
+
/** @internal */
|
|
433
|
+
static async update(options) {
|
|
434
|
+
const client = getRedditApiPlugins().Widgets;
|
|
435
|
+
const response = await client.UpdateCustomWidget(options, getMetadata());
|
|
436
|
+
return new CustomWidget(WidgetItem.fromJSON(response), options.subreddit);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
_CustomWidget_images = new WeakMap(), _CustomWidget_text = new WeakMap(), _CustomWidget_stylesheetUrl = new WeakMap(), _CustomWidget_height = new WeakMap(), _CustomWidget_css = new WeakMap();
|
|
440
|
+
export class SubredditRulesWidget extends Widget {
|
|
441
|
+
constructor(subredditAboutRulesRsp, widgetData, subredditName) {
|
|
442
|
+
super(widgetData, subredditName);
|
|
443
|
+
_SubredditRulesWidget_rules.set(this, void 0);
|
|
444
|
+
__classPrivateFieldSet(this, _SubredditRulesWidget_rules, subredditAboutRulesRsp.rules.map(({ description, priority, shortName, violationReason }) => {
|
|
445
|
+
assertNonNull(description, 'Subreddit rule is missing description');
|
|
446
|
+
assertNonNull(priority, 'Subreddit rule is missing priority');
|
|
447
|
+
assertNonNull(shortName, 'Subreddit rule is missing shortName');
|
|
448
|
+
assertNonNull(violationReason, 'Subreddit rule is missing violationReason');
|
|
449
|
+
return {
|
|
450
|
+
description,
|
|
451
|
+
priority,
|
|
452
|
+
shortName,
|
|
453
|
+
violationReason,
|
|
454
|
+
};
|
|
455
|
+
}), "f");
|
|
456
|
+
}
|
|
457
|
+
get rules() {
|
|
458
|
+
return __classPrivateFieldGet(this, _SubredditRulesWidget_rules, "f");
|
|
459
|
+
}
|
|
460
|
+
toJSON() {
|
|
461
|
+
return {
|
|
462
|
+
...super.toJSON(),
|
|
463
|
+
rules: this.rules,
|
|
464
|
+
};
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
_SubredditRulesWidget_rules = new WeakMap();
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import type { WikiPage as WikiPageProto, WikiPageRevision as WikiPageRevisionProto, WikiPageSettings_Data } from '@devvit/protos';
|
|
2
|
+
import { Listing } from './Listing.js';
|
|
3
|
+
import { User } from './User.js';
|
|
4
|
+
export type CreateWikiPageOptions = {
|
|
5
|
+
/** The name of the subreddit to create the page in. */
|
|
6
|
+
subredditName: string;
|
|
7
|
+
/** The name of the page to create. */
|
|
8
|
+
page: string;
|
|
9
|
+
/** The content of the page. */
|
|
10
|
+
content: string;
|
|
11
|
+
/** The reason for creating the page. */
|
|
12
|
+
reason?: string;
|
|
13
|
+
};
|
|
14
|
+
export type UpdateWikiPageOptions = {
|
|
15
|
+
/** The name of the subreddit the page is in. */
|
|
16
|
+
subredditName: string;
|
|
17
|
+
/** The name of the page to update. */
|
|
18
|
+
page: string;
|
|
19
|
+
/** The new content of the page. */
|
|
20
|
+
content: string;
|
|
21
|
+
/** The reason for updating the page. */
|
|
22
|
+
reason?: string | undefined;
|
|
23
|
+
};
|
|
24
|
+
export type GetPageRevisionsOptions = {
|
|
25
|
+
/** The name of the subreddit the page is in. */
|
|
26
|
+
subredditName: string;
|
|
27
|
+
/** The name of the page to get revisions for. */
|
|
28
|
+
page: string;
|
|
29
|
+
/** The number of revisions to get per request. */
|
|
30
|
+
pageSize?: number;
|
|
31
|
+
/** The maximum number of revisions to get. */
|
|
32
|
+
limit?: number;
|
|
33
|
+
/** The ID of the revision to start at. */
|
|
34
|
+
after?: string;
|
|
35
|
+
};
|
|
36
|
+
export declare enum WikiPagePermissionLevel {
|
|
37
|
+
/** Use subreddit wiki permissions */
|
|
38
|
+
SUBREDDIT_PERMISSIONS = 0,
|
|
39
|
+
/** Only approved wiki contributors for this page may edit */
|
|
40
|
+
APPROVED_CONTRIBUTORS_ONLY = 1,
|
|
41
|
+
/** Only mods may edit and view */
|
|
42
|
+
MODS_ONLY = 2
|
|
43
|
+
}
|
|
44
|
+
export type UpdatePageSettingsOptions = {
|
|
45
|
+
/** The name of the subreddit the page is in. */
|
|
46
|
+
subredditName: string;
|
|
47
|
+
/** The name of the page to update settings for. */
|
|
48
|
+
page: string;
|
|
49
|
+
/** Whether the page should be listed in the wiki index. */
|
|
50
|
+
listed: boolean;
|
|
51
|
+
/** The permission level for the page. */
|
|
52
|
+
permLevel: WikiPagePermissionLevel;
|
|
53
|
+
};
|
|
54
|
+
export declare class WikiPage {
|
|
55
|
+
#private;
|
|
56
|
+
/**
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
constructor(name: string, subredditName: string, data: WikiPageProto);
|
|
60
|
+
/** The name of the page. */
|
|
61
|
+
get name(): string;
|
|
62
|
+
/** The name of the subreddit the page is in. */
|
|
63
|
+
get subredditName(): string;
|
|
64
|
+
/** The Markdown content of the page. */
|
|
65
|
+
get content(): string;
|
|
66
|
+
/** The HTML content of the page. */
|
|
67
|
+
get contentHtml(): string;
|
|
68
|
+
/** The ID of the revision. */
|
|
69
|
+
get revisionId(): string;
|
|
70
|
+
/** The date of the revision. */
|
|
71
|
+
get revisionDate(): Date;
|
|
72
|
+
/** The reason for the revision. */
|
|
73
|
+
get revisionReason(): string;
|
|
74
|
+
/** The author of this revision. */
|
|
75
|
+
get revisionAuthor(): User | undefined;
|
|
76
|
+
toJSON(): Pick<WikiPage, 'name' | 'subredditName' | 'content' | 'contentHtml' | 'revisionId' | 'revisionDate' | 'revisionReason'> & {
|
|
77
|
+
revisionAuthor: ReturnType<User['toJSON']> | undefined;
|
|
78
|
+
};
|
|
79
|
+
/** Update this page. */
|
|
80
|
+
update(content: string, reason?: string): Promise<WikiPage>;
|
|
81
|
+
/** Get the revisions for this page. */
|
|
82
|
+
getRevisions(options: Omit<GetPageRevisionsOptions, 'subredditName' | 'page'>): Promise<Listing<WikiPageRevision>>;
|
|
83
|
+
/** Revert this page to a previous revision. */
|
|
84
|
+
revertTo(revisionId: string): Promise<void>;
|
|
85
|
+
/** Get the settings for this page. */
|
|
86
|
+
getSettings(): Promise<WikiPageSettings>;
|
|
87
|
+
/** Update the settings for this page. */
|
|
88
|
+
updateSettings(options: Omit<UpdatePageSettingsOptions, 'subredditName' | 'page'>): Promise<WikiPageSettings>;
|
|
89
|
+
/** Add an editor to this page. */
|
|
90
|
+
addEditor(username: string): Promise<void>;
|
|
91
|
+
/** Remove an editor from this page. */
|
|
92
|
+
removeEditor(username: string): Promise<void>;
|
|
93
|
+
/** @internal */
|
|
94
|
+
static getPage(subredditName: string, page: string): Promise<WikiPage>;
|
|
95
|
+
/** @internal */
|
|
96
|
+
static getPages(subredditName: string): Promise<string[]>;
|
|
97
|
+
/** @internal */
|
|
98
|
+
static createPage(options: CreateWikiPageOptions): Promise<WikiPage>;
|
|
99
|
+
/** @internal */
|
|
100
|
+
static updatePage(options: UpdateWikiPageOptions): Promise<WikiPage>;
|
|
101
|
+
/** @internal */
|
|
102
|
+
static getPageRevisions(options: GetPageRevisionsOptions): Listing<WikiPageRevision>;
|
|
103
|
+
/** @internal */
|
|
104
|
+
static revertPage(subredditName: string, page: string, revisionId: string): Promise<void>;
|
|
105
|
+
/** @internal */
|
|
106
|
+
static getPageSettings(subredditName: string, page: string): Promise<WikiPageSettings>;
|
|
107
|
+
/** @internal */
|
|
108
|
+
static updatePageSettings(options: UpdatePageSettingsOptions): Promise<WikiPageSettings>;
|
|
109
|
+
/** @internal */
|
|
110
|
+
static addEditor(subredditName: string, page: string, username: string): Promise<void>;
|
|
111
|
+
/** @internal */
|
|
112
|
+
static removeEditor(subredditName: string, page: string, username: string): Promise<void>;
|
|
113
|
+
}
|
|
114
|
+
export declare class WikiPageRevision {
|
|
115
|
+
#private;
|
|
116
|
+
constructor(data: WikiPageRevisionProto);
|
|
117
|
+
get id(): string;
|
|
118
|
+
get page(): string;
|
|
119
|
+
get date(): Date;
|
|
120
|
+
get author(): User;
|
|
121
|
+
get reason(): string;
|
|
122
|
+
get hidden(): boolean;
|
|
123
|
+
toJSON(): Pick<WikiPageRevision, 'id' | 'page' | 'date' | 'reason' | 'hidden'> & {
|
|
124
|
+
author: ReturnType<User['toJSON']>;
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
export declare class WikiPageSettings {
|
|
128
|
+
#private;
|
|
129
|
+
constructor(data: WikiPageSettings_Data);
|
|
130
|
+
get listed(): boolean;
|
|
131
|
+
get permLevel(): WikiPagePermissionLevel;
|
|
132
|
+
get editors(): User[];
|
|
133
|
+
toJSON(): Pick<WikiPageSettings, 'listed' | 'permLevel'> & {
|
|
134
|
+
editors: ReturnType<User['toJSON']>[];
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=WikiPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WikiPage.d.ts","sourceRoot":"","sources":["../../src/models/WikiPage.ts"],"names":[],"mappings":"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"}
|