@devvit/build-pack 0.11.19 → 0.11.20-next-2025-07-23-16-35-06-4e9bd2820.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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-spec-util.d.ts","sourceRoot":"","sources":["../../src/esbuild/dependency-spec-util.ts"],"names":[],"mappings":"AAgDA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAK7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAC;AAEhF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,EAC9B,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EACzC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,GAC7B,cAAc,
|
|
1
|
+
{"version":3,"file":"dependency-spec-util.d.ts","sourceRoot":"","sources":["../../src/esbuild/dependency-spec-util.ts"],"names":[],"mappings":"AAgDA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAK7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAC;AAEhF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,EAC9B,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EACzC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,GAC7B,cAAc,CAwGhB"}
|
|
@@ -36,9 +36,11 @@ export function createDependencySpec(actorSpec, config, namespace) {
|
|
|
36
36
|
use(spec, FlairDefinition, GraphQLDefinition, LinksAndCommentsDefinition, ListingsDefinition, ModerationDefinition, ModNoteDefinition, NewModmailDefinition, PrivateMessagesDefinition, SubredditsDefinition, UsersDefinition, WidgetsDefinition, WikiDefinition);
|
|
37
37
|
if (config.permissions.reddit.scope === 'moderator')
|
|
38
38
|
use(spec, ModlogDefinition);
|
|
39
|
-
if (config.permissions.reddit.asUser.length > 0) {
|
|
39
|
+
if (config.permissions.reddit.scope === 'user' || config.permissions.reddit.asUser.length > 0) {
|
|
40
40
|
use(spec, UserActionsDefinition);
|
|
41
|
-
|
|
41
|
+
if (config.permissions.reddit.asUser.length > 0) {
|
|
42
|
+
permissions.asUserScopes.push(...config.permissions.reddit.asUser);
|
|
43
|
+
}
|
|
42
44
|
}
|
|
43
45
|
}
|
|
44
46
|
if (config.permissions.redis)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.template.d.ts","sourceRoot":"","sources":["../../../src/esbuild/templatizer/blocks.template.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,MAAM,EACN,KAAK,OAAO,EAKb,MAAM,oBAAoB,CAAC;AAK5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"blocks.template.d.ts","sourceRoot":"","sources":["../../../src/esbuild/templatizer/blocks.template.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,MAAM,EACN,KAAK,OAAO,EAKb,MAAM,oBAAoB,CAAC;AAK5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAmBtE,oFAAoF;AACpF,eAAO,MAAM,UAAU,EAAE;IAAE,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;CAAO,CAAC;AA8F7D,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CA4D/D;AAgKD,eAAe,MAAM,CAAC"}
|
|
@@ -3,9 +3,11 @@ import { Devvit, useWebView, } from '@devvit/public-api';
|
|
|
3
3
|
import { getServerPort } from '@devvit/server';
|
|
4
4
|
import { getDevvitConfig } from '@devvit/server/get-devvit-config.js';
|
|
5
5
|
import { StringUtil } from '@devvit/shared-types/StringUtil.js';
|
|
6
|
+
// Hack: rename config2 to workaround declaration in
|
|
7
|
+
// packages/runtime-lite/src/runtime/SandboxedRuntimeLite.ts.
|
|
6
8
|
// __devvit__ is undefined in tests only.
|
|
7
9
|
// @ts-expect-error no type.
|
|
8
|
-
const
|
|
10
|
+
const config2 = globalThis.__devvit__?.config;
|
|
9
11
|
/** @internal [state] Map of devvit.json form keys to Devvit-singleton form keys. */
|
|
10
12
|
export const formKeyMap = {};
|
|
11
13
|
function configurePermissions(permissions) {
|
|
@@ -35,8 +37,8 @@ function configurePost(post) {
|
|
|
35
37
|
height: 'tall',
|
|
36
38
|
});
|
|
37
39
|
}
|
|
38
|
-
function
|
|
39
|
-
for (const action of
|
|
40
|
+
function configureMenuItems(menuItems) {
|
|
41
|
+
for (const action of menuItems) {
|
|
40
42
|
const menuItem = {
|
|
41
43
|
label: action.label,
|
|
42
44
|
location: action.location,
|
|
@@ -95,7 +97,7 @@ export function validateUiResponse(uiResponse) {
|
|
|
95
97
|
const validKeys = ['showToast', 'navigateTo', 'showForm'];
|
|
96
98
|
const invalidKeys = Object.keys(uiResponse).filter((key) => !validKeys.includes(key));
|
|
97
99
|
if (invalidKeys.length > 0) {
|
|
98
|
-
throw new Error(`Invalid fields found in UiResponse: ${invalidKeys.join(', ')}. Valid fields are: ${validKeys.join(', ')}`);
|
|
100
|
+
throw new Error(`Invalid fields found in UiResponse: "${invalidKeys.join('", "')}". Valid fields are: "${validKeys.join('", "')}"`);
|
|
99
101
|
}
|
|
100
102
|
// (2) showForm must have a name that exists in the formKeyMap.
|
|
101
103
|
if (uiResponse.showForm) {
|
|
@@ -103,7 +105,7 @@ export function validateUiResponse(uiResponse) {
|
|
|
103
105
|
throw new Error('showForm must have a name');
|
|
104
106
|
}
|
|
105
107
|
if (!formKeyMap[uiResponse.showForm.name]) {
|
|
106
|
-
throw new Error(`Form with name ${uiResponse.showForm.name} not found in devvit.json. Consider adding
|
|
108
|
+
throw new Error(`Form with name "${uiResponse.showForm.name}" not found in devvit.json. Consider adding:\n\n "forms": {"${uiResponse.showForm.name}":"/internal/your/endpoint"}\n\n`);
|
|
107
109
|
}
|
|
108
110
|
}
|
|
109
111
|
// (3) showToast must be a string or an object with only fields [text, appearance]
|
|
@@ -118,7 +120,7 @@ export function validateUiResponse(uiResponse) {
|
|
|
118
120
|
const validToastKeys = ['text', 'appearance'];
|
|
119
121
|
const invalidToastKeys = toastKeys.filter((key) => !validToastKeys.includes(key));
|
|
120
122
|
if (invalidToastKeys.length > 0) {
|
|
121
|
-
throw new Error(`Invalid fields found in showToast: ${invalidToastKeys.join(', ')}. Valid fields are: ${validToastKeys.join(', ')}`);
|
|
123
|
+
throw new Error(`Invalid fields found in showToast: "${invalidToastKeys.join('", "')}". Valid fields are: "${validToastKeys.join('", ')}"`);
|
|
122
124
|
}
|
|
123
125
|
if (typeof uiResponse.showToast.text !== 'string') {
|
|
124
126
|
throw new Error('showToast.text is required and must be a string');
|
|
@@ -189,8 +191,6 @@ async function callWebbitEndpoint(endpoint, body, metadata) {
|
|
|
189
191
|
}
|
|
190
192
|
}
|
|
191
193
|
function configureScheduler(schedulerConfig) {
|
|
192
|
-
const config = getDevvitConfig();
|
|
193
|
-
const logger = config.use(LoggerDefinition);
|
|
194
194
|
const cronTasks = {};
|
|
195
195
|
for (const [name, task] of Object.entries(schedulerConfig.tasks)) {
|
|
196
196
|
Devvit.addSchedulerJob({
|
|
@@ -221,6 +221,7 @@ function configureScheduler(schedulerConfig) {
|
|
|
221
221
|
await Promise.all(jobsToCancel.map((job) => context.scheduler.cancelJob(job.id)));
|
|
222
222
|
// Schedule all the cron tasks we were given in the config
|
|
223
223
|
await Promise.all(Object.entries(cronTasks).map(async ([name, task]) => {
|
|
224
|
+
const logger = getDevvitConfig().use(LoggerDefinition);
|
|
224
225
|
try {
|
|
225
226
|
await context.scheduler.runJob({
|
|
226
227
|
name: name,
|
|
@@ -248,17 +249,18 @@ function renderModal(path) {
|
|
|
248
249
|
Devvit.createElement("button", { onPress: webView.mount }, "Launch App"),
|
|
249
250
|
";"));
|
|
250
251
|
}
|
|
251
|
-
if (
|
|
252
|
-
configurePermissions(
|
|
253
|
-
if (
|
|
254
|
-
configurePost(
|
|
255
|
-
if (
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
252
|
+
if (config2) {
|
|
253
|
+
configurePermissions(config2.permissions);
|
|
254
|
+
if (config2.post)
|
|
255
|
+
configurePost(config2.post);
|
|
256
|
+
if (config2.menu?.items) {
|
|
257
|
+
configureMenuItems(config2.menu.items);
|
|
258
|
+
}
|
|
259
|
+
if (config2.scheduler)
|
|
260
|
+
configureScheduler(config2.scheduler);
|
|
261
|
+
if (config2.forms)
|
|
262
|
+
configureForms(config2.forms);
|
|
263
|
+
if (config2.triggers)
|
|
264
|
+
configureTriggers(config2.triggers);
|
|
263
265
|
}
|
|
264
266
|
export default Devvit;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devvit/build-pack",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.20-next-2025-07-23-16-35-06-4e9bd2820.0",
|
|
4
4
|
"license": "BSD-3-Clause",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
},
|
|
24
24
|
"types": "./index.d.ts",
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@devvit/protos": "0.11.
|
|
27
|
-
"@devvit/shared-types": "0.11.
|
|
26
|
+
"@devvit/protos": "0.11.20-next-2025-07-23-16-35-06-4e9bd2820.0",
|
|
27
|
+
"@devvit/shared-types": "0.11.20-next-2025-07-23-16-35-06-4e9bd2820.0",
|
|
28
28
|
"esbuild": "0.23.0",
|
|
29
29
|
"rxjs": "7.8.1",
|
|
30
30
|
"tsv": "0.2.0",
|
|
@@ -35,12 +35,12 @@
|
|
|
35
35
|
"@devvit/shared": "*"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@devvit/public-api": "0.11.
|
|
39
|
-
"@devvit/repo-tools": "0.11.
|
|
40
|
-
"@devvit/scheduler": "0.11.
|
|
41
|
-
"@devvit/server": "0.11.
|
|
42
|
-
"@devvit/shared": "0.11.
|
|
43
|
-
"@devvit/tsconfig": "0.11.
|
|
38
|
+
"@devvit/public-api": "0.11.20-next-2025-07-23-16-35-06-4e9bd2820.0",
|
|
39
|
+
"@devvit/repo-tools": "0.11.20-next-2025-07-23-16-35-06-4e9bd2820.0",
|
|
40
|
+
"@devvit/scheduler": "0.11.20-next-2025-07-23-16-35-06-4e9bd2820.0",
|
|
41
|
+
"@devvit/server": "0.11.20-next-2025-07-23-16-35-06-4e9bd2820.0",
|
|
42
|
+
"@devvit/shared": "0.11.20-next-2025-07-23-16-35-06-4e9bd2820.0",
|
|
43
|
+
"@devvit/tsconfig": "0.11.20-next-2025-07-23-16-35-06-4e9bd2820.0",
|
|
44
44
|
"@types/tsv": "0.2.1",
|
|
45
45
|
"eslint": "9.11.1",
|
|
46
46
|
"vitest": "1.6.1"
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"directory": "dist"
|
|
50
50
|
},
|
|
51
51
|
"source": "./src/index.ts",
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "3907b5ce758ea9f664816b328bed931603106bb7"
|
|
53
53
|
}
|