@diamondslab/diamonds 1.4.1 → 1.5.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.
- package/CHANGELOG.md +67 -0
- package/README.md +32 -6
- package/dist/cli/diamond-abi-cli.d.ts +0 -1
- package/dist/cli/diamond-abi-cli.js +2 -1
- package/dist/core/CallbackManager.d.ts +0 -1
- package/dist/core/CallbackManager.js +0 -1
- package/dist/core/DeploymentManager.d.ts +0 -1
- package/dist/core/DeploymentManager.js +0 -1
- package/dist/core/Diamond.d.ts +0 -1
- package/dist/core/Diamond.js +0 -1
- package/dist/core/DiamondDeployer.d.ts +0 -1
- package/dist/core/DiamondDeployer.js +0 -1
- package/dist/core/index.d.ts +0 -1
- package/dist/core/index.js +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/repositories/DBDeploymentRepository.d.ts +0 -1
- package/dist/repositories/DBDeploymentRepository.js +0 -1
- package/dist/repositories/DeploymentRepository.d.ts +0 -1
- package/dist/repositories/DeploymentRepository.js +0 -1
- package/dist/repositories/FileDeploymentRepository.d.ts +0 -1
- package/dist/repositories/FileDeploymentRepository.js +0 -1
- package/dist/repositories/databaseHandler.d.ts +0 -1
- package/dist/repositories/databaseHandler.js +0 -1
- package/dist/repositories/index.d.ts +0 -1
- package/dist/repositories/index.js +0 -1
- package/dist/repositories/jsonFileHandler.d.ts +0 -1
- package/dist/repositories/jsonFileHandler.js +0 -1
- package/dist/repositories/prismaDBHandler.d.ts +0 -1
- package/dist/repositories/prismaDBHandler.js +0 -1
- package/dist/resolution/index.d.ts +0 -1
- package/dist/resolution/index.js +0 -1
- package/dist/resolution/selectorResolution.d.ts +0 -1
- package/dist/resolution/selectorResolution.js +0 -1
- package/dist/schemas/DeploymentSchema.d.ts +0 -1
- package/dist/schemas/DeploymentSchema.js +0 -1
- package/dist/schemas/index.d.ts +0 -1
- package/dist/schemas/index.js +0 -1
- package/dist/strategies/BaseDeploymentStrategy.d.ts +0 -1
- package/dist/strategies/BaseDeploymentStrategy.js +0 -1
- package/dist/strategies/DeploymentStrategy.d.ts +0 -1
- package/dist/strategies/DeploymentStrategy.js +0 -1
- package/dist/strategies/LocalDeploymentStrategy.d.ts +0 -1
- package/dist/strategies/LocalDeploymentStrategy.js +0 -1
- package/dist/strategies/OZDefenderDeploymentStrategy.d.ts +0 -1
- package/dist/strategies/OZDefenderDeploymentStrategy.js +0 -1
- package/dist/strategies/RPCDeploymentStrategy.d.ts +0 -1
- package/dist/strategies/RPCDeploymentStrategy.js +0 -1
- package/dist/strategies/index.d.ts +0 -1
- package/dist/strategies/index.js +0 -1
- package/dist/types/config.d.ts +0 -1
- package/dist/types/config.js +0 -1
- package/dist/types/defender.d.ts +0 -1
- package/dist/types/defender.js +0 -1
- package/dist/types/deployments.d.ts +0 -1
- package/dist/types/deployments.js +0 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.js +0 -1
- package/dist/types/rpc.d.ts +0 -1
- package/dist/types/rpc.js +0 -1
- package/dist/utils/common.d.ts +0 -1
- package/dist/utils/common.js +0 -1
- package/dist/utils/configurationResolver.d.ts +0 -1
- package/dist/utils/configurationResolver.js +0 -1
- package/dist/utils/contractMapping.d.ts +0 -1
- package/dist/utils/contractMapping.js +0 -1
- package/dist/utils/defenderClients.d.ts +0 -1
- package/dist/utils/defenderClients.js +0 -1
- package/dist/utils/defenderStore.d.ts +0 -1
- package/dist/utils/defenderStore.js +0 -1
- package/dist/utils/diamondAbiGenerator.d.ts +0 -1
- package/dist/utils/diamondAbiGenerator.js +0 -1
- package/dist/utils/diffDeployedFacets.d.ts +0 -1
- package/dist/utils/diffDeployedFacets.js +0 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/loupe.d.ts +0 -1
- package/dist/utils/loupe.js +0 -1
- package/dist/utils/rpcStore.d.ts +0 -1
- package/dist/utils/rpcStore.js +0 -1
- package/dist/utils/signer.d.ts +0 -1
- package/dist/utils/signer.js +0 -1
- package/dist/utils/txlogging.d.ts +0 -1
- package/dist/utils/txlogging.js +0 -1
- package/dist/utils/workspaceSetup.d.ts +0 -1
- package/dist/utils/workspaceSetup.js +0 -1
- package/package.json +26 -15
- package/diamonds/README.md +0 -3
- package/dist/cli/diamond-abi-cli.d.ts.map +0 -1
- package/dist/cli/diamond-abi-cli.js.map +0 -1
- package/dist/core/CallbackManager.d.ts.map +0 -1
- package/dist/core/CallbackManager.js.map +0 -1
- package/dist/core/DeploymentManager.d.ts.map +0 -1
- package/dist/core/DeploymentManager.js.map +0 -1
- package/dist/core/Diamond.d.ts.map +0 -1
- package/dist/core/Diamond.js.map +0 -1
- package/dist/core/DiamondDeployer.d.ts.map +0 -1
- package/dist/core/DiamondDeployer.js.map +0 -1
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/repositories/DBDeploymentRepository.d.ts.map +0 -1
- package/dist/repositories/DBDeploymentRepository.js.map +0 -1
- package/dist/repositories/DeploymentRepository.d.ts.map +0 -1
- package/dist/repositories/DeploymentRepository.js.map +0 -1
- package/dist/repositories/FileDeploymentRepository.d.ts.map +0 -1
- package/dist/repositories/FileDeploymentRepository.js.map +0 -1
- package/dist/repositories/databaseHandler.d.ts.map +0 -1
- package/dist/repositories/databaseHandler.js.map +0 -1
- package/dist/repositories/index.d.ts.map +0 -1
- package/dist/repositories/index.js.map +0 -1
- package/dist/repositories/jsonFileHandler.d.ts.map +0 -1
- package/dist/repositories/jsonFileHandler.js.map +0 -1
- package/dist/repositories/prismaDBHandler.d.ts.map +0 -1
- package/dist/repositories/prismaDBHandler.js.map +0 -1
- package/dist/resolution/index.d.ts.map +0 -1
- package/dist/resolution/index.js.map +0 -1
- package/dist/resolution/selectorResolution.d.ts.map +0 -1
- package/dist/resolution/selectorResolution.js.map +0 -1
- package/dist/schemas/DeploymentSchema.d.ts.map +0 -1
- package/dist/schemas/DeploymentSchema.js.map +0 -1
- package/dist/schemas/index.d.ts.map +0 -1
- package/dist/schemas/index.js.map +0 -1
- package/dist/strategies/BaseDeploymentStrategy.d.ts.map +0 -1
- package/dist/strategies/BaseDeploymentStrategy.js.map +0 -1
- package/dist/strategies/DeploymentStrategy.d.ts.map +0 -1
- package/dist/strategies/DeploymentStrategy.js.map +0 -1
- package/dist/strategies/LocalDeploymentStrategy.d.ts.map +0 -1
- package/dist/strategies/LocalDeploymentStrategy.js.map +0 -1
- package/dist/strategies/OZDefenderDeploymentStrategy.d.ts.map +0 -1
- package/dist/strategies/OZDefenderDeploymentStrategy.js.map +0 -1
- package/dist/strategies/RPCDeploymentStrategy.d.ts.map +0 -1
- package/dist/strategies/RPCDeploymentStrategy.js.map +0 -1
- package/dist/strategies/index.d.ts.map +0 -1
- package/dist/strategies/index.js.map +0 -1
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js.map +0 -1
- package/dist/types/defender.d.ts.map +0 -1
- package/dist/types/defender.js.map +0 -1
- package/dist/types/deployments.d.ts.map +0 -1
- package/dist/types/deployments.js.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/types/rpc.d.ts.map +0 -1
- package/dist/types/rpc.js.map +0 -1
- package/dist/utils/common.d.ts.map +0 -1
- package/dist/utils/common.js.map +0 -1
- package/dist/utils/configurationResolver.d.ts.map +0 -1
- package/dist/utils/configurationResolver.js.map +0 -1
- package/dist/utils/contractMapping.d.ts.map +0 -1
- package/dist/utils/contractMapping.js.map +0 -1
- package/dist/utils/defenderClients.d.ts.map +0 -1
- package/dist/utils/defenderClients.js.map +0 -1
- package/dist/utils/defenderStore.d.ts.map +0 -1
- package/dist/utils/defenderStore.js.map +0 -1
- package/dist/utils/diamondAbiGenerator.d.ts.map +0 -1
- package/dist/utils/diamondAbiGenerator.js.map +0 -1
- package/dist/utils/diffDeployedFacets.d.ts.map +0 -1
- package/dist/utils/diffDeployedFacets.js.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/loupe.d.ts.map +0 -1
- package/dist/utils/loupe.js.map +0 -1
- package/dist/utils/rpcStore.d.ts.map +0 -1
- package/dist/utils/rpcStore.js.map +0 -1
- package/dist/utils/signer.d.ts.map +0 -1
- package/dist/utils/signer.js.map +0 -1
- package/dist/utils/txlogging.d.ts.map +0 -1
- package/dist/utils/txlogging.js.map +0 -1
- package/dist/utils/workspaceSetup.d.ts.map +0 -1
- package/dist/utils/workspaceSetup.js.map +0 -1
- package/examples/defender-deployment/README.md +0 -415
- package/test/README.md +0 -136
package/dist/utils/index.js
CHANGED
package/dist/utils/loupe.d.ts
CHANGED
|
@@ -41,4 +41,3 @@ export declare function logDiamondLoupe(tx: ContractTransactionResponse, diamond
|
|
|
41
41
|
* (see DiamondLoupeFacet.sol)
|
|
42
42
|
*/
|
|
43
43
|
export declare function getDeployedFacets(diamondAddress: string, signerOrProvider?: Signer | Provider, receiptToDecode?: TransactionReceipt, logDeployedFacets?: boolean): Promise<FacetStruct[]>;
|
|
44
|
-
//# sourceMappingURL=loupe.d.ts.map
|
package/dist/utils/loupe.js
CHANGED
package/dist/utils/rpcStore.d.ts
CHANGED
package/dist/utils/rpcStore.js
CHANGED
package/dist/utils/signer.d.ts
CHANGED
|
@@ -33,4 +33,3 @@ export declare function impersonateAndFundSigner(deployerAddress: string, provid
|
|
|
33
33
|
* @returns The address of the old owner.
|
|
34
34
|
*/
|
|
35
35
|
export declare const updateOwnerForTest: (rootAddress: string, provider: JsonRpcProvider) => Promise<any>;
|
|
36
|
-
//# sourceMappingURL=signer.d.ts.map
|
package/dist/utils/signer.js
CHANGED
|
@@ -10,4 +10,3 @@ import { ContractTransactionResponse, Interface, InterfaceAbi, TransactionReceip
|
|
|
10
10
|
* additional ABIs (e.g. library or facet events) can follow.
|
|
11
11
|
*/
|
|
12
12
|
export declare function logTx(tx: ContractTransactionResponse, description?: string, interfaces?: (Interface | InterfaceAbi)[]): Promise<TransactionReceipt>;
|
|
13
|
-
//# sourceMappingURL=txlogging.d.ts.map
|
package/dist/utils/txlogging.js
CHANGED
package/package.json
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@diamondslab/diamonds",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "Tools for deploying and interfacing with ERC-2535 Diamond Proxies",
|
|
5
|
-
"repository":
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/DiamondsLab/diamonds.git"
|
|
8
|
+
},
|
|
6
9
|
"main": "dist/index.js",
|
|
7
10
|
"types": "dist/index.d.ts",
|
|
8
11
|
"module": "dist/index.js",
|
|
@@ -18,12 +21,13 @@
|
|
|
18
21
|
"./core": {
|
|
19
22
|
"types": "./dist/core/index.d.ts",
|
|
20
23
|
"default": "./dist/core/index.js"
|
|
21
|
-
}
|
|
24
|
+
},
|
|
25
|
+
"./dist/*": {
|
|
26
|
+
"types": "./dist/*.d.ts",
|
|
27
|
+
"default": "./dist/*.js"
|
|
28
|
+
},
|
|
29
|
+
"./package.json": "./package.json"
|
|
22
30
|
},
|
|
23
|
-
"authors": [
|
|
24
|
-
"Am0rfu5",
|
|
25
|
-
"SuperGenius"
|
|
26
|
-
],
|
|
27
31
|
"license": "MIT",
|
|
28
32
|
"keywords": [
|
|
29
33
|
"ethereum",
|
|
@@ -50,8 +54,8 @@
|
|
|
50
54
|
"clean": "rimraf artifacts/* cache/* diamond-abi/* typechain-types/* diamond-typechain-types/*",
|
|
51
55
|
"compile": "npx hardhat compile --config hardhat.config.ts && yarn diamond:generate-abi-typechain",
|
|
52
56
|
"clean-compile": "yarn clean && yarn compile",
|
|
53
|
-
"lint:fix": "prettier --write
|
|
54
|
-
"lint": "
|
|
57
|
+
"lint:fix": "prettier --write src && eslint src --fix",
|
|
58
|
+
"lint": "eslint src",
|
|
55
59
|
"build:dev": "tsc --project tsconfig.dev.json --noEmit",
|
|
56
60
|
"watch": "tsc --project tsconfig.json -w",
|
|
57
61
|
"prepublishOnly": "yarn build",
|
|
@@ -96,7 +100,7 @@
|
|
|
96
100
|
"ci-perf-monitor": "node scripts/devops/ci-perf-monitor.js",
|
|
97
101
|
"sign-artifacts": "npx ts-node scripts/devops/sign-artifacts.ts",
|
|
98
102
|
"emergency-bypass": "npx ts-node scripts/devops/emergency-bypass.ts",
|
|
99
|
-
"security-check": "yarn audit && yarn snyk:test && yarn socket:scan && yarn osv:scan && yarn semgrep:scan && yarn
|
|
103
|
+
"security-check": "yarn audit && yarn snyk:test && yarn socket:scan && yarn osv:scan && yarn semgrep:scan && yarn git-secrets:scan",
|
|
100
104
|
"security-tool-update": "npx ts-node scripts/devops/security-tool-updater.ts",
|
|
101
105
|
"provenance-check": "npx ts-node scripts/devops/provenance-validator.ts",
|
|
102
106
|
"slsa-attest": "npx ts-node scripts/devops/slsa-attestation.ts generate",
|
|
@@ -134,8 +138,9 @@
|
|
|
134
138
|
},
|
|
135
139
|
"files": [
|
|
136
140
|
"dist/",
|
|
137
|
-
"LICENSE",
|
|
138
|
-
"README.md"
|
|
141
|
+
"/LICENSE",
|
|
142
|
+
"/README.md",
|
|
143
|
+
"/CHANGELOG.md"
|
|
139
144
|
],
|
|
140
145
|
"devDependencies": {
|
|
141
146
|
"@commitlint/cli": "^19.8.1",
|
|
@@ -225,10 +230,16 @@
|
|
|
225
230
|
"packageManager": "yarn@4.10.3",
|
|
226
231
|
"dependencies": {
|
|
227
232
|
"@ethersproject/abstract-signer": "^5.8.0",
|
|
228
|
-
"axios": "^1.12.0",
|
|
229
233
|
"debug": "^4.4.1",
|
|
230
234
|
"fs-extra": "^11.3.0",
|
|
231
|
-
"lodash": "^4.17.21",
|
|
232
235
|
"zod": "^4.0.2"
|
|
236
|
+
},
|
|
237
|
+
"author": "Am0rfu5",
|
|
238
|
+
"contributors": [
|
|
239
|
+
"SuperGenius"
|
|
240
|
+
],
|
|
241
|
+
"engines": {
|
|
242
|
+
"node": ">=18.0.0",
|
|
243
|
+
"yarn": ">=4.0.0"
|
|
233
244
|
}
|
|
234
|
-
}
|
|
245
|
+
}
|
package/diamonds/README.md
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diamond-abi-cli.d.ts","sourceRoot":"","sources":["../../src/cli/diamond-abi-cli.ts"],"names":[],"mappings":";AAqeA,OAAO,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diamond-abi-cli.js","sourceRoot":"","sources":["../../src/cli/diamond-abi-cli.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\n// The diamond/ABI-generator modules transitively import `hardhat` at module\n// scope, so they (and `hardhat` itself) are imported lazily inside the\n// `generate`/`preview` actions. This keeps `validate` and `compare` — which only\n// read ABI JSON files — runnable as a plain `node`/`npx` bin with no Hardhat.\nimport type { Diamond } from '../core/Diamond';\nimport type { DiamondConfig } from '../types';\nimport { existsSync } from 'fs';\n// NOTE: `hardhat` (and, via its config, the hardhat-ethers plugin) is loaded\n// lazily inside `setupDiamondConnection` so commands that don't need a chain\n// connection (`validate`, `compare`) run without booting the Hardhat runtime.\n// Importing `@nomicfoundation/hardhat-ethers` at module scope would call\n// `extendEnvironment` before a Hardhat context exists (HH5), so it is avoided.\n\n// This CLI formats and inspects arbitrary ABI/JSON artifacts and indexes internal\n// selector maps, so `any` and dynamic property access are intentional below.\n/* eslint-disable @typescript-eslint/no-explicit-any, security/detect-object-injection */\n\nconst program = new Command();\n\n// Keep the CLI version in sync with the package version. The relative path\n// resolves to the package root from both src/cli (dev) and dist/cli (published).\nconst { version: pkgVersion } = require('../../package.json');\n\nprogram\n\t.name('diamond-abi')\n\t.description('Diamond ABI generation utilities')\n\t.version(pkgVersion);\n\n// Generate command\nprogram\n\t.command('generate')\n\t.description('Generate ABI for a deployed diamond')\n\t.option('-d, --diamond <name>', 'Diamond name', 'GeniusDiamond')\n\t.option('-n, --network <name>', 'Network name', 'localhost')\n\t.option('-c, --chain-id <id>', 'Chain ID', '31337')\n\t.option('-o, --output <dir>', 'Output directory (overrides diamond config)', undefined)\n\t.option('--deployments-path <path>', 'Deployments path', './diamonds')\n\t.option('--contracts-path <path>', 'Contracts path', './contracts')\n\t.option('--include-source', 'Include source information in ABI', false)\n\t.option('--validate-selectors', 'Validate function selector uniqueness', true)\n\t.option('-v, --verbose', 'Verbose output', false)\n\t.action(async (options) => {\n\t\ttry {\n\t\t\tconsole.log(chalk.blue('🔧 Generating Diamond ABI...'));\n\n\t\t\tconst { generateDiamondAbi } = await import('../utils/diamondAbiGenerator.js');\n\t\t\tconst { Diamond } = await import('../core/Diamond.js');\n\t\t\tconst { FileDeploymentRepository } = await import(\n\t\t\t\t'../repositories/FileDeploymentRepository.js'\n\t\t\t);\n\n\t\t\tconst config: DiamondConfig = {\n\t\t\t\tdiamondName: options.diamond,\n\t\t\t\tnetworkName: options.network,\n\t\t\t\tchainId: parseInt(options.chainId),\n\t\t\t\tdeploymentsPath: options.deploymentsPath,\n\t\t\t\tcontractsPath: options.contractsPath,\n\t\t\t};\n\n\t\t\tif (options.verbose) {\n\t\t\t\tconsole.log(chalk.cyan('📋 Configuration:'));\n\t\t\t\tconsole.log(chalk.gray(` Diamond: ${config.diamondName}`));\n\t\t\t\tconsole.log(chalk.gray(` Network: ${config.networkName}`));\n\t\t\t\tconsole.log(chalk.gray(` Chain ID: ${config.chainId}`));\n\t\t\t\tconsole.log(chalk.gray(` Output: ${options.output}`));\n\t\t\t}\n\n\t\t\t// Create diamond instance\n\t\t\tconst repository = new FileDeploymentRepository(config);\n\t\t\tconst diamond: Diamond = new Diamond(config, repository);\n\n\t\t\t// Set provider and signer if available\n\t\t\tawait setupDiamondConnection(diamond, options.verbose);\n\n\t\t\t// Generate ABI using Diamond's configured paths\n\t\t\tconst result = await generateDiamondAbi(diamond, {\n\t\t\t\toutputDir: options.output ?? diamond.getDiamondAbiPath(),\n\t\t\t\tincludeSourceInfo: options.includeSource,\n\t\t\t\tvalidateSelectors: options.validateSelectors,\n\t\t\t\tverbose: options.verbose,\n\t\t\t});\n\n\t\t\tconsole.log(chalk.green('\\n✅ Diamond ABI generation completed!'));\n\t\t\tdisplayResults(result, options.verbose);\n\t\t} catch (error) {\n\t\t\tconsole.error(chalk.red('❌ Error generating Diamond ABI:'), error);\n\t\t\tprocess.exit(1);\n\t\t}\n\t});\n\n// Preview command\nprogram\n\t.command('preview')\n\t.description('Preview ABI changes for planned diamond cuts')\n\t.option('-d, --diamond <name>', 'Diamond name', 'GeniusDiamond')\n\t.option('-n, --network <name>', 'Network name', 'localhost')\n\t.option('-c, --chain-id <id>', 'Chain ID', '31337')\n\t.option('--deployments-path <path>', 'Deployments path', './diamonds')\n\t.option('--contracts-path <path>', 'Contracts path', './contracts')\n\t.option('-v, --verbose', 'Verbose output', false)\n\t.action(async (options) => {\n\t\ttry {\n\t\t\tconsole.log(chalk.blue('🔍 Previewing Diamond ABI changes...'));\n\n\t\t\tconst { generateDiamondAbi, previewDiamondAbi } = await import(\n\t\t\t\t'../utils/diamondAbiGenerator.js'\n\t\t\t);\n\t\t\tconst { Diamond } = await import('../core/Diamond.js');\n\t\t\tconst { FileDeploymentRepository } = await import(\n\t\t\t\t'../repositories/FileDeploymentRepository.js'\n\t\t\t);\n\n\t\t\tconst config: DiamondConfig = {\n\t\t\t\tdiamondName: options.diamond,\n\t\t\t\tnetworkName: options.network,\n\t\t\t\tchainId: parseInt(options.chainId),\n\t\t\t\tdeploymentsPath: options.deploymentsPath,\n\t\t\t\tcontractsPath: options.contractsPath,\n\t\t\t};\n\n\t\t\tconst repository = new FileDeploymentRepository(config);\n\t\t\tconst diamond: Diamond = new Diamond(config, repository);\n\n\t\t\tawait setupDiamondConnection(diamond, options.verbose);\n\n\t\t\t// Get current state\n\t\t\tconst currentResult = await generateDiamondAbi(diamond, {\n\t\t\t\tverbose: false,\n\t\t\t\tincludeSourceInfo: false,\n\t\t\t});\n\n\t\t\tconsole.log(chalk.cyan('\\n📋 Current ABI state:'));\n\t\t\tconsole.log(chalk.gray(` Functions: ${currentResult.stats.totalFunctions}`));\n\t\t\tconsole.log(chalk.gray(` Events: ${currentResult.stats.totalEvents}`));\n\t\t\tconsole.log(chalk.gray(` Facets: ${currentResult.stats.facetCount}`));\n\n\t\t\t// Check for planned cuts\n\t\t\tconst registry = diamond.functionSelectorRegistry;\n\t\t\tconst plannedCuts = Array.from(registry.entries())\n\t\t\t\t.filter(([_, entry]) => entry.action !== 0) // Not deployed\n\t\t\t\t.map(([selector, entry]) => ({\n\t\t\t\t\tfacetAddress: entry.address,\n\t\t\t\t\taction: entry.action,\n\t\t\t\t\tfunctionSelectors: [selector],\n\t\t\t\t\tname: entry.facetName,\n\t\t\t\t}));\n\n\t\t\tif (plannedCuts.length === 0) {\n\t\t\t\tconsole.log(\n\t\t\t\t\tchalk.yellow('\\n⚠️ No planned cuts found in function selector registry'),\n\t\t\t\t);\n\t\t\t\tconsole.log(\n\t\t\t\t\tchalk.gray(' Use the diamond deployment system to plan upgrades first.'),\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconsole.log(chalk.cyan(`\\n🔄 Found ${plannedCuts.length} planned cuts:`));\n\t\t\tfor (const cut of plannedCuts) {\n\t\t\t\tconst actionName =\n\t\t\t\t\tcut.action === 1 ? 'Add' : cut.action === 2 ? 'Remove' : 'Replace';\n\t\t\t\tconsole.log(\n\t\t\t\t\tchalk.gray(\n\t\t\t\t\t\t` ${actionName}: ${cut.name} (${cut.functionSelectors.length} selectors)`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Preview with planned cuts\n\t\t\tconst previewResult = await previewDiamondAbi(diamond, plannedCuts, {\n\t\t\t\tverbose: options.verbose,\n\t\t\t\tincludeSourceInfo: false,\n\t\t\t});\n\n\t\t\tconsole.log(chalk.green('\\n✅ ABI preview completed!'));\n\t\t\tconsole.log(chalk.blue('\\n📊 Preview Results:'));\n\t\t\tconsole.log(\n\t\t\t\tchalk.cyan(` Functions after cuts: ${previewResult.stats.totalFunctions}`),\n\t\t\t);\n\t\t\tconsole.log(chalk.cyan(` Events after cuts: ${previewResult.stats.totalEvents}`));\n\t\t\tconsole.log(chalk.cyan(` Facets after cuts: ${previewResult.stats.facetCount}`));\n\n\t\t\t// Show differences\n\t\t\tconst functionDiff =\n\t\t\t\tpreviewResult.stats.totalFunctions - currentResult.stats.totalFunctions;\n\t\t\tconst facetDiff = previewResult.stats.facetCount - currentResult.stats.facetCount;\n\n\t\t\tif (functionDiff !== 0) {\n\t\t\t\tconst color = functionDiff > 0 ? chalk.green : chalk.red;\n\t\t\t\tconsole.log(\n\t\t\t\t\tcolor(` Function change: ${functionDiff > 0 ? '+' : ''}${functionDiff}`),\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (facetDiff !== 0) {\n\t\t\t\tconst color = facetDiff > 0 ? chalk.green : chalk.red;\n\t\t\t\tconsole.log(color(` Facet change: ${facetDiff > 0 ? '+' : ''}${facetDiff}`));\n\t\t\t}\n\n\t\t\tif (options.verbose) {\n\t\t\t\tconsole.log(chalk.blue('\\n🎯 Planned Function Changes:'));\n\t\t\t\tdisplaySelectorChanges(currentResult.selectorMap, previewResult.selectorMap);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(chalk.red('❌ Error previewing Diamond ABI:'), error);\n\t\t\tprocess.exit(1);\n\t\t}\n\t});\n\n// Compare command\nprogram\n\t.command('compare')\n\t.description('Compare two diamond ABI files')\n\t.argument('<file1>', 'First ABI file path')\n\t.argument('<file2>', 'Second ABI file path')\n\t.option('-v, --verbose', 'Verbose output', false)\n\t.action(async (file1, file2, options) => {\n\t\ttry {\n\t\t\tconsole.log(chalk.blue('🔍 Comparing Diamond ABI files...'));\n\n\t\t\tif (!existsSync(file1)) {\n\t\t\t\tthrow new Error(`File not found: ${file1}`);\n\t\t\t}\n\t\t\tif (!existsSync(file2)) {\n\t\t\t\tthrow new Error(`File not found: ${file2}`);\n\t\t\t}\n\n\t\t\tconst abi1 = JSON.parse(require('fs').readFileSync(file1, 'utf8'));\n\t\t\tconst abi2 = JSON.parse(require('fs').readFileSync(file2, 'utf8'));\n\n\t\t\tconsole.log(chalk.cyan(`\\n📋 Comparing:`));\n\t\t\tconsole.log(chalk.gray(` File 1: ${file1}`));\n\t\t\tconsole.log(chalk.gray(` File 2: ${file2}`));\n\n\t\t\tconst result1 = analyzeAbi(abi1);\n\t\t\tconst result2 = analyzeAbi(abi2);\n\n\t\t\tconsole.log(chalk.blue('\\n📊 Comparison Results:'));\n\n\t\t\t// Function comparison\n\t\t\tconst funcDiff = result2.functions - result1.functions;\n\t\t\tconsole.log(\n\t\t\t\tchalk.cyan(`Functions: ${result1.functions} → ${result2.functions} `),\n\t\t\t\tfuncDiff === 0\n\t\t\t\t\t? chalk.gray('(no change)')\n\t\t\t\t\t: funcDiff > 0\n\t\t\t\t\t\t? chalk.green(`(+${funcDiff})`)\n\t\t\t\t\t\t: chalk.red(`(${funcDiff})`),\n\t\t\t);\n\n\t\t\t// Event comparison\n\t\t\tconst eventDiff = result2.events - result1.events;\n\t\t\tconsole.log(\n\t\t\t\tchalk.cyan(`Events: ${result1.events} → ${result2.events} `),\n\t\t\t\teventDiff === 0\n\t\t\t\t\t? chalk.gray('(no change)')\n\t\t\t\t\t: eventDiff > 0\n\t\t\t\t\t\t? chalk.green(`(+${eventDiff})`)\n\t\t\t\t\t\t: chalk.red(`(${eventDiff})`),\n\t\t\t);\n\n\t\t\t// Error comparison\n\t\t\tconst errorDiff = result2.errors - result1.errors;\n\t\t\tconsole.log(\n\t\t\t\tchalk.cyan(`Errors: ${result1.errors} → ${result2.errors} `),\n\t\t\t\terrorDiff === 0\n\t\t\t\t\t? chalk.gray('(no change)')\n\t\t\t\t\t: errorDiff > 0\n\t\t\t\t\t\t? chalk.green(`(+${errorDiff})`)\n\t\t\t\t\t\t: chalk.red(`(${errorDiff})`),\n\t\t\t);\n\n\t\t\tif (options.verbose && abi1._diamondMetadata && abi2._diamondMetadata) {\n\t\t\t\tconsole.log(chalk.blue('\\n🔍 Detailed Selector Comparison:'));\n\t\t\t\tdisplaySelectorChanges(\n\t\t\t\t\tabi1._diamondMetadata.selectorMap ?? {},\n\t\t\t\t\tabi2._diamondMetadata.selectorMap ?? {},\n\t\t\t\t);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(chalk.red('❌ Error comparing ABI files:'), error);\n\t\t\tprocess.exit(1);\n\t\t}\n\t});\n\n// Validate command\nprogram\n\t.command('validate')\n\t.description('Validate a diamond ABI file')\n\t.argument('<file>', 'ABI file path')\n\t.option('-v, --verbose', 'Verbose output', false)\n\t.action(async (file, options) => {\n\t\ttry {\n\t\t\tconsole.log(chalk.blue('🔍 Validating Diamond ABI...'));\n\n\t\t\tif (!existsSync(file)) {\n\t\t\t\tthrow new Error(`File not found: ${file}`);\n\t\t\t}\n\n\t\t\tconst artifact = JSON.parse(require('fs').readFileSync(file, 'utf8'));\n\n\t\t\t// Basic structure validation\n\t\t\tconst hasRequiredFields = artifact.abi && artifact.contractName;\n\t\t\tif (!hasRequiredFields) {\n\t\t\t\tthrow new Error('Invalid artifact: missing required fields (abi, contractName)');\n\t\t\t}\n\n\t\t\t// ABI validation with ethers\n\t\t\tconst { Interface } = await import('ethers');\n\t\t\tlet ethersInterface: InstanceType<typeof Interface>;\n\t\t\ttry {\n\t\t\t\tethersInterface = new Interface(artifact.abi);\n\t\t\t} catch (error) {\n\t\t\t\tthrow new Error(`Invalid ABI: ${error}`);\n\t\t\t}\n\n\t\t\tconst analysis = analyzeAbi(artifact);\n\n\t\t\tconsole.log(chalk.green('✅ ABI validation passed!'));\n\t\t\tconsole.log(chalk.blue('\\n📊 ABI Analysis:'));\n\t\t\tconsole.log(chalk.cyan(` Functions: ${analysis.functions}`));\n\t\t\tconsole.log(chalk.cyan(` Events: ${analysis.events}`));\n\t\t\tconsole.log(chalk.cyan(` Errors: ${analysis.errors}`));\n\t\t\tconsole.log(chalk.cyan(` Total fragments: ${ethersInterface.fragments.length}`));\n\n\t\t\tif (artifact._diamondMetadata) {\n\t\t\t\tconst metadata = artifact._diamondMetadata;\n\t\t\t\tconsole.log(chalk.blue('\\n💎 Diamond Metadata:'));\n\t\t\t\tconsole.log(chalk.cyan(` Diamond: ${metadata.diamondName}`));\n\t\t\t\tconsole.log(chalk.cyan(` Network: ${metadata.networkName}`));\n\t\t\t\tconsole.log(chalk.cyan(` Chain ID: ${metadata.chainId}`));\n\t\t\t\tconsole.log(chalk.cyan(` Generated: ${metadata.generatedAt}`));\n\n\t\t\t\tif (metadata.selectorMap) {\n\t\t\t\t\tconst selectorCount = Object.keys(metadata.selectorMap).length;\n\t\t\t\t\tconst facetCount = new Set(Object.values(metadata.selectorMap)).size;\n\t\t\t\t\tconsole.log(chalk.cyan(` Function selectors: ${selectorCount}`));\n\t\t\t\t\tconsole.log(chalk.cyan(` Facets: ${facetCount}`));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options.verbose) {\n\t\t\t\tconsole.log(chalk.blue('\\n🔍 Function Signatures:'));\n\t\t\t\tethersInterface.fragments\n\t\t\t\t\t.filter((f: any) => f.type === 'function')\n\t\t\t\t\t.slice(0, 10) // Show first 10\n\t\t\t\t\t.forEach((f: any) => {\n\t\t\t\t\t\tconsole.log(chalk.gray(` ${(f as any).format()}`));\n\t\t\t\t\t});\n\n\t\t\t\tif (\n\t\t\t\t\tethersInterface.fragments.filter((f: any) => f.type === 'function').length > 10\n\t\t\t\t) {\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\tchalk.gray(\n\t\t\t\t\t\t\t` ... and ${ethersInterface.fragments.filter((f: any) => f.type === 'function').length - 10} more`,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(chalk.red('❌ ABI validation failed:'), error);\n\t\t\tprocess.exit(1);\n\t\t}\n\t});\n\n// Helper functions\nasync function setupDiamondConnection(diamond: Diamond, verbose: boolean): Promise<void> {\n\ttry {\n\t\t// Typed as `any`: the `hre.ethers` helper is added at runtime by the\n\t\t// hardhat-ethers plugin (loaded via the project's hardhat config).\n\t\tconst hre: any = (await import('hardhat')).default;\n\t\tdiamond.setProvider(hre.ethers.provider);\n\t\tconst signers = await hre.ethers.getSigners();\n\t\tif (signers.length > 0) {\n\t\t\tdiamond.setSigner(signers[0]);\n\t\t}\n\n\t\tif (verbose) {\n\t\t\tconsole.log(chalk.gray('✅ Connected to Hardhat provider'));\n\t\t}\n\t} catch (error) {\n\t\tif (verbose) {\n\t\t\tconsole.log(\n\t\t\t\tchalk.yellow('⚠️ Could not connect to provider (running in standalone mode)'),\n\t\t\t);\n\t\t}\n\t}\n}\n\nfunction displayResults(result: any, verbose: boolean): void {\n\tconsole.log(chalk.blue('\\n📊 Generation Results:'));\n\tconsole.log(chalk.cyan(` Functions: ${result.stats.totalFunctions}`));\n\tconsole.log(chalk.cyan(` Events: ${result.stats.totalEvents}`));\n\tconsole.log(chalk.cyan(` Errors: ${result.stats.totalErrors}`));\n\tconsole.log(chalk.cyan(` Facets: ${result.stats.facetCount}`));\n\n\tif (result.outputPath) {\n\t\tconsole.log(chalk.cyan(` Output: ${result.outputPath}`));\n\t}\n\n\tif (result.stats.duplicateSelectorsSkipped > 0) {\n\t\tconsole.log(\n\t\t\tchalk.yellow(` Duplicates skipped: ${result.stats.duplicateSelectorsSkipped}`),\n\t\t);\n\t}\n\n\tif (verbose && result.selectorMap) {\n\t\tconsole.log(chalk.blue('\\n🎯 Function Selector Mapping:'));\n\t\tconst sortedSelectors = Object.entries(result.selectorMap).sort(([, a], [, b]) =>\n\t\t\t(a as string).localeCompare(b as string),\n\t\t);\n\t\tsortedSelectors.slice(0, 20).forEach(([selector, facet]) => {\n\t\t\tconsole.log(chalk.gray(` ${selector} → ${facet}`));\n\t\t});\n\n\t\tif (sortedSelectors.length > 20) {\n\t\t\tconsole.log(chalk.gray(` ... and ${sortedSelectors.length - 20} more`));\n\t\t}\n\t}\n}\n\nfunction displaySelectorChanges(\n\toldMap: Record<string, string>,\n\tnewMap: Record<string, string>,\n): void {\n\tconst oldSelectors = new Set(Object.keys(oldMap));\n\tconst newSelectors = new Set(Object.keys(newMap));\n\n\tconst added = Array.from(newSelectors).filter((s) => !oldSelectors.has(s));\n\tconst removed = Array.from(oldSelectors).filter((s) => !newSelectors.has(s));\n\tconst changed = Array.from(oldSelectors).filter(\n\t\t(s) => newSelectors.has(s) && oldMap[s] !== newMap[s],\n\t);\n\n\tif (added.length > 0) {\n\t\tconsole.log(chalk.green(`\\n ➕ Added (${added.length}):`));\n\t\tadded.slice(0, 10).forEach((selector) => {\n\t\t\tconsole.log(chalk.gray(` ${selector} → ${newMap[selector]}`));\n\t\t});\n\t\tif (added.length > 10) {\n\t\t\tconsole.log(chalk.gray(` ... and ${added.length - 10} more`));\n\t\t}\n\t}\n\n\tif (removed.length > 0) {\n\t\tconsole.log(chalk.red(`\\n ➖ Removed (${removed.length}):`));\n\t\tremoved.slice(0, 10).forEach((selector) => {\n\t\t\tconsole.log(chalk.gray(` ${selector} → ${oldMap[selector]}`));\n\t\t});\n\t\tif (removed.length > 10) {\n\t\t\tconsole.log(chalk.gray(` ... and ${removed.length - 10} more`));\n\t\t}\n\t}\n\n\tif (changed.length > 0) {\n\t\tconsole.log(chalk.yellow(`\\n 🔄 Changed (${changed.length}):`));\n\t\tchanged.slice(0, 10).forEach((selector) => {\n\t\t\tconsole.log(chalk.gray(` ${selector}: ${oldMap[selector]} → ${newMap[selector]}`));\n\t\t});\n\t\tif (changed.length > 10) {\n\t\t\tconsole.log(chalk.gray(` ... and ${changed.length - 10} more`));\n\t\t}\n\t}\n\n\tif (added.length === 0 && removed.length === 0 && changed.length === 0) {\n\t\tconsole.log(chalk.gray(' No selector changes detected'));\n\t}\n}\n\nfunction analyzeAbi(artifact: any): { functions: number; events: number; errors: number } {\n\tconst abi = artifact.abi ?? [];\n\treturn {\n\t\tfunctions: abi.filter((item: any) => item.type === 'function').length,\n\t\tevents: abi.filter((item: any) => item.type === 'event').length,\n\t\terrors: abi.filter((item: any) => item.type === 'error').length,\n\t};\n}\n\n// Parse command line arguments\nprogram.parse();\n\nexport {};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CallbackManager.d.ts","sourceRoot":"","sources":["../../src/core/CallbackManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,qBAAa,eAAe;IAKN,OAAO,CAAC,aAAa;IAJzC,OAAO,CAAC,MAAM,CAAC,SAAS,CAA2C;IAEnE,OAAO,CAAC,SAAS,CAA6E;IAE9F,OAAO;WAIO,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,eAAe;WAQ1E,cAAc,IAAI,IAAI;WAItB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAItD,OAAO,CAAC,aAAa;IAyBR,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAexG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CallbackManager.js","sourceRoot":"","sources":["../../src/core/CallbackManager.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from \"fs-extra\";\nimport { resolve, join } from \"path\";\nimport { CallbackArgs } from \"../types\";\n\nexport class CallbackManager {\n private static instances: Map<string, CallbackManager> = new Map();\n\n private callbacks: Record<string, Record<string, (args: CallbackArgs) => Promise<void>>> = {};\n\n private constructor(private callbacksPath: string) {\n this.loadCallbacks();\n }\n\n public static getInstance(diamondName: string, deploymentsPath: string): CallbackManager {\n if (!this.instances.has(diamondName)) {\n const callbacksPath = join(deploymentsPath, diamondName, \"callbacks\");\n this.instances.set(diamondName, new CallbackManager(callbacksPath));\n }\n return this.instances.get(diamondName)!;\n }\n\n public static clearInstances(): void {\n this.instances.clear();\n }\n\n public static clearInstance(diamondName: string): void {\n this.instances.delete(diamondName);\n }\n\n private loadCallbacks(): void {\n if (!fs.existsSync(this.callbacksPath)) {\n console.error(`Facet callbacks path \"${this.callbacksPath}\" does not exist.`);\n return;\n }\n\n const files = fs.readdirSync(this.callbacksPath);\n\n files.forEach(file => {\n if (!file.endsWith(\".ts\") && !file.endsWith(\".js\")) return;\n\n const facetName = file.split(\".\")[0];\n const filePath = resolve(this.callbacksPath, file);\n const module = require(filePath);\n\n this.callbacks[facetName] = {};\n\n Object.entries(module).forEach(([callbackName, callbackFn]) => {\n if (typeof callbackFn === 'function') {\n this.callbacks[facetName][callbackName] = callbackFn as (args: CallbackArgs) => Promise<void>;\n }\n });\n });\n }\n\n public async executeCallback(facetName: string, callbacks: string[], args: CallbackArgs): Promise<void> {\n const registeredCallbacks = this.callbacks[facetName];\n for (const callbackName of callbacks) {\n if (!registeredCallbacks) {\n throw new Error(`Callbacks for facet \"${facetName}\" not found.`);\n }\n\n const callback = registeredCallbacks[callbackName];\n if (!callback) {\n throw new Error(`Callback \"${callbackName}\" for facet \"${facetName}\" not found.`);\n }\n\n await callback(args);\n }\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeploymentManager.d.ts","sourceRoot":"","sources":["../../src/core/DeploymentManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,QAAQ,CAAqB;gBAEzB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB;IAKpD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAwB/B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeploymentManager.js","sourceRoot":"","sources":["../../src/core/DeploymentManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { DeploymentStrategy } from \"../strategies/DeploymentStrategy\";\nimport { Diamond } from \"./Diamond\";\n\nexport class DeploymentManager {\n private diamond: Diamond;\n private strategy: DeploymentStrategy;\n\n constructor(diamond: Diamond, strategy: DeploymentStrategy) {\n this.diamond = diamond;\n this.strategy = strategy;\n }\n\n async deploy(): Promise<void> {\n console.log(`🚀 Starting deployment for Diamond: ${this.diamond.diamondName}`);\n this.diamond.newDeployment = true;\n\n await this.strategy.preDeployDiamond(this.diamond);\n await this.strategy.deployDiamond(this.diamond);\n await this.strategy.postDeployDiamond(this.diamond);\n\n await this.strategy.preDeployFacets(this.diamond);\n await this.strategy.deployFacets(this.diamond);\n await this.strategy.postDeployFacets(this.diamond);\n\n await this.strategy.preUpdateFunctionSelectorRegistry(this.diamond);\n await this.strategy.updateFunctionSelectorRegistry(this.diamond);\n await this.strategy.postUpdateFunctionSelectorRegistry(this.diamond);\n\n await this.strategy.prePerformDiamondCut(this.diamond);\n await this.strategy.performDiamondCut(this.diamond);\n await this.strategy.postPerformDiamondCut(this.diamond);\n\n await this.strategy.preRunPostDeployCallbacks(this.diamond);\n await this.strategy.runPostDeployCallbacks(this.diamond);\n await this.strategy.postRunPostDeployCallbacks(this.diamond);\n\n console.log(`✅ Deployment completed successfully.`);\n }\n\n async upgrade(): Promise<void> {\n console.log(`♻️ Starting upgrade for Diamond: ${this.diamond.diamondName}`);\n\n this.diamond.newDeployment = false;\n\n await this.strategy.preDeployFacets(this.diamond);\n await this.strategy.deployFacets(this.diamond);\n await this.strategy.postDeployFacets(this.diamond);\n\n await this.strategy.preUpdateFunctionSelectorRegistry(this.diamond);\n await this.strategy.updateFunctionSelectorRegistry(this.diamond);\n await this.strategy.postUpdateFunctionSelectorRegistry(this.diamond);\n\n await this.strategy.prePerformDiamondCut(this.diamond);\n await this.strategy.performDiamondCut(this.diamond);\n await this.strategy.postPerformDiamondCut(this.diamond);\n\n await this.strategy.preRunPostDeployCallbacks(this.diamond);\n await this.strategy.runPostDeployCallbacks(this.diamond);\n await this.strategy.postRunPostDeployCallbacks(this.diamond);\n\n console.log(`✅ Upgrade completed successfully.`);\n }\n\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Diamond.d.ts","sourceRoot":"","sources":["../../src/core/Diamond.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EACL,YAAY,EACZ,mBAAmB,EAEnB,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,6BAA6B,EAC7B,gBAAgB,EAChB,iBAAiB,EAEjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,OAAO;IACnB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAmC;IAEpD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAM;IAC9B,eAAe,EAAE,eAAe,CAAC;IACxC,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,UAAU,CAAuB;IAClC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACxC,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAQ;IAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE3B,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,oBAAoB;IAoC5D,wBAAwB,6CAAoD;IAEnF,OAAO,CAAC,mCAAmC;IA0BpC,yBAAyB,CAC/B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAC,GACxE,IAAI;IAMA,8BAA8B,CACpC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,6BAA6B,GAClC,IAAI;IAIA,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIvD,iBAAiB,EAAE,iBAAiB,CAAM;IAE1C,oBAAoB,IAAI,iBAAiB;IAIzC,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAKhF,sBAAsB,IAAI,mBAAmB;IAI7C,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAIvD,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAKnD,gBAAgB,IAAI,aAAa;IAIjC,eAAe,IAAI,YAAY;IAI/B,eAAe,IAAI,YAAY;IAI/B,WAAW,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAI9C,WAAW,IAAI,iBAAiB,GAAG,SAAS;IAI5C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,SAAS,IAAI,MAAM,GAAG,SAAS;IAI/B,mBAAmB,IAAI,OAAO;IAI9B,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IAErD,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAInE,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAGzC,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC,iBAAiB,IAAI,MAAM;IAI3B,qBAAqB,IAAI,MAAM;IAI/B,qBAAqB,IAAI,MAAM;CAGtC;AAED,eAAe,OAAO,CAAC"}
|
package/dist/core/Diamond.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Diamond.js","sourceRoot":"","sources":["../../src/core/Diamond.ts"],"names":[],"mappings":"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","sourcesContent":["import { Signer } from 'ethers';\nimport { join } from 'path';\nimport { DeploymentRepository } from '../repositories/DeploymentRepository';\nimport {\n DeployConfig,\n DeployedDiamondData,\n DeployedFacets,\n FacetsConfig,\n} from '../schemas';\nimport {\n DiamondConfig,\n FunctionSelectorRegistryEntry,\n NewDeployedFacet,\n NewDeployedFacets,\n RegistryFacetCutAction,\n SupportedProvider,\n} from '../types';\nimport { CallbackManager } from './CallbackManager';\n\nexport class Diamond {\n\tprivate static instances: Map<string, Diamond> = new Map();\n\n\tpublic diamondName: string;\n\tpublic networkName: string;\n\tpublic chainId: number | bigint;\n\tpublic deploymentsPath: string;\n\tpublic contractsPath: string;\n\tpublic diamondAbiPath: string;\n\tpublic diamondAbiFileName: string;\n\tpublic deploymentId: string;\n\tpublic facetSelectors: string[] = [];\n\tpublic callbackManager: CallbackManager;\n\tprivate deployedDiamondData: DeployedDiamondData;\n\tprivate config: DiamondConfig;\n\tprivate facetsConfig: FacetsConfig;\n\tprivate repository: DeploymentRepository;\n\tpublic signer: Signer | undefined;\n\tpublic provider: SupportedProvider | undefined;\n\tpublic deployConfig: DeployConfig;\n\tpublic newDeployment: boolean = true;\n\tpublic initAddress: string | undefined;\n\n\tconstructor(config: DiamondConfig, repository: DeploymentRepository) {\n\t\tthis.config = config;\n\t\tthis.diamondName = config.diamondName;\n\t\tthis.networkName = config.networkName ?? 'hardhat';\n\t\tthis.chainId = config.chainId ?? 31337;\n\t\tthis.deploymentsPath = config.deploymentsPath ?? 'diamonds';\n\t\tthis.contractsPath = config.contractsPath ?? 'contracts';\n\t\tthis.diamondAbiFileName = config.diamondAbiFileName ?? config.diamondName;\n\n\t\t// Set diamond ABI path - default to diamond-abi subdirectory of configFilePath directory\n\t\tif (config.diamondAbiPath) {\n\t\t\tthis.diamondAbiPath = config.diamondAbiPath;\n\t\t} else {\n\t\t\tconst configDir = config.configFilePath\n\t\t\t\t? config.configFilePath.replace(/\\/[^\\/]*$/, '') // Remove filename from path\n\t\t\t\t: join(this.deploymentsPath, config.diamondName);\n\t\t\tthis.diamondAbiPath = join(configDir, 'diamond-abi');\n\t\t}\n\n\t\tthis.repository = repository;\n\t\tthis.deploymentId = repository.getDeploymentId();\n\n\t\t// Load existing deployment info\n\t\tthis.deployedDiamondData = this.repository.loadDeployedDiamondData();\n\t\tthis.deployConfig = this.repository.loadDeployConfig();\n\n\t\tthis.facetsConfig = this.deployConfig.facets;\n\n\t\tthis.callbackManager = CallbackManager.getInstance(\n\t\t\tthis.diamondName,\n\t\t\tthis.deploymentsPath,\n\t\t);\n\n\t\tthis._initializeFunctionSelectorRegistry(this);\n\t}\n\n\tpublic functionSelectorRegistry = new Map<string, FunctionSelectorRegistryEntry>();\n\n\tprivate _initializeFunctionSelectorRegistry(diamond: Diamond): void {\n\t\tconst diamondConfig: DiamondConfig = diamond.getDiamondConfig();\n\t\tconst deployedDiamondData: DeployedDiamondData = diamond.getDeployedDiamondData();\n\t\tconst deployedFacets: DeployedFacets = deployedDiamondData.DeployedFacets ?? {};\n\n\t\tfor (const [\n\t\t\tfacetName,\n\t\t\t{ address: contractAddress, funcSelectors: selectors },\n\t\t] of Object.entries(deployedFacets)) {\n\t\t\tconsole.log(facetName);\n\t\t\tif (!selectors || !contractAddress) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (const selector of selectors) {\n\t\t\t\tconst facetConfig = this.facetsConfig[facetName as keyof FacetsConfig];\n\t\t\t\tconst priority = facetConfig?.priority ?? 1000;\n\t\t\t\tthis.functionSelectorRegistry.set(selector, {\n\t\t\t\t\tfacetName,\n\t\t\t\t\tpriority,\n\t\t\t\t\taddress: contractAddress,\n\t\t\t\t\taction: RegistryFacetCutAction.Deployed,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic registerFunctionSelectors(\n\t\tselectors: Record<string, Omit<FunctionSelectorRegistryEntry, 'selector'>>,\n\t): void {\n\t\tObject.entries(selectors).forEach(([selector, entry]) => {\n\t\t\tthis.functionSelectorRegistry.set(selector, entry);\n\t\t});\n\t}\n\n\tpublic updateFunctionSelectorRegistry(\n\t\tselector: string,\n\t\tentry: FunctionSelectorRegistryEntry,\n\t): void {\n\t\tthis.functionSelectorRegistry.set(selector, entry);\n\t}\n\n\tpublic isFunctionSelectorRegistered(selector: string): boolean {\n\t\treturn this.functionSelectorRegistry.has(selector);\n\t}\n\n\tpublic newDeployedFacets: NewDeployedFacets = {};\n\n\tpublic getNewDeployedFacets(): NewDeployedFacets {\n\t\treturn this.newDeployedFacets ?? {};\n\t}\n\n\tpublic updateNewDeployedFacets(facetName: string, facet: NewDeployedFacet): void {\n\t\tthis.newDeployedFacets = this.newDeployedFacets ?? {};\n\t\tthis.newDeployedFacets[facetName as keyof NewDeployedFacets] = facet;\n\t}\n\n\tgetDeployedDiamondData(): DeployedDiamondData {\n\t\treturn this.deployedDiamondData;\n\t}\n\n\tsetDeployedDiamondData(data: DeployedDiamondData): void {\n\t\tthis.deployedDiamondData = data;\n\t}\n\n\tupdateDeployedDiamondData(data: DeployedDiamondData): void {\n\t\tthis.deployedDiamondData = data;\n\t\tthis.repository.saveDeployedDiamondData(data);\n\t}\n\n\tpublic getDiamondConfig(): DiamondConfig {\n\t\treturn this.config;\n\t}\n\n\tpublic getDeployConfig(): DeployConfig {\n\t\treturn this.deployConfig;\n\t}\n\n\tpublic getFacetsConfig(): FacetsConfig {\n\t\treturn this.facetsConfig;\n\t}\n\n\tpublic setProvider(provider: SupportedProvider): void {\n\t\tthis.provider = provider;\n\t}\n\n\tpublic getProvider(): SupportedProvider | undefined {\n\t\treturn this.provider;\n\t}\n\n\tpublic setSigner(signer: Signer): void {\n\t\tthis.signer = signer;\n\t}\n\n\tpublic getSigner(): Signer | undefined {\n\t\treturn this.signer;\n\t}\n\n\tpublic isUpgradeDeployment(): boolean {\n\t\treturn !!this.deployedDiamondData.DiamondAddress;\n\t}\n\n\tpublic initializerRegistry: Map<string, string> = new Map();\n\n\tpublic registerInitializers(facetName: string, initFunction: string): void {\n\t\tthis.initializerRegistry.set(facetName, initFunction);\n\t}\n\n\tpublic setInitAddress(initAddress: string): void {\n\t\tthis.initAddress = initAddress;\n\t}\n\tpublic getInitAddress(): string | undefined {\n\t\treturn this.initAddress;\n\t}\n\n\tpublic getDiamondAbiPath(): string {\n\t\treturn this.diamondAbiPath;\n\t}\n\n\tpublic getDiamondAbiFileName(): string {\n\t\treturn this.diamondAbiFileName;\n\t}\n\n\tpublic getDiamondAbiFilePath(): string {\n\t\treturn join(this.diamondAbiPath, `${this.diamondAbiFileName}.json`);\n\t}\n}\n\nexport default Diamond;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DiamondDeployer.d.ts","sourceRoot":"","sources":["../../src/core/DiamondDeployer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGnD,qBAAa,eAAe;IAE1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,QAAQ,CAAqB;gBAGnC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,kBAAkB;IAMxB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAc7B,UAAU,IAAI,OAAO;CAG7B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DiamondDeployer.js","sourceRoot":"","sources":["../../src/core/DiamondDeployer.ts"],"names":[],"mappings":";;;AACA,2DAAwD;AAIxD,MAAa,eAAe;IAC1B,qCAAqC;IAC7B,OAAO,CAAU;IACjB,QAAQ,CAAqB;IAErC,YACE,OAAgB,EAChB,QAA4B;QAE5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAAA,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,OAAO,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnE,IAAI,mBAAwC,CAAC;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;QAC3D,IAAI,YAAY,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;YAChD,mBAAmB,GAAG,YAAY,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,+BAA+B,mBAAmB,CAAC,cAAc,yBAAyB,CAAC,CAAC;YACxG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;YACjF,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AA9BD,0CA8BC","sourcesContent":["import { Diamond } from './Diamond';\nimport { DeploymentManager } from './DeploymentManager';\nimport { DeploymentStrategy } from '../strategies';\nimport { DeployedDiamondData } from '../schemas';\n\nexport class DiamondDeployer {\n // private provider: JsonRpcProvider;\n private diamond: Diamond;\n private strategy: DeploymentStrategy;\n\n constructor(\n diamond: Diamond,\n strategy: DeploymentStrategy\n ) {\n this.diamond = diamond;\n this.strategy = strategy;;\n }\n\n async deployDiamond(): Promise<void> {\n const manager = new DeploymentManager(this.diamond, this.strategy);\n let deployedDiamondData: DeployedDiamondData;\n const deployedData = this.diamond.getDeployedDiamondData();\n if (deployedData && deployedData.DiamondAddress) {\n deployedDiamondData = deployedData;\n console.log(`Diamond already deployed at ${deployedDiamondData.DiamondAddress}. Performing upgrade...`);\n await manager.upgrade();\n } else {\n console.log(`Diamond not previously deployed. Performing initial deployment...`);\n await manager.deploy();\n }\n }\n\n public getDiamond(): Diamond {\n return this.diamond;\n }\n}\n"]}
|
package/dist/core/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/core/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;AAAA,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,qDAAoD;AAA3C,kHAAA,eAAe,OAAA","sourcesContent":["export { Diamond } from \"./Diamond\";\nexport { DiamondDeployer } from \"./DiamondDeployer\";\nexport { DeploymentManager } from \"./DeploymentManager\";\nexport { CallbackManager } from \"./CallbackManager\";"]}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,0CAAwB;AACxB,+CAA6B;AAC7B,4CAA0B;AAC1B,0CAAwB","sourcesContent":["export * from \"./core\";\nexport * from \"./types\";\nexport * from \"./strategies\";\nexport * from \"./schemas\";\nexport * from \"./utils\";\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DBDeploymentRepository.d.ts","sourceRoot":"","sources":["../../src/repositories/DBDeploymentRepository.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DBDeploymentRepository.js","sourceRoot":"","sources":["../../src/repositories/DBDeploymentRepository.ts"],"names":[],"mappings":";AAAA,WAAW;AACX,6BAA6B;AAC7B,wBAAwB;AACxB,wBAAwB;AACxB,8BAA8B;;AAE9B,iEAAiE;AACjE,kEAAkE;AAElE,wEAAwE;AACxE,oGAAoG;AACpG,sEAAsE;AACtE,MAAM;AAEN,gHAAgH;AAChH,gEAAgE;AAChE,MAAM;AAEN,gFAAgF;AAChF,uDAAuD;AACvD,MAAM;AACN,IAAI","sourcesContent":["// import {\n// readDeployedDiamondData,\n// saveDeploymentInfo,\n// getDeployConfigData\n// } from './databaseHandler';\n\n// import { DeploymentRepository } from './DeploymentRepository';\n// import { DeployedDiamondData, DeployConfig } from '../schemas';\n\n// export class DbDeploymentRepository implements DeploymentRepository {\n// async loadDeployInfo(key: { network: string; diamond: string }): Promise<DeployedDiamondData> {\n// return await readDeployedDiamondData(key.network, key.diamond);\n// }\n\n// async saveDeployInfo(key: { network: string; diamond: string }, info: DeployedDiamondData): Promise<void> {\n// await saveDeploymentInfo(key.network, key.diamond, info);\n// }\n\n// async loadDeployConfig(key: { projectId: string }): Promise<DeployConfig> {\n// return await getDeployConfigData(key.projectId);\n// }\n// }\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeploymentRepository.d.ts","sourceRoot":"","sources":["../../src/repositories/DeploymentRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/D,8BAAsB,oBAAoB;IACxC,QAAQ,CAAC,uBAAuB,IAAI,mBAAmB;IAEvD,QAAQ,CAAC,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAEjE,QAAQ,CAAC,gBAAgB,IAAI,YAAY;IAEzC,QAAQ,CAAC,eAAe,IAAI,MAAM;CACnC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeploymentRepository.js","sourceRoot":"","sources":["../../src/repositories/DeploymentRepository.ts"],"names":[],"mappings":";;;AAGA,MAAsB,oBAAoB;CAQzC;AARD,oDAQC","sourcesContent":["// DeploymentRepository.ts\nimport { DeployedDiamondData, DeployConfig } from \"../schemas\";\n\nexport abstract class DeploymentRepository {\n abstract loadDeployedDiamondData(): DeployedDiamondData;\n\n abstract saveDeployedDiamondData(info: DeployedDiamondData): void;\n\n abstract loadDeployConfig(): DeployConfig;\n\n abstract getDeploymentId(): string;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FileDeploymentRepository.d.ts","sourceRoot":"","sources":["../../src/repositories/FileDeploymentRepository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,qBAAa,wBAAyB,YAAW,oBAAoB;IACpE,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,2BAA2B,CAAS;IAC5C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,wBAAwB,CAAU;IAC1C,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,EAAE,aAAa;IA2B1B,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIjD,2BAA2B,IAAI,OAAO;IAI7C,uBAAuB,IAAI,mBAAmB;IAI9C,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAYxD,gBAAgB,IAAI,YAAY;IAIzB,eAAe,IAAI,MAAM;CAGhC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FileDeploymentRepository.js","sourceRoot":"","sources":["../../src/repositories/FileDeploymentRepository.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,+BAA4B;AAI5B,uDAAsF;AAEtF,MAAa,wBAAwB;IAC5B,kBAAkB,CAAS;IAC3B,2BAA2B,CAAS;IACpC,cAAc,CAAS;IACvB,wBAAwB,CAAU;IAClC,YAAY,CAAS;IAE7B,YAAY,MAAqB;QAChC,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,eAAe,IAAI,UAAU,CAAC;QAC/D,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,IAAI,IAAI,CAAC;QACxE,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,SAAS,CAAC;QACpD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,WAAW,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;QAE7G,IAAI,MAAM,CAAC,2BAA2B,EAAE,CAAC;YACxC,IAAI,CAAC,2BAA2B,GAAG,MAAM,CAAC,2BAA2B,CAAC;QACvE,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,2BAA2B,GAAG,IAAA,WAAI,EACtC,IAAI,CAAC,kBAAkB,EACvB,MAAM,CAAC,WAAW,EAClB,eAAe,IAAI,CAAC,YAAY,OAAO,CACvC,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC3B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC7C,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,cAAc,GAAG,IAAA,WAAI,EACzB,IAAI,CAAC,kBAAkB,EACvB,MAAM,CAAC,WAAW,EAClB,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,cAAc,CACjD,CAAC;QACH,CAAC;IACF,CAAC;IAEM,2BAA2B,CAAC,KAAc;QAChD,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;IACvC,CAAC;IAEM,2BAA2B;QACjC,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACtC,CAAC;IAED,uBAAuB;QACtB,OAAO,IAAA,gCAAc,EAAC,IAAI,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC,CAAC,gCAAgC;IACjG,CAAC;IAED,uBAAuB,CAAC,IAAyB;QAChD,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACnC,IAAA,iCAAe,EAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,GAAG,CACV,eAAK,CAAC,UAAU,CACf,4FAA4F,CAC5F,CACD,CAAC;QACH,CAAC;IACF,CAAC;IAED,gBAAgB;QACf,OAAO,IAAA,kCAAgB,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9C,CAAC;IAEM,eAAe;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;CACD;AAjED,4DAiEC","sourcesContent":["import chalk from 'chalk';\nimport { join } from 'path';\nimport { DeployConfig, DeployedDiamondData } from '../schemas';\nimport { DiamondConfig } from '../types';\nimport { DeploymentRepository } from './DeploymentRepository';\nimport { readDeployConfig, readDeployFile, writeDeployInfo } from './jsonFileHandler';\n\nexport class FileDeploymentRepository implements DeploymentRepository {\n\tprivate deploymentDataPath: string;\n\tprivate deployedDiamondDataFilePath: string;\n\tprivate configFilePath: string;\n\tprivate writeDeployedDiamondData: boolean;\n\tprivate deploymentId: string;\n\n\tconstructor(config: DiamondConfig) {\n\t\tthis.deploymentDataPath = config.deploymentsPath ?? 'diamonds';\n\t\tthis.writeDeployedDiamondData = config.writeDeployedDiamondData ?? true;\n\t\tconst networkName = config.networkName ?? 'unknown';\n\t\tconst chainId = config.chainId ?? 0;\n\t\tthis.deploymentId = `${config.diamondName.toLowerCase()}-${networkName.toLowerCase()}-${chainId.toString()}`;\n\n\t\tif (config.deployedDiamondDataFilePath) {\n\t\t\tthis.deployedDiamondDataFilePath = config.deployedDiamondDataFilePath;\n\t\t} else {\n\t\t\tthis.deployedDiamondDataFilePath = join(\n\t\t\t\tthis.deploymentDataPath,\n\t\t\t\tconfig.diamondName,\n\t\t\t\t`deployments/${this.deploymentId}.json`,\n\t\t\t);\n\t\t}\n\t\tif (config.configFilePath) {\n\t\t\tthis.configFilePath = config.configFilePath;\n\t\t} else {\n\t\t\tthis.configFilePath = join(\n\t\t\t\tthis.deploymentDataPath,\n\t\t\t\tconfig.diamondName,\n\t\t\t\t`${config.diamondName.toLowerCase()}.config.json`,\n\t\t\t);\n\t\t}\n\t}\n\n\tpublic setWriteDeployedDiamondData(write: boolean): void {\n\t\tthis.writeDeployedDiamondData = write;\n\t}\n\n\tpublic getWriteDeployedDiamondData(): boolean {\n\t\treturn this.writeDeployedDiamondData;\n\t}\n\n\tloadDeployedDiamondData(): DeployedDiamondData {\n\t\treturn readDeployFile(this.deployedDiamondDataFilePath, false); // Never create file during load\n\t}\n\n\tsaveDeployedDiamondData(info: DeployedDiamondData): void {\n\t\tif (this.writeDeployedDiamondData) {\n\t\t\twriteDeployInfo(this.deployedDiamondDataFilePath, info);\n\t\t} else {\n\t\t\tconsole.log(\n\t\t\t\tchalk.cyanBright(\n\t\t\t\t\t'Skipping write of diamond deployment data. Set writeDeployedDiamondData to true to enable.',\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t}\n\n\tloadDeployConfig(): DeployConfig {\n\t\treturn readDeployConfig(this.configFilePath);\n\t}\n\n\tpublic getDeploymentId(): string {\n\t\treturn this.deploymentId;\n\t}\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"databaseHandler.d.ts","sourceRoot":"","sources":["../../src/repositories/databaseHandler.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"databaseHandler.js","sourceRoot":"","sources":["../../src/repositories/databaseHandler.ts"],"names":[],"mappings":";AAAA,kEAAkE;;AAElE,gFAAgF;AAChF,kHAAkH;AAClH,4BAA4B;AAC5B,IAAI;AAEJ,yHAAyH;AACzH,yBAAyB;AACzB,IAAI;AAEJ,wFAAwF;AACxF,wBAAwB;AACxB,IAAI","sourcesContent":["// import { DeployedDiamondData, DeployConfig } from \"../schemas\";\n\n// // This would internally use your chosen DB driver (e.g. pg, Prisma, TypeORM)\n// export async function readDeployedDiamondData(network: string, diamond: string): Promise<DeployedDiamondData> {\n// // SQL or ORM call here\n// }\n\n// export async function saveDeploymentInfo(network: string, diamond: string, info: DeployedDiamondData): Promise<void> {\n// // SQL or ORM upsert\n// }\n\n// export async function getDeployConfigData(projectId: string): Promise<DeployConfig> {\n// // SQL or ORM fetch\n// }\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repositories/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repositories/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,6DAA2C;AAC3C,oDAAkC","sourcesContent":["export * from \"./DeploymentRepository\";\nexport * from \"./FileDeploymentRepository\";\nexport * from \"./jsonFileHandler\";\n\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsonFileHandler.d.ts","sourceRoot":"","sources":["../../src/repositories/jsonFileHandler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,OAAO,EACL,YAAY,EAEZ,mBAAmB,EAEpB,MAAM,6BAA6B,CAAC;AAErC,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EACvB,SAAS,GAAE,OAAe,GACzB,mBAAmB,CAGrB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,OAAc,GAClE,mBAAmB,CAuBtB;AAWD;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,mBAAmB,CAQvD;AACD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,QAM/C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,QAGtE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,QAI1F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,QAI5C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYxD;AAED,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,GAClB,YAAY,CAMd;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,KAAG,YAanD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,EAAE,MAAM,YAAY,KAAG,IAIvE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,MAAM,EAChB,UAAU,MAAM,EAChB,QAAQ,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,KAC9C,YAQF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,EAAE,UAAU,MAAM,KAAG,YAKhE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,UAAU,MAAM,KAAG,OAsBvD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsonFileHandler.js","sourceRoot":"","sources":["../../src/repositories/jsonFileHandler.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAkBH,4EASC;AASD,wCAwBC;AAgBD,8CAQC;AAKD,kDAMC;AAKD,0CAGC;AAKD,4CAIC;AAKD,4CAIC;AAOD,gDAYC;AAED,4CASC;AArJD,uCAOkB;AAClB,+BAAqC;AACrC,kEAKqC;AAErC,SAAgB,gCAAgC,CAC9C,WAAmB,EACnB,WAAmB,EACnB,YAAoB,EACpB,eAAuB,EACvB,YAAqB,KAAK;IAE1B,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,eAAe,EAAE,WAAW,EAAE,GAAG,YAAY,OAAO,CAAC,CAAC;IAC5E,OAAO,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAAC,IAAY,EAAE,YAAqB,IAAI;IAEpE,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC,IAAA,yBAAc,EAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;QACvC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1B,GAAG,GAAG,IAAA,uBAAY,EAAC,IAAI,CAAC,CAAC;QAEzB,MAAM,MAAM,GAAG,4CAAyB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAClG,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;SAAM,IAAI,IAAA,yBAAc,EAAC,IAAI,CAAC,EAAE,CAAC;QAChC,GAAG,GAAG,IAAA,uBAAY,EAAC,IAAI,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,4CAAyB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAClG,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,qDAAqD;IACrD,OAAO,iBAAiB,EAAE,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,WAAW,GAAG,CAAC,YAAoB,EAAU,EAAE;IACnD,OAAO,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF;;;;GAIG;AACH,SAAgB,iBAAiB;IAC/B,OAAO;QACL,cAAc,EAAE,EAAE;QAClB,eAAe,EAAE,EAAE;QACnB,cAAc,EAAE,EAAE,EAAE,0BAA0B;QAC9C,iBAAiB,EAAE,EAAE,EAAE,sCAAsC;QAC7D,eAAe,EAAE,CAAC,EAAE,2BAA2B;KAChD,CAAC;AACJ,CAAC;AACD;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,6CAA6C;IAC7C,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAC;IACrB,wDAAwD;IACxD,MAAM,SAAS,GAAG,4CAAyB,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACvE,IAAA,wBAAa,EAAC,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,IAAY,EAAE,IAAyB;IACrE,MAAM,SAAS,GAAG,4CAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,IAAA,wBAAa,EAAC,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,IAAY,EAAE,OAA4C;IACzF,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC;IACd,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,IAAI,IAAA,yBAAc,EAAC,IAAI,CAAC,EAAE,CAAC;QACzB,IAAA,qBAAU,EAAC,IAAI,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,IAAI,CAAC;QACH,IAAI,CAAC,IAAA,yBAAc,EAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;YAClD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,GAAG,GAAG,IAAA,uBAAY,EAAC,IAAI,CAAC,CAAC;QAC/B,4CAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAC9B,eAAuB,EACvB,WAAmB;IAEnB,MAAM,IAAI,GAAG,IAAA,WAAI,EAAC,eAAe,EAAE,WAAW,EAAE,GAAG,WAAW,cAAc,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,IAAA,4BAAoB,EAAC,IAAI,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,IAAA,wBAAgB,EAAC,IAAI,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACI,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAgB,EAAE;IACjE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEvC,qBAAqB;QACrB,MAAM,GAAG,GAAG,IAAA,uBAAY,EAAC,QAAQ,CAAC,CAAC;QAEnC,mCAAmC;QACnC,OAAO,qCAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC,CAAC;AAbW,QAAA,gBAAgB,oBAa3B;AAEF;;;;GAIG;AACI,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,IAAkB,EAAQ,EAAE;IAC7E,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAA,yBAAc,EAAC,QAAQ,CAAC,CAAC;IACzB,IAAA,wBAAa,EAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/C,CAAC,CAAC;AAJW,QAAA,gBAAgB,oBAI3B;AAEF;;;;;;GAMG;AACI,MAAM,iBAAiB,GAAG,CAC/B,QAAgB,EAChB,QAAgB,EAChB,MAA+C,EACjC,EAAE;IAChB,MAAM,YAAY,GAAG,IAAA,wBAAgB,EAAC,QAAQ,CAAC,CAAC;IAChD,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;QAC9B,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,GAAG,MAAM;KACV,CAAC;IACF,IAAA,wBAAgB,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACzC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAZW,QAAA,iBAAiB,qBAY5B;AAEF;;;;;GAKG;AACI,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAE,QAAgB,EAAgB,EAAE;IAC9E,MAAM,YAAY,GAAG,IAAA,wBAAgB,EAAC,QAAQ,CAAC,CAAC;IAChD,OAAO,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAA,wBAAgB,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACzC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AALW,QAAA,WAAW,eAKtB;AAEF;;;;GAIG;AACI,MAAM,oBAAoB,GAAG,CAAC,QAAgB,EAAW,EAAE;IAChE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEvC,2BAA2B;QAC3B,IAAI,CAAC,IAAA,qBAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,mDAAmD,QAAQ,GAAG,CAAC,CAAC;YAC9E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,qCAAqC;QACrC,MAAM,GAAG,GAAG,IAAA,uBAAY,EAAC,QAAQ,CAAC,CAAC;QAEnC,uCAAuC;QACvC,qCAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE9B,kCAAkC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAA;AAtBY,QAAA,oBAAoB,wBAsBhC","sourcesContent":["/**\n * CRUD and validation helpers for JSON files\n * \n * These should all be synchronous and handle issues like empty files or non-existent files\n * gracefully in a way that allows for control by the caller, e.g. gives the caller the\n * ability to create an empty file on failure.\n */\n\nimport {\n ensureFileSync,\n existsSync,\n pathExistsSync,\n readJsonSync,\n removeSync,\n writeJsonSync\n} from \"fs-extra\";\nimport { join, resolve } from \"path\";\nimport {\n DeployConfig,\n DeployConfigSchema,\n DeployedDiamondData,\n DeployedDiamondDataSchema\n} from \"../schemas/DeploymentSchema\";\n\nexport function readDeployFilePathDiamondNetwork(\n networkName: string,\n diamondName: string,\n deploymentId: string,\n deploymentsPath: string,\n createNew: boolean = false\n): DeployedDiamondData {\n const filePath = join(deploymentsPath, diamondName, `${deploymentId}.json`);\n return readDeployFile(filePath, createNew);\n}\n\n/**\n * Reads and validates a JSON file as DeployedDiamondData\n * @param path - The path to the deployment file.\n * @param createIfMissing - If true, creates a new deployment file with default values if \n * the file does not exist. Otherwise this will throw an error if the file does not exist.\n * @returns The parsed and validated deployment object.\n */\nexport function readDeployFile(path: string, createNew: boolean = true)\n : DeployedDiamondData {\n let raw: unknown;\n if (!pathExistsSync(path) && createNew) {\n createNewDeployFile(path);\n raw = readJsonSync(path);\n\n const parsed = DeployedDiamondDataSchema.safeParse(raw);\n if (!parsed.success) {\n throw new Error(`Invalid deployment format: ${JSON.stringify(parsed.error.format(), null, 2)}`);\n }\n\n return parsed.data;\n } else if (pathExistsSync(path)) {\n raw = readJsonSync(path);\n const parsed = DeployedDiamondDataSchema.safeParse(raw);\n if (!parsed.success) {\n throw new Error(`Invalid deployment format: ${JSON.stringify(parsed.error.format(), null, 2)}`);\n }\n return parsed.data;\n }\n\n // This is a mock deployment object with empty values\n return defaultDeployment();\n}\n\n/**\n * Resolves the absolute path of a file relative to the project root.\n * @param relativePath - The relative path to resolve.\n * @returns The absolute path.\n */\nconst resolvePath = (relativePath: string): string => {\n return resolve(process.cwd(), relativePath);\n};\n\n/**\n * Default deployment object with empty values\n * This is used to create a new deployment file if it does not exist or for a mock deployment.\n * @type {DeployedDiamondData}\n */\nexport function defaultDeployment(): DeployedDiamondData {\n return {\n DiamondAddress: \"\",\n DeployerAddress: \"\",\n DeployedFacets: {}, // Empty object for facets\n ExternalLibraries: {}, // Empty object for external libraries\n protocolVersion: 0, // Default protocol version\n };\n}\n/**\n * Creates a new deployment file with default empty values\n * @param path - The path to the deployment file.\n */\nexport function createNewDeployFile(path: string) {\n // Ensure the directory exists before writing\n ensureFileSync(path);\n // Validate the default deployment object before writing\n const validated = DeployedDiamondDataSchema.parse(defaultDeployment());\n writeJsonSync(path, validated, { spaces: 2 });\n}\n\n/**\n * Writes JSON to file\n */\nexport function writeDeployInfo(path: string, data: DeployedDiamondData) {\n const validated = DeployedDiamondDataSchema.parse(data);\n writeJsonSync(path, validated, { spaces: 2 });\n}\n\n/**\n * Update deployment JSON file\n */\nexport function updateDeployInfo(path: string, updater: (data: DeployedDiamondData) => void) {\n const data = readDeployFile(path);\n updater(data);\n writeDeployInfo(path, data);\n}\n\n/**\n * Deletes the deployment file\n */\nexport function deleteDeployInfo(path: string) {\n if (pathExistsSync(path)) {\n removeSync(path);\n }\n}\n\n/**\n * Validates the Deployment File without loading it.\n * @param path \n * @returns \n */\nexport function validateDeployFile(path: string): boolean {\n try {\n if (!pathExistsSync(path)) {\n console.log(`Deployment file not found: ${path}`);\n return false;\n }\n const raw = readJsonSync(path);\n DeployedDiamondDataSchema.parse(raw);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function loadFacetsConfig(\n deploymentsPath: string,\n diamondName: string\n): DeployConfig {\n const file = join(deploymentsPath, diamondName, `${diamondName}.config.json`);\n const valid = validateDeployConfig(file);\n\n const facets = readDeployConfig(file);\n return facets;\n}\n\n/**\n * Loads and validates the facets config <diamondName>.config.json file.\n * @param filePath - The path to the facets file.\n * @returns The parsed and validated facets object.\n */\nexport const readDeployConfig = (filePath: string): DeployConfig => {\n try {\n const fullPath = resolvePath(filePath);\n\n // Read the JSON file\n const raw = readJsonSync(fullPath);\n\n // Validate and parse the JSON data\n return DeployConfigSchema.parse(raw);\n } catch (e) {\n console.error('Failed to load facets:', e);\n throw e;\n }\n};\n\n/**\n * Saves the Diamond Config object to a file.\n * @param filePath - The path to the facets file.\n * @param data - The facets object to save.\n */\nexport const saveDeployConfig = (filePath: string, data: DeployConfig): void => {\n const fullPath = resolvePath(filePath);\n ensureFileSync(fullPath);\n writeJsonSync(fullPath, data, { spaces: 2 });\n};\n\n/**\n * Updates a specific facet in the facets file.\n * @param filePath - The path to the facets file.\n * @param facetKey - The key of the facet to update.\n * @param update - The partial update to apply to the facet.\n * @returns The updated facets object.\n */\nexport const updateFacetConfig = (\n filePath: string,\n facetKey: string,\n update: Partial<DeployConfig[\"facets\"][string]>\n): DeployConfig => {\n const deployConfig = readDeployConfig(filePath);\n deployConfig.facets[facetKey] = {\n ...(deployConfig.facets[facetKey] || {}),\n ...update,\n };\n saveDeployConfig(filePath, deployConfig);\n return deployConfig;\n};\n\n/**\n * Deletes a specific facet from the facets file.\n * @param filePath - The path to the facets file.\n * @param facetKey - The key of the facet to delete.\n * @returns The updated facets object.\n */\nexport const deleteFacet = (filePath: string, facetKey: string): DeployConfig => {\n const deployConfig = readDeployConfig(filePath);\n delete deployConfig.facets[facetKey];\n saveDeployConfig(filePath, deployConfig);\n return deployConfig;\n};\n\n/**\n * Validates that the facets file exists, is valid JSON, and conforms to the schema.\n * @param filePath - The path to the facets file.\n * @returns A boolean indicating whether the file is valid.\n */\nexport const validateDeployConfig = (filePath: string): boolean => {\n try {\n const fullPath = resolvePath(filePath);\n\n // Check if the file exists\n if (!existsSync(fullPath)) {\n console.error(`Validation failed: File does not exist at path \"${filePath}\"`);\n return false;\n }\n\n // Read the file and parse it as JSON\n const raw = readJsonSync(fullPath);\n\n // Validate the JSON against the schema\n DeployConfigSchema.parse(raw);\n\n // If all checks pass, return true\n return true;\n } catch (e) {\n console.error('Validation failed:', e);\n return false;\n }\n}"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prismaDBHandler.d.ts","sourceRoot":"","sources":["../../src/repositories/prismaDBHandler.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prismaDBHandler.js","sourceRoot":"","sources":["../../src/repositories/prismaDBHandler.ts"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,qCAAqC;AACrC,kEAAkE;;AAElE,kHAAkH;AAClH,wDAAwD;AACxD,uDAAuD;AACvD,QAAQ;AACR,gDAAgD;AAChD,IAAI","sourcesContent":["// // databaseHandler.ts (Prisma example)\n// import { prisma } from './prisma';\n// import { DeployedDiamondData, DeployConfig } from '../schemas';\n\n// export async function readDeployedDiamondData(network: string, diamond: string): Promise<DeployedDiamondData> {\n// const record = await prisma.deployment.findUnique({\n// where: { network_diamond: { network, diamond } }\n// });\n// return record?.info as DeployedDiamondData;\n// }\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolution/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resolution/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC","sourcesContent":["export * from './selectorResolution';\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"selectorResolution.d.ts","sourceRoot":"","sources":["../../src/resolution/selectorResolution.ts"],"names":[],"mappings":"AACA,OAAO,EACN,6BAA6B,EAC7B,iBAAiB,EAEjB,MAAM,UAAU,CAAC;AAElB;;;;;;;;;;;;;;;;GAgBG;AAEH,yFAAyF;AACzF,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC;AAE1E;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CACtC,MAAM,EACN;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAChE,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACpC,cAAc,EAAE,MAAM,EAAE,EACxB,cAAc,EAAE,MAAM,EAAE,EACxB,aAAa,EAAE,MAAM,EAAE,GACrB,MAAM,EAAE,CAaV;AAED,MAAM,WAAW,mBAAmB;IACnC,yFAAyF;IACzF,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,8FAA8F;IAC9F,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,sFAAsF;IACtF,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACxC;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CA0J/E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"selectorResolution.js","sourceRoot":"","sources":["../../src/resolution/selectorResolution.ts"],"names":[],"mappings":"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","sourcesContent":["import { ethers } from 'ethers';\nimport {\n\tFunctionSelectorRegistryEntry,\n\tNewDeployedFacets,\n\tRegistryFacetCutAction,\n} from '../types';\n\n/**\n * Pure selector-resolution core for ERC-2535 diamond deployments.\n *\n * Extracted from `BaseDeploymentStrategy` (M1-E1) so the resolution semantics can be\n * unit-tested without a chain and later promoted into the shared core used by both the\n * deployment strategy and the planned pre-launch config validator.\n *\n * Lifted from the strategy in M1-E1 (behavior-preserving). Status of the original quirks:\n * - the deploy-time `deployInclude` whitelist — **REMOVED in M2-E1**: `deployInclude` is now\n * **additive** (INV-3); a facet keeps its other selectors (the override is resolved below);\n * - the inverted/dead `registryHigherPrioritySplit` (`entry.priority > priority`) — **REMOVED in\n * M3-E3**: it never matched a real conflict; the cases it nominally handled fall through to the\n * `5b2f7af` Replace branch with the identical result;\n * - the `5b2f7af` `Replace`-instead-of-`Add` branch — **verified correct (M3-E1 S-1)**; kept as-is.\n *\n * The module takes NO Hardhat/provider dependency (only `ethers` for selector math).\n */\n\n/** Map<functionSelector, registry entry>. Mirrors `Diamond.functionSelectorRegistry`. */\nexport type SelectorRegistry = Map<string, FunctionSelectorRegistryEntry>;\n\n/**\n * Reserved for M3 upgrade/redeploy reconciliation. Today, prior deployed state is carried\n * by the pre-populated `registry` (entries whose action is `Deployed`). Shape aligned to\n * `DeployedDiamondData.DeployedFacets` to minimise adapter code when M3 wires it in.\n */\nexport type PriorDeployedState = Record<\n\tstring,\n\t{ address?: string; funcSelectors?: string[]; version?: number }\n>;\n\n/**\n * Compute a facet's candidate selectors: its raw ABI selectors **minus `deployExclude`**.\n *\n * `deployInclude` is **additive** (INV-3, M2-E1) — it does NOT reduce the candidate set; a facet keeps\n * its other selectors. The override (force-ownership over a higher-priority facet) and the additive\n * priority resolution both happen in `resolveFunctionSelectorRegistry`. Pure.\n *\n * @param facetSelectors the facet's raw ABI function selectors (4-byte, `0x…`)\n * @param _deployInclude the facet's `deployInclude` signatures — accepted for API symmetry; additive\n * (not used to filter the candidate set)\n * @param deployExclude function signatures to remove\n * @returns the candidate selector list (a new array; the input is not mutated)\n */\nexport function computeFacetSelectors(\n\tfacetSelectors: string[],\n\t_deployInclude: string[],\n\tdeployExclude: string[],\n): string[] {\n\tconst result = [...facetSelectors];\n\n\t// Apply deployExclude (removal) only. deployInclude is additive — it does not filter here.\n\tfor (const excludeSelector of deployExclude) {\n\t\tconst selectorToExclude = ethers.id(excludeSelector).slice(0, 10);\n\t\tconst index = result.indexOf(selectorToExclude);\n\t\tif (index !== -1) {\n\t\t\tresult.splice(index, 1);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport interface ResolveRegistryArgs {\n\t/** The selector registry to resolve into. Mutated IN PLACE (same contract as before). */\n\tregistry: SelectorRegistry;\n\t/** The newly-deployed facets (with addresses, priorities, include/exclude, funcSelectors). */\n\tnewDeployedFacets: NewDeployedFacets;\n\t/** All facet names currently in the deploy config (used to Remove deleted facets). */\n\tfacetNames: string[];\n\t/**\n\t * Reserved for M3 upgrade/redeploy reconciliation. Unused today — prior deployed state\n\t * is carried by the pre-populated `registry` (entries with action `Deployed`).\n\t */\n\tpriorDeployedState?: PriorDeployedState;\n}\n\n/**\n * Resolve ownership of every function selector across the newly-deployed facets and write\n * the result (`Add`/`Replace`/`Remove`/`Deployed` actions) into `registry` **in place**.\n * Pure — no Hardhat/provider. Extracted verbatim from\n * `BaseDeploymentStrategy.updateFunctionSelectorRegistryTasks`.\n */\nexport function resolveFunctionSelectorRegistry(args: ResolveRegistryArgs): void {\n\tconst { registry, newDeployedFacets, facetNames } = args;\n\tconst zeroAddress = ethers.ZeroAddress;\n\n\tconst newDeployedFacetsByPriority = Object.entries(newDeployedFacets).sort(\n\t\t([, a], [, b]) => (a.priority || 1000) - (b.priority || 1000),\n\t);\n\n\tfor (const [newFacetName, newFacetData] of newDeployedFacetsByPriority) {\n\t\tconst currentFacetAddress = newFacetData.address;\n\t\tconst priority: number = newFacetData.priority;\n\t\tconst includeFuncSelectors: string[] = newFacetData.deployInclude || [];\n\t\tconst excludeFuncSelectors: string[] = newFacetData.deployExclude || [];\n\n\t\t// Convert function signatures to selectors\n\t\tconst includeFuncSelectorsAsSelectors = includeFuncSelectors.map((sig) =>\n\t\t\tethers.id(sig).slice(0, 10),\n\t\t);\n\t\tconst excludeFuncSelectorsAsSelectors = excludeFuncSelectors.map((sig) =>\n\t\t\tethers.id(sig).slice(0, 10),\n\t\t);\n\n\t\t// Initialize funcSelectors if not present\n\t\tif (!newFacetData.funcSelectors) {\n\t\t\tnewFacetData.funcSelectors = [];\n\t\t}\n\t\tconst functionSelectors: string[] = newFacetData.funcSelectors;\n\n\t\t/* ------------------ Exclusion Filter ------------------ */\n\t\tfor (const excludeFuncSelector of excludeFuncSelectorsAsSelectors) {\n\t\t\t// remove from the facets functionSelectors\n\t\t\tif (functionSelectors.includes(excludeFuncSelector)) {\n\t\t\t\tfunctionSelectors.splice(functionSelectors.indexOf(excludeFuncSelector), 1);\n\t\t\t}\n\t\t\t// update action to remove if excluded from registry where a previous deployment associated with facetname\n\t\t\tif (\n\t\t\t\tregistry.has(excludeFuncSelector) &&\n\t\t\t\tregistry.get(excludeFuncSelector)?.facetName === newFacetName\n\t\t\t) {\n\t\t\t\tconst existing = registry.get(excludeFuncSelector);\n\t\t\t\tif (existing?.facetName === newFacetName) {\n\t\t\t\t\tregistry.set(excludeFuncSelector, {\n\t\t\t\t\t\tpriority: priority,\n\t\t\t\t\t\t// EIP-2535: a Remove cut MUST use address(0) (M3-E2 fix for M3-E1 S-3 —\n\t\t\t\t\t\t// was currentFacetAddress, which reverts on-chain on deployExclude-on-upgrade).\n\t\t\t\t\t\taddress: zeroAddress,\n\t\t\t\t\t\taction: RegistryFacetCutAction.Remove,\n\t\t\t\t\t\tfacetName: newFacetName,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/* ------------------ Inclusion Override Filter ------------------ */\n\t\tfor (const includeFuncSelector of includeFuncSelectorsAsSelectors) {\n\t\t\tconst existingEntry = registry.get(includeFuncSelector);\n\t\t\tif (\n\t\t\t\texistingEntry?.address &&\n\t\t\t\texistingEntry.address !== currentFacetAddress &&\n\t\t\t\texistingEntry.action !== RegistryFacetCutAction.Add\n\t\t\t) {\n\t\t\t\t// Selector already registered/deployed at a different facet address — a selector moved\n\t\t\t\t// facets, or a redeployed facet at a new address (the upgrade case; verified M3-E1 S-1).\n\t\t\t\t// Reconcile -> Replace, not Add (which would revert \"Can't add function that already\n\t\t\t\t// exists\"). Subsumes the removed dead higherPrioritySplit branch (M3-E3).\n\t\t\t\tregistry.set(includeFuncSelector, {\n\t\t\t\t\tpriority: priority,\n\t\t\t\t\taddress: currentFacetAddress,\n\t\t\t\t\taction: RegistryFacetCutAction.Replace,\n\t\t\t\t\tfacetName: newFacetName,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// Add to the registry\n\t\t\t\tregistry.set(includeFuncSelector, {\n\t\t\t\t\tpriority: priority,\n\t\t\t\t\taddress: currentFacetAddress,\n\t\t\t\t\taction: RegistryFacetCutAction.Add,\n\t\t\t\t\tfacetName: newFacetName,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// remove from the funcSels so it is not modified in Priority Resolution Pass\n\t\t\tconst existing = newDeployedFacets[newFacetName];\n\t\t\tif (\n\t\t\t\texisting &&\n\t\t\t\texisting.funcSelectors &&\n\t\t\t\texisting.funcSelectors.includes(includeFuncSelector)\n\t\t\t) {\n\t\t\t\texisting.funcSelectors.splice(\n\t\t\t\t\texisting.funcSelectors.indexOf(includeFuncSelector),\n\t\t\t\t\t1,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t/* ------------------ Replace Facet and Priority Resolution Pass ------------- */\n\t\tfor (const selector of functionSelectors) {\n\t\t\tconst existing = registry.get(selector);\n\t\t\tif (existing) {\n\t\t\t\tconst existingPriority = existing.priority;\n\n\t\t\t\tif (existing.facetName === newFacetName) {\n\t\t\t\t\t// Same facet, update the address\n\t\t\t\t\tregistry.set(selector, {\n\t\t\t\t\t\tpriority: priority,\n\t\t\t\t\t\taddress: currentFacetAddress,\n\t\t\t\t\t\taction: RegistryFacetCutAction.Replace,\n\t\t\t\t\t\tfacetName: newFacetName,\n\t\t\t\t\t});\n\t\t\t\t} else if (priority < existingPriority) {\n\t\t\t\t\t// Current facet has higher priority, Replace it\n\t\t\t\t\tregistry.set(selector, {\n\t\t\t\t\t\tpriority: priority,\n\t\t\t\t\t\taddress: currentFacetAddress,\n\t\t\t\t\t\taction: RegistryFacetCutAction.Replace,\n\t\t\t\t\t\tfacetName: newFacetName,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// New selector, simply add\n\t\t\t\tregistry.set(selector, {\n\t\t\t\t\tpriority: priority,\n\t\t\t\t\taddress: currentFacetAddress,\n\t\t\t\t\taction: RegistryFacetCutAction.Add,\n\t\t\t\t\tfacetName: newFacetName,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/* ---------------- Remove Old Function Selectors from facets -------------- */\n\t\t// Set functionselectors with the newFacetName and still different address to Remove\n\t\tfor (const [selector, entry] of registry.entries()) {\n\t\t\tif (entry.facetName === newFacetName && entry.address !== currentFacetAddress) {\n\t\t\t\tregistry.set(selector, {\n\t\t\t\t\tpriority: entry.priority,\n\t\t\t\t\taddress: zeroAddress,\n\t\t\t\t\taction: RegistryFacetCutAction.Remove,\n\t\t\t\t\tfacetName: newFacetName,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t// `Remove` function selectors for facets no longer in config (deleted facets)\n\tfor (const [selector, entry] of registry.entries()) {\n\t\tif (!facetNames.includes(entry.facetName)) {\n\t\t\tregistry.set(selector, {\n\t\t\t\tpriority: entry.priority,\n\t\t\t\taddress: zeroAddress,\n\t\t\t\taction: RegistryFacetCutAction.Remove,\n\t\t\t\tfacetName: entry.facetName,\n\t\t\t});\n\t\t}\n\t}\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeploymentSchema.d.ts","sourceRoot":"","sources":["../../src/schemas/DeploymentSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,mBAAmB;;;;;;iBAM9B,CAAC;AAGH,eAAO,MAAM,oBAAoB;;;;;;kBAA4C,CAAC;AAG9E,eAAO,MAAM,uBAAuB,uCAAmC,CAAC;AAGxE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;iBAOpC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;iBAOnC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;iBAK5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;kBAA0C,CAAC;AAE1E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;iBAK7B,CAAC;AAGH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAG9D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeploymentSchema.js","sourceRoot":"","sources":["../../src/schemas/DeploymentSchema.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\n\n// Schema for a single facet's deployment information\nexport const DeployedFacetSchema = z.object({\n\taddress: z.string().optional(), // Address of the deployed facet\n\ttx_hash: z.string().optional(), // Transaction hash of the deployment\n\tversion: z.number().optional(), // Version of the facet\n\tfuncSelectors: z.array(z.string()).optional(), // Function selectors for the facet\n\tverified: z.boolean().optional(), // Whether the facet is verified\n});\n\n// Schema for all deployed facets\nexport const DeployedFacetsSchema = z.record(z.string(), DeployedFacetSchema);\n\n// Schema for external libraries\nexport const ExternalLibrariesSchema = z.record(z.string(), z.string());\n\n// Schema for the network deployment information\nexport const DeployedDiamondDataSchema = z.object({\n\tDiamondAddress: z.string().optional(), // Address of the deployed diamond\n\tDeployerAddress: z.string().optional(), // Address of the deployer\n\t// FacetDeployedInfo: FacetDeployedInfoRecordSchema.optional(), // Information about deployed facets\n\tDeployedFacets: DeployedFacetsSchema.optional(), // Information about deployed facets\n\tExternalLibraries: ExternalLibrariesSchema.optional(), // External libraries used in the deployment\n\tprotocolVersion: z.number().optional(), // Protocol version\n});\n\n/**\n * Schema for the version information of a facet configuration to be deployed\n */\nexport const FacetVersionConfigSchema = z.object({\n\tdeployInit: z.string().optional(),\n\tupgradeInit: z.string().optional(),\n\tfromVersions: z.array(z.number()).optional(),\n\tcallbacks: z.array(z.string()).optional(),\n\tdeployInclude: z.array(z.string()).optional(),\n\tdeployExclude: z.array(z.string()).optional(),\n});\n\n/**\n * Schema for the deployment information of a single facet\n */\nexport const FacetConfigSchema = z.object({\n\t// Infer TypeScript types from schemas\n\tpriority: z.number(),\n\tlibraries: z.array(z.string()).optional(),\n\tversions: z.record(z.string(), FacetVersionConfigSchema).optional(),\n});\n\n/**\n * Schema for the deployment configuration information of ALL facets to be deployed\n */\nexport const FacetsConfigSchema = z.record(z.string(), FacetConfigSchema);\n\nexport const DeployConfigSchema = z.object({\n\tprotocolVersion: z.number(),\n\tprotocolInitFacet: z.string().optional(),\n\tprotocolCallback: z.string().optional(),\n\tfacets: z.record(z.string(), FacetConfigSchema),\n});\n\n// Inferred types from Zod schemas\nexport type FacetVersionConfig = z.infer<typeof FacetVersionConfigSchema>;\nexport type FacetConfig = z.infer<typeof FacetConfigSchema>;\nexport type FacetsConfig = z.infer<typeof FacetsConfigSchema>;\nexport type DeployConfig = z.infer<typeof DeployConfigSchema>;\n\n// export type FacetsDeployment = z.infer<typeof FacetsConfigSchema>;\nexport type DeployedFacet = z.infer<typeof DeployedFacetSchema>;\nexport type DeployedFacets = z.infer<typeof DeployedFacetsSchema>;\nexport type DeployedDiamondData = z.infer<typeof DeployedDiamondDataSchema>;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC","sourcesContent":["export * from './DeploymentSchema';\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseDeploymentStrategy.d.ts","sourceRoot":"","sources":["../../src/strategies/BaseDeploymentStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,iCAAiC,CAAC;AAIzC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAGN,SAAS,EAKT,MAAM,UAAU,CAAC;AAQlB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,sBAAuB,YAAW,kBAAkB;IACpD,SAAS,CAAC,OAAO,EAAE,OAAO;gBAAhB,OAAO,GAAE,OAAe;IAExC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cASvC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAEhE,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cAWpC,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA2E7D,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cASxC,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAEjE,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cAWtC,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cAInC,iBAAiB,CAAC,OAAO,EAAE,OAAO;IAsG5C,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cAYvC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAGhE,iCAAiC,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cAUxD,sCAAsC,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAEjF,8BAA8B,CAAC,OAAO,EAAE,OAAO;cAWrC,mCAAmC,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9E,kCAAkC,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cAS3C,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpE,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cAWxC,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA8FjE,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cAS5C,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAErE,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAyC5D,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;IAmBlD,2BAA2B,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhE,gCAAgC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2DjF,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1D,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cAI7C,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCtE,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cAQjD,+BAA+B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAOhF"}
|