gate-evm-tools 1.0.20 → 1.0.21

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.
@@ -0,0 +1,291 @@
1
+ import crypto from 'node:crypto';
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ const hashContents = (contents) => crypto
5
+ .createHash('sha256')
6
+ .update(contents ?? Buffer.from('<missing>'))
7
+ .digest('hex');
8
+ const SAFE_MANIFEST_DIRECTORY = /^\.openzeppelin(?:\.[a-z0-9][a-z0-9-]*)?$/;
9
+ const SAFE_MANIFEST_FILE = /^[a-z0-9][a-z0-9-]*\.json$/;
10
+ const errorCode = (error) => (error && typeof error === 'object' && 'code' in error
11
+ ? String(error.code)
12
+ : undefined);
13
+ const confinedManifestFile = (root, requestedFile) => {
14
+ const projectRoot = path.resolve(root);
15
+ const absolute = path.isAbsolute(requestedFile)
16
+ ? path.resolve(requestedFile)
17
+ : path.resolve(projectRoot, requestedFile);
18
+ const relative = path.relative(projectRoot, absolute);
19
+ if (!relative
20
+ || relative === '..'
21
+ || relative.startsWith(`..${path.sep}`)
22
+ || path.isAbsolute(relative)) {
23
+ throw new Error(`Manifest file escapes the project root: ${requestedFile}`);
24
+ }
25
+ const segments = relative.split(path.sep);
26
+ if (segments.length !== 2
27
+ || !SAFE_MANIFEST_DIRECTORY.test(segments[0])
28
+ || !SAFE_MANIFEST_FILE.test(segments[1])) {
29
+ throw new Error(`Manifest file is not a confined OpenZeppelin JSON path: ${relative}`);
30
+ }
31
+ const directory = path.dirname(absolute);
32
+ if (fs.existsSync(directory)) {
33
+ const directoryStat = fs.lstatSync(directory);
34
+ if (directoryStat.isSymbolicLink()) {
35
+ throw new Error(`Manifest directory cannot be a symlink: ${segments[0]}`);
36
+ }
37
+ if (!directoryStat.isDirectory()) {
38
+ throw new Error(`Manifest directory is not a directory: ${segments[0]}`);
39
+ }
40
+ }
41
+ else {
42
+ fs.mkdirSync(directory, { recursive: true });
43
+ }
44
+ if (fs.existsSync(absolute)) {
45
+ const fileStat = fs.lstatSync(absolute);
46
+ if (fileStat.isSymbolicLink()) {
47
+ throw new Error(`Manifest file cannot be a symlink: ${relative}`);
48
+ }
49
+ if (!fileStat.isFile()) {
50
+ throw new Error(`Manifest path is not a regular file: ${relative}`);
51
+ }
52
+ }
53
+ return { absolute, relative: segments.join('/') };
54
+ };
55
+ const confinedManifestPair = (options) => {
56
+ const root = path.resolve(options.root);
57
+ const manifest = confinedManifestFile(root, options.manifestFile);
58
+ const fallback = options.fallbackFile
59
+ ? confinedManifestFile(root, options.fallbackFile)
60
+ : manifest;
61
+ if (path.dirname(manifest.absolute) !== path.dirname(fallback.absolute)) {
62
+ throw new Error('Canonical and fallback manifests must use the same confined directory');
63
+ }
64
+ return { root, manifest, fallback };
65
+ };
66
+ const readRegularFile = (file) => {
67
+ if (!fs.existsSync(file.absolute))
68
+ return undefined;
69
+ const stat = fs.lstatSync(file.absolute);
70
+ if (stat.isSymbolicLink() || !stat.isFile()) {
71
+ throw new Error(`Manifest path is not a regular file: ${file.relative}`);
72
+ }
73
+ return fs.readFileSync(file.absolute);
74
+ };
75
+ const snapshotManifestPair = (pair) => {
76
+ const manifest = readRegularFile(pair.manifest);
77
+ const distinctFallback = pair.fallback.absolute !== pair.manifest.absolute;
78
+ const fallback = distinctFallback ? readRegularFile(pair.fallback) : manifest;
79
+ if (distinctFallback && manifest !== undefined && fallback !== undefined) {
80
+ throw new Error(`Network manifest files with different names both exist: ${pair.manifest.relative} and ${pair.fallback.relative}`);
81
+ }
82
+ if (manifest !== undefined) {
83
+ return {
84
+ manifest,
85
+ fallback,
86
+ activeFile: pair.manifest,
87
+ activeContents: manifest,
88
+ };
89
+ }
90
+ if (fallback !== undefined) {
91
+ return {
92
+ manifest,
93
+ fallback,
94
+ activeFile: pair.fallback,
95
+ activeContents: fallback,
96
+ };
97
+ }
98
+ return { manifest, fallback };
99
+ };
100
+ const acquireTransactionLock = (manifestFile) => {
101
+ const lockFile = `${manifestFile}.gate-tool.lock`;
102
+ const token = `${process.pid}-${Date.now()}-${crypto.randomBytes(8).toString('hex')}`;
103
+ let descriptor;
104
+ try {
105
+ descriptor = fs.openSync(lockFile, 'wx', 0o600);
106
+ }
107
+ catch (error) {
108
+ if (errorCode(error) === 'EEXIST') {
109
+ throw new Error(`Manifest is locked by another gate-tool transaction: ${manifestFile}`);
110
+ }
111
+ throw error;
112
+ }
113
+ try {
114
+ fs.writeFileSync(descriptor, `${token}\n`);
115
+ fs.fsyncSync(descriptor);
116
+ }
117
+ catch (error) {
118
+ fs.closeSync(descriptor);
119
+ if (fs.existsSync(lockFile))
120
+ fs.unlinkSync(lockFile);
121
+ throw error;
122
+ }
123
+ return () => {
124
+ fs.closeSync(descriptor);
125
+ try {
126
+ if (fs.readFileSync(lockFile, 'utf8').trim() === token)
127
+ fs.unlinkSync(lockFile);
128
+ }
129
+ catch (error) {
130
+ if (errorCode(error) !== 'ENOENT')
131
+ throw error;
132
+ }
133
+ };
134
+ };
135
+ export const writeFileAtomic = (filePath, contents) => {
136
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
137
+ const temporary = `${filePath}.${process.pid}.${Date.now()}.${crypto.randomBytes(6).toString('hex')}.tmp`;
138
+ let descriptor;
139
+ try {
140
+ descriptor = fs.openSync(temporary, 'wx', 0o600);
141
+ fs.writeFileSync(descriptor, contents);
142
+ fs.fsyncSync(descriptor);
143
+ fs.closeSync(descriptor);
144
+ descriptor = undefined;
145
+ fs.renameSync(temporary, filePath);
146
+ }
147
+ catch (error) {
148
+ if (descriptor !== undefined)
149
+ fs.closeSync(descriptor);
150
+ if (fs.existsSync(temporary))
151
+ fs.unlinkSync(temporary);
152
+ throw error;
153
+ }
154
+ };
155
+ const restoreFile = (file, contents) => {
156
+ if (contents === undefined) {
157
+ if (fs.existsSync(file.absolute))
158
+ fs.unlinkSync(file.absolute);
159
+ }
160
+ else {
161
+ writeFileAtomic(file.absolute, contents);
162
+ }
163
+ };
164
+ const restoreManifestPair = (pair, before) => {
165
+ restoreFile(pair.manifest, before.manifest);
166
+ if (pair.fallback.absolute !== pair.manifest.absolute) {
167
+ restoreFile(pair.fallback, before.fallback);
168
+ }
169
+ };
170
+ const contextFor = (pair) => ({
171
+ manifestFile: pair.manifest.absolute,
172
+ fallbackFile: pair.fallback.absolute,
173
+ writeManifestAtomic: (contents) => writeFileAtomic(pair.manifest.absolute, contents),
174
+ });
175
+ const withLockedManifestPair = async (options, operation) => {
176
+ const pair = confinedManifestPair(options);
177
+ const releaseLock = acquireTransactionLock(pair.manifest.absolute);
178
+ try {
179
+ return await operation(pair);
180
+ }
181
+ finally {
182
+ releaseLock();
183
+ }
184
+ };
185
+ export async function withManifestLock(options) {
186
+ return withLockedManifestPair(options, async (pair) => {
187
+ snapshotManifestPair(pair);
188
+ return options.operation(contextFor(pair));
189
+ });
190
+ }
191
+ export async function withTemporaryManifestTransaction(options) {
192
+ return withLockedManifestPair(options, async (pair) => {
193
+ const before = snapshotManifestPair(pair);
194
+ try {
195
+ return await options.operation(contextFor(pair));
196
+ }
197
+ finally {
198
+ restoreManifestPair(pair, before);
199
+ }
200
+ });
201
+ }
202
+ export const defaultManifestReportFile = (root, manifestFile) => {
203
+ const confined = confinedManifestFile(root, manifestFile);
204
+ const [manifestDirectory, fileName] = confined.relative.split('/');
205
+ return path.join(path.resolve(root), `gate-tool-sync-report.${manifestDirectory.slice(1)}.${fileName}`);
206
+ };
207
+ const confinedReportFile = (root, requestedFile) => {
208
+ const projectRoot = path.resolve(root);
209
+ const reportFile = path.isAbsolute(requestedFile)
210
+ ? path.resolve(requestedFile)
211
+ : path.resolve(projectRoot, requestedFile);
212
+ if (path.dirname(reportFile) !== projectRoot) {
213
+ throw new Error(`Manifest transaction report must stay in the project root: ${requestedFile}`);
214
+ }
215
+ if (fs.existsSync(reportFile)) {
216
+ const stat = fs.lstatSync(reportFile);
217
+ if (stat.isSymbolicLink() || !stat.isFile()) {
218
+ throw new Error(`Manifest transaction report must be a regular file: ${requestedFile}`);
219
+ }
220
+ }
221
+ return reportFile;
222
+ };
223
+ const writeReport = (filePath, report) => {
224
+ writeFileAtomic(filePath, Buffer.from(`${JSON.stringify(report, null, 2)}\n`));
225
+ };
226
+ export async function withManifestTransaction(options) {
227
+ const now = options.now ?? (() => new Date().toISOString());
228
+ const startedAt = now();
229
+ return withLockedManifestPair(options, async (pair) => {
230
+ const reportFile = confinedReportFile(pair.root, options.reportFile ?? defaultManifestReportFile(pair.root, pair.manifest.absolute));
231
+ const before = snapshotManifestPair(pair);
232
+ const beforeHash = hashContents(before.activeContents);
233
+ try {
234
+ const value = await options.operation(contextFor(pair));
235
+ const after = snapshotManifestPair(pair);
236
+ if (!after.activeFile
237
+ || after.activeFile.absolute !== pair.manifest.absolute
238
+ || after.activeContents === undefined) {
239
+ throw new Error(`Manifest transaction did not create ${pair.manifest.relative}`);
240
+ }
241
+ const report = {
242
+ version: 1,
243
+ status: 'committed',
244
+ manifestFile: pair.manifest.relative,
245
+ ...(pair.fallback.absolute === pair.manifest.absolute
246
+ ? {}
247
+ : { fallbackFile: pair.fallback.relative }),
248
+ ...(before.activeFile ? { beforeFile: before.activeFile.relative } : {}),
249
+ afterFile: after.activeFile.relative,
250
+ beforeExisted: before.activeContents !== undefined,
251
+ beforeHash,
252
+ afterHash: hashContents(after.activeContents),
253
+ startedAt,
254
+ completedAt: now(),
255
+ };
256
+ writeReport(reportFile, report);
257
+ return { value, report, reportFile };
258
+ }
259
+ catch (error) {
260
+ let attempted;
261
+ try {
262
+ attempted = snapshotManifestPair(pair);
263
+ }
264
+ catch {
265
+ attempted = undefined;
266
+ }
267
+ restoreManifestPair(pair, before);
268
+ const restored = snapshotManifestPair(pair);
269
+ const report = {
270
+ version: 1,
271
+ status: 'rolled_back',
272
+ manifestFile: pair.manifest.relative,
273
+ ...(pair.fallback.absolute === pair.manifest.absolute
274
+ ? {}
275
+ : { fallbackFile: pair.fallback.relative }),
276
+ ...(before.activeFile ? { beforeFile: before.activeFile.relative } : {}),
277
+ ...(restored.activeFile ? { afterFile: restored.activeFile.relative } : {}),
278
+ beforeExisted: before.activeContents !== undefined,
279
+ beforeHash,
280
+ afterHash: hashContents(restored.activeContents),
281
+ attemptedHash: hashContents(attempted?.activeContents),
282
+ startedAt,
283
+ completedAt: now(),
284
+ error: error instanceof Error ? error.message : String(error),
285
+ };
286
+ writeReport(reportFile, report);
287
+ throw error;
288
+ }
289
+ });
290
+ }
291
+ //# sourceMappingURL=manifestTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifestTransaction.js","sourceRoot":"","sources":["../../src/utils/manifestTransaction.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
1
  export declare function mergeUnsafeAllow(userUnsafeAllow?: string[], defaults?: readonly string[]): string[] | undefined;
