@rocketh/diamond 0.0.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.
Files changed (58) hide show
  1. package/README.md +1 -0
  2. package/dist/hardhat-deploy-v1-artifacts/Diamond.d.ts +14657 -0
  3. package/dist/hardhat-deploy-v1-artifacts/Diamond.d.ts.map +1 -0
  4. package/dist/hardhat-deploy-v1-artifacts/Diamond.js +17487 -0
  5. package/dist/hardhat-deploy-v1-artifacts/Diamond.js.map +1 -0
  6. package/dist/hardhat-deploy-v1-artifacts/DiamondCutFacet.d.ts +8449 -0
  7. package/dist/hardhat-deploy-v1-artifacts/DiamondCutFacet.d.ts.map +1 -0
  8. package/dist/hardhat-deploy-v1-artifacts/DiamondCutFacet.js +10078 -0
  9. package/dist/hardhat-deploy-v1-artifacts/DiamondCutFacet.js.map +1 -0
  10. package/dist/hardhat-deploy-v1-artifacts/DiamondERC165Init.d.ts +1310 -0
  11. package/dist/hardhat-deploy-v1-artifacts/DiamondERC165Init.d.ts.map +1 -0
  12. package/dist/hardhat-deploy-v1-artifacts/DiamondERC165Init.js +1550 -0
  13. package/dist/hardhat-deploy-v1-artifacts/DiamondERC165Init.js.map +1 -0
  14. package/dist/hardhat-deploy-v1-artifacts/DiamondLoupeFacet.d.ts +2659 -0
  15. package/dist/hardhat-deploy-v1-artifacts/DiamondLoupeFacet.d.ts.map +1 -0
  16. package/dist/hardhat-deploy-v1-artifacts/DiamondLoupeFacet.js +3177 -0
  17. package/dist/hardhat-deploy-v1-artifacts/DiamondLoupeFacet.js.map +1 -0
  18. package/dist/hardhat-deploy-v1-artifacts/DiamondLoupeFacetWithoutSupportsInterface.d.ts +2538 -0
  19. package/dist/hardhat-deploy-v1-artifacts/DiamondLoupeFacetWithoutSupportsInterface.d.ts.map +1 -0
  20. package/dist/hardhat-deploy-v1-artifacts/DiamondLoupeFacetWithoutSupportsInterface.js +3030 -0
  21. package/dist/hardhat-deploy-v1-artifacts/DiamondLoupeFacetWithoutSupportsInterface.js.map +1 -0
  22. package/dist/hardhat-deploy-v1-artifacts/EIP173Proxy.d.ts +3857 -0
  23. package/dist/hardhat-deploy-v1-artifacts/EIP173Proxy.d.ts.map +1 -0
  24. package/dist/hardhat-deploy-v1-artifacts/EIP173Proxy.js +4602 -0
  25. package/dist/hardhat-deploy-v1-artifacts/EIP173Proxy.js.map +1 -0
  26. package/dist/hardhat-deploy-v1-artifacts/EIP173ProxyWithReceive.d.ts +3704 -0
  27. package/dist/hardhat-deploy-v1-artifacts/EIP173ProxyWithReceive.d.ts.map +1 -0
  28. package/dist/hardhat-deploy-v1-artifacts/EIP173ProxyWithReceive.js +4419 -0
  29. package/dist/hardhat-deploy-v1-artifacts/EIP173ProxyWithReceive.js.map +1 -0
  30. package/dist/hardhat-deploy-v1-artifacts/ERC1967Proxy.d.ts +3360 -0
  31. package/dist/hardhat-deploy-v1-artifacts/ERC1967Proxy.d.ts.map +1 -0
  32. package/dist/hardhat-deploy-v1-artifacts/ERC1967Proxy.js +3986 -0
  33. package/dist/hardhat-deploy-v1-artifacts/ERC1967Proxy.js.map +1 -0
  34. package/dist/hardhat-deploy-v1-artifacts/OptimizedTransparentUpgradeableProxy.d.ts +5080 -0
  35. package/dist/hardhat-deploy-v1-artifacts/OptimizedTransparentUpgradeableProxy.d.ts.map +1 -0
  36. package/dist/hardhat-deploy-v1-artifacts/OptimizedTransparentUpgradeableProxy.js +6038 -0
  37. package/dist/hardhat-deploy-v1-artifacts/OptimizedTransparentUpgradeableProxy.js.map +1 -0
  38. package/dist/hardhat-deploy-v1-artifacts/OwnershipFacet.d.ts +664 -0
  39. package/dist/hardhat-deploy-v1-artifacts/OwnershipFacet.d.ts.map +1 -0
  40. package/dist/hardhat-deploy-v1-artifacts/OwnershipFacet.js +776 -0
  41. package/dist/hardhat-deploy-v1-artifacts/OwnershipFacet.js.map +1 -0
  42. package/dist/hardhat-deploy-v1-artifacts/ProxyAdmin.d.ts +3468 -0
  43. package/dist/hardhat-deploy-v1-artifacts/ProxyAdmin.d.ts.map +1 -0
  44. package/dist/hardhat-deploy-v1-artifacts/ProxyAdmin.js +4130 -0
  45. package/dist/hardhat-deploy-v1-artifacts/ProxyAdmin.js.map +1 -0
  46. package/dist/hardhat-deploy-v1-artifacts/TransparentUpgradeableProxy.d.ts +5662 -0
  47. package/dist/hardhat-deploy-v1-artifacts/TransparentUpgradeableProxy.d.ts.map +1 -0
  48. package/dist/hardhat-deploy-v1-artifacts/TransparentUpgradeableProxy.js +6724 -0
  49. package/dist/hardhat-deploy-v1-artifacts/TransparentUpgradeableProxy.js.map +1 -0
  50. package/dist/index.d.ts +52 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +449 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/utils.d.ts +8 -0
  55. package/dist/utils.d.ts.map +1 -0
  56. package/dist/utils.js +53 -0
  57. package/dist/utils.js.map +1 -0
  58. package/package.json +45 -0
