@devvit/build-pack 0.11.20-next-2025-08-07-22-47-18-edda21056.0 → 0.11.20-next-2025-08-08-20-37-25-bb433183a.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,CAwGhB"}
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,CAgHhB"}
@@ -108,7 +108,15 @@ export function createDependencySpec(actorSpec, config, namespace) {
108
108
  if (config.triggers.onPostUpdate)
109
109
  provide(spec, OnPostUpdateDefinition);
110
110
  }
111
- // to-do: when settings, SettingsDefinition / AppSettingsDefinition / InstallationSettingsDefinition.
111
+ if (config.settings) {
112
+ use(spec, SettingsDefinition);
113
+ if (config.settings.global) {
114
+ provide(spec, AppSettingsDefinition);
115
+ }
116
+ if (config.settings.subreddit) {
117
+ provide(spec, InstallationSettingsDefinition);
118
+ }
119
+ }
112
120
  return spec;
113
121
  }
114
122
  function provide(spec, ...definitions) {
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.template.d.ts","sourceRoot":"","sources":["../../../src/esbuild/templatizer/blocks.template.tsx"],"names":[],"mappings":"AAMA,OAAO,EAEL,MAAM,EACN,KAAK,OAAO,EAIb,MAAM,oBAAoB,CAAC;AAI5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAsBjD,oFAAoF;AACpF,eAAO,MAAM,UAAU,EAAE;IAAE,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;CAAO,CAAC;AAmH7D,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CA4D/D;AA+JD,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"blocks.template.d.ts","sourceRoot":"","sources":["../../../src/esbuild/templatizer/blocks.template.tsx"],"names":[],"mappings":"AAMA,OAAO,EAEL,MAAM,EACN,KAAK,OAAO,EAOb,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAA8C,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAuB7F,oFAAoF;AACpF,eAAO,MAAM,UAAU,EAAE;IAAE,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;CAAO,CAAC;AAmH7D,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CA4D/D;AA4OD,eAAe,MAAM,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { LoggerDefinition, Severity } from '@devvit/protos';
2
2
  import { Height, } from '@devvit/protos/json/devvit/ui/effects/web_view/v1alpha/context.js';
3
- import { Devvit, } from '@devvit/public-api';
3
+ import { Devvit, SettingScope, } from '@devvit/public-api';
4
4
  import { getServerPort } from '@devvit/server';
5
5
  import { Header } from '@devvit/shared-types/Header.js';
6
6
  import { getDevvitConfig } from '@devvit/shared-types/server/get-devvit-config.js';
@@ -147,6 +147,17 @@ export function validateUiResponse(uiResponse) {
147
147
  throw new Error('navigateTo and showForm cannot be used together in UiResponse');
148
148
  }
149
149
  }
