gate-evm-tools 1.0.23 → 1.0.25

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 (123) hide show
  1. package/README.md +70 -11
  2. package/bin/manifest-bootstrap.js +109 -3
  3. package/dist/commands/check.d.ts.map +1 -1
  4. package/dist/commands/check.js +5 -2
  5. package/dist/commands/check.js.map +1 -1
  6. package/dist/commands/checkOptions.d.ts +6 -0
  7. package/dist/commands/checkOptions.d.ts.map +1 -0
  8. package/dist/commands/checkOptions.js +12 -0
  9. package/dist/commands/checkOptions.js.map +1 -0
  10. package/dist/commands/fix.js +2 -2
  11. package/dist/commands/fix.js.map +1 -1
  12. package/dist/commands/prepare.d.ts +8 -0
  13. package/dist/commands/prepare.d.ts.map +1 -0
  14. package/dist/commands/prepare.js +78 -0
  15. package/dist/commands/prepare.js.map +1 -0
  16. package/dist/commands/sync.d.ts.map +1 -1
  17. package/dist/commands/sync.js +11 -28
  18. package/dist/commands/sync.js.map +1 -1
  19. package/dist/core/BytecodeChecker.d.ts +3 -2
  20. package/dist/core/BytecodeChecker.d.ts.map +1 -1
  21. package/dist/core/BytecodeChecker.js +13 -1
  22. package/dist/core/BytecodeChecker.js.map +1 -1
  23. package/dist/core/preparation/artifacts.d.ts +21 -0
  24. package/dist/core/preparation/artifacts.d.ts.map +1 -0
  25. package/dist/core/preparation/artifacts.js +80 -0
  26. package/dist/core/preparation/artifacts.js.map +1 -0
  27. package/dist/core/preparation/evm.d.ts +39 -0
  28. package/dist/core/preparation/evm.d.ts.map +1 -0
  29. package/dist/core/preparation/evm.js +305 -0
  30. package/dist/core/preparation/evm.js.map +1 -0
  31. package/dist/core/preparation/index.d.ts +9 -0
  32. package/dist/core/preparation/index.d.ts.map +1 -0
  33. package/dist/core/preparation/index.js +15 -0
  34. package/dist/core/preparation/index.js.map +1 -0
  35. package/dist/core/preparation/manifest.d.ts +43 -0
  36. package/dist/core/preparation/manifest.d.ts.map +1 -0
  37. package/dist/core/preparation/manifest.js +169 -0
  38. package/dist/core/preparation/manifest.js.map +1 -0
  39. package/dist/core/preparation/normalize.d.ts +7 -0
  40. package/dist/core/preparation/normalize.d.ts.map +1 -0
  41. package/dist/core/preparation/normalize.js +496 -0
  42. package/dist/core/preparation/normalize.js.map +1 -0
  43. package/dist/core/preparation/types.d.ts +122 -0
  44. package/dist/core/preparation/types.d.ts.map +1 -0
  45. package/dist/core/preparation/types.js +2 -0
  46. package/dist/core/preparation/types.js.map +1 -0
  47. package/dist/core/preparation/zkManifestSync.d.ts +49 -0
  48. package/dist/core/preparation/zkManifestSync.d.ts.map +1 -0
  49. package/dist/core/preparation/zkManifestSync.js +159 -0
  50. package/dist/core/preparation/zkManifestSync.js.map +1 -0
  51. package/dist/core/preparation/zkUpgradeValidation.d.ts +37 -0
  52. package/dist/core/preparation/zkUpgradeValidation.d.ts.map +1 -0
  53. package/dist/core/preparation/zkUpgradeValidation.js +91 -0
  54. package/dist/core/preparation/zkUpgradeValidation.js.map +1 -0
  55. package/dist/core/preparation/zksync.d.ts +28 -0
  56. package/dist/core/preparation/zksync.d.ts.map +1 -0
  57. package/dist/core/preparation/zksync.js +259 -0
  58. package/dist/core/preparation/zksync.js.map +1 -0
  59. package/dist/custody/hardhat-runtime.d.ts.map +1 -1
  60. package/dist/custody/hardhat-runtime.js +2 -1
  61. package/dist/custody/hardhat-runtime.js.map +1 -1
  62. package/dist/custody/index.d.ts +1 -0
  63. package/dist/custody/index.d.ts.map +1 -1
  64. package/dist/custody/index.js +1 -0
  65. package/dist/custody/index.js.map +1 -1
  66. package/dist/custody/service.js +8 -1
  67. package/dist/custody/service.js.map +1 -1
  68. package/dist/custody/zksync-signer.d.ts +13 -0
  69. package/dist/custody/zksync-signer.d.ts.map +1 -0
  70. package/dist/custody/zksync-signer.js +91 -0
  71. package/dist/custody/zksync-signer.js.map +1 -0
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +22 -1
  74. package/dist/index.js.map +1 -1
  75. package/dist/sync/index.d.ts +31 -0
  76. package/dist/sync/index.d.ts.map +1 -0
  77. package/dist/sync/index.js +57 -0
  78. package/dist/sync/index.js.map +1 -0
  79. package/dist/types.d.ts +13 -2
  80. package/dist/types.d.ts.map +1 -1
  81. package/dist/workflow/index.d.ts +5 -0
  82. package/dist/workflow/index.d.ts.map +1 -0
  83. package/dist/workflow/index.js +3 -0
  84. package/dist/workflow/index.js.map +1 -0
  85. package/dist-cjs/core/preparation/artifacts.js +89 -0
  86. package/dist-cjs/core/preparation/artifacts.js.map +1 -0
  87. package/dist-cjs/core/preparation/evm.js +312 -0
  88. package/dist-cjs/core/preparation/evm.js.map +1 -0
  89. package/dist-cjs/core/preparation/index.js +19 -0
  90. package/dist-cjs/core/preparation/index.js.map +1 -0
  91. package/dist-cjs/core/preparation/manifest.js +180 -0
  92. package/dist-cjs/core/preparation/manifest.js.map +1 -0
  93. package/dist-cjs/core/preparation/normalize.js +507 -0
  94. package/dist-cjs/core/preparation/normalize.js.map +1 -0
  95. package/dist-cjs/core/preparation/types.js +3 -0
  96. package/dist-cjs/core/preparation/types.js.map +1 -0
  97. package/dist-cjs/core/preparation/zkManifestSync.js +166 -0
  98. package/dist-cjs/core/preparation/zkManifestSync.js.map +1 -0
  99. package/dist-cjs/core/preparation/zkUpgradeValidation.js +101 -0
  100. package/dist-cjs/core/preparation/zkUpgradeValidation.js.map +1 -0
  101. package/dist-cjs/core/preparation/zksync.js +263 -0
  102. package/dist-cjs/core/preparation/zksync.js.map +1 -0
  103. package/dist-cjs/core/syncUpgradeJson.js +315 -0
  104. package/dist-cjs/core/syncUpgradeJson.js.map +1 -0
  105. package/dist-cjs/custody/hardhat-runtime.js +2 -1
  106. package/dist-cjs/custody/hardhat-runtime.js.map +1 -1
  107. package/dist-cjs/custody/index.js +4 -1
  108. package/dist-cjs/custody/index.js.map +1 -1
  109. package/dist-cjs/custody/service.js +8 -1
  110. package/dist-cjs/custody/service.js.map +1 -1
  111. package/dist-cjs/custody/zksync-signer.js +95 -0
  112. package/dist-cjs/custody/zksync-signer.js.map +1 -0
  113. package/dist-cjs/sync/index.js +60 -0
  114. package/dist-cjs/sync/index.js.map +1 -0
  115. package/dist-cjs/types.js +3 -0
  116. package/dist-cjs/types.js.map +1 -0
  117. package/dist-cjs/utils/manifestTransaction.js +302 -0
  118. package/dist-cjs/utils/manifestTransaction.js.map +1 -0
  119. package/dist-cjs/utils/openzeppelin.js +57 -0
  120. package/dist-cjs/utils/openzeppelin.js.map +1 -0
  121. package/dist-cjs/workflow/index.js +12 -0
  122. package/dist-cjs/workflow/index.js.map +1 -0
  123. package/package.json +42 -2
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.hashStorageLayout = exports.readRegisteredZkUpgradeState = exports.parseTargetManifest = exports.resolveTargetManifestPaths = exports.resolveTargetManifestDirectory = void 0;
7
+ const node_crypto_1 = __importDefault(require("node:crypto"));
8
+ const node_fs_1 = __importDefault(require("node:fs"));
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const yaml_1 = __importDefault(require("yaml"));
11
+ const upgrades_core_1 = require("@openzeppelin/upgrades-core");
12
+ const normalize_js_1 = require("./normalize.js");
13
+ const SAFE_TARGET = /^[A-Za-z0-9][A-Za-z0-9_-]{0,199}$/;
14
+ const SAFE_MANIFEST_DIR = /^\.openzeppelin(?:\.[a-z0-9][a-z0-9-]*)?$/;
15
+ const ENVIRONMENTS = new Set(['local', 'development', 'production']);
16
+ const regularFile = (filePath, label) => {
17
+ if (!node_fs_1.default.existsSync(filePath))
18
+ throw new Error(`${label} is missing: ${filePath}`);
19
+ const stat = node_fs_1.default.lstatSync(filePath);
20
+ if (stat.isSymbolicLink())
21
+ throw new Error(`${label} cannot be a symlink`);
22
+ if (!stat.isFile())
23
+ throw new Error(`${label} must be a regular file`);
24
+ };
25
+ const assertManifestDirectory = (root, manifestDir) => {
26
+ if (!SAFE_MANIFEST_DIR.test(manifestDir) || manifestDir === '.upgradable') {
27
+ throw new Error(`unsafe OpenZeppelin manifest directory: ${manifestDir}`);
28
+ }
29
+ const resolvedRoot = node_path_1.default.resolve(root);
30
+ const candidate = node_path_1.default.resolve(resolvedRoot, manifestDir);
31
+ if (node_path_1.default.dirname(candidate) !== resolvedRoot) {
32
+ throw new Error(`OpenZeppelin manifest directory escapes the project: ${manifestDir}`);
33
+ }
34
+ if (node_fs_1.default.existsSync(candidate)) {
35
+ const stat = node_fs_1.default.lstatSync(candidate);
36
+ if (stat.isSymbolicLink()) {
37
+ throw new Error(`OpenZeppelin manifest directory cannot be a symlink: ${manifestDir}`);
38
+ }
39
+ if (!stat.isDirectory()) {
40
+ throw new Error(`OpenZeppelin manifest path must be a directory: ${manifestDir}`);
41
+ }
42
+ }
43
+ return candidate;
44
+ };
45
+ const resolveTargetManifestDirectory = (root, target, env = process.env) => {
46
+ if (!SAFE_TARGET.test(target) || target.startsWith('_')) {
47
+ throw new Error(`invalid manifest target: ${target}`);
48
+ }
49
+ const resolvedRoot = node_path_1.default.resolve(root);
50
+ const configFile = node_path_1.default.join(resolvedRoot, 'config.yaml');
51
+ regularFile(configFile, 'config.yaml');
52
+ const parsed = yaml_1.default.parse(node_fs_1.default.readFileSync(configFile, 'utf8'), { merge: true });
53
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
54
+ throw new Error('config.yaml must define target keys at the top level');
55
+ }
56
+ const selected = parsed[target];
57
+ if (!selected || typeof selected !== 'object' || Array.isArray(selected)) {
58
+ throw new Error(`config.yaml has no target ${target}`);
59
+ }
60
+ const config = selected;
61
+ if (!ENVIRONMENTS.has(String(config.environment))) {
62
+ throw new Error(`config.yaml target ${target} has an invalid environment`);
63
+ }
64
+ const manifestDir = config.openzeppelin?.manifestDir;
65
+ if (typeof manifestDir !== 'string') {
66
+ throw new Error(`config.yaml target ${target} must define openzeppelin.manifestDir`);
67
+ }
68
+ if (config.environment === 'production' && manifestDir !== '.openzeppelin') {
69
+ throw new Error(`production target ${target} must use .openzeppelin`);
70
+ }
71
+ if (config.environment !== 'production' && manifestDir === '.openzeppelin') {
72
+ throw new Error(`non-production target ${target} must not use .openzeppelin`);
73
+ }
74
+ assertManifestDirectory(resolvedRoot, manifestDir);
75
+ const configuredEnvironment = env.MANIFEST_DEFAULT_DIR?.trim();
76
+ if (configuredEnvironment && configuredEnvironment !== manifestDir) {
77
+ throw new Error(`MANIFEST_DEFAULT_DIR conflict for ${target}: expected ${manifestDir}, received ${configuredEnvironment}`);
78
+ }
79
+ const configuredTarget = env.GATE_WORKFLOW_TARGET?.trim();
80
+ if (configuredTarget && configuredTarget !== target) {
81
+ throw new Error(`GATE_WORKFLOW_TARGET conflict: expected ${target}, received ${configuredTarget}`);
82
+ }
83
+ return manifestDir;
84
+ };
85
+ exports.resolveTargetManifestDirectory = resolveTargetManifestDirectory;
86
+ const resolveTargetManifestPaths = (root, target, chainId, env = process.env) => {
87
+ if (!Number.isSafeInteger(chainId) || chainId <= 0) {
88
+ throw new Error(`invalid manifest chainId: ${chainId}`);
89
+ }
90
+ const resolvedRoot = node_path_1.default.resolve(root);
91
+ const manifestDir = (0, exports.resolveTargetManifestDirectory)(resolvedRoot, target, env);
92
+ const directory = node_path_1.default.join(resolvedRoot, manifestDir);
93
+ const fallbackName = `unknown-${chainId}.json`;
94
+ const canonicalName = `${upgrades_core_1.networkNames[chainId] ?? `unknown-${chainId}`}.json`;
95
+ return {
96
+ root: resolvedRoot,
97
+ target,
98
+ manifestDir,
99
+ file: node_path_1.default.join(directory, canonicalName),
100
+ fallbackFile: node_path_1.default.join(directory, fallbackName),
101
+ };
102
+ };
103
+ exports.resolveTargetManifestPaths = resolveTargetManifestPaths;
104
+ const readManifestBytes = (paths) => {
105
+ const canonicalExists = node_fs_1.default.existsSync(paths.file);
106
+ const distinctFallback = paths.file !== paths.fallbackFile;
107
+ const fallbackExists = distinctFallback && node_fs_1.default.existsSync(paths.fallbackFile);
108
+ if (canonicalExists && fallbackExists) {
109
+ throw new Error('OpenZeppelin canonical and fallback manifests are ambiguous');
110
+ }
111
+ const selected = canonicalExists ? paths.file : fallbackExists ? paths.fallbackFile : undefined;
112
+ if (!selected)
113
+ throw new Error(`OpenZeppelin manifest is missing for target ${paths.target}`);
114
+ regularFile(selected, 'OpenZeppelin manifest');
115
+ return node_fs_1.default.readFileSync(selected);
116
+ };
117
+ const parseTargetManifest = (bytes) => {
118
+ let raw;
119
+ try {
120
+ raw = JSON.parse(bytes.toString('utf8'));
121
+ }
122
+ catch (error) {
123
+ const message = error instanceof Error ? error.message : String(error);
124
+ throw new Error(`OpenZeppelin manifest is invalid JSON: ${message}`);
125
+ }
126
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
127
+ throw new Error('OpenZeppelin manifest must be an object');
128
+ }
129
+ const value = raw;
130
+ if (value.manifestVersion !== '3.2') {
131
+ throw new Error('OpenZeppelin manifest version must be 3.2');
132
+ }
133
+ if (!value.impls || typeof value.impls !== 'object' || Array.isArray(value.impls)) {
134
+ throw new Error('OpenZeppelin manifest impls must be an object');
135
+ }
136
+ if (!Array.isArray(value.proxies)) {
137
+ throw new Error('OpenZeppelin manifest proxies must be an array');
138
+ }
139
+ return value;
140
+ };
141
+ exports.parseTargetManifest = parseTargetManifest;
142
+ const matchingImplementation = (manifest, implementation) => {
143
+ const expected = implementation.toLowerCase();
144
+ for (const entry of Object.values(manifest.impls)) {
145
+ if (!entry)
146
+ continue;
147
+ const addresses = [entry.address, ...(entry.allAddresses ?? [])];
148
+ if (addresses.some((address) => address.toLowerCase() === expected))
149
+ return entry.layout;
150
+ }
151
+ return undefined;
152
+ };
153
+ const readRegisteredZkUpgradeState = (input) => {
154
+ const paths = (0, exports.resolveTargetManifestPaths)(input.root, input.target, input.chainId, input.env);
155
+ const bytes = readManifestBytes(paths);
156
+ const manifest = (0, exports.parseTargetManifest)(bytes);
157
+ const proxyEntry = manifest.proxies.find((entry) => entry.address.toLowerCase() === input.proxy.toLowerCase());
158
+ if (!proxyEntry)
159
+ throw new Error(`proxy ${input.proxy} is not registered in the target manifest`);
160
+ if (proxyEntry.kind !== 'uups')
161
+ throw new Error(`proxy ${input.proxy} is not registered as UUPS`);
162
+ const oldLayout = matchingImplementation(manifest, input.currentImplementation);
163
+ if (!oldLayout) {
164
+ throw new Error(`current implementation ${input.currentImplementation} is not registered in the target manifest`);
165
+ }
166
+ return {
167
+ manifest,
168
+ paths,
169
+ bytes,
170
+ digest: node_crypto_1.default.createHash('sha256').update(bytes).digest('hex'),
171
+ oldLayout,
172
+ };
173
+ };
174
+ exports.readRegisteredZkUpgradeState = readRegisteredZkUpgradeState;
175
+ const hashStorageLayout = (layout) => node_crypto_1.default
176
+ .createHash('sha256')
177
+ .update((0, normalize_js_1.canonicalPreparationJson)(layout))
178
+ .digest('hex');
179
+ exports.hashStorageLayout = hashStorageLayout;
180
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/core/preparation/manifest.ts"],"names":[],"mappings":"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"}