2
+ export interface OpenZeppelinManifestPaths {
3
+ file: string;
4
+ fallbackFile: string;
5
+ }
6
+ export declare function getOpenZeppelinManifestPaths(hre: any): Promise<OpenZeppelinManifestPaths>;
2
7
  export declare function getOpenZeppelinManifestFile(hre: any): Promise<string>;
3
8
  export declare function shouldRetryForceImport(error: any): boolean;
4
9
  export declare function forceImportWithRetry(hre: any, address: string, contractFactory: any, options: any): Promise<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"openzeppelin.d.ts","sourceRoot":"","sources":["../../src/utils/openzeppelin.ts"],"names":[],"mappings":"AAWA,wBAAgB,gBAAgB,CAC9B,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,QAAQ,GAAE,SAAS,MAAM,EAAsC,GAC9D,MAAM,EAAE,GAAG,SAAS,CAGtB;AAED,wBAAsB,2BAA2B,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAG3E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAG1D;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,GAAG,EACpB,OAAO,EAAE,GAAG,gBAcb;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAO9E"}
1
+ {"version":3,"file":"openzeppelin.d.ts","sourceRoot":"","sources":["../../src/utils/openzeppelin.ts"],"names":[],"mappings":"AAWA,wBAAgB,gBAAgB,CAC9B,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,QAAQ,GAAE,SAAS,MAAM,EAAsC,GAC9D,MAAM,EAAE,GAAG,SAAS,CAGtB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,GAAG,GACP,OAAO,CAAC,yBAAyB,CAAC,CAMpC;AAED,wBAAsB,2BAA2B,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAE3E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAG1D;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,GAAG,EACpB,OAAO,EAAE,GAAG,gBAcb;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAO9E"}
@@ -11,9 +11,15 @@ export function mergeUnsafeAllow(userUnsafeAllow, defaults = DEFAULT_FORCE_IMPOR
11
11
  const merged = Array.from(new Set([...(defaults ?? []), ...(userUnsafeAllow ?? [])]));
12
12
  return merged.length > 0 ? merged : undefined;
13
13
  }
