@devvit/public-api 0.12.0-next-2025-04-30-2e2a14dbe.0 → 0.12.0-next-2025-08-12-20-19-11-8d352335b.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/apis/AssetsClient/AssetsClient.d.ts +2 -2
- package/apis/AssetsClient/AssetsClient.d.ts.map +1 -1
- package/apis/AssetsClient/AssetsClient.js +5 -7
- package/apis/key-value-storage/KeyValueStorage.d.ts +1 -1
- package/apis/key-value-storage/KeyValueStorage.d.ts.map +1 -1
- package/apis/makeAPIClients.d.ts.map +1 -1
- package/apis/makeAPIClients.js +3 -0
- package/apis/media/MediaClient.js +1 -1
- package/apis/realtime/RealtimeClient.d.ts +1 -1
- package/apis/realtime/RealtimeClient.d.ts.map +1 -1
- package/apis/reddit/RedditAPIClient.d.ts +41 -41
- package/apis/reddit/RedditAPIClient.d.ts.map +1 -1
- package/apis/reddit/RedditAPIClient.js +150 -151
- package/apis/reddit/models/Comment.d.ts +4 -1
- package/apis/reddit/models/Comment.d.ts.map +1 -1
- package/apis/reddit/models/Comment.js +4 -1
- package/apis/reddit/models/Flair.d.ts +1 -1
- package/apis/reddit/models/Flair.d.ts.map +1 -1
- package/apis/reddit/models/Flair.js +2 -2
- package/apis/reddit/models/Listing.d.ts +1 -1
- package/apis/reddit/models/Listing.d.ts.map +1 -1
- package/apis/reddit/models/ModAction.d.ts +3 -0
- package/apis/reddit/models/ModAction.d.ts.map +1 -1
- package/apis/reddit/models/ModAction.js +1 -2
- package/apis/reddit/models/ModMail.d.ts +23 -23
- package/apis/reddit/models/ModMail.js +24 -24
- package/apis/reddit/models/ModNote.d.ts +1 -1
- package/apis/reddit/models/ModNote.d.ts.map +1 -1
- package/apis/reddit/models/ModNote.js +1 -1
- package/apis/reddit/models/Post.d.ts +32 -5
- package/apis/reddit/models/Post.d.ts.map +1 -1
- package/apis/reddit/models/Post.js +74 -7
- package/apis/reddit/models/PrivateMessage.d.ts +1 -1
- package/apis/reddit/models/PrivateMessage.d.ts.map +1 -1
- package/apis/reddit/models/PrivateMessage.js +1 -1
- package/apis/reddit/models/Subreddit.d.ts +27 -9
- package/apis/reddit/models/Subreddit.d.ts.map +1 -1
- package/apis/reddit/models/Subreddit.js +12 -18
- package/apis/reddit/models/User.d.ts +23 -2
- package/apis/reddit/models/User.d.ts.map +1 -1
- package/apis/reddit/models/User.js +2 -15
- package/apis/reddit/models/Vault.d.ts +4 -1
- package/apis/reddit/models/Vault.d.ts.map +1 -1
- package/apis/reddit/models/Vault.js +3 -8
- package/apis/reddit/models/index.d.ts +1 -1
- package/apis/reddit/models/index.d.ts.map +1 -1
- package/apis/reddit/models/index.js +1 -0
- package/apis/reddit/tests/utils/createTestRedditApiClient.d.ts +8 -0
- package/apis/reddit/tests/utils/createTestRedditApiClient.d.ts.map +1 -0
- package/apis/reddit/tests/utils/createTestRedditApiClient.js +16 -0
- package/apis/redis/RedisClient.d.ts +0 -1
- package/apis/redis/RedisClient.d.ts.map +1 -1
- package/apis/redis/RedisClient.js +6 -0
- package/apis/redis/RedisClient.tests.js +3 -0
- package/apis/scheduler/SchedulerClient.js +1 -1
- package/apis/ui/UIClient.d.ts +3 -1
- package/apis/ui/UIClient.d.ts.map +1 -1
- package/apis/ui/UIClient.js +13 -12
- package/devvit/Devvit.d.ts +2 -2
- package/devvit/Devvit.d.ts.map +1 -1
- package/devvit/Devvit.js +65 -18
- package/devvit/internals/app-settings.d.ts.map +1 -1
- package/devvit/internals/app-settings.js +1 -4
- package/devvit/internals/blocks/BlocksReconciler.d.ts +105 -0
- package/devvit/internals/blocks/BlocksReconciler.d.ts.map +1 -1
- package/devvit/internals/blocks/BlocksReconciler.js +15 -13
- package/devvit/internals/blocks/handler/BlocksHandler.d.ts.map +1 -1
- package/devvit/internals/blocks/handler/BlocksHandler.js +2 -1
- package/devvit/internals/blocks/handler/ContextBuilder.d.ts.map +1 -1
- package/devvit/internals/blocks/handler/ContextBuilder.js +3 -0
- package/devvit/internals/blocks/handler/UIClient.d.ts +7 -5
- package/devvit/internals/blocks/handler/UIClient.d.ts.map +1 -1
- package/devvit/internals/blocks/handler/UIClient.js +14 -13
- package/devvit/internals/blocks/handler/cache.d.ts +1 -1
- package/devvit/internals/blocks/handler/cache.d.ts.map +1 -1
- package/devvit/internals/blocks/handler/test-helpers.d.ts +1 -1
- package/devvit/internals/blocks/handler/test-helpers.d.ts.map +1 -1
- package/devvit/internals/blocks/handler/types.d.ts +1 -1
- package/devvit/internals/blocks/handler/types.d.ts.map +1 -1
- package/devvit/internals/blocks/handler/useAsync.d.ts +1 -1
- package/devvit/internals/blocks/handler/useAsync.d.ts.map +1 -1
- package/devvit/internals/blocks/handler/useChannel.d.ts +1 -1
- package/devvit/internals/blocks/handler/useChannel.d.ts.map +1 -1
- package/devvit/internals/blocks/handler/useForm.d.ts +1 -1
- package/devvit/internals/blocks/handler/useForm.d.ts.map +1 -1
- package/devvit/internals/blocks/handler/useState.d.ts +1 -1
- package/devvit/internals/blocks/handler/useState.d.ts.map +1 -1
- package/devvit/internals/blocks/handler/useWebView.d.ts +1 -1
- package/devvit/internals/blocks/handler/useWebView.d.ts.map +1 -1
- package/devvit/internals/blocks/handler/useWebView.js +23 -4
- package/devvit/internals/blocks/useChannel.d.ts.map +1 -1
- package/devvit/internals/cache.d.ts +1 -1
- package/devvit/internals/cache.d.ts.map +1 -1
- package/devvit/internals/context.d.ts +1 -1
- package/devvit/internals/context.d.ts.map +1 -1
- package/devvit/internals/context.js +10 -1
- package/devvit/internals/csrf.d.ts.map +1 -1
- package/devvit/internals/csrf.js +4 -5
- package/devvit/internals/helpers/color.d.ts +1 -1
- package/devvit/internals/helpers/color.d.ts.map +1 -1
- package/devvit/internals/helpers/devvitInternalMessage.d.ts.map +1 -1
- package/devvit/internals/helpers/devvitInternalMessage.js +1 -1
- package/devvit/internals/helpers/extendDevvitPrototype.d.ts +1 -6
- package/devvit/internals/helpers/extendDevvitPrototype.d.ts.map +1 -1
- package/devvit/internals/helpers/extendDevvitPrototype.js +1 -9
- package/devvit/internals/installation-settings.d.ts.map +1 -1
- package/devvit/internals/installation-settings.js +1 -4
- package/devvit/internals/menu-items.d.ts +1 -0
- package/devvit/internals/menu-items.d.ts.map +1 -1
- package/devvit/internals/menu-items.js +9 -3
- package/devvit/internals/semanticColors.d.ts +4 -0
- package/devvit/internals/semanticColors.d.ts.map +1 -1
- package/devvit/internals/semanticColors.js +4 -0
- package/devvit/internals/ui-event-handler.js +3 -3
- package/devvit/internals/upgrade-app-shim.d.ts +1 -5
- package/devvit/internals/upgrade-app-shim.d.ts.map +1 -1
- package/devvit/internals/upgrade-app-shim.js +0 -8
- package/index.d.ts +2 -2
- package/index.d.ts.map +1 -1
- package/index.js +1 -2
- package/meta.min.json +401 -342
- package/package.json +23 -20
- package/public-api.min.js +6 -6
- package/public-api.min.js.map +4 -4
- package/types/configuration.d.ts +12 -3
- package/types/configuration.d.ts.map +1 -1
- package/types/context.d.ts +10 -2
- package/types/context.d.ts.map +1 -1
- package/types/data.d.ts +1 -1
- package/types/data.d.ts.map +1 -1
- package/types/form.d.ts +6 -89
- package/types/form.d.ts.map +1 -1
- package/types/form.js +2 -5
- package/types/hooks.d.ts +1 -1
- package/types/hooks.d.ts.map +1 -1
- package/types/icons.d.ts +1 -1
- package/types/icons.d.ts.map +1 -1
- package/types/icons.js +1 -1
- package/types/json.d.ts +43 -0
- package/types/json.d.ts.map +1 -0
- package/types/json.js +1 -0
- package/types/kvStore.d.ts +1 -1
- package/types/kvStore.d.ts.map +1 -1
- package/types/media.d.ts +1 -1
- package/types/menu-item.d.ts +3 -14
- package/types/menu-item.d.ts.map +1 -1
- package/types/realtime.d.ts +1 -1
- package/types/realtime.d.ts.map +1 -1
- package/types/redis.d.ts +0 -1
- package/types/redis.d.ts.map +1 -1
- package/types/scheduler.d.ts +2 -2
- package/types/scheduler.d.ts.map +1 -1
- package/types/tid.d.ts +47 -0
- package/types/tid.d.ts.map +1 -0
- package/types/tid.js +114 -0
- package/types/ui-client.d.ts +12 -6
- package/types/ui-client.d.ts.map +1 -1
- package/types/web-view-ui-client.d.ts +1 -1
- package/types/web-view-ui-client.d.ts.map +1 -1
- package/version.json +6 -8
- package/apis/reddit/index.d.ts +0 -1104
- package/apis/reddit/index.d.ts.map +0 -1
- package/apis/reddit/index.js +0 -1442
- package/apis/reddit/tests/utils/createTestRedditApiContext.d.ts +0 -7
- package/apis/reddit/tests/utils/createTestRedditApiContext.d.ts.map +0 -1
- package/apis/reddit/tests/utils/createTestRedditApiContext.js +0 -23
- package/devvit/internals/async-metadata.d.ts +0 -2
- package/devvit/internals/async-metadata.d.ts.map +0 -1
- package/devvit/internals/async-metadata.js +0 -65
- package/meta.json +0 -10428
- package/public-api.d.ts +0 -60472
- package/public-api.iife.js +0 -102332
- package/tsdoc-metadata.json +0 -11
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DevvitPostData } from '@devvit/protos';
|
|
1
2
|
import { Header } from '@devvit/shared-types/Header.js';
|
|
2
3
|
import { assertNonNull } from '@devvit/shared-types/NonNull.js';
|
|
3
4
|
import pkg from '../../version.json' with { type: 'json' };
|
|
@@ -5,6 +6,12 @@ export function getContextFromMetadata(metadata, postId, commentId) {
|
|
|
5
6
|
const subredditId = metadata[Header.Subreddit]?.values[0];
|
|
6
7
|
assertNonNull(subredditId, 'subreddit is missing from Context');
|
|
7
8
|
const subredditName = metadata[Header.SubredditName]?.values[0];
|
|
9
|
+
// 'devvit-post-data' is a JSON string. If set in the header, parse it as DevvitPostData.
|
|
10
|
+
let postData;
|
|
11
|
+
const postDataJSON = metadata[Header.PostData]?.values[0];
|
|
12
|
+
if (postDataJSON) {
|
|
13
|
+
postData = DevvitPostData.fromJSON(JSON.parse(postDataJSON)).developerData;
|
|
14
|
+
}
|
|
8
15
|
// devvit-app-user is only available in the remote runtime.
|
|
9
16
|
const appAccountId = metadata[Header.AppUser]?.values[0];
|
|
10
17
|
const appName = metadata[Header.App]?.values[0];
|
|
@@ -20,6 +27,7 @@ export function getContextFromMetadata(metadata, postId, commentId) {
|
|
|
20
27
|
subredditName,
|
|
21
28
|
userId,
|
|
22
29
|
postId,
|
|
30
|
+
postData,
|
|
23
31
|
commentId,
|
|
24
32
|
appName,
|
|
25
33
|
appVersion,
|
|
@@ -34,6 +42,7 @@ export function getContextFromMetadata(metadata, postId, commentId) {
|
|
|
34
42
|
subredditName,
|
|
35
43
|
userId,
|
|
36
44
|
postId,
|
|
45
|
+
postData,
|
|
37
46
|
commentId,
|
|
38
47
|
debug,
|
|
39
48
|
metadata,
|
|
@@ -81,5 +90,5 @@ export function parseDebug(meta) {
|
|
|
81
90
|
console.info(`[api] @devvit/public-api v${pkg.version} ${Object.entries(debug)
|
|
82
91
|
.map(([k, v]) => `${k}=${v}`)
|
|
83
92
|
.join(' ')}`);
|
|
84
|
-
return { ...debug };
|
|
93
|
+
return { ...debug, metadata: meta };
|
|
85
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csrf.d.ts","sourceRoot":"","sources":["../../../src/devvit/internals/csrf.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"csrf.d.ts","sourceRoot":"","sources":["../../../src/devvit/internals/csrf.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGjF,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAuB7E,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,WAAW,GAAG,iBAAiB,EACxC,GAAG,EAAE,oBAAoB,iBAkF1B;AAWD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,WAAW,GAAG,iBAAiB,EACxC,GAAG,EAAE,oBAAoB,iBAa1B"}
|
package/devvit/internals/csrf.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Header } from '@devvit/shared-types/Header.js';
|
|
2
|
-
import { getCommentById, getModerators, getPostById, getSubredditInfoById, } from '../../apis/reddit/index.js';
|
|
3
2
|
import { getMenuItemById } from './menu-items.js';
|
|
4
3
|
function getUserHeader(context) {
|
|
5
4
|
const userHeader = context.metadata[Header.User].values[0];
|
|
@@ -39,7 +38,7 @@ export async function addCSRFTokenToContext(context, req) {
|
|
|
39
38
|
* Validate user-provided commentId
|
|
40
39
|
*/
|
|
41
40
|
if (commentId) {
|
|
42
|
-
const comment = await getCommentById(commentId);
|
|
41
|
+
const comment = await context.reddit.getCommentById(commentId);
|
|
43
42
|
if (!comment) {
|
|
44
43
|
throw new Error(`Comment ${commentId} not found`);
|
|
45
44
|
}
|
|
@@ -51,7 +50,7 @@ export async function addCSRFTokenToContext(context, req) {
|
|
|
51
50
|
* Validate user-provided postId
|
|
52
51
|
*/
|
|
53
52
|
if (postId) {
|
|
54
|
-
const post = await getPostById(postId);
|
|
53
|
+
const post = await context.reddit.getPostById(postId);
|
|
55
54
|
if (!post) {
|
|
56
55
|
throw new Error(`Post ${postId} not found`);
|
|
57
56
|
}
|
|
@@ -88,8 +87,8 @@ export async function addCSRFTokenToContext(context, req) {
|
|
|
88
87
|
async function isModerator(context) {
|
|
89
88
|
const userHeader = getUserHeader(context);
|
|
90
89
|
const subredditHeader = getSubredditHeader(context);
|
|
91
|
-
const subreddit = await getSubredditInfoById(subredditHeader);
|
|
92
|
-
const mods = await getModerators({ subredditName: subreddit.name }).all();
|
|
90
|
+
const subreddit = await context.reddit.getSubredditInfoById(subredditHeader);
|
|
91
|
+
const mods = await context.reddit.getModerators({ subredditName: subreddit.name }).all();
|
|
93
92
|
return !!mods.find((mod) => mod.id === userHeader);
|
|
94
93
|
}
|
|
95
94
|
export async function validateCSRFToken(context, req) {
|
|
@@ -4,7 +4,7 @@ export declare const isRPLColor: (color: string) => boolean;
|
|
|
4
4
|
export declare const isNamedHTMLColor: (color: string) => boolean;
|
|
5
5
|
export declare const isRgbaColor: (color: string) => boolean;
|
|
6
6
|
export declare const isHslColor: (color: string) => boolean;
|
|
7
|
-
export declare const getHexFromRPLColor: (color: string, theme?:
|
|
7
|
+
export declare const getHexFromRPLColor: (color: string, theme?: "light" | "dark") => string;
|
|
8
8
|
export declare const getHexFromNamedHTMLColor: (color: string) => string;
|
|
9
9
|
export declare const getHexFromRgbaColor: (color: string) => string;
|
|
10
10
|
//# sourceMappingURL=color.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../../src/devvit/internals/helpers/color.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAsJtD,CAAC;AAEF,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../../src/devvit/internals/helpers/color.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAsJtD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,OACK,CAAC;AAEjD,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,OAAkC,CAAC;AAE9E,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,KAAG,OAAuC,CAAC;AAGzF,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,OAA6C,CAAC;AAE1F,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,OAA6C,CAAC;AAEzF,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,EAAE,QAAO,OAAO,GAAG,MAAgB,KAAG,MASrF,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,OAAO,MAAM,KAAG,MACpB,CAAC;AAEtC,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,KAAG,MAqBnD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devvitInternalMessage.d.ts","sourceRoot":"","sources":["../../../../src/devvit/internals/helpers/devvitInternalMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EAEvB,MAAM,yEAAyE,CAAC;AAEjF;;;;;;;;IAQI;AACJ,eAAO,MAAM,sCAAsC,
|
|
1
|
+
{"version":3,"file":"devvitInternalMessage.d.ts","sourceRoot":"","sources":["../../../../src/devvit/internals/helpers/devvitInternalMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EAEvB,MAAM,yEAAyE,CAAC;AAEjF;;;;;;;;IAQI;AACJ,eAAO,MAAM,sCAAsC,GACjD,SAAS,OAAO,KACf,OAAO,IAAI,sBAQb,CAAC"}
|
|
@@ -11,7 +11,7 @@ export const webViewMessageIsInternalAndClientScope = (message) => {
|
|
|
11
11
|
if (message === null || typeof message !== 'object')
|
|
12
12
|
return false;
|
|
13
13
|
return ('scope' in message &&
|
|
14
|
-
message.scope ===
|
|
14
|
+
message.scope === 0 &&
|
|
15
15
|
'type' in message &&
|
|
16
16
|
message.type === 'devvit-internal');
|
|
17
17
|
};
|
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
type DevvitPrototypeFunctionWithMetadata = (arg1: any, arg2: Metadata, ...rest: any[]) => Promise<any> | void;
|
|
3
|
-
type DevvitPrototypeFunctionWithOptionalMetadata = (arg1: any, arg2: Metadata | undefined, ...rest: any[]) => Promise<any> | void;
|
|
4
|
-
type DevvitPrototypeFunction = DevvitPrototypeFunctionWithMetadata | DevvitPrototypeFunctionWithOptionalMetadata;
|
|
5
|
-
export declare function extendDevvitPrototype<T, K extends keyof T = keyof T>(key: K, value: T[K] extends DevvitPrototypeFunction ? T[K] : never): void;
|
|
6
|
-
export {};
|
|
1
|
+
export declare function extendDevvitPrototype<T, K extends keyof T = keyof T>(key: K, value: T[K]): void;
|
|
7
2
|
//# sourceMappingURL=extendDevvitPrototype.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extendDevvitPrototype.d.ts","sourceRoot":"","sources":["../../../../src/devvit/internals/helpers/extendDevvitPrototype.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extendDevvitPrototype.d.ts","sourceRoot":"","sources":["../../../../src/devvit/internals/helpers/extendDevvitPrototype.ts"],"names":[],"mappings":"AAKA,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAG/F"}
|
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
import { Devvit } from '../../Devvit.js';
|
|
2
|
-
import { withMetadata } from '../async-metadata.js';
|
|
3
|
-
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
4
2
|
// to-do: ask for a whole service and assign that to the prototype instead. Most
|
|
5
3
|
// usages do not want a partial service implementation and the typing for
|
|
6
4
|
// that is clumsy anyway.
|
|
7
5
|
export function extendDevvitPrototype(key, value) {
|
|
8
6
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
9
|
-
Devvit.prototype[key] =
|
|
10
|
-
// If the metadata is nullish, we set it to an empty object instead. This
|
|
11
|
-
// makes sure that when we call `getMetadata` later, we only get an error
|
|
12
|
-
// in "non-sane" cases, like if it's called outside a request.
|
|
13
|
-
const guaranteedMeta = meta ?? {};
|
|
14
|
-
return withMetadata(guaranteedMeta, () => value(req, guaranteedMeta, ...rest));
|
|
15
|
-
});
|
|
7
|
+
Devvit.prototype[key] = value;
|
|
16
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installation-settings.d.ts","sourceRoot":"","sources":["../../../src/devvit/internals/installation-settings.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"installation-settings.d.ts","sourceRoot":"","sources":["../../../src/devvit/internals/installation-settings.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAsB7D,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAIjE"}
|
|
@@ -4,12 +4,9 @@ import { Devvit } from '../Devvit.js';
|
|
|
4
4
|
import { extendDevvitPrototype } from './helpers/extendDevvitPrototype.js';
|
|
5
5
|
import { onValidateFormHelper } from './helpers/settingsUtils.js';
|
|
6
6
|
async function onGetSettingsFields() {
|
|
7
|
-
if (!Devvit.installationSettings) {
|
|
8
|
-
throw new Error('Installation settings were not defined.');
|
|
9
|
-
}
|
|
10
7
|
return GetFieldsResponse.fromJSON({
|
|
11
8
|
fields: {
|
|
12
|
-
fields: transformFormFields(Devvit.installationSettings),
|
|
9
|
+
fields: transformFormFields(Devvit.installationSettings ?? []),
|
|
13
10
|
},
|
|
14
11
|
});
|
|
15
12
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Config } from '@devvit/shared-types/Config.js';
|
|
2
2
|
import type { MenuItem } from '../../types/index.js';
|
|
3
3
|
export declare function getMenuItemById(id: string): MenuItem | undefined;
|
|
4
|
+
export declare function menuItemPertainsToLocation(menuItem: MenuItem | undefined, location: 'subreddit' | 'post' | 'comment'): boolean;
|
|
4
5
|
export declare function registerMenuItems(config: Config): void;
|
|
5
6
|
//# sourceMappingURL=menu-items.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-items.d.ts","sourceRoot":"","sources":["../../../src/devvit/internals/menu-items.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAM7D,OAAO,KAAK,EAAE,QAAQ,EAAwB,MAAM,sBAAsB,CAAC;AAU3E,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAEhE;
|
|
1
|
+
{"version":3,"file":"menu-items.d.ts","sourceRoot":"","sources":["../../../src/devvit/internals/menu-items.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAM7D,OAAO,KAAK,EAAE,QAAQ,EAAwB,MAAM,sBAAsB,CAAC;AAU3E,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAEhE;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,QAAQ,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,GACzC,OAAO,CAQT;AAsED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAItD"}
|
|
@@ -13,11 +13,17 @@ const getActionId = (index) => {
|
|
|
13
13
|
export function getMenuItemById(id) {
|
|
14
14
|
return Devvit.menuItems.find((_, index) => getActionId(index) === id);
|
|
15
15
|
}
|
|
16
|
+
export function menuItemPertainsToLocation(menuItem, location) {
|
|
17
|
+
if (!menuItem) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
if (Array.isArray(menuItem.location)) {
|
|
21
|
+
return menuItem.location.includes(location);
|
|
22
|
+
}
|
|
23
|
+
return menuItem.location === location;
|
|
24
|
+
}
|
|
16
25
|
async function getActions(_, _metadata) {
|
|
17
26
|
const menuItems = Devvit.menuItems;
|
|
18
|
-
if (!menuItems.length) {
|
|
19
|
-
throw new Error('No menu items registered.');
|
|
20
|
-
}
|
|
21
27
|
const actions = menuItems.map((item, index) => {
|
|
22
28
|
return {
|
|
23
29
|
actionId: getActionId(index),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semanticColors.d.ts","sourceRoot":"","sources":["../../../src/devvit/internals/semanticColors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"semanticColors.d.ts","sourceRoot":"","sources":["../../../src/devvit/internals/semanticColors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAogC1B,CAAC"}
|
|
@@ -10,7 +10,7 @@ import { BlocksReconciler } from './blocks/BlocksReconciler.js';
|
|
|
10
10
|
import { getContextFromMetadata } from './context.js';
|
|
11
11
|
import { validateCSRFToken } from './csrf.js';
|
|
12
12
|
import { extendDevvitPrototype } from './helpers/extendDevvitPrototype.js';
|
|
13
|
-
import { getMenuItemById } from './menu-items.js';
|
|
13
|
+
import { getMenuItemById, menuItemPertainsToLocation } from './menu-items.js';
|
|
14
14
|
async function handleUIEvent(req, metadata) {
|
|
15
15
|
// Keep track of the original state so we can check if it was updated.
|
|
16
16
|
const originalState = req.state ?? {};
|
|
@@ -40,10 +40,10 @@ async function handleUIEvent(req, metadata) {
|
|
|
40
40
|
if (state.__contextAction) {
|
|
41
41
|
const { actionId, thingId } = state.__contextAction;
|
|
42
42
|
const menuItem = getMenuItemById(actionId);
|
|
43
|
-
if (menuItem
|
|
43
|
+
if (menuItemPertainsToLocation(menuItem, 'post')) {
|
|
44
44
|
postId = thingId;
|
|
45
45
|
}
|
|
46
|
-
else if (menuItem
|
|
46
|
+
else if (menuItemPertainsToLocation(menuItem, 'comment')) {
|
|
47
47
|
commentId = thingId;
|
|
48
48
|
}
|
|
49
49
|
}
|
|
@@ -15,15 +15,11 @@ export type ParsedDevvitUserAgent = {
|
|
|
15
15
|
company: 'Reddit';
|
|
16
16
|
platform: 'Shreddit';
|
|
17
17
|
rawVersion: string;
|
|
18
|
-
} | {
|
|
19
|
-
company: 'Reddit';
|
|
20
|
-
platform: 'Play';
|
|
21
|
-
rawVersion: string;
|
|
22
18
|
};
|
|
23
19
|
export declare const parseDevvitUserAgent: (input: string) => ParsedDevvitUserAgent | undefined;
|
|
24
20
|
export declare const shouldShowUpgradeAppScreen: (parsedDevvitUserAgent: ParsedDevvitUserAgent | undefined) => boolean;
|
|
25
21
|
export declare const UpgradeAppComponent: Devvit.BlockComponent<{
|
|
26
22
|
platform: ParsedDevvitUserAgent['platform'];
|
|
27
23
|
}>;
|
|
28
|
-
export declare const makeUpgradeAppComponent: (platform: ParsedDevvitUserAgent[
|
|
24
|
+
export declare const makeUpgradeAppComponent: (platform: ParsedDevvitUserAgent["platform"]) => () => JSX.Element;
|
|
29
25
|
//# sourceMappingURL=upgrade-app-shim.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade-app-shim.d.ts","sourceRoot":"","sources":["../../../src/devvit/internals/upgrade-app-shim.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,+BAA+B;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,MAAM,qBAAqB,GAC7B;IACE,OAAO,EAAE,QAAQ,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE,OAAO,EAAE,QAAQ,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE,OAAO,EAAE,QAAQ,CAAC;IAClB,QAAQ,EAAE,UAAU,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB,
|
|
1
|
+
{"version":3,"file":"upgrade-app-shim.d.ts","sourceRoot":"","sources":["../../../src/devvit/internals/upgrade-app-shim.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,+BAA+B;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,MAAM,qBAAqB,GAC7B;IACE,OAAO,EAAE,QAAQ,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE,OAAO,EAAE,QAAQ,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE,OAAO,EAAE,QAAQ,CAAC;IAClB,QAAQ,EAAE,UAAU,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAON,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,KAAG,qBAAqB,GAAG,SAsD5E,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,uBAAuB,qBAAqB,GAAG,SAAS,KACvD,OAmBF,CAAC;AAiBF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,cAAc,CAAC;IACtD,QAAQ,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;CAC7C,CA8BA,CAAC;AAKF,eAAO,MAAM,uBAAuB,GAAI,UAAU,qBAAqB,CAAC,UAAU,CAAC,sBAElF,CAAC"}
|
|
@@ -48,13 +48,6 @@ export const parseDevvitUserAgent = (input) => {
|
|
|
48
48
|
rawVersion,
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
|
-
if (platform === 'Play') {
|
|
52
|
-
return {
|
|
53
|
-
company: 'Reddit',
|
|
54
|
-
platform: 'Play',
|
|
55
|
-
rawVersion,
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
51
|
console.warn(`Received unknown platform:`, platform);
|
|
59
52
|
};
|
|
60
53
|
export const shouldShowUpgradeAppScreen = (parsedDevvitUserAgent) => {
|
|
@@ -78,7 +71,6 @@ const getUpgradeLinkForPlatform = (platform) => {
|
|
|
78
71
|
return 'https://play.google.com/store/apps/details?id=com.reddit.frontpage';
|
|
79
72
|
case 'iOS':
|
|
80
73
|
return 'https://apps.apple.com/us/app/reddit/id1064216828';
|
|
81
|
-
case 'Play':
|
|
82
74
|
case 'Shreddit':
|
|
83
75
|
break;
|
|
84
76
|
default:
|
package/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { RunAs } from './apis/reddit/common.js';
|
|
2
|
-
export * from './apis/reddit/index.js';
|
|
3
2
|
export * from './apis/reddit/models/index.js';
|
|
3
|
+
export type { RedditAPIClient } from './apis/reddit/RedditAPIClient.js';
|
|
4
4
|
export * from './apis/ui/helpers/svg.js';
|
|
5
5
|
export * from './devvit/Devvit.js';
|
|
6
6
|
export { useAsync } from './devvit/internals/blocks/handler/useAsync.js';
|
|
@@ -10,6 +10,6 @@ export { useInterval } from './devvit/internals/blocks/handler/useInterval.js';
|
|
|
10
10
|
export { useState } from './devvit/internals/blocks/handler/useState.js';
|
|
11
11
|
export { useWebView } from './devvit/internals/blocks/handler/useWebView.js';
|
|
12
12
|
export * from './types/index.js';
|
|
13
|
-
export * from '
|
|
13
|
+
export * from './types/json.js';
|
|
14
14
|
export { RichTextBuilder } from '@devvit/shared-types/richtext/RichTextBuilder.js';
|
|
15
15
|
//# sourceMappingURL=index.d.ts.map
|
package/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,cAAc
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,+CAA+C,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,iDAAiD,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,8CAA8C,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,kDAAkD,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,+CAA+C,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,iDAAiD,CAAC;AAC7E,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC"}
|
package/index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export { RunAs } from './apis/reddit/common.js';
|
|
2
|
-
export * from './apis/reddit/index.js';
|
|
3
2
|
export * from './apis/reddit/models/index.js';
|
|
4
3
|
export * from './apis/ui/helpers/svg.js';
|
|
5
4
|
export * from './devvit/Devvit.js';
|
|
@@ -10,5 +9,5 @@ export { useInterval } from './devvit/internals/blocks/handler/useInterval.js';
|
|
|
10
9
|
export { useState } from './devvit/internals/blocks/handler/useState.js';
|
|
11
10
|
export { useWebView } from './devvit/internals/blocks/handler/useWebView.js';
|
|
12
11
|
export * from './types/index.js';
|
|
13
|
-
export * from '
|
|
12
|
+
export * from './types/json.js';
|
|
14
13
|
export { RichTextBuilder } from '@devvit/shared-types/richtext/RichTextBuilder.js';
|