@devvit/shared-types 0.12.1-next-2025-08-14-20-10-44-8b182fd0d.0 → 0.12.1-next-2025-08-14-23-15-57-1e08dab01.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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devvit/shared-types",
|
|
3
|
-
"version": "0.12.1-next-2025-08-14-
|
|
3
|
+
"version": "0.12.1-next-2025-08-14-23-15-57-1e08dab01.0",
|
|
4
4
|
"license": "BSD-3-Clause",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -33,13 +33,13 @@
|
|
|
33
33
|
},
|
|
34
34
|
"types": "./dist/index.d.ts",
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@devvit/protos": "0.12.1-next-2025-08-14-
|
|
36
|
+
"@devvit/protos": "0.12.1-next-2025-08-14-23-15-57-1e08dab01.0",
|
|
37
37
|
"jsonschema": "1.4.1",
|
|
38
38
|
"uuid": "9.0.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@devvit/repo-tools": "0.12.1-next-2025-08-14-
|
|
42
|
-
"@devvit/tsconfig": "0.12.1-next-2025-08-14-
|
|
41
|
+
"@devvit/repo-tools": "0.12.1-next-2025-08-14-23-15-57-1e08dab01.0",
|
|
42
|
+
"@devvit/tsconfig": "0.12.1-next-2025-08-14-23-15-57-1e08dab01.0",
|
|
43
43
|
"@types/redis-mock": "0.17.1",
|
|
44
44
|
"@types/uuid": "9.0.0",
|
|
45
45
|
"chokidar-cli": "3.0.0",
|
|
@@ -51,5 +51,5 @@
|
|
|
51
51
|
"vitest": "1.6.1"
|
|
52
52
|
},
|
|
53
53
|
"source": "./src/index.ts",
|
|
54
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "e86c954e16e43e10b9a42d29edad07f4415fce38"
|
|
55
55
|
}
|
|
@@ -72,7 +72,7 @@ export type AppServerConfig = {
|
|
|
72
72
|
};
|
|
73
73
|
/**
|
|
74
74
|
* Keys are assumed to have the format of `on${keyof TriggerEventType}` in
|
|
75
|
-
* blocks.template.tsx.
|
|
75
|
+
* blocks.template.tsx. Values are empty when callback is provided by Blocks.
|
|
76
76
|
*/
|
|
77
77
|
export type AppTriggersConfig = {
|
|
78
78
|
onAppInstall?: string;
|
|
@@ -178,6 +178,19 @@ export type AppMultiSelectSettingConfig = AppBaseSettingConfig & {
|
|
|
178
178
|
}>;
|
|
179
179
|
defaultValue?: string[];
|
|
180
180
|
};
|
|
181
|
+
export type AppBlocksConfigJson = {
|
|
182
|
+
entry?: string;
|
|
183
|
+
forms?: {
|
|
184
|
+
enable?: boolean;
|
|
185
|
+
};
|
|
186
|
+
menu?: {
|
|
187
|
+
enable?: boolean;
|
|
188
|
+
};
|
|
189
|
+
settings?: {
|
|
190
|
+
enable?: boolean;
|
|
191
|
+
};
|
|
192
|
+
triggers?: (keyof AppTriggersConfig)[];
|
|
193
|
+
};
|
|
181
194
|
/**
|
|
182
195
|
* https://transform.tools/json-schema-to-typescript
|
|
183
196
|
* @internal
|
|
@@ -188,74 +201,63 @@ export type AppConfigJson = {
|
|
|
188
201
|
media?: {
|
|
189
202
|
dir?: string;
|
|
190
203
|
};
|
|
191
|
-
permissions?:
|
|
192
|
-
|
|
193
|
-
enable?: boolean;
|
|
194
|
-
domains?: string[];
|
|
195
|
-
};
|
|
196
|
-
media?: boolean;
|
|
197
|
-
payments?: boolean;
|
|
198
|
-
realtime?: boolean;
|
|
199
|
-
redis?: boolean;
|
|
200
|
-
reddit?: {
|
|
201
|
-
enable?: boolean;
|
|
202
|
-
scope?: AppScopeConfig;
|
|
203
|
-
asUser?: string[];
|
|
204
|
-
};
|
|
205
|
-
};
|
|
206
|
-
post?: {
|
|
207
|
-
dir?: string;
|
|
208
|
-
entrypoints?: {
|
|
209
|
-
[name: string]: AppPostEntrypointConfigJson;
|
|
210
|
-
} & {
|
|
211
|
-
default: Partial<AppPostEntrypointConfigJson>;
|
|
212
|
-
};
|
|
213
|
-
};
|
|
204
|
+
permissions?: AppPermissionConfigJson;
|
|
205
|
+
post?: AppPostConfigJson;
|
|
214
206
|
server?: {
|
|
215
207
|
dir?: string;
|
|
216
208
|
entry?: string;
|
|
217
209
|
};
|
|
218
210
|
triggers?: AppTriggersConfig;
|
|
219
|
-
blocks?:
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
enable?: boolean;
|
|
223
|
-
};
|
|
224
|
-
settings?: {
|
|
225
|
-
enable?: boolean;
|
|
226
|
-
};
|
|
227
|
-
};
|
|
228
|
-
menu?: {
|
|
229
|
-
items?: {
|
|
230
|
-
label: string;
|
|
231
|
-
description?: string;
|
|
232
|
-
forUserType: AppMenuUserTypeConfig;
|
|
233
|
-
location: AppMenuLocationConfig | AppMenuLocationConfig[];
|
|
234
|
-
endpoint: string;
|
|
235
|
-
postFilter: AppMenuPostFilterConfig;
|
|
236
|
-
}[];
|
|
237
|
-
};
|
|
238
|
-
forms?: {
|
|
239
|
-
[formName: string]: string;
|
|
240
|
-
};
|
|
211
|
+
blocks?: AppBlocksConfigJson;
|
|
212
|
+
menu?: AppMenuConfigJson;
|
|
213
|
+
forms?: AppFormsConfigJson;
|
|
241
214
|
dev?: {
|
|
242
215
|
subreddit?: string;
|
|
243
216
|
};
|
|
244
217
|
scheduler?: AppSchedulerConfigJson;
|
|
245
|
-
settings?:
|
|
246
|
-
global?: {
|
|
247
|
-
[name: string]: AppSettingConfigJson;
|
|
248
|
-
};
|
|
249
|
-
subreddit?: {
|
|
250
|
-
[name: string]: AppSettingConfigJson;
|
|
251
|
-
};
|
|
252
|
-
};
|
|
218
|
+
settings?: AppSettingsConfigJson;
|
|
253
219
|
marketingAssets?: {
|
|
254
220
|
icon?: string;
|
|
255
221
|
};
|
|
256
222
|
/** User data. */
|
|
257
223
|
[key: string]: JsonValue;
|
|
258
224
|
};
|
|
225
|
+
export type AppFormsConfigJson = {
|
|
226
|
+
[formName: string]: string;
|
|
227
|
+
};
|
|
228
|
+
export type AppMenuConfigJson = {
|
|
229
|
+
items?: {
|
|
230
|
+
label: string;
|
|
231
|
+
description?: string;
|
|
232
|
+
forUserType: AppMenuUserTypeConfig;
|
|
233
|
+
location: AppMenuLocationConfig | AppMenuLocationConfig[];
|
|
234
|
+
endpoint: string;
|
|
235
|
+
postFilter: AppMenuPostFilterConfig;
|
|
236
|
+
}[];
|
|
237
|
+
};
|
|
238
|
+
export type AppPermissionConfigJson = {
|
|
239
|
+
http?: {
|
|
240
|
+
enable?: boolean;
|
|
241
|
+
domains?: string[];
|
|
242
|
+
};
|
|
243
|
+
media?: boolean;
|
|
244
|
+
payments?: boolean;
|
|
245
|
+
realtime?: boolean;
|
|
246
|
+
redis?: boolean;
|
|
247
|
+
reddit?: {
|
|
248
|
+
enable?: boolean;
|
|
249
|
+
scope?: AppScopeConfig;
|
|
250
|
+
asUser?: string[];
|
|
251
|
+
};
|
|
252
|
+
};
|
|
253
|
+
export type AppPostConfigJson = {
|
|
254
|
+
dir?: string;
|
|
255
|
+
entrypoints?: {
|
|
256
|
+
[name: string]: AppPostEntrypointConfigJson;
|
|
257
|
+
} & {
|
|
258
|
+
default: Partial<AppPostEntrypointConfigJson>;
|
|
259
|
+
};
|
|
260
|
+
};
|
|
259
261
|
export type AppPostEntrypointConfigJson = {
|
|
260
262
|
entry: string;
|
|
261
263
|
height?: AppPostHeightConfig;
|
|
@@ -267,6 +269,14 @@ export type AppSchedulerConfigJson = {
|
|
|
267
269
|
};
|
|
268
270
|
};
|
|
269
271
|
export type AppSettingConfigJson = Omit<AppStringSettingConfig, 'name'> | Omit<AppParagraphSettingConfig, 'name'> | Omit<AppNumberSettingConfig, 'name'> | Omit<AppBooleanSettingConfig, 'name'> | Omit<AppSelectSettingConfig, 'name'> | Omit<AppMultiSelectSettingConfig, 'name'>;
|
|
272
|
+
export type AppSettingsConfigJson = {
|
|
273
|
+
global?: {
|
|
274
|
+
[name: string]: AppSettingConfigJson;
|
|
275
|
+
};
|
|
276
|
+
subreddit?: {
|
|
277
|
+
[name: string]: AppSettingConfigJson;
|
|
278
|
+
};
|
|
279
|
+
};
|
|
270
280
|
export declare function parseAppConfig(str: string, allowUninitializedConfig: boolean): AppConfig;
|
|
271
281
|
export declare function parseAppConfigJson(json: JsonValue, allowUninitializedConfig: boolean): AppConfig;
|
|
272
282
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-file.v1.d.ts","sourceRoot":"","sources":["../../src/schemas/config-file.v1.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config-file.v1.d.ts","sourceRoot":"","sources":["../../src/schemas/config-file.v1.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,6 +55,14 @@ export function parseAppConfigJson(json, allowUninitializedConfig) {
|
|
|
55
55
|
// still missing (https://github.com/ajv-validator/ajv/issues/1158). Even if the
|
|
56
56
|
// feature is added, we need the defaults in the properties for documentation
|
|
57
57
|
// and the same dynamic default adjustments as above are required.
|
|
58
|
+
//
|
|
59
|
+
// If there's an explicit permission, use it. If the permission is inferred, add
|
|
60
|
+
// a Blocks permission config that defaults to true to avoid having to evaluate
|
|
61
|
+
// user Blocks code. Model hydration should consider Blocks permissions.
|
|
62
|
+
//
|
|
63
|
+
// The current pattern is to avoid being smart about item / entry lengths. If a
|
|
64
|
+
// user defines a config, hydrate it regardless of whether any members are
|
|
65
|
+
// provided. This is so that Blocks apps can use the same hydrated models.
|
|
58
66
|
function AppConfig(json) {
|
|
59
67
|
const partial = {
|
|
60
68
|
schema: 'v1', // Always assume v1 since that's all that's supported.
|
|
@@ -66,24 +74,39 @@ function AppConfig(json) {
|
|
|
66
74
|
dir: json.media.dir ?? schema.properties.media.properties.dir.default,
|
|
67
75
|
};
|
|
68
76
|
if (json.post)
|
|
69
|
-
partial.post = AppPostConfig(json);
|
|
77
|
+
partial.post = AppPostConfig(json.post);
|
|
70
78
|
if (json.server)
|
|
71
79
|
partial.server = {
|
|
72
80
|
dir: json.server.dir ?? schema.properties.server.properties.dir.default,
|
|
73
81
|
entry: json.server.entry ?? schema.properties.server.properties.entry.default,
|
|
74
82
|
};
|
|
75
|
-
|
|
76
|
-
|
|
83
|
+
const blocksTriggers = json.blocks
|
|
84
|
+
? (json.blocks.triggers ?? schema.properties.blocks.properties.triggers.default)
|
|
85
|
+
: undefined;
|
|
86
|
+
if (json.triggers || blocksTriggers)
|
|
87
|
+
partial.triggers = AppTriggersConfig(blocksTriggers, json.triggers);
|
|
77
88
|
if (json.blocks)
|
|
78
|
-
partial.blocks = AppBlocksConfig(json);
|
|
79
|
-
|
|
80
|
-
|
|
89
|
+
partial.blocks = AppBlocksConfig(json.blocks);
|
|
90
|
+
const blocksMenu = json.blocks
|
|
91
|
+
? (json.blocks.menu?.enable ??
|
|
92
|
+
schema.properties.blocks.properties.menu.properties.enable.default)
|
|
93
|
+
: false;
|
|
94
|
+
if (json.menu || blocksMenu)
|
|
95
|
+
partial.menu = AppMenuConfig(json.menu);
|
|
81
96
|
if (json.scheduler)
|
|
82
|
-
partial.scheduler = AppSchedulerConfig(json);
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
97
|
+
partial.scheduler = AppSchedulerConfig(json.scheduler);
|
|
98
|
+
const blocksSettings = json.blocks
|
|
99
|
+
? (json.blocks.settings?.enable ??
|
|
100
|
+
schema.properties.blocks.properties.settings.properties.enable.default)
|
|
101
|
+
: false;
|
|
102
|
+
if (json.settings || blocksSettings)
|
|
103
|
+
partial.settings = AppSettingsConfig(blocksSettings, json.settings);
|
|
104
|
+
const blocksForms = json.blocks
|
|
105
|
+
? (json.blocks.forms?.enable ??
|
|
106
|
+
schema.properties.blocks.properties.forms.properties.enable.default)
|
|
107
|
+
: false;
|
|
108
|
+
if (json.forms || blocksForms)
|
|
109
|
+
partial.forms = json.forms ?? {};
|
|
87
110
|
if (json.marketingAssets)
|
|
88
111
|
partial.marketingAssets = json.marketingAssets;
|
|
89
112
|
if (json.dev) {
|
|
@@ -91,90 +114,81 @@ function AppConfig(json) {
|
|
|
91
114
|
if (json.dev.subreddit)
|
|
92
115
|
partial.dev.subreddit = json.dev.subreddit;
|
|
93
116
|
}
|
|
94
|
-
const config = { ...partial, permissions: AppPermissionConfig(json, partial) };
|
|
117
|
+
const config = { ...partial, permissions: AppPermissionConfig(json.permissions, partial) };
|
|
95
118
|
validate(config);
|
|
96
119
|
// Deep copy so schema is not mutated.
|
|
97
120
|
return structuredClone(config);
|
|
98
121
|
}
|
|
99
|
-
function AppSchedulerConfig(
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
? { cron: taskSpec.cron, ...(taskSpec.data ? { data: taskSpec.data } : {}) }
|
|
115
|
-
: {}),
|
|
116
|
-
};
|
|
117
|
-
}
|
|
122
|
+
function AppSchedulerConfig(scheduler) {
|
|
123
|
+
const config = { tasks: {} };
|
|
124
|
+
for (const [name, taskSpec] of Object.entries(scheduler.tasks)) {
|
|
125
|
+
if (typeof taskSpec === 'string') {
|
|
126
|
+
// If the task is a string, it is an endpoint.
|
|
127
|
+
config.tasks[name] = { endpoint: taskSpec };
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
// Otherwise, it is an object with an endpoint and optionally a cron.
|
|
131
|
+
config.tasks[name] = {
|
|
132
|
+
endpoint: taskSpec.endpoint,
|
|
133
|
+
...(taskSpec.cron
|
|
134
|
+
? { cron: taskSpec.cron, ...(taskSpec.data ? { data: taskSpec.data } : {}) }
|
|
135
|
+
: {}),
|
|
136
|
+
};
|
|
118
137
|
}
|
|
119
138
|
}
|
|
120
|
-
return
|
|
139
|
+
return config;
|
|
121
140
|
}
|
|
122
|
-
function AppPermissionConfig(
|
|
141
|
+
function AppPermissionConfig(permissions, partial) {
|
|
123
142
|
return {
|
|
124
143
|
http: {
|
|
125
|
-
enable:
|
|
126
|
-
(
|
|
144
|
+
enable: permissions?.http?.enable ??
|
|
145
|
+
(permissions?.http
|
|
127
146
|
? schema.properties.permissions.properties.http.properties.enable.default
|
|
128
147
|
: false),
|
|
129
|
-
domains:
|
|
148
|
+
domains: permissions?.http?.domains ??
|
|
130
149
|
schema.properties.permissions.properties.http.properties.domains.default,
|
|
131
150
|
},
|
|
132
|
-
media:
|
|
133
|
-
menu: !!partial.menu
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
realtime: json.permissions?.realtime ?? schema.properties.permissions.properties.realtime.default,
|
|
138
|
-
redis: json.permissions?.redis ??
|
|
151
|
+
media: permissions?.media ?? schema.properties.permissions.properties.media.default,
|
|
152
|
+
menu: !!partial.menu,
|
|
153
|
+
payments: permissions?.payments ?? schema.properties.permissions.properties.payments.default,
|
|
154
|
+
realtime: permissions?.realtime ?? schema.properties.permissions.properties.realtime.default,
|
|
155
|
+
redis: permissions?.redis ??
|
|
139
156
|
// Menu items call addCSRFTokenToContext() which uses Redis.
|
|
140
|
-
(partial.menu
|
|
157
|
+
(partial.menu
|
|
141
158
|
? true
|
|
142
159
|
: partial.post
|
|
143
160
|
? true
|
|
144
161
|
: schema.properties.permissions.properties.redis.default),
|
|
145
162
|
reddit: {
|
|
146
|
-
enable:
|
|
163
|
+
enable: permissions?.reddit?.enable ??
|
|
147
164
|
(partial.post
|
|
148
165
|
? true
|
|
149
|
-
:
|
|
166
|
+
: permissions?.reddit
|
|
150
167
|
? schema.properties.permissions.properties.reddit.properties.enable.default
|
|
151
168
|
: false),
|
|
152
|
-
scope:
|
|
169
|
+
scope: permissions?.reddit?.scope ??
|
|
153
170
|
schema.properties.permissions.properties.reddit.properties.scope
|
|
154
171
|
.default,
|
|
155
|
-
asUser:
|
|
172
|
+
asUser: permissions?.reddit?.asUser?.map((x) => scopeFromJSON(x)) ??
|
|
156
173
|
schema.properties.permissions.properties.reddit.properties.asUser.default,
|
|
157
174
|
},
|
|
158
|
-
settings:
|
|
159
|
-
(json.blocks
|
|
160
|
-
? schema.properties.blocks.properties.settings.properties.enable.default
|
|
161
|
-
: false),
|
|
175
|
+
settings: !!partial.settings,
|
|
162
176
|
triggers: !!partial.triggers,
|
|
163
177
|
};
|
|
164
178
|
}
|
|
165
|
-
function AppPostConfig(
|
|
166
|
-
const dir =
|
|
179
|
+
function AppPostConfig(post) {
|
|
180
|
+
const dir = post.dir ?? schema.properties.post.properties.dir.default;
|
|
167
181
|
const defaultHeight = schema.$defs.Entrypoint.properties.height.default;
|
|
168
182
|
const entrypoints = {
|
|
169
183
|
[defaultPostEntry]: {
|
|
170
184
|
name: defaultPostEntry,
|
|
171
|
-
entry:
|
|
185
|
+
entry: post.entrypoints?.default.entry ??
|
|
172
186
|
schema.properties.post.properties.entrypoints.properties.default.properties.entry.default,
|
|
173
|
-
height:
|
|
174
|
-
inline:
|
|
187
|
+
height: post.entrypoints?.default.height ?? defaultHeight,
|
|
188
|
+
inline: post.entrypoints?.default.inline ?? false,
|
|
175
189
|
},
|
|
176
190
|
};
|
|
177
|
-
for (const [name, pt] of Object.entries(
|
|
191
|
+
for (const [name, pt] of Object.entries(post.entrypoints ?? {})) {
|
|
178
192
|
if (name !== defaultPostEntry)
|
|
179
193
|
entrypoints[name] = {
|
|
180
194
|
name,
|
|
@@ -183,19 +197,16 @@ function AppPostConfig(json) {
|
|
|
183
197
|
inline: pt.inline ?? false,
|
|
184
198
|
};
|
|
185
199
|
}
|
|
186
|
-
return {
|
|
187
|
-
dir,
|
|
188
|
-
entrypoints,
|
|
189
|
-
};
|
|
200
|
+
return { dir, entrypoints };
|
|
190
201
|
}
|
|
191
|
-
function AppBlocksConfig(
|
|
202
|
+
function AppBlocksConfig(blocks) {
|
|
192
203
|
return {
|
|
193
|
-
entry:
|
|
204
|
+
entry: blocks.entry ?? schema.properties.blocks.properties.entry.default,
|
|
194
205
|
};
|
|
195
206
|
}
|
|
196
|
-
function AppMenuConfig(
|
|
207
|
+
function AppMenuConfig(menu) {
|
|
197
208
|
const items = [];
|
|
198
|
-
for (const item of
|
|
209
|
+
for (const item of menu?.items ?? []) {
|
|
199
210
|
items.push({
|
|
200
211
|
label: item.label,
|
|
201
212
|
description: item.description ?? '',
|
|
@@ -207,27 +218,27 @@ function AppMenuConfig(json) {
|
|
|
207
218
|
}
|
|
208
219
|
return { items };
|
|
209
220
|
}
|
|
210
|
-
function AppSettingsConfig(
|
|
211
|
-
const
|
|
212
|
-
if (
|
|
213
|
-
|
|
214
|
-
for (const [name, setting] of Object.entries(
|
|
215
|
-
|
|
216
|
-
...setting,
|
|
217
|
-
name: name,
|
|
218
|
-
};
|
|
221
|
+
function AppSettingsConfig(blocksSettings, settings) {
|
|
222
|
+
const config = {};
|
|
223
|
+
if (settings?.global || blocksSettings) {
|
|
224
|
+
config.global = {};
|
|
225
|
+
for (const [name, setting] of Object.entries(settings?.global ?? {})) {
|
|
226
|
+
config.global[name] = { ...setting, name: name };
|
|
219
227
|
}
|
|
220
228
|
}
|
|
221
|
-
if (
|
|
222
|
-
|
|
223
|
-
for (const [name, setting] of Object.entries(
|
|
224
|
-
|
|
225
|
-
...setting,
|
|
226
|
-
name: name,
|
|
227
|
-
};
|
|
229
|
+
if (settings?.subreddit || blocksSettings) {
|
|
230
|
+
config.subreddit = {};
|
|
231
|
+
for (const [name, setting] of Object.entries(settings?.subreddit ?? {})) {
|
|
232
|
+
config.subreddit[name] = { ...setting, name: name };
|
|
228
233
|
}
|
|
229
234
|
}
|
|
230
|
-
return
|
|
235
|
+
return config;
|
|
236
|
+
}
|
|
237
|
+
function AppTriggersConfig(blocksTriggers, triggers) {
|
|
238
|
+
const config = {};
|
|
239
|
+
for (const trigger of blocksTriggers ?? [])
|
|
240
|
+
config[trigger] = '';
|
|
241
|
+
return { ...config, ...triggers };
|
|
231
242
|
}
|
|
232
243
|
/** @internal */
|
|
233
244
|
export function validate(config) {
|
|
@@ -488,6 +488,18 @@
|
|
|
488
488
|
"description": "TypeScript or JavaScript Blocks client entrypoint relative project root. Use for migration.",
|
|
489
489
|
"default": "src/main.tsx"
|
|
490
490
|
},
|
|
491
|
+
"forms": {
|
|
492
|
+
"type": "object",
|
|
493
|
+
"description": "Blocks forms config.",
|
|
494
|
+
"additionalProperties": false,
|
|
495
|
+
"properties": {
|
|
496
|
+
"enable": {
|
|
497
|
+
"type": "boolean",
|
|
498
|
+
"description": "Whether forms are added through Blocks.",
|
|
499
|
+
"default": true
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
},
|
|
491
503
|
"menu": {
|
|
492
504
|
"type": "object",
|
|
493
505
|
"description": "Blocks menu config.",
|
|
@@ -511,6 +523,35 @@
|
|
|
511
523
|
"default": true
|
|
512
524
|
}
|
|
513
525
|
}
|
|
526
|
+
},
|
|
527
|
+
"triggers": {
|
|
528
|
+
"type": "array",
|
|
529
|
+
"description": "Event triggers that are added through Blocks.",
|
|
530
|
+
"items": {
|
|
531
|
+
"enum": [
|
|
532
|
+
"onAppInstall",
|
|
533
|
+
"onAppUpgrade",
|
|
534
|
+
"onAutomoderatorFilterComment",
|
|
535
|
+
"onAutomoderatorFilterPost",
|
|
536
|
+
"onCommentCreate",
|
|
537
|
+
"onCommentDelete",
|
|
538
|
+
"onCommentReport",
|
|
539
|
+
"onCommentSubmit",
|
|
540
|
+
"onCommentUpdate",
|
|
541
|
+
"onModAction",
|
|
542
|
+
"onModMail",
|
|
543
|
+
"onPostCreate",
|
|
544
|
+
"onPostDelete",
|
|
545
|
+
"onPostFlairUpdate",
|
|
546
|
+
"onPostNsfwUpdate",
|
|
547
|
+
"onPostReport",
|
|
548
|
+
"onPostSpoilerUpdate",
|
|
549
|
+
"onPostSubmit",
|
|
550
|
+
"onPostUpdate"
|
|
551
|
+
]
|
|
552
|
+
},
|
|
553
|
+
"uniqueItems": true,
|
|
554
|
+
"default": []
|
|
514
555
|
}
|
|
515
556
|
}
|
|
516
557
|
},
|