@metamask/snaps-sdk 4.4.2 → 6.0.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.
Files changed (39) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/dist/index.js +276 -243
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.mjs +138 -104
  5. package/dist/index.mjs.map +1 -1
  6. package/dist/jsx/index.js +183 -115
  7. package/dist/jsx/index.js.map +1 -1
  8. package/dist/jsx/index.mjs +168 -101
  9. package/dist/jsx/index.mjs.map +1 -1
  10. package/dist/jsx/jsx-dev-runtime.js +132 -79
  11. package/dist/jsx/jsx-dev-runtime.js.map +1 -1
  12. package/dist/jsx/jsx-dev-runtime.mjs +117 -65
  13. package/dist/jsx/jsx-dev-runtime.mjs.map +1 -1
  14. package/dist/tsconfig.build.tsbuildinfo +1 -1
  15. package/dist/types/index.d.ts +1 -1
  16. package/dist/types/internals/jsx.d.ts +1 -1
  17. package/dist/types/internals/svg.d.ts +4 -11
  18. package/dist/types/jsx/component.d.ts +16 -9
  19. package/dist/types/jsx/components/Box.d.ts +4 -4
  20. package/dist/types/jsx/components/Link.d.ts +2 -2
  21. package/dist/types/jsx/components/Row.d.ts +5 -2
  22. package/dist/types/jsx/components/Text.d.ts +7 -2
  23. package/dist/types/jsx/components/Tooltip.d.ts +38 -0
  24. package/dist/types/jsx/components/form/Checkbox.d.ts +35 -0
  25. package/dist/types/jsx/components/form/Dropdown.d.ts +5 -7
  26. package/dist/types/jsx/components/form/Field.d.ts +7 -1
  27. package/dist/types/jsx/components/form/FileInput.d.ts +47 -0
  28. package/dist/types/jsx/components/form/Form.d.ts +4 -7
  29. package/dist/types/jsx/components/form/Input.d.ts +2 -4
  30. package/dist/types/jsx/components/form/index.d.ts +5 -1
  31. package/dist/types/jsx/components/formatting/Bold.d.ts +2 -2
  32. package/dist/types/jsx/components/formatting/Italic.d.ts +2 -2
  33. package/dist/types/jsx/components/index.d.ts +3 -1
  34. package/dist/types/jsx/validation.d.ts +34 -39
  35. package/dist/types/types/handlers/name-lookup.d.ts +1 -0
  36. package/dist/types/types/handlers/user-input.d.ts +126 -11
  37. package/dist/types/types/interface.d.ts +29 -21
  38. package/dist/types/ui/components/image.d.ts +0 -7
  39. package/package.json +1 -2
