@metamask-previews/bridge-controller 0.0.0-preview-a1eb992b → 1.0.0-preview-dbdf1da

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 (98) hide show
  1. package/CHANGELOG.md +5 -7
  2. package/dist/bridge-controller.cjs +249 -0
  3. package/dist/bridge-controller.cjs.map +1 -0
  4. package/dist/bridge-controller.d.cts +56 -0
  5. package/dist/bridge-controller.d.cts.map +1 -0
  6. package/dist/bridge-controller.d.mts +56 -0
  7. package/dist/bridge-controller.d.mts.map +1 -0
  8. package/dist/bridge-controller.mjs +245 -0
  9. package/dist/bridge-controller.mjs.map +1 -0
  10. package/dist/constants/bridge.cjs +60 -0
  11. package/dist/constants/bridge.cjs.map +1 -0
  12. package/dist/constants/bridge.d.cts +23 -0
  13. package/dist/constants/bridge.d.cts.map +1 -0
  14. package/dist/constants/bridge.d.mts +23 -0
  15. package/dist/constants/bridge.d.mts.map +1 -0
  16. package/dist/constants/bridge.mjs +57 -0
  17. package/dist/constants/bridge.mjs.map +1 -0
  18. package/dist/constants/chains.cjs +168 -0
  19. package/dist/constants/chains.cjs.map +1 -0
  20. package/dist/constants/chains.d.cts +156 -0
  21. package/dist/constants/chains.d.cts.map +1 -0
  22. package/dist/constants/chains.d.mts +156 -0
  23. package/dist/constants/chains.d.mts.map +1 -0
  24. package/dist/constants/chains.mjs +165 -0
  25. package/dist/constants/chains.mjs.map +1 -0
  26. package/dist/constants/swaps.cjs +5 -0
  27. package/dist/constants/swaps.cjs.map +1 -0
  28. package/dist/constants/swaps.d.cts +2 -0
  29. package/dist/constants/swaps.d.cts.map +1 -0
  30. package/dist/constants/swaps.d.mts +2 -0
  31. package/dist/constants/swaps.d.mts.map +1 -0
  32. package/dist/constants/swaps.mjs +2 -0
  33. package/dist/constants/swaps.mjs.map +1 -0
  34. package/dist/constants/tokens.cjs +109 -0
  35. package/dist/constants/tokens.cjs.map +1 -0
  36. package/dist/constants/tokens.d.cts +73 -0
  37. package/dist/constants/tokens.d.cts.map +1 -0
  38. package/dist/constants/tokens.d.mts +73 -0
  39. package/dist/constants/tokens.d.mts.map +1 -0
  40. package/dist/constants/tokens.mjs +106 -0
  41. package/dist/constants/tokens.mjs.map +1 -0
  42. package/dist/index.cjs +26 -0
  43. package/dist/index.cjs.map +1 -0
  44. package/dist/index.d.cts +9 -0
  45. package/dist/index.d.cts.map +1 -0
  46. package/dist/index.d.mts +9 -0
  47. package/dist/index.d.mts.map +1 -0
  48. package/dist/index.mjs +6 -0
  49. package/dist/index.mjs.map +1 -0
  50. package/dist/types.cjs +77 -0
  51. package/dist/types.cjs.map +1 -0
  52. package/dist/types.d.cts +232 -0
  53. package/dist/types.d.cts.map +1 -0
  54. package/dist/types.d.mts +232 -0
  55. package/dist/types.d.mts.map +1 -0
  56. package/dist/types.mjs +74 -0
  57. package/dist/types.mjs.map +1 -0
  58. package/dist/utils/balance.cjs +31 -0
  59. package/dist/utils/balance.cjs.map +1 -0
  60. package/dist/utils/balance.d.cts +6 -0
  61. package/dist/utils/balance.d.cts.map +1 -0
  62. package/dist/utils/balance.d.mts +6 -0
  63. package/dist/utils/balance.d.mts.map +1 -0
  64. package/dist/utils/balance.mjs +25 -0
  65. package/dist/utils/balance.mjs.map +1 -0
  66. package/dist/utils/bridge.cjs +81 -0
  67. package/dist/utils/bridge.cjs.map +1 -0
  68. package/dist/utils/bridge.d.cts +31 -0
  69. package/dist/utils/bridge.d.cts.map +1 -0
  70. package/dist/utils/bridge.d.mts +31 -0
  71. package/dist/utils/bridge.d.mts.map +1 -0
  72. package/dist/utils/bridge.mjs +71 -0
  73. package/dist/utils/bridge.mjs.map +1 -0
  74. package/dist/utils/fetch.cjs +122 -0
  75. package/dist/utils/fetch.cjs.map +1 -0
  76. package/dist/utils/fetch.d.cts +33 -0
  77. package/dist/utils/fetch.d.cts.map +1 -0
  78. package/dist/utils/fetch.d.mts +33 -0
  79. package/dist/utils/fetch.d.mts.map +1 -0
  80. package/dist/utils/fetch.mjs +115 -0
  81. package/dist/utils/fetch.mjs.map +1 -0
  82. package/dist/utils/quote.cjs +27 -0
  83. package/dist/utils/quote.cjs.map +1 -0
  84. package/dist/utils/quote.d.cts +3 -0
  85. package/dist/utils/quote.d.cts.map +1 -0
  86. package/dist/utils/quote.d.mts +3 -0
  87. package/dist/utils/quote.d.mts.map +1 -0
  88. package/dist/utils/quote.mjs +23 -0
  89. package/dist/utils/quote.mjs.map +1 -0
  90. package/dist/utils/validators.cjs +112 -0
  91. package/dist/utils/validators.cjs.map +1 -0
  92. package/dist/utils/validators.d.cts +30 -0
  93. package/dist/utils/validators.d.cts.map +1 -0
  94. package/dist/utils/validators.d.mts +30 -0
  95. package/dist/utils/validators.d.mts.map +1 -0
  96. package/dist/utils/validators.mjs +104 -0
  97. package/dist/utils/validators.mjs.map +1 -0
  98. package/package.json +1 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.mjs","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":"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","sourcesContent":["import { isValidHexAddress as isValidHexAddress_ } from '@metamask/controller-utils';\nimport { isStrictHexString } from '@metamask/utils';\n\nimport type { SwapsTokenObject } from '../constants/tokens';\nimport type {\n FeatureFlagResponse,\n FeeData,\n Quote,\n QuoteResponse,\n TxData,\n} from '../types';\nimport { BridgeFlag } from '../types';\n\nexport const truthyString = (string: string) => Boolean(string?.length);\nexport const truthyDigitString = (string: string) =>\n truthyString(string) && Boolean(string.match(/^\\d+$/u));\n\nexport const isValidNumber = (v: unknown): v is number => typeof v === 'number';\nconst isValidObject = (v: unknown): v is object =>\n typeof v === 'object' && v !== null;\nconst isValidString = (v: unknown): v is string =>\n typeof v === 'string' && v.length > 0;\nconst isValidHexAddress = (v: unknown) =>\n isValidString(v) && isValidHexAddress_(v, { allowNonPrefixed: false });\n\ntype Validator<ExpectedResponse> = {\n property: keyof ExpectedResponse;\n type: string;\n validator?: (value: unknown) => boolean;\n};\n\nexport const validateData = <ExpectedResponse>(\n validators: Validator<ExpectedResponse>[],\n object: unknown,\n urlUsed: string,\n logError = true,\n): object is ExpectedResponse => {\n return validators.every(({ property, type, validator }) => {\n const types = type.split('|');\n const propertyString = String(property);\n\n const valid =\n isValidObject(object) &&\n types.some(\n (_type) =>\n typeof object[propertyString as keyof typeof object] === _type,\n ) &&\n (!validator || validator(object[propertyString as keyof typeof object]));\n\n if (!valid && logError) {\n const value = isValidObject(object)\n ? object[propertyString as keyof typeof object]\n : undefined;\n const typeString = isValidObject(object)\n ? typeof object[propertyString as keyof typeof object]\n : 'undefined';\n\n console.error(\n `response to GET ${urlUsed} invalid for property ${String(property)}; value was:`,\n value,\n '| type was: ',\n typeString,\n );\n }\n return valid;\n });\n};\n\nexport const validateResponse = <ExpectedResponse>(\n validators: Validator<ExpectedResponse>[],\n data: unknown,\n urlUsed: string,\n logError = true,\n): data is ExpectedResponse => {\n return validateData(validators, data, urlUsed, logError);\n};\n\nexport const FEATURE_FLAG_VALIDATORS = [\n {\n property: BridgeFlag.EXTENSION_CONFIG,\n type: 'object',\n validator: (\n v: unknown,\n ): v is Pick<FeatureFlagResponse, BridgeFlag.EXTENSION_CONFIG> =>\n isValidObject(v) &&\n 'refreshRate' in v &&\n isValidNumber(v.refreshRate) &&\n 'maxRefreshCount' in v &&\n isValidNumber(v.maxRefreshCount) &&\n 'chains' in v &&\n isValidObject(v.chains) &&\n Object.values(v.chains).every((chain) => isValidObject(chain)) &&\n Object.values(v.chains).every(\n (chain) =>\n 'isActiveSrc' in chain &&\n 'isActiveDest' in chain &&\n typeof chain.isActiveSrc === 'boolean' &&\n typeof chain.isActiveDest === 'boolean',\n ),\n },\n];\n\nexport const TOKEN_AGGREGATOR_VALIDATORS = [\n {\n property: 'aggregators',\n type: 'object',\n validator: (v: unknown): v is number[] =>\n isValidObject(v) && Object.values(v).every(isValidString),\n },\n];\n\nexport const TOKEN_VALIDATORS: Validator<SwapsTokenObject>[] = [\n { property: 'decimals', type: 'number' },\n { property: 'address', type: 'string', validator: isValidHexAddress },\n {\n property: 'symbol',\n type: 'string',\n validator: (v: unknown) => isValidString(v) && v.length <= 12,\n },\n];\n\nexport const QUOTE_RESPONSE_VALIDATORS: Validator<QuoteResponse>[] = [\n { property: 'quote', type: 'object', validator: isValidObject },\n { property: 'estimatedProcessingTimeInSeconds', type: 'number' },\n {\n property: 'approval',\n type: 'object|undefined',\n validator: (v: unknown) => v === undefined || isValidObject(v),\n },\n { property: 'trade', type: 'object', validator: isValidObject },\n];\n\nexport const QUOTE_VALIDATORS: Validator<Quote>[] = [\n { property: 'requestId', type: 'string' },\n { property: 'srcTokenAmount', type: 'string' },\n { property: 'destTokenAmount', type: 'string' },\n { property: 'bridgeId', type: 'string' },\n { property: 'bridges', type: 'object', validator: isValidObject },\n { property: 'srcChainId', type: 'number' },\n { property: 'destChainId', type: 'number' },\n { property: 'srcAsset', type: 'object', validator: isValidObject },\n { property: 'destAsset', type: 'object', validator: isValidObject },\n { property: 'feeData', type: 'object', validator: isValidObject },\n];\n\nexport const FEE_DATA_VALIDATORS: Validator<FeeData>[] = [\n {\n property: 'amount',\n type: 'string',\n validator: (v: unknown) => truthyDigitString(String(v)),\n },\n { property: 'asset', type: 'object', validator: isValidObject },\n];\n\nexport const TX_DATA_VALIDATORS: Validator<TxData>[] = [\n { property: 'chainId', type: 'number' },\n { property: 'value', type: 'string', validator: isStrictHexString },\n { property: 'gasLimit', type: 'number' },\n { property: 'to', type: 'string', validator: isValidHexAddress },\n { property: 'from', type: 'string', validator: isValidHexAddress },\n { property: 'data', type: 'string', validator: isStrictHexString },\n];\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/bridge-controller",
3
- "version": "0.0.0-preview-a1eb992b",
3
+ "version": "1.0.0-preview-dbdf1da",
4
4
  "description": "Manages bridge-related quote fetching functionality for MetaMask",
5
5
  "keywords": [
6
6
  "MetaMask",
@@ -58,7 +58,6 @@
58
58
  "@metamask/accounts-controller": "^24.0.0",
59
59
  "@metamask/auto-changelog": "^3.4.4",
60
60
  "@metamask/eth-json-rpc-provider": "^4.1.8",
61
- "@metamask/json-rpc-engine": "^10.0.3",
62
61
  "@metamask/network-controller": "^22.2.1",
63
62
  "@metamask/transaction-controller": "^46.0.0",
64
63
  "@types/jest": "^27.4.1",