@safe-global/safe-deployments 1.36.0 → 1.37.1

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 (106) hide show
  1. package/README.md +56 -28
  2. package/dist/accessors.js +1 -3
  3. package/dist/assets/v1.0.0/gnosis_safe.json +477 -103
  4. package/dist/assets/v1.0.0/proxy_factory.json +9 -6
  5. package/dist/assets/v1.1.1/default_callback_handler.json +12 -9
  6. package/dist/assets/v1.1.1/gnosis_safe.json +12 -9
  7. package/dist/assets/v1.1.1/multi_send.json +12 -9
  8. package/dist/assets/v1.1.1/proxy_factory.json +12 -9
  9. package/dist/assets/v1.2.0/gnosis_safe.json +12 -9
  10. package/dist/assets/v1.3.0/compatibility_fallback_handler.json +247 -222
  11. package/dist/assets/v1.3.0/create_call.json +247 -222
  12. package/dist/assets/v1.3.0/gnosis_safe.json +247 -222
  13. package/dist/assets/v1.3.0/gnosis_safe_l2.json +247 -222
  14. package/dist/assets/v1.3.0/multi_send.json +247 -222
  15. package/dist/assets/v1.3.0/multi_send_call_only.json +247 -222
  16. package/dist/assets/v1.3.0/proxy_factory.json +247 -222
  17. package/dist/assets/v1.3.0/sign_message_lib.json +248 -223
  18. package/dist/assets/v1.3.0/simulate_tx_accessor.json +247 -222
  19. package/dist/assets/v1.4.1/compatibility_fallback_handler.json +114 -41
  20. package/dist/assets/v1.4.1/create_call.json +114 -41
  21. package/dist/assets/v1.4.1/multi_send.json +114 -41
  22. package/dist/assets/v1.4.1/multi_send_call_only.json +114 -41
  23. package/dist/assets/v1.4.1/safe.json +114 -41
  24. package/dist/assets/v1.4.1/safe_l2.json +114 -41
  25. package/dist/assets/v1.4.1/safe_proxy_factory.json +115 -42
  26. package/dist/assets/v1.4.1/sign_message_lib.json +115 -42
  27. package/dist/assets/v1.4.1/simulate_tx_accessor.json +114 -41
  28. package/dist/factories.js +4 -1
  29. package/dist/handler.js +6 -5
  30. package/dist/libs.js +4 -12
  31. package/dist/safes.d.ts +3 -3
  32. package/dist/safes.js +6 -4
  33. package/dist/types.d.ts +28 -2
  34. package/dist/types.js +11 -0
  35. package/dist/utils.d.ts +9 -2
  36. package/dist/utils.js +34 -5
  37. package/package.json +15 -17
  38. package/src/__tests__/assets/v1/v1.0.0/gnosis_safe.json +794 -0
  39. package/src/__tests__/assets/v1/v1.0.0/proxy_factory.json +109 -0
  40. package/src/__tests__/assets/v1/v1.1.1/create_and_add_modules.json +57 -0
  41. package/src/__tests__/assets/v1/v1.1.1/create_call.json +88 -0
  42. package/src/__tests__/assets/v1/v1.1.1/default_callback_handler.json +210 -0
  43. package/src/__tests__/assets/v1/v1.1.1/gnosis_safe.json +999 -0
  44. package/src/__tests__/assets/v1/v1.1.1/multi_send.json +43 -0
  45. package/src/__tests__/assets/v1/v1.1.1/proxy_factory.json +189 -0
  46. package/src/__tests__/assets/v1/v1.2.0/gnosis_safe.json +1020 -0
  47. package/src/__tests__/assets/v1/v1.3.0/compatibility_fallback_handler.json +580 -0
  48. package/src/__tests__/assets/v1/v1.3.0/create_call.json +323 -0
  49. package/src/__tests__/assets/v1/v1.3.0/gnosis_safe.json +1288 -0
  50. package/src/__tests__/assets/v1/v1.3.0/gnosis_safe_l2.json +1393 -0
  51. package/src/__tests__/assets/v1/v1.3.0/multi_send.json +275 -0
  52. package/src/__tests__/assets/v1/v1.3.0/multi_send_call_only.json +270 -0
  53. package/src/__tests__/assets/v1/v1.3.0/proxy_factory.json +418 -0
  54. package/src/__tests__/assets/v1/v1.3.0/sign_message_lib.json +302 -0
  55. package/src/__tests__/assets/v1/v1.3.0/simulate_tx_accessor.json +306 -0
  56. package/src/__tests__/assets/v1/v1.4.1/compatibility_fallback_handler.json +445 -0
  57. package/src/__tests__/assets/v1/v1.4.1/create_call.json +190 -0
  58. package/src/__tests__/assets/v1/v1.4.1/multi_send.json +142 -0
  59. package/src/__tests__/assets/v1/v1.4.1/multi_send_call_only.json +137 -0
  60. package/src/__tests__/assets/v1/v1.4.1/safe.json +1121 -0
  61. package/src/__tests__/assets/v1/v1.4.1/safe_l2.json +1226 -0
  62. package/src/__tests__/assets/v1/v1.4.1/safe_proxy_factory.json +261 -0
  63. package/src/__tests__/assets/v1/v1.4.1/sign_message_lib.json +169 -0
  64. package/src/__tests__/assets/v1/v1.4.1/simulate_tx_accessor.json +173 -0
  65. package/src/__tests__/assets.test.ts +101 -38
  66. package/src/__tests__/factories.test.ts +3 -3
  67. package/src/__tests__/handler.test.ts +5 -5
  68. package/src/__tests__/libs.test.ts +9 -9
  69. package/src/__tests__/safes.test.ts +9 -12
  70. package/src/__tests__/utils.test.ts +271 -0
  71. package/src/accessors.ts +5 -7
  72. package/src/assets/v1.0.0/gnosis_safe.json +477 -103
  73. package/src/assets/v1.0.0/proxy_factory.json +9 -6
  74. package/src/assets/v1.1.1/create_and_add_modules.json +17 -10
  75. package/src/assets/v1.1.1/create_call.json +12 -9
  76. package/src/assets/v1.1.1/default_callback_handler.json +12 -9
  77. package/src/assets/v1.1.1/gnosis_safe.json +12 -9
  78. package/src/assets/v1.1.1/multi_send.json +12 -9
  79. package/src/assets/v1.1.1/proxy_factory.json +12 -9
  80. package/src/assets/v1.2.0/gnosis_safe.json +12 -9
  81. package/src/assets/v1.3.0/compatibility_fallback_handler.json +247 -222
  82. package/src/assets/v1.3.0/create_call.json +247 -222
  83. package/src/assets/v1.3.0/gnosis_safe.json +247 -222
  84. package/src/assets/v1.3.0/gnosis_safe_l2.json +247 -222
  85. package/src/assets/v1.3.0/multi_send.json +247 -222
  86. package/src/assets/v1.3.0/multi_send_call_only.json +247 -222
  87. package/src/assets/v1.3.0/proxy_factory.json +247 -222
  88. package/src/assets/v1.3.0/sign_message_lib.json +248 -223
  89. package/src/assets/v1.3.0/simulate_tx_accessor.json +247 -222
  90. package/src/assets/v1.4.1/compatibility_fallback_handler.json +115 -42
  91. package/src/assets/v1.4.1/create_call.json +115 -42
  92. package/src/assets/v1.4.1/multi_send.json +115 -42
  93. package/src/assets/v1.4.1/multi_send_call_only.json +115 -42
  94. package/src/assets/v1.4.1/safe.json +115 -42
  95. package/src/assets/v1.4.1/safe_l2.json +115 -42
  96. package/src/assets/v1.4.1/safe_proxy_factory.json +116 -43
  97. package/src/assets/v1.4.1/sign_message_lib.json +116 -43
  98. package/src/assets/v1.4.1/simulate_tx_accessor.json +115 -42
  99. package/src/factories.ts +14 -11
  100. package/src/handler.ts +24 -21
  101. package/src/index.ts +6 -6
  102. package/src/libs.ts +23 -31
  103. package/src/safes.ts +21 -19
  104. package/src/types.ts +84 -10
  105. package/src/utils.ts +50 -12
  106. package/src/__tests__/utilts.test.ts +0 -385