150
+ function validateSettingsValidationResponse(response) {
151
+ if (typeof response !== 'object' || response === null) {
152
+ throw new Error('SettingsValidationResponse must be an object');
153
+ }
154
+ if (!('success' in response) || typeof response.success !== 'boolean') {
155
+ throw new Error('SettingsValidationResponse must have a boolean "success" field');
156
+ }
157
+ if ('error' in response && typeof response.error !== 'string') {
158
+ throw new Error('"error" field in SettingsValidationResponse must be a string');
159
+ }
160
+ }
150
161
  /**
151
162
  * Handle a UiResponse from a Webbit handler (menu action or form handler).
152
163
  * This is used to create client-side UI effects in Reddit clients as responses
@@ -262,6 +273,54 @@ function configureScheduler(schedulerConfig) {
262
273
  });
263
274
  }
264
275
  }
276
+ function configureSettings(settings) {
277
+ const classicSettings = [];
278
+ for (const config of Object.values(settings?.global || {})) {
279
+ classicSettings.push(coerceSettingForClassic(config, SettingScope.App));
280
+ }
281
+ for (const config of Object.values(settings?.subreddit || {})) {
282
+ classicSettings.push(coerceSettingForClassic(config, SettingScope.Installation));
283
+ }
284
+ Devvit.addSettings(classicSettings);
285
+ }
286
+ function coerceSettingForClassic(setting, scope) {
287
+ let classicSetting;
288
+ if (setting.type === 'select') {
289
+ const { defaultValue, ...settingWithoutDefault } = setting;
290
+ classicSetting = {
291
+ ...settingWithoutDefault,
292
+ scope,
293
+ };
294
+ if (defaultValue) {
295
+ classicSetting.defaultValue = [defaultValue];
296
+ }
297
+ }
298
+ else if (setting.type === 'multiSelect') {
299
+ classicSetting = {
300
+ ...setting,
301
+ type: 'select',
302
+ multiSelect: true,
303
+ scope,
304
+ };
305
+ }
306
+ else {
307
+ classicSetting = {
308
+ ...setting,
309
+ scope,
310
+ };
311
+ }
312
+ if (setting.validationEndpoint) {
313
+ classicSetting.onValidate = async function validateSettingsField(event, context) {
314
+ const responseJson = await callWebbitEndpoint(setting.validationEndpoint, { value: event.value, isEditing: event.isEditing }, context.metadata);
315
+ validateSettingsValidationResponse(responseJson);
316
+ if (responseJson.success) {
317
+ return;
318
+ }
319
+ return responseJson.error;
320
+ };
321
+ }
322
+ return classicSetting;
323
+ }
265
324
  if (config2) {
266
325
  configurePermissions(config2.permissions);
267
326
  if (config2.post)
@@ -275,5 +334,7 @@ if (config2) {
275
334
  configureForms(config2.forms);
276
335
  if (config2.triggers)
277
336
  configureTriggers(config2.triggers);
337
+ if (config2.settings)
338
+ configureSettings(config2.settings);
278
339
  }
279
340
  export default Devvit;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devvit/build-pack",
3
- "version": "0.11.20-next-2025-08-07-22-47-18-edda21056.0",
3
+ "version": "0.11.20-next-2025-08-08-20-37-25-bb433183a.0",
4
4
  "license": "BSD-3-Clause",
5
5
  "repository": {
6
6
  "type": "git",
@@ -31,9 +31,9 @@
31
31
  },
32
32
  "types": "./dist/index.d.ts",
33
33
  "dependencies": {
34
- "@devvit/protos": "0.11.20-next-2025-08-07-22-47-18-edda21056.0",
35
- "@devvit/shared-types": "0.11.20-next-2025-08-07-22-47-18-edda21056.0",
36
- "@devvit/splash": "0.11.20-next-2025-08-07-22-47-18-edda21056.0",
34
+ "@devvit/protos": "0.11.20-next-2025-08-08-20-37-25-bb433183a.0",
35
+ "@devvit/shared-types": "0.11.20-next-2025-08-08-20-37-25-bb433183a.0",
36
+ "@devvit/splash": "0.11.20-next-2025-08-08-20-37-25-bb433183a.0",
37
37
  "esbuild": "0.23.0",
38
38
  "rxjs": "7.8.1",
39
39
  "tsv": "0.2.0",
@@ -44,16 +44,16 @@
44
44
  "@devvit/shared": "*"
45
45
  },
46
46
  "devDependencies": {
47
- "@devvit/public-api": "0.11.20-next-2025-08-07-22-47-18-edda21056.0",
48
- "@devvit/repo-tools": "0.11.20-next-2025-08-07-22-47-18-edda21056.0",
49
- "@devvit/scheduler": "0.11.20-next-2025-08-07-22-47-18-edda21056.0",
50
- "@devvit/server": "0.11.20-next-2025-08-07-22-47-18-edda21056.0",
51
- "@devvit/shared": "0.11.20-next-2025-08-07-22-47-18-edda21056.0",
52
- "@devvit/tsconfig": "0.11.20-next-2025-08-07-22-47-18-edda21056.0",
47
+ "@devvit/public-api": "0.11.20-next-2025-08-08-20-37-25-bb433183a.0",
48
+ "@devvit/repo-tools": "0.11.20-next-2025-08-08-20-37-25-bb433183a.0",
49
+ "@devvit/scheduler": "0.11.20-next-2025-08-08-20-37-25-bb433183a.0",
50
+ "@devvit/server": "0.11.20-next-2025-08-08-20-37-25-bb433183a.0",
51
+ "@devvit/shared": "0.11.20-next-2025-08-08-20-37-25-bb433183a.0",
52
+ "@devvit/tsconfig": "0.11.20-next-2025-08-08-20-37-25-bb433183a.0",
53
53
  "@types/tsv": "0.2.1",
54
54
  "eslint": "9.11.1",
55
55
  "vitest": "1.6.1"
56
56
  },
57
57
  "source": "./src/index.ts",
58
- "gitHead": "def924cba056d68f641b31f64d8c2b113d85488a"
58
+ "gitHead": "990878875158d92d0c41970a4866febc401d51d5"
59
59
  }