@metamask/snaps-sdk 1.3.2 → 2.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 (96) hide show
  1. package/CHANGELOG.md +21 -1
  2. package/dist/cjs/types/handlers/index.js +2 -0
  3. package/dist/cjs/types/handlers/index.js.map +1 -1
  4. package/dist/cjs/types/handlers/signature.js +6 -0
  5. package/dist/cjs/types/handlers/signature.js.map +1 -0
  6. package/dist/cjs/types/handlers/transaction.js.map +1 -1
  7. package/dist/cjs/types/handlers/user-input.js +51 -0
  8. package/dist/cjs/types/handlers/user-input.js.map +1 -0
  9. package/dist/cjs/types/index.js +1 -0
  10. package/dist/cjs/types/index.js.map +1 -1
  11. package/dist/cjs/types/interface.js +26 -0
  12. package/dist/cjs/types/interface.js.map +1 -0
  13. package/dist/cjs/types/methods/create-interface.js +6 -0
  14. package/dist/cjs/types/methods/create-interface.js.map +1 -0
  15. package/dist/cjs/types/methods/dialog.js.map +1 -1
  16. package/dist/cjs/types/methods/get-client-status.js +10 -0
  17. package/dist/cjs/types/methods/get-client-status.js.map +1 -0
  18. package/dist/cjs/types/methods/get-interface-state.js +6 -0
  19. package/dist/cjs/types/methods/get-interface-state.js.map +1 -0
  20. package/dist/cjs/types/methods/index.js +4 -0
  21. package/dist/cjs/types/methods/index.js.map +1 -1
  22. package/dist/cjs/types/methods/update-interface.js +6 -0
  23. package/dist/cjs/types/methods/update-interface.js.map +1 -0
  24. package/dist/cjs/ui/components/button.js +59 -0
  25. package/dist/cjs/ui/components/button.js.map +1 -0
  26. package/dist/cjs/ui/components/form.js +41 -0
  27. package/dist/cjs/ui/components/form.js.map +1 -0
  28. package/dist/cjs/ui/components/index.js +3 -0
  29. package/dist/cjs/ui/components/index.js.map +1 -1
  30. package/dist/cjs/ui/components/input.js +52 -0
  31. package/dist/cjs/ui/components/input.js.map +1 -0
  32. package/dist/cjs/ui/components/panel.js +7 -1
  33. package/dist/cjs/ui/components/panel.js.map +1 -1
  34. package/dist/cjs/ui/nodes.js +3 -0
  35. package/dist/cjs/ui/nodes.js.map +1 -1
  36. package/dist/esm/types/handlers/home-page.js.map +1 -1
  37. package/dist/esm/types/handlers/index.js +2 -0
  38. package/dist/esm/types/handlers/index.js.map +1 -1
  39. package/dist/esm/types/handlers/name-lookup.js.map +1 -1
  40. package/dist/esm/types/handlers/signature.js +3 -0
  41. package/dist/esm/types/handlers/signature.js.map +1 -0
  42. package/dist/esm/types/handlers/transaction.js.map +1 -1
  43. package/dist/esm/types/handlers/user-input.js +24 -0
  44. package/dist/esm/types/handlers/user-input.js.map +1 -0
  45. package/dist/esm/types/index.js +1 -0
  46. package/dist/esm/types/index.js.map +1 -1
  47. package/dist/esm/types/interface.js +12 -0
  48. package/dist/esm/types/interface.js.map +1 -0
  49. package/dist/esm/types/methods/create-interface.js +3 -0
  50. package/dist/esm/types/methods/create-interface.js.map +1 -0
  51. package/dist/esm/types/methods/dialog.js.map +1 -1
  52. package/dist/esm/types/methods/get-client-status.js +7 -0
  53. package/dist/esm/types/methods/get-client-status.js.map +1 -0
  54. package/dist/esm/types/methods/get-interface-state.js +3 -0
  55. package/dist/esm/types/methods/get-interface-state.js.map +1 -0
  56. package/dist/esm/types/methods/index.js +4 -0
  57. package/dist/esm/types/methods/index.js.map +1 -1
  58. package/dist/esm/types/methods/methods.js.map +1 -1
  59. package/dist/esm/types/methods/update-interface.js +3 -0
  60. package/dist/esm/types/methods/update-interface.js.map +1 -0
  61. package/dist/esm/types/permissions.js.map +1 -1
  62. package/dist/esm/ui/components/button.js +50 -0
  63. package/dist/esm/ui/components/button.js.map +1 -0
  64. package/dist/esm/ui/components/form.js +39 -0
  65. package/dist/esm/ui/components/form.js.map +1 -0
  66. package/dist/esm/ui/components/index.js +3 -0
  67. package/dist/esm/ui/components/index.js.map +1 -1
  68. package/dist/esm/ui/components/input.js +47 -0
  69. package/dist/esm/ui/components/input.js.map +1 -0
  70. package/dist/esm/ui/components/panel.js +7 -1
  71. package/dist/esm/ui/components/panel.js.map +1 -1
  72. package/dist/esm/ui/nodes.js +3 -0
  73. package/dist/esm/ui/nodes.js.map +1 -1
  74. package/dist/types/types/handlers/home-page.d.ts +3 -0
  75. package/dist/types/types/handlers/index.d.ts +2 -0
  76. package/dist/types/types/handlers/name-lookup.d.ts +31 -10
  77. package/dist/types/types/handlers/signature.d.ts +111 -0
  78. package/dist/types/types/handlers/transaction.d.ts +4 -0
  79. package/dist/types/types/handlers/user-input.d.ts +64 -0
  80. package/dist/types/types/index.d.ts +1 -0
  81. package/dist/types/types/interface.d.ts +10 -0
  82. package/dist/types/types/methods/create-interface.d.ts +13 -0
  83. package/dist/types/types/methods/dialog.d.ts +14 -0
  84. package/dist/types/types/methods/get-client-status.d.ts +14 -0
  85. package/dist/types/types/methods/get-interface-state.d.ts +13 -0
  86. package/dist/types/types/methods/index.d.ts +4 -0
  87. package/dist/types/types/methods/methods.d.ts +8 -0
  88. package/dist/types/types/methods/update-interface.d.ts +15 -0
  89. package/dist/types/types/permissions.d.ts +41 -19
  90. package/dist/types/ui/components/button.d.ts +62 -0
  91. package/dist/types/ui/components/form.d.ts +144 -0
  92. package/dist/types/ui/components/index.d.ts +3 -0
  93. package/dist/types/ui/components/input.d.ts +69 -0
  94. package/dist/types/ui/components/panel.d.ts +150 -0
  95. package/dist/types/ui/nodes.d.ts +4 -1
  96. package/package.json +3 -3