14
- export async function getOpenZeppelinManifestFile(hre) {
14
+ export async function getOpenZeppelinManifestPaths(hre) {
15
15
  const manifest = await Manifest.forNetwork(hre.network.provider);
16
- return manifest.file;
16
+ return {
17
+ file: manifest.file,
18
+ fallbackFile: manifest.fallbackFile,
19
+ };
20
+ }
21
+ export async function getOpenZeppelinManifestFile(hre) {
22
+ return (await getOpenZeppelinManifestPaths(hre)).file;
17
23
  }
18
24
  export function shouldRetryForceImport(error) {
19
25
  const message = String(error?.message ?? '');
@@ -1 +1 @@
1
- {"version":3,"file":"openzeppelin.js","sourceRoot":"","sources":["../../src/utils/openzeppelin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,MAAM,iCAAiC,GAAG;IACxC,aAAa;IACb,cAAc;IACd,0BAA0B;IAC1B,qBAAqB;IACrB,2BAA2B;IAC3B,0BAA0B;CAClB,CAAC;AAEX,MAAM,UAAU,gBAAgB,CAC9B,eAA0B,EAC1B,WAA8B,iCAAiC;IAE/D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,GAAQ;IACxD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjE,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAU;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IAC7C,OAAO,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAQ,EACR,OAAe,EACf,eAAoB,EACpB,OAAY;IAEZ,IAAI,CAAC;QACH,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAQ,EAAE,OAAe;IAC3D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,WAAW,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"openzeppelin.js","sourceRoot":"","sources":["../../src/utils/openzeppelin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,MAAM,iCAAiC,GAAG;IACxC,aAAa;IACb,cAAc;IACd,0BAA0B;IAC1B,qBAAqB;IACrB,2BAA2B;IAC3B,0BAA0B;CAClB,CAAC;AAEX,MAAM,UAAU,gBAAgB,CAC9B,eAA0B,EAC1B,WAA8B,iCAAiC;IAE/D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,GAAQ;IAER,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjE,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,YAAY,EAAE,QAAQ,CAAC,YAAY;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,GAAQ;IACxD,OAAO,CAAC,MAAM,4BAA4B,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAU;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IAC7C,OAAO,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAQ,EACR,OAAe,EACf,eAAoB,EACpB,OAAY;IAEZ,IAAI,CAAC;QACH,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAQ,EAAE,OAAe;IAC3D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,WAAW,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;AAC/D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gate-evm-tools",
3
- "version": "1.0.20",
3
+ "version": "1.0.21",
4
4
  "description": "Gate 智能合约工具集 - 字节码检查、合约升级验证、合约状态同步",
5
5
  "type": "module",
6
6
  "bin": {
@@ -16,7 +16,7 @@
16
16
  "build": "tsc",
17
17
  "dev": "tsc --watch",
18
18
  "start": "node bin/cli.js",
19
- "test": "node bin/cli.js check"
19
+ "test": "node --test test/*.test.mjs"
20
20
  },
21
21
  "keywords": [
22
22
  "bytecode",