@metamask/snaps-controllers 9.3.1 → 9.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -1
- package/dist/{chunk-3T6W5VI2.mjs → chunk-3WEWHK2I.mjs} +7 -3
- package/dist/chunk-3WEWHK2I.mjs.map +1 -0
- package/dist/{chunk-QYQLJCPR.js → chunk-5O4O4BI5.js} +2 -1
- package/dist/chunk-5O4O4BI5.js.map +1 -0
- package/dist/{chunk-23PVLQFV.mjs → chunk-CJY2LYEL.mjs} +2 -2
- package/dist/{chunk-H7TB7I6Z.js → chunk-EVKVZUYY.js} +7 -3
- package/dist/chunk-EVKVZUYY.js.map +1 -0
- package/dist/{chunk-JLIW4CNS.js → chunk-OJBUUQ5D.js} +7 -7
- package/dist/{chunk-G245VWEY.mjs → chunk-UMVUXQ3B.mjs} +2 -1
- package/dist/chunk-UMVUXQ3B.mjs.map +1 -0
- package/dist/cronjob/CronjobController.js +3 -3
- package/dist/cronjob/CronjobController.mjs +3 -3
- package/dist/cronjob/index.js +3 -3
- package/dist/cronjob/index.mjs +3 -3
- package/dist/index.js +4 -4
- package/dist/index.mjs +3 -3
- package/dist/insights/SnapInsightsController.js +2 -2
- package/dist/insights/SnapInsightsController.mjs +1 -1
- package/dist/insights/index.js +2 -2
- package/dist/insights/index.mjs +1 -1
- package/dist/interface/SnapInterfaceController.js +3 -3
- package/dist/interface/SnapInterfaceController.mjs +2 -2
- package/dist/interface/index.js +3 -3
- package/dist/interface/index.mjs +2 -2
- package/dist/interface/utils.js +2 -2
- package/dist/interface/utils.mjs +1 -1
- package/dist/node.js +4 -4
- package/dist/node.mjs +3 -3
- package/dist/react-native.js +4 -4
- package/dist/react-native.mjs +3 -3
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/cronjob/CronjobController.d.ts +7 -7
- package/dist/types/insights/SnapInsightsController.d.ts +8 -7
- package/dist/types/interface/SnapInterfaceController.d.ts +12 -12
- package/dist/types/services/AbstractExecutionService.d.ts +5 -5
- package/dist/types/services/ExecutionService.d.ts +16 -16
- package/dist/types/services/ProxyPostMessageStream.d.ts +2 -2
- package/dist/types/services/iframe/IframeExecutionService.d.ts +1 -1
- package/dist/types/services/offscreen/OffscreenExecutionService.d.ts +1 -1
- package/dist/types/services/proxy/ProxyExecutionService.d.ts +1 -1
- package/dist/types/services/webview/WebViewExecutionService.d.ts +1 -1
- package/dist/types/services/webview/WebViewMessageStream.d.ts +2 -2
- package/dist/types/services/webworker/WebWorkerExecutionService.d.ts +1 -1
- package/dist/types/snaps/SnapController.d.ts +46 -46
- package/dist/types/snaps/Timer.d.ts +1 -1
- package/dist/types/snaps/location/location.d.ts +1 -1
- package/dist/types/snaps/location/npm.d.ts +1 -1
- package/dist/types/snaps/registry/json.d.ts +10 -10
- package/dist/types/snaps/registry/registry.d.ts +5 -5
- package/dist/types/types/controllers.d.ts +8 -8
- package/dist/types/types/encryptor.d.ts +5 -5
- package/dist/types/utils.d.ts +13 -6
- package/package.json +5 -5
- package/dist/chunk-3T6W5VI2.mjs.map +0 -1
- package/dist/chunk-G245VWEY.mjs.map +0 -1
- package/dist/chunk-H7TB7I6Z.js.map +0 -1
- package/dist/chunk-QYQLJCPR.js.map +0 -1
- /package/dist/{chunk-23PVLQFV.mjs.map → chunk-CJY2LYEL.mjs.map} +0 -0
- /package/dist/{chunk-JLIW4CNS.js.map → chunk-OJBUUQ5D.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [9.4.0]
|
|
10
|
+
### Added
|
|
11
|
+
- Add `RadioButton` component ([#2592](https://github.com/MetaMask/snaps/pull/2592))
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
- Persist `severity` property in `SnapInsightsController` ([#2612](https://github.com/MetaMask/snaps/pull/2612))
|
|
15
|
+
|
|
9
16
|
## [9.3.1]
|
|
10
17
|
### Changed
|
|
11
18
|
- Bump `@metamask/approval-controller` from `^7.0.0` to `^7.0.2` ([#2593](https://github.com/metamask/snaps/pull/2593))
|
|
@@ -341,7 +348,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
341
348
|
- The version of the package no longer needs to match the version of all other
|
|
342
349
|
MetaMask Snaps packages.
|
|
343
350
|
|
|
344
|
-
[Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@9.
|
|
351
|
+
[Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@9.4.0...HEAD
|
|
352
|
+
[9.4.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@9.3.1...@metamask/snaps-controllers@9.4.0
|
|
345
353
|
[9.3.1]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@9.3.0...@metamask/snaps-controllers@9.3.1
|
|
346
354
|
[9.3.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@9.2.0...@metamask/snaps-controllers@9.3.0
|
|
347
355
|
[9.2.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-controllers@9.1.0...@metamask/snaps-controllers@9.2.0
|
|
@@ -25,6 +25,10 @@ function constructComponentSpecificDefaultState(element) {
|
|
|
25
25
|
const children = getJsxChildren(element);
|
|
26
26
|
return children[0]?.props.value;
|
|
27
27
|
}
|
|
28
|
+
case "RadioGroup": {
|
|
29
|
+
const children = getJsxChildren(element);
|
|
30
|
+
return children[0]?.props.value;
|
|
31
|
+
}
|
|
28
32
|
case "Checkbox":
|
|
29
33
|
return false;
|
|
30
34
|
default:
|
|
@@ -62,7 +66,7 @@ function constructState(oldState, rootComponent) {
|
|
|
62
66
|
newState[component.props.name] = {};
|
|
63
67
|
return;
|
|
64
68
|
}
|
|
65
|
-
if (currentForm && (component.type === "Input" || component.type === "Dropdown" || component.type === "FileInput" || component.type === "Checkbox")) {
|
|
69
|
+
if (currentForm && (component.type === "Input" || component.type === "Dropdown" || component.type === "RadioGroup" || component.type === "FileInput" || component.type === "Checkbox")) {
|
|
66
70
|
const formState = newState[currentForm.name];
|
|
67
71
|
assertNameIsUnique(formState, component.props.name);
|
|
68
72
|
formState[component.props.name] = constructInputState(
|
|
@@ -72,7 +76,7 @@ function constructState(oldState, rootComponent) {
|
|
|
72
76
|
);
|
|
73
77
|
return;
|
|
74
78
|
}
|
|
75
|
-
if (component.type === "Input" || component.type === "Dropdown" || component.type === "FileInput" || component.type === "Checkbox") {
|
|
79
|
+
if (component.type === "Input" || component.type === "Dropdown" || component.type === "RadioGroup" || component.type === "FileInput" || component.type === "Checkbox") {
|
|
76
80
|
assertNameIsUnique(newState, component.props.name);
|
|
77
81
|
newState[component.props.name] = constructInputState(oldState, component);
|
|
78
82
|
}
|
|
@@ -97,4 +101,4 @@ export {
|
|
|
97
101
|
constructState,
|
|
98
102
|
validateInterfaceContext
|
|
99
103
|
};
|
|
100
|
-
//# sourceMappingURL=chunk-
|
|
104
|
+
//# sourceMappingURL=chunk-3WEWHK2I.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/interface/utils.ts"],"sourcesContent":["import { assert } from '@metamask/snaps-sdk';\nimport type {\n FormState,\n InterfaceState,\n ComponentOrElement,\n InterfaceContext,\n State,\n} from '@metamask/snaps-sdk';\nimport type {\n DropdownElement,\n InputElement,\n JSXElement,\n OptionElement,\n FileInputElement,\n CheckboxElement,\n RadioGroupElement,\n RadioElement,\n} from '@metamask/snaps-sdk/jsx';\nimport { isJSXElementUnsafe } from '@metamask/snaps-sdk/jsx';\nimport {\n getJsonSizeUnsafe,\n getJsxChildren,\n getJsxElementFromComponent,\n walkJsx,\n} from '@metamask/snaps-utils';\n\n/**\n * Get a JSX element from a component or JSX element. If the component is a\n * JSX element, it is returned as is. Otherwise, the component is converted to\n * a JSX element.\n *\n * @param component - The component to convert.\n * @returns The JSX element.\n */\nexport function getJsxInterface(component: ComponentOrElement): JSXElement {\n if (isJSXElementUnsafe(component)) {\n return component;\n }\n\n return getJsxElementFromComponent(component);\n}\n\n/**\n * Assert that the component name is unique in state.\n *\n * @param state - The interface state to verify against.\n * @param name - The component name to verify.\n */\nexport function assertNameIsUnique(state: InterfaceState, name: string) {\n assert(\n state[name] === undefined,\n `Duplicate component names are not allowed, found multiple instances of: \"${name}\".`,\n );\n}\n\n/**\n * Construct default state for a component.\n *\n * This function is meant to be used inside constructInputState to account\n * for component specific defaults and will not override the component value or existing form state.\n *\n * @param element - The input element.\n * @returns The default state for the specific component, if any.\n */\nfunction constructComponentSpecificDefaultState(\n element: InputElement | DropdownElement | RadioGroupElement | CheckboxElement,\n) {\n switch (element.type) {\n case 'Dropdown': {\n const children = getJsxChildren(element) as OptionElement[];\n return children[0]?.props.value;\n }\n\n case 'RadioGroup': {\n const children = getJsxChildren(element) as RadioElement[];\n return children[0]?.props.value;\n }\n\n case 'Checkbox':\n return false;\n\n default:\n return null;\n }\n}\n\n/**\n * Get the state value for a stateful component.\n *\n * Most components store the state value as a `value` prop.\n * This function exists to account for components where that isn't the case.\n *\n * @param element - The input element.\n * @returns The state value for a given component.\n */\nfunction getComponentStateValue(\n element: InputElement | DropdownElement | RadioGroupElement | CheckboxElement,\n) {\n switch (element.type) {\n case 'Checkbox':\n return element.props.checked;\n\n default:\n return element.props.value;\n }\n}\n\n/**\n * Construct the state for an input field.\n *\n * @param oldState - The previous state.\n * @param element - The input element.\n * @param form - An optional form that the input is enclosed in.\n * @returns The input state.\n */\nfunction constructInputState(\n oldState: InterfaceState,\n element:\n | InputElement\n | DropdownElement\n | RadioGroupElement\n | FileInputElement\n | CheckboxElement,\n form?: string,\n) {\n const oldStateUnwrapped = form ? (oldState[form] as FormState) : oldState;\n const oldInputState = oldStateUnwrapped?.[element.props.name] as State;\n\n if (element.type === 'FileInput') {\n return oldInputState ?? null;\n }\n\n return (\n getComponentStateValue(element) ??\n oldInputState ??\n constructComponentSpecificDefaultState(element) ??\n null\n );\n}\n\n/**\n * Construct the interface state for a given component tree.\n *\n * @param oldState - The previous state.\n * @param rootComponent - The UI component to construct state from.\n * @returns The interface state of the passed component.\n */\nexport function constructState(\n oldState: InterfaceState,\n rootComponent: JSXElement,\n): InterfaceState {\n const newState: InterfaceState = {};\n\n // Stack containing the forms we have visited and at which depth\n const formStack: { name: string; depth: number }[] = [];\n\n walkJsx(rootComponent, (component, depth) => {\n let currentForm = formStack[formStack.length - 1];\n\n // Pop the current form of the stack once we leave its depth.\n if (currentForm && depth <= currentForm.depth) {\n formStack.pop();\n currentForm = formStack[formStack.length - 1];\n }\n\n if (component.type === 'Form') {\n assertNameIsUnique(newState, component.props.name);\n formStack.push({ name: component.props.name, depth });\n newState[component.props.name] = {};\n return;\n }\n\n // Stateful components inside a form\n if (\n currentForm &&\n (component.type === 'Input' ||\n component.type === 'Dropdown' ||\n component.type === 'RadioGroup' ||\n component.type === 'FileInput' ||\n component.type === 'Checkbox')\n ) {\n const formState = newState[currentForm.name] as FormState;\n assertNameIsUnique(formState, component.props.name);\n formState[component.props.name] = constructInputState(\n oldState,\n component,\n currentForm.name,\n );\n return;\n }\n\n // Stateful components outside a form\n if (\n component.type === 'Input' ||\n component.type === 'Dropdown' ||\n component.type === 'RadioGroup' ||\n component.type === 'FileInput' ||\n component.type === 'Checkbox'\n ) {\n assertNameIsUnique(newState, component.props.name);\n newState[component.props.name] = constructInputState(oldState, component);\n }\n });\n\n return newState;\n}\n\nconst MAX_CONTEXT_SIZE = 1_000_000; // 1 mb\n\n/**\n * Validate a JSON blob to be used as the interface context.\n *\n * @param context - The JSON blob.\n * @throws If the JSON blob is too large.\n */\nexport function validateInterfaceContext(context?: InterfaceContext) {\n if (!context) {\n return;\n }\n\n // We assume the validity of this JSON to be validated by the caller.\n // E.g., in the RPC method implementation.\n const size = getJsonSizeUnsafe(context);\n assert(\n size <= MAX_CONTEXT_SIZE,\n `A Snap interface context may not be larger than ${\n MAX_CONTEXT_SIZE / 1000000\n } MB.`,\n );\n}\n"],"mappings":";AAAA,SAAS,cAAc;AAkBvB,SAAS,0BAA0B;AACnC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAUA,SAAS,gBAAgB,WAA2C;AACzE,MAAI,mBAAmB,SAAS,GAAG;AACjC,WAAO;AAAA,EACT;AAEA,SAAO,2BAA2B,SAAS;AAC7C;AAQO,SAAS,mBAAmB,OAAuB,MAAc;AACtE;AAAA,IACE,MAAM,IAAI,MAAM;AAAA,IAChB,4EAA4E,IAAI;AAAA,EAClF;AACF;AAWA,SAAS,uCACP,SACA;AACA,UAAQ,QAAQ,MAAM;AAAA,IACpB,KAAK,YAAY;AACf,YAAM,WAAW,eAAe,OAAO;AACvC,aAAO,SAAS,CAAC,GAAG,MAAM;AAAA,IAC5B;AAAA,IAEA,KAAK,cAAc;AACjB,YAAM,WAAW,eAAe,OAAO;AACvC,aAAO,SAAS,CAAC,GAAG,MAAM;AAAA,IAC5B;AAAA,IAEA,KAAK;AACH,aAAO;AAAA,IAET;AACE,aAAO;AAAA,EACX;AACF;AAWA,SAAS,uBACP,SACA;AACA,UAAQ,QAAQ,MAAM;AAAA,IACpB,KAAK;AACH,aAAO,QAAQ,MAAM;AAAA,IAEvB;AACE,aAAO,QAAQ,MAAM;AAAA,EACzB;AACF;AAUA,SAAS,oBACP,UACA,SAMA,MACA;AACA,QAAM,oBAAoB,OAAQ,SAAS,IAAI,IAAkB;AACjE,QAAM,gBAAgB,oBAAoB,QAAQ,MAAM,IAAI;AAE5D,MAAI,QAAQ,SAAS,aAAa;AAChC,WAAO,iBAAiB;AAAA,EAC1B;AAEA,SACE,uBAAuB,OAAO,KAC9B,iBACA,uCAAuC,OAAO,KAC9C;AAEJ;AASO,SAAS,eACd,UACA,eACgB;AAChB,QAAM,WAA2B,CAAC;AAGlC,QAAM,YAA+C,CAAC;AAEtD,UAAQ,eAAe,CAAC,WAAW,UAAU;AAC3C,QAAI,cAAc,UAAU,UAAU,SAAS,CAAC;AAGhD,QAAI,eAAe,SAAS,YAAY,OAAO;AAC7C,gBAAU,IAAI;AACd,oBAAc,UAAU,UAAU,SAAS,CAAC;AAAA,IAC9C;AAEA,QAAI,UAAU,SAAS,QAAQ;AAC7B,yBAAmB,UAAU,UAAU,MAAM,IAAI;AACjD,gBAAU,KAAK,EAAE,MAAM,UAAU,MAAM,MAAM,MAAM,CAAC;AACpD,eAAS,UAAU,MAAM,IAAI,IAAI,CAAC;AAClC;AAAA,IACF;AAGA,QACE,gBACC,UAAU,SAAS,WAClB,UAAU,SAAS,cACnB,UAAU,SAAS,gBACnB,UAAU,SAAS,eACnB,UAAU,SAAS,aACrB;AACA,YAAM,YAAY,SAAS,YAAY,IAAI;AAC3C,yBAAmB,WAAW,UAAU,MAAM,IAAI;AAClD,gBAAU,UAAU,MAAM,IAAI,IAAI;AAAA,QAChC;AAAA,QACA;AAAA,QACA,YAAY;AAAA,MACd;AACA;AAAA,IACF;AAGA,QACE,UAAU,SAAS,WACnB,UAAU,SAAS,cACnB,UAAU,SAAS,gBACnB,UAAU,SAAS,eACnB,UAAU,SAAS,YACnB;AACA,yBAAmB,UAAU,UAAU,MAAM,IAAI;AACjD,eAAS,UAAU,MAAM,IAAI,IAAI,oBAAoB,UAAU,SAAS;AAAA,IAC1E;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,IAAM,mBAAmB;AAQlB,SAAS,yBAAyB,SAA4B;AACnE,MAAI,CAAC,SAAS;AACZ;AAAA,EACF;AAIA,QAAM,OAAO,kBAAkB,OAAO;AACtC;AAAA,IACE,QAAQ;AAAA,IACR,mDACE,mBAAmB,GACrB;AAAA,EACF;AACF;","names":[]}
|
|
@@ -265,6 +265,7 @@ handleSnapResponse_fn = function({
|
|
|
265
265
|
this.update((state) => {
|
|
266
266
|
state.insights[id][snapId].loading = false;
|
|
267
267
|
state.insights[id][snapId].interfaceId = response?.id;
|
|
268
|
+
state.insights[id][snapId].severity = response?.severity;
|
|
268
269
|
state.insights[id][snapId].error = error?.message;
|
|
269
270
|
});
|
|
270
271
|
};
|
|
@@ -272,4 +273,4 @@ handleSnapResponse_fn = function({
|
|
|
272
273
|
|
|
273
274
|
|
|
274
275
|
exports.SnapInsightsController = SnapInsightsController;
|
|
275
|
-
//# sourceMappingURL=chunk-
|
|
276
|
+
//# sourceMappingURL=chunk-5O4O4BI5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/insights/SnapInsightsController.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RestrictedControllerMessenger } from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type {\n Caveat,\n GetPermissions,\n ValidPermission,\n} from '@metamask/permission-controller';\nimport {\n getSignatureOriginCaveat,\n getTransactionOriginCaveat,\n SnapEndowments,\n} from '@metamask/snaps-rpc-methods';\nimport type { Json, SnapId } from '@metamask/snaps-sdk';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport { hasProperty } from '@metamask/utils';\n\nimport type { DeleteInterface } from '../interface';\nimport type { GetAllSnaps, HandleSnapRequest } from '../snaps';\nimport { getRunnableSnaps } from '../snaps';\nimport type {\n TransactionControllerUnapprovedTransactionAddedEvent,\n TransactionMeta,\n SignatureStateChange,\n SignatureControllerState,\n StateSignature,\n TransactionControllerTransactionStatusUpdatedEvent,\n} from '../types';\n\nconst controllerName = 'SnapInsightsController';\n\nexport type SnapInsightsControllerAllowedActions =\n | HandleSnapRequest\n | GetAllSnaps\n | GetPermissions\n | DeleteInterface;\n\nexport type SnapInsightsControllerActions = never;\n\nexport type SnapInsightsControllerAllowedEvents =\n | TransactionControllerUnapprovedTransactionAddedEvent\n | TransactionControllerTransactionStatusUpdatedEvent\n | SignatureStateChange;\n\nexport type SnapInsightsControllerMessenger = RestrictedControllerMessenger<\n typeof controllerName,\n SnapInsightsControllerActions | SnapInsightsControllerAllowedActions,\n SnapInsightsControllerAllowedEvents,\n SnapInsightsControllerAllowedActions['type'],\n SnapInsightsControllerAllowedEvents['type']\n>;\n\nexport type SnapInsight = {\n snapId: SnapId;\n interfaceId?: string | null;\n error?: string;\n loading: boolean;\n severity?: string;\n};\n\nexport type SnapInsightsControllerState = {\n insights: Record<string, Record<SnapId, SnapInsight>>;\n};\n\nexport type SnapInsightsControllerArgs = {\n messenger: SnapInsightsControllerMessenger;\n state?: SnapInsightsControllerState;\n};\n\ntype SnapWithPermission = {\n snapId: SnapId;\n permission: ValidPermission<string, Caveat<string, Json>>;\n};\n\n/**\n * Controller for monitoring for new transactions and signatures to provide insight for.\n */\nexport class SnapInsightsController extends BaseController<\n typeof controllerName,\n SnapInsightsControllerState,\n SnapInsightsControllerMessenger\n> {\n constructor({ messenger, state }: SnapInsightsControllerArgs) {\n super({\n messenger,\n metadata: {\n insights: { persist: false, anonymous: false },\n },\n name: controllerName,\n state: { insights: {}, ...state },\n });\n\n this.messagingSystem.subscribe(\n 'TransactionController:unapprovedTransactionAdded',\n this.#handleTransaction.bind(this),\n );\n\n this.messagingSystem.subscribe(\n 'TransactionController:transactionStatusUpdated',\n this.#handleTransactionStatusUpdate.bind(this),\n );\n\n this.messagingSystem.subscribe(\n 'SignatureController:stateChange',\n this.#handleSignatureStateChange.bind(this),\n );\n }\n\n /**\n * Check if an insight already exists for a given ID.\n *\n * @param id - The ID.\n * @returns True if the insight already exists, otherwise false.\n */\n #hasInsight(id: string) {\n return hasProperty(this.state.insights, id);\n }\n\n /**\n * Get a list of runnable Snaps that have a given permission.\n * Also includes the permission object itself.\n *\n * @param permissionName - The permission name.\n * @returns A list of objects containing Snap IDs and the permission object.\n */\n #getSnapsWithPermission(permissionName: string) {\n const allSnaps = this.messagingSystem.call('SnapController:getAll');\n const filteredSnaps = getRunnableSnaps(allSnaps);\n\n return filteredSnaps.reduce<SnapWithPermission[]>((accumulator, snap) => {\n const permissions = this.messagingSystem.call(\n 'PermissionController:getPermissions',\n snap.id,\n );\n if (permissions && hasProperty(permissions, permissionName)) {\n accumulator.push({\n snapId: snap.id,\n permission: permissions[permissionName],\n });\n }\n\n return accumulator;\n }, []);\n }\n\n /**\n * Handle a newly added unapproved transaction.\n * This function fetches insights from all available Snaps\n * and populates the insights state blob with the responses.\n *\n * @param transaction - The transaction object.\n */\n #handleTransaction(transaction: TransactionMeta) {\n const { id, txParams, chainId, origin } = transaction;\n\n // This assumes that the transactions are EVM-compatible for now.\n const caipChainId = `eip155:${parseInt(chainId, 16)}`;\n\n const snaps = this.#getSnapsWithPermission(\n SnapEndowments.TransactionInsight,\n );\n\n snaps.forEach(({ snapId, permission }) => {\n const hasTransactionOriginCaveat = getTransactionOriginCaveat(permission);\n const transactionOrigin =\n hasTransactionOriginCaveat && origin ? origin : null;\n\n this.update((state) => {\n state.insights[id] ??= {};\n state.insights[id][snapId] = { snapId, loading: true };\n });\n\n this.#handleSnapRequest({\n snapId,\n handler: HandlerType.OnTransaction,\n params: {\n transaction: txParams,\n chainId: caipChainId,\n transactionOrigin,\n },\n })\n .then((response) =>\n this.#handleSnapResponse({\n id,\n snapId,\n response: response as Record<string, Json>,\n }),\n )\n .catch((error) => this.#handleSnapResponse({ id, snapId, error }));\n });\n }\n\n /**\n * Handle the stateChange event emitted by the SignatureController.\n * This function will remove existing insights from the state when applicable, as well as\n * trigger insight fetching for newly added signatures.\n *\n * @param state - The SignatureController state blob.\n */\n #handleSignatureStateChange(state: SignatureControllerState) {\n // If any IDs have disappeared since the last state update, the insight may be cleaned up.\n for (const id of Object.keys(this.state.insights)) {\n if (\n !hasProperty(state.unapprovedTypedMessages, id) &&\n !hasProperty(state.unapprovedPersonalMsgs, id)\n ) {\n this.#handleInsightCleanup(id);\n }\n }\n\n if (\n state.unapprovedPersonalMsgCount > 0 ||\n state.unapprovedTypedMessagesCount > 0\n ) {\n const snaps = this.#getSnapsWithPermission(\n SnapEndowments.SignatureInsight,\n );\n\n // This isn't very efficient, but SignatureController doesn't expose a better event for us to use yet.\n for (const personalSignature of Object.values(\n state.unapprovedPersonalMsgs,\n )) {\n this.#handleSignature(snaps, personalSignature);\n }\n\n for (const typedMessage of Object.values(state.unapprovedTypedMessages)) {\n this.#handleSignature(snaps, typedMessage);\n }\n }\n }\n\n /**\n * Handle a newly added unapproved signature.\n * This function fetches insights from all available Snaps\n * and populates the insights state blob with the responses.\n *\n * @param snaps - A list of Snaps to invoke.\n * @param signature - The signature object.\n */\n #handleSignature(snaps: SnapWithPermission[], signature: StateSignature) {\n const { id, msgParams } = signature;\n\n if (this.#hasInsight(id)) {\n return;\n }\n\n const { from, data, signatureMethod, origin } = msgParams;\n\n /**\n * Both eth_signTypedData_v3 and eth_signTypedData_v4 methods\n * need to be parsed because their data is stringified. All other\n * signature methods do not, so they are ignored.\n */\n const shouldParse =\n signatureMethod === 'eth_signTypedData_v3' ||\n signatureMethod === 'eth_signTypedData_v4';\n\n const payload = {\n from,\n data: shouldParse ? JSON.parse(data as string) : data,\n signatureMethod,\n };\n\n snaps.forEach(({ snapId, permission }) => {\n const hasSignatureOriginCaveat = getSignatureOriginCaveat(permission);\n const signatureOrigin =\n origin && hasSignatureOriginCaveat ? origin : null;\n\n this.update((state) => {\n state.insights[id] ??= {};\n state.insights[id][snapId] = { snapId, loading: true };\n });\n\n this.#handleSnapRequest({\n snapId,\n handler: HandlerType.OnSignature,\n params: { signature: payload, signatureOrigin },\n })\n .then((response) =>\n this.#handleSnapResponse({\n id,\n snapId,\n response: response as Record<string, Json>,\n }),\n )\n .catch((error) => this.#handleSnapResponse({ id, snapId, error }));\n });\n }\n\n /**\n * Handle the transactionStatusUpdated event emitted by the TransactionController.\n * This function will remove insights for the transaction in question\n * once the transaction status has changed from unapproved.\n *\n * @param args - An options bag.\n * @param args.transactionMeta - The transaction.\n */\n #handleTransactionStatusUpdate({\n transactionMeta,\n }: {\n transactionMeta: TransactionMeta;\n }) {\n if (transactionMeta.status !== 'unapproved') {\n this.#handleInsightCleanup(transactionMeta.id);\n }\n }\n\n #handleInsightCleanup(id: string) {\n if (!this.#hasInsight(id)) {\n return;\n }\n\n // Delete interfaces from interface controller.\n Object.values(this.state.insights[id])\n .filter((insight) => insight.interfaceId)\n .forEach((insight) => {\n this.messagingSystem.call(\n 'SnapInterfaceController:deleteInterface',\n insight.interfaceId as string,\n );\n });\n\n this.update((state) => {\n delete state.insights[id];\n });\n }\n\n /**\n * Handle sending a request to a given Snap with a given payload.\n *\n * @param args - An options bag.\n * @param args.snapId - The Snap ID.\n * @param args.handler - The handler to invoke.\n * @param args.params - The JSON-RPC params to send.\n * @returns The response from the Snap.\n */\n async #handleSnapRequest({\n snapId,\n handler,\n params,\n }: {\n snapId: SnapId;\n handler: HandlerType.OnTransaction | HandlerType.OnSignature;\n params: Record<string, Json>;\n }) {\n return this.messagingSystem.call('SnapController:handleRequest', {\n snapId,\n origin: '',\n handler,\n request: {\n method: '',\n params,\n },\n });\n }\n\n /**\n * Handle response from a given Snap by persisting the response or error in state.\n *\n * @param args - An options bag.\n * @param args.id - The transaction or signature ID.\n * @param args.snapId - The Snap ID.\n * @param args.response - An optional response object returned by the Snap.\n * @param args.error - An optional error returned by the Snap.\n */\n #handleSnapResponse({\n id,\n snapId,\n response,\n error,\n }: {\n id: string;\n snapId: SnapId;\n response?: Record<string, Json>;\n error?: Error;\n }) {\n this.update((state) => {\n state.insights[id][snapId].loading = false;\n state.insights[id][snapId].interfaceId = response?.id as string;\n state.insights[id][snapId].severity = response?.severity as string;\n state.insights[id][snapId].error = error?.message;\n });\n }\n}\n"]}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
constructState,
|
|
3
3
|
getJsxInterface,
|
|
4
4
|
validateInterfaceContext
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-3WEWHK2I.mjs";
|
|
6
6
|
import {
|
|
7
7
|
__privateAdd,
|
|
8
8
|
__privateMethod
|
|
@@ -250,4 +250,4 @@ validateContent_fn = async function(element) {
|
|
|
250
250
|
export {
|
|
251
251
|
SnapInterfaceController
|
|
252
252
|
};
|
|
253
|
-
//# sourceMappingURL=chunk-
|
|
253
|
+
//# sourceMappingURL=chunk-CJY2LYEL.mjs.map
|
|
@@ -25,6 +25,10 @@ function constructComponentSpecificDefaultState(element) {
|
|
|
25
25
|
const children = _snapsutils.getJsxChildren.call(void 0, element);
|
|
26
26
|
return children[0]?.props.value;
|
|
27
27
|
}
|
|
28
|
+
case "RadioGroup": {
|
|
29
|
+
const children = _snapsutils.getJsxChildren.call(void 0, element);
|
|
30
|
+
return children[0]?.props.value;
|
|
31
|
+
}
|
|
28
32
|
case "Checkbox":
|
|
29
33
|
return false;
|
|
30
34
|
default:
|
|
@@ -62,7 +66,7 @@ function constructState(oldState, rootComponent) {
|
|
|
62
66
|
newState[component.props.name] = {};
|
|
63
67
|
return;
|
|
64
68
|
}
|
|
65
|
-
if (currentForm && (component.type === "Input" || component.type === "Dropdown" || component.type === "FileInput" || component.type === "Checkbox")) {
|
|
69
|
+
if (currentForm && (component.type === "Input" || component.type === "Dropdown" || component.type === "RadioGroup" || component.type === "FileInput" || component.type === "Checkbox")) {
|
|
66
70
|
const formState = newState[currentForm.name];
|
|
67
71
|
assertNameIsUnique(formState, component.props.name);
|
|
68
72
|
formState[component.props.name] = constructInputState(
|
|
@@ -72,7 +76,7 @@ function constructState(oldState, rootComponent) {
|
|
|
72
76
|
);
|
|
73
77
|
return;
|
|
74
78
|
}
|
|
75
|
-
if (component.type === "Input" || component.type === "Dropdown" || component.type === "FileInput" || component.type === "Checkbox") {
|
|
79
|
+
if (component.type === "Input" || component.type === "Dropdown" || component.type === "RadioGroup" || component.type === "FileInput" || component.type === "Checkbox") {
|
|
76
80
|
assertNameIsUnique(newState, component.props.name);
|
|
77
81
|
newState[component.props.name] = constructInputState(oldState, component);
|
|
78
82
|
}
|
|
@@ -97,4 +101,4 @@ function validateInterfaceContext(context) {
|
|
|
97
101
|
|
|
98
102
|
|
|
99
103
|
exports.getJsxInterface = getJsxInterface; exports.assertNameIsUnique = assertNameIsUnique; exports.constructState = constructState; exports.validateInterfaceContext = validateInterfaceContext;
|
|
100
|
-
//# sourceMappingURL=chunk-
|
|
104
|
+
//# sourceMappingURL=chunk-EVKVZUYY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/interface/utils.ts"],"names":[],"mappings":";AAAA,SAAS,cAAc;AAkBvB,SAAS,0BAA0B;AACnC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAUA,SAAS,gBAAgB,WAA2C;AACzE,MAAI,mBAAmB,SAAS,GAAG;AACjC,WAAO;AAAA,EACT;AAEA,SAAO,2BAA2B,SAAS;AAC7C;AAQO,SAAS,mBAAmB,OAAuB,MAAc;AACtE;AAAA,IACE,MAAM,IAAI,MAAM;AAAA,IAChB,4EAA4E,IAAI;AAAA,EAClF;AACF;AAWA,SAAS,uCACP,SACA;AACA,UAAQ,QAAQ,MAAM;AAAA,IACpB,KAAK,YAAY;AACf,YAAM,WAAW,eAAe,OAAO;AACvC,aAAO,SAAS,CAAC,GAAG,MAAM;AAAA,IAC5B;AAAA,IAEA,KAAK,cAAc;AACjB,YAAM,WAAW,eAAe,OAAO;AACvC,aAAO,SAAS,CAAC,GAAG,MAAM;AAAA,IAC5B;AAAA,IAEA,KAAK;AACH,aAAO;AAAA,IAET;AACE,aAAO;AAAA,EACX;AACF;AAWA,SAAS,uBACP,SACA;AACA,UAAQ,QAAQ,MAAM;AAAA,IACpB,KAAK;AACH,aAAO,QAAQ,MAAM;AAAA,IAEvB;AACE,aAAO,QAAQ,MAAM;AAAA,EACzB;AACF;AAUA,SAAS,oBACP,UACA,SAMA,MACA;AACA,QAAM,oBAAoB,OAAQ,SAAS,IAAI,IAAkB;AACjE,QAAM,gBAAgB,oBAAoB,QAAQ,MAAM,IAAI;AAE5D,MAAI,QAAQ,SAAS,aAAa;AAChC,WAAO,iBAAiB;AAAA,EAC1B;AAEA,SACE,uBAAuB,OAAO,KAC9B,iBACA,uCAAuC,OAAO,KAC9C;AAEJ;AASO,SAAS,eACd,UACA,eACgB;AAChB,QAAM,WAA2B,CAAC;AAGlC,QAAM,YAA+C,CAAC;AAEtD,UAAQ,eAAe,CAAC,WAAW,UAAU;AAC3C,QAAI,cAAc,UAAU,UAAU,SAAS,CAAC;AAGhD,QAAI,eAAe,SAAS,YAAY,OAAO;AAC7C,gBAAU,IAAI;AACd,oBAAc,UAAU,UAAU,SAAS,CAAC;AAAA,IAC9C;AAEA,QAAI,UAAU,SAAS,QAAQ;AAC7B,yBAAmB,UAAU,UAAU,MAAM,IAAI;AACjD,gBAAU,KAAK,EAAE,MAAM,UAAU,MAAM,MAAM,MAAM,CAAC;AACpD,eAAS,UAAU,MAAM,IAAI,IAAI,CAAC;AAClC;AAAA,IACF;AAGA,QACE,gBACC,UAAU,SAAS,WAClB,UAAU,SAAS,cACnB,UAAU,SAAS,gBACnB,UAAU,SAAS,eACnB,UAAU,SAAS,aACrB;AACA,YAAM,YAAY,SAAS,YAAY,IAAI;AAC3C,yBAAmB,WAAW,UAAU,MAAM,IAAI;AAClD,gBAAU,UAAU,MAAM,IAAI,IAAI;AAAA,QAChC;AAAA,QACA;AAAA,QACA,YAAY;AAAA,MACd;AACA;AAAA,IACF;AAGA,QACE,UAAU,SAAS,WACnB,UAAU,SAAS,cACnB,UAAU,SAAS,gBACnB,UAAU,SAAS,eACnB,UAAU,SAAS,YACnB;AACA,yBAAmB,UAAU,UAAU,MAAM,IAAI;AACjD,eAAS,UAAU,MAAM,IAAI,IAAI,oBAAoB,UAAU,SAAS;AAAA,IAC1E;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,IAAM,mBAAmB;AAQlB,SAAS,yBAAyB,SAA4B;AACnE,MAAI,CAAC,SAAS;AACZ;AAAA,EACF;AAIA,QAAM,OAAO,kBAAkB,OAAO;AACtC;AAAA,IACE,QAAQ;AAAA,IACR,mDACE,mBAAmB,GACrB;AAAA,EACF;AACF","sourcesContent":["import { assert } from '@metamask/snaps-sdk';\nimport type {\n FormState,\n InterfaceState,\n ComponentOrElement,\n InterfaceContext,\n State,\n} from '@metamask/snaps-sdk';\nimport type {\n DropdownElement,\n InputElement,\n JSXElement,\n OptionElement,\n FileInputElement,\n CheckboxElement,\n RadioGroupElement,\n RadioElement,\n} from '@metamask/snaps-sdk/jsx';\nimport { isJSXElementUnsafe } from '@metamask/snaps-sdk/jsx';\nimport {\n getJsonSizeUnsafe,\n getJsxChildren,\n getJsxElementFromComponent,\n walkJsx,\n} from '@metamask/snaps-utils';\n\n/**\n * Get a JSX element from a component or JSX element. If the component is a\n * JSX element, it is returned as is. Otherwise, the component is converted to\n * a JSX element.\n *\n * @param component - The component to convert.\n * @returns The JSX element.\n */\nexport function getJsxInterface(component: ComponentOrElement): JSXElement {\n if (isJSXElementUnsafe(component)) {\n return component;\n }\n\n return getJsxElementFromComponent(component);\n}\n\n/**\n * Assert that the component name is unique in state.\n *\n * @param state - The interface state to verify against.\n * @param name - The component name to verify.\n */\nexport function assertNameIsUnique(state: InterfaceState, name: string) {\n assert(\n state[name] === undefined,\n `Duplicate component names are not allowed, found multiple instances of: \"${name}\".`,\n );\n}\n\n/**\n * Construct default state for a component.\n *\n * This function is meant to be used inside constructInputState to account\n * for component specific defaults and will not override the component value or existing form state.\n *\n * @param element - The input element.\n * @returns The default state for the specific component, if any.\n */\nfunction constructComponentSpecificDefaultState(\n element: InputElement | DropdownElement | RadioGroupElement | CheckboxElement,\n) {\n switch (element.type) {\n case 'Dropdown': {\n const children = getJsxChildren(element) as OptionElement[];\n return children[0]?.props.value;\n }\n\n case 'RadioGroup': {\n const children = getJsxChildren(element) as RadioElement[];\n return children[0]?.props.value;\n }\n\n case 'Checkbox':\n return false;\n\n default:\n return null;\n }\n}\n\n/**\n * Get the state value for a stateful component.\n *\n * Most components store the state value as a `value` prop.\n * This function exists to account for components where that isn't the case.\n *\n * @param element - The input element.\n * @returns The state value for a given component.\n */\nfunction getComponentStateValue(\n element: InputElement | DropdownElement | RadioGroupElement | CheckboxElement,\n) {\n switch (element.type) {\n case 'Checkbox':\n return element.props.checked;\n\n default:\n return element.props.value;\n }\n}\n\n/**\n * Construct the state for an input field.\n *\n * @param oldState - The previous state.\n * @param element - The input element.\n * @param form - An optional form that the input is enclosed in.\n * @returns The input state.\n */\nfunction constructInputState(\n oldState: InterfaceState,\n element:\n | InputElement\n | DropdownElement\n | RadioGroupElement\n | FileInputElement\n | CheckboxElement,\n form?: string,\n) {\n const oldStateUnwrapped = form ? (oldState[form] as FormState) : oldState;\n const oldInputState = oldStateUnwrapped?.[element.props.name] as State;\n\n if (element.type === 'FileInput') {\n return oldInputState ?? null;\n }\n\n return (\n getComponentStateValue(element) ??\n oldInputState ??\n constructComponentSpecificDefaultState(element) ??\n null\n );\n}\n\n/**\n * Construct the interface state for a given component tree.\n *\n * @param oldState - The previous state.\n * @param rootComponent - The UI component to construct state from.\n * @returns The interface state of the passed component.\n */\nexport function constructState(\n oldState: InterfaceState,\n rootComponent: JSXElement,\n): InterfaceState {\n const newState: InterfaceState = {};\n\n // Stack containing the forms we have visited and at which depth\n const formStack: { name: string; depth: number }[] = [];\n\n walkJsx(rootComponent, (component, depth) => {\n let currentForm = formStack[formStack.length - 1];\n\n // Pop the current form of the stack once we leave its depth.\n if (currentForm && depth <= currentForm.depth) {\n formStack.pop();\n currentForm = formStack[formStack.length - 1];\n }\n\n if (component.type === 'Form') {\n assertNameIsUnique(newState, component.props.name);\n formStack.push({ name: component.props.name, depth });\n newState[component.props.name] = {};\n return;\n }\n\n // Stateful components inside a form\n if (\n currentForm &&\n (component.type === 'Input' ||\n component.type === 'Dropdown' ||\n component.type === 'RadioGroup' ||\n component.type === 'FileInput' ||\n component.type === 'Checkbox')\n ) {\n const formState = newState[currentForm.name] as FormState;\n assertNameIsUnique(formState, component.props.name);\n formState[component.props.name] = constructInputState(\n oldState,\n component,\n currentForm.name,\n );\n return;\n }\n\n // Stateful components outside a form\n if (\n component.type === 'Input' ||\n component.type === 'Dropdown' ||\n component.type === 'RadioGroup' ||\n component.type === 'FileInput' ||\n component.type === 'Checkbox'\n ) {\n assertNameIsUnique(newState, component.props.name);\n newState[component.props.name] = constructInputState(oldState, component);\n }\n });\n\n return newState;\n}\n\nconst MAX_CONTEXT_SIZE = 1_000_000; // 1 mb\n\n/**\n * Validate a JSON blob to be used as the interface context.\n *\n * @param context - The JSON blob.\n * @throws If the JSON blob is too large.\n */\nexport function validateInterfaceContext(context?: InterfaceContext) {\n if (!context) {\n return;\n }\n\n // We assume the validity of this JSON to be validated by the caller.\n // E.g., in the RPC method implementation.\n const size = getJsonSizeUnsafe(context);\n assert(\n size <= MAX_CONTEXT_SIZE,\n `A Snap interface context may not be larger than ${\n MAX_CONTEXT_SIZE / 1000000\n } MB.`,\n );\n}\n"]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkEVKVZUYYjs = require('./chunk-EVKVZUYY.js');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
@@ -88,11 +88,11 @@ var SnapInterfaceController = class extends _basecontroller.BaseController {
|
|
|
88
88
|
* @returns The newly interface id.
|
|
89
89
|
*/
|
|
90
90
|
async createInterface(snapId, content, context) {
|
|
91
|
-
const element =
|
|
91
|
+
const element = _chunkEVKVZUYYjs.getJsxInterface.call(void 0, content);
|
|
92
92
|
await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _validateContent, validateContent_fn).call(this, element);
|
|
93
|
-
|
|
93
|
+
_chunkEVKVZUYYjs.validateInterfaceContext.call(void 0, context);
|
|
94
94
|
const id = _nanoid.nanoid.call(void 0, );
|
|
95
|
-
const componentState =
|
|
95
|
+
const componentState = _chunkEVKVZUYYjs.constructState.call(void 0, {}, element);
|
|
96
96
|
this.update((draftState) => {
|
|
97
97
|
draftState.interfaces[id] = {
|
|
98
98
|
snapId,
|
|
@@ -123,10 +123,10 @@ var SnapInterfaceController = class extends _basecontroller.BaseController {
|
|
|
123
123
|
*/
|
|
124
124
|
async updateInterface(snapId, id, content) {
|
|
125
125
|
_chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _validateArgs, validateArgs_fn).call(this, snapId, id);
|
|
126
|
-
const element =
|
|
126
|
+
const element = _chunkEVKVZUYYjs.getJsxInterface.call(void 0, content);
|
|
127
127
|
await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _validateContent, validateContent_fn).call(this, element);
|
|
128
128
|
const oldState = this.state.interfaces[id].state;
|
|
129
|
-
const newState =
|
|
129
|
+
const newState = _chunkEVKVZUYYjs.constructState.call(void 0, oldState, element);
|
|
130
130
|
this.update((draftState) => {
|
|
131
131
|
draftState.interfaces[id].state = newState;
|
|
132
132
|
draftState.interfaces[id].content = element;
|
|
@@ -250,4 +250,4 @@ validateContent_fn = async function(element) {
|
|
|
250
250
|
|
|
251
251
|
|
|
252
252
|
exports.SnapInterfaceController = SnapInterfaceController;
|
|
253
|
-
//# sourceMappingURL=chunk-
|
|
253
|
+
//# sourceMappingURL=chunk-OJBUUQ5D.js.map
|
|
@@ -265,6 +265,7 @@ handleSnapResponse_fn = function({
|
|
|
265
265
|
this.update((state) => {
|
|
266
266
|
state.insights[id][snapId].loading = false;
|
|
267
267
|
state.insights[id][snapId].interfaceId = response?.id;
|
|
268
|
+
state.insights[id][snapId].severity = response?.severity;
|
|
268
269
|
state.insights[id][snapId].error = error?.message;
|
|
269
270
|
});
|
|
270
271
|
};
|
|
@@ -272,4 +273,4 @@ handleSnapResponse_fn = function({
|
|
|
272
273
|
export {
|
|
273
274
|
SnapInsightsController
|
|
274
275
|
};
|
|
275
|
-
//# sourceMappingURL=chunk-
|
|
276
|
+
//# sourceMappingURL=chunk-UMVUXQ3B.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/insights/SnapInsightsController.ts"],"sourcesContent":["import type { RestrictedControllerMessenger } from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type {\n Caveat,\n GetPermissions,\n ValidPermission,\n} from '@metamask/permission-controller';\nimport {\n getSignatureOriginCaveat,\n getTransactionOriginCaveat,\n SnapEndowments,\n} from '@metamask/snaps-rpc-methods';\nimport type { Json, SnapId } from '@metamask/snaps-sdk';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport { hasProperty } from '@metamask/utils';\n\nimport type { DeleteInterface } from '../interface';\nimport type { GetAllSnaps, HandleSnapRequest } from '../snaps';\nimport { getRunnableSnaps } from '../snaps';\nimport type {\n TransactionControllerUnapprovedTransactionAddedEvent,\n TransactionMeta,\n SignatureStateChange,\n SignatureControllerState,\n StateSignature,\n TransactionControllerTransactionStatusUpdatedEvent,\n} from '../types';\n\nconst controllerName = 'SnapInsightsController';\n\nexport type SnapInsightsControllerAllowedActions =\n | HandleSnapRequest\n | GetAllSnaps\n | GetPermissions\n | DeleteInterface;\n\nexport type SnapInsightsControllerActions = never;\n\nexport type SnapInsightsControllerAllowedEvents =\n | TransactionControllerUnapprovedTransactionAddedEvent\n | TransactionControllerTransactionStatusUpdatedEvent\n | SignatureStateChange;\n\nexport type SnapInsightsControllerMessenger = RestrictedControllerMessenger<\n typeof controllerName,\n SnapInsightsControllerActions | SnapInsightsControllerAllowedActions,\n SnapInsightsControllerAllowedEvents,\n SnapInsightsControllerAllowedActions['type'],\n SnapInsightsControllerAllowedEvents['type']\n>;\n\nexport type SnapInsight = {\n snapId: SnapId;\n interfaceId?: string | null;\n error?: string;\n loading: boolean;\n severity?: string;\n};\n\nexport type SnapInsightsControllerState = {\n insights: Record<string, Record<SnapId, SnapInsight>>;\n};\n\nexport type SnapInsightsControllerArgs = {\n messenger: SnapInsightsControllerMessenger;\n state?: SnapInsightsControllerState;\n};\n\ntype SnapWithPermission = {\n snapId: SnapId;\n permission: ValidPermission<string, Caveat<string, Json>>;\n};\n\n/**\n * Controller for monitoring for new transactions and signatures to provide insight for.\n */\nexport class SnapInsightsController extends BaseController<\n typeof controllerName,\n SnapInsightsControllerState,\n SnapInsightsControllerMessenger\n> {\n constructor({ messenger, state }: SnapInsightsControllerArgs) {\n super({\n messenger,\n metadata: {\n insights: { persist: false, anonymous: false },\n },\n name: controllerName,\n state: { insights: {}, ...state },\n });\n\n this.messagingSystem.subscribe(\n 'TransactionController:unapprovedTransactionAdded',\n this.#handleTransaction.bind(this),\n );\n\n this.messagingSystem.subscribe(\n 'TransactionController:transactionStatusUpdated',\n this.#handleTransactionStatusUpdate.bind(this),\n );\n\n this.messagingSystem.subscribe(\n 'SignatureController:stateChange',\n this.#handleSignatureStateChange.bind(this),\n );\n }\n\n /**\n * Check if an insight already exists for a given ID.\n *\n * @param id - The ID.\n * @returns True if the insight already exists, otherwise false.\n */\n #hasInsight(id: string) {\n return hasProperty(this.state.insights, id);\n }\n\n /**\n * Get a list of runnable Snaps that have a given permission.\n * Also includes the permission object itself.\n *\n * @param permissionName - The permission name.\n * @returns A list of objects containing Snap IDs and the permission object.\n */\n #getSnapsWithPermission(permissionName: string) {\n const allSnaps = this.messagingSystem.call('SnapController:getAll');\n const filteredSnaps = getRunnableSnaps(allSnaps);\n\n return filteredSnaps.reduce<SnapWithPermission[]>((accumulator, snap) => {\n const permissions = this.messagingSystem.call(\n 'PermissionController:getPermissions',\n snap.id,\n );\n if (permissions && hasProperty(permissions, permissionName)) {\n accumulator.push({\n snapId: snap.id,\n permission: permissions[permissionName],\n });\n }\n\n return accumulator;\n }, []);\n }\n\n /**\n * Handle a newly added unapproved transaction.\n * This function fetches insights from all available Snaps\n * and populates the insights state blob with the responses.\n *\n * @param transaction - The transaction object.\n */\n #handleTransaction(transaction: TransactionMeta) {\n const { id, txParams, chainId, origin } = transaction;\n\n // This assumes that the transactions are EVM-compatible for now.\n const caipChainId = `eip155:${parseInt(chainId, 16)}`;\n\n const snaps = this.#getSnapsWithPermission(\n SnapEndowments.TransactionInsight,\n );\n\n snaps.forEach(({ snapId, permission }) => {\n const hasTransactionOriginCaveat = getTransactionOriginCaveat(permission);\n const transactionOrigin =\n hasTransactionOriginCaveat && origin ? origin : null;\n\n this.update((state) => {\n state.insights[id] ??= {};\n state.insights[id][snapId] = { snapId, loading: true };\n });\n\n this.#handleSnapRequest({\n snapId,\n handler: HandlerType.OnTransaction,\n params: {\n transaction: txParams,\n chainId: caipChainId,\n transactionOrigin,\n },\n })\n .then((response) =>\n this.#handleSnapResponse({\n id,\n snapId,\n response: response as Record<string, Json>,\n }),\n )\n .catch((error) => this.#handleSnapResponse({ id, snapId, error }));\n });\n }\n\n /**\n * Handle the stateChange event emitted by the SignatureController.\n * This function will remove existing insights from the state when applicable, as well as\n * trigger insight fetching for newly added signatures.\n *\n * @param state - The SignatureController state blob.\n */\n #handleSignatureStateChange(state: SignatureControllerState) {\n // If any IDs have disappeared since the last state update, the insight may be cleaned up.\n for (const id of Object.keys(this.state.insights)) {\n if (\n !hasProperty(state.unapprovedTypedMessages, id) &&\n !hasProperty(state.unapprovedPersonalMsgs, id)\n ) {\n this.#handleInsightCleanup(id);\n }\n }\n\n if (\n state.unapprovedPersonalMsgCount > 0 ||\n state.unapprovedTypedMessagesCount > 0\n ) {\n const snaps = this.#getSnapsWithPermission(\n SnapEndowments.SignatureInsight,\n );\n\n // This isn't very efficient, but SignatureController doesn't expose a better event for us to use yet.\n for (const personalSignature of Object.values(\n state.unapprovedPersonalMsgs,\n )) {\n this.#handleSignature(snaps, personalSignature);\n }\n\n for (const typedMessage of Object.values(state.unapprovedTypedMessages)) {\n this.#handleSignature(snaps, typedMessage);\n }\n }\n }\n\n /**\n * Handle a newly added unapproved signature.\n * This function fetches insights from all available Snaps\n * and populates the insights state blob with the responses.\n *\n * @param snaps - A list of Snaps to invoke.\n * @param signature - The signature object.\n */\n #handleSignature(snaps: SnapWithPermission[], signature: StateSignature) {\n const { id, msgParams } = signature;\n\n if (this.#hasInsight(id)) {\n return;\n }\n\n const { from, data, signatureMethod, origin } = msgParams;\n\n /**\n * Both eth_signTypedData_v3 and eth_signTypedData_v4 methods\n * need to be parsed because their data is stringified. All other\n * signature methods do not, so they are ignored.\n */\n const shouldParse =\n signatureMethod === 'eth_signTypedData_v3' ||\n signatureMethod === 'eth_signTypedData_v4';\n\n const payload = {\n from,\n data: shouldParse ? JSON.parse(data as string) : data,\n signatureMethod,\n };\n\n snaps.forEach(({ snapId, permission }) => {\n const hasSignatureOriginCaveat = getSignatureOriginCaveat(permission);\n const signatureOrigin =\n origin && hasSignatureOriginCaveat ? origin : null;\n\n this.update((state) => {\n state.insights[id] ??= {};\n state.insights[id][snapId] = { snapId, loading: true };\n });\n\n this.#handleSnapRequest({\n snapId,\n handler: HandlerType.OnSignature,\n params: { signature: payload, signatureOrigin },\n })\n .then((response) =>\n this.#handleSnapResponse({\n id,\n snapId,\n response: response as Record<string, Json>,\n }),\n )\n .catch((error) => this.#handleSnapResponse({ id, snapId, error }));\n });\n }\n\n /**\n * Handle the transactionStatusUpdated event emitted by the TransactionController.\n * This function will remove insights for the transaction in question\n * once the transaction status has changed from unapproved.\n *\n * @param args - An options bag.\n * @param args.transactionMeta - The transaction.\n */\n #handleTransactionStatusUpdate({\n transactionMeta,\n }: {\n transactionMeta: TransactionMeta;\n }) {\n if (transactionMeta.status !== 'unapproved') {\n this.#handleInsightCleanup(transactionMeta.id);\n }\n }\n\n #handleInsightCleanup(id: string) {\n if (!this.#hasInsight(id)) {\n return;\n }\n\n // Delete interfaces from interface controller.\n Object.values(this.state.insights[id])\n .filter((insight) => insight.interfaceId)\n .forEach((insight) => {\n this.messagingSystem.call(\n 'SnapInterfaceController:deleteInterface',\n insight.interfaceId as string,\n );\n });\n\n this.update((state) => {\n delete state.insights[id];\n });\n }\n\n /**\n * Handle sending a request to a given Snap with a given payload.\n *\n * @param args - An options bag.\n * @param args.snapId - The Snap ID.\n * @param args.handler - The handler to invoke.\n * @param args.params - The JSON-RPC params to send.\n * @returns The response from the Snap.\n */\n async #handleSnapRequest({\n snapId,\n handler,\n params,\n }: {\n snapId: SnapId;\n handler: HandlerType.OnTransaction | HandlerType.OnSignature;\n params: Record<string, Json>;\n }) {\n return this.messagingSystem.call('SnapController:handleRequest', {\n snapId,\n origin: '',\n handler,\n request: {\n method: '',\n params,\n },\n });\n }\n\n /**\n * Handle response from a given Snap by persisting the response or error in state.\n *\n * @param args - An options bag.\n * @param args.id - The transaction or signature ID.\n * @param args.snapId - The Snap ID.\n * @param args.response - An optional response object returned by the Snap.\n * @param args.error - An optional error returned by the Snap.\n */\n #handleSnapResponse({\n id,\n snapId,\n response,\n error,\n }: {\n id: string;\n snapId: SnapId;\n response?: Record<string, Json>;\n error?: Error;\n }) {\n this.update((state) => {\n state.insights[id][snapId].loading = false;\n state.insights[id][snapId].interfaceId = response?.id as string;\n state.insights[id][snapId].severity = response?.severity as string;\n state.insights[id][snapId].error = error?.message;\n });\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -11,7 +11,7 @@ require('../chunk-FZOI4WPB.js');
|
|
|
11
11
|
require('../chunk-HOY6NKQR.js');
|
|
12
12
|
require('../chunk-PYSDWIVK.js');
|
|
13
13
|
require('../chunk-IDCWJJCQ.js');
|
|
14
|
-
require('../chunk-
|
|
14
|
+
require('../chunk-5O4O4BI5.js');
|
|
15
15
|
require('../chunk-JAUAKTUL.js');
|
|
16
16
|
require('../chunk-YYPUPKQY.js');
|
|
17
17
|
require('../chunk-FKQTV3LO.js');
|
|
@@ -26,8 +26,8 @@ require('../chunk-4CA3O64H.js');
|
|
|
26
26
|
require('../chunk-AP7CJ6DA.js');
|
|
27
27
|
require('../chunk-JQ54YYLU.js');
|
|
28
28
|
require('../chunk-VNOCJWOK.js');
|
|
29
|
-
require('../chunk-
|
|
30
|
-
require('../chunk-
|
|
29
|
+
require('../chunk-OJBUUQ5D.js');
|
|
30
|
+
require('../chunk-EVKVZUYY.js');
|
|
31
31
|
require('../chunk-QRISQRFI.js');
|
|
32
32
|
require('../chunk-OIEUL55W.js');
|
|
33
33
|
require('../chunk-7Y6P5FRN.js');
|
|
@@ -11,7 +11,7 @@ import "../chunk-XOSHP4J3.mjs";
|
|
|
11
11
|
import "../chunk-KCMULJ2M.mjs";
|
|
12
12
|
import "../chunk-LDL6LJ3P.mjs";
|
|
13
13
|
import "../chunk-272IFIK7.mjs";
|
|
14
|
-
import "../chunk-
|
|
14
|
+
import "../chunk-UMVUXQ3B.mjs";
|
|
15
15
|
import "../chunk-BAEXVO3U.mjs";
|
|
16
16
|
import "../chunk-P7Y6MIZW.mjs";
|
|
17
17
|
import "../chunk-2MH7QYBP.mjs";
|
|
@@ -26,8 +26,8 @@ import "../chunk-ZZD3HUNE.mjs";
|
|
|
26
26
|
import "../chunk-NC5PBDKD.mjs";
|
|
27
27
|
import "../chunk-4M2FX2AT.mjs";
|
|
28
28
|
import "../chunk-U74FML7Z.mjs";
|
|
29
|
-
import "../chunk-
|
|
30
|
-
import "../chunk-
|
|
29
|
+
import "../chunk-CJY2LYEL.mjs";
|
|
30
|
+
import "../chunk-3WEWHK2I.mjs";
|
|
31
31
|
import "../chunk-TSDUJNOP.mjs";
|
|
32
32
|
import "../chunk-3RNW7OKG.mjs";
|
|
33
33
|
import "../chunk-ZVOYOZFT.mjs";
|
package/dist/cronjob/index.js
CHANGED
|
@@ -11,7 +11,7 @@ require('../chunk-FZOI4WPB.js');
|
|
|
11
11
|
require('../chunk-HOY6NKQR.js');
|
|
12
12
|
require('../chunk-PYSDWIVK.js');
|
|
13
13
|
require('../chunk-IDCWJJCQ.js');
|
|
14
|
-
require('../chunk-
|
|
14
|
+
require('../chunk-5O4O4BI5.js');
|
|
15
15
|
require('../chunk-JAUAKTUL.js');
|
|
16
16
|
require('../chunk-YYPUPKQY.js');
|
|
17
17
|
require('../chunk-FKQTV3LO.js');
|
|
@@ -26,8 +26,8 @@ require('../chunk-4CA3O64H.js');
|
|
|
26
26
|
require('../chunk-AP7CJ6DA.js');
|
|
27
27
|
require('../chunk-JQ54YYLU.js');
|
|
28
28
|
require('../chunk-VNOCJWOK.js');
|
|
29
|
-
require('../chunk-
|
|
30
|
-
require('../chunk-
|
|
29
|
+
require('../chunk-OJBUUQ5D.js');
|
|
30
|
+
require('../chunk-EVKVZUYY.js');
|
|
31
31
|
require('../chunk-QRISQRFI.js');
|
|
32
32
|
require('../chunk-OIEUL55W.js');
|
|
33
33
|
require('../chunk-7Y6P5FRN.js');
|
package/dist/cronjob/index.mjs
CHANGED
|
@@ -11,7 +11,7 @@ import "../chunk-XOSHP4J3.mjs";
|
|
|
11
11
|
import "../chunk-KCMULJ2M.mjs";
|
|
12
12
|
import "../chunk-LDL6LJ3P.mjs";
|
|
13
13
|
import "../chunk-272IFIK7.mjs";
|
|
14
|
-
import "../chunk-
|
|
14
|
+
import "../chunk-UMVUXQ3B.mjs";
|
|
15
15
|
import "../chunk-BAEXVO3U.mjs";
|
|
16
16
|
import "../chunk-P7Y6MIZW.mjs";
|
|
17
17
|
import "../chunk-2MH7QYBP.mjs";
|
|
@@ -26,8 +26,8 @@ import "../chunk-ZZD3HUNE.mjs";
|
|
|
26
26
|
import "../chunk-NC5PBDKD.mjs";
|
|
27
27
|
import "../chunk-4M2FX2AT.mjs";
|
|
28
28
|
import "../chunk-U74FML7Z.mjs";
|
|
29
|
-
import "../chunk-
|
|
30
|
-
import "../chunk-
|
|
29
|
+
import "../chunk-CJY2LYEL.mjs";
|
|
30
|
+
import "../chunk-3WEWHK2I.mjs";
|
|
31
31
|
import "../chunk-TSDUJNOP.mjs";
|
|
32
32
|
import "../chunk-3RNW7OKG.mjs";
|
|
33
33
|
import "../chunk-ZVOYOZFT.mjs";
|
package/dist/index.js
CHANGED
|
@@ -19,7 +19,7 @@ var _chunkPYSDWIVKjs = require('./chunk-PYSDWIVK.js');
|
|
|
19
19
|
require('./chunk-IDCWJJCQ.js');
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _chunk5O4O4BI5js = require('./chunk-5O4O4BI5.js');
|
|
23
23
|
require('./chunk-JAUAKTUL.js');
|
|
24
24
|
|
|
25
25
|
|
|
@@ -61,8 +61,8 @@ require('./chunk-JQ54YYLU.js');
|
|
|
61
61
|
require('./chunk-VNOCJWOK.js');
|
|
62
62
|
|
|
63
63
|
|
|
64
|
-
var
|
|
65
|
-
require('./chunk-
|
|
64
|
+
var _chunkOJBUUQ5Djs = require('./chunk-OJBUUQ5D.js');
|
|
65
|
+
require('./chunk-EVKVZUYY.js');
|
|
66
66
|
|
|
67
67
|
|
|
68
68
|
|
|
@@ -121,5 +121,5 @@ require('./chunk-EXN2TFDJ.js');
|
|
|
121
121
|
|
|
122
122
|
|
|
123
123
|
|
|
124
|
-
exports.AbstractExecutionService = _chunkQRISQRFIjs.AbstractExecutionService; exports.BaseNpmLocation = _chunkXWDEGRM5js.BaseNpmLocation; exports.CronjobController = _chunkXFUP7RFIjs.CronjobController; exports.DAILY_TIMEOUT = _chunkXFUP7RFIjs.DAILY_TIMEOUT; exports.DEFAULT_NPM_REGISTRY = _chunkXWDEGRM5js.DEFAULT_NPM_REGISTRY; exports.HttpLocation = _chunkRDBT3ZJQjs.HttpLocation; exports.IframeExecutionService = _chunkPYSDWIVKjs.IframeExecutionService; exports.JsonSnapsRegistry = _chunkCPUUURMTjs.JsonSnapsRegistry; exports.LocalLocation = _chunkLWBPKSU2js.LocalLocation; exports.NpmLocation = _chunkXWDEGRM5js.NpmLocation; exports.OffscreenExecutionService = _chunkOVATPF5Ijs.OffscreenExecutionService; exports.ProxyPostMessageStream = _chunk7Y6P5FRNjs.ProxyPostMessageStream; exports.SNAP_APPROVAL_INSTALL = _chunkFKQTV3LOjs.SNAP_APPROVAL_INSTALL; exports.SNAP_APPROVAL_RESULT = _chunkFKQTV3LOjs.SNAP_APPROVAL_RESULT; exports.SNAP_APPROVAL_UPDATE = _chunkFKQTV3LOjs.SNAP_APPROVAL_UPDATE; exports.SnapController = _chunkFKQTV3LOjs.SnapController; exports.SnapInsightsController =
|
|
124
|
+
exports.AbstractExecutionService = _chunkQRISQRFIjs.AbstractExecutionService; exports.BaseNpmLocation = _chunkXWDEGRM5js.BaseNpmLocation; exports.CronjobController = _chunkXFUP7RFIjs.CronjobController; exports.DAILY_TIMEOUT = _chunkXFUP7RFIjs.DAILY_TIMEOUT; exports.DEFAULT_NPM_REGISTRY = _chunkXWDEGRM5js.DEFAULT_NPM_REGISTRY; exports.HttpLocation = _chunkRDBT3ZJQjs.HttpLocation; exports.IframeExecutionService = _chunkPYSDWIVKjs.IframeExecutionService; exports.JsonSnapsRegistry = _chunkCPUUURMTjs.JsonSnapsRegistry; exports.LocalLocation = _chunkLWBPKSU2js.LocalLocation; exports.NpmLocation = _chunkXWDEGRM5js.NpmLocation; exports.OffscreenExecutionService = _chunkOVATPF5Ijs.OffscreenExecutionService; exports.ProxyPostMessageStream = _chunk7Y6P5FRNjs.ProxyPostMessageStream; exports.SNAP_APPROVAL_INSTALL = _chunkFKQTV3LOjs.SNAP_APPROVAL_INSTALL; exports.SNAP_APPROVAL_RESULT = _chunkFKQTV3LOjs.SNAP_APPROVAL_RESULT; exports.SNAP_APPROVAL_UPDATE = _chunkFKQTV3LOjs.SNAP_APPROVAL_UPDATE; exports.SnapController = _chunkFKQTV3LOjs.SnapController; exports.SnapInsightsController = _chunk5O4O4BI5js.SnapInsightsController; exports.SnapInterfaceController = _chunkOJBUUQ5Djs.SnapInterfaceController; exports.SnapsRegistryStatus = _chunk4CA3O64Hjs.SnapsRegistryStatus; exports.TARBALL_SIZE_SAFETY_LIMIT = _chunkXWDEGRM5js.TARBALL_SIZE_SAFETY_LIMIT; exports.WebWorkerExecutionService = _chunkP66VIDFGjs.WebWorkerExecutionService; exports.controllerName = _chunkFKQTV3LOjs.controllerName; exports.delay = _chunkB6KTRDBKjs.delay; exports.delayWithTimer = _chunkB6KTRDBKjs.delayWithTimer; exports.detectSnapLocation = _chunkPOQSARDGjs.detectSnapLocation; exports.fetchNpmMetadata = _chunkXWDEGRM5js.fetchNpmMetadata; exports.fetchSnap = _chunkB6KTRDBKjs.fetchSnap; exports.getNpmCanonicalBasePath = _chunkXWDEGRM5js.getNpmCanonicalBasePath; exports.getRunnableSnaps = _chunkYYPUPKQYjs.getRunnableSnaps; exports.getSnapFiles = _chunkB6KTRDBKjs.getSnapFiles; exports.hasTimedOut = _chunkB6KTRDBKjs.hasTimedOut; exports.permissionsDiff = _chunkB6KTRDBKjs.permissionsDiff; exports.setDiff = _chunkB6KTRDBKjs.setDiff; exports.setupMultiplex = _chunkQRISQRFIjs.setupMultiplex; exports.withTimeout = _chunkB6KTRDBKjs.withTimeout;
|
|
125
125
|
//# sourceMappingURL=index.js.map
|
package/dist/index.mjs
CHANGED
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
import "./chunk-272IFIK7.mjs";
|
|
20
20
|
import {
|
|
21
21
|
SnapInsightsController
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-UMVUXQ3B.mjs";
|
|
23
23
|
import "./chunk-BAEXVO3U.mjs";
|
|
24
24
|
import {
|
|
25
25
|
getRunnableSnaps
|
|
@@ -61,8 +61,8 @@ import "./chunk-4M2FX2AT.mjs";
|
|
|
61
61
|
import "./chunk-U74FML7Z.mjs";
|
|
62
62
|
import {
|
|
63
63
|
SnapInterfaceController
|
|
64
|
-
} from "./chunk-
|
|
65
|
-
import "./chunk-
|
|
64
|
+
} from "./chunk-CJY2LYEL.mjs";
|
|
65
|
+
import "./chunk-3WEWHK2I.mjs";
|
|
66
66
|
import {
|
|
67
67
|
AbstractExecutionService,
|
|
68
68
|
setupMultiplex
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunk5O4O4BI5js = require('../chunk-5O4O4BI5.js');
|
|
4
4
|
require('../chunk-JAUAKTUL.js');
|
|
5
5
|
require('../chunk-YYPUPKQY.js');
|
|
6
6
|
require('../chunk-FKQTV3LO.js');
|
|
@@ -21,5 +21,5 @@ require('../chunk-BOFPNIRX.js');
|
|
|
21
21
|
require('../chunk-EXN2TFDJ.js');
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
exports.SnapInsightsController =
|
|
24
|
+
exports.SnapInsightsController = _chunk5O4O4BI5js.SnapInsightsController;
|
|
25
25
|
//# sourceMappingURL=SnapInsightsController.js.map
|
package/dist/insights/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-IDCWJJCQ.js');
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunk5O4O4BI5js = require('../chunk-5O4O4BI5.js');
|
|
5
5
|
require('../chunk-JAUAKTUL.js');
|
|
6
6
|
require('../chunk-YYPUPKQY.js');
|
|
7
7
|
require('../chunk-FKQTV3LO.js');
|
|
@@ -22,5 +22,5 @@ require('../chunk-BOFPNIRX.js');
|
|
|
22
22
|
require('../chunk-EXN2TFDJ.js');
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
exports.SnapInsightsController =
|
|
25
|
+
exports.SnapInsightsController = _chunk5O4O4BI5js.SnapInsightsController;
|
|
26
26
|
//# sourceMappingURL=index.js.map
|
package/dist/insights/index.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
3
|
+
var _chunkOJBUUQ5Djs = require('../chunk-OJBUUQ5D.js');
|
|
4
|
+
require('../chunk-EVKVZUYY.js');
|
|
5
5
|
require('../chunk-EXN2TFDJ.js');
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
exports.SnapInterfaceController =
|
|
8
|
+
exports.SnapInterfaceController = _chunkOJBUUQ5Djs.SnapInterfaceController;
|
|
9
9
|
//# sourceMappingURL=SnapInterfaceController.js.map
|
package/dist/interface/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-VNOCJWOK.js');
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
require('../chunk-
|
|
4
|
+
var _chunkOJBUUQ5Djs = require('../chunk-OJBUUQ5D.js');
|
|
5
|
+
require('../chunk-EVKVZUYY.js');
|
|
6
6
|
require('../chunk-EXN2TFDJ.js');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
exports.SnapInterfaceController =
|
|
9
|
+
exports.SnapInterfaceController = _chunkOJBUUQ5Djs.SnapInterfaceController;
|
|
10
10
|
//# sourceMappingURL=index.js.map
|
package/dist/interface/index.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "../chunk-U74FML7Z.mjs";
|
|
2
2
|
import {
|
|
3
3
|
SnapInterfaceController
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-CJY2LYEL.mjs";
|
|
5
|
+
import "../chunk-3WEWHK2I.mjs";
|
|
6
6
|
import "../chunk-YRZVIDCF.mjs";
|
|
7
7
|
export {
|
|
8
8
|
SnapInterfaceController
|
package/dist/interface/utils.js
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkEVKVZUYYjs = require('../chunk-EVKVZUYY.js');
|
|
7
7
|
require('../chunk-EXN2TFDJ.js');
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
exports.assertNameIsUnique =
|
|
13
|
+
exports.assertNameIsUnique = _chunkEVKVZUYYjs.assertNameIsUnique; exports.constructState = _chunkEVKVZUYYjs.constructState; exports.getJsxInterface = _chunkEVKVZUYYjs.getJsxInterface; exports.validateInterfaceContext = _chunkEVKVZUYYjs.validateInterfaceContext;
|
|
14
14
|
//# sourceMappingURL=utils.js.map
|
package/dist/interface/utils.mjs
CHANGED
package/dist/node.js
CHANGED
|
@@ -27,7 +27,7 @@ var _chunkPYSDWIVKjs = require('./chunk-PYSDWIVK.js');
|
|
|
27
27
|
require('./chunk-IDCWJJCQ.js');
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
var
|
|
30
|
+
var _chunk5O4O4BI5js = require('./chunk-5O4O4BI5.js');
|
|
31
31
|
require('./chunk-JAUAKTUL.js');
|
|
32
32
|
|
|
33
33
|
|
|
@@ -69,8 +69,8 @@ require('./chunk-JQ54YYLU.js');
|
|
|
69
69
|
require('./chunk-VNOCJWOK.js');
|
|
70
70
|
|
|
71
71
|
|
|
72
|
-
var
|
|
73
|
-
require('./chunk-
|
|
72
|
+
var _chunkOJBUUQ5Djs = require('./chunk-OJBUUQ5D.js');
|
|
73
|
+
require('./chunk-EVKVZUYY.js');
|
|
74
74
|
|
|
75
75
|
|
|
76
76
|
|
|
@@ -131,5 +131,5 @@ require('./chunk-EXN2TFDJ.js');
|
|
|
131
131
|
|
|
132
132
|
|
|
133
133
|
|
|
134
|
-
exports.AbstractExecutionService = _chunkQRISQRFIjs.AbstractExecutionService; exports.BaseNpmLocation = _chunkXWDEGRM5js.BaseNpmLocation; exports.CronjobController = _chunkXFUP7RFIjs.CronjobController; exports.DAILY_TIMEOUT = _chunkXFUP7RFIjs.DAILY_TIMEOUT; exports.DEFAULT_NPM_REGISTRY = _chunkXWDEGRM5js.DEFAULT_NPM_REGISTRY; exports.HttpLocation = _chunkRDBT3ZJQjs.HttpLocation; exports.IframeExecutionService = _chunkPYSDWIVKjs.IframeExecutionService; exports.JsonSnapsRegistry = _chunkCPUUURMTjs.JsonSnapsRegistry; exports.LocalLocation = _chunkLWBPKSU2js.LocalLocation; exports.NodeProcessExecutionService = _chunkD66YLO7Tjs.NodeProcessExecutionService; exports.NodeThreadExecutionService = _chunkKELDSV7Hjs.NodeThreadExecutionService; exports.NpmLocation = _chunkXWDEGRM5js.NpmLocation; exports.OffscreenExecutionService = _chunkOVATPF5Ijs.OffscreenExecutionService; exports.ProxyPostMessageStream = _chunk7Y6P5FRNjs.ProxyPostMessageStream; exports.SNAP_APPROVAL_INSTALL = _chunkFKQTV3LOjs.SNAP_APPROVAL_INSTALL; exports.SNAP_APPROVAL_RESULT = _chunkFKQTV3LOjs.SNAP_APPROVAL_RESULT; exports.SNAP_APPROVAL_UPDATE = _chunkFKQTV3LOjs.SNAP_APPROVAL_UPDATE; exports.SnapController = _chunkFKQTV3LOjs.SnapController; exports.SnapInsightsController =
|
|
134
|
+
exports.AbstractExecutionService = _chunkQRISQRFIjs.AbstractExecutionService; exports.BaseNpmLocation = _chunkXWDEGRM5js.BaseNpmLocation; exports.CronjobController = _chunkXFUP7RFIjs.CronjobController; exports.DAILY_TIMEOUT = _chunkXFUP7RFIjs.DAILY_TIMEOUT; exports.DEFAULT_NPM_REGISTRY = _chunkXWDEGRM5js.DEFAULT_NPM_REGISTRY; exports.HttpLocation = _chunkRDBT3ZJQjs.HttpLocation; exports.IframeExecutionService = _chunkPYSDWIVKjs.IframeExecutionService; exports.JsonSnapsRegistry = _chunkCPUUURMTjs.JsonSnapsRegistry; exports.LocalLocation = _chunkLWBPKSU2js.LocalLocation; exports.NodeProcessExecutionService = _chunkD66YLO7Tjs.NodeProcessExecutionService; exports.NodeThreadExecutionService = _chunkKELDSV7Hjs.NodeThreadExecutionService; exports.NpmLocation = _chunkXWDEGRM5js.NpmLocation; exports.OffscreenExecutionService = _chunkOVATPF5Ijs.OffscreenExecutionService; exports.ProxyPostMessageStream = _chunk7Y6P5FRNjs.ProxyPostMessageStream; exports.SNAP_APPROVAL_INSTALL = _chunkFKQTV3LOjs.SNAP_APPROVAL_INSTALL; exports.SNAP_APPROVAL_RESULT = _chunkFKQTV3LOjs.SNAP_APPROVAL_RESULT; exports.SNAP_APPROVAL_UPDATE = _chunkFKQTV3LOjs.SNAP_APPROVAL_UPDATE; exports.SnapController = _chunkFKQTV3LOjs.SnapController; exports.SnapInsightsController = _chunk5O4O4BI5js.SnapInsightsController; exports.SnapInterfaceController = _chunkOJBUUQ5Djs.SnapInterfaceController; exports.SnapsRegistryStatus = _chunk4CA3O64Hjs.SnapsRegistryStatus; exports.TARBALL_SIZE_SAFETY_LIMIT = _chunkXWDEGRM5js.TARBALL_SIZE_SAFETY_LIMIT; exports.WebWorkerExecutionService = _chunkP66VIDFGjs.WebWorkerExecutionService; exports.controllerName = _chunkFKQTV3LOjs.controllerName; exports.delay = _chunkB6KTRDBKjs.delay; exports.delayWithTimer = _chunkB6KTRDBKjs.delayWithTimer; exports.detectSnapLocation = _chunkPOQSARDGjs.detectSnapLocation; exports.fetchNpmMetadata = _chunkXWDEGRM5js.fetchNpmMetadata; exports.fetchSnap = _chunkB6KTRDBKjs.fetchSnap; exports.getNpmCanonicalBasePath = _chunkXWDEGRM5js.getNpmCanonicalBasePath; exports.getRunnableSnaps = _chunkYYPUPKQYjs.getRunnableSnaps; exports.getSnapFiles = _chunkB6KTRDBKjs.getSnapFiles; exports.hasTimedOut = _chunkB6KTRDBKjs.hasTimedOut; exports.permissionsDiff = _chunkB6KTRDBKjs.permissionsDiff; exports.setDiff = _chunkB6KTRDBKjs.setDiff; exports.setupMultiplex = _chunkQRISQRFIjs.setupMultiplex; exports.withTimeout = _chunkB6KTRDBKjs.withTimeout;
|
|
135
135
|
//# sourceMappingURL=node.js.map
|