@devvit/client 0.11.15-next-2025-05-07-ff3f9e8c9.0 → 0.11.15

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/client",
3
- "version": "0.11.15-next-2025-05-07-ff3f9e8c9.0",
3
+ "version": "0.11.15",
4
4
  "license": "BSD-3-Clause",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,10 +26,10 @@
26
26
  "types": "./index.d.ts",
27
27
  "devDependencies": {
28
28
  "@ampproject/filesize": "4.3.0",
29
- "@devvit/protos": "0.11.15-next-2025-05-07-ff3f9e8c9.0",
30
- "@devvit/public-api": "0.11.15-next-2025-05-07-ff3f9e8c9.0",
31
- "@devvit/repo-tools": "0.11.15-next-2025-05-07-ff3f9e8c9.0",
32
- "@devvit/tsconfig": "0.11.15-next-2025-05-07-ff3f9e8c9.0",
29
+ "@devvit/protos": "0.11.15",
30
+ "@devvit/public-api": "0.11.15",
31
+ "@devvit/repo-tools": "0.11.15",
32
+ "@devvit/tsconfig": "0.11.15",
33
33
  "esbuild": "0.23.0",
34
34
  "eslint": "9.11.1",
35
35
  "typescript": "5.8.3",
@@ -45,5 +45,5 @@
45
45
  }
46
46
  },
47
47
  "source": "./src/index.ts",
48
- "gitHead": "e86ac9a7a7b1a85ef0b79b0aca49f503fc2c9b14"
48
+ "gitHead": "df8f436b870f709549e2ede0f421a186331bb508"
49
49
  }
