@metamask/snaps-utils 7.4.1 → 7.6.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 (83) hide show
  1. package/CHANGELOG.md +24 -1
  2. package/dist/{chunk-CQRPSEH3.js → chunk-37VHIRUJ.js} +27 -4
  3. package/dist/chunk-37VHIRUJ.js.map +1 -0
  4. package/dist/{chunk-QNPXK3B3.mjs → chunk-4I22UHIU.mjs} +3 -3
  5. package/dist/{chunk-UCRFECSX.mjs → chunk-7SFY75BI.mjs} +4 -4
  6. package/dist/{chunk-3ZSYZX3I.js → chunk-7Y4VHT3E.js} +7 -7
  7. package/dist/{chunk-N4KSSDO5.js → chunk-AD2MMGAX.js} +14 -14
  8. package/dist/chunk-EVHDXNOC.mjs +35 -0
  9. package/dist/chunk-EVHDXNOC.mjs.map +1 -0
  10. package/dist/{chunk-RLA43SHY.mjs → chunk-G4LY5HGU.mjs} +4 -4
  11. package/dist/{chunk-L4DKSTK6.mjs → chunk-I4TRH6VO.mjs} +3 -2
  12. package/dist/{chunk-L4DKSTK6.mjs.map → chunk-I4TRH6VO.mjs.map} +1 -1
  13. package/dist/{chunk-DKDGMZFU.mjs → chunk-K2OTEZZZ.mjs} +27 -4
  14. package/dist/chunk-K2OTEZZZ.mjs.map +1 -0
  15. package/dist/{chunk-HVTYDKBO.js → chunk-K4B37F3L.js} +1 -1
  16. package/dist/chunk-K4B37F3L.js.map +1 -0
  17. package/dist/{chunk-IAHW6IFC.js → chunk-LNZLPDBB.js} +6 -6
  18. package/dist/{chunk-MJGSG5N2.mjs → chunk-NQMQIAWE.mjs} +6 -4
  19. package/dist/chunk-NQMQIAWE.mjs.map +1 -0
  20. package/dist/{chunk-ZUSNAQJU.js → chunk-OJM2SKJZ.js} +3 -2
  21. package/dist/chunk-OJM2SKJZ.js.map +1 -0
  22. package/dist/{chunk-MNCFAD4E.mjs → chunk-PTOH2SVI.mjs} +6 -2
  23. package/dist/chunk-PTOH2SVI.mjs.map +1 -0
  24. package/dist/chunk-QGCNQRIQ.js +35 -0
  25. package/dist/chunk-QGCNQRIQ.js.map +1 -0
  26. package/dist/{chunk-4YAWNZXM.js → chunk-RS5E2NXN.js} +6 -4
  27. package/dist/chunk-RS5E2NXN.js.map +1 -0
  28. package/dist/{chunk-M3KAAQFK.js → chunk-W7KRIAIX.js} +9 -5
  29. package/dist/chunk-W7KRIAIX.js.map +1 -0
  30. package/dist/{chunk-2M6G46W6.mjs → chunk-YCIPY3UP.mjs} +1 -1
  31. package/dist/chunk-YCIPY3UP.mjs.map +1 -0
  32. package/dist/handlers.js +2 -2
  33. package/dist/handlers.mjs +1 -1
  34. package/dist/icon.js +3 -2
  35. package/dist/icon.mjs +2 -1
  36. package/dist/index.executionenv.js +2 -2
  37. package/dist/index.executionenv.mjs +1 -1
  38. package/dist/index.js +9 -8
  39. package/dist/index.mjs +8 -7
  40. package/dist/json-rpc.js +2 -2
  41. package/dist/json-rpc.mjs +1 -1
  42. package/dist/manifest/index.js +4 -4
  43. package/dist/manifest/index.mjs +3 -3
  44. package/dist/manifest/manifest.js +7 -6
  45. package/dist/manifest/manifest.mjs +6 -5
  46. package/dist/manifest/node.js +7 -6
  47. package/dist/manifest/node.mjs +6 -5
  48. package/dist/manifest/validation.js +4 -4
  49. package/dist/manifest/validation.mjs +3 -3
  50. package/dist/node.js +10 -9
  51. package/dist/node.mjs +9 -8
  52. package/dist/npm.js +7 -6
  53. package/dist/npm.mjs +6 -5
  54. package/dist/snaps.js +2 -2
  55. package/dist/snaps.mjs +1 -1
  56. package/dist/svg.js +10 -0
  57. package/dist/svg.js.map +1 -0
  58. package/dist/svg.mjs +10 -0
  59. package/dist/svg.mjs.map +1 -0
  60. package/dist/tsconfig.build.tsbuildinfo +1 -1
  61. package/dist/types/handlers.d.ts +7 -0
  62. package/dist/types/snaps.d.ts +4 -0
  63. package/dist/types/svg.d.ts +14 -0
  64. package/dist/ui.js +2 -2
  65. package/dist/ui.mjs +1 -1
  66. package/dist/validation.js +7 -6
  67. package/dist/validation.mjs +6 -5
  68. package/package.json +5 -4
  69. package/dist/chunk-2M6G46W6.mjs.map +0 -1
  70. package/dist/chunk-4YAWNZXM.js.map +0 -1
  71. package/dist/chunk-CQRPSEH3.js.map +0 -1
  72. package/dist/chunk-DKDGMZFU.mjs.map +0 -1
  73. package/dist/chunk-HVTYDKBO.js.map +0 -1
  74. package/dist/chunk-M3KAAQFK.js.map +0 -1
  75. package/dist/chunk-MJGSG5N2.mjs.map +0 -1
  76. package/dist/chunk-MNCFAD4E.mjs.map +0 -1
  77. package/dist/chunk-ZUSNAQJU.js.map +0 -1
  78. /package/dist/{chunk-QNPXK3B3.mjs.map → chunk-4I22UHIU.mjs.map} +0 -0
  79. /package/dist/{chunk-UCRFECSX.mjs.map → chunk-7SFY75BI.mjs.map} +0 -0
  80. /package/dist/{chunk-3ZSYZX3I.js.map → chunk-7Y4VHT3E.js.map} +0 -0
  81. /package/dist/{chunk-N4KSSDO5.js.map → chunk-AD2MMGAX.js.map} +0 -0
  82. /package/dist/{chunk-RLA43SHY.mjs.map → chunk-G4LY5HGU.mjs.map} +0 -0
  83. /package/dist/{chunk-IAHW6IFC.js.map → chunk-LNZLPDBB.js.map} +0 -0
@@ -88,7 +88,9 @@ function getTextChildren(value) {
88
88
  children.push("\n\n");
89
89
  }
90
90
  const { tokens } = token;
91
- children.push(...tokens.flatMap(getTextChildFromToken));
91
+ children.push(
92
+ ...tokens.flatMap(getTextChildFromToken)
93
+ );
92
94
  }
93
95
  });
94
96
  return children.filter((child) => child !== null);