@@ -0,0 +1,69 @@
1
+ import type { Infer } from 'superstruct';
2
+ import { NodeType } from '../nodes';
3
+ /**
4
+ * This replicates the available input types from the metamask extension.
5
+ * https://github.com/MetaMask/metamask-extension/develop/ui/components/component-library/input/input.constants.js
6
+ */
7
+ export declare enum InputType {
8
+ Text = "text",
9
+ Number = "number",
10
+ Password = "password"
11
+ }
12
+ export declare const InputStruct: import("superstruct").Struct<{
13
+ type: NodeType.Input;
14
+ name: string;
15
+ value?: string | undefined;
16
+ label?: string | undefined;
17
+ inputType?: "number" | "text" | "password" | undefined;
18
+ placeholder?: string | undefined;
19
+ }, {
20
+ type: import("superstruct").Struct<NodeType.Input, NodeType.Input>;
21
+ value: import("superstruct").Struct<string | undefined, null>;
22
+ name: import("superstruct").Struct<string, null>;
23
+ inputType: import("superstruct").Struct<"number" | "text" | "password" | undefined, null>;
24
+ placeholder: import("superstruct").Struct<string | undefined, null>;
25
+ label: import("superstruct").Struct<string | undefined, null>;
26
+ }>;
27
+ /**
28
+ * An input node, that renders an input.
29
+ *
30
+ * @property type - The type of the node, must be the string 'input'.
31
+ * @property name - The name for the input.
32
+ * @property value - The value of the input.
33
+ * @property inputType - An optional type, either `text`, `password` or `number`.
34
+ * @property placeholder - An optional input placeholder.
35
+ * @property label - An optional input label.
36
+ */
37
+ export declare type Input = Infer<typeof InputStruct>;
38
+ /**
39
+ * Create a {@link Input} node.
40
+ *
41
+ * @param args - The node arguments. This can either be a name and an optional variant, value and placeholder or an object
42
+ * with the properties: `inputType`, `value`, `variant`, `placeholder` and `name`.
43
+ * @param args.name - The name for the input.
44
+ * @param args.value - The value of the input.
45
+ * @param args.inputType - An optional type, either `text`, `password` or `number`.
46
+ * @param args.placeholder - An optional input placeholder.
47
+ * @param args.label - An optional input label.
48
+ * @returns The input node as an object.
49
+ * @example
50
+ * const node = input('myInput');
51
+ * const node = input('myInput', InputType.Text, 'my placeholder', 'myValue', 'myLabel');
52
+ * const node = input({ name: 'myInput' });
53
+ * const node = input({name: 'myInput', value: 'myValue', inputType: InputType.Password, placeholder: 'placeholder'})
54
+ */
55
+ export declare const input: (...args: (string | undefined)[] | [Omit<{
56
+ type: NodeType.Input;
57
+ name: string;
58
+ value?: string | undefined;
59
+ label?: string | undefined;
60
+ inputType?: "number" | "text" | "password" | undefined;
61
+ placeholder?: string | undefined;
62
+ }, "type">]) => {
63
+ type: NodeType.Input;
64
+ name: string;
65
+ value?: string | undefined;
66
+ label?: string | undefined;
67
+ inputType?: "number" | "text" | "password" | undefined;
68
+ placeholder?: string | undefined;
69
+ };
@@ -41,6 +41,36 @@ export declare const ParentStruct: Struct<{
41
41
  type: NodeType.Row;
42
42
  label: string;
43
43
  variant?: "default" | "warning" | "critical" | undefined;
44
+ } | {
45
+ type: NodeType.Input;
46
+ name: string;
47
+ value?: string | undefined;
48
+ label?: string | undefined;
49
+ inputType?: "number" | "text" | "password" | undefined;
50
+ placeholder?: string | undefined;
51
+ } | {
52
+ value: string;
53
+ type: NodeType.Button;
54
+ name?: string | undefined;
55
+ variant?: "primary" | "secondary" | undefined;
56
+ buttonType?: "button" | "submit" | undefined;
57
+ } | {
58
+ type: NodeType.Form;
59
+ name: string;
60
+ children: ({
61
+ type: NodeType.Input;
62
+ name: string;
63
+ value?: string | undefined;
64
+ label?: string | undefined;
65
+ inputType?: "number" | "text" | "password" | undefined;
66
+ placeholder?: string | undefined;
67
+ } | {
68
+ value: string;
69
+ type: NodeType.Button;
70
+ name?: string | undefined;
71
+ variant?: "primary" | "secondary" | undefined;
72
+ buttonType?: "button" | "submit" | undefined;
73
+ })[];
44
74
  })[];