@@ -1,175 +0,0 @@
1
- {
2
- "inputs": {
3
- "src/effects/contants.ts": {
4
- "bytes": 201,
5
- "imports": [],
6
- "format": "esm"
7
- },
8
- "src/effects/emit-effect.ts": {
9
- "bytes": 2213,
10
- "imports": [
11
- {
12
- "path": "src/effects/contants.ts",
13
- "kind": "import-statement",
14
- "original": "./contants.js"
15
- }
16
- ],
17
- "format": "esm"
18
- },
19
- "src/effects/navigate-to.ts": {
20
- "bytes": 1043,
21
- "imports": [
22
- {
23
- "path": "src/effects/emit-effect.ts",
24
- "kind": "import-statement",
25
- "original": "./emit-effect.js"
26
- }
27
- ],
28
- "format": "esm"
29
- },
30
- "src/effects/helpers/assert-valid-form-fields.ts": {
31
- "bytes": 1271,
32
- "imports": [],
33
- "format": "esm"
34
- },
35
- "src/effects/helpers/get-form-values.ts": {
36
- "bytes": 1337,
37
- "imports": [],
38
- "format": "esm"
39
- },
40
- "src/effects/helpers/transform-form.ts": {
41
- "bytes": 4194,
42
- "imports": [],
43
- "format": "esm"
44
- },
45
- "src/effects/types.ts": {
46
- "bytes": 506,
47
- "imports": [],
48
- "format": "esm"
49
- },
50
- "src/effects/show-form.ts": {
51
- "bytes": 2074,
52
- "imports": [
53
- {
54
- "path": "src/effects/emit-effect.ts",
55
- "kind": "import-statement",
56
- "original": "./emit-effect.js"
57
- },
58
- {
59
- "path": "src/effects/helpers/assert-valid-form-fields.ts",
60
- "kind": "import-statement",
61
- "original": "./helpers/assert-valid-form-fields.js"
62
- },
63
- {
64
- "path": "src/effects/helpers/get-form-values.ts",
65
- "kind": "import-statement",
66
- "original": "./helpers/get-form-values.js"
67
- },
68
- {
69
- "path": "src/effects/helpers/transform-form.ts",
70
- "kind": "import-statement",
71
- "original": "./helpers/transform-form.js"
72
- },
73
- {
74
- "path": "src/effects/types.ts",
75
- "kind": "import-statement",
76
- "original": "./types.js"
77
- }
78
- ],
79
- "format": "esm"
80
- },
81
- "src/effects/show-toast.ts": {
82
- "bytes": 1015,
83
- "imports": [
84
- {
85
- "path": "src/effects/emit-effect.ts",
86
- "kind": "import-statement",
87
- "original": "./emit-effect.js"
88
- }
89
- ],
90
- "format": "esm"
91
- },
92
- "src/effects/index.ts": {
93
- "bytes": 135,
94
- "imports": [
95
- {
96
- "path": "src/effects/navigate-to.ts",
97
- "kind": "import-statement",
98
- "original": "./navigate-to.js"
99
- },
100
- {
101
- "path": "src/effects/show-form.ts",
102
- "kind": "import-statement",
103
- "original": "./show-form.js"
104
- },
105
- {
106
- "path": "src/effects/show-toast.ts",
107
- "kind": "import-statement",
108
- "original": "./show-toast.js"
109
- }
110
- ],
111
- "format": "esm"
112
- },
113
- "src/index.ts": {
114
- "bytes": 70,
115
- "imports": [
116
- {
117
- "path": "src/effects/index.ts",
118
- "kind": "import-statement",
119
- "original": "./effects/index.js"
120
- }
121
- ],
122
- "format": "esm"
123
- }
124
- },
125
- "outputs": {
126
- "dist/client.min.js.map": {
127
- "imports": [],
128
- "exports": [],
129
- "inputs": {},
130
- "bytes": 18965
131
- },
132
- "dist/client.min.js": {
133
- "imports": [],
134
- "exports": [
135
- "navigateTo",
136
- "showForm",
137
- "showToast"
138
- ],
139
- "entryPoint": "src/index.ts",
140
- "inputs": {
141
- "src/effects/contants.ts": {
142
- "bytesInOutput": 10
143
- },
144
- "src/effects/emit-effect.ts": {
145
- "bytesInOutput": 377
146
- },
147
- "src/effects/navigate-to.ts": {
148
- "bytesInOutput": 156
149
- },
150
- "src/effects/index.ts": {
151
- "bytesInOutput": 0
152
- },
153
- "src/effects/helpers/assert-valid-form-fields.ts": {
154
- "bytesInOutput": 357
155
- },
156
- "src/effects/helpers/get-form-values.ts": {
157
- "bytesInOutput": 331
158
- },
159
- "src/effects/helpers/transform-form.ts": {
160
- "bytesInOutput": 1664
161
- },
162
- "src/effects/show-form.ts": {
163
- "bytesInOutput": 361
164
- },
165
- "src/effects/show-toast.ts": {
166
- "bytesInOutput": 139
167
- },
168
- "src/index.ts": {
169
- "bytesInOutput": 0
170
- }
171
- },
172
- "bytes": 3488
173
- }
174
- }
175
- }
package/client.min.js DELETED
@@ -1,2 +0,0 @@
1
- var l=[3];var i=e=>new Promise(t=>{let o={scope:0,type:"devvit-internal",effect:e};if(l.includes(e.type)){let r=self.crypto.randomUUID();o.id=r;let n=s=>{s.data?.type==="devvit-message"&&s.data?.data?.id===r&&(t(s.data.data),window.removeEventListener("message",n))};window.addEventListener("message",n),window.parent.postMessage(o,"*")}else window.parent.postMessage(o,"*"),t(void 0)});function d(e){let t;typeof e=="string"?t=new URL(e).toString():t=new URL(e.permalink,"https://www.reddit.com").toString(),i({navigateToUrl:{url:t},type:5})}function a(e,t=new Set){for(let o of e){if(o.type==="group"){a(o.fields,t);continue}let r=o.name;if(t.has(r))throw new Error(`Duplicate field name: ${r}`);t.add(r)}F(e)}function F(e){for(let t of e)if(t.type==="string"&&t.isSecret&&t.scope!=="app")throw`Invalid setting: only app settings can be secrets. Add "scope: SettingScope.App" to field "${t.name}"`}function T(e){switch(e.fieldType){case 0:return e.stringValue;case 7:return e.stringValue;case 1:return e.stringValue;case 2:return e.numberValue;case 3:return e.boolValue;case 5:return e.selectionValue?.values??[];default:return}}function m(e){return Object.keys(e).reduce((t,o)=>{let r=T(e[o]);return r!==void 0&&(t[o]=r),t},{})}function p(e){return e.map(t=>{switch(t.type){case"string":return y(t);case"image":return v(t);case"paragraph":return g(t);case"number":return E(t);case"select":return b(t);case"boolean":return S(t);case"group":return h(t);default:throw new Error("Unknown field type.")}})}function y(e){return{defaultValue:{fieldType:0,stringValue:e.defaultValue},disabled:e.disabled,fieldConfig:{stringConfig:{placeholder:e.placeholder}},fieldId:e.name,fieldType:0,helpText:e.helpText,label:e.label,required:e.required,isSecret:e.isSecret}}function v(e){return{disabled:e.disabled,fieldId:e.name,fieldType:7,helpText:e.helpText,label:e.label,required:e.required}}function g(e){return{defaultValue:{fieldType:1,stringValue:e.defaultValue},disabled:e.disabled,fieldConfig:{paragraphConfig:{lineHeight:e.lineHeight,placeholder:e.placeholder}},fieldId:e.name,fieldType:1,helpText:e.helpText,label:e.label,required:e.required}}function E(e){return{defaultValue:{fieldType:2,numberValue:e.defaultValue},disabled:e.disabled,fieldConfig:{numberConfig:{}},fieldId:e.name,fieldType:2,helpText:e.helpText,label:e.label,required:e.required}}function b(e){return{defaultValue:{fieldType:5,selectionValue:{values:e.defaultValue??[]}},disabled:e.disabled,fieldConfig:{selectionConfig:{choices:e.options,multiSelect:e.multiSelect}},fieldId:e.name,fieldType:5,helpText:e.helpText,label:e.label,required:e.required}}function S(e){return{defaultValue:{fieldType:3,boolValue:e.defaultValue},disabled:e.disabled,fieldId:e.name,fieldType:3,helpText:e.helpText,label:e.label}}function h(e){return{fieldId:"",fieldType:6,fieldConfig:{groupConfig:{fields:p(e.fields)}},label:e.label,helpText:e.helpText}}var f=1,w=()=>(f++,`form.${f}`),c=async e=>{let t={fields:[],id:w(),title:e.title,acceptLabel:e.acceptLabel,cancelLabel:e.cancelLabel,shortDescription:e.description};a(e.fields),t.fields=p(e.fields);let o=await i({showForm:{form:t},type:3});if(!o||!o.formSubmitted)return{action:"CANCELED"};let r=m(o.formSubmitted.results);return{action:"SUBMITTED",values:r}};function u(e){let t;e instanceof Object?t={text:e.text,appearance:e.appearance==="success"?1:0}:t={text:e},i({showToast:{toast:t},type:4})}export{d as navigateTo,c as showForm,u as showToast};
2
- //# sourceMappingURL=client.min.js.map
package/client.min.js.map DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/effects/contants.ts", "../src/effects/emit-effect.ts", "../src/effects/navigate-to.ts", "../src/effects/helpers/assert-valid-form-fields.ts", "../src/effects/helpers/get-form-values.ts", "../src/effects/helpers/transform-form.ts", "../src/effects/show-form.ts", "../src/effects/show-toast.ts"],
4
- "sourcesContent": ["import type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\n\nexport const EFFECTS_WITH_RESPONSE: readonly EffectType[] = [\n 3 satisfies EffectType.EFFECT_SHOW_FORM,\n];\n", "import type { Effect } from '@devvit/protos';\nimport type { WebViewInternalMessageScope } from '@devvit/protos/types/devvit/ui/effects/web_view/v1alpha/post_message.js';\nimport type { WebViewInternalEventMessage } from '@devvit/protos/types/devvit/ui/events/v1alpha/web_view.js';\n\nimport { EFFECTS_WITH_RESPONSE } from './contants.js';\nimport type { EmitEffectPayload } from './types.js';\n\n/**\n * Emits an effect to the parent window and handles the response if required.\n *\n * @param effect - The effect to be emitted to the parent window\n * @returns A promise that resolves with the response message for effects that require\n * a response, or resolves immediately with undefined for effects that don't\n *\n * @description\n * This function handles two types of effects:\n * 1. Effects that require a response: Creates a unique ID, sets up a message listener,\n * and resolves the promise when a matching response is received\n * 2. Effects that don't require a response: Posts the message and resolves immediately\n */\nexport const emitEffect = (effect: Effect): Promise<WebViewInternalEventMessage | undefined> => {\n return new Promise<WebViewInternalEventMessage | undefined>((resolve) => {\n const message: EmitEffectPayload = {\n scope: 0 satisfies WebViewInternalMessageScope.CLIENT,\n type: 'devvit-internal',\n effect,\n };\n\n // Only set message id and add a listener for effects which require a response\n if (EFFECTS_WITH_RESPONSE.includes(effect.type)) {\n const id = self.crypto.randomUUID();\n message.id = id;\n\n const handleEffect = (event: MessageEvent): void => {\n if (event.data?.type === 'devvit-message' && event.data?.data?.id === id) {\n resolve(event.data.data as WebViewInternalEventMessage);\n window.removeEventListener('message', handleEffect);\n }\n };\n\n window.addEventListener('message', handleEffect);\n\n // Post message to the parent window, handled by client web view component\n window.parent.postMessage(message, '*');\n } else {\n window.parent.postMessage(message, '*');\n // Resolve immediately for effects that don't expect a response.\n resolve(undefined);\n }\n });\n};\n", "import type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport type { Comment, Post, Subreddit, User } from '@devvit/public-api';\n\nimport { emitEffect } from './emit-effect.js';\n\n/**\n * Navigates to a URL, subreddit, post, comment, or user.\n *\n * @param thingOrUrl - The URL, subreddit, post, comment, or user to navigate to\n */\nexport function navigateTo(url: string): void;\nexport function navigateTo(subreddit: Subreddit): void;\nexport function navigateTo(post: Post): void;\nexport function navigateTo(comment: Comment): void;\nexport function navigateTo(user: User): void;\nexport function navigateTo(thingOrUrl: string | Subreddit | Post | Comment | User): void {\n let url: string;\n\n if (typeof thingOrUrl === 'string') {\n // Validate URL\n url = new URL(thingOrUrl).toString();\n } else {\n url = new URL(thingOrUrl.permalink, 'https://www.reddit.com').toString();\n }\n\n void emitEffect({\n navigateToUrl: {\n url,\n },\n type: 5 satisfies EffectType.EFFECT_NAVIGATE_TO_URL,\n });\n}\n", "import type { FormField, SettingScope } from './form-types.js';\n\n/**\n * Make sure that the form fields have unique names.\n *\n * This is a carbon copy of the assertValidFormFields function in the public-api package\n * We copy it here so that @devvit/client does not need to depend on public-api\n * Any changes to this function should be reflected in the public-api version\n */\nexport function assertValidFormFields(\n fields: readonly FormField[],\n seenNames: Set<string> = new Set()\n): void {\n for (const field of fields) {\n if (field.type === 'group') {\n assertValidFormFields(field.fields, seenNames);\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fieldName = (field as any).name as string;\n\n if (seenNames.has(fieldName)) {\n throw new Error(`Duplicate field name: ${fieldName}`);\n }\n\n seenNames.add(fieldName);\n }\n assertAppSecretsOnly(fields);\n}\n\nexport function assertAppSecretsOnly(fields: readonly FormField[]): void {\n for (const field of fields) {\n if (field.type === 'string' && field.isSecret && field.scope !== ('app' as SettingScope.App)) {\n throw `Invalid setting: only app settings can be secrets. Add \"scope: SettingScope.App\" to field \"${field.name}\"`;\n }\n }\n}\n", "import type { FormFieldType, FormFieldValue } from '@devvit/protos';\n\nimport type { FormValues } from './form-types.js';\n\nfunction flattenFormFieldValue(\n value: FormFieldValue\n): undefined | string | string[] | number | boolean {\n switch (value.fieldType) {\n case 0 satisfies FormFieldType.STRING:\n return value.stringValue;\n case 7 satisfies FormFieldType.IMAGE:\n // the string value is the URL\n return value.stringValue;\n case 1 satisfies FormFieldType.PARAGRAPH:\n return value.stringValue;\n case 2 satisfies FormFieldType.NUMBER:\n return value.numberValue;\n case 3 satisfies FormFieldType.BOOLEAN:\n return value.boolValue;\n case 5 satisfies FormFieldType.SELECTION:\n return value.selectionValue?.values ?? [];\n default:\n return undefined;\n }\n}\n\n// This is a carbon copy of the transformFormFields function in the public-api package\n// We copy it here so that @devvit/client does not need to depend on public-api\n// Any changes to this function should be reflected in the public-api version\nexport function getFormValues(results: { [key: string]: FormFieldValue }): FormValues {\n return Object.keys(results).reduce((acc, key) => {\n const val = flattenFormFieldValue(results[key]);\n if (val !== undefined) acc[key] = val;\n return acc;\n }, {} as FormValues);\n}\n", "import type { FormField as FormFieldProto, FormFieldType } from '@devvit/protos';\n\nimport type {\n BooleanField,\n FormField,\n FormFieldGroup,\n ImageField,\n NumberField,\n ParagraphField,\n SelectField,\n StringField,\n} from './form-types.js';\n\n// This is a carbon copy of the transformFormFields function in the public-api package\n// We copy it here so that @devvit/client does not need to depend on public-api\n// Any changes to this function should be reflected in the public-api version\nexport function transformFormFields(fields: readonly FormField[]): FormFieldProto[] {\n return fields.map((field) => {\n switch (field.type) {\n case 'string':\n return transformStringField(field);\n case 'image':\n return transformImageField(field);\n case 'paragraph':\n return transformParagraphField(field);\n case 'number':\n return transformNumberField(field);\n case 'select':\n return transformSelectField(field);\n case 'boolean':\n return transformBooleanField(field);\n case 'group':\n return transformGroupField(field);\n default:\n throw new Error('Unknown field type.');\n }\n });\n}\n\nfunction transformStringField(field: StringField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 0 satisfies FormFieldType.STRING,\n stringValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldConfig: {\n stringConfig: {\n placeholder: field.placeholder,\n },\n },\n fieldId: field.name,\n fieldType: 0 satisfies FormFieldType.STRING,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n isSecret: field.isSecret,\n };\n}\n\nfunction transformImageField(field: ImageField): FormFieldProto {\n return {\n disabled: field.disabled,\n fieldId: field.name,\n fieldType: 7 satisfies FormFieldType.IMAGE,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformParagraphField(field: ParagraphField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 1 satisfies FormFieldType.PARAGRAPH,\n stringValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldConfig: {\n paragraphConfig: {\n lineHeight: field.lineHeight,\n placeholder: field.placeholder,\n },\n },\n fieldId: field.name,\n fieldType: 1 satisfies FormFieldType.PARAGRAPH,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformNumberField(field: NumberField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 2 satisfies FormFieldType.NUMBER,\n numberValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldConfig: {\n numberConfig: {},\n },\n fieldId: field.name,\n fieldType: 2 satisfies FormFieldType.NUMBER,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformSelectField(field: SelectField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 5 satisfies FormFieldType.SELECTION,\n selectionValue: {\n values: field.defaultValue ?? [],\n },\n },\n disabled: field.disabled,\n fieldConfig: {\n selectionConfig: {\n choices: field.options,\n multiSelect: field.multiSelect,\n },\n },\n fieldId: field.name,\n fieldType: 5 satisfies FormFieldType.SELECTION,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformBooleanField(field: BooleanField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 3 satisfies FormFieldType.BOOLEAN,\n boolValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldId: field.name,\n fieldType: 3 satisfies FormFieldType.BOOLEAN,\n helpText: field.helpText,\n label: field.label,\n };\n}\n\nfunction transformGroupField(field: FormFieldGroup): FormFieldProto {\n return {\n fieldId: '',\n fieldType: 6 satisfies FormFieldType.GROUP,\n fieldConfig: {\n groupConfig: {\n fields: transformFormFields(field.fields),\n },\n },\n label: field.label,\n helpText: field.helpText,\n };\n}\n", "import type { Form as FormProto } from '@devvit/protos';\nimport type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport type { Form, FormKey } from '@devvit/public-api';\n\nimport { emitEffect } from './emit-effect.js';\nimport { assertValidFormFields } from './helpers/assert-valid-form-fields.js';\nimport type { FormToFormValues } from './helpers/form-types.js';\nimport { getFormValues } from './helpers/get-form-values.js';\nimport { transformFormFields } from './helpers/transform-form.js';\nimport { FormAction, type FormEffectResponse } from './types.js';\n\nlet _formKey = 1;\n\nconst getNextFormKey = (): FormKey => {\n _formKey++;\n return `form.${_formKey}`;\n};\n\n/**\n * Opens a form in a modal.\n * Returns a promise that resolves with the form submission results.\n * The form can be submitted or canceled by the user.\n *\n * @param formDefinition - The form configuration\n * @returns A promise that resolves to either:\n * - An object with `action: FormAction.SUBMITTED` and the submitted form values\n * - An object with `action: FormAction.CANCELED` if the user canceled the form\n * @throws Will throw if the form fields are invalid\n */\nexport const showForm = async <const T extends Form>(\n formDefinition: T\n): Promise<FormEffectResponse<FormToFormValues<T>>> => {\n const form: FormProto = {\n fields: [],\n id: getNextFormKey(),\n title: formDefinition.title,\n acceptLabel: formDefinition.acceptLabel,\n cancelLabel: formDefinition.cancelLabel,\n shortDescription: formDefinition.description,\n };\n\n assertValidFormFields(formDefinition.fields);\n form.fields = transformFormFields(formDefinition.fields);\n\n const response = await emitEffect({\n showForm: {\n form,\n },\n type: 3 satisfies EffectType.EFFECT_SHOW_FORM,\n });\n\n if (!response || !response.formSubmitted) {\n return {\n action: FormAction.CANCELED,\n };\n }\n\n const formResults = getFormValues(response.formSubmitted.results);\n\n return {\n action: FormAction.SUBMITTED,\n values: formResults as FormToFormValues<T>,\n };\n};\n", "import type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport type {\n Toast as ToastProto,\n ToastAppearance,\n} from '@devvit/protos/types/devvit/ui/toast/toast.js';\nimport type { Toast } from '@devvit/public-api';\n\nimport { emitEffect } from './emit-effect.js';\n\n/**\n * Shows a toast message.\n *\n * @param textOrToast - The text or toast object to display\n */\nexport function showToast(text: string): void;\nexport function showToast(toast: Toast): void;\nexport function showToast(textOrToast: string | Toast): void {\n let toast: ToastProto;\n\n if (textOrToast instanceof Object) {\n toast = {\n text: textOrToast.text,\n appearance:\n textOrToast.appearance === 'success'\n ? (1 satisfies ToastAppearance.SUCCESS)\n : (0 satisfies ToastAppearance.NEUTRAL),\n };\n } else {\n toast = {\n text: textOrToast,\n };\n }\n\n void emitEffect({\n showToast: {\n toast,\n },\n type: 4 satisfies EffectType.EFFECT_SHOW_TOAST,\n });\n}\n"],
5
- "mappings": "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",
6
- "names": ["EFFECTS_WITH_RESPONSE", "emitEffect", "effect", "resolve", "message", "EFFECTS_WITH_RESPONSE", "id", "handleEffect", "event", "navigateTo", "thingOrUrl", "url", "emitEffect", "assertValidFormFields", "fields", "seenNames", "field", "fieldName", "assertAppSecretsOnly", "flattenFormFieldValue", "value", "getFormValues", "results", "acc", "key", "val", "transformFormFields", "fields", "field", "transformStringField", "transformImageField", "transformParagraphField", "transformNumberField", "transformSelectField", "transformBooleanField", "transformGroupField", "_formKey", "getNextFormKey", "showForm", "formDefinition", "form", "assertValidFormFields", "transformFormFields", "response", "emitEffect", "formResults", "getFormValues", "showToast", "textOrToast", "toast", "emitEffect"]
7
- }