package/dist/types.d.ts CHANGED
@@ -1,13 +1,39 @@
1
+ declare enum AddressType {
2
+ CANONICAL = "canonical",
3
+ EIP155 = "eip155",
4
+ ZKSYNC = "zksync"
5
+ }
6
+ export interface SingletonDeploymentJSON {
7
+ released: boolean;
8
+ contractName: string;
9
+ version: string;
10
+ codeHash: string;
11
+ networkAddresses: Record<string, string | string[]>;
12
+ addresses: Record<string, string>;
13
+ abi: any[];
14
+ }
1
15
  export interface SingletonDeployment {
2
16
  defaultAddress: string;
17
+ released: boolean;
18
+ contractName: string;
3
19
  version: string;
4
- abi: any[];
20
+ codeHash: string;
21
+ addresses: Record<string, string>;
5
22
  networkAddresses: Record<string, string>;
6
- contractName: string;
23
+ abi: any[];
24
+ }
25
+ export interface SingletonDeploymentV2 {
7
26
  released: boolean;
27
+ contractName: string;
28
+ version: string;
29
+ codeHash: string;
30
+ abi: any[];
31
+ networkAddresses: Record<string, AddressType | AddressType[]>;
32
+ addresses: Partial<Record<AddressType, string>>;
8
33
  }