@@ -139,7 +141,7 @@ function getJsxElementFromComponent(legacyComponent) {
139
141
  case NodeType.Panel:
140
142
  return /* @__PURE__ */ jsx(Box, { children: getChildren(component.children.map(getElement)) });
141
143
  case NodeType.Row:
142
- return /* @__PURE__ */ jsx(Row, { label: component.label, children: getElement(component.value) });
144
+ return /* @__PURE__ */ jsx(Row, { label: component.label, variant: component.variant, children: getElement(component.value) });
143
145
  case NodeType.Spinner:
144
146
  return /* @__PURE__ */ jsx(Spinner, {});
145
147
  case NodeType.Text:
@@ -213,7 +215,7 @@ function hasChildren(element) {
213
215
  function getJsxChildren(element) {
214
216
  if (hasChildren(element)) {
215
217
  if (Array.isArray(element.props.children)) {
216
- return element.props.children.filter(Boolean);
218
+ return element.props.children.filter(Boolean).flat(Infinity);
217
219
  }
218
220
  if (element.props.children) {
219
221
  return [element.props.children];
@@ -259,4 +261,4 @@ export {
259
261
  getJsxChildren,
260
262
  walkJsx
261
263
  };
262
- //# sourceMappingURL=chunk-MJGSG5N2.mjs.map
264
+ //# sourceMappingURL=chunk-NQMQIAWE.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui.tsx"],"sourcesContent":["import type { Component } from '@metamask/snaps-sdk';\nimport { NodeType } from '@metamask/snaps-sdk';\nimport type {\n BoldChildren,\n ItalicChildren,\n JSXElement,\n LinkElement,\n MaybeArray,\n RowChildren,\n StandardFormattingElement,\n TextChildren,\n} from '@metamask/snaps-sdk/jsx';\nimport {\n Italic,\n Link,\n Bold,\n Row,\n Text,\n Field,\n Image,\n Input,\n Heading,\n Form,\n Divider,\n Spinner,\n Copyable,\n Box,\n Button,\n Address,\n} from '@metamask/snaps-sdk/jsx';\nimport {\n assert,\n assertExhaustive,\n AssertionError,\n hasProperty,\n isPlainObject,\n} from '@metamask/utils';\nimport { lexer, walkTokens } from 'marked';\nimport type { Token, Tokens } from 'marked';\n\nconst MAX_TEXT_LENGTH = 50_000; // 50 kb\nconst ALLOWED_PROTOCOLS = ['https:', 'mailto:'];\n\n/**\n * Get the button variant from a legacy button component variant.\n *\n * @param variant - The legacy button component variant.\n * @returns The button variant.\n */\nfunction getButtonVariant(variant?: 'primary' | 'secondary' | undefined) {\n switch (variant) {\n case 'primary':\n return 'primary';\n case 'secondary':\n return 'destructive';\n default:\n return undefined;\n }\n}\n\n/**\n * Get the children of a JSX element. If there is only one child, the child is\n * returned directly. Otherwise, the children are returned as an array.\n *\n * @param elements - The JSX elements.\n * @returns The child or children.\n */\nfunction getChildren<Type>(elements: Type[]) {\n if (elements.length === 1) {\n return elements[0];\n }\n\n return elements;\n}\n\n/**\n * Get the text of a link token.\n *\n * @param token - The link token.\n * @returns The text of the link token.\n */\nfunction getLinkText(token: Tokens.Link | Tokens.Generic) {\n if (token.tokens && token.tokens.length > 0) {\n return getChildren(token.tokens.flatMap(getTextChildFromToken));\n }\n\n return token.href;\n}\n\n/**\n * Get the text child from a list of markdown tokens.\n *\n * @param tokens - The markdown tokens.\n * @returns The text child.\n */\nfunction getTextChildFromTokens(tokens: Token[]) {\n return getChildren(tokens.flatMap(getTextChildFromToken));\n}\n\n/**\n * Get the text child from a markdown token.\n *\n * @param token - The markdown token.\n * @returns The text child.\n */\nfunction getTextChildFromToken(token: Token): TextChildren {\n switch (token.type) {\n case 'link': {\n return <Link href={token.href} children={getLinkText(token)} />;\n }\n\n case 'text':\n return token.text;\n\n case 'strong':\n return (\n <Bold>\n {\n getTextChildFromTokens(\n // Due to the way `marked` is typed, `token.tokens` can be\n // `undefined`, but it's a required field of `Tokens.Bold`, so we\n // can safely cast it to `Token[]`.\n token.tokens as Token[],\n ) as BoldChildren\n }\n </Bold>\n );\n\n case 'em':\n return (\n <Italic>\n {\n getTextChildFromTokens(\n // Due to the way `marked` is typed, `token.tokens` can be\n // `undefined`, but it's a required field of `Tokens.Bold`, so we\n // can safely cast it to `Token[]`.\n token.tokens as Token[],\n ) as ItalicChildren\n }\n </Italic>\n );\n\n default:\n return null;\n }\n}\n\n/**\n * Get all text children from a markdown string.\n *\n * @param value - The markdown string.\n * @returns The text children.\n */\nexport function getTextChildren(\n value: string,\n): (string | StandardFormattingElement | LinkElement)[] {\n const rootTokens = lexer(value, { gfm: false });\n const children: (string | StandardFormattingElement | LinkElement | null)[] =\n [];\n\n walkTokens(rootTokens, (token) => {\n if (token.type === 'paragraph') {\n if (children.length > 0) {\n children.push('\\n\\n');\n }\n\n const { tokens } = token as Tokens.Paragraph;\n // We do not need to consider nesting deeper than 1 level here and we can therefore cast.\n children.push(\n ...(tokens.flatMap(getTextChildFromToken) as (\n | string\n | StandardFormattingElement\n | LinkElement\n | null\n )[]),\n );\n }\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n return children.filter((child) => child !== null) as (\n | string\n | StandardFormattingElement\n | LinkElement\n )[];\n}\n\n/**\n * Validate the text size of a component. The text size is the total length of\n * all text in the component.\n *\n * @param component - The component to validate.\n * @throws An error if the text size exceeds the maximum allowed size.\n */\nfunction validateComponentTextSize(component: Component) {\n const textSize = getTotalTextLength(component);\n assert(\n textSize <= MAX_TEXT_LENGTH,\n `The text in a Snap UI may not be larger than ${\n MAX_TEXT_LENGTH / 1000\n } kB.`,\n );\n}\n\n/**\n * Get a JSX element from a legacy UI component. This supports all legacy UI\n * components, and maps them to their JSX equivalents where possible.\n *\n * This function validates the text size of the component, but does not validate\n * the total size. The total size of the component should be validated before\n * calling this function.\n *\n * @param legacyComponent - The legacy UI component.\n * @returns The JSX element.\n */\nexport function getJsxElementFromComponent(\n legacyComponent: Component,\n): JSXElement {\n validateComponentTextSize(legacyComponent);\n\n /**\n * Get the JSX element for a component. This function is recursive and will\n * call itself for child components.\n *\n * @param component - The component to convert to a JSX element.\n * @returns The JSX element.\n */\n function getElement(component: Component) {\n switch (component.type) {\n case NodeType.Address:\n return <Address address={component.value} />;\n\n case NodeType.Button:\n return (\n <Button\n name={component.name}\n variant={getButtonVariant(component.variant)}\n type={component.buttonType}\n >\n {component.value}\n </Button>\n );\n\n case NodeType.Copyable:\n return (\n <Copyable value={component.value} sensitive={component.sensitive} />\n );\n\n case NodeType.Divider:\n return <Divider />;\n\n case NodeType.Form:\n return (\n <Form name={component.name}>\n {getChildren(component.children.map(getElement))}\n </Form>\n );\n\n case NodeType.Heading:\n return <Heading children={component.value} />;\n\n case NodeType.Image:\n // `Image` supports `alt`, but the legacy `Image` component does not.\n return <Image src={component.value} />;\n\n case NodeType.Input:\n return (\n <Field label={component.label} error={component.error}>\n <Input\n name={component.name}\n type={component.inputType}\n value={component.value}\n placeholder={component.placeholder}\n />\n </Field>\n );\n\n case NodeType.Panel:\n // `Panel` is renamed to `Box` in JSX.\n return (\n <Box children={getChildren(component.children.map(getElement))} />\n );\n\n case NodeType.Row:\n return (\n <Row label={component.label} variant={component.variant}>\n {getElement(component.value) as RowChildren}\n </Row>\n );\n\n case NodeType.Spinner:\n return <Spinner />;\n\n case NodeType.Text:\n return <Text>{getChildren(getTextChildren(component.value))}</Text>;\n\n /* istanbul ignore next 2 */\n default:\n return assertExhaustive(component);\n }\n }\n\n return getElement(legacyComponent);\n}\n\n/**\n * Extract all links from a Markdown text string using the `marked` lexer.\n *\n * @param text - The markdown text string.\n * @returns A list of URLs linked to in the string.\n */\nfunction getMarkdownLinks(text: string) {\n const tokens = lexer(text, { gfm: false });\n const links: Tokens.Link[] = [];\n\n // Walk the lexed tokens and collect all link tokens\n walkTokens(tokens, (token) => {\n if (token.type === 'link') {\n links.push(token as Tokens.Link);\n }\n });\n\n return links;\n}\n\n/**\n * Validate a link against the phishing list.\n *\n * @param link - The link to validate.\n * @param isOnPhishingList - The function that checks the link against the\n * phishing list.\n */\nfunction validateLink(\n link: string,\n isOnPhishingList: (url: string) => boolean,\n) {\n try {\n const url = new URL(link);\n assert(\n ALLOWED_PROTOCOLS.includes(url.protocol),\n `Protocol must be one of: ${ALLOWED_PROTOCOLS.join(', ')}.`,\n );\n\n const hostname =\n url.protocol === 'mailto:' ? url.pathname.split('@')[1] : url.hostname;\n\n assert(!isOnPhishingList(hostname), 'The specified URL is not allowed.');\n } catch (error) {\n throw new Error(\n `Invalid URL: ${\n error instanceof AssertionError ? error.message : 'Unable to parse URL.'\n }`,\n );\n }\n}\n\n/**\n * Search for Markdown links in a string and checks them against the phishing\n * list.\n *\n * @param text - The text to verify.\n * @param isOnPhishingList - The function that checks the link against the\n * phishing list.\n * @throws If the text contains a link that is not allowed.\n */\nexport function validateTextLinks(\n text: string,\n isOnPhishingList: (url: string) => boolean,\n) {\n const links = getMarkdownLinks(text);\n\n for (const link of links) {\n validateLink(link.href, isOnPhishingList);\n }\n}\n\n/**\n * Walk a JSX tree and validate each {@link LinkElement} node against the\n * phishing list.\n *\n * @param node - The JSX node to walk.\n * @param isOnPhishingList - The function that checks the link against the\n * phishing list.\n */\nexport function validateJsxLinks(\n node: JSXElement,\n isOnPhishingList: (url: string) => boolean,\n) {\n walkJsx(node, (childNode) => {\n if (childNode.type !== 'Link') {\n return;\n }\n\n validateLink(childNode.props.href, isOnPhishingList);\n });\n}\n\n/**\n * Calculate the total length of all text in the component.\n *\n * @param component - A custom UI component.\n * @returns The total length of all text components in the component.\n */\nexport function getTotalTextLength(component: Component): number {\n const { type } = component;\n\n switch (type) {\n case NodeType.Panel:\n return component.children.reduce<number>(\n // This is a bug in TypeScript: https://github.com/microsoft/TypeScript/issues/48313\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n (sum, node) => sum + getTotalTextLength(node),\n 0,\n );\n\n case NodeType.Row:\n return getTotalTextLength(component.value);\n\n case NodeType.Text:\n return component.value.length;\n\n default:\n return 0;\n }\n}\n\n/**\n * Check if a JSX element has children.\n *\n * @param element - A JSX element.\n * @returns `true` if the element has children, `false` otherwise.\n */\nexport function hasChildren<Element extends JSXElement>(\n element: Element,\n): element is Element & {\n props: { children: MaybeArray<JSXElement | string> };\n} {\n return hasProperty(element.props, 'children');\n}\n\n/**\n * Get the children of a JSX element as an array. If the element has only one\n * child, the child is returned as an array.\n *\n * @param element - A JSX element.\n * @returns The children of the element.\n */\nexport function getJsxChildren(element: JSXElement): (JSXElement | string)[] {\n if (hasChildren(element)) {\n if (Array.isArray(element.props.children)) {\n // @ts-expect-error - Each member of the union type has signatures, but\n // none of those signatures are compatible with each other.\n return element.props.children.filter(Boolean).flat(Infinity);\n }\n\n if (element.props.children) {\n return [element.props.children];\n }\n }\n\n return [];\n}\n\n/**\n * Walk a JSX tree and call a callback on each node.\n *\n * @param node - The JSX node to walk.\n * @param callback - The callback to call on each node.\n * @returns The result of the callback, if any.\n */\nexport function walkJsx<Value>(\n node: JSXElement | JSXElement[],\n callback: (node: JSXElement) => Value | undefined,\n): Value | undefined {\n if (Array.isArray(node)) {\n for (const child of node) {\n const childResult = walkJsx(child as JSXElement, callback);\n if (childResult !== undefined) {\n return childResult;\n }\n }\n\n return undefined;\n }\n\n const result = callback(node);\n if (result !== undefined) {\n return result;\n }\n\n if (\n hasProperty(node, 'props') &&\n isPlainObject(node.props) &&\n hasProperty(node.props, 'children')\n ) {\n const children = getJsxChildren(node);\n for (const child of children) {\n if (isPlainObject(child)) {\n const childResult = walkJsx(child, callback);\n if (childResult !== undefined) {\n return childResult;\n }\n }\n }\n }\n\n return undefined;\n}\n"],"mappings":"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","names":[]}
@@ -121,7 +121,8 @@ var AddressResolutionStruct = _superstruct.object.call(void 0, {
121
121
  });
122
122
  var DomainResolutionStruct = _superstruct.object.call(void 0, {
123
123
  protocol: _superstruct.string.call(void 0, ),
124
- resolvedAddress: _superstruct.string.call(void 0, )
124
+ resolvedAddress: _superstruct.string.call(void 0, ),
125
+ domainName: _superstruct.string.call(void 0, )
125
126
  });
126
127
  var AddressResolutionResponseStruct = _superstruct.object.call(void 0, {
127
128
  resolvedDomains: _superstruct.size.call(void 0, _superstruct.array.call(void 0, AddressResolutionStruct), 1, Infinity)
@@ -149,4 +150,4 @@ var OnNameLookupResponseStruct = _superstruct.nullable.call(void 0,
149
150
 
150
151
 
151
152
  exports.SNAP_EXPORTS = SNAP_EXPORTS; exports.OnTransactionSeverityResponseStruct = OnTransactionSeverityResponseStruct; exports.OnTransactionResponseWithIdStruct = OnTransactionResponseWithIdStruct; exports.OnTransactionResponseWithContentStruct = OnTransactionResponseWithContentStruct; exports.OnTransactionResponseStruct = OnTransactionResponseStruct; exports.OnSignatureResponseStruct = OnSignatureResponseStruct; exports.OnHomePageResponseWithContentStruct = OnHomePageResponseWithContentStruct; exports.OnHomePageResponseWithIdStruct = OnHomePageResponseWithIdStruct; exports.OnHomePageResponseStruct = OnHomePageResponseStruct; exports.AddressResolutionStruct = AddressResolutionStruct; exports.DomainResolutionStruct = DomainResolutionStruct; exports.AddressResolutionResponseStruct = AddressResolutionResponseStruct; exports.DomainResolutionResponseStruct = DomainResolutionResponseStruct; exports.OnNameLookupResponseStruct = OnNameLookupResponseStruct;
152
- //# sourceMappingURL=chunk-ZUSNAQJU.js.map
153
+ //# sourceMappingURL=chunk-OJM2SKJZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/handlers.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n OnCronjobHandler,\n OnHomePageHandler,\n OnInstallHandler,\n OnKeyringRequestHandler,\n OnNameLookupHandler,\n OnRpcRequestHandler,\n OnSignatureHandler,\n OnTransactionHandler,\n OnUpdateHandler,\n OnUserInputHandler,\n} from '@metamask/snaps-sdk';\nimport { ComponentOrElementStruct, SeverityLevel } from '@metamask/snaps-sdk';\nimport {\n assign,\n literal,\n nullable,\n object,\n optional,\n string,\n array,\n size,\n union,\n} from 'superstruct';\n\nimport type { SnapHandler } from './handler-types';\nimport { HandlerType } from './handler-types';\n\nexport type SnapRpcHookArgs = {\n origin: string;\n handler: HandlerType;\n request: Record<string, unknown>;\n};\n\nexport const SNAP_EXPORTS = {\n [HandlerType.OnRpcRequest]: {\n type: HandlerType.OnRpcRequest,\n required: true,\n validator: (snapExport: unknown): snapExport is OnRpcRequestHandler => {\n return typeof snapExport === 'function';\n },\n },\n [HandlerType.OnTransaction]: {\n type: HandlerType.OnTransaction,\n required: true,\n validator: (snapExport: unknown): snapExport is OnTransactionHandler => {\n return typeof snapExport === 'function';\n },\n },\n [HandlerType.OnCronjob]: {\n type: HandlerType.OnCronjob,\n required: true,\n validator: (snapExport: unknown): snapExport is OnCronjobHandler => {\n return typeof snapExport === 'function';\n },\n },\n [HandlerType.OnNameLookup]: {\n type: HandlerType.OnNameLookup,\n required: true,\n validator: (snapExport: unknown): snapExport is OnNameLookupHandler => {\n return typeof snapExport === 'function';\n },\n },\n [HandlerType.OnInstall]: {\n type: HandlerType.OnInstall,\n required: false,\n validator: (snapExport: unknown): snapExport is OnInstallHandler => {\n return typeof snapExport === 'function';\n },\n },\n [HandlerType.OnUpdate]: {\n type: HandlerType.OnUpdate,\n required: false,\n validator: (snapExport: unknown): snapExport is OnUpdateHandler => {\n return typeof snapExport === 'function';\n },\n },\n [HandlerType.OnKeyringRequest]: {\n type: HandlerType.OnKeyringRequest,\n required: true,\n validator: (snapExport: unknown): snapExport is OnKeyringRequestHandler => {\n return typeof snapExport === 'function';\n },\n },\n [HandlerType.OnHomePage]: {\n type: HandlerType.OnHomePage,\n required: true,\n validator: (snapExport: unknown): snapExport is OnHomePageHandler => {\n return typeof snapExport === 'function';\n },\n },\n [HandlerType.OnSignature]: {\n type: HandlerType.OnSignature,\n required: true,\n validator: (snapExport: unknown): snapExport is OnSignatureHandler => {\n return typeof snapExport === 'function';\n },\n },\n [HandlerType.OnUserInput]: {\n type: HandlerType.OnUserInput,\n required: false,\n validator: (snapExport: unknown): snapExport is OnUserInputHandler => {\n return typeof snapExport === 'function';\n },\n },\n} as const;\n\nexport const OnTransactionSeverityResponseStruct = object({\n severity: optional(literal(SeverityLevel.Critical)),\n});\n\nexport const OnTransactionResponseWithIdStruct = assign(\n OnTransactionSeverityResponseStruct,\n object({\n id: string(),\n }),\n);\n\nexport const OnTransactionResponseWithContentStruct = assign(\n OnTransactionSeverityResponseStruct,\n object({\n content: ComponentOrElementStruct,\n }),\n);\n\nexport const OnTransactionResponseStruct = nullable(\n union([\n OnTransactionResponseWithContentStruct,\n OnTransactionResponseWithIdStruct,\n ]),\n);\n\nexport const OnSignatureResponseStruct = OnTransactionResponseStruct;\n\nexport const OnHomePageResponseWithContentStruct = object({\n content: ComponentOrElementStruct,\n});\n\nexport const OnHomePageResponseWithIdStruct = object({\n id: string(),\n});\n\nexport const OnHomePageResponseStruct = union([\n OnHomePageResponseWithContentStruct,\n OnHomePageResponseWithIdStruct,\n]);\n\nexport const AddressResolutionStruct = object({\n protocol: string(),\n resolvedDomain: string(),\n});\n\nexport const DomainResolutionStruct = object({\n protocol: string(),\n resolvedAddress: string(),\n domainName: string(),\n});\n\nexport const AddressResolutionResponseStruct = object({\n resolvedDomains: size(array(AddressResolutionStruct), 1, Infinity),\n});\n\nexport const DomainResolutionResponseStruct = object({\n resolvedAddresses: size(array(DomainResolutionStruct), 1, Infinity),\n});\n\nexport const OnNameLookupResponseStruct = nullable(\n union([AddressResolutionResponseStruct, DomainResolutionResponseStruct]),\n);\n\n/**\n * Utility type for getting the handler function type from a handler type.\n */\nexport type HandlerFunction<Type extends SnapHandler> =\n Type['validator'] extends (snapExport: unknown) => snapExport is infer Handler\n ? Handler\n : never;\n\n/**\n * All the function-based handlers that a snap can implement.\n */\nexport type SnapFunctionExports = {\n [Key in keyof typeof SNAP_EXPORTS]?: HandlerFunction<\n (typeof SNAP_EXPORTS)[Key]\n >;\n};\n\n/**\n * All handlers that a snap can implement.\n */\nexport type SnapExports = SnapFunctionExports;\n"]}
@@ -1,5 +1,9 @@
1
+ import {
2
+ isSvg,
3
+ parseSvg
4
+ } from "./chunk-EVHDXNOC.mjs";
5
+
1
6
  // src/icon.ts
2
- import { isSvg, parseSvg } from "@metamask/snaps-sdk";
3
7
  import { assert, stringToBytes } from "@metamask/utils";
4
8
  var SVG_MAX_BYTE_SIZE = 1e5;
5
9
  var SVG_MAX_BYTE_SIZE_TEXT = `${Math.floor(
@@ -48,4 +52,4 @@ export {
48
52
  assertIsSnapIcon,
49
53
  getSvgDimensions
50
54
  };
51
- //# sourceMappingURL=chunk-MNCFAD4E.mjs.map
55
+ //# sourceMappingURL=chunk-PTOH2SVI.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/icon.ts"],"sourcesContent":["import { assert, stringToBytes } from '@metamask/utils';\n\nimport { isSvg, parseSvg } from './svg';\nimport type { VirtualFile } from './virtual-file';\n\nexport const SVG_MAX_BYTE_SIZE = 100_000;\nexport const SVG_MAX_BYTE_SIZE_TEXT = `${Math.floor(\n SVG_MAX_BYTE_SIZE / 1000,\n)}kb`;\n\n/**\n * Assert that a virtual file containing a Snap icon is valid.\n *\n * @param icon - A virtual file containing a Snap icon.\n */\nexport function assertIsSnapIcon(icon: VirtualFile) {\n assert(icon.path.endsWith('.svg'), 'Expected snap icon to end in \".svg\".');\n\n const byteLength =\n typeof icon.value === 'string'\n ? stringToBytes(icon.value).byteLength\n : icon.value.byteLength;\n\n assert(\n byteLength <= SVG_MAX_BYTE_SIZE,\n `The specified SVG icon exceeds the maximum size of ${SVG_MAX_BYTE_SIZE_TEXT}.`,\n );\n\n assert(isSvg(icon.toString()), 'Snap icon must be a valid SVG.');\n}\n\n/**\n * Extract the dimensions of an image from an SVG string if possible.\n *\n * @param svg - An SVG string.\n * @returns The height and width of the SVG or null.\n */\nexport function getSvgDimensions(svg: string): {\n height: number;\n width: number;\n} | null {\n try {\n const parsed = parseSvg(svg);\n\n const height = parsed['@_height'];\n const width = parsed['@_width'];\n\n if (height && width) {\n return { height, width };\n }\n\n const viewBox = parsed['@_viewBox'];\n if (viewBox) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_minX, _minY, viewBoxWidth, viewBoxHeight] = viewBox.split(' ');\n\n if (viewBoxWidth && viewBoxHeight) {\n const parsedWidth = parseInt(viewBoxWidth, 10);\n const parsedHeight = parseInt(viewBoxHeight, 10);\n\n assert(Number.isInteger(parsedWidth) && parsedWidth > 0);\n assert(Number.isInteger(parsedHeight) && parsedHeight > 0);\n\n return {\n width: parsedWidth,\n height: parsedHeight,\n };\n }\n }\n } catch {\n throw new Error('Snap icon must be a valid SVG.');\n }\n\n return null;\n}\n"],"mappings":";;;;;;AAAA,SAAS,QAAQ,qBAAqB;AAK/B,IAAM,oBAAoB;AAC1B,IAAM,yBAAyB,GAAG,KAAK;AAAA,EAC5C,oBAAoB;AACtB,CAAC;AAOM,SAAS,iBAAiB,MAAmB;AAClD,SAAO,KAAK,KAAK,SAAS,MAAM,GAAG,sCAAsC;AAEzE,QAAM,aACJ,OAAO,KAAK,UAAU,WAClB,cAAc,KAAK,KAAK,EAAE,aAC1B,KAAK,MAAM;AAEjB;AAAA,IACE,cAAc;AAAA,IACd,sDAAsD,sBAAsB;AAAA,EAC9E;AAEA,SAAO,MAAM,KAAK,SAAS,CAAC,GAAG,gCAAgC;AACjE;AAQO,SAAS,iBAAiB,KAGxB;AACP,MAAI;AACF,UAAM,SAAS,SAAS,GAAG;AAE3B,UAAM,SAAS,OAAO,UAAU;AAChC,UAAM,QAAQ,OAAO,SAAS;AAE9B,QAAI,UAAU,OAAO;AACnB,aAAO,EAAE,QAAQ,MAAM;AAAA,IACzB;AAEA,UAAM,UAAU,OAAO,WAAW;AAClC,QAAI,SAAS;AAEX,YAAM,CAAC,OAAO,OAAO,cAAc,aAAa,IAAI,QAAQ,MAAM,GAAG;AAErE,UAAI,gBAAgB,eAAe;AACjC,cAAM,cAAc,SAAS,cAAc,EAAE;AAC7C,cAAM,eAAe,SAAS,eAAe,EAAE;AAE/C,eAAO,OAAO,UAAU,WAAW,KAAK,cAAc,CAAC;AACvD,eAAO,OAAO,UAAU,YAAY,KAAK,eAAe,CAAC;AAEzD,eAAO;AAAA,UACL,OAAO;AAAA,UACP,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,EACF,QAAQ;AACN,UAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,35 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/svg.ts
2
+ var _utils = require('@metamask/utils');
3
+ var _fastxmlparser = require('fast-xml-parser');
4
+ function parseSvg(svg) {
5
+ try {
6
+ const trimmed = svg.trim();
7
+ _utils.assert.call(void 0, trimmed.length > 0);
8
+ const parser = new (0, _fastxmlparser.XMLParser)({
9
+ ignoreAttributes: false,
10
+ parseAttributeValue: true
11
+ });
12
+ const parsed = parser.parse(trimmed, true);
13
+ _utils.assert.call(void 0, _utils.hasProperty.call(void 0, parsed, "svg"));
14
+ if (!_utils.isObject.call(void 0, parsed.svg)) {
15
+ return {};
16
+ }
17
+ return parsed.svg;
18
+ } catch {
19
+ throw new Error("Snap icon must be a valid SVG.");
20
+ }
21
+ }
22
+ function isSvg(svg) {
23
+ try {
24
+ parseSvg(svg);
25
+ return true;
26
+ } catch {
27
+ return false;
28
+ }
29
+ }
30
+
31
+
32
+
33
+
34
+ exports.parseSvg = parseSvg; exports.isSvg = isSvg;
35
+ //# sourceMappingURL=chunk-QGCNQRIQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/svg.ts"],"names":[],"mappings":";AAAA,SAAS,QAAQ,aAAa,gBAAgB;AAC9C,SAAS,iBAAiB;AAQnB,SAAS,SAAS,KAAa;AACpC,MAAI;AACF,UAAM,UAAU,IAAI,KAAK;AAEzB,WAAO,QAAQ,SAAS,CAAC;AAEzB,UAAM,SAAS,IAAI,UAAU;AAAA,MAC3B,kBAAkB;AAAA,MAClB,qBAAqB;AAAA,IACvB,CAAC;AACD,UAAM,SAAS,OAAO,MAAM,SAAS,IAAI;AAEzC,WAAO,YAAY,QAAQ,KAAK,CAAC;AAGjC,QAAI,CAAC,SAAS,OAAO,GAAG,GAAG;AACzB,aAAO,CAAC;AAAA,IACV;AAEA,WAAO,OAAO;AAAA,EAChB,QAAQ;AACN,UAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AACF;AAQO,SAAS,MAAM,KAAa;AACjC,MAAI;AACF,aAAS,GAAG;AACZ,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF","sourcesContent":["import { assert, hasProperty, isObject } from '@metamask/utils';\nimport { XMLParser } from 'fast-xml-parser';\n\n/**\n * Parse and validate a string as an SVG.\n *\n * @param svg - An SVG string.\n * @returns The SVG, its attributes and children in an object format.\n */\nexport function parseSvg(svg: string) {\n try {\n const trimmed = svg.trim();\n\n assert(trimmed.length > 0);\n\n const parser = new XMLParser({\n ignoreAttributes: false,\n parseAttributeValue: true,\n });\n const parsed = parser.parse(trimmed, true);\n\n assert(hasProperty(parsed, 'svg'));\n\n // Empty SVGs are not returned as objects\n if (!isObject(parsed.svg)) {\n return {};\n }\n\n return parsed.svg;\n } catch {\n throw new Error('Snap icon must be a valid SVG.');\n }\n}\n\n/**\n * Validate that a string is a valid SVG.\n *\n * @param svg - An SVG string.\n * @returns True if the SVG is valid otherwise false.\n */\nexport function isSvg(svg: string) {\n try {\n parseSvg(svg);\n return true;\n } catch {\n return false;\n }\n}\n"]}
@@ -88,7 +88,9 @@ function getTextChildren(value) {
88
88
  children.push("\n\n");
89
89
  }
90
90
  const { tokens } = token;
91
- children.push(...tokens.flatMap(getTextChildFromToken));
91
+ children.push(
92
+ ...tokens.flatMap(getTextChildFromToken)
93
+ );
92
94
  }
93
95
  });
94
96
  return children.filter((child) => child !== null);
@@ -139,7 +141,7 @@ function getJsxElementFromComponent(legacyComponent) {
139
141
  case _snapssdk.NodeType.Panel:
140
142
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsx.Box, { children: getChildren(component.children.map(getElement)) });
141
143
  case _snapssdk.NodeType.Row:
142
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsx.Row, { label: component.label, children: getElement(component.value) });
144
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsx.Row, { label: component.label, variant: component.variant, children: getElement(component.value) });
143
145
  case _snapssdk.NodeType.Spinner:
144
146
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsx.Spinner, {});
145
147
  case _snapssdk.NodeType.Text:
@@ -213,7 +215,7 @@ function hasChildren(element) {
213
215
  function getJsxChildren(element) {
214
216
  if (hasChildren(element)) {
215
217
  if (Array.isArray(element.props.children)) {
216
- return element.props.children.filter(Boolean);
218
+ return element.props.children.filter(Boolean).flat(Infinity);
217
219
  }
218
220
  if (element.props.children) {
219
221
  return [element.props.children];
@@ -259,4 +261,4 @@ function walkJsx(node, callback) {
259
261
 
260
262
 
261
263
  exports.getTextChildren = getTextChildren; exports.getJsxElementFromComponent = getJsxElementFromComponent; exports.validateTextLinks = validateTextLinks; exports.validateJsxLinks = validateJsxLinks; exports.getTotalTextLength = getTotalTextLength; exports.hasChildren = hasChildren; exports.getJsxChildren = getJsxChildren; exports.walkJsx = walkJsx;
262
- //# sourceMappingURL=chunk-4YAWNZXM.js.map
264
+ //# sourceMappingURL=chunk-RS5E2NXN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Component } from '@metamask/snaps-sdk';\nimport { NodeType } from '@metamask/snaps-sdk';\nimport type {\n BoldChildren,\n ItalicChildren,\n JSXElement,\n LinkElement,\n MaybeArray,\n RowChildren,\n StandardFormattingElement,\n TextChildren,\n} from '@metamask/snaps-sdk/jsx';\nimport {\n Italic,\n Link,\n Bold,\n Row,\n Text,\n Field,\n Image,\n Input,\n Heading,\n Form,\n Divider,\n Spinner,\n Copyable,\n Box,\n Button,\n Address,\n} from '@metamask/snaps-sdk/jsx';\nimport {\n assert,\n assertExhaustive,\n AssertionError,\n hasProperty,\n isPlainObject,\n} from '@metamask/utils';\nimport { lexer, walkTokens } from 'marked';\nimport type { Token, Tokens } from 'marked';\n\nconst MAX_TEXT_LENGTH = 50_000; // 50 kb\nconst ALLOWED_PROTOCOLS = ['https:', 'mailto:'];\n\n/**\n * Get the button variant from a legacy button component variant.\n *\n * @param variant - The legacy button component variant.\n * @returns The button variant.\n */\nfunction getButtonVariant(variant?: 'primary' | 'secondary' | undefined) {\n switch (variant) {\n case 'primary':\n return 'primary';\n case 'secondary':\n return 'destructive';\n default:\n return undefined;\n }\n}\n\n/**\n * Get the children of a JSX element. If there is only one child, the child is\n * returned directly. Otherwise, the children are returned as an array.\n *\n * @param elements - The JSX elements.\n * @returns The child or children.\n */\nfunction getChildren<Type>(elements: Type[]) {\n if (elements.length === 1) {\n return elements[0];\n }\n\n return elements;\n}\n\n/**\n * Get the text of a link token.\n *\n * @param token - The link token.\n * @returns The text of the link token.\n */\nfunction getLinkText(token: Tokens.Link | Tokens.Generic) {\n if (token.tokens && token.tokens.length > 0) {\n return getChildren(token.tokens.flatMap(getTextChildFromToken));\n }\n\n return token.href;\n}\n\n/**\n * Get the text child from a list of markdown tokens.\n *\n * @param tokens - The markdown tokens.\n * @returns The text child.\n */\nfunction getTextChildFromTokens(tokens: Token[]) {\n return getChildren(tokens.flatMap(getTextChildFromToken));\n}\n\n/**\n * Get the text child from a markdown token.\n *\n * @param token - The markdown token.\n * @returns The text child.\n */\nfunction getTextChildFromToken(token: Token): TextChildren {\n switch (token.type) {\n case 'link': {\n return <Link href={token.href} children={getLinkText(token)} />;\n }\n\n case 'text':\n return token.text;\n\n case 'strong':\n return (\n <Bold>\n {\n getTextChildFromTokens(\n // Due to the way `marked` is typed, `token.tokens` can be\n // `undefined`, but it's a required field of `Tokens.Bold`, so we\n // can safely cast it to `Token[]`.\n token.tokens as Token[],\n ) as BoldChildren\n }\n </Bold>\n );\n\n case 'em':\n return (\n <Italic>\n {\n getTextChildFromTokens(\n // Due to the way `marked` is typed, `token.tokens` can be\n // `undefined`, but it's a required field of `Tokens.Bold`, so we\n // can safely cast it to `Token[]`.\n token.tokens as Token[],\n ) as ItalicChildren\n }\n </Italic>\n );\n\n default:\n return null;\n }\n}\n\n/**\n * Get all text children from a markdown string.\n *\n * @param value - The markdown string.\n * @returns The text children.\n */\nexport function getTextChildren(\n value: string,\n): (string | StandardFormattingElement | LinkElement)[] {\n const rootTokens = lexer(value, { gfm: false });\n const children: (string | StandardFormattingElement | LinkElement | null)[] =\n [];\n\n walkTokens(rootTokens, (token) => {\n if (token.type === 'paragraph') {\n if (children.length > 0) {\n children.push('\\n\\n');\n }\n\n const { tokens } = token as Tokens.Paragraph;\n // We do not need to consider nesting deeper than 1 level here and we can therefore cast.\n children.push(\n ...(tokens.flatMap(getTextChildFromToken) as (\n | string\n | StandardFormattingElement\n | LinkElement\n | null\n )[]),\n );\n }\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n return children.filter((child) => child !== null) as (\n | string\n | StandardFormattingElement\n | LinkElement\n )[];\n}\n\n/**\n * Validate the text size of a component. The text size is the total length of\n * all text in the component.\n *\n * @param component - The component to validate.\n * @throws An error if the text size exceeds the maximum allowed size.\n */\nfunction validateComponentTextSize(component: Component) {\n const textSize = getTotalTextLength(component);\n assert(\n textSize <= MAX_TEXT_LENGTH,\n `The text in a Snap UI may not be larger than ${\n MAX_TEXT_LENGTH / 1000\n } kB.`,\n );\n}\n\n/**\n * Get a JSX element from a legacy UI component. This supports all legacy UI\n * components, and maps them to their JSX equivalents where possible.\n *\n * This function validates the text size of the component, but does not validate\n * the total size. The total size of the component should be validated before\n * calling this function.\n *\n * @param legacyComponent - The legacy UI component.\n * @returns The JSX element.\n */\nexport function getJsxElementFromComponent(\n legacyComponent: Component,\n): JSXElement {\n validateComponentTextSize(legacyComponent);\n\n /**\n * Get the JSX element for a component. This function is recursive and will\n * call itself for child components.\n *\n * @param component - The component to convert to a JSX element.\n * @returns The JSX element.\n */\n function getElement(component: Component) {\n switch (component.type) {\n case NodeType.Address:\n return <Address address={component.value} />;\n\n case NodeType.Button:\n return (\n <Button\n name={component.name}\n variant={getButtonVariant(component.variant)}\n type={component.buttonType}\n >\n {component.value}\n </Button>\n );\n\n case NodeType.Copyable:\n return (\n <Copyable value={component.value} sensitive={component.sensitive} />\n );\n\n case NodeType.Divider:\n return <Divider />;\n\n case NodeType.Form:\n return (\n <Form name={component.name}>\n {getChildren(component.children.map(getElement))}\n </Form>\n );\n\n case NodeType.Heading:\n return <Heading children={component.value} />;\n\n case NodeType.Image:\n // `Image` supports `alt`, but the legacy `Image` component does not.\n return <Image src={component.value} />;\n\n case NodeType.Input:\n return (\n <Field label={component.label} error={component.error}>\n <Input\n name={component.name}\n type={component.inputType}\n value={component.value}\n placeholder={component.placeholder}\n />\n </Field>\n );\n\n case NodeType.Panel:\n // `Panel` is renamed to `Box` in JSX.\n return (\n <Box children={getChildren(component.children.map(getElement))} />\n );\n\n case NodeType.Row:\n return (\n <Row label={component.label} variant={component.variant}>\n {getElement(component.value) as RowChildren}\n </Row>\n );\n\n case NodeType.Spinner:\n return <Spinner />;\n\n case NodeType.Text:\n return <Text>{getChildren(getTextChildren(component.value))}</Text>;\n\n /* istanbul ignore next 2 */\n default:\n return assertExhaustive(component);\n }\n }\n\n return getElement(legacyComponent);\n}\n\n/**\n * Extract all links from a Markdown text string using the `marked` lexer.\n *\n * @param text - The markdown text string.\n * @returns A list of URLs linked to in the string.\n */\nfunction getMarkdownLinks(text: string) {\n const tokens = lexer(text, { gfm: false });\n const links: Tokens.Link[] = [];\n\n // Walk the lexed tokens and collect all link tokens\n walkTokens(tokens, (token) => {\n if (token.type === 'link') {\n links.push(token as Tokens.Link);\n }\n });\n\n return links;\n}\n\n/**\n * Validate a link against the phishing list.\n *\n * @param link - The link to validate.\n * @param isOnPhishingList - The function that checks the link against the\n * phishing list.\n */\nfunction validateLink(\n link: string,\n isOnPhishingList: (url: string) => boolean,\n) {\n try {\n const url = new URL(link);\n assert(\n ALLOWED_PROTOCOLS.includes(url.protocol),\n `Protocol must be one of: ${ALLOWED_PROTOCOLS.join(', ')}.`,\n );\n\n const hostname =\n url.protocol === 'mailto:' ? url.pathname.split('@')[1] : url.hostname;\n\n assert(!isOnPhishingList(hostname), 'The specified URL is not allowed.');\n } catch (error) {\n throw new Error(\n `Invalid URL: ${\n error instanceof AssertionError ? error.message : 'Unable to parse URL.'\n }`,\n );\n }\n}\n\n/**\n * Search for Markdown links in a string and checks them against the phishing\n * list.\n *\n * @param text - The text to verify.\n * @param isOnPhishingList - The function that checks the link against the\n * phishing list.\n * @throws If the text contains a link that is not allowed.\n */\nexport function validateTextLinks(\n text: string,\n isOnPhishingList: (url: string) => boolean,\n) {\n const links = getMarkdownLinks(text);\n\n for (const link of links) {\n validateLink(link.href, isOnPhishingList);\n }\n}\n\n/**\n * Walk a JSX tree and validate each {@link LinkElement} node against the\n * phishing list.\n *\n * @param node - The JSX node to walk.\n * @param isOnPhishingList - The function that checks the link against the\n * phishing list.\n */\nexport function validateJsxLinks(\n node: JSXElement,\n isOnPhishingList: (url: string) => boolean,\n) {\n walkJsx(node, (childNode) => {\n if (childNode.type !== 'Link') {\n return;\n }\n\n validateLink(childNode.props.href, isOnPhishingList);\n });\n}\n\n/**\n * Calculate the total length of all text in the component.\n *\n * @param component - A custom UI component.\n * @returns The total length of all text components in the component.\n */\nexport function getTotalTextLength(component: Component): number {\n const { type } = component;\n\n switch (type) {\n case NodeType.Panel:\n return component.children.reduce<number>(\n // This is a bug in TypeScript: https://github.com/microsoft/TypeScript/issues/48313\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n (sum, node) => sum + getTotalTextLength(node),\n 0,\n );\n\n case NodeType.Row:\n return getTotalTextLength(component.value);\n\n case NodeType.Text:\n return component.value.length;\n\n default:\n return 0;\n }\n}\n\n/**\n * Check if a JSX element has children.\n *\n * @param element - A JSX element.\n * @returns `true` if the element has children, `false` otherwise.\n */\nexport function hasChildren<Element extends JSXElement>(\n element: Element,\n): element is Element & {\n props: { children: MaybeArray<JSXElement | string> };\n} {\n return hasProperty(element.props, 'children');\n}\n\n/**\n * Get the children of a JSX element as an array. If the element has only one\n * child, the child is returned as an array.\n *\n * @param element - A JSX element.\n * @returns The children of the element.\n */\nexport function getJsxChildren(element: JSXElement): (JSXElement | string)[] {\n if (hasChildren(element)) {\n if (Array.isArray(element.props.children)) {\n // @ts-expect-error - Each member of the union type has signatures, but\n // none of those signatures are compatible with each other.\n return element.props.children.filter(Boolean).flat(Infinity);\n }\n\n if (element.props.children) {\n return [element.props.children];\n }\n }\n\n return [];\n}\n\n/**\n * Walk a JSX tree and call a callback on each node.\n *\n * @param node - The JSX node to walk.\n * @param callback - The callback to call on each node.\n * @returns The result of the callback, if any.\n */\nexport function walkJsx<Value>(\n node: JSXElement | JSXElement[],\n callback: (node: JSXElement) => Value | undefined,\n): Value | undefined {\n if (Array.isArray(node)) {\n for (const child of node) {\n const childResult = walkJsx(child as JSXElement, callback);\n if (childResult !== undefined) {\n return childResult;\n }\n }\n\n return undefined;\n }\n\n const result = callback(node);\n if (result !== undefined) {\n return result;\n }\n\n if (\n hasProperty(node, 'props') &&\n isPlainObject(node.props) &&\n hasProperty(node.props, 'children')\n ) {\n const children = getJsxChildren(node);\n for (const child of children) {\n if (isPlainObject(child)) {\n const childResult = walkJsx(child, callback);\n if (childResult !== undefined) {\n return childResult;\n }\n }\n }\n }\n\n return undefined;\n}\n"]}
@@ -1,5 +1,9 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/icon.ts
2
- var _snapssdk = require('@metamask/snaps-sdk');
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+ var _chunkQGCNQRIQjs = require('./chunk-QGCNQRIQ.js');
5
+
6
+ // src/icon.ts
3
7
  var _utils = require('@metamask/utils');
4
8
  var SVG_MAX_BYTE_SIZE = 1e5;
5
9
  var SVG_MAX_BYTE_SIZE_TEXT = `${Math.floor(
@@ -12,11 +16,11 @@ function assertIsSnapIcon(icon) {
12
16
  byteLength <= SVG_MAX_BYTE_SIZE,
13
17
  `The specified SVG icon exceeds the maximum size of ${SVG_MAX_BYTE_SIZE_TEXT}.`
14
18
  );
15
- _utils.assert.call(void 0, _snapssdk.isSvg.call(void 0, icon.toString()), "Snap icon must be a valid SVG.");
19
+ _utils.assert.call(void 0, _chunkQGCNQRIQjs.isSvg.call(void 0, icon.toString()), "Snap icon must be a valid SVG.");
16
20
  }
17
21
  function getSvgDimensions(svg) {
18
22
  try {
19
- const parsed = _snapssdk.parseSvg.call(void 0, svg);
23
+ const parsed = _chunkQGCNQRIQjs.parseSvg.call(void 0, svg);
20
24
  const height = parsed["@_height"];
21
25
  const width = parsed["@_width"];
22
26
  if (height && width) {
@@ -48,4 +52,4 @@ function getSvgDimensions(svg) {
48
52
 
49
53
 
50
54
  exports.SVG_MAX_BYTE_SIZE = SVG_MAX_BYTE_SIZE; exports.SVG_MAX_BYTE_SIZE_TEXT = SVG_MAX_BYTE_SIZE_TEXT; exports.assertIsSnapIcon = assertIsSnapIcon; exports.getSvgDimensions = getSvgDimensions;
51
- //# sourceMappingURL=chunk-M3KAAQFK.js.map
55
+ //# sourceMappingURL=chunk-W7KRIAIX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/icon.ts"],"names":[],"mappings":";;;;;;AAAA,SAAS,QAAQ,qBAAqB;AAK/B,IAAM,oBAAoB;AAC1B,IAAM,yBAAyB,GAAG,KAAK;AAAA,EAC5C,oBAAoB;AACtB,CAAC;AAOM,SAAS,iBAAiB,MAAmB;AAClD,SAAO,KAAK,KAAK,SAAS,MAAM,GAAG,sCAAsC;AAEzE,QAAM,aACJ,OAAO,KAAK,UAAU,WAClB,cAAc,KAAK,KAAK,EAAE,aAC1B,KAAK,MAAM;AAEjB;AAAA,IACE,cAAc;AAAA,IACd,sDAAsD,sBAAsB;AAAA,EAC9E;AAEA,SAAO,MAAM,KAAK,SAAS,CAAC,GAAG,gCAAgC;AACjE;AAQO,SAAS,iBAAiB,KAGxB;AACP,MAAI;AACF,UAAM,SAAS,SAAS,GAAG;AAE3B,UAAM,SAAS,OAAO,UAAU;AAChC,UAAM,QAAQ,OAAO,SAAS;AAE9B,QAAI,UAAU,OAAO;AACnB,aAAO,EAAE,QAAQ,MAAM;AAAA,IACzB;AAEA,UAAM,UAAU,OAAO,WAAW;AAClC,QAAI,SAAS;AAEX,YAAM,CAAC,OAAO,OAAO,cAAc,aAAa,IAAI,QAAQ,MAAM,GAAG;AAErE,UAAI,gBAAgB,eAAe;AACjC,cAAM,cAAc,SAAS,cAAc,EAAE;AAC7C,cAAM,eAAe,SAAS,eAAe,EAAE;AAE/C,eAAO,OAAO,UAAU,WAAW,KAAK,cAAc,CAAC;AACvD,eAAO,OAAO,UAAU,YAAY,KAAK,eAAe,CAAC;AAEzD,eAAO;AAAA,UACL,OAAO;AAAA,UACP,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,EACF,QAAQ;AACN,UAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AAEA,SAAO;AACT","sourcesContent":["import { assert, stringToBytes } from '@metamask/utils';\n\nimport { isSvg, parseSvg } from './svg';\nimport type { VirtualFile } from './virtual-file';\n\nexport const SVG_MAX_BYTE_SIZE = 100_000;\nexport const SVG_MAX_BYTE_SIZE_TEXT = `${Math.floor(\n SVG_MAX_BYTE_SIZE / 1000,\n)}kb`;\n\n/**\n * Assert that a virtual file containing a Snap icon is valid.\n *\n * @param icon - A virtual file containing a Snap icon.\n */\nexport function assertIsSnapIcon(icon: VirtualFile) {\n assert(icon.path.endsWith('.svg'), 'Expected snap icon to end in \".svg\".');\n\n const byteLength =\n typeof icon.value === 'string'\n ? stringToBytes(icon.value).byteLength\n : icon.value.byteLength;\n\n assert(\n byteLength <= SVG_MAX_BYTE_SIZE,\n `The specified SVG icon exceeds the maximum size of ${SVG_MAX_BYTE_SIZE_TEXT}.`,\n );\n\n assert(isSvg(icon.toString()), 'Snap icon must be a valid SVG.');\n}\n\n/**\n * Extract the dimensions of an image from an SVG string if possible.\n *\n * @param svg - An SVG string.\n * @returns The height and width of the SVG or null.\n */\nexport function getSvgDimensions(svg: string): {\n height: number;\n width: number;\n} | null {\n try {\n const parsed = parseSvg(svg);\n\n const height = parsed['@_height'];\n const width = parsed['@_width'];\n\n if (height && width) {\n return { height, width };\n }\n\n const viewBox = parsed['@_viewBox'];\n if (viewBox) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_minX, _minY, viewBoxWidth, viewBoxHeight] = viewBox.split(' ');\n\n if (viewBoxWidth && viewBoxHeight) {\n const parsedWidth = parseInt(viewBoxWidth, 10);\n const parsedHeight = parseInt(viewBoxHeight, 10);\n\n assert(Number.isInteger(parsedWidth) && parsedWidth > 0);\n assert(Number.isInteger(parsedHeight) && parsedHeight > 0);\n\n return {\n width: parsedWidth,\n height: parsedHeight,\n };\n }\n }\n } catch {\n throw new Error('Snap icon must be a valid SVG.');\n }\n\n return null;\n}\n"]}
@@ -190,4 +190,4 @@ export {
190
190
  isSnapPermitted,
191
191
  verifyRequestedSnapPermissions
192
192
  };
193
- //# sourceMappingURL=chunk-2M6G46W6.mjs.map
193
+ //# sourceMappingURL=chunk-YCIPY3UP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/snaps.ts"],"sourcesContent":["import type {\n Caveat,\n SubjectPermissions,\n PermissionConstraint,\n} from '@metamask/permission-controller';\nimport type { BlockReason } from '@metamask/snaps-registry';\nimport type { SnapId, Snap as TruncatedSnap } from '@metamask/snaps-sdk';\nimport type { Json } from '@metamask/utils';\nimport { assert, isObject, assertStruct } from '@metamask/utils';\nimport { base64 } from '@scure/base';\nimport stableStringify from 'fast-json-stable-stringify';\nimport type { Struct } from 'superstruct';\nimport {\n empty,\n enums,\n intersection,\n literal,\n pattern,\n refine,\n string,\n union,\n validate,\n} from 'superstruct';\nimport validateNPMPackage from 'validate-npm-package-name';\n\nimport { SnapCaveatType } from './caveats';\nimport { checksumFiles } from './checksum';\nimport type { LocalizationFile } from './localization';\nimport type {\n InitialConnections,\n SnapManifest,\n SnapPermissions,\n} from './manifest/validation';\nimport type { FetchedSnapFiles, SnapsPermissionRequest } from './types';\nimport { SnapIdPrefixes, SnapValidationFailureReason, uri } from './types';\nimport type { VirtualFile } from './virtual-file';\n\n// This RegEx matches valid npm package names (with some exceptions) and space-\n// separated alphanumerical words, optionally with dashes and underscores.\n// The RegEx consists of two parts. The first part matches space-separated\n// words. It is based on the following Stackoverflow answer:\n// https://stackoverflow.com/a/34974982\n// The second part, after the pipe operator, is the same RegEx used for the\n// `name` field of the official package.json JSON Schema, except that we allow\n// mixed-case letters. It was originally copied from:\n// https://github.com/SchemaStore/schemastore/blob/81a16897c1dabfd98c72242a5fd62eb080ff76d8/src/schemas/json/package.json#L132-L138\nexport const PROPOSED_NAME_REGEX =\n /^(?:[A-Za-z0-9-_]+( [A-Za-z0-9-_]+)*)|(?:(?:@[A-Za-z0-9-*~][A-Za-z0-9-*._~]*\\/)?[A-Za-z0-9-~][A-Za-z0-9-._~]*)$/u;\n\nexport enum SnapStatus {\n Installing = 'installing',\n Updating = 'updating',\n Running = 'running',\n Stopped = 'stopped',\n Crashed = 'crashed',\n}\n\nexport enum SnapStatusEvents {\n Start = 'START',\n Stop = 'STOP',\n Crash = 'CRASH',\n Update = 'UPDATE',\n}\n\nexport type StatusContext = { snapId: SnapId };\nexport type StatusEvents = { type: SnapStatusEvents };\nexport type StatusStates = {\n value: SnapStatus;\n context: StatusContext;\n};\nexport type Status = StatusStates['value'];\n\nexport type VersionHistory = {\n origin: string;\n version: string;\n // Unix timestamp\n date: number;\n};\n\nexport type SnapAuxilaryFile = {\n path: string;\n // Value here should be stored as base64\n value: string;\n};\n\nexport type PersistedSnap = Snap;\n\n/**\n * A Snap as it exists in {@link SnapController} state.\n */\nexport type Snap = TruncatedSnap & {\n /**\n * The initial connections of the Snap, optional, requested on installation.\n */\n initialConnections?: InitialConnections;\n /**\n * The initial permissions of the Snap, which will be requested when it is\n * installed.\n */\n initialPermissions: SnapPermissions;\n\n /**\n * The source code of the Snap.\n */\n sourceCode: string;\n\n /**\n * The Snap's manifest file.\n */\n manifest: SnapManifest;\n\n /**\n * Information detailing why the snap is blocked.\n */\n blockInformation?: BlockReason;\n\n /**\n * The current status of the Snap, e.g. whether it's running or stopped.\n */\n status: Status;\n\n /**\n * The version history of the Snap.\n * Can be used to derive when the Snap was installed, when it was updated to a certain version and who requested the change.\n */\n versionHistory: VersionHistory[];\n\n /**\n * Static auxiliary files that can be loaded at runtime.\n */\n auxiliaryFiles?: SnapAuxilaryFile[];\n\n /**\n * Localization files which are used to translate the manifest.\n */\n localizationFiles?: LocalizationFile[];\n\n /**\n * Flag to signal whether this snap was preinstalled or not.\n *\n * A lack of specifying this option will be deemed as not preinstalled.\n */\n preinstalled?: boolean;\n\n /**\n * Flag to signal whether this snap is removable or not.\n *\n * A lack of specifying this option will be deemed as removable.\n */\n removable?: boolean;\n\n /**\n * Flag to signal whether this snap should be hidden from the user or not.\n */\n hidden?: boolean;\n};\n\nexport type TruncatedSnapFields =\n | 'id'\n | 'initialPermissions'\n | 'version'\n | 'enabled'\n | 'blocked';\n\n/**\n * An error indicating that a Snap validation failure is programmatically\n * fixable during development.\n */\nexport class ProgrammaticallyFixableSnapError extends Error {\n reason: SnapValidationFailureReason;\n\n constructor(message: string, reason: SnapValidationFailureReason) {\n super(message);\n this.reason = reason;\n }\n}\n\n/**\n * Gets a checksummable manifest by removing the shasum property and reserializing the JSON using a deterministic algorithm.\n *\n * @param manifest - The manifest itself.\n * @returns A virtual file containing the checksummable manifest.\n */\nfunction getChecksummableManifest(\n manifest: VirtualFile<SnapManifest>,\n): VirtualFile {\n const manifestCopy = manifest.clone() as VirtualFile<any>;\n delete manifestCopy.result.source.shasum;\n\n // We use fast-json-stable-stringify to deterministically serialize the JSON\n // This is required before checksumming so we get reproducible checksums across platforms etc\n manifestCopy.value = stableStringify(manifestCopy.result);\n return manifestCopy;\n}\n\n/**\n * Calculates the Base64-encoded SHA-256 digest of all required Snap files.\n *\n * @param files - All required Snap files to be included in the checksum.\n * @returns The Base64-encoded SHA-256 digest of the source code.\n */\nexport async function getSnapChecksum(\n files: FetchedSnapFiles,\n): Promise<string> {\n const { manifest, sourceCode, svgIcon, auxiliaryFiles, localizationFiles } =\n files;\n\n const all = [\n getChecksummableManifest(manifest),\n sourceCode,\n svgIcon,\n ...auxiliaryFiles,\n ...localizationFiles,\n ].filter((file) => file !== undefined);\n\n return base64.encode(await checksumFiles(all as VirtualFile[]));\n}\n\n/**\n * Checks whether the `source.shasum` property of a Snap manifest matches the\n * shasum of the snap.\n *\n * @param files - All required Snap files to be included in the checksum.\n * @param errorMessage - The error message to throw if validation fails.\n */\nexport async function validateSnapShasum(\n files: FetchedSnapFiles,\n errorMessage = 'Invalid Snap manifest: manifest shasum does not match computed shasum.',\n): Promise<void> {\n if (files.manifest.result.source.shasum !== (await getSnapChecksum(files))) {\n throw new ProgrammaticallyFixableSnapError(\n errorMessage,\n SnapValidationFailureReason.ShasumMismatch,\n );\n }\n}\n\nexport const LOCALHOST_HOSTNAMES = ['localhost', '127.0.0.1', '[::1]'] as const;\n\n// Require snap ids to only consist of printable ASCII characters\nexport const BaseSnapIdStruct = pattern(string(), /^[\\x21-\\x7E]*$/u);\n\nconst LocalSnapIdSubUrlStruct = uri({\n protocol: enums(['http:', 'https:']),\n hostname: enums(LOCALHOST_HOSTNAMES),\n hash: empty(string()),\n search: empty(string()),\n});\n\nexport const LocalSnapIdStruct = refine(\n BaseSnapIdStruct,\n 'local Snap Id',\n (value) => {\n if (!value.startsWith(SnapIdPrefixes.local)) {\n return `Expected local snap ID, got \"${value}\".`;\n }\n\n const [error] = validate(\n value.slice(SnapIdPrefixes.local.length),\n LocalSnapIdSubUrlStruct,\n );\n return error ?? true;\n },\n);\nexport const NpmSnapIdStruct = intersection([\n BaseSnapIdStruct,\n uri({\n protocol: literal(SnapIdPrefixes.npm),\n pathname: refine(string(), 'package name', function* (value) {\n const normalized = value.startsWith('/') ? value.slice(1) : value;\n const { errors, validForNewPackages, warnings } =\n validateNPMPackage(normalized);\n if (!validForNewPackages) {\n if (errors === undefined) {\n assert(warnings !== undefined);\n yield* warnings;\n } else {\n yield* errors;\n }\n }\n return true;\n }),\n search: empty(string()),\n hash: empty(string()),\n }),\n]) as unknown as Struct<string, null>;\n\nexport const HttpSnapIdStruct = intersection([\n BaseSnapIdStruct,\n uri({\n protocol: enums(['http:', 'https:']),\n search: empty(string()),\n hash: empty(string()),\n }),\n]) as unknown as Struct<string, null>;\n\nexport const SnapIdStruct = union([NpmSnapIdStruct, LocalSnapIdStruct]);\n\n/**\n * Extracts the snap prefix from a snap ID.\n *\n * @param snapId - The snap ID to extract the prefix from.\n * @returns The snap prefix from a snap id, e.g. `npm:`.\n */\nexport function getSnapPrefix(snapId: string): SnapIdPrefixes {\n const prefix = Object.values(SnapIdPrefixes).find((possiblePrefix) =>\n snapId.startsWith(possiblePrefix),\n );\n if (prefix !== undefined) {\n return prefix;\n }\n throw new Error(`Invalid or no prefix found for \"${snapId}\"`);\n}\n\n/**\n * Strips snap prefix from a full snap ID.\n *\n * @param snapId - The snap ID to strip.\n * @returns The stripped snap ID.\n */\nexport function stripSnapPrefix(snapId: string): string {\n return snapId.replace(getSnapPrefix(snapId), '');\n}\n\n/**\n * Assert that the given value is a valid snap ID.\n *\n * @param value - The value to check.\n * @throws If the value is not a valid snap ID.\n */\nexport function assertIsValidSnapId(value: unknown): asserts value is SnapId {\n assertStruct(value, SnapIdStruct, 'Invalid snap ID');\n}\n\n/**\n * Typeguard to ensure a chainId follows the CAIP-2 standard.\n *\n * @param chainId - The chainId being tested.\n * @returns `true` if the value is a valid CAIP chain id, and `false` otherwise.\n */\nexport function isCaipChainId(chainId: unknown): chainId is string {\n return (\n typeof chainId === 'string' &&\n /^(?<namespace>[-a-z0-9]{3,8}):(?<reference>[-a-zA-Z0-9]{1,32})$/u.test(\n chainId,\n )\n );\n}\n\n/**\n * Utility function to check if an origin has permission (and caveat) for a particular snap.\n *\n * @param permissions - An origin's permissions object.\n * @param snapId - The id of the snap.\n * @returns A boolean based on if an origin has the specified snap.\n */\nexport function isSnapPermitted(\n permissions: SubjectPermissions<PermissionConstraint>,\n snapId: SnapId,\n) {\n return Boolean(\n (\n (\n (permissions?.wallet_snap?.caveats?.find(\n (caveat) => caveat.type === SnapCaveatType.SnapIds,\n ) ?? {}) as Caveat<string, Json>\n ).value as Record<string, unknown>\n )?.[snapId],\n );\n}\n\n/**\n * Checks whether the passed in requestedPermissions is a valid\n * permission request for a `wallet_snap` permission.\n *\n * @param requestedPermissions - The requested permissions.\n * @throws If the criteria is not met.\n */\nexport function verifyRequestedSnapPermissions(\n requestedPermissions: unknown,\n): asserts requestedPermissions is SnapsPermissionRequest {\n assert(\n isObject(requestedPermissions),\n 'Requested permissions must be an object.',\n );\n\n const { wallet_snap: walletSnapPermission } = requestedPermissions;\n\n assert(\n isObject(walletSnapPermission),\n 'wallet_snap is missing from the requested permissions.',\n );\n\n const { caveats } = walletSnapPermission;\n\n assert(\n Array.isArray(caveats) && caveats.length === 1,\n 'wallet_snap must have a caveat property with a single-item array value.',\n );\n\n const [caveat] = caveats;\n\n assert(\n isObject(caveat) &&\n caveat.type === SnapCaveatType.SnapIds &&\n isObject(caveat.value),\n `The requested permissions do not have a valid ${SnapCaveatType.SnapIds} caveat.`,\n );\n}\n\nexport type { Snap as TruncatedSnap } from '@metamask/snaps-sdk';\n"],"mappings":"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","names":["SnapStatus","SnapStatusEvents"]}
package/dist/handlers.js CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
 
15
15
 
16
- var _chunkZUSNAQJUjs = require('./chunk-ZUSNAQJU.js');
16
+ var _chunkOJM2SKJZjs = require('./chunk-OJM2SKJZ.js');
17
17
  require('./chunk-LEKZPKS2.js');
18
18
  require('./chunk-PHUTP7NB.js');
19
19
 
@@ -31,5 +31,5 @@ require('./chunk-PHUTP7NB.js');
31
31
 
32
32
 
33
33
 
34
- exports.AddressResolutionResponseStruct = _chunkZUSNAQJUjs.AddressResolutionResponseStruct; exports.AddressResolutionStruct = _chunkZUSNAQJUjs.AddressResolutionStruct; exports.DomainResolutionResponseStruct = _chunkZUSNAQJUjs.DomainResolutionResponseStruct; exports.DomainResolutionStruct = _chunkZUSNAQJUjs.DomainResolutionStruct; exports.OnHomePageResponseStruct = _chunkZUSNAQJUjs.OnHomePageResponseStruct; exports.OnHomePageResponseWithContentStruct = _chunkZUSNAQJUjs.OnHomePageResponseWithContentStruct; exports.OnHomePageResponseWithIdStruct = _chunkZUSNAQJUjs.OnHomePageResponseWithIdStruct; exports.OnNameLookupResponseStruct = _chunkZUSNAQJUjs.OnNameLookupResponseStruct; exports.OnSignatureResponseStruct = _chunkZUSNAQJUjs.OnSignatureResponseStruct; exports.OnTransactionResponseStruct = _chunkZUSNAQJUjs.OnTransactionResponseStruct; exports.OnTransactionResponseWithContentStruct = _chunkZUSNAQJUjs.OnTransactionResponseWithContentStruct; exports.OnTransactionResponseWithIdStruct = _chunkZUSNAQJUjs.OnTransactionResponseWithIdStruct; exports.OnTransactionSeverityResponseStruct = _chunkZUSNAQJUjs.OnTransactionSeverityResponseStruct; exports.SNAP_EXPORTS = _chunkZUSNAQJUjs.SNAP_EXPORTS;
34
+ exports.AddressResolutionResponseStruct = _chunkOJM2SKJZjs.AddressResolutionResponseStruct; exports.AddressResolutionStruct = _chunkOJM2SKJZjs.AddressResolutionStruct; exports.DomainResolutionResponseStruct = _chunkOJM2SKJZjs.DomainResolutionResponseStruct; exports.DomainResolutionStruct = _chunkOJM2SKJZjs.DomainResolutionStruct; exports.OnHomePageResponseStruct = _chunkOJM2SKJZjs.OnHomePageResponseStruct; exports.OnHomePageResponseWithContentStruct = _chunkOJM2SKJZjs.OnHomePageResponseWithContentStruct; exports.OnHomePageResponseWithIdStruct = _chunkOJM2SKJZjs.OnHomePageResponseWithIdStruct; exports.OnNameLookupResponseStruct = _chunkOJM2SKJZjs.OnNameLookupResponseStruct; exports.OnSignatureResponseStruct = _chunkOJM2SKJZjs.OnSignatureResponseStruct; exports.OnTransactionResponseStruct = _chunkOJM2SKJZjs.OnTransactionResponseStruct; exports.OnTransactionResponseWithContentStruct = _chunkOJM2SKJZjs.OnTransactionResponseWithContentStruct; exports.OnTransactionResponseWithIdStruct = _chunkOJM2SKJZjs.OnTransactionResponseWithIdStruct; exports.OnTransactionSeverityResponseStruct = _chunkOJM2SKJZjs.OnTransactionSeverityResponseStruct; exports.SNAP_EXPORTS = _chunkOJM2SKJZjs.SNAP_EXPORTS;
35
35
  //# sourceMappingURL=handlers.js.map
package/dist/handlers.mjs CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  OnTransactionResponseWithIdStruct,
14
14
  OnTransactionSeverityResponseStruct,
15
15
  SNAP_EXPORTS
16
- } from "./chunk-L4DKSTK6.mjs";
16
+ } from "./chunk-I4TRH6VO.mjs";
17
17
  import "./chunk-5R7UF7KM.mjs";
18
18
  import "./chunk-JMDSN227.mjs";
19
19
  export {
package/dist/icon.js CHANGED
@@ -3,12 +3,13 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkM3KAAQFKjs = require('./chunk-M3KAAQFK.js');
6
+ var _chunkW7KRIAIXjs = require('./chunk-W7KRIAIX.js');
7
+ require('./chunk-QGCNQRIQ.js');
7
8
  require('./chunk-PHUTP7NB.js');
8
9
 
9
10
 
10
11
 
11
12
 
12
13
 
13
- exports.SVG_MAX_BYTE_SIZE = _chunkM3KAAQFKjs.SVG_MAX_BYTE_SIZE; exports.SVG_MAX_BYTE_SIZE_TEXT = _chunkM3KAAQFKjs.SVG_MAX_BYTE_SIZE_TEXT; exports.assertIsSnapIcon = _chunkM3KAAQFKjs.assertIsSnapIcon; exports.getSvgDimensions = _chunkM3KAAQFKjs.getSvgDimensions;
14
+ exports.SVG_MAX_BYTE_SIZE = _chunkW7KRIAIXjs.SVG_MAX_BYTE_SIZE; exports.SVG_MAX_BYTE_SIZE_TEXT = _chunkW7KRIAIXjs.SVG_MAX_BYTE_SIZE_TEXT; exports.assertIsSnapIcon = _chunkW7KRIAIXjs.assertIsSnapIcon; exports.getSvgDimensions = _chunkW7KRIAIXjs.getSvgDimensions;
14
15
  //# sourceMappingURL=icon.js.map
package/dist/icon.mjs CHANGED
@@ -3,7 +3,8 @@ import {
3
3
  SVG_MAX_BYTE_SIZE_TEXT,
4
4
  assertIsSnapIcon,
5
5
  getSvgDimensions
6
- } from "./chunk-MNCFAD4E.mjs";
6
+ } from "./chunk-PTOH2SVI.mjs";
7
+ import "./chunk-EVHDXNOC.mjs";
7
8
  import "./chunk-JMDSN227.mjs";
8
9
  export {
9
10
  SVG_MAX_BYTE_SIZE,
@@ -53,7 +53,7 @@ var _chunkCMOSYNZRjs = require('./chunk-CMOSYNZR.js');
53
53
 
54
54
 
55
55
 
56
- var _chunkZUSNAQJUjs = require('./chunk-ZUSNAQJU.js');
56
+ var _chunkOJM2SKJZjs = require('./chunk-OJM2SKJZ.js');
57
57
 
58
58
 
59
59
  var _chunkPLBSSUVYjs = require('./chunk-PLBSSUVY.js');
@@ -130,5 +130,5 @@ require('./chunk-PHUTP7NB.js');
130
130
 
131
131
 
132
132
 
133
- exports.ACCOUNT_ADDRESS_REGEX = _chunk6LOYTBS3js.ACCOUNT_ADDRESS_REGEX; exports.ACCOUNT_ID_REGEX = _chunk6LOYTBS3js.ACCOUNT_ID_REGEX; exports.AccountAddressStruct = _chunk6LOYTBS3js.AccountAddressStruct; exports.AccountIdArrayStruct = _chunk6LOYTBS3js.AccountIdArrayStruct; exports.AccountIdStruct = _chunk6LOYTBS3js.AccountIdStruct; exports.AddressResolutionResponseStruct = _chunkZUSNAQJUjs.AddressResolutionResponseStruct; exports.AddressResolutionStruct = _chunkZUSNAQJUjs.AddressResolutionStruct; exports.CHAIN_ID_REGEX = _chunk6LOYTBS3js.CHAIN_ID_REGEX; exports.ChainIdStringStruct = _chunk6LOYTBS3js.ChainIdStringStruct; exports.ChainIdStruct = _chunk6LOYTBS3js.ChainIdStruct; exports.ChainStruct = _chunk6LOYTBS3js.ChainStruct; exports.DomainResolutionResponseStruct = _chunkZUSNAQJUjs.DomainResolutionResponseStruct; exports.DomainResolutionStruct = _chunkZUSNAQJUjs.DomainResolutionStruct; exports.HandlerType = _chunkLEKZPKS2js.HandlerType; exports.LimitedString = _chunk6LOYTBS3js.LimitedString; exports.NameStruct = _chunkCMOSYNZRjs.NameStruct; exports.NamespaceIdStruct = _chunk6LOYTBS3js.NamespaceIdStruct; exports.NamespaceStruct = _chunk6LOYTBS3js.NamespaceStruct; exports.NpmSnapFileNames = _chunkCMOSYNZRjs.NpmSnapFileNames; exports.NpmSnapPackageJsonStruct = _chunkCMOSYNZRjs.NpmSnapPackageJsonStruct; exports.OnHomePageResponseStruct = _chunkZUSNAQJUjs.OnHomePageResponseStruct; exports.OnHomePageResponseWithContentStruct = _chunkZUSNAQJUjs.OnHomePageResponseWithContentStruct; exports.OnHomePageResponseWithIdStruct = _chunkZUSNAQJUjs.OnHomePageResponseWithIdStruct; exports.OnNameLookupResponseStruct = _chunkZUSNAQJUjs.OnNameLookupResponseStruct; exports.OnSignatureResponseStruct = _chunkZUSNAQJUjs.OnSignatureResponseStruct; exports.OnTransactionResponseStruct = _chunkZUSNAQJUjs.OnTransactionResponseStruct; exports.OnTransactionResponseWithContentStruct = _chunkZUSNAQJUjs.OnTransactionResponseWithContentStruct; exports.OnTransactionResponseWithIdStruct = _chunkZUSNAQJUjs.OnTransactionResponseWithIdStruct; exports.OnTransactionSeverityResponseStruct = _chunkZUSNAQJUjs.OnTransactionSeverityResponseStruct; exports.SNAP_ERROR_WRAPPER_CODE = _chunkK6BCBPXFjs.SNAP_ERROR_WRAPPER_CODE; exports.SNAP_ERROR_WRAPPER_MESSAGE = _chunkK6BCBPXFjs.SNAP_ERROR_WRAPPER_MESSAGE; exports.SNAP_EXPORTS = _chunkZUSNAQJUjs.SNAP_EXPORTS; exports.SNAP_EXPORT_NAMES = _chunkLEKZPKS2js.SNAP_EXPORT_NAMES; exports.SNAP_STREAM_NAMES = _chunkCMOSYNZRjs.SNAP_STREAM_NAMES; exports.SnapIdPrefixes = _chunkCMOSYNZRjs.SnapIdPrefixes; exports.SnapValidationFailureReason = _chunkCMOSYNZRjs.SnapValidationFailureReason; exports.WALLET_SNAP_PERMISSION_KEY = _chunkCMOSYNZRjs.WALLET_SNAP_PERMISSION_KEY; exports.WrappedSnapError = _chunkK6BCBPXFjs.WrappedSnapError; exports.assertIsNpmSnapPackageJson = _chunkCMOSYNZRjs.assertIsNpmSnapPackageJson; exports.createWindow = _chunkPLBSSUVYjs.createWindow; exports.isAccountId = _chunk6LOYTBS3js.isAccountId; exports.isAccountIdArray = _chunk6LOYTBS3js.isAccountIdArray; exports.isChainId = _chunk6LOYTBS3js.isChainId; exports.isNamespace = _chunk6LOYTBS3js.isNamespace; exports.isNamespaceId = _chunk6LOYTBS3js.isNamespaceId; exports.isNpmSnapPackageJson = _chunkCMOSYNZRjs.isNpmSnapPackageJson; exports.isSerializedSnapError = _chunkK6BCBPXFjs.isSerializedSnapError; exports.isSnapError = _chunkK6BCBPXFjs.isSnapError; exports.isValidUrl = _chunkCMOSYNZRjs.isValidUrl; exports.isWrappedSnapError = _chunkK6BCBPXFjs.isWrappedSnapError; exports.logError = _chunkE3BDBG6Tjs.logError; exports.logInfo = _chunkE3BDBG6Tjs.logInfo; exports.logWarning = _chunkE3BDBG6Tjs.logWarning; exports.parseAccountId = _chunk6LOYTBS3js.parseAccountId; exports.parseChainId = _chunk6LOYTBS3js.parseChainId; exports.snapsLogger = _chunkE3BDBG6Tjs.snapsLogger; exports.unwrapError = _chunkK6BCBPXFjs.unwrapError; exports.uri = _chunkCMOSYNZRjs.uri;
133
+ exports.ACCOUNT_ADDRESS_REGEX = _chunk6LOYTBS3js.ACCOUNT_ADDRESS_REGEX; exports.ACCOUNT_ID_REGEX = _chunk6LOYTBS3js.ACCOUNT_ID_REGEX; exports.AccountAddressStruct = _chunk6LOYTBS3js.AccountAddressStruct; exports.AccountIdArrayStruct = _chunk6LOYTBS3js.AccountIdArrayStruct; exports.AccountIdStruct = _chunk6LOYTBS3js.AccountIdStruct; exports.AddressResolutionResponseStruct = _chunkOJM2SKJZjs.AddressResolutionResponseStruct; exports.AddressResolutionStruct = _chunkOJM2SKJZjs.AddressResolutionStruct; exports.CHAIN_ID_REGEX = _chunk6LOYTBS3js.CHAIN_ID_REGEX; exports.ChainIdStringStruct = _chunk6LOYTBS3js.ChainIdStringStruct; exports.ChainIdStruct = _chunk6LOYTBS3js.ChainIdStruct; exports.ChainStruct = _chunk6LOYTBS3js.ChainStruct; exports.DomainResolutionResponseStruct = _chunkOJM2SKJZjs.DomainResolutionResponseStruct; exports.DomainResolutionStruct = _chunkOJM2SKJZjs.DomainResolutionStruct; exports.HandlerType = _chunkLEKZPKS2js.HandlerType; exports.LimitedString = _chunk6LOYTBS3js.LimitedString; exports.NameStruct = _chunkCMOSYNZRjs.NameStruct; exports.NamespaceIdStruct = _chunk6LOYTBS3js.NamespaceIdStruct; exports.NamespaceStruct = _chunk6LOYTBS3js.NamespaceStruct; exports.NpmSnapFileNames = _chunkCMOSYNZRjs.NpmSnapFileNames; exports.NpmSnapPackageJsonStruct = _chunkCMOSYNZRjs.NpmSnapPackageJsonStruct; exports.OnHomePageResponseStruct = _chunkOJM2SKJZjs.OnHomePageResponseStruct; exports.OnHomePageResponseWithContentStruct = _chunkOJM2SKJZjs.OnHomePageResponseWithContentStruct; exports.OnHomePageResponseWithIdStruct = _chunkOJM2SKJZjs.OnHomePageResponseWithIdStruct; exports.OnNameLookupResponseStruct = _chunkOJM2SKJZjs.OnNameLookupResponseStruct; exports.OnSignatureResponseStruct = _chunkOJM2SKJZjs.OnSignatureResponseStruct; exports.OnTransactionResponseStruct = _chunkOJM2SKJZjs.OnTransactionResponseStruct; exports.OnTransactionResponseWithContentStruct = _chunkOJM2SKJZjs.OnTransactionResponseWithContentStruct; exports.OnTransactionResponseWithIdStruct = _chunkOJM2SKJZjs.OnTransactionResponseWithIdStruct; exports.OnTransactionSeverityResponseStruct = _chunkOJM2SKJZjs.OnTransactionSeverityResponseStruct; exports.SNAP_ERROR_WRAPPER_CODE = _chunkK6BCBPXFjs.SNAP_ERROR_WRAPPER_CODE; exports.SNAP_ERROR_WRAPPER_MESSAGE = _chunkK6BCBPXFjs.SNAP_ERROR_WRAPPER_MESSAGE; exports.SNAP_EXPORTS = _chunkOJM2SKJZjs.SNAP_EXPORTS; exports.SNAP_EXPORT_NAMES = _chunkLEKZPKS2js.SNAP_EXPORT_NAMES; exports.SNAP_STREAM_NAMES = _chunkCMOSYNZRjs.SNAP_STREAM_NAMES; exports.SnapIdPrefixes = _chunkCMOSYNZRjs.SnapIdPrefixes; exports.SnapValidationFailureReason = _chunkCMOSYNZRjs.SnapValidationFailureReason; exports.WALLET_SNAP_PERMISSION_KEY = _chunkCMOSYNZRjs.WALLET_SNAP_PERMISSION_KEY; exports.WrappedSnapError = _chunkK6BCBPXFjs.WrappedSnapError; exports.assertIsNpmSnapPackageJson = _chunkCMOSYNZRjs.assertIsNpmSnapPackageJson; exports.createWindow = _chunkPLBSSUVYjs.createWindow; exports.isAccountId = _chunk6LOYTBS3js.isAccountId; exports.isAccountIdArray = _chunk6LOYTBS3js.isAccountIdArray; exports.isChainId = _chunk6LOYTBS3js.isChainId; exports.isNamespace = _chunk6LOYTBS3js.isNamespace; exports.isNamespaceId = _chunk6LOYTBS3js.isNamespaceId; exports.isNpmSnapPackageJson = _chunkCMOSYNZRjs.isNpmSnapPackageJson; exports.isSerializedSnapError = _chunkK6BCBPXFjs.isSerializedSnapError; exports.isSnapError = _chunkK6BCBPXFjs.isSnapError; exports.isValidUrl = _chunkCMOSYNZRjs.isValidUrl; exports.isWrappedSnapError = _chunkK6BCBPXFjs.isWrappedSnapError; exports.logError = _chunkE3BDBG6Tjs.logError; exports.logInfo = _chunkE3BDBG6Tjs.logInfo; exports.logWarning = _chunkE3BDBG6Tjs.logWarning; exports.parseAccountId = _chunk6LOYTBS3js.parseAccountId; exports.parseChainId = _chunk6LOYTBS3js.parseChainId; exports.snapsLogger = _chunkE3BDBG6Tjs.snapsLogger; exports.unwrapError = _chunkK6BCBPXFjs.unwrapError; exports.uri = _chunkCMOSYNZRjs.uri;
134
134
  //# sourceMappingURL=index.executionenv.js.map
@@ -53,7 +53,7 @@ import {
53
53
  OnTransactionResponseWithIdStruct,
54
54
  OnTransactionSeverityResponseStruct,
55
55
  SNAP_EXPORTS
56
- } from "./chunk-L4DKSTK6.mjs";
56
+ } from "./chunk-I4TRH6VO.mjs";
57
57
  import {
58
58
  createWindow
59
59
  } from "./chunk-PJMEJVOB.mjs";
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
 
11
- var _chunk4YAWNZXMjs = require('./chunk-4YAWNZXM.js');
11
+ var _chunkRS5E2NXNjs = require('./chunk-RS5E2NXN.js');
12
12
 
13
13
 
14
14
 
@@ -28,7 +28,7 @@ var _chunkA6E325SZjs = require('./chunk-A6E325SZ.js');
28
28
  var _chunkIJX3CXOYjs = require('./chunk-IJX3CXOY.js');
29
29
 
30
30
 
31
- var _chunk3ZSYZX3Ijs = require('./chunk-3ZSYZX3I.js');
31
+ var _chunk7Y4VHT3Ejs = require('./chunk-7Y4VHT3E.js');
32
32
 
33
33
 
34
34
 
@@ -58,7 +58,7 @@ require('./chunk-4CMD46B2.js');
58
58
 
59
59
 
60
60
 
61
- var _chunkIAHW6IFCjs = require('./chunk-IAHW6IFC.js');
61
+ var _chunkLNZLPDBBjs = require('./chunk-LNZLPDBB.js');
62
62
 
63
63
 
64
64
  var _chunkAOGVLPQZjs = require('./chunk-AOGVLPQZ.js');
@@ -81,8 +81,9 @@ var _chunkAOGVLPQZjs = require('./chunk-AOGVLPQZ.js');
81
81
 
82
82
 
83
83
 
84
- var _chunkHVTYDKBOjs = require('./chunk-HVTYDKBO.js');
85
- require('./chunk-M3KAAQFK.js');
84
+ var _chunkK4B37F3Ljs = require('./chunk-K4B37F3L.js');
85
+ require('./chunk-W7KRIAIX.js');
86
+ require('./chunk-QGCNQRIQ.js');
86
87
 
87
88
 
88
89
 
@@ -138,7 +139,7 @@ var _chunkCMOSYNZRjs = require('./chunk-CMOSYNZR.js');
138
139
 
139
140
 
140
141
 
141
- var _chunkZUSNAQJUjs = require('./chunk-ZUSNAQJU.js');
142
+ var _chunkOJM2SKJZjs = require('./chunk-OJM2SKJZ.js');
142
143
 
143
144
 
144
145
  var _chunkPLBSSUVYjs = require('./chunk-PLBSSUVY.js');
@@ -149,7 +150,7 @@ var _chunkPLBSSUVYjs = require('./chunk-PLBSSUVY.js');
149
150
 
150
151
 
151
152
 
152
- var _chunkCQRPSEH3js = require('./chunk-CQRPSEH3.js');
153
+ var _chunk37VHIRUJjs = require('./chunk-37VHIRUJ.js');
153
154
 
154
155
 
155
156
 
@@ -390,5 +391,5 @@ require('./chunk-PHUTP7NB.js');
390
391
 
391
392
 
392
393
 
393
- exports.ACCOUNT_ADDRESS_REGEX = _chunk6LOYTBS3js.ACCOUNT_ADDRESS_REGEX; exports.ACCOUNT_ID_REGEX = _chunk6LOYTBS3js.ACCOUNT_ID_REGEX; exports.AccountAddressStruct = _chunk6LOYTBS3js.AccountAddressStruct; exports.AccountIdArrayStruct = _chunk6LOYTBS3js.AccountIdArrayStruct; exports.AccountIdStruct = _chunk6LOYTBS3js.AccountIdStruct; exports.AddressResolutionResponseStruct = _chunkZUSNAQJUjs.AddressResolutionResponseStruct; exports.AddressResolutionStruct = _chunkZUSNAQJUjs.AddressResolutionStruct; exports.BaseSnapIdStruct = _chunkHVTYDKBOjs.BaseSnapIdStruct; exports.Bip32EntropyStruct = _chunkIAHW6IFCjs.Bip32EntropyStruct; exports.Bip32PathStruct = _chunkIAHW6IFCjs.Bip32PathStruct; exports.CHAIN_ID_REGEX = _chunk6LOYTBS3js.CHAIN_ID_REGEX; exports.ChainIdStringStruct = _chunk6LOYTBS3js.ChainIdStringStruct; exports.ChainIdStruct = _chunk6LOYTBS3js.ChainIdStruct; exports.ChainIdsStruct = _chunkIAHW6IFCjs.ChainIdsStruct; exports.ChainStruct = _chunk6LOYTBS3js.ChainStruct; exports.CronExpressionStruct = _chunk2LBN5T56js.CronExpressionStruct; exports.CronjobRpcRequestStruct = _chunk2LBN5T56js.CronjobRpcRequestStruct; exports.CronjobSpecificationArrayStruct = _chunk2LBN5T56js.CronjobSpecificationArrayStruct; exports.CronjobSpecificationStruct = _chunk2LBN5T56js.CronjobSpecificationStruct; exports.CurveStruct = _chunkIAHW6IFCjs.CurveStruct; exports.DEFAULT_ENDOWMENTS = _chunkN722KRZWjs.DEFAULT_ENDOWMENTS; exports.DEFAULT_REQUESTED_SNAP_VERSION = _chunkIPOE62V4js.DEFAULT_REQUESTED_SNAP_VERSION; exports.DomainResolutionResponseStruct = _chunkZUSNAQJUjs.DomainResolutionResponseStruct; exports.DomainResolutionStruct = _chunkZUSNAQJUjs.DomainResolutionStruct; exports.EmptyObjectStruct = _chunkIAHW6IFCjs.EmptyObjectStruct; exports.FORBIDDEN_COIN_TYPES = _chunkIAHW6IFCjs.FORBIDDEN_COIN_TYPES; exports.HandlerCaveatsStruct = _chunkIAHW6IFCjs.HandlerCaveatsStruct; exports.HandlerType = _chunkLEKZPKS2js.HandlerType; exports.HttpSnapIdStruct = _chunkHVTYDKBOjs.HttpSnapIdStruct; exports.InitialConnectionsStruct = _chunkIAHW6IFCjs.InitialConnectionsStruct; exports.KeyringOriginsStruct = _chunkCQRPSEH3js.KeyringOriginsStruct; exports.LOCALHOST_HOSTNAMES = _chunkHVTYDKBOjs.LOCALHOST_HOSTNAMES; exports.LOCALIZABLE_FIELDS = _chunkR5DO7T2Djs.LOCALIZABLE_FIELDS; exports.LimitedString = _chunk6LOYTBS3js.LimitedString; exports.LocalSnapIdStruct = _chunkHVTYDKBOjs.LocalSnapIdStruct; exports.LocalizationFileStruct = _chunkR5DO7T2Djs.LocalizationFileStruct; exports.LookupMatchersStruct = _chunkIAHW6IFCjs.LookupMatchersStruct; exports.MAXIMUM_REQUEST_TIMEOUT = _chunkIAHW6IFCjs.MAXIMUM_REQUEST_TIMEOUT; exports.MINIMUM_REQUEST_TIMEOUT = _chunkIAHW6IFCjs.MINIMUM_REQUEST_TIMEOUT; exports.MaxRequestTimeStruct = _chunkIAHW6IFCjs.MaxRequestTimeStruct; exports.NameStruct = _chunkCMOSYNZRjs.NameStruct; exports.NamespaceIdStruct = _chunk6LOYTBS3js.NamespaceIdStruct; exports.NamespaceStruct = _chunk6LOYTBS3js.NamespaceStruct; exports.NpmSnapFileNames = _chunkCMOSYNZRjs.NpmSnapFileNames; exports.NpmSnapIdStruct = _chunkHVTYDKBOjs.NpmSnapIdStruct; exports.NpmSnapPackageJsonStruct = _chunkCMOSYNZRjs.NpmSnapPackageJsonStruct; exports.OnHomePageResponseStruct = _chunkZUSNAQJUjs.OnHomePageResponseStruct; exports.OnHomePageResponseWithContentStruct = _chunkZUSNAQJUjs.OnHomePageResponseWithContentStruct; exports.OnHomePageResponseWithIdStruct = _chunkZUSNAQJUjs.OnHomePageResponseWithIdStruct; exports.OnNameLookupResponseStruct = _chunkZUSNAQJUjs.OnNameLookupResponseStruct; exports.OnSignatureResponseStruct = _chunkZUSNAQJUjs.OnSignatureResponseStruct; exports.OnTransactionResponseStruct = _chunkZUSNAQJUjs.OnTransactionResponseStruct; exports.OnTransactionResponseWithContentStruct = _chunkZUSNAQJUjs.OnTransactionResponseWithContentStruct; exports.OnTransactionResponseWithIdStruct = _chunkZUSNAQJUjs.OnTransactionResponseWithIdStruct; exports.OnTransactionSeverityResponseStruct = _chunkZUSNAQJUjs.OnTransactionSeverityResponseStruct; exports.PROPOSED_NAME_REGEX = _chunkHVTYDKBOjs.PROPOSED_NAME_REGEX; exports.PermissionsStruct = _chunkIAHW6IFCjs.PermissionsStruct; exports.ProgrammaticallyFixableSnapError = _chunkHVTYDKBOjs.ProgrammaticallyFixableSnapError; exports.RpcOriginsStruct = _chunkCQRPSEH3js.RpcOriginsStruct; exports.SIP_6_MAGIC_VALUE = _chunkZT3KKTS2js.SIP_6_MAGIC_VALUE; exports.SNAPS_DERIVATION_PATHS = _chunkKSRDEGBCjs.SNAPS_DERIVATION_PATHS; exports.SNAP_ERROR_WRAPPER_CODE = _chunkK6BCBPXFjs.SNAP_ERROR_WRAPPER_CODE; exports.SNAP_ERROR_WRAPPER_MESSAGE = _chunkK6BCBPXFjs.SNAP_ERROR_WRAPPER_MESSAGE; exports.SNAP_EXPORTS = _chunkZUSNAQJUjs.SNAP_EXPORTS; exports.SNAP_EXPORT_NAMES = _chunkLEKZPKS2js.SNAP_EXPORT_NAMES; exports.SNAP_STREAM_NAMES = _chunkCMOSYNZRjs.SNAP_STREAM_NAMES; exports.STATE_ENCRYPTION_MAGIC_VALUE = _chunkZT3KKTS2js.STATE_ENCRYPTION_MAGIC_VALUE; exports.SemVerRangeStruct = _chunkIAHW6IFCjs.SemVerRangeStruct; exports.SnapAuxilaryFilesStruct = _chunkIAHW6IFCjs.SnapAuxilaryFilesStruct; exports.SnapCaveatType = _chunkASZWZ7JTjs.SnapCaveatType; exports.SnapGetBip32EntropyPermissionsStruct = _chunkIAHW6IFCjs.SnapGetBip32EntropyPermissionsStruct; exports.SnapIdPrefixes = _chunkCMOSYNZRjs.SnapIdPrefixes; exports.SnapIdStruct = _chunkHVTYDKBOjs.SnapIdStruct; exports.SnapIdsStruct = _chunkIAHW6IFCjs.SnapIdsStruct; exports.SnapManifestStruct = _chunkIAHW6IFCjs.SnapManifestStruct; exports.SnapStatus = _chunkHVTYDKBOjs.SnapStatus; exports.SnapStatusEvents = _chunkHVTYDKBOjs.SnapStatusEvents; exports.SnapValidationFailureReason = _chunkCMOSYNZRjs.SnapValidationFailureReason; exports.SnapsStructError = _chunkA6E325SZjs.SnapsStructError; exports.TRANSLATION_REGEX = _chunkR5DO7T2Djs.TRANSLATION_REGEX; exports.VirtualFile = _chunkHJYRGKCXjs.VirtualFile; exports.WALLET_SNAP_PERMISSION_KEY = _chunkCMOSYNZRjs.WALLET_SNAP_PERMISSION_KEY; exports.WrappedSnapError = _chunkK6BCBPXFjs.WrappedSnapError; exports.arrayToGenerator = _chunkA6E325SZjs.arrayToGenerator; exports.assertIsJsonRpcSuccess = _chunkCQRPSEH3js.assertIsJsonRpcSuccess; exports.assertIsKeyringOrigins = _chunkCQRPSEH3js.assertIsKeyringOrigins; exports.assertIsNpmSnapPackageJson = _chunkCMOSYNZRjs.assertIsNpmSnapPackageJson; exports.assertIsRpcOrigins = _chunkCQRPSEH3js.assertIsRpcOrigins; exports.assertIsSnapManifest = _chunkIAHW6IFCjs.assertIsSnapManifest; exports.assertIsValidSnapId = _chunkHVTYDKBOjs.assertIsValidSnapId; exports.bip32entropy = _chunkIAHW6IFCjs.bip32entropy; exports.checksum = _chunkMLOQHUOYjs.checksum; exports.checksumFiles = _chunkMLOQHUOYjs.checksumFiles; exports.createFromStruct = _chunkA6E325SZjs.createFromStruct; exports.createSnapManifest = _chunkIAHW6IFCjs.createSnapManifest; exports.createUnion = _chunkA6E325SZjs.createUnion; exports.createWindow = _chunkPLBSSUVYjs.createWindow; exports.decodeBase64 = _chunkIHQPAJ2Bjs.decodeBase64; exports.deepClone = _chunkNUCLSR2Gjs.deepClone; exports.encodeAuxiliaryFile = _chunkIXBJNVHKjs.encodeAuxiliaryFile; exports.encodeBase64 = _chunkIHQPAJ2Bjs.encodeBase64; exports.getBytes = _chunk473MIETWjs.getBytes; exports.getError = _chunkA6E325SZjs.getError; exports.getJsonSizeUnsafe = _chunk7VJ2BOVUjs.getJsonSizeUnsafe; exports.getJsxChildren = _chunk4YAWNZXMjs.getJsxChildren; exports.getJsxElementFromComponent = _chunk4YAWNZXMjs.getJsxElementFromComponent; exports.getLocalizationFile = _chunkR5DO7T2Djs.getLocalizationFile; exports.getLocalizedSnapManifest = _chunkR5DO7T2Djs.getLocalizedSnapManifest; exports.getSlip44ProtocolName = _chunkKSRDEGBCjs.getSlip44ProtocolName; exports.getSnapChecksum = _chunkHVTYDKBOjs.getSnapChecksum; exports.getSnapDerivationPathName = _chunkKSRDEGBCjs.getSnapDerivationPathName; exports.getSnapPrefix = _chunkHVTYDKBOjs.getSnapPrefix; exports.getStructErrorMessage = _chunkA6E325SZjs.getStructErrorMessage; exports.getStructErrorPrefix = _chunkA6E325SZjs.getStructErrorPrefix; exports.getStructFailureMessage = _chunkA6E325SZjs.getStructFailureMessage; exports.getStructFromPath = _chunkA6E325SZjs.getStructFromPath; exports.getTargetVersion = _chunkIPOE62V4js.getTargetVersion; exports.getTextChildren = _chunk4YAWNZXMjs.getTextChildren; exports.getTotalTextLength = _chunk4YAWNZXMjs.getTotalTextLength; exports.getUnionStructNames = _chunkA6E325SZjs.getUnionStructNames; exports.getValidatedLocalizationFiles = _chunkR5DO7T2Djs.getValidatedLocalizationFiles; exports.hasChildren = _chunk4YAWNZXMjs.hasChildren; exports.indent = _chunkIJX3CXOYjs.indent; exports.isAccountId = _chunk6LOYTBS3js.isAccountId; exports.isAccountIdArray = _chunk6LOYTBS3js.isAccountIdArray; exports.isCaipChainId = _chunkHVTYDKBOjs.isCaipChainId; exports.isChainId = _chunk6LOYTBS3js.isChainId; exports.isCronjobSpecification = _chunk2LBN5T56js.isCronjobSpecification; exports.isCronjobSpecificationArray = _chunk2LBN5T56js.isCronjobSpecificationArray; exports.isEqual = _chunkT3YY4JIJjs.isEqual; exports.isNamespace = _chunk6LOYTBS3js.isNamespace; exports.isNamespaceId = _chunk6LOYTBS3js.isNamespaceId; exports.isNpmSnapPackageJson = _chunkCMOSYNZRjs.isNpmSnapPackageJson; exports.isOriginAllowed = _chunkCQRPSEH3js.isOriginAllowed; exports.isSerializedSnapError = _chunkK6BCBPXFjs.isSerializedSnapError; exports.isSnapError = _chunkK6BCBPXFjs.isSnapError; exports.isSnapManifest = _chunkIAHW6IFCjs.isSnapManifest; exports.isSnapPermitted = _chunkHVTYDKBOjs.isSnapPermitted; exports.isValidUrl = _chunkCMOSYNZRjs.isValidUrl; exports.isWrappedSnapError = _chunkK6BCBPXFjs.isWrappedSnapError; exports.logError = _chunkE3BDBG6Tjs.logError; exports.logInfo = _chunkE3BDBG6Tjs.logInfo; exports.logWarning = _chunkE3BDBG6Tjs.logWarning; exports.named = _chunkA6E325SZjs.named; exports.normalizeRelative = _chunkAOGVLPQZjs.normalizeRelative; exports.parseAccountId = _chunk6LOYTBS3js.parseAccountId; exports.parseChainId = _chunk6LOYTBS3js.parseChainId; exports.parseCronExpression = _chunk2LBN5T56js.parseCronExpression; exports.parseJson = _chunk7VJ2BOVUjs.parseJson; exports.resolveVersionRange = _chunkIPOE62V4js.resolveVersionRange; exports.snapsLogger = _chunkE3BDBG6Tjs.snapsLogger; exports.stripSnapPrefix = _chunkHVTYDKBOjs.stripSnapPrefix; exports.translate = _chunkR5DO7T2Djs.translate; exports.unwrapError = _chunkK6BCBPXFjs.unwrapError; exports.uri = _chunkCMOSYNZRjs.uri; exports.validateFetchedSnap = _chunk3ZSYZX3Ijs.validateFetchedSnap; exports.validateJsxLinks = _chunk4YAWNZXMjs.validateJsxLinks; exports.validateSnapManifestLocalizations = _chunkR5DO7T2Djs.validateSnapManifestLocalizations; exports.validateSnapShasum = _chunkHVTYDKBOjs.validateSnapShasum; exports.validateTextLinks = _chunk4YAWNZXMjs.validateTextLinks; exports.validateUnion = _chunkA6E325SZjs.validateUnion; exports.verifyRequestedSnapPermissions = _chunkHVTYDKBOjs.verifyRequestedSnapPermissions; exports.walkJsx = _chunk4YAWNZXMjs.walkJsx;
394
+ exports.ACCOUNT_ADDRESS_REGEX = _chunk6LOYTBS3js.ACCOUNT_ADDRESS_REGEX; exports.ACCOUNT_ID_REGEX = _chunk6LOYTBS3js.ACCOUNT_ID_REGEX; exports.AccountAddressStruct = _chunk6LOYTBS3js.AccountAddressStruct; exports.AccountIdArrayStruct = _chunk6LOYTBS3js.AccountIdArrayStruct; exports.AccountIdStruct = _chunk6LOYTBS3js.AccountIdStruct; exports.AddressResolutionResponseStruct = _chunkOJM2SKJZjs.AddressResolutionResponseStruct; exports.AddressResolutionStruct = _chunkOJM2SKJZjs.AddressResolutionStruct; exports.BaseSnapIdStruct = _chunkK4B37F3Ljs.BaseSnapIdStruct; exports.Bip32EntropyStruct = _chunkLNZLPDBBjs.Bip32EntropyStruct; exports.Bip32PathStruct = _chunkLNZLPDBBjs.Bip32PathStruct; exports.CHAIN_ID_REGEX = _chunk6LOYTBS3js.CHAIN_ID_REGEX; exports.ChainIdStringStruct = _chunk6LOYTBS3js.ChainIdStringStruct; exports.ChainIdStruct = _chunk6LOYTBS3js.ChainIdStruct; exports.ChainIdsStruct = _chunkLNZLPDBBjs.ChainIdsStruct; exports.ChainStruct = _chunk6LOYTBS3js.ChainStruct; exports.CronExpressionStruct = _chunk2LBN5T56js.CronExpressionStruct; exports.CronjobRpcRequestStruct = _chunk2LBN5T56js.CronjobRpcRequestStruct; exports.CronjobSpecificationArrayStruct = _chunk2LBN5T56js.CronjobSpecificationArrayStruct; exports.CronjobSpecificationStruct = _chunk2LBN5T56js.CronjobSpecificationStruct; exports.CurveStruct = _chunkLNZLPDBBjs.CurveStruct; exports.DEFAULT_ENDOWMENTS = _chunkN722KRZWjs.DEFAULT_ENDOWMENTS; exports.DEFAULT_REQUESTED_SNAP_VERSION = _chunkIPOE62V4js.DEFAULT_REQUESTED_SNAP_VERSION; exports.DomainResolutionResponseStruct = _chunkOJM2SKJZjs.DomainResolutionResponseStruct; exports.DomainResolutionStruct = _chunkOJM2SKJZjs.DomainResolutionStruct; exports.EmptyObjectStruct = _chunkLNZLPDBBjs.EmptyObjectStruct; exports.FORBIDDEN_COIN_TYPES = _chunkLNZLPDBBjs.FORBIDDEN_COIN_TYPES; exports.HandlerCaveatsStruct = _chunkLNZLPDBBjs.HandlerCaveatsStruct; exports.HandlerType = _chunkLEKZPKS2js.HandlerType; exports.HttpSnapIdStruct = _chunkK4B37F3Ljs.HttpSnapIdStruct; exports.InitialConnectionsStruct = _chunkLNZLPDBBjs.InitialConnectionsStruct; exports.KeyringOriginsStruct = _chunk37VHIRUJjs.KeyringOriginsStruct; exports.LOCALHOST_HOSTNAMES = _chunkK4B37F3Ljs.LOCALHOST_HOSTNAMES; exports.LOCALIZABLE_FIELDS = _chunkR5DO7T2Djs.LOCALIZABLE_FIELDS; exports.LimitedString = _chunk6LOYTBS3js.LimitedString; exports.LocalSnapIdStruct = _chunkK4B37F3Ljs.LocalSnapIdStruct; exports.LocalizationFileStruct = _chunkR5DO7T2Djs.LocalizationFileStruct; exports.LookupMatchersStruct = _chunkLNZLPDBBjs.LookupMatchersStruct; exports.MAXIMUM_REQUEST_TIMEOUT = _chunkLNZLPDBBjs.MAXIMUM_REQUEST_TIMEOUT; exports.MINIMUM_REQUEST_TIMEOUT = _chunkLNZLPDBBjs.MINIMUM_REQUEST_TIMEOUT; exports.MaxRequestTimeStruct = _chunkLNZLPDBBjs.MaxRequestTimeStruct; exports.NameStruct = _chunkCMOSYNZRjs.NameStruct; exports.NamespaceIdStruct = _chunk6LOYTBS3js.NamespaceIdStruct; exports.NamespaceStruct = _chunk6LOYTBS3js.NamespaceStruct; exports.NpmSnapFileNames = _chunkCMOSYNZRjs.NpmSnapFileNames; exports.NpmSnapIdStruct = _chunkK4B37F3Ljs.NpmSnapIdStruct; exports.NpmSnapPackageJsonStruct = _chunkCMOSYNZRjs.NpmSnapPackageJsonStruct; exports.OnHomePageResponseStruct = _chunkOJM2SKJZjs.OnHomePageResponseStruct; exports.OnHomePageResponseWithContentStruct = _chunkOJM2SKJZjs.OnHomePageResponseWithContentStruct; exports.OnHomePageResponseWithIdStruct = _chunkOJM2SKJZjs.OnHomePageResponseWithIdStruct; exports.OnNameLookupResponseStruct = _chunkOJM2SKJZjs.OnNameLookupResponseStruct; exports.OnSignatureResponseStruct = _chunkOJM2SKJZjs.OnSignatureResponseStruct; exports.OnTransactionResponseStruct = _chunkOJM2SKJZjs.OnTransactionResponseStruct; exports.OnTransactionResponseWithContentStruct = _chunkOJM2SKJZjs.OnTransactionResponseWithContentStruct; exports.OnTransactionResponseWithIdStruct = _chunkOJM2SKJZjs.OnTransactionResponseWithIdStruct; exports.OnTransactionSeverityResponseStruct = _chunkOJM2SKJZjs.OnTransactionSeverityResponseStruct; exports.PROPOSED_NAME_REGEX = _chunkK4B37F3Ljs.PROPOSED_NAME_REGEX; exports.PermissionsStruct = _chunkLNZLPDBBjs.PermissionsStruct; exports.ProgrammaticallyFixableSnapError = _chunkK4B37F3Ljs.ProgrammaticallyFixableSnapError; exports.RpcOriginsStruct = _chunk37VHIRUJjs.RpcOriginsStruct; exports.SIP_6_MAGIC_VALUE = _chunkZT3KKTS2js.SIP_6_MAGIC_VALUE; exports.SNAPS_DERIVATION_PATHS = _chunkKSRDEGBCjs.SNAPS_DERIVATION_PATHS; exports.SNAP_ERROR_WRAPPER_CODE = _chunkK6BCBPXFjs.SNAP_ERROR_WRAPPER_CODE; exports.SNAP_ERROR_WRAPPER_MESSAGE = _chunkK6BCBPXFjs.SNAP_ERROR_WRAPPER_MESSAGE; exports.SNAP_EXPORTS = _chunkOJM2SKJZjs.SNAP_EXPORTS; exports.SNAP_EXPORT_NAMES = _chunkLEKZPKS2js.SNAP_EXPORT_NAMES; exports.SNAP_STREAM_NAMES = _chunkCMOSYNZRjs.SNAP_STREAM_NAMES; exports.STATE_ENCRYPTION_MAGIC_VALUE = _chunkZT3KKTS2js.STATE_ENCRYPTION_MAGIC_VALUE; exports.SemVerRangeStruct = _chunkLNZLPDBBjs.SemVerRangeStruct; exports.SnapAuxilaryFilesStruct = _chunkLNZLPDBBjs.SnapAuxilaryFilesStruct; exports.SnapCaveatType = _chunkASZWZ7JTjs.SnapCaveatType; exports.SnapGetBip32EntropyPermissionsStruct = _chunkLNZLPDBBjs.SnapGetBip32EntropyPermissionsStruct; exports.SnapIdPrefixes = _chunkCMOSYNZRjs.SnapIdPrefixes; exports.SnapIdStruct = _chunkK4B37F3Ljs.SnapIdStruct; exports.SnapIdsStruct = _chunkLNZLPDBBjs.SnapIdsStruct; exports.SnapManifestStruct = _chunkLNZLPDBBjs.SnapManifestStruct; exports.SnapStatus = _chunkK4B37F3Ljs.SnapStatus; exports.SnapStatusEvents = _chunkK4B37F3Ljs.SnapStatusEvents; exports.SnapValidationFailureReason = _chunkCMOSYNZRjs.SnapValidationFailureReason; exports.SnapsStructError = _chunkA6E325SZjs.SnapsStructError; exports.TRANSLATION_REGEX = _chunkR5DO7T2Djs.TRANSLATION_REGEX; exports.VirtualFile = _chunkHJYRGKCXjs.VirtualFile; exports.WALLET_SNAP_PERMISSION_KEY = _chunkCMOSYNZRjs.WALLET_SNAP_PERMISSION_KEY; exports.WrappedSnapError = _chunkK6BCBPXFjs.WrappedSnapError; exports.arrayToGenerator = _chunkA6E325SZjs.arrayToGenerator; exports.assertIsJsonRpcSuccess = _chunk37VHIRUJjs.assertIsJsonRpcSuccess; exports.assertIsKeyringOrigins = _chunk37VHIRUJjs.assertIsKeyringOrigins; exports.assertIsNpmSnapPackageJson = _chunkCMOSYNZRjs.assertIsNpmSnapPackageJson; exports.assertIsRpcOrigins = _chunk37VHIRUJjs.assertIsRpcOrigins; exports.assertIsSnapManifest = _chunkLNZLPDBBjs.assertIsSnapManifest; exports.assertIsValidSnapId = _chunkK4B37F3Ljs.assertIsValidSnapId; exports.bip32entropy = _chunkLNZLPDBBjs.bip32entropy; exports.checksum = _chunkMLOQHUOYjs.checksum; exports.checksumFiles = _chunkMLOQHUOYjs.checksumFiles; exports.createFromStruct = _chunkA6E325SZjs.createFromStruct; exports.createSnapManifest = _chunkLNZLPDBBjs.createSnapManifest; exports.createUnion = _chunkA6E325SZjs.createUnion; exports.createWindow = _chunkPLBSSUVYjs.createWindow; exports.decodeBase64 = _chunkIHQPAJ2Bjs.decodeBase64; exports.deepClone = _chunkNUCLSR2Gjs.deepClone; exports.encodeAuxiliaryFile = _chunkIXBJNVHKjs.encodeAuxiliaryFile; exports.encodeBase64 = _chunkIHQPAJ2Bjs.encodeBase64; exports.getBytes = _chunk473MIETWjs.getBytes; exports.getError = _chunkA6E325SZjs.getError; exports.getJsonSizeUnsafe = _chunk7VJ2BOVUjs.getJsonSizeUnsafe; exports.getJsxChildren = _chunkRS5E2NXNjs.getJsxChildren; exports.getJsxElementFromComponent = _chunkRS5E2NXNjs.getJsxElementFromComponent; exports.getLocalizationFile = _chunkR5DO7T2Djs.getLocalizationFile; exports.getLocalizedSnapManifest = _chunkR5DO7T2Djs.getLocalizedSnapManifest; exports.getSlip44ProtocolName = _chunkKSRDEGBCjs.getSlip44ProtocolName; exports.getSnapChecksum = _chunkK4B37F3Ljs.getSnapChecksum; exports.getSnapDerivationPathName = _chunkKSRDEGBCjs.getSnapDerivationPathName; exports.getSnapPrefix = _chunkK4B37F3Ljs.getSnapPrefix; exports.getStructErrorMessage = _chunkA6E325SZjs.getStructErrorMessage; exports.getStructErrorPrefix = _chunkA6E325SZjs.getStructErrorPrefix; exports.getStructFailureMessage = _chunkA6E325SZjs.getStructFailureMessage; exports.getStructFromPath = _chunkA6E325SZjs.getStructFromPath; exports.getTargetVersion = _chunkIPOE62V4js.getTargetVersion; exports.getTextChildren = _chunkRS5E2NXNjs.getTextChildren; exports.getTotalTextLength = _chunkRS5E2NXNjs.getTotalTextLength; exports.getUnionStructNames = _chunkA6E325SZjs.getUnionStructNames; exports.getValidatedLocalizationFiles = _chunkR5DO7T2Djs.getValidatedLocalizationFiles; exports.hasChildren = _chunkRS5E2NXNjs.hasChildren; exports.indent = _chunkIJX3CXOYjs.indent; exports.isAccountId = _chunk6LOYTBS3js.isAccountId; exports.isAccountIdArray = _chunk6LOYTBS3js.isAccountIdArray; exports.isCaipChainId = _chunkK4B37F3Ljs.isCaipChainId; exports.isChainId = _chunk6LOYTBS3js.isChainId; exports.isCronjobSpecification = _chunk2LBN5T56js.isCronjobSpecification; exports.isCronjobSpecificationArray = _chunk2LBN5T56js.isCronjobSpecificationArray; exports.isEqual = _chunkT3YY4JIJjs.isEqual; exports.isNamespace = _chunk6LOYTBS3js.isNamespace; exports.isNamespaceId = _chunk6LOYTBS3js.isNamespaceId; exports.isNpmSnapPackageJson = _chunkCMOSYNZRjs.isNpmSnapPackageJson; exports.isOriginAllowed = _chunk37VHIRUJjs.isOriginAllowed; exports.isSerializedSnapError = _chunkK6BCBPXFjs.isSerializedSnapError; exports.isSnapError = _chunkK6BCBPXFjs.isSnapError; exports.isSnapManifest = _chunkLNZLPDBBjs.isSnapManifest; exports.isSnapPermitted = _chunkK4B37F3Ljs.isSnapPermitted; exports.isValidUrl = _chunkCMOSYNZRjs.isValidUrl; exports.isWrappedSnapError = _chunkK6BCBPXFjs.isWrappedSnapError; exports.logError = _chunkE3BDBG6Tjs.logError; exports.logInfo = _chunkE3BDBG6Tjs.logInfo; exports.logWarning = _chunkE3BDBG6Tjs.logWarning; exports.named = _chunkA6E325SZjs.named; exports.normalizeRelative = _chunkAOGVLPQZjs.normalizeRelative; exports.parseAccountId = _chunk6LOYTBS3js.parseAccountId; exports.parseChainId = _chunk6LOYTBS3js.parseChainId; exports.parseCronExpression = _chunk2LBN5T56js.parseCronExpression; exports.parseJson = _chunk7VJ2BOVUjs.parseJson; exports.resolveVersionRange = _chunkIPOE62V4js.resolveVersionRange; exports.snapsLogger = _chunkE3BDBG6Tjs.snapsLogger; exports.stripSnapPrefix = _chunkK4B37F3Ljs.stripSnapPrefix; exports.translate = _chunkR5DO7T2Djs.translate; exports.unwrapError = _chunkK6BCBPXFjs.unwrapError; exports.uri = _chunkCMOSYNZRjs.uri; exports.validateFetchedSnap = _chunk7Y4VHT3Ejs.validateFetchedSnap; exports.validateJsxLinks = _chunkRS5E2NXNjs.validateJsxLinks; exports.validateSnapManifestLocalizations = _chunkR5DO7T2Djs.validateSnapManifestLocalizations; exports.validateSnapShasum = _chunkK4B37F3Ljs.validateSnapShasum; exports.validateTextLinks = _chunkRS5E2NXNjs.validateTextLinks; exports.validateUnion = _chunkA6E325SZjs.validateUnion; exports.verifyRequestedSnapPermissions = _chunkK4B37F3Ljs.verifyRequestedSnapPermissions; exports.walkJsx = _chunkRS5E2NXNjs.walkJsx;
394
395
  //# sourceMappingURL=index.js.map