@openzeppelin/upgrades-core 1.23.0 → 1.24.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.
@@ -16,13 +16,23 @@ export interface ImplDeployment extends Deployment {
16
16
  export interface ProxyDeployment extends Deployment {
17
17
  kind: 'uups' | 'transparent' | 'beacon';
18
18
  }
19
+ interface DevInstanceMetadata {
20
+ networkName: string;
21
+ instanceId: string;
22
+ forkedNetwork?: {
23
+ chainId: number;
24
+ };
25
+ }
19
26
  export declare class Manifest {
20
27
  readonly chainId: number;
21
28
  readonly file: string;
22
- private readonly fallbackFile;
29
+ readonly fallbackFile: string;
30
+ private readonly dir;
31
+ private readonly chainIdSuffix;
32
+ private readonly parent?;
23
33
  private locked;
24
34
  static forNetwork(provider: EthereumProvider): Promise<Manifest>;
25
- constructor(chainId: number);
35
+ constructor(chainId: number, devInstanceMetadata?: DevInstanceMetadata, osTmpDir?: string);
26
36
  getAdmin(): Promise<Deployment | undefined>;
27
37
  getDeploymentFromAddress(address: string): Promise<ImplDeployment>;
28
38
  getProxyFromAddress(address: string): Promise<ProxyDeployment>;
@@ -31,7 +41,7 @@ export declare class Manifest {
31
41
  private readFile;
32
42
  private writeFile;
33
43
  private renameFileIfRequired;
34
- read(): Promise<ManifestData>;
44
+ read(retries?: number): Promise<ManifestData>;
35
45
  write(data: ManifestData): Promise<void>;
36
46
  lockedRun<T>(cb: () => Promise<T>): Promise<T>;
37
47
  private lock;
@@ -40,4 +50,5 @@ export declare function migrateManifest(data: ManifestData): ManifestData;
40
50
  export declare class DeploymentNotFound extends Error {
41
51
  }
42
52
  export declare function normalizeManifestData(input: ManifestData): ManifestData;
53
+ export {};
43
54
  //# sourceMappingURL=manifest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAA4B,MAAM,YAAY,CAAC;AAIxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAO/C,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE;SACJ,OAAO,IAAI,MAAM,CAAC,CAAC,EAAE,cAAc;KACrC,CAAC;IACF,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,QAAQ,CAAC;CACzC;AAYD,qBAAa,QAAQ;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC,OAAO,CAAC,MAAM,CAAS;WAEV,UAAU,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;gBAI1D,OAAO,EAAE,MAAM;IAUrB,QAAQ,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAI3C,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAYlE,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAS9D,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAYvC,MAAM;YASN,QAAQ;YAqBR,SAAS;YAKT,oBAAoB;IAU5B,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC;IAgB7B,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;YAYtC,IAAI;CAWnB;AAgBD,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAUhE;AAED,qBAAa,kBAAmB,SAAQ,KAAK;CAAG;AAEhD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAOvE"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAgD,MAAM,YAAY,CAAC;AAI5F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAS/C,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE;SACJ,OAAO,IAAI,MAAM,CAAC,CAAC,EAAE,cAAc;KACrC,CAAC;IACF,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,QAAQ,CAAC;CACzC;AA8CD,UAAU,mBAAmB;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE;QAEd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,qBAAa,QAAQ;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAE7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAW;IAEnC,OAAO,CAAC,MAAM,CAAS;WAEV,UAAU,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;gBAU1D,OAAO,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,mBAAmB,EAAE,QAAQ,CAAC,EAAE,MAAM;IAuCnF,QAAQ,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAI3C,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAYlE,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAS9D,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAYvC,MAAM;YASN,QAAQ;YAqBR,SAAS;YAKT,oBAAoB;IAU5B,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAoB7C,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;YAYtC,IAAI;CAWnB;AAgBD,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAUhE;AAED,qBAAa,kBAAmB,SAAQ,KAAK;CAAG;AAEhD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAOvE"}
package/dist/manifest.js CHANGED
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.normalizeManifestData = exports.DeploymentNotFound = exports.migrateManifest = exports.Manifest = void 0;
7
+ const os_1 = __importDefault(require("os"));
7
8
  const path_1 = __importDefault(require("path"));
8
9
  const fs_1 = require("fs");
9
10
  const provider_1 = require("./provider");
@@ -12,6 +13,8 @@ const compare_versions_1 = require("compare-versions");
12
13
  const pick_1 = require("./utils/pick");
13
14
  const map_values_1 = require("./utils/map-values");
14
15
  const error_1 = require("./error");
16
+ const debug_1 = __importDefault(require("./utils/debug"));
17
+ const assert_1 = require("./utils/assert");
15
18
  const currentManifestVersion = '3.2';
16
19
  function defaultManifest() {
17
20
  return {
@@ -20,18 +23,76 @@ function defaultManifest() {
20
23
  proxies: [],
21
24
  };
22
25
  }
23
- const manifestDir = '.openzeppelin';
26
+ const MANIFEST_DEFAULT_DIR = '.openzeppelin';
27
+ const MANIFEST_TEMP_DIR = 'openzeppelin-upgrades';
28
+ async function getDevInstanceMetadata(provider, chainId) {
29
+ let hardhatMetadata;
30
+ try {
31
+ hardhatMetadata = await (0, provider_1.getHardhatMetadata)(provider);
32
+ }
33
+ catch (e) {
34
+ return undefined;
35
+ }
36
+ if (hardhatMetadata.chainId !== chainId) {
37
+ throw new Error(`Broken invariant: Hardhat metadata's chainId ${hardhatMetadata.chainId} does not match eth_chainId ${chainId}`);
38
+ }
39
+ return {
40
+ networkName: 'hardhat',
41
+ instanceId: hardhatMetadata.instanceId,
42
+ forkedNetwork: hardhatMetadata.forkedNetwork,
43
+ };
44
+ }
45
+ function getSuffix(chainId, devInstanceMetadata) {
46
+ if (devInstanceMetadata !== undefined) {
47
+ return `${chainId}-${devInstanceMetadata.instanceId}`;
48
+ }
49
+ else {
50
+ return `${chainId}`;
51
+ }
52
+ }
24
53
  class Manifest {
25
54
  static async forNetwork(provider) {
26
- return new Manifest(await (0, provider_1.getChainId)(provider));
55
+ const chainId = await (0, provider_1.getChainId)(provider);
56
+ const devInstanceMetadata = await getDevInstanceMetadata(provider, chainId);
57
+ if (devInstanceMetadata !== undefined) {
58
+ return new Manifest(chainId, devInstanceMetadata, os_1.default.tmpdir());
59
+ }
60
+ else {
61
+ return new Manifest(chainId);
62
+ }
27
63
  }
28
- constructor(chainId) {
64
+ constructor(chainId, devInstanceMetadata, osTmpDir) {
29
65
  this.locked = false;
30
66
  this.chainId = chainId;
31
- const fallbackName = `unknown-${this.chainId}`;
32
- this.fallbackFile = path_1.default.join(manifestDir, `${fallbackName}.json`);
33
- const name = provider_1.networkNames[this.chainId] ?? fallbackName;
34
- this.file = path_1.default.join(manifestDir, `${name}.json`);
67
+ this.chainIdSuffix = getSuffix(chainId, devInstanceMetadata);
68
+ const defaultFallbackName = `unknown-${chainId}`;
69
+ if (devInstanceMetadata !== undefined) {
70
+ (0, assert_1.assert)(osTmpDir !== undefined);
71
+ this.dir = path_1.default.join(osTmpDir, MANIFEST_TEMP_DIR);
72
+ (0, debug_1.default)('development manifest directory:', this.dir);
73
+ const devName = `${devInstanceMetadata.networkName}-${this.chainIdSuffix}`;
74
+ const devFile = path_1.default.join(this.dir, `${devName}.json`);
75
+ this.file = devFile;
76
+ if (chainId === 31337) {
77
+ this.fallbackFile = path_1.default.join(MANIFEST_DEFAULT_DIR, `${defaultFallbackName}.json`);
78
+ }
79
+ else {
80
+ this.fallbackFile = devFile;
81
+ }
82
+ (0, debug_1.default)('development manifest file:', this.file, 'fallback file:', this.fallbackFile);
83
+ if (devInstanceMetadata.forkedNetwork !== undefined) {
84
+ const forkedChainId = devInstanceMetadata.forkedNetwork.chainId;
85
+ (0, debug_1.default)('forked network chain id:', forkedChainId);
86
+ this.parent = new Manifest(forkedChainId);
87
+ }
88
+ }
89
+ else {
90
+ this.dir = MANIFEST_DEFAULT_DIR;
91
+ const networkName = provider_1.networkNames[chainId];
92
+ this.file = path_1.default.join(MANIFEST_DEFAULT_DIR, `${networkName ?? defaultFallbackName}.json`);
93
+ this.fallbackFile = path_1.default.join(MANIFEST_DEFAULT_DIR, `${defaultFallbackName}.json`);
94
+ (0, debug_1.default)('manifest file:', this.file, 'fallback file:', this.fallbackFile);
95
+ }
35
96
  }
36
97
  async getAdmin() {
37
98
  return (await this.read()).admin;
@@ -104,15 +165,20 @@ class Manifest {
104
165
  }
105
166
  }
106
167
  }
107
- async read() {
108
- const release = this.locked ? undefined : await this.lock();
168
+ async read(retries) {
169
+ const release = this.locked ? undefined : await this.lock(retries);
109
170
  try {
110
171
  const data = JSON.parse(await this.readFile());
111
172
  return validateOrUpdateManifestVersion(data);
112
173
  }
113
174
  catch (e) {
114
175
  if (e.code === 'ENOENT') {
115
- return defaultManifest();
176
+ if (this.parent !== undefined) {
177
+ return await this.parent.read(retries);
178
+ }
179
+ else {
180
+ return defaultManifest();
181
+ }
116
182
  }
117
183
  else {
118
184
  throw e;
@@ -141,10 +207,10 @@ class Manifest {
141
207
  await release();
142
208
  }
143
209
  }
144
- async lock() {
145
- const lockfileName = path_1.default.join(manifestDir, `chain-${this.chainId}`);
210
+ async lock(retries = 3) {
211
+ const lockfileName = path_1.default.join(this.dir, `chain-${this.chainIdSuffix}`);
146
212
  await fs_1.promises.mkdir(path_1.default.dirname(lockfileName), { recursive: true });
147
- const release = await proper_lockfile_1.default.lock(lockfileName, { retries: 3, realpath: false });
213
+ const release = await proper_lockfile_1.default.lock(lockfileName, { retries, realpath: false });
148
214
  this.locked = true;
149
215
  return async () => {
150
216
  await release();
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
@@ -3,17 +3,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const os_1 = __importDefault(require("os"));
6
7
  const ava_1 = __importDefault(require("ava"));
7
8
  const manifest_1 = require("./manifest");
8
9
  const fs_1 = require("fs");
9
10
  const path_1 = __importDefault(require("path"));
10
- async function writeTestManifest(file) {
11
+ async function writeTestManifest(file, address) {
11
12
  const testManifest = {
12
13
  manifestVersion: '3.2',
13
14
  impls: {},
14
15
  proxies: [
15
16
  {
16
- address: '0x123',
17
+ address: address ?? '0x123',
17
18
  txHash: '0x0',
18
19
  kind: 'uups',
19
20
  },
@@ -81,21 +82,265 @@ ava_1.default.serial('rename manifest', async (t) => {
81
82
  t.throwsAsync(fs_1.promises.access(`.openzeppelin/chain-${id}.lock`));
82
83
  // check that the contents were persisted
83
84
  const data = await new manifest_1.Manifest(id).read();
84
- t.true(data.proxies[0].address === '0x123');
85
- t.true(data.proxies[1].address === '0x456');
85
+ t.is(data.proxies[0].address, '0x123');
86
+ t.is(data.proxies[1].address, '0x456');
86
87
  await assertNewName(t, id);
87
88
  t.throwsAsync(fs_1.promises.access(`.openzeppelin/chain-${id}.lock`));
88
89
  await deleteManifests(t, id);
89
90
  });
91
+ ava_1.default.serial('rename hardhat from unknown to dev manifest', async (t) => {
92
+ const id = 31337;
93
+ await deleteFile(t, `.openzeppelin/unknown-${id}.json`);
94
+ await writeTestManifest(`.openzeppelin/unknown-${id}.json`);
95
+ const instanceId = '0xaa0';
96
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId };
97
+ const manifest = new manifest_1.Manifest(id, devInstanceMetadata, os_1.default.tmpdir());
98
+ await fs_1.promises.access(`.openzeppelin/unknown-${id}.json`);
99
+ await manifest.lockedRun(async () => {
100
+ await fs_1.promises.access(`${os_1.default.tmpdir()}/openzeppelin-upgrades/chain-${id}-${instanceId}.lock`);
101
+ const data = await manifest.read();
102
+ data.proxies.push({
103
+ address: '0x456',
104
+ txHash: '0x0',
105
+ kind: 'uups',
106
+ });
107
+ await fs_1.promises.access(`.openzeppelin/unknown-${id}.json`);
108
+ await manifest.write(data);
109
+ });
110
+ t.throwsAsync(fs_1.promises.access(`.openzeppelin/unknown-${id}.json`));
111
+ await fs_1.promises.access(`${os_1.default.tmpdir()}/openzeppelin-upgrades/hardhat-${id}-${instanceId}.json`);
112
+ const dev = await new manifest_1.Manifest(id, devInstanceMetadata, os_1.default.tmpdir()).read();
113
+ t.is(dev.proxies.length, 2);
114
+ t.is(dev.proxies[0].address, '0x123');
115
+ t.is(dev.proxies[1].address, '0x456');
116
+ await deleteFile(t, `.openzeppelin/unknown-${id}.json`);
117
+ await deleteFile(t, `${os_1.default.tmpdir()}/openzeppelin-upgrades/hardhat-${id}-${instanceId}.json`);
118
+ });
119
+ ava_1.default.serial('forked chain from known network with fallback name', async (t) => {
120
+ const forkedId = 80001;
121
+ const devId = 55555;
122
+ await deleteManifests(t, forkedId);
123
+ await writeTestManifest(`.openzeppelin/unknown-${forkedId}.json`);
124
+ const instanceId = '0xaaa';
125
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId, forkedNetwork: { chainId: forkedId } };
126
+ const manifest = new manifest_1.Manifest(devId, devInstanceMetadata, os_1.default.tmpdir());
127
+ await assertOldName(t, forkedId);
128
+ await manifest.lockedRun(async () => {
129
+ await fs_1.promises.access(`${os_1.default.tmpdir()}/openzeppelin-upgrades/chain-${devId}-${instanceId}.lock`);
130
+ const data = await manifest.read();
131
+ data.proxies.push({
132
+ address: '0x456',
133
+ txHash: '0x0',
134
+ kind: 'uups',
135
+ });
136
+ await assertOldName(t, forkedId);
137
+ await manifest.write(data);
138
+ await assertOldName(t, forkedId); // original network file should not be changed
139
+ });
140
+ t.throwsAsync(fs_1.promises.access(`.openzeppelin/chain-${forkedId}.lock`));
141
+ t.throwsAsync(fs_1.promises.access(`${os_1.default.tmpdir()}/openzeppelin-upgrades/chain-${devId}-${instanceId}.lock`));
142
+ await fs_1.promises.access(`${os_1.default.tmpdir()}/openzeppelin-upgrades/hardhat-${devId}-${instanceId}.json`);
143
+ // check that the contents were NOT persisted to original manifest
144
+ const orig = await new manifest_1.Manifest(forkedId).read();
145
+ t.is(orig.proxies.length, 1);
146
+ t.is(orig.proxies[0].address, '0x123');
147
+ // check that the contents were persisted to dev copy of manifest
148
+ const dev = await new manifest_1.Manifest(devId, devInstanceMetadata, os_1.default.tmpdir()).read();
149
+ t.is(dev.proxies.length, 2);
150
+ t.is(dev.proxies[0].address, '0x123');
151
+ t.is(dev.proxies[1].address, '0x456');
152
+ await deleteManifests(t, forkedId);
153
+ await deleteFile(t, `${os_1.default.tmpdir()}/openzeppelin-upgrades/hardhat-${devId}-${instanceId}.json`);
154
+ });
155
+ ava_1.default.serial('forked chain from known network with actual name', async (t) => {
156
+ const forkedId = 80001;
157
+ const devId = 55555;
158
+ await deleteManifests(t, forkedId);
159
+ await writeTestManifest(`.openzeppelin/polygon-mumbai.json`);
160
+ const instanceId = '0xbbb';
161
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId, forkedNetwork: { chainId: forkedId } };
162
+ const manifest = new manifest_1.Manifest(devId, devInstanceMetadata, os_1.default.tmpdir());
163
+ await assertNewName(t, forkedId);
164
+ await manifest.lockedRun(async () => {
165
+ await fs_1.promises.access(`${os_1.default.tmpdir()}/openzeppelin-upgrades/chain-${devId}-${instanceId}.lock`);
166
+ const data = await manifest.read();
167
+ data.proxies.push({
168
+ address: '0x456',
169
+ txHash: '0x0',
170
+ kind: 'uups',
171
+ });
172
+ await assertNewName(t, forkedId);
173
+ await manifest.write(data);
174
+ await assertNewName(t, forkedId); // original network file should not be changed
175
+ });
176
+ t.throwsAsync(fs_1.promises.access(`.openzeppelin/chain-${forkedId}.lock`));
177
+ t.throwsAsync(fs_1.promises.access(`${os_1.default.tmpdir()}/openzeppelin-upgrades/chain-${devId}-${instanceId}.lock`));
178
+ await fs_1.promises.access(`${os_1.default.tmpdir()}/openzeppelin-upgrades/hardhat-${devId}-${instanceId}.json`);
179
+ // check that the contents were NOT persisted to original manifest
180
+ const orig = await new manifest_1.Manifest(forkedId).read();
181
+ t.is(orig.proxies.length, 1);
182
+ t.is(orig.proxies[0].address, '0x123');
183
+ // check that the contents were persisted to dev copy of manifest
184
+ const dev = await new manifest_1.Manifest(devId, devInstanceMetadata, os_1.default.tmpdir()).read();
185
+ t.is(dev.proxies.length, 2);
186
+ t.is(dev.proxies[0].address, '0x123');
187
+ t.is(dev.proxies[1].address, '0x456');
188
+ await deleteManifests(t, forkedId);
189
+ await deleteFile(t, `${os_1.default.tmpdir()}/openzeppelin-upgrades/hardhat-${devId}-${instanceId}.json`);
190
+ });
191
+ ava_1.default.serial('forked chain, real manifest already locked', async (t) => {
192
+ const forkedId = 80001;
193
+ const devId = 55555;
194
+ const instanceId = '0xccc';
195
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId, forkedNetwork: { chainId: forkedId } };
196
+ const realManifest = new manifest_1.Manifest(forkedId);
197
+ const devManifest = new manifest_1.Manifest(devId, devInstanceMetadata, os_1.default.tmpdir());
198
+ try {
199
+ await realManifest.lockedRun(async () => {
200
+ await devManifest.read(0);
201
+ });
202
+ t.fail();
203
+ }
204
+ catch (e) {
205
+ t.is(e.code, 'ELOCKED');
206
+ }
207
+ });
208
+ ava_1.default.serial('forked chain, real manifest already locked but dev manifest exists', async (t) => {
209
+ const forkedId = 80001;
210
+ const devId = 55555;
211
+ const instanceId = '0xddd';
212
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId, forkedNetwork: { chainId: forkedId } };
213
+ const realManifest = new manifest_1.Manifest(forkedId);
214
+ const devManifest = new manifest_1.Manifest(devId, devInstanceMetadata, os_1.default.tmpdir());
215
+ // write dev manifest
216
+ await writeTestManifest(devManifest.file, '0x999');
217
+ // then write real manifest
218
+ await deleteManifests(t, forkedId);
219
+ await writeTestManifest(`.openzeppelin/polygon-mumbai.json`);
220
+ let devManifestContents;
221
+ await realManifest.lockedRun(async () => {
222
+ // should ignore real manifest and real lock file
223
+ devManifestContents = await devManifest.read();
224
+ t.is(devManifestContents.proxies.length, 1);
225
+ t.is(devManifestContents.proxies[0].address, '0x999');
226
+ });
227
+ await deleteManifests(t, forkedId);
228
+ await deleteFile(t, `${os_1.default.tmpdir()}/openzeppelin-upgrades/hardhat-${devId}-${instanceId}.json`);
229
+ });
230
+ ava_1.default.serial('forked chain without existing manifest', async (t) => {
231
+ const forkedId = 80001;
232
+ const devId = 55555;
233
+ await deleteManifests(t, forkedId);
234
+ const instanceId = '0xeee';
235
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId, forkedNetwork: { chainId: forkedId } };
236
+ const manifest = new manifest_1.Manifest(devId, devInstanceMetadata, os_1.default.tmpdir());
237
+ await manifest.lockedRun(async () => {
238
+ await fs_1.promises.access(`${os_1.default.tmpdir()}/openzeppelin-upgrades/chain-${devId}-${instanceId}.lock`);
239
+ const data = await manifest.read();
240
+ data.proxies.push({
241
+ address: '0x456',
242
+ txHash: '0x0',
243
+ kind: 'uups',
244
+ });
245
+ await manifest.write(data);
246
+ });
247
+ t.throwsAsync(fs_1.promises.access(`${os_1.default.tmpdir()}/openzeppelin-upgrades/chain-${devId}-${instanceId}.lock`));
248
+ await fs_1.promises.access(`${os_1.default.tmpdir()}/openzeppelin-upgrades/hardhat-${devId}-${instanceId}.json`);
249
+ // check that the contents were NOT persisted to regular manifest
250
+ t.throwsAsync(fs_1.promises.access(`.openzeppelin/unknown-${forkedId}.json`));
251
+ t.throwsAsync(fs_1.promises.access(`.openzeppelin/polygon-mumbai.json`));
252
+ // check that the contents were persisted to dev copy of manifest
253
+ const dev = await new manifest_1.Manifest(devId, devInstanceMetadata, os_1.default.tmpdir()).read();
254
+ t.is(dev.proxies.length, 1);
255
+ t.is(dev.proxies[0].address, '0x456');
256
+ await deleteManifests(t, forkedId);
257
+ await deleteFile(t, `${os_1.default.tmpdir()}/openzeppelin-upgrades/hardhat-${devId}-${instanceId}.json`);
258
+ });
259
+ ava_1.default.serial('dev instance with known network id', async (t) => {
260
+ const devId = 80001;
261
+ await deleteManifests(t, devId);
262
+ // dev instance without forking, so this real manifest should not be actually used
263
+ await writeTestManifest(`.openzeppelin/polygon-mumbai.json`);
264
+ const instanceId = '0xfff';
265
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId };
266
+ const manifest = new manifest_1.Manifest(devId, devInstanceMetadata, os_1.default.tmpdir());
267
+ await manifest.lockedRun(async () => {
268
+ await fs_1.promises.access(`${os_1.default.tmpdir()}/openzeppelin-upgrades/chain-${devId}-${instanceId}.lock`);
269
+ const data = await manifest.read();
270
+ data.proxies.push({
271
+ address: '0x456',
272
+ txHash: '0x0',
273
+ kind: 'uups',
274
+ });
275
+ await manifest.write(data);
276
+ });
277
+ t.throwsAsync(fs_1.promises.access(`${os_1.default.tmpdir()}/openzeppelin-upgrades/chain-${devId}-${instanceId}.lock`));
278
+ await fs_1.promises.access(`${os_1.default.tmpdir()}/openzeppelin-upgrades/hardhat-${devId}-${instanceId}.json`);
279
+ // check that the contents were NOT persisted to original manifest
280
+ const orig = await new manifest_1.Manifest(devId).read();
281
+ t.is(orig.proxies.length, 1);
282
+ t.is(orig.proxies[0].address, '0x123');
283
+ // check that the contents were persisted to dev manifest without original contents
284
+ const dev = await new manifest_1.Manifest(devId, devInstanceMetadata, os_1.default.tmpdir()).read();
285
+ t.is(dev.proxies.length, 1);
286
+ t.is(dev.proxies[0].address, '0x456');
287
+ await deleteManifests(t, devId);
288
+ await deleteFile(t, `${os_1.default.tmpdir()}/openzeppelin-upgrades/hardhat-${devId}-${instanceId}.json`);
289
+ });
90
290
  (0, ava_1.default)('manifest name for a known network', t => {
91
291
  const manifest = new manifest_1.Manifest(1);
92
292
  t.is(manifest.file, '.openzeppelin/mainnet.json');
93
293
  });
294
+ (0, ava_1.default)('manifest name for a known network, development instance', t => {
295
+ const chainId = 1;
296
+ const instanceId = '0x11111';
297
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId };
298
+ const manifest = new manifest_1.Manifest(chainId, devInstanceMetadata, '/tmp');
299
+ const expectedPath = `/tmp/openzeppelin-upgrades/hardhat-${chainId}-${instanceId}.json`;
300
+ t.is(manifest.file, expectedPath);
301
+ t.is(manifest.fallbackFile, expectedPath);
302
+ });
94
303
  (0, ava_1.default)('manifest name for an unknown network', t => {
95
304
  const id = 55555;
96
305
  const manifest = new manifest_1.Manifest(id);
97
306
  t.is(manifest.file, `.openzeppelin/unknown-${id}.json`);
98
307
  });
308
+ (0, ava_1.default)('manifest name for an unknown network, development instance, non hardhat', t => {
309
+ const chainId = 55555;
310
+ const instanceId = '0x22222';
311
+ const devInstanceMetadata = { networkName: 'dev', instanceId: instanceId };
312
+ const manifest = new manifest_1.Manifest(chainId, devInstanceMetadata, '/tmp');
313
+ const expectedPath = `/tmp/openzeppelin-upgrades/dev-${chainId}-${instanceId}.json`;
314
+ t.is(manifest.file, expectedPath);
315
+ t.is(manifest.fallbackFile, expectedPath);
316
+ });
317
+ (0, ava_1.default)('manifest name for an unknown network, development instance, hardhat', t => {
318
+ const chainId = 31337;
319
+ const instanceId = '0x22223';
320
+ const devInstanceMetadata = { networkName: 'dev', instanceId: instanceId };
321
+ const manifest = new manifest_1.Manifest(chainId, devInstanceMetadata, '/tmp');
322
+ const expectedPath = `/tmp/openzeppelin-upgrades/dev-${chainId}-${instanceId}.json`;
323
+ t.is(manifest.file, expectedPath);
324
+ t.is(manifest.fallbackFile, `.openzeppelin/unknown-${chainId}.json`);
325
+ });
326
+ (0, ava_1.default)('manifest dev instance without tmp dir param', t => {
327
+ const chainId = 1;
328
+ const instanceId = '0x33333';
329
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId };
330
+ t.throws(() => new manifest_1.Manifest(chainId, devInstanceMetadata));
331
+ });
332
+ (0, ava_1.default)('manifest lock file name for a development network instance', async (t) => {
333
+ const chainId = 55555;
334
+ const instanceId = '0x55555';
335
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId };
336
+ const manifest = new manifest_1.Manifest(chainId, devInstanceMetadata, '/tmp');
337
+ await manifest.lockedRun(async () => {
338
+ t.throwsAsync(fs_1.promises.access(`.openzeppelin/chain-${chainId}.lock`));
339
+ t.throwsAsync(fs_1.promises.access(`.openzeppelin/chain-${chainId}-${instanceId}.lock`));
340
+ t.throwsAsync(fs_1.promises.access(`/tmp/openzeppelin-upgrades/chain-${chainId}.lock`));
341
+ await fs_1.promises.access(`/tmp/openzeppelin-upgrades/chain-${chainId}-${instanceId}.lock`);
342
+ });
343
+ });
99
344
  (0, ava_1.default)('normalize manifest', t => {
100
345
  const deployment = {
101
346
  address: '0x1234',
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.test.js","sourceRoot":"","sources":["../src/manifest.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.test.js","sourceRoot":"","sources":["../src/manifest.test.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,8CAA6C;AAC7C,yCAA2E;AAC3E,2BAAoC;AACpC,gDAAwB;AAExB,KAAK,UAAU,iBAAiB,CAAC,IAAY,EAAE,OAAgB;IAC7D,MAAM,YAAY,GAAG;QACnB,eAAe,EAAE,KAAK;QACtB,KAAK,EAAE,EAAE;QACT,OAAO,EAAE;YACP;gBACE,OAAO,EAAE,OAAO,IAAI,OAAO;gBAC3B,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,MAAM;aACb;SACF;KACF,CAAC;IACF,MAAM,aAAE,CAAC,KAAK,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,aAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,CAAmB,EAAE,IAAY;IACzD,IAAI;QACF,MAAM,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KACvB;IAAC,OAAO,CAAM,EAAE;QACf,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACjC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACX;KACF;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,CAA4B,EAAE,EAAU;IACnE,MAAM,aAAE,CAAC,MAAM,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC,CAAC,WAAW,CAAC,aAAE,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,CAA4B,EAAE,EAAU;IACnE,CAAC,CAAC,WAAW,CAAC,aAAE,CAAC,MAAM,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,MAAM,aAAE,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,CAA4B,EAAE,EAAU;IACrE,MAAM,UAAU,CAAC,CAAC,EAAE,yBAAyB,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,UAAU,CAAC,CAAC,EAAE,mCAAmC,CAAC,CAAC;AAC3D,CAAC;AAED,aAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC1C,MAAM,EAAE,GAAG,KAAK,CAAC;IACjB,MAAM,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE7B,MAAM,iBAAiB,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IAC5D,MAAM,iBAAiB,CAAC,mCAAmC,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QAClC,MAAM,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;YACzC,OAAO,EAAE,IAAI,MAAM,CACjB,4DAA4D,EAAE,8EAA8E,CAC7I;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,aAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACvC,MAAM,EAAE,GAAG,KAAK,CAAC;IACjB,MAAM,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE7B,MAAM,iBAAiB,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IAE5D,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,mCAAmC,CAAC,CAAC;IAEzD,CAAC,CAAC,WAAW,CAAC,aAAE,CAAC,MAAM,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3D,MAAM,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3B,MAAM,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QAClC,MAAM,aAAE,CAAC,MAAM,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QAEH,MAAM,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3B,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,MAAM,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE3B,CAAC,CAAC,WAAW,CAAC,aAAE,CAAC,MAAM,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3D,yCAAyC;IACzC,MAAM,IAAI,GAAG,MAAM,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE3B,CAAC,CAAC,WAAW,CAAC,aAAE,CAAC,MAAM,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3D,MAAM,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,aAAI,CAAC,MAAM,CAAC,6CAA6C,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACnE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEjB,MAAM,UAAU,CAAC,CAAC,EAAE,yBAAyB,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,iBAAiB,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IAE5D,MAAM,UAAU,GAAG,OAAO,CAAC;IAC3B,MAAM,mBAAmB,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IAE/E,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,EAAE,EAAE,mBAAmB,EAAE,YAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAEpE,MAAM,aAAE,CAAC,MAAM,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QAClC,MAAM,aAAE,CAAC,MAAM,CAAC,GAAG,YAAE,CAAC,MAAM,EAAE,gCAAgC,EAAE,IAAI,UAAU,OAAO,CAAC,CAAC;QACvF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QAEH,MAAM,aAAE,CAAC,MAAM,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,WAAW,CAAC,aAAE,CAAC,MAAM,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,MAAM,aAAE,CAAC,MAAM,CAAC,GAAG,YAAE,CAAC,MAAM,EAAE,kCAAkC,EAAE,IAAI,UAAU,OAAO,CAAC,CAAC;IAEzF,MAAM,GAAG,GAAG,MAAM,IAAI,mBAAQ,CAAC,EAAE,EAAE,mBAAmB,EAAE,YAAE,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5E,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEtC,MAAM,UAAU,CAAC,CAAC,EAAE,yBAAyB,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,UAAU,CAAC,CAAC,EAAE,GAAG,YAAE,CAAC,MAAM,EAAE,kCAAkC,EAAE,IAAI,UAAU,OAAO,CAAC,CAAC;AAC/F,CAAC,CAAC,CAAC;AAEH,aAAI,CAAC,MAAM,CAAC,oDAAoD,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC1E,MAAM,QAAQ,GAAG,KAAK,CAAC;IACvB,MAAM,KAAK,GAAG,KAAK,CAAC;IAEpB,MAAM,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEnC,MAAM,iBAAiB,CAAC,yBAAyB,QAAQ,OAAO,CAAC,CAAC;IAElE,MAAM,UAAU,GAAG,OAAO,CAAC;IAC3B,MAAM,mBAAmB,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC;IAErH,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,YAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAEvE,MAAM,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACjC,MAAM,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QAClC,MAAM,aAAE,CAAC,MAAM,CAAC,GAAG,YAAE,CAAC,MAAM,EAAE,gCAAgC,KAAK,IAAI,UAAU,OAAO,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QAEH,MAAM,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACjC,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,8CAA8C;IAClF,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,WAAW,CAAC,aAAE,CAAC,MAAM,CAAC,uBAAuB,QAAQ,OAAO,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,WAAW,CAAC,aAAE,CAAC,MAAM,CAAC,GAAG,YAAE,CAAC,MAAM,EAAE,gCAAgC,KAAK,IAAI,UAAU,OAAO,CAAC,CAAC,CAAC;IACnG,MAAM,aAAE,CAAC,MAAM,CAAC,GAAG,YAAE,CAAC,MAAM,EAAE,kCAAkC,KAAK,IAAI,UAAU,OAAO,CAAC,CAAC;IAE5F,kEAAkE;IAClE,MAAM,IAAI,GAAG,MAAM,IAAI,mBAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEvC,iEAAiE;IACjE,MAAM,GAAG,GAAG,MAAM,IAAI,mBAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,YAAE,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/E,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEtC,MAAM,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACnC,MAAM,UAAU,CAAC,CAAC,EAAE,GAAG,YAAE,CAAC,MAAM,EAAE,kCAAkC,KAAK,IAAI,UAAU,OAAO,CAAC,CAAC;AAClG,CAAC,CAAC,CAAC;AAEH,aAAI,CAAC,MAAM,CAAC,kDAAkD,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACxE,MAAM,QAAQ,GAAG,KAAK,CAAC;IACvB,MAAM,KAAK,GAAG,KAAK,CAAC;IAEpB,MAAM,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEnC,MAAM,iBAAiB,CAAC,mCAAmC,CAAC,CAAC;IAE7D,MAAM,UAAU,GAAG,OAAO,CAAC;IAC3B,MAAM,mBAAmB,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC;IAErH,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,YAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAEvE,MAAM,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACjC,MAAM,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QAClC,MAAM,aAAE,CAAC,MAAM,CAAC,GAAG,YAAE,CAAC,MAAM,EAAE,gCAAgC,KAAK,IAAI,UAAU,OAAO,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QAEH,MAAM,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACjC,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,8CAA8C;IAClF,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,WAAW,CAAC,aAAE,CAAC,MAAM,CAAC,uBAAuB,QAAQ,OAAO,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,WAAW,CAAC,aAAE,CAAC,MAAM,CAAC,GAAG,YAAE,CAAC,MAAM,EAAE,gCAAgC,KAAK,IAAI,UAAU,OAAO,CAAC,CAAC,CAAC;IACnG,MAAM,aAAE,CAAC,MAAM,CAAC,GAAG,YAAE,CAAC,MAAM,EAAE,kCAAkC,KAAK,IAAI,UAAU,OAAO,CAAC,CAAC;IAE5F,kEAAkE;IAClE,MAAM,IAAI,GAAG,MAAM,IAAI,mBAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEvC,iEAAiE;IACjE,MAAM,GAAG,GAAG,MAAM,IAAI,mBAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,YAAE,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/E,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEtC,MAAM,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACnC,MAAM,UAAU,CAAC,CAAC,EAAE,GAAG,YAAE,CAAC,MAAM,EAAE,kCAAkC,KAAK,IAAI,UAAU,OAAO,CAAC,CAAC;AAClG,CAAC,CAAC,CAAC;AAEH,aAAI,CAAC,MAAM,CAAC,4CAA4C,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAClE,MAAM,QAAQ,GAAG,KAAK,CAAC;IACvB,MAAM,KAAK,GAAG,KAAK,CAAC;IAEpB,MAAM,UAAU,GAAG,OAAO,CAAC;IAC3B,MAAM,mBAAmB,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC;IAErH,MAAM,YAAY,GAAG,IAAI,mBAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,mBAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,YAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAE1E,IAAI;QACF,MAAM,YAAY,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YACtC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,IAAI,EAAE,CAAC;KACV;IAAC,OAAO,CAAM,EAAE;QACf,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KACzB;AACH,CAAC,CAAC,CAAC;AAEH,aAAI,CAAC,MAAM,CAAC,oEAAoE,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC1F,MAAM,QAAQ,GAAG,KAAK,CAAC;IACvB,MAAM,KAAK,GAAG,KAAK,CAAC;IAEpB,MAAM,UAAU,GAAG,OAAO,CAAC;IAC3B,MAAM,mBAAmB,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC;IAErH,MAAM,YAAY,GAAG,IAAI,mBAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,mBAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,YAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAE1E,qBAAqB;IACrB,MAAM,iBAAiB,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEnD,2BAA2B;IAC3B,MAAM,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACnC,MAAM,iBAAiB,CAAC,mCAAmC,CAAC,CAAC;IAE7D,IAAI,mBAAmB,CAAC;IACxB,MAAM,YAAY,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QACtC,iDAAiD;QACjD,mBAAmB,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;QAC/C,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACnC,MAAM,UAAU,CAAC,CAAC,EAAE,GAAG,YAAE,CAAC,MAAM,EAAE,kCAAkC,KAAK,IAAI,UAAU,OAAO,CAAC,CAAC;AAClG,CAAC,CAAC,CAAC;AAEH,aAAI,CAAC,MAAM,CAAC,wCAAwC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC;IACvB,MAAM,KAAK,GAAG,KAAK,CAAC;IAEpB,MAAM,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEnC,MAAM,UAAU,GAAG,OAAO,CAAC;IAC3B,MAAM,mBAAmB,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC;IAErH,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,YAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAEvE,MAAM,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QAClC,MAAM,aAAE,CAAC,MAAM,CAAC,GAAG,YAAE,CAAC,MAAM,EAAE,gCAAgC,KAAK,IAAI,UAAU,OAAO,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QAEH,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,WAAW,CAAC,aAAE,CAAC,MAAM,CAAC,GAAG,YAAE,CAAC,MAAM,EAAE,gCAAgC,KAAK,IAAI,UAAU,OAAO,CAAC,CAAC,CAAC;IACnG,MAAM,aAAE,CAAC,MAAM,CAAC,GAAG,YAAE,CAAC,MAAM,EAAE,kCAAkC,KAAK,IAAI,UAAU,OAAO,CAAC,CAAC;IAE5F,iEAAiE;IACjE,CAAC,CAAC,WAAW,CAAC,aAAE,CAAC,MAAM,CAAC,yBAAyB,QAAQ,OAAO,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC,WAAW,CAAC,aAAE,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAE9D,iEAAiE;IACjE,MAAM,GAAG,GAAG,MAAM,IAAI,mBAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,YAAE,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/E,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEtC,MAAM,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACnC,MAAM,UAAU,CAAC,CAAC,EAAE,GAAG,YAAE,CAAC,MAAM,EAAE,kCAAkC,KAAK,IAAI,UAAU,OAAO,CAAC,CAAC;AAClG,CAAC,CAAC,CAAC;AAEH,aAAI,CAAC,MAAM,CAAC,oCAAoC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC1D,MAAM,KAAK,GAAG,KAAK,CAAC;IAEpB,MAAM,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEhC,kFAAkF;IAClF,MAAM,iBAAiB,CAAC,mCAAmC,CAAC,CAAC;IAE7D,MAAM,UAAU,GAAG,OAAO,CAAC;IAC3B,MAAM,mBAAmB,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IAE/E,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,YAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAEvE,MAAM,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QAClC,MAAM,aAAE,CAAC,MAAM,CAAC,GAAG,YAAE,CAAC,MAAM,EAAE,gCAAgC,KAAK,IAAI,UAAU,OAAO,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QAEH,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,WAAW,CAAC,aAAE,CAAC,MAAM,CAAC,GAAG,YAAE,CAAC,MAAM,EAAE,gCAAgC,KAAK,IAAI,UAAU,OAAO,CAAC,CAAC,CAAC;IACnG,MAAM,aAAE,CAAC,MAAM,CAAC,GAAG,YAAE,CAAC,MAAM,EAAE,kCAAkC,KAAK,IAAI,UAAU,OAAO,CAAC,CAAC;IAE5F,kEAAkE;IAClE,MAAM,IAAI,GAAG,MAAM,IAAI,mBAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEvC,mFAAmF;IACnF,MAAM,GAAG,GAAG,MAAM,IAAI,mBAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,YAAE,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/E,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEtC,MAAM,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAChC,MAAM,UAAU,CAAC,CAAC,EAAE,GAAG,YAAE,CAAC,MAAM,EAAE,kCAAkC,KAAK,IAAI,UAAU,OAAO,CAAC,CAAC;AAClG,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,mCAAmC,EAAE,CAAC,CAAC,EAAE;IAC5C,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,yDAAyD,EAAE,CAAC,CAAC,EAAE;IAClE,MAAM,OAAO,GAAG,CAAC,CAAC;IAClB,MAAM,UAAU,GAAG,SAAS,CAAC;IAC7B,MAAM,mBAAmB,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IAE/E,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,OAAO,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAEpE,MAAM,YAAY,GAAG,sCAAsC,OAAO,IAAI,UAAU,OAAO,CAAC;IACxF,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,sCAAsC,EAAE,CAAC,CAAC,EAAE;IAC/C,MAAM,EAAE,GAAG,KAAK,CAAC;IACjB,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,EAAE,OAAO,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,yEAAyE,EAAE,CAAC,CAAC,EAAE;IAClF,MAAM,OAAO,GAAG,KAAK,CAAC;IACtB,MAAM,UAAU,GAAG,SAAS,CAAC;IAC7B,MAAM,mBAAmB,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IAE3E,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,OAAO,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAEpE,MAAM,YAAY,GAAG,kCAAkC,OAAO,IAAI,UAAU,OAAO,CAAC;IACpF,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,qEAAqE,EAAE,CAAC,CAAC,EAAE;IAC9E,MAAM,OAAO,GAAG,KAAK,CAAC;IACtB,MAAM,UAAU,GAAG,SAAS,CAAC;IAC7B,MAAM,mBAAmB,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IAE3E,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,OAAO,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAEpE,MAAM,YAAY,GAAG,kCAAkC,OAAO,IAAI,UAAU,OAAO,CAAC;IACpF,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,yBAAyB,OAAO,OAAO,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,6CAA6C,EAAE,CAAC,CAAC,EAAE;IACtD,MAAM,OAAO,GAAG,CAAC,CAAC;IAClB,MAAM,UAAU,GAAG,SAAS,CAAC;IAC7B,MAAM,mBAAmB,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IAE/E,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,mBAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,4DAA4D,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC3E,MAAM,OAAO,GAAG,KAAK,CAAC;IACtB,MAAM,UAAU,GAAG,SAAS,CAAC;IAC7B,MAAM,mBAAmB,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IAE/E,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,OAAO,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAEpE,MAAM,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QAClC,CAAC,CAAC,WAAW,CAAC,aAAE,CAAC,MAAM,CAAC,uBAAuB,OAAO,OAAO,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,WAAW,CAAC,aAAE,CAAC,MAAM,CAAC,uBAAuB,OAAO,IAAI,UAAU,OAAO,CAAC,CAAC,CAAC;QAC9E,CAAC,CAAC,WAAW,CAAC,aAAE,CAAC,MAAM,CAAC,oCAAoC,OAAO,OAAO,CAAC,CAAC,CAAC;QAC7E,MAAM,aAAE,CAAC,MAAM,CAAC,oCAAoC,OAAO,IAAI,UAAU,OAAO,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,oBAAoB,EAAE,CAAC,CAAC,EAAE;IAC7B,MAAM,UAAU,GAAG;QACjB,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,MAAe;QACrB,MAAM,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACxD,iBAAiB,EAAE,EAAE;KACtB,CAAC;IACF,MAAM,KAAK,GAAiB;QAC1B,eAAe,EAAE,KAAK;QACtB,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE;QACxB,OAAO,EAAE,CAAC,UAAU,CAAC;KACtB,CAAC;IACF,MAAM,IAAI,GAAG,IAAA,gCAAqB,EAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;QACjB,GAAG,UAAU;QACb,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,iBAAiB,EAAE,SAAS;KAC7B,CAAC,CAAC;IACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QACnB,GAAG,UAAU;QACb,IAAI,EAAE,SAAS;QACf,iBAAiB,EAAE,SAAS;KAC7B,CAAC,CAAC;IACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACtB,GAAG,UAAU;QACb,MAAM,EAAE,SAAS;QACjB,iBAAiB,EAAE,SAAS;KAC7B,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,7 +1,9 @@
1
1
  export interface EthereumProvider {
2
+ send(method: 'hardhat_metadata', params: []): Promise<HardhatMetadata>;
2
3
  send(method: 'web3_clientVersion', params: []): Promise<string>;
3
4
  send(method: 'net_version', params: []): Promise<string>;
4
5
  send(method: 'eth_chainId', params: []): Promise<string>;
6
+ send(method: 'eth_instanceId', params: []): Promise<string>;
5
7
  send(method: 'eth_getCode', params: [string, string]): Promise<string>;
6
8
  send(method: 'eth_call', params: unknown[]): Promise<string>;
7
9
  send(method: 'eth_getStorageAt', params: [string, string, string]): Promise<string>;
@@ -9,6 +11,13 @@ export interface EthereumProvider {
9
11
  send(method: 'eth_getTransactionReceipt', params: [string]): Promise<null | EthereumTransactionReceipt>;
10
12
  send(method: string, params: unknown[]): Promise<unknown>;
11
13
  }
14
+ interface HardhatMetadata {
15
+ chainId: number;
16
+ instanceId: string;
17
+ forkedNetwork?: {
18
+ chainId: number;
19
+ };
20
+ }
12
21
  interface EthereumTransaction {
13
22
  blockHash: string | null;
14
23
  input: string;
@@ -25,6 +34,11 @@ interface EthereumTransactionReceipt {
25
34
  export declare function getNetworkId(provider: EthereumProvider): Promise<string>;
26
35
  export declare function getChainId(provider: EthereumProvider): Promise<number>;
27
36
  export declare function getClientVersion(provider: EthereumProvider): Promise<string>;
37
+ /**
38
+ * Gets Hardhat metadata when used with Hardhat 2.12.3 or later.
39
+ * The underlying provider will throw an error if this RPC method is not available.
40
+ */
41
+ export declare function getHardhatMetadata(provider: EthereumProvider): Promise<HardhatMetadata>;
28
42
  export declare function getStorageAt(provider: EthereumProvider, address: string, position: string, block?: string): Promise<string>;
29
43
  export declare function getCode(provider: EthereumProvider, address: string, block?: string): Promise<string>;
30
44
  export declare function call(provider: EthereumProvider, address: string, data: string, block?: string): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7D,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpF,IAAI,CAAC,MAAM,EAAE,0BAA0B,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,mBAAmB,CAAC,CAAC;IAChG,IAAI,CAAC,MAAM,EAAE,2BAA2B,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,0BAA0B,CAAC,CAAC;IACxG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D;AAED,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,0BAA0B;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAE9E;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAG5E;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAElF;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,SAAW,GACf,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED,wBAAsB,OAAO,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,SAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAE5G;AAED,wBAAsB,IAAI,CACxB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,KAAK,SAAW,GACf,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED,wBAAsB,OAAO,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG3G;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,WAEnC;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAErC;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAM5C;AAED,eAAO,MAAM,YAAY,EAAE;KAAG,OAAO,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM;CAiBvD,CAAC;AAEH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAWvF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,GAAG,OAAO,CAEhG"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
package/dist/provider.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isReceiptSuccessful = exports.isDevelopmentNetwork = exports.networkNames = exports.getTransactionReceipt = exports.getTransactionByHash = exports.isEmpty = exports.hasCode = exports.call = exports.getCode = exports.getStorageAt = exports.getClientVersion = exports.getChainId = exports.getNetworkId = void 0;
3
+ exports.isReceiptSuccessful = exports.isDevelopmentNetwork = exports.networkNames = exports.getTransactionReceipt = exports.getTransactionByHash = exports.isEmpty = exports.hasCode = exports.call = exports.getCode = exports.getStorageAt = exports.getHardhatMetadata = exports.getClientVersion = exports.getChainId = exports.getNetworkId = void 0;
4
4
  async function getNetworkId(provider) {
5
5
  return provider.send('net_version', []);
6
6
  }
@@ -14,6 +14,14 @@ async function getClientVersion(provider) {
14
14
  return provider.send('web3_clientVersion', []);
15
15
  }
16
16
  exports.getClientVersion = getClientVersion;
17
+ /**
18
+ * Gets Hardhat metadata when used with Hardhat 2.12.3 or later.
19
+ * The underlying provider will throw an error if this RPC method is not available.
20
+ */
21
+ async function getHardhatMetadata(provider) {
22
+ return provider.send('hardhat_metadata', []);
23
+ }
24
+ exports.getHardhatMetadata = getHardhatMetadata;
17
25
  async function getStorageAt(provider, address, position, block = 'latest') {
18
26
  const storage = await provider.send('eth_getStorageAt', [address, position, block]);
19
27
  const padded = storage.replace(/^0x/, '').padStart(64, '0');
@@ -83,7 +91,7 @@ async function isDevelopmentNetwork(provider) {
83
91
  else {
84
92
  const clientVersion = await getClientVersion(provider);
85
93
  const [name] = clientVersion.split('/', 1);
86
- return name === 'HardhatNetwork' || name === 'EthereumJS TestRPC';
94
+ return name === 'HardhatNetwork' || name === 'EthereumJS TestRPC' || name === 'anvil';
87
95
  }
88
96
  }
89
97
  exports.isDevelopmentNetwork = isDevelopmentNetwork;
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openzeppelin/upgrades-core",
3
- "version": "1.23.0",
3
+ "version": "1.24.0",
4
4
  "description": "",
5
5
  "repository": "https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master/packages/core",
6
6
  "license": "MIT",
@@ -58,5 +58,5 @@
58
58
  "proper-lockfile": "^4.1.1",
59
59
  "solidity-ast": "^0.4.15"
60
60
  },
61
- "gitHead": "6c1add7138b5aaee0a37257efa8720132ba94312"
61
+ "gitHead": "6eb62c8d90ea332bf21e6b4e210928d3b9780e9a"
62
62
  }
@@ -1,15 +1,16 @@
1
+ import os from 'os';
1
2
  import test, { ExecutionContext } from 'ava';
2
3
  import { Manifest, ManifestData, normalizeManifestData } from './manifest';
3
4
  import { promises as fs } from 'fs';
4
5
  import path from 'path';
5
6
 
6
- async function writeTestManifest(file: string) {
7
+ async function writeTestManifest(file: string, address?: string) {
7
8
  const testManifest = {
8
9
  manifestVersion: '3.2',
9
10
  impls: {},
10
11
  proxies: [
11
12
  {
12
- address: '0x123',
13
+ address: address ?? '0x123',
13
14
  txHash: '0x0',
14
15
  kind: 'uups',
15
16
  },
@@ -94,8 +95,8 @@ test.serial('rename manifest', async t => {
94
95
 
95
96
  // check that the contents were persisted
96
97
  const data = await new Manifest(id).read();
97
- t.true(data.proxies[0].address === '0x123');
98
- t.true(data.proxies[1].address === '0x456');
98
+ t.is(data.proxies[0].address, '0x123');
99
+ t.is(data.proxies[1].address, '0x456');
99
100
  await assertNewName(t, id);
100
101
 
101
102
  t.throwsAsync(fs.access(`.openzeppelin/chain-${id}.lock`));
@@ -103,17 +104,332 @@ test.serial('rename manifest', async t => {
103
104
  await deleteManifests(t, id);
104
105
  });
105
106
 
107
+ test.serial('rename hardhat from unknown to dev manifest', async t => {
108
+ const id = 31337;
109
+
110
+ await deleteFile(t, `.openzeppelin/unknown-${id}.json`);
111
+ await writeTestManifest(`.openzeppelin/unknown-${id}.json`);
112
+
113
+ const instanceId = '0xaa0';
114
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId };
115
+
116
+ const manifest = new Manifest(id, devInstanceMetadata, os.tmpdir());
117
+
118
+ await fs.access(`.openzeppelin/unknown-${id}.json`);
119
+ await manifest.lockedRun(async () => {
120
+ await fs.access(`${os.tmpdir()}/openzeppelin-upgrades/chain-${id}-${instanceId}.lock`);
121
+ const data = await manifest.read();
122
+ data.proxies.push({
123
+ address: '0x456',
124
+ txHash: '0x0',
125
+ kind: 'uups',
126
+ });
127
+
128
+ await fs.access(`.openzeppelin/unknown-${id}.json`);
129
+ await manifest.write(data);
130
+ });
131
+ t.throwsAsync(fs.access(`.openzeppelin/unknown-${id}.json`));
132
+ await fs.access(`${os.tmpdir()}/openzeppelin-upgrades/hardhat-${id}-${instanceId}.json`);
133
+
134
+ const dev = await new Manifest(id, devInstanceMetadata, os.tmpdir()).read();
135
+ t.is(dev.proxies.length, 2);
136
+ t.is(dev.proxies[0].address, '0x123');
137
+ t.is(dev.proxies[1].address, '0x456');
138
+
139
+ await deleteFile(t, `.openzeppelin/unknown-${id}.json`);
140
+ await deleteFile(t, `${os.tmpdir()}/openzeppelin-upgrades/hardhat-${id}-${instanceId}.json`);
141
+ });
142
+
143
+ test.serial('forked chain from known network with fallback name', async t => {
144
+ const forkedId = 80001;
145
+ const devId = 55555;
146
+
147
+ await deleteManifests(t, forkedId);
148
+
149
+ await writeTestManifest(`.openzeppelin/unknown-${forkedId}.json`);
150
+
151
+ const instanceId = '0xaaa';
152
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId, forkedNetwork: { chainId: forkedId } };
153
+
154
+ const manifest = new Manifest(devId, devInstanceMetadata, os.tmpdir());
155
+
156
+ await assertOldName(t, forkedId);
157
+ await manifest.lockedRun(async () => {
158
+ await fs.access(`${os.tmpdir()}/openzeppelin-upgrades/chain-${devId}-${instanceId}.lock`);
159
+ const data = await manifest.read();
160
+ data.proxies.push({
161
+ address: '0x456',
162
+ txHash: '0x0',
163
+ kind: 'uups',
164
+ });
165
+
166
+ await assertOldName(t, forkedId);
167
+ await manifest.write(data);
168
+ await assertOldName(t, forkedId); // original network file should not be changed
169
+ });
170
+ t.throwsAsync(fs.access(`.openzeppelin/chain-${forkedId}.lock`));
171
+ t.throwsAsync(fs.access(`${os.tmpdir()}/openzeppelin-upgrades/chain-${devId}-${instanceId}.lock`));
172
+ await fs.access(`${os.tmpdir()}/openzeppelin-upgrades/hardhat-${devId}-${instanceId}.json`);
173
+
174
+ // check that the contents were NOT persisted to original manifest
175
+ const orig = await new Manifest(forkedId).read();
176
+ t.is(orig.proxies.length, 1);
177
+ t.is(orig.proxies[0].address, '0x123');
178
+
179
+ // check that the contents were persisted to dev copy of manifest
180
+ const dev = await new Manifest(devId, devInstanceMetadata, os.tmpdir()).read();
181
+ t.is(dev.proxies.length, 2);
182
+ t.is(dev.proxies[0].address, '0x123');
183
+ t.is(dev.proxies[1].address, '0x456');
184
+
185
+ await deleteManifests(t, forkedId);
186
+ await deleteFile(t, `${os.tmpdir()}/openzeppelin-upgrades/hardhat-${devId}-${instanceId}.json`);
187
+ });
188
+
189
+ test.serial('forked chain from known network with actual name', async t => {
190
+ const forkedId = 80001;
191
+ const devId = 55555;
192
+
193
+ await deleteManifests(t, forkedId);
194
+
195
+ await writeTestManifest(`.openzeppelin/polygon-mumbai.json`);
196
+
197
+ const instanceId = '0xbbb';
198
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId, forkedNetwork: { chainId: forkedId } };
199
+
200
+ const manifest = new Manifest(devId, devInstanceMetadata, os.tmpdir());
201
+
202
+ await assertNewName(t, forkedId);
203
+ await manifest.lockedRun(async () => {
204
+ await fs.access(`${os.tmpdir()}/openzeppelin-upgrades/chain-${devId}-${instanceId}.lock`);
205
+ const data = await manifest.read();
206
+ data.proxies.push({
207
+ address: '0x456',
208
+ txHash: '0x0',
209
+ kind: 'uups',
210
+ });
211
+
212
+ await assertNewName(t, forkedId);
213
+ await manifest.write(data);
214
+ await assertNewName(t, forkedId); // original network file should not be changed
215
+ });
216
+ t.throwsAsync(fs.access(`.openzeppelin/chain-${forkedId}.lock`));
217
+ t.throwsAsync(fs.access(`${os.tmpdir()}/openzeppelin-upgrades/chain-${devId}-${instanceId}.lock`));
218
+ await fs.access(`${os.tmpdir()}/openzeppelin-upgrades/hardhat-${devId}-${instanceId}.json`);
219
+
220
+ // check that the contents were NOT persisted to original manifest
221
+ const orig = await new Manifest(forkedId).read();
222
+ t.is(orig.proxies.length, 1);
223
+ t.is(orig.proxies[0].address, '0x123');
224
+
225
+ // check that the contents were persisted to dev copy of manifest
226
+ const dev = await new Manifest(devId, devInstanceMetadata, os.tmpdir()).read();
227
+ t.is(dev.proxies.length, 2);
228
+ t.is(dev.proxies[0].address, '0x123');
229
+ t.is(dev.proxies[1].address, '0x456');
230
+
231
+ await deleteManifests(t, forkedId);
232
+ await deleteFile(t, `${os.tmpdir()}/openzeppelin-upgrades/hardhat-${devId}-${instanceId}.json`);
233
+ });
234
+
235
+ test.serial('forked chain, real manifest already locked', async t => {
236
+ const forkedId = 80001;
237
+ const devId = 55555;
238
+
239
+ const instanceId = '0xccc';
240
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId, forkedNetwork: { chainId: forkedId } };
241
+
242
+ const realManifest = new Manifest(forkedId);
243
+ const devManifest = new Manifest(devId, devInstanceMetadata, os.tmpdir());
244
+
245
+ try {
246
+ await realManifest.lockedRun(async () => {
247
+ await devManifest.read(0);
248
+ });
249
+ t.fail();
250
+ } catch (e: any) {
251
+ t.is(e.code, 'ELOCKED');
252
+ }
253
+ });
254
+
255
+ test.serial('forked chain, real manifest already locked but dev manifest exists', async t => {
256
+ const forkedId = 80001;
257
+ const devId = 55555;
258
+
259
+ const instanceId = '0xddd';
260
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId, forkedNetwork: { chainId: forkedId } };
261
+
262
+ const realManifest = new Manifest(forkedId);
263
+ const devManifest = new Manifest(devId, devInstanceMetadata, os.tmpdir());
264
+
265
+ // write dev manifest
266
+ await writeTestManifest(devManifest.file, '0x999');
267
+
268
+ // then write real manifest
269
+ await deleteManifests(t, forkedId);
270
+ await writeTestManifest(`.openzeppelin/polygon-mumbai.json`);
271
+
272
+ let devManifestContents;
273
+ await realManifest.lockedRun(async () => {
274
+ // should ignore real manifest and real lock file
275
+ devManifestContents = await devManifest.read();
276
+ t.is(devManifestContents.proxies.length, 1);
277
+ t.is(devManifestContents.proxies[0].address, '0x999');
278
+ });
279
+
280
+ await deleteManifests(t, forkedId);
281
+ await deleteFile(t, `${os.tmpdir()}/openzeppelin-upgrades/hardhat-${devId}-${instanceId}.json`);
282
+ });
283
+
284
+ test.serial('forked chain without existing manifest', async t => {
285
+ const forkedId = 80001;
286
+ const devId = 55555;
287
+
288
+ await deleteManifests(t, forkedId);
289
+
290
+ const instanceId = '0xeee';
291
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId, forkedNetwork: { chainId: forkedId } };
292
+
293
+ const manifest = new Manifest(devId, devInstanceMetadata, os.tmpdir());
294
+
295
+ await manifest.lockedRun(async () => {
296
+ await fs.access(`${os.tmpdir()}/openzeppelin-upgrades/chain-${devId}-${instanceId}.lock`);
297
+ const data = await manifest.read();
298
+ data.proxies.push({
299
+ address: '0x456',
300
+ txHash: '0x0',
301
+ kind: 'uups',
302
+ });
303
+
304
+ await manifest.write(data);
305
+ });
306
+ t.throwsAsync(fs.access(`${os.tmpdir()}/openzeppelin-upgrades/chain-${devId}-${instanceId}.lock`));
307
+ await fs.access(`${os.tmpdir()}/openzeppelin-upgrades/hardhat-${devId}-${instanceId}.json`);
308
+
309
+ // check that the contents were NOT persisted to regular manifest
310
+ t.throwsAsync(fs.access(`.openzeppelin/unknown-${forkedId}.json`));
311
+ t.throwsAsync(fs.access(`.openzeppelin/polygon-mumbai.json`));
312
+
313
+ // check that the contents were persisted to dev copy of manifest
314
+ const dev = await new Manifest(devId, devInstanceMetadata, os.tmpdir()).read();
315
+ t.is(dev.proxies.length, 1);
316
+ t.is(dev.proxies[0].address, '0x456');
317
+
318
+ await deleteManifests(t, forkedId);
319
+ await deleteFile(t, `${os.tmpdir()}/openzeppelin-upgrades/hardhat-${devId}-${instanceId}.json`);
320
+ });
321
+
322
+ test.serial('dev instance with known network id', async t => {
323
+ const devId = 80001;
324
+
325
+ await deleteManifests(t, devId);
326
+
327
+ // dev instance without forking, so this real manifest should not be actually used
328
+ await writeTestManifest(`.openzeppelin/polygon-mumbai.json`);
329
+
330
+ const instanceId = '0xfff';
331
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId };
332
+
333
+ const manifest = new Manifest(devId, devInstanceMetadata, os.tmpdir());
334
+
335
+ await manifest.lockedRun(async () => {
336
+ await fs.access(`${os.tmpdir()}/openzeppelin-upgrades/chain-${devId}-${instanceId}.lock`);
337
+ const data = await manifest.read();
338
+ data.proxies.push({
339
+ address: '0x456',
340
+ txHash: '0x0',
341
+ kind: 'uups',
342
+ });
343
+
344
+ await manifest.write(data);
345
+ });
346
+ t.throwsAsync(fs.access(`${os.tmpdir()}/openzeppelin-upgrades/chain-${devId}-${instanceId}.lock`));
347
+ await fs.access(`${os.tmpdir()}/openzeppelin-upgrades/hardhat-${devId}-${instanceId}.json`);
348
+
349
+ // check that the contents were NOT persisted to original manifest
350
+ const orig = await new Manifest(devId).read();
351
+ t.is(orig.proxies.length, 1);
352
+ t.is(orig.proxies[0].address, '0x123');
353
+
354
+ // check that the contents were persisted to dev manifest without original contents
355
+ const dev = await new Manifest(devId, devInstanceMetadata, os.tmpdir()).read();
356
+ t.is(dev.proxies.length, 1);
357
+ t.is(dev.proxies[0].address, '0x456');
358
+
359
+ await deleteManifests(t, devId);
360
+ await deleteFile(t, `${os.tmpdir()}/openzeppelin-upgrades/hardhat-${devId}-${instanceId}.json`);
361
+ });
362
+
106
363
  test('manifest name for a known network', t => {
107
364
  const manifest = new Manifest(1);
108
365
  t.is(manifest.file, '.openzeppelin/mainnet.json');
109
366
  });
110
367
 
368
+ test('manifest name for a known network, development instance', t => {
369
+ const chainId = 1;
370
+ const instanceId = '0x11111';
371
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId };
372
+
373
+ const manifest = new Manifest(chainId, devInstanceMetadata, '/tmp');
374
+
375
+ const expectedPath = `/tmp/openzeppelin-upgrades/hardhat-${chainId}-${instanceId}.json`;
376
+ t.is(manifest.file, expectedPath);
377
+ t.is(manifest.fallbackFile, expectedPath);
378
+ });
379
+
111
380
  test('manifest name for an unknown network', t => {
112
381
  const id = 55555;
113
382
  const manifest = new Manifest(id);
114
383
  t.is(manifest.file, `.openzeppelin/unknown-${id}.json`);
115
384
  });
116
385
 
386
+ test('manifest name for an unknown network, development instance, non hardhat', t => {
387
+ const chainId = 55555;
388
+ const instanceId = '0x22222';
389
+ const devInstanceMetadata = { networkName: 'dev', instanceId: instanceId };
390
+
391
+ const manifest = new Manifest(chainId, devInstanceMetadata, '/tmp');
392
+
393
+ const expectedPath = `/tmp/openzeppelin-upgrades/dev-${chainId}-${instanceId}.json`;
394
+ t.is(manifest.file, expectedPath);
395
+ t.is(manifest.fallbackFile, expectedPath);
396
+ });
397
+
398
+ test('manifest name for an unknown network, development instance, hardhat', t => {
399
+ const chainId = 31337;
400
+ const instanceId = '0x22223';
401
+ const devInstanceMetadata = { networkName: 'dev', instanceId: instanceId };
402
+
403
+ const manifest = new Manifest(chainId, devInstanceMetadata, '/tmp');
404
+
405
+ const expectedPath = `/tmp/openzeppelin-upgrades/dev-${chainId}-${instanceId}.json`;
406
+ t.is(manifest.file, expectedPath);
407
+ t.is(manifest.fallbackFile, `.openzeppelin/unknown-${chainId}.json`);
408
+ });
409
+
410
+ test('manifest dev instance without tmp dir param', t => {
411
+ const chainId = 1;
412
+ const instanceId = '0x33333';
413
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId };
414
+
415
+ t.throws(() => new Manifest(chainId, devInstanceMetadata));
416
+ });
417
+
418
+ test('manifest lock file name for a development network instance', async t => {
419
+ const chainId = 55555;
420
+ const instanceId = '0x55555';
421
+ const devInstanceMetadata = { networkName: 'hardhat', instanceId: instanceId };
422
+
423
+ const manifest = new Manifest(chainId, devInstanceMetadata, '/tmp');
424
+
425
+ await manifest.lockedRun(async () => {
426
+ t.throwsAsync(fs.access(`.openzeppelin/chain-${chainId}.lock`));
427
+ t.throwsAsync(fs.access(`.openzeppelin/chain-${chainId}-${instanceId}.lock`));
428
+ t.throwsAsync(fs.access(`/tmp/openzeppelin-upgrades/chain-${chainId}.lock`));
429
+ await fs.access(`/tmp/openzeppelin-upgrades/chain-${chainId}-${instanceId}.lock`);
430
+ });
431
+ });
432
+
117
433
  test('normalize manifest', t => {
118
434
  const deployment = {
119
435
  address: '0x1234',
package/src/manifest.ts CHANGED
@@ -1,6 +1,7 @@
1
+ import os from 'os';
1
2
  import path from 'path';
2
3
  import { promises as fs } from 'fs';
3
- import { EthereumProvider, getChainId, networkNames } from './provider';
4
+ import { EthereumProvider, getChainId, getHardhatMetadata, networkNames } from './provider';
4
5
  import lockfile from 'proper-lockfile';
5
6
  import { compare as compareVersions } from 'compare-versions';
6
7
 
@@ -9,6 +10,8 @@ import type { StorageLayout } from './storage';
9
10
  import { pick } from './utils/pick';
10
11
  import { mapValues } from './utils/map-values';
11
12
  import { UpgradesError } from './error';
13
+ import debug from './utils/debug';
14
+ import { assert } from './utils/assert';
12
15
 
13
16
  const currentManifestVersion = '3.2';
14
17
 
@@ -38,27 +41,109 @@ function defaultManifest(): ManifestData {
38
41
  };
39
42
  }
40
43
 
41
- const manifestDir = '.openzeppelin';
44
+ const MANIFEST_DEFAULT_DIR = '.openzeppelin';
45
+ const MANIFEST_TEMP_DIR = 'openzeppelin-upgrades';
46
+
47
+ async function getDevInstanceMetadata(
48
+ provider: EthereumProvider,
49
+ chainId: number,
50
+ ): Promise<DevInstanceMetadata | undefined> {
51
+ let hardhatMetadata;
52
+
53
+ try {
54
+ hardhatMetadata = await getHardhatMetadata(provider);
55
+ } catch (e: unknown) {
56
+ return undefined;
57
+ }
58
+
59
+ if (hardhatMetadata.chainId !== chainId) {
60
+ throw new Error(
61
+ `Broken invariant: Hardhat metadata's chainId ${hardhatMetadata.chainId} does not match eth_chainId ${chainId}`,
62
+ );
63
+ }
64
+
65
+ return {
66
+ networkName: 'hardhat',
67
+ instanceId: hardhatMetadata.instanceId,
68
+ forkedNetwork: hardhatMetadata.forkedNetwork,
69
+ };
70
+ }
71
+
72
+ function getSuffix(chainId: number, devInstanceMetadata?: DevInstanceMetadata) {
73
+ if (devInstanceMetadata !== undefined) {
74
+ return `${chainId}-${devInstanceMetadata.instanceId}`;
75
+ } else {
76
+ return `${chainId}`;
77
+ }
78
+ }
79
+
80
+ interface DevInstanceMetadata {
81
+ networkName: string;
82
+ instanceId: string;
83
+ forkedNetwork?: {
84
+ // The chainId of the network that is being forked
85
+ chainId: number;
86
+ };
87
+ }
42
88
 
43
89
  export class Manifest {
44
90
  readonly chainId: number;
45
91
  readonly file: string;
46
- private readonly fallbackFile: string;
92
+ readonly fallbackFile: string;
93
+ private readonly dir: string;
94
+
95
+ private readonly chainIdSuffix: string;
96
+ private readonly parent?: Manifest;
47
97
 
48
98
  private locked = false;
49
99
 
50
100
  static async forNetwork(provider: EthereumProvider): Promise<Manifest> {
51
- return new Manifest(await getChainId(provider));
101
+ const chainId = await getChainId(provider);
102
+ const devInstanceMetadata = await getDevInstanceMetadata(provider, chainId);
103
+ if (devInstanceMetadata !== undefined) {
104
+ return new Manifest(chainId, devInstanceMetadata, os.tmpdir());
105
+ } else {
106
+ return new Manifest(chainId);
107
+ }
52
108
  }
53
109
 
54
- constructor(chainId: number) {
110
+ constructor(chainId: number, devInstanceMetadata?: DevInstanceMetadata, osTmpDir?: string) {
55
111
  this.chainId = chainId;
112
+ this.chainIdSuffix = getSuffix(chainId, devInstanceMetadata);
56
113
 
57
- const fallbackName = `unknown-${this.chainId}`;
58
- this.fallbackFile = path.join(manifestDir, `${fallbackName}.json`);
114
+ const defaultFallbackName = `unknown-${chainId}`;
59
115
 
60
- const name = networkNames[this.chainId] ?? fallbackName;
61
- this.file = path.join(manifestDir, `${name}.json`);
116
+ if (devInstanceMetadata !== undefined) {
117
+ assert(osTmpDir !== undefined);
118
+ this.dir = path.join(osTmpDir, MANIFEST_TEMP_DIR);
119
+ debug('development manifest directory:', this.dir);
120
+
121
+ const devName = `${devInstanceMetadata.networkName}-${this.chainIdSuffix}`;
122
+ const devFile = path.join(this.dir, `${devName}.json`);
123
+
124
+ this.file = devFile;
125
+ if (chainId === 31337) {
126
+ this.fallbackFile = path.join(MANIFEST_DEFAULT_DIR, `${defaultFallbackName}.json`);
127
+ } else {
128
+ this.fallbackFile = devFile;
129
+ }
130
+ debug('development manifest file:', this.file, 'fallback file:', this.fallbackFile);
131
+
132
+ if (devInstanceMetadata.forkedNetwork !== undefined) {
133
+ const forkedChainId = devInstanceMetadata.forkedNetwork.chainId;
134
+ debug('forked network chain id:', forkedChainId);
135
+
136
+ this.parent = new Manifest(forkedChainId);
137
+ }
138
+ } else {
139
+ this.dir = MANIFEST_DEFAULT_DIR;
140
+
141
+ const networkName = networkNames[chainId];
142
+ this.file = path.join(MANIFEST_DEFAULT_DIR, `${networkName ?? defaultFallbackName}.json`);
143
+ this.fallbackFile = path.join(MANIFEST_DEFAULT_DIR, `${defaultFallbackName}.json`);
144
+
145
+ debug('manifest file:', this.file, 'fallback file:', this.fallbackFile);
146
+ }
62
147
  }
63
148
 
64
149
  async getAdmin(): Promise<Deployment | undefined> {
@@ -143,14 +228,18 @@ export class Manifest {
143
228
  }
144
229
  }
145
230
 
146
- async read(): Promise<ManifestData> {
147
- const release = this.locked ? undefined : await this.lock();
231
+ async read(retries?: number): Promise<ManifestData> {
232
+ const release = this.locked ? undefined : await this.lock(retries);
148
233
  try {
149
234
  const data = JSON.parse(await this.readFile()) as ManifestData;
150
235
  return validateOrUpdateManifestVersion(data);
151
236
  } catch (e: any) {
152
237
  if (e.code === 'ENOENT') {
153
- return defaultManifest();
238
+ if (this.parent !== undefined) {
239
+ return await this.parent.read(retries);
240
+ } else {
241
+ return defaultManifest();
242
+ }
154
243
  } else {
155
244
  throw e;
156
245
  }
@@ -179,11 +268,11 @@ export class Manifest {
179
268
  }
180
269
  }
181
270
 
182
- private async lock() {
183
- const lockfileName = path.join(manifestDir, `chain-${this.chainId}`);
271
+ private async lock(retries = 3) {
272
+ const lockfileName = path.join(this.dir, `chain-${this.chainIdSuffix}`);
184
273
 
185
274
  await fs.mkdir(path.dirname(lockfileName), { recursive: true });
186
- const release = await lockfile.lock(lockfileName, { retries: 3, realpath: false });
275
+ const release = await lockfile.lock(lockfileName, { retries, realpath: false });
187
276
  this.locked = true;
188
277
  return async () => {
189
278
  await release();
package/src/provider.ts CHANGED
@@ -1,7 +1,9 @@
1
1
  export interface EthereumProvider {
2
+ send(method: 'hardhat_metadata', params: []): Promise<HardhatMetadata>;
2
3
  send(method: 'web3_clientVersion', params: []): Promise<string>;
3
4
  send(method: 'net_version', params: []): Promise<string>;
4
5
  send(method: 'eth_chainId', params: []): Promise<string>;
6
+ send(method: 'eth_instanceId', params: []): Promise<string>;
5
7
  send(method: 'eth_getCode', params: [string, string]): Promise<string>;
6
8
  send(method: 'eth_call', params: unknown[]): Promise<string>;
7
9
  send(method: 'eth_getStorageAt', params: [string, string, string]): Promise<string>;
@@ -10,6 +12,15 @@ export interface EthereumProvider {
10
12
  send(method: string, params: unknown[]): Promise<unknown>;
11
13
  }
12
14
 
15
+ interface HardhatMetadata {
16
+ chainId: number;
17
+ instanceId: string;
18
+ forkedNetwork?: {
19
+ // The chainId of the network that is being forked
20
+ chainId: number;
21
+ };
22
+ }
23
+
13
24
  interface EthereumTransaction {
14
25
  blockHash: string | null;
15
26
  input: string;
@@ -38,6 +49,14 @@ export async function getClientVersion(provider: EthereumProvider): Promise<stri
38
49
  return provider.send('web3_clientVersion', []);
39
50
  }
40
51
 
52
+ /**
53
+ * Gets Hardhat metadata when used with Hardhat 2.12.3 or later.
54
+ * The underlying provider will throw an error if this RPC method is not available.
55
+ */
56
+ export async function getHardhatMetadata(provider: EthereumProvider): Promise<HardhatMetadata> {
57
+ return provider.send('hardhat_metadata', []);
58
+ }
59
+
41
60
  export async function getStorageAt(
42
61
  provider: EthereumProvider,
43
62
  address: string,
@@ -123,7 +142,7 @@ export async function isDevelopmentNetwork(provider: EthereumProvider): Promise<
123
142
  } else {
124
143
  const clientVersion = await getClientVersion(provider);
125
144
  const [name] = clientVersion.split('/', 1);
126
- return name === 'HardhatNetwork' || name === 'EthereumJS TestRPC';
145
+ return name === 'HardhatNetwork' || name === 'EthereumJS TestRPC' || name === 'anvil';
127
146
  }
128
147
  }
129
148