9
34
  export interface DeploymentFilter {
10
35
  version?: string;
11
36
  released?: boolean;
12
37
  network?: string;
13
38
  }
39
+ export {};
package/dist/types.js CHANGED
@@ -1,2 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ var AddressType;
4
+ (function (AddressType) {
5
+ // The original address the contract was deployed on.
6
+ // Starting with 1.4.1, the contracts are deployed with an EIP155-compatible transaction.
7
+ AddressType["CANONICAL"] = "canonical";
8
+ // An address that was deployed with a transaction compatible with the EIP155 standard.
9
+ // The type is only used for 1.3.0 deployments.
10
+ AddressType["EIP155"] = "eip155";
11
+ // An address that is deployed to the ZkSync VM networks.
12
+ AddressType["ZKSYNC"] = "zksync";
13
+ })(AddressType || (AddressType = {}));
package/dist/utils.d.ts CHANGED
@@ -1,2 +1,9 @@
1
- import { DeploymentFilter, SingletonDeployment } from './types';
2
- export declare const findDeployment: (criteria: DeploymentFilter | undefined, deployments: SingletonDeployment[]) => SingletonDeployment | undefined;
1
+ import { DeploymentFilter, SingletonDeployment, SingletonDeploymentJSON } from './types';
2
+ /**
3
+ * Finds a deployment that matches the given criteria.
4
+ *
5
+ * @param {DeploymentFilter} [criteria=DEFAULT_FILTER] - The filter criteria to match deployments.
6
+ * @param {SingletonDeploymentJSON[]} deployments - The list of deployment JSON objects to search.
7
+ * @returns {SingletonDeployment | undefined} - The found deployment object or undefined if no match is found.
8
+ */
9
+ export declare const findDeployment: (criteria: DeploymentFilter | undefined, deployments: SingletonDeploymentJSON[]) => SingletonDeployment | undefined;
package/dist/utils.js CHANGED
@@ -6,16 +6,45 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.findDeployment = void 0;
7
7
  const satisfies_1 = __importDefault(require("semver/functions/satisfies"));
8
8
  const DEFAULT_FILTER = { released: true };