@@ -19,77 +19,89 @@ function createSnapComponent(type) {
19
19
  var TYPE = "Button";
20
20
  var Button = createSnapComponent(TYPE);
21
21
 
22
+ // src/jsx/components/form/Checkbox.ts
23
+ var TYPE2 = "Checkbox";
24
+ var Checkbox = createSnapComponent(TYPE2);
25
+
22
26
  // src/jsx/components/form/Dropdown.ts
23
- var TYPE2 = "Dropdown";
24
- var Dropdown = createSnapComponent(TYPE2);
27
+ var TYPE3 = "Dropdown";
28
+ var Dropdown = createSnapComponent(TYPE3);
25
29
 
26
30
  // src/jsx/components/form/Option.ts
27
- var TYPE3 = "Option";
28
- var Option = createSnapComponent(TYPE3);
31
+ var TYPE4 = "Option";
32
+ var Option = createSnapComponent(TYPE4);
29
33
 
30
34
  // src/jsx/components/form/Field.ts
31
- var TYPE4 = "Field";
32
- var Field = createSnapComponent(TYPE4);
35
+ var TYPE5 = "Field";
36
+ var Field = createSnapComponent(TYPE5);
37
+
38
+ // src/jsx/components/form/FileInput.ts
39
+ var TYPE6 = "FileInput";
40
+ var FileInput = createSnapComponent(TYPE6);
33
41
 
34
42
  // src/jsx/components/form/Form.ts
35
- var TYPE5 = "Form";
36
- var Form = createSnapComponent(TYPE5);
43
+ var TYPE7 = "Form";
44
+ var Form = createSnapComponent(TYPE7);
37
45
 
38
46
  // src/jsx/components/form/Input.ts
39
- var TYPE6 = "Input";
40
- var Input = createSnapComponent(TYPE6);
47
+ var TYPE8 = "Input";
48
+ var Input = createSnapComponent(TYPE8);
41
49
 
42
50
  // src/jsx/components/formatting/Bold.ts
43
- var TYPE7 = "Bold";
44
- var Bold = createSnapComponent(TYPE7);
51
+ var TYPE9 = "Bold";
52
+ var Bold = createSnapComponent(TYPE9);
45
53
 
46
54
  // src/jsx/components/formatting/Italic.ts
47
- var TYPE8 = "Italic";
48
- var Italic = createSnapComponent(TYPE8);
55
+ var TYPE10 = "Italic";
56
+ var Italic = createSnapComponent(TYPE10);
49
57
 
50
58
  // src/jsx/components/Address.ts
51
- var TYPE9 = "Address";
52
- var Address = createSnapComponent(TYPE9);
59
+ var TYPE11 = "Address";
60
+ var Address = createSnapComponent(TYPE11);
53
61
 
54
62
  // src/jsx/components/Box.ts
55
- var TYPE10 = "Box";
56
- var Box = createSnapComponent(TYPE10);
63
+ var TYPE12 = "Box";
64
+ var Box = createSnapComponent(TYPE12);
57
65
 
58
66
  // src/jsx/components/Copyable.ts
59
- var TYPE11 = "Copyable";
60
- var Copyable = createSnapComponent(TYPE11);
67
+ var TYPE13 = "Copyable";
68
+ var Copyable = createSnapComponent(TYPE13);
61
69
 
62
70
  // src/jsx/components/Divider.ts
63
- var TYPE12 = "Divider";
64
- var Divider = createSnapComponent(TYPE12);
71
+ var TYPE14 = "Divider";
72
+ var Divider = createSnapComponent(TYPE14);
65
73
 
66
74
  // src/jsx/components/Value.ts
67
- var TYPE13 = "Value";
68
- var Value = createSnapComponent(TYPE13);
75
+ var TYPE15 = "Value";
76
+ var Value = createSnapComponent(TYPE15);
69
77
 
70
78
  // src/jsx/components/Heading.ts
71
- var TYPE14 = "Heading";
72
- var Heading = createSnapComponent(TYPE14);
79
+ var TYPE16 = "Heading";
80
+ var Heading = createSnapComponent(TYPE16);
73
81
 
74
82
  // src/jsx/components/Image.ts
75
- var TYPE15 = "Image";
76
- var Image = createSnapComponent(TYPE15);
83
+ var TYPE17 = "Image";
84
+ var Image = createSnapComponent(TYPE17);
77
85
 
78
86
  // src/jsx/components/Link.ts
79
- var TYPE16 = "Link";
80
- var Link = createSnapComponent(TYPE16);
87
+ var TYPE18 = "Link";
88
+ var Link = createSnapComponent(TYPE18);
81
89
 
82
90
  // src/jsx/components/Row.ts
83
- var TYPE17 = "Row";
84
- var Row = createSnapComponent(TYPE17);
91
+ var TYPE19 = "Row";
92
+ var Row = createSnapComponent(TYPE19);
85
93
 
86
94
  // src/jsx/components/Spinner.ts
87
- var TYPE18 = "Spinner";
88
- var Spinner = createSnapComponent(TYPE18);
95
+ var TYPE20 = "Spinner";
96
+ var Spinner = createSnapComponent(TYPE20);
89
97
 
90
98
  // src/jsx/components/Text.ts
91
- var TYPE19 = "Text";
92
- var Text = createSnapComponent(TYPE19);
99
+ var TYPE21 = "Text";
100
+ var Text = createSnapComponent(TYPE21);
101
+
102
+ // src/jsx/components/Tooltip.ts
103
+ var TYPE22 = "Tooltip";
104
+ var Tooltip = createSnapComponent(TYPE22);
93
105
 
94
106
  // src/jsx/jsx-runtime.ts
95
107
  function jsx(component, props, key) {
@@ -119,7 +131,6 @@ import {
119
131
  JsonStruct
120
132
  } from "@metamask/utils";
121
133
  import {
122
- nonempty,
123
134
  is,
124
135
  boolean,
125
136
  optional,
@@ -129,7 +140,7 @@ import {
129
140
  number,
130
141
  object,
131
142
  record,
132
- string,
143
+ string as string2,
133
144
  tuple
134
145
  } from "superstruct";
135
146
 
@@ -162,21 +173,36 @@ function nullUnion(structs) {
162
173
  return union(structs);
163
174
  }
164
175
 
176
+ // src/internals/svg.ts
177
+ import { refine, string } from "superstruct";
178
+ function svg() {
179
+ return refine(string(), "SVG", (value) => {
180
+ if (!value.includes("<svg")) {
181
+ return "Value is not a valid SVG.";
182
+ }
183
+ return true;
184
+ });
185
+ }
186
+
165
187
  // src/jsx/validation.ts
166
- var KeyStruct = nullUnion([string(), number()]);
167
- var StringElementStruct = maybeArray(
168
- string()
169
- );
188
+ var KeyStruct = nullUnion([string2(), number()]);
189
+ var StringElementStruct = children([
190
+ string2()
191
+ ]);
170
192
  var ElementStruct = object({
171
- type: string(),
172
- props: record(string(), JsonStruct),
193
+ type: string2(),
194
+ props: record(string2(), JsonStruct),
173
195
  key: nullable(KeyStruct)
174
196
  });
175
- function nonEmptyArray(struct) {
176
- return nonempty(array(struct));
197
+ function nestable(struct) {
198
+ const nestableStruct = nullUnion([
199
+ struct,
200
+ array(lazy(() => nestableStruct))
201
+ ]);
202
+ return nestableStruct;
177
203
  }
178
- function maybeArray(struct) {
179
- return nullUnion([struct, nonEmptyArray(struct)]);
204
+ function children(structs) {
205
+ return nestable(nullable(nullUnion([...structs, boolean()])));
180
206
  }
181
207
  function element(name, props = {}) {
182
208
  return object({
@@ -187,62 +213,73 @@ function element(name, props = {}) {
187
213
  }
188
214
  var ButtonStruct = element("Button", {
189
215
  children: StringElementStruct,
190
- name: optional(string()),
216
+ name: optional(string2()),
191
217
  type: optional(nullUnion([literal("button"), literal("submit")])),
192
218
  variant: optional(nullUnion([literal("primary"), literal("destructive")])),
193
219
  disabled: optional(boolean())
194
220
  });
221
+ var CheckboxStruct = element("Checkbox", {
222
+ name: string2(),
223
+ checked: optional(boolean()),
224
+ label: optional(string2()),
225
+ variant: optional(nullUnion([literal("default"), literal("toggle")]))
226
+ });
195
227
  var InputStruct = element("Input", {
196
- name: string(),
228
+ name: string2(),
197
229
  type: optional(
198
230
  nullUnion([literal("text"), literal("password"), literal("number")])
199
231
  ),
200
- value: optional(string()),
201
- placeholder: optional(string())
232
+ value: optional(string2()),
233
+ placeholder: optional(string2())
202
234
  });
203
235
  var OptionStruct = element("Option", {
204
- value: string(),
205
- children: string()
236
+ value: string2(),
237
+ children: string2()
206
238
  });
207
239
  var DropdownStruct = element("Dropdown", {
208
- name: string(),
209
- value: optional(string()),
210
- children: maybeArray(OptionStruct)
240
+ name: string2(),
241
+ value: optional(string2()),
242
+ children: children([OptionStruct])
211
243
  });
244
+ var FileInputStruct = element(
245
+ "FileInput",
246
+ {
247
+ name: string2(),
248
+ accept: nullUnion([optional(array(string2()))]),
249
+ compact: optional(boolean())
250
+ }
251
+ );
212
252
  var FieldStruct = element("Field", {
213
- label: optional(string()),
214
- error: optional(string()),
253
+ label: optional(string2()),
254
+ error: optional(string2()),
215
255
  children: nullUnion([
216
256
  tuple([InputStruct, ButtonStruct]),
257
+ DropdownStruct,
258
+ FileInputStruct,
217
259
  InputStruct,
218
- DropdownStruct
260
+ CheckboxStruct
219
261
  ])
220
262
  });
221
263
  var FormStruct = element("Form", {
222
- children: maybeArray(nullUnion([FieldStruct, ButtonStruct])),
223
- name: string()
264
+ children: children(
265
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
266
+ [FieldStruct, lazy(() => BoxChildStruct)]
267
+ ),
268
+ name: string2()
224
269
  });
225
270
  var BoldStruct = element("Bold", {
226
- children: maybeArray(
227
- nullable(
228
- nullUnion([
229
- string(),
230
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
231
- lazy(() => ItalicStruct)
232
- ])
233
- )
234
- )
271
+ children: children([
272
+ string2(),
273
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
274
+ lazy(() => ItalicStruct)
275
+ ])
235
276
  });
236
277
  var ItalicStruct = element("Italic", {
237
- children: maybeArray(
238
- nullable(
239
- nullUnion([
240
- string(),
241
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
242
- lazy(() => BoldStruct)
243
- ])
244
- )
245
- )
278
+ children: children([
279
+ string2(),
280
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
281
+ lazy(() => BoldStruct)
282
+ ])
246
283
  });
247
284
  var FormattingStruct = nullUnion([
248
285
  BoldStruct,
@@ -252,9 +289,9 @@ var AddressStruct = element("Address", {
252
289
  address: HexChecksumAddressStruct
253
290
  });
254
291
  var BoxStruct = element("Box", {
255
- children: maybeArray(
292
+ children: children(
256
293
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
257
- nullable(lazy(() => BoxChildStruct))
294
+ [lazy(() => BoxChildStruct)]
258
295
  ),
259
296
  direction: optional(nullUnion([literal("horizontal"), literal("vertical")])),
260
297
  alignment: optional(
@@ -268,60 +305,85 @@ var BoxStruct = element("Box", {
268
305
  )
269
306
  });
270
307
  var CopyableStruct = element("Copyable", {
271
- value: string(),
308
+ value: string2(),
272
309
  sensitive: optional(boolean())
273
310
  });
274
311
  var DividerStruct = element("Divider");
275
312
  var ValueStruct = element("Value", {
276
- value: string(),
277
- extra: string()
313
+ value: string2(),
314
+ extra: string2()
278
315
  });
279
316
  var HeadingStruct = element("Heading", {
280
317
  children: StringElementStruct
281
318
  });
282
319
  var ImageStruct = element("Image", {
283
- src: string(),
284
- alt: optional(string())
320
+ src: svg(),
321
+ alt: optional(string2())
285
322
  });
286
323
  var LinkStruct = element("Link", {
287
- href: string(),
288
- children: maybeArray(nullable(nullUnion([FormattingStruct, string()])))
324
+ href: string2(),
325
+ children: children([FormattingStruct, string2()])
289
326
  });
290
327
  var TextStruct = element("Text", {
291
- children: maybeArray(
292
- nullable(nullUnion([string(), BoldStruct, ItalicStruct, LinkStruct]))
328
+ children: children([string2(), BoldStruct, ItalicStruct, LinkStruct]),
329
+ alignment: optional(
330
+ nullUnion([literal("start"), literal("center"), literal("end")])
293
331
  )
294
332
  });
333
+ var TooltipChildStruct = nullUnion([
334
+ TextStruct,
335
+ BoldStruct,
336
+ ItalicStruct,
337
+ LinkStruct,
338
+ ImageStruct,
339
+ boolean()
340
+ ]);
341
+ var TooltipContentStruct = nullUnion([
342
+ TextStruct,
343
+ BoldStruct,
344
+ ItalicStruct,
345
+ LinkStruct,
346
+ string2()
347
+ ]);
348
+ var TooltipStruct = element("Tooltip", {
349
+ children: nullable(TooltipChildStruct),
350
+ content: TooltipContentStruct
351
+ });
295
352
  var RowStruct = element("Row", {
296
- label: string(),
353
+ label: string2(),
297
354
  children: nullUnion([AddressStruct, ImageStruct, TextStruct, ValueStruct]),
298
355
  variant: optional(
299
- nullUnion([literal("default"), literal("warning"), literal("error")])
300
- )
356
+ nullUnion([literal("default"), literal("warning"), literal("critical")])
357
+ ),
358
+ tooltip: optional(string2())
301
359
  });
302
360
  var SpinnerStruct = element("Spinner");
303
361
  var BoxChildStruct = nullUnion([
304
- ButtonStruct,
305
- InputStruct,
306
- FormStruct,
307
- BoldStruct,
308
- ItalicStruct,
309
362
  AddressStruct,
363
+ BoldStruct,
310
364
  BoxStruct,
365
+ ButtonStruct,
311
366
  CopyableStruct,
312
367
  DividerStruct,
368
+ DropdownStruct,
369
+ FileInputStruct,
370
+ FormStruct,
313
371
  HeadingStruct,
372
+ InputStruct,
314
373
  ImageStruct,
374
+ ItalicStruct,
315
375
  LinkStruct,
316
376
  RowStruct,
317
377
  SpinnerStruct,
318
378
  TextStruct,
319
- DropdownStruct
379
+ TooltipStruct,
380
+ CheckboxStruct
320
381
  ]);
321
382
  var RootJSXElementStruct = BoxChildStruct;
322
383
  var JSXElementStruct = nullUnion([
323
384
  ButtonStruct,
324
385
  InputStruct,
386
+ FileInputStruct,
325
387
  FieldStruct,
326
388
  FormStruct,
327
389
  BoldStruct,
@@ -338,7 +400,9 @@ var JSXElementStruct = nullUnion([
338
400
  TextStruct,
339
401
  DropdownStruct,
340
402
  OptionStruct,
341
- ValueStruct
403
+ ValueStruct,
404
+ TooltipStruct,
405
+ CheckboxStruct
342
406
  ]);
343
407
  function isJSXElement(value) {
344
408
  return is(value, JSXElementStruct);
@@ -367,10 +431,12 @@ export {
367
431
  Bold,
368
432
  Box,
369
433
  Button,
434
+ Checkbox,
370
435
  Copyable,
371
436
  Divider,
372
437
  Dropdown,
373
438
  Field,
439
+ FileInput,
374
440
  Form,
375
441
  Heading,
376
442
  Image,
@@ -383,6 +449,7 @@ export {
383
449
  Row,
384
450
  Spinner,
385
451
  Text,
452
+ Tooltip,
386
453
  Value,
387
454
  assertJSXElement,
388
455
  createSnapComponent,