45
75
  }, {
46
76
  children: Struct<({
@@ -79,6 +109,36 @@ export declare const ParentStruct: Struct<{
79
109
  type: NodeType.Row;
80
110
  label: string;
81
111
  variant?: "default" | "warning" | "critical" | undefined;
112
+ } | {
113
+ type: NodeType.Input;
114
+ name: string;
115
+ value?: string | undefined;
116
+ label?: string | undefined;
117
+ inputType?: "number" | "text" | "password" | undefined;
118
+ placeholder?: string | undefined;
119
+ } | {
120
+ value: string;
121
+ type: NodeType.Button;
122
+ name?: string | undefined;
123
+ variant?: "primary" | "secondary" | undefined;
124
+ buttonType?: "button" | "submit" | undefined;
125
+ } | {
126
+ type: NodeType.Form;
127
+ name: string;
128
+ children: ({
129
+ type: NodeType.Input;
130
+ name: string;
131
+ value?: string | undefined;
132
+ label?: string | undefined;
133
+ inputType?: "number" | "text" | "password" | undefined;
134
+ placeholder?: string | undefined;
135
+ } | {
136
+ value: string;
137
+ type: NodeType.Button;
138
+ name?: string | undefined;
139
+ variant?: "primary" | "secondary" | undefined;
140
+ buttonType?: "button" | "submit" | undefined;
141
+ })[];
82
142
  })[], Struct<{
83
143
  value: string;
84
144
  type: NodeType.Copyable;
@@ -115,6 +175,36 @@ export declare const ParentStruct: Struct<{
115
175
  type: NodeType.Row;
116
176
  label: string;
117
177
  variant?: "default" | "warning" | "critical" | undefined;
178
+ } | {
179
+ type: NodeType.Input;
180
+ name: string;
181
+ value?: string | undefined;
182
+ label?: string | undefined;
183
+ inputType?: "number" | "text" | "password" | undefined;
184
+ placeholder?: string | undefined;
185
+ } | {
186
+ value: string;
187
+ type: NodeType.Button;
188
+ name?: string | undefined;
189
+ variant?: "primary" | "secondary" | undefined;
190
+ buttonType?: "button" | "submit" | undefined;
191
+ } | {
192
+ type: NodeType.Form;
193
+ name: string;
194
+ children: ({
195
+ type: NodeType.Input;
196
+ name: string;
197
+ value?: string | undefined;
198
+ label?: string | undefined;
199
+ inputType?: "number" | "text" | "password" | undefined;
200
+ placeholder?: string | undefined;
201
+ } | {
202
+ value: string;
203
+ type: NodeType.Button;
204
+ name?: string | undefined;
205
+ variant?: "primary" | "secondary" | undefined;
206
+ buttonType?: "button" | "submit" | undefined;
207
+ })[];
118
208
  }, null>>;
119
209
  type: Struct<string, null>;
120
210
  }>;
@@ -199,6 +289,36 @@ export declare const panel: (...args: [Omit<Panel, "type">] | ({
199
289
  type: NodeType.Row;
200
290
  label: string;
201
291
  variant?: "default" | "warning" | "critical" | undefined;
292
+ } | {
293
+ type: NodeType.Input;
294
+ name: string;
295
+ value?: string | undefined;
296
+ label?: string | undefined;
297
+ inputType?: "number" | "text" | "password" | undefined;
298
+ placeholder?: string | undefined;
299
+ } | {
300
+ value: string;
301
+ type: NodeType.Button;
302
+ name?: string | undefined;
303
+ variant?: "primary" | "secondary" | undefined;
304
+ buttonType?: "button" | "submit" | undefined;
305
+ } | {
306
+ type: NodeType.Form;
307
+ name: string;
308
+ children: ({
309
+ type: NodeType.Input;
310
+ name: string;
311
+ value?: string | undefined;
312
+ label?: string | undefined;
313
+ inputType?: "number" | "text" | "password" | undefined;
314
+ placeholder?: string | undefined;
315
+ } | {
316
+ value: string;
317
+ type: NodeType.Button;
318
+ name?: string | undefined;
319
+ variant?: "primary" | "secondary" | undefined;
320
+ buttonType?: "button" | "submit" | undefined;
321
+ })[];
202
322
  })[][]) => Panel;
203
323
  export declare const ComponentStruct: Struct<{
204
324
  value: string;
@@ -236,6 +356,36 @@ export declare const ComponentStruct: Struct<{
236
356
  type: NodeType.Row;
237
357
  label: string;
238
358
  variant?: "default" | "warning" | "critical" | undefined;
359
+ } | {
360
+ type: NodeType.Input;
361
+ name: string;
362
+ value?: string | undefined;
363
+ label?: string | undefined;
364
+ inputType?: "number" | "text" | "password" | undefined;
365
+ placeholder?: string | undefined;
366
+ } | {
367
+ value: string;
368
+ type: NodeType.Button;
369
+ name?: string | undefined;
370
+ variant?: "primary" | "secondary" | undefined;
371
+ buttonType?: "button" | "submit" | undefined;
372
+ } | {
373
+ type: NodeType.Form;
374
+ name: string;
375
+ children: ({
376
+ type: NodeType.Input;
377
+ name: string;
378
+ value?: string | undefined;
379
+ label?: string | undefined;
380
+ inputType?: "number" | "text" | "password" | undefined;
381
+ placeholder?: string | undefined;
382
+ } | {
383
+ value: string;
384
+ type: NodeType.Button;
385
+ name?: string | undefined;
386
+ variant?: "primary" | "secondary" | undefined;
387
+ buttonType?: "button" | "submit" | undefined;
388
+ })[];
239
389
  }, null>;
240
390
  /**
241
391
  * All supported component types.
@@ -13,7 +13,10 @@ export declare enum NodeType {
13
13
  Text = "text",
14
14
  Image = "image",
15
15
  Row = "row",
16
- Address = "address"
16
+ Address = "address",
17
+ Button = "button",
18
+ Input = "input",
19
+ Form = "form"
17
20
  }
18
21
  /**
19
22
  * @internal
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask/snaps-sdk",
3
- "version": "1.3.2",
3
+ "version": "2.0.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/MetaMask/snaps.git"
@@ -38,12 +38,12 @@
38
38
  "@metamask/key-tree": "^9.0.0",
39
39
  "@metamask/providers": "^14.0.2",
40
40
  "@metamask/rpc-errors": "^6.1.0",
41
- "@metamask/utils": "^8.2.1",
41
+ "@metamask/utils": "^8.3.0",
42
42
  "is-svg": "^4.4.0",
43
43
  "superstruct": "^1.0.3"
44
44
  },
45
45
  "devDependencies": {
46
- "@lavamoat/allow-scripts": "^2.5.1",
46
+ "@lavamoat/allow-scripts": "^3.0.0",
47
47
  "@metamask/auto-changelog": "^3.4.4",
48
48
  "@metamask/eslint-config": "^12.1.0",
49
49
  "@metamask/eslint-config-jest": "^12.1.0",