9
+ // The older JSON format had a `defaultAddress` field, which became obsolete due to EIP-155 enforcement and non-EVM compatible chains.
10
+ // This led to multiple "default" addresses, sometimes on the same chain ID. To maintain backwards compatibility, we map `defaultAddress`
11
+ // to the address deployed on a chosen default network.
12
+ const DEFAULT_NETWORK_CHAIN_ID = '1';
13
+ /**
14
+ * Maps a SingletonDeploymentJSON object to a SingletonDeployment object.
15
+ *
16
+ * @param {SingletonDeploymentJSON} deployment - The deployment JSON object to map.
17
+ * @returns {SingletonDeployment} - The mapped deployment object.
18
+ */
19
+ const mapJsonToDeploymentsFormatV1 = (deployment) => {
20
+ const defaultAddressType = Array.isArray(deployment.networkAddresses[DEFAULT_NETWORK_CHAIN_ID])
21
+ ? deployment.networkAddresses[DEFAULT_NETWORK_CHAIN_ID][0]
22
+ : deployment.networkAddresses[DEFAULT_NETWORK_CHAIN_ID];
23
+ const defaultAddress = deployment.addresses[defaultAddressType];
24
+ const networkAddresses = Object.fromEntries(Object.entries(deployment.networkAddresses).map(([chainId, addressTypes]) => [
25
+ chainId,
26
+ Array.isArray(addressTypes) ? deployment.addresses[addressTypes[0]] : deployment.addresses[addressTypes],
27
+ ]));
28
+ return Object.assign(Object.assign({}, deployment), { defaultAddress, networkAddresses });
29
+ };
30
+ /**
31
+ * Finds a deployment that matches the given criteria.
32
+ *
33
+ * @param {DeploymentFilter} [criteria=DEFAULT_FILTER] - The filter criteria to match deployments.
34
+ * @param {SingletonDeploymentJSON[]} deployments - The list of deployment JSON objects to search.
35
+ * @returns {SingletonDeployment | undefined} - The found deployment object or undefined if no match is found.
36
+ */
9
37
  const findDeployment = (criteria = DEFAULT_FILTER, deployments) => {
10
- const criteriaWithDefaults = Object.assign(Object.assign({}, DEFAULT_FILTER), criteria);
11
- return deployments.find((deployment) => {
12
- if (typeof criteriaWithDefaults.version !== 'undefined' && !(0, satisfies_1.default)(deployment.version, criteriaWithDefaults.version))
38
+ const { version, released, network } = Object.assign(Object.assign({}, DEFAULT_FILTER), criteria);
39
+ const deploymentJson = deployments.find((deployment) => {
40
+ if (version && !(0, satisfies_1.default)(deployment.version, version))
13
41
  return false;
14
- if (typeof criteriaWithDefaults.released === 'boolean' && deployment.released != criteriaWithDefaults.released)
42
+ if (typeof released === 'boolean' && deployment.released !== released)
15
43
  return false;
16
- if (criteriaWithDefaults.network && !deployment.networkAddresses[criteriaWithDefaults.network])
44
+ if (network && !deployment.networkAddresses[network])
17
45
  return false;
18
46
  return true;
19
47
  });
48
+ return deploymentJson ? mapJsonToDeploymentsFormatV1(deploymentJson) : undefined;
20
49
  };
21
50
  exports.findDeployment = findDeployment;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@safe-global/safe-deployments",
3
- "version": "1.36.0",
3
+ "version": "1.37.1",
4
4
  "description": "Collection of Safe singleton deployments",
5
5
  "homepage": "https://github.com/safe-global/safe-deployments/",
6
6
  "license": "MIT",
@@ -13,12 +13,14 @@
13
13
  "build"
14
14
  ],
15
15
  "scripts": {
16
- "build": "yarn rimraf dist && tsc",
17
- "lint": "yarn lint:ts && yarn lint:json",
18
- "lint:ts": "eslint --max-warnings 0 .",
16
+ "build": "rimraf dist && tsc",
17
+ "lint": "npm run lint:ts && npm run lint:json",
18
+ "lint:ts": "eslint --max-warnings 0 src/",
19
19
  "lint:json": "prettier -c src/assets/*/*.json",
20
- "prepack": "yarn build",
21
- "prepare": "husky install",
20
+ "lint:fix": "npm run lint:fix:ts && npm run lint:fix:json",
21
+ "lint:fix:ts": "npm run lint:ts -- --fix",
22
+ "lint:fix:json": "prettier -w src/assets/*/*.json",
23
+ "prepack": "npm run build",
22
24
  "test": "jest"
23
25
  },
24
26
  "repository": {
@@ -35,24 +37,20 @@
35
37
  "url": "https://github.com/safe-global/safe-deployments/issues"
36
38
  },
37
39
  "devDependencies": {
40
+ "@eslint/js": "^8.57.0",
38
41
  "@types/jest": "^29.5.12",
39
- "@types/node": "^20.11.30",
42
+ "@types/node": "^20.14.9",
40
43
  "@types/semver": "^7.5.8",
41
- "@typescript-eslint/eslint-plugin": "^7.4.0",
42
- "@typescript-eslint/parser": "^7.4.0",
43
44
  "eslint": "^8.57.0",
44
45
  "eslint-config-prettier": "^9.1.0",
45
- "eslint-plugin-import": "^2.29.1",
46
- "eslint-plugin-no-only-tests": "^3.1.0",
47
46
  "eslint-plugin-prettier": "^5.1.3",
48
- "husky": "^9.0.11",
49
47
  "jest": "^29.7.0",
50
- "prettier": "^3.2.5",
51
- "ts-jest": "^29.1.2",
52
- "ts-node": "^10.9.2",
53
- "typescript": "^5.4.3"
48
+ "prettier": "^3.3.2",
49
+ "ts-jest": "^29.1.5",
50
+ "typescript": "^5.5.2",
51
+ "typescript-eslint": "^7.14.1"
54
52
  },
55
53
  "dependencies": {
56
- "semver": "^7.6.0"
54
+ "semver": "^7.6.2"
57
55
  }
58
56
  }