package/dist/index.js ADDED
@@ -0,0 +1,449 @@
1
+ import '@rocketh/deploy';
2
+ import '@rocketh/read-execute';
3
+ import { extendEnvironment } from 'rocketh';
4
+ import { encodeFunctionData, zeroAddress } from 'viem';
5
+ import { logs } from 'named-logs';
6
+ import artifactDiamond from './hardhat-deploy-v1-artifacts/Diamond.js';
7
+ import artifactDiamondLoupeFact from './hardhat-deploy-v1-artifacts/DiamondLoupeFacet.js';
8
+ import artifactDiamondCutFact from './hardhat-deploy-v1-artifacts/DiamondCutFacet.js';
9
+ import artifactOwnershipFacet from './hardhat-deploy-v1-artifacts/OwnershipFacet.js';
10
+ import artifactDiamondERC165Init from './hardhat-deploy-v1-artifacts/DiamondERC165Init.js';
11
+ import { filterABI, mergeABIs, sigsFromABI } from './utils.js';
12
+ const logger = logs('@rocketh/diamond');
13
+ export var FacetCutAction;
14
+ (function (FacetCutAction) {
15
+ FacetCutAction[FacetCutAction["Add"] = 0] = "Add";
16
+ FacetCutAction[FacetCutAction["Replace"] = 1] = "Replace";
17
+ FacetCutAction[FacetCutAction["Remove"] = 2] = "Remove";
18
+ })(FacetCutAction || (FacetCutAction = {}));
19
+ extendEnvironment((env) => {
20
+ async function diamond(name, params, options) {
21
+ let proxy;
22
+ const proxyName = `${name}_DiamondProxy`;
23
+ const oldDeployment = env.getOrNull(name);
24
+ if (oldDeployment) {
25
+ proxy = env.get(proxyName);
26
+ }
27
+ // TODO ?
28
+ // if (proxy && proxy.deployedBytecode === oldDiamonBase.deployedBytecode) {
29
+ // return _old_deployViaDiamondProxy(name, options);
30
+ // }
31
+ const { account, ...viemArgs } = params;
32
+ let deployerAddress;
33
+ if (account.startsWith('0x')) {
34
+ deployerAddress = account;
35
+ }
36
+ else {
37
+ if (env.namedAccounts) {
38
+ deployerAddress = env.namedAccounts[account];
39
+ if (!deployerAddress) {
40
+ throw new Error(`no address for ${account}`);
41
+ }
42
+ }
43
+ else {
44
+ throw new Error(`no accounts setup, cannot get address for ${account}`);
45
+ }
46
+ }
47
+ // TODO
48
+ // if (options.diamondContract) {
49
+ // diamondArtifact = options.diamondContract;
50
+ // }
51
+ const expectedOwner = options?.owner || deployerAddress;
52
+ const newSelectors = [];
53
+ const facetSnapshot = [];
54
+ let oldFacets = [];
55
+ if (proxy) {
56
+ oldFacets = await env.read(proxy, { functionName: 'facets' });
57
+ }
58
+ // console.log({ oldFacets: JSON.stringify(oldFacets, null, " ") });
59
+ const facetsSet = options.facets;
60
+ if (options?.defaultCutFacet === undefined || options.defaultCutFacet) {
61
+ facetsSet.push({
62
+ name: '_DefaultDiamondCutFacet',
63
+ contract: artifactDiamondCutFact,
64
+ args: [],
65
+ deterministic: true,
66
+ });
67
+ }
68
+ if (options?.defaultOwnershipFacet === undefined || options.defaultOwnershipFacet) {
69
+ facetsSet.push({
70
+ name: '_DefaultDiamondOwnershipFacet',
71
+ contract: artifactOwnershipFacet,
72
+ args: [],
73
+ deterministic: true,
74
+ });
75
+ }
76
+ facetsSet.push({
77
+ name: '_DefaultDiamondLoupeFacet',
78
+ contract: artifactDiamondLoupeFact,
79
+ args: [],
80
+ deterministic: true,
81
+ });
82
+ let changesDetected = !oldDeployment;
83
+ // will be populated
84
+ let abi = artifactDiamond.abi.concat([]);
85
+ const facetCuts = [];
86
+ let facetFound;
87
+ const excludeSelectors = options?.excludeSelectors || {};
88
+ for (const facet of facetsSet) {
89
+ let deterministicFacet = true;
90
+ let linkedData = options?.linkedData;
91
+ let libraries = options?.libraries;
92
+ let facetArgs = options?.facetsArgs;
93
+ if (typeof facet !== 'string') {
94
+ if (facet.deterministic !== undefined) {
95
+ deterministicFacet = facet.deterministic;
96
+ }
97
+ }
98
+ let argsSpecific = false;
99
+ if (facet.linkedData) {
100
+ linkedData = facet.linkedData;
101
+ }
102
+ if (facet.libraries) {
103
+ libraries = facet.libraries;
104
+ }
105
+ if (facet.args !== undefined) {
106
+ // TODO fix in master
107
+ facetArgs = facet.args;
108
+ argsSpecific = true;
109
+ }
110
+ const artifact = facet.contract;
111
+ const facetName = facet.name;
112
+ const constructor = artifact.abi.find((fragment) => fragment.type === 'constructor');
113
+ if (!argsSpecific && (!constructor || constructor.inputs.length === 0)) {
114
+ // reset args for case where facet do not expect any and there was no specific args set on it
115
+ facetArgs = [];
116
+ }
117
+ let excludeSighashes = new Set();
118
+ if (facetName in excludeSelectors) {
119
+ excludeSighashes = new Set(excludeSelectors[facetName]);
120
+ }
121
+ abi = mergeABIs([abi, filterABI(artifact.abi, excludeSighashes)], {
122
+ check: true,
123
+ skipSupportsInterface: false,
124
+ });
125
+ const implementation = await env.deploy(facetName, {
126
+ ...params,
127
+ account: deployerAddress,
128
+ artifact,
129
+ args: facetArgs,
130
+ }, { libraries, linkedData, deterministic: deterministicFacet });
131
+ let facetAddress;
132
+ // TODO updated, check if it is correct, seem to be trigger if linkedData get updated
133
+ if (implementation.newlyDeployed) {
134
+ // console.log(`facet ${facet} deployed at ${implementation.address}`);
135
+ facetAddress = implementation.address;
136
+ const newFacet = {
137
+ facetAddress,
138
+ functionSelectors: sigsFromABI(filterABI(implementation.abi, excludeSighashes)),
139
+ };
140
+ facetSnapshot.push(newFacet);
141
+ newSelectors.push(...newFacet.functionSelectors);
142
+ }
143
+ else {
144
+ const oldImpl = env.get(facetName);
145
+ facetAddress = oldImpl.address;
146
+ const newFacet = {
147
+ facetAddress,
148
+ functionSelectors: sigsFromABI(filterABI(oldImpl.abi, excludeSighashes)),
149
+ };
150
+ facetSnapshot.push(newFacet);
151
+ newSelectors.push(...newFacet.functionSelectors);
152
+ }
153
+ // TODO
154
+ // if (options.execute && !options.execute.contract) {
155
+ // const methods = artifact.abi.filter((v) => v.name === options.execute?.methodName);
156
+ // if (methods.length > 0) {
157
+ // if (methods.length > 1) {
158
+ // throw new Error(`multiple method named "${options.execute.methodName}" found in facet`);
159
+ // } else {
160
+ // if (facetFound) {
161
+ // throw new Error(`multiple facet with method named "${options.execute.methodName}"`);
162
+ // } else {
163
+ // facetFound = facetAddress;
164
+ // }
165
+ // }
166
+ // }
167
+ // }
168
+ }
169
+ const oldSelectors = [];
170
+ const oldSelectorsFacetAddress = {};
171
+ for (const oldFacet of oldFacets) {
172
+ for (const selector of oldFacet.functionSelectors) {
173
+ oldSelectors.push(selector);
174
+ oldSelectorsFacetAddress[selector] = oldFacet.facetAddress;
175
+ }
176
+ }
177
+ for (const newFacet of facetSnapshot) {
178
+ const selectorsToAdd = [];
179
+ const selectorsToReplace = [];
180
+ for (const selector of newFacet.functionSelectors) {
181
+ // TODO fix in master >0 to transform into >= 0
182
+ if (oldSelectors.indexOf(selector) >= 0) {
183
+ if (oldSelectorsFacetAddress[selector].toLowerCase() !== newFacet.facetAddress.toLowerCase()) {
184
+ selectorsToReplace.push(selector);
185
+ }
186
+ }
187
+ else {
188
+ selectorsToAdd.push(selector);
189
+ }
190
+ }
191
+ if (selectorsToReplace.length > 0) {
192
+ changesDetected = true;
193
+ facetCuts.push({
194
+ facetAddress: newFacet.facetAddress,
195
+ functionSelectors: selectorsToReplace,
196
+ action: FacetCutAction.Replace,
197
+ });
198
+ }
199
+ if (selectorsToAdd.length > 0) {
200
+ changesDetected = true;
201
+ facetCuts.push({
202
+ facetAddress: newFacet.facetAddress,
203
+ functionSelectors: selectorsToAdd,
204
+ action: FacetCutAction.Add,
205
+ });
206
+ }
207
+ }
208
+ const selectorsToDelete = [];
209
+ for (const selector of oldSelectors) {
210
+ if (newSelectors.indexOf(selector) === -1) {
211
+ selectorsToDelete.push(selector);
212
+ }
213
+ }
214
+ if (selectorsToDelete.length > 0) {
215
+ changesDetected = true;
216
+ facetCuts.unshift({
217
+ facetAddress: '0x0000000000000000000000000000000000000000',
218
+ functionSelectors: selectorsToDelete,
219
+ action: FacetCutAction.Remove,
220
+ });
221
+ }
222
+ let executeData = '0x';
223
+ let executeAddress = '0x0000000000000000000000000000000000000000';
224
+ // TODO
225
+ // if (options.execute) {
226
+ // let addressSpecified: string | undefined;
227
+ // let executionContract = new Contract('0x0000000000000000000000000000000000000001', abi);
228
+ // if (options.execute.contract) {
229
+ // if (typeof options.execute.contract === 'string') {
230
+ // const executionDeployment = await _deployOne(options.execute.contract, {
231
+ // from: options.from,
232
+ // autoMine: options.autoMine,
233
+ // estimateGasExtra: options.estimateGasExtra,
234
+ // estimatedGasLimit: options.estimatedGasLimit,
235
+ // gasPrice: options.gasPrice,
236
+ // maxFeePerGas: options.maxFeePerGas,
237
+ // maxPriorityFeePerGas: options.maxPriorityFeePerGas,
238
+ // log: options.log,
239
+ // deterministicDeployment: true,
240
+ // });
241
+ // executionContract = new Contract(executionDeployment.address, executionDeployment.abi);
242
+ // addressSpecified = executionContract.address;
243
+ // } else {
244
+ // const executionDeployment = await _deployOne(options.execute.contract.name, {
245
+ // from: options.from,
246
+ // contract: options.execute.contract.artifact,
247
+ // args: options.execute.contract.args,
248
+ // autoMine: options.autoMine,
249
+ // estimateGasExtra: options.estimateGasExtra,
250
+ // estimatedGasLimit: options.estimatedGasLimit,
251
+ // gasPrice: options.gasPrice,
252
+ // maxFeePerGas: options.maxFeePerGas,
253
+ // maxPriorityFeePerGas: options.maxPriorityFeePerGas,
254
+ // log: options.log,
255
+ // deterministicDeployment: true,
256
+ // });
257
+ // executionContract = new Contract(executionDeployment.address, executionDeployment.abi);
258
+ // }
259
+ // }
260
+ // const txData = await executionContract.populateTransaction[options.execute.methodName](...options.execute.args);
261
+ // executeData = txData.data || '0x';
262
+ // executeAddress = addressSpecified || facetFound || '0x0000000000000000000000000000000000000000';
263
+ // }
264
+ if (changesDetected) {
265
+ if (!proxy) {
266
+ const diamondConstructorArgs = options?.diamondContractArgs || ['{owner}', '{facetCuts}', '{initializations}'];
267
+ const initializationsArgIndex = diamondConstructorArgs.indexOf('{initializations}');
268
+ const erc165InitArgIndex = diamondConstructorArgs.indexOf('{erc165}');
269
+ const initArgIndex = diamondConstructorArgs.indexOf('{init}');
270
+ const initAddressArgIndex = diamondConstructorArgs.indexOf('{initAddress}');
271
+ const initDataArgIndex = diamondConstructorArgs.indexOf('{initData}');
272
+ const ownerArgIndex = diamondConstructorArgs.indexOf('{owner}');
273
+ const facetCutsArgIndex = diamondConstructorArgs.indexOf('{facetCuts}');
274
+ if (initializationsArgIndex >= 0 && (initArgIndex >= 0 || erc165InitArgIndex >= 0 || initDataArgIndex >= 0)) {
275
+ throw new Error(`{initializations} found but also one or more of {init} {erc165} {initData}`);
276
+ }
277
+ // TODO option to add more to the list
278
+ // else mechanism to set it up differently ? LoupeFacet without supportsInterface
279
+ const interfaceList = ['0x48e2b093'];
280
+ if (options?.defaultCutFacet) {
281
+ interfaceList.push('0x1f931c1c');
282
+ }
283
+ if (options?.defaultOwnershipFacet) {
284
+ interfaceList.push('0x7f5828d0');
285
+ }
286
+ if (initializationsArgIndex >= 0 || erc165InitArgIndex >= 0) {
287
+ // TODO:TMP
288
+ const diamondERC165InitDeployment = await env.deploy('_DefaultDiamondERC165Init', {
289
+ ...params,
290
+ artifact: artifactDiamondERC165Init,
291
+ args: [],
292
+ }, { deterministic: true });
293
+ const interfaceInitCallData = encodeFunctionData({
294
+ abi: artifactDiamondERC165Init.abi,
295
+ functionName: 'setERC165',
296
+ args: [interfaceList, []],
297
+ });
298
+ if (initializationsArgIndex >= 0) {
299
+ const initializations = [];
300
+ initializations.push({
301
+ initContract: diamondERC165InitDeployment.address,
302
+ initData: interfaceInitCallData,
303
+ });
304
+ diamondConstructorArgs[initializationsArgIndex] = initializations;
305
+ }
306
+ else {
307
+ diamondConstructorArgs[erc165InitArgIndex] = {
308
+ initContract: diamondERC165InitDeployment.address,
309
+ initData: interfaceInitCallData,
310
+ };
311
+ }
312
+ }
313
+ if (ownerArgIndex >= 0) {
314
+ diamondConstructorArgs[ownerArgIndex] = expectedOwner;
315
+ }
316
+ else {
317
+ // TODO ?
318
+ }
319
+ if (facetCutsArgIndex >= 0) {
320
+ diamondConstructorArgs[facetCutsArgIndex] = facetCuts;
321
+ }
322
+ else {
323
+ throw new Error(`diamond constructor needs a {facetCuts} argument`);
324
+ }
325
+ if (executeData) {
326
+ if (initializationsArgIndex >= 0) {
327
+ if (executeData !== '0x') {
328
+ diamondConstructorArgs[initializationsArgIndex].push({
329
+ initContract: executeAddress,
330
+ initData: executeData,
331
+ });
332
+ }
333
+ }
334
+ else {
335
+ if (initArgIndex >= 0) {
336
+ diamondConstructorArgs[initArgIndex] = {
337
+ initContract: executeAddress,
338
+ initData: executeData,
339
+ };
340
+ }
341
+ else if (initDataArgIndex >= 0) {
342
+ diamondConstructorArgs[initDataArgIndex] = executeData;
343
+ if (initAddressArgIndex >= 0) {
344
+ diamondConstructorArgs[initAddressArgIndex] = executeAddress;
345
+ }
346
+ }
347
+ else {
348
+ throw new Error(`no {init} or {initData} found in list of args even though execute is set in option`);
349
+ }
350
+ }
351
+ }
352
+ let salt = '0x0000000000000000000000000000000000000000000000000000000000000000';
353
+ if (typeof options.deterministicSalt !== 'undefined') {
354
+ if (typeof options.deterministicSalt === 'string') {
355
+ if (options.deterministicSalt === salt) {
356
+ throw new Error(`deterministicSalt cannot be 0x000..., it needs to be a non-zero bytes32 salt. This is to ensure you are explicitly specifying different addresses for multiple diamonds`);
357
+ }
358
+ if (options.deterministicSalt.length !== 66) {
359
+ throw new Error(`deterministicSalt needs to be a string of 66 hexadecimal characters (including the 0x prefix)`);
360
+ }
361
+ salt = options.deterministicSalt;
362
+ }
363
+ else {
364
+ throw new Error(`deterministicSalt need to be a string, an non-zero bytes32 salt`);
365
+ }
366
+ }
367
+ proxy = await env.deploy(proxyName, {
368
+ ...params,
369
+ artifact: artifactDiamond,
370
+ args: diamondConstructorArgs,
371
+ }, {
372
+ deterministic: options.deterministicSalt,
373
+ skipIfAlreadyDeployed: true,
374
+ });
375
+ await env.save(name, {
376
+ ...proxy,
377
+ linkedData: options.linkedData,
378
+ facets: facetSnapshot,
379
+ execute: options.execute,
380
+ });
381
+ }
382
+ else {
383
+ if (!oldDeployment) {
384
+ throw new Error(`Cannot find Deployment for ${name}`);
385
+ }
386
+ const currentOwner = await env.read(proxy, {
387
+ functionName: 'owner',
388
+ });
389
+ if (currentOwner.toLowerCase() !== expectedOwner.toLowerCase()) {
390
+ throw new Error('To change owner, you need to call `transferOwnership`');
391
+ }
392
+ if (currentOwner === zeroAddress) {
393
+ throw new Error('The Diamond belongs to no-one. It cannot be upgraded anymore');
394
+ }
395
+ const txHash = await env.execute(proxy, {
396
+ ...params,
397
+ functionName: 'diamondCut',
398
+ args: [
399
+ facetCuts,
400
+ executeData === '0x' ? '0x0000000000000000000000000000000000000000' : executeAddress || proxy.address, // TODO || proxy.address should not be required, the facet should have been found
401
+ executeData,
402
+ ],
403
+ });
404
+ const diamondDeployment = {
405
+ ...oldDeployment,
406
+ linkedData: options.linkedData,
407
+ address: proxy.address,
408
+ abi,
409
+ facets: facetSnapshot,
410
+ execute: options.execute, // TODO add receipt + tx hash
411
+ };
412
+ // // TODO reenable history with options
413
+ // if (oldDeployment.history && oldDeployment.history) {
414
+ // diamondDeployment.history = diamondDeployment.history
415
+ // ? diamondDeployment.history.concat([oldDeployment])
416
+ // : [oldDeployment];
417
+ // }
418
+ await env.save(name, diamondDeployment);
419
+ }
420
+ const deployment = env.get(name);
421
+ return {
422
+ ...deployment,
423
+ newlyDeployed: true,
424
+ };
425
+ }
426
+ else {
427
+ // const oldDeployment = await partialExtension.get(name);
428
+ // const proxiedDeployment: DeploymentSubmission = {
429
+ // ...oldDeployment,
430
+ // facets: facetSnapshot,
431
+ // abi,
432
+ // execute: options.execute,
433
+ // };
434
+ // // TODO ?
435
+ // // proxiedDeployment.history = proxiedDeployment.history
436
+ // // ? proxiedDeployment.history.concat([oldDeployment])
437
+ // // : [oldDeployment];
438
+ // await saveDeployment(name, proxiedDeployment);
439
+ const deployment = await env.get(name);
440
+ return {
441
+ ...deployment,
442
+ newlyDeployed: false,
443
+ };
444
+ }
445
+ }
446
+ env.diamond = diamond;
447
+ return env;
448
+ });
449
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Abi } from 'abitype';
2
+ export declare function sigsFromABI(abi: Abi): string[];
3
+ export declare function filterABI(abi: Abi, excludeSighashes: Set<string>): any[];
4
+ export declare function mergeABIs<TAbi extends Abi = Abi>(abis: Abi[], options: {
5
+ check: boolean;
6
+ skipSupportsInterface: boolean;
7
+ }): TAbi;
8
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAwB,MAAM,SAAS,CAAC;AAGnD,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,CAE9C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,CAExE;AAED,wBAAgB,SAAS,CAAC,IAAI,SAAS,GAAG,GAAG,GAAG,EAC/C,IAAI,EAAE,GAAG,EAAE,EACX,OAAO,EAAE;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,qBAAqB,EAAE,OAAO,CAAA;CAAC,GACvD,IAAI,CAiDN"}
package/dist/utils.js ADDED
@@ -0,0 +1,53 @@
1
+ import { toEventHash, toFunctionSelector } from 'viem';
2
+ export function sigsFromABI(abi) {
3
+ return abi.filter((fragment) => fragment.type === 'function').map((fragment) => toFunctionSelector(fragment));
4
+ }
5
+ export function filterABI(abi, excludeSighashes) {
6
+ return abi.filter((fragment) => fragment.type !== 'function' || !excludeSighashes.has(toFunctionSelector(fragment)));
7
+ }
8
+ export function mergeABIs(abis, options) {
9
+ if (abis.length === 0) {
10
+ return [];
11
+ }
12
+ const result = structuredClone(abis[0]);
13
+ for (let i = 1; i < abis.length; i++) {
14
+ const abi = abis[i];
15
+ for (const fragment of abi) {
16
+ const newFragment = fragment;
17
+ // TODO constructor special handling ?
18
+ const foundSameSig = result.find((v) => {
19
+ const existingFragment = v;
20
+ if (v.type !== fragment.type) {
21
+ return false;
22
+ }
23
+ if (!existingFragment) {
24
+ return v.name === fragment.name; // TODO fallback and receive hanlding
25
+ }
26
+ if (existingFragment.type === 'constructor' || newFragment.type === 'constructor') {
27
+ return existingFragment.name === newFragment.name;
28
+ }
29
+ if (newFragment.type === 'function') {
30
+ return toFunctionSelector(existingFragment) === toFunctionSelector(newFragment);
31
+ }
32
+ else if (newFragment.type === 'event') {
33
+ return toEventHash(existingFragment) === toEventHash(newFragment);
34
+ }
35
+ else {
36
+ return v.name === fragment.name; // TODO fallback and receive hanlding
37
+ }
38
+ });
39
+ if (foundSameSig) {
40
+ if (options.check && !(options.skipSupportsInterface && fragment.name === 'supportsInterface')) {
41
+ if (fragment.type === 'function') {
42
+ throw new Error(`function "${fragment.name}" will shadow "${foundSameSig.name}". Please update code to avoid conflict.`);
43
+ }
44
+ }
45
+ }
46
+ else {
47
+ result.push(fragment);
48
+ }
49
+ }
50
+ }
51
+ return result;
52
+ }
53
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@rocketh/diamond",
3
+ "version": "0.0.0",
4
+ "description": "provide diamond support for rocketh/hardhat-deploy",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "type": "module",
9
+ "main": "dist/index.js",
10
+ "module": "dist/index.js",
11
+ "types": "dist/index.d.ts",
12
+ ".": {
13
+ "import": {
14
+ "types": "./dist/index.d.ts",
15
+ "default": "./dist/index.js"
16
+ }
17
+ },
18
+ "files": [
19
+ "dist"
20
+ ],
21
+ "devDependencies": {
22
+ "@rocketh/deploy": "workspace:*",
23
+ "@rocketh/read-execute": "workspace:*",
24
+ "abitype": "^1.0.8",
25
+ "as-soon": "^0.0.11",
26
+ "eip-1193": "^0.6.2",
27
+ "rimraf": "^6.0.1",
28
+ "rocketh": "workspace:*",
29
+ "typescript": "^5.8.2"
30
+ },
31
+ "peerDependencies": {
32
+ "@rocketh/deploy": "workspace:*",
33
+ "@rocketh/read-execute": "workspace:*",
34
+ "rocketh": "workspace:*"
35
+ },
36
+ "dependencies": {
37
+ "named-logs": "^0.3.2",
38
+ "solidity-proxy": "^0.4.0",
39
+ "viem": "^2.23.10"
40
+ },
41
+ "scripts": {
42
+ "build": "tsc --project tsconfig.json",
43
+ "dev": "as-soon -w src pnpm build"
44
+ }
45
+ }