@diamondslab/diamonds 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/README.md +618 -0
  2. package/diamonds/README.md +3 -0
  3. package/dist/core/CallbackManager.d.ts +13 -0
  4. package/dist/core/CallbackManager.d.ts.map +1 -0
  5. package/dist/core/CallbackManager.js +95 -0
  6. package/dist/core/CallbackManager.js.map +1 -0
  7. package/dist/core/DeploymentManager.d.ts +10 -0
  8. package/dist/core/DeploymentManager.d.ts.map +1 -0
  9. package/dist/core/DeploymentManager.js +50 -0
  10. package/dist/core/DeploymentManager.js.map +1 -0
  11. package/dist/core/Diamond.d.ts +58 -0
  12. package/dist/core/Diamond.d.ts.map +1 -0
  13. package/dist/core/Diamond.js +146 -0
  14. package/dist/core/Diamond.js.map +1 -0
  15. package/dist/core/DiamondDeployer.d.ts +10 -0
  16. package/dist/core/DiamondDeployer.d.ts.map +1 -0
  17. package/dist/core/DiamondDeployer.js +33 -0
  18. package/dist/core/DiamondDeployer.js.map +1 -0
  19. package/dist/core/index.d.ts +5 -0
  20. package/dist/core/index.d.ts.map +1 -0
  21. package/dist/core/index.js +12 -0
  22. package/dist/core/index.js.map +1 -0
  23. package/dist/index.d.ts +6 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +22 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/repositories/DBDeploymentRepository.d.ts +1 -0
  28. package/dist/repositories/DBDeploymentRepository.d.ts.map +1 -0
  29. package/dist/repositories/DBDeploymentRepository.js +20 -0
  30. package/dist/repositories/DBDeploymentRepository.js.map +1 -0
  31. package/dist/repositories/DeploymentRepository.d.ts +8 -0
  32. package/dist/repositories/DeploymentRepository.d.ts.map +1 -0
  33. package/dist/repositories/DeploymentRepository.js +7 -0
  34. package/dist/repositories/DeploymentRepository.js.map +1 -0
  35. package/dist/repositories/FileDeploymentRepository.d.ts +18 -0
  36. package/dist/repositories/FileDeploymentRepository.d.ts.map +1 -0
  37. package/dist/repositories/FileDeploymentRepository.js +58 -0
  38. package/dist/repositories/FileDeploymentRepository.js.map +1 -0
  39. package/dist/repositories/databaseHandler.d.ts +1 -0
  40. package/dist/repositories/databaseHandler.d.ts.map +1 -0
  41. package/dist/repositories/databaseHandler.js +13 -0
  42. package/dist/repositories/databaseHandler.js.map +1 -0
  43. package/dist/repositories/index.d.ts +4 -0
  44. package/dist/repositories/index.d.ts.map +1 -0
  45. package/dist/repositories/index.js +20 -0
  46. package/dist/repositories/index.js.map +1 -0
  47. package/dist/repositories/jsonFileHandler.d.ts +81 -0
  48. package/dist/repositories/jsonFileHandler.d.ts.map +1 -0
  49. package/dist/repositories/jsonFileHandler.js +223 -0
  50. package/dist/repositories/jsonFileHandler.js.map +1 -0
  51. package/dist/repositories/prismaDBHandler.d.ts +1 -0
  52. package/dist/repositories/prismaDBHandler.d.ts.map +1 -0
  53. package/dist/repositories/prismaDBHandler.js +11 -0
  54. package/dist/repositories/prismaDBHandler.js.map +1 -0
  55. package/dist/schemas/DeploymentSchema.d.ts +309 -0
  56. package/dist/schemas/DeploymentSchema.d.ts.map +1 -0
  57. package/dist/schemas/DeploymentSchema.js +56 -0
  58. package/dist/schemas/DeploymentSchema.js.map +1 -0
  59. package/dist/schemas/index.d.ts +2 -0
  60. package/dist/schemas/index.d.ts.map +1 -0
  61. package/dist/schemas/index.js +18 -0
  62. package/dist/schemas/index.js.map +1 -0
  63. package/dist/strategies/BaseDeploymentStrategy.d.ts +41 -0
  64. package/dist/strategies/BaseDeploymentStrategy.d.ts.map +1 -0
  65. package/dist/strategies/BaseDeploymentStrategy.js +545 -0
  66. package/dist/strategies/BaseDeploymentStrategy.js.map +1 -0
  67. package/dist/strategies/DeploymentStrategy.d.ts +19 -0
  68. package/dist/strategies/DeploymentStrategy.d.ts.map +1 -0
  69. package/dist/strategies/DeploymentStrategy.js +3 -0
  70. package/dist/strategies/DeploymentStrategy.js.map +1 -0
  71. package/dist/strategies/LocalDeploymentStrategy.d.ts +4 -0
  72. package/dist/strategies/LocalDeploymentStrategy.d.ts.map +1 -0
  73. package/dist/strategies/LocalDeploymentStrategy.js +8 -0
  74. package/dist/strategies/LocalDeploymentStrategy.js.map +1 -0
  75. package/dist/strategies/OZDefenderDeploymentStrategy.d.ts +62 -0
  76. package/dist/strategies/OZDefenderDeploymentStrategy.d.ts.map +1 -0
  77. package/dist/strategies/OZDefenderDeploymentStrategy.js +757 -0
  78. package/dist/strategies/OZDefenderDeploymentStrategy.js.map +1 -0
  79. package/dist/strategies/RPCDeploymentStrategy.d.ts +139 -0
  80. package/dist/strategies/RPCDeploymentStrategy.d.ts.map +1 -0
  81. package/dist/strategies/RPCDeploymentStrategy.js +710 -0
  82. package/dist/strategies/RPCDeploymentStrategy.js.map +1 -0
  83. package/dist/strategies/index.d.ts +6 -0
  84. package/dist/strategies/index.d.ts.map +1 -0
  85. package/dist/strategies/index.js +12 -0
  86. package/dist/strategies/index.js.map +1 -0
  87. package/dist/types/config.d.ts +26 -0
  88. package/dist/types/config.d.ts.map +1 -0
  89. package/dist/types/config.js +3 -0
  90. package/dist/types/config.js.map +1 -0
  91. package/dist/types/defender.d.ts +22 -0
  92. package/dist/types/defender.d.ts.map +1 -0
  93. package/dist/types/defender.js +3 -0
  94. package/dist/types/defender.js.map +1 -0
  95. package/dist/types/deployments.d.ts +71 -0
  96. package/dist/types/deployments.d.ts.map +1 -0
  97. package/dist/types/deployments.js +20 -0
  98. package/dist/types/deployments.js.map +1 -0
  99. package/dist/types/index.d.ts +5 -0
  100. package/dist/types/index.d.ts.map +1 -0
  101. package/dist/types/index.js +21 -0
  102. package/dist/types/index.js.map +1 -0
  103. package/dist/types/rpc.d.ts +35 -0
  104. package/dist/types/rpc.d.ts.map +1 -0
  105. package/dist/types/rpc.js +3 -0
  106. package/dist/types/rpc.js.map +1 -0
  107. package/dist/utils/common.d.ts +20 -0
  108. package/dist/utils/common.d.ts.map +1 -0
  109. package/dist/utils/common.js +45 -0
  110. package/dist/utils/common.js.map +1 -0
  111. package/dist/utils/configurationResolver.d.ts +30 -0
  112. package/dist/utils/configurationResolver.d.ts.map +1 -0
  113. package/dist/utils/configurationResolver.js +151 -0
  114. package/dist/utils/configurationResolver.js.map +1 -0
  115. package/dist/utils/contractMapping.d.ts +29 -0
  116. package/dist/utils/contractMapping.d.ts.map +1 -0
  117. package/dist/utils/contractMapping.js +224 -0
  118. package/dist/utils/contractMapping.js.map +1 -0
  119. package/dist/utils/defenderClients.d.ts +5 -0
  120. package/dist/utils/defenderClients.d.ts.map +1 -0
  121. package/dist/utils/defenderClients.js +21 -0
  122. package/dist/utils/defenderClients.js.map +1 -0
  123. package/dist/utils/defenderStore.d.ts +14 -0
  124. package/dist/utils/defenderStore.d.ts.map +1 -0
  125. package/dist/utils/defenderStore.js +92 -0
  126. package/dist/utils/defenderStore.js.map +1 -0
  127. package/dist/utils/diamondAbiGenerator.d.ts +113 -0
  128. package/dist/utils/diamondAbiGenerator.d.ts.map +1 -0
  129. package/dist/utils/diamondAbiGenerator.js +415 -0
  130. package/dist/utils/diamondAbiGenerator.js.map +1 -0
  131. package/dist/utils/diffDeployedFacets.d.ts +26 -0
  132. package/dist/utils/diffDeployedFacets.d.ts.map +1 -0
  133. package/dist/utils/diffDeployedFacets.js +106 -0
  134. package/dist/utils/diffDeployedFacets.js.map +1 -0
  135. package/dist/utils/index.d.ts +16 -0
  136. package/dist/utils/index.d.ts.map +1 -0
  137. package/dist/utils/index.js +35 -0
  138. package/dist/utils/index.js.map +1 -0
  139. package/dist/utils/loupe.d.ts +44 -0
  140. package/dist/utils/loupe.d.ts.map +1 -0
  141. package/dist/utils/loupe.js +128 -0
  142. package/dist/utils/loupe.js.map +1 -0
  143. package/dist/utils/rpcStore.d.ts +36 -0
  144. package/dist/utils/rpcStore.d.ts.map +1 -0
  145. package/dist/utils/rpcStore.js +166 -0
  146. package/dist/utils/rpcStore.js.map +1 -0
  147. package/dist/utils/signer.d.ts +36 -0
  148. package/dist/utils/signer.d.ts.map +1 -0
  149. package/dist/utils/signer.js +91 -0
  150. package/dist/utils/signer.js.map +1 -0
  151. package/dist/utils/txlogging.d.ts +13 -0
  152. package/dist/utils/txlogging.d.ts.map +1 -0
  153. package/dist/utils/txlogging.js +87 -0
  154. package/dist/utils/txlogging.js.map +1 -0
  155. package/dist/utils/workspaceSetup.d.ts +32 -0
  156. package/dist/utils/workspaceSetup.d.ts.map +1 -0
  157. package/dist/utils/workspaceSetup.js +311 -0
  158. package/dist/utils/workspaceSetup.js.map +1 -0
  159. package/docs/DIAMOND_ABI_CONFIGURATION_SUMMARY.md +40 -0
  160. package/docs/DIAMOND_ABI_GENERATION.md +220 -0
  161. package/docs/DIAMOND_ABI_GENERATOR_EXAMPLES.md +1204 -0
  162. package/docs/DIAMOND_ABI_GENERATOR_IMPLEMENTATION.md +947 -0
  163. package/docs/DIAMOND_ABI_GENERATOR_QUICK_REFERENCE.md +336 -0
  164. package/docs/README-DEFENDER.md +394 -0
  165. package/docs/README_DIAMOND_ABI_GENERATOR.md +303 -0
  166. package/docs/ROADMAP.md +250 -0
  167. package/docs/assets/image.png +0 -0
  168. package/docs/defender-integration.md +451 -0
  169. package/docs/diamond_module-BaseStrategy_design-v2.uxf +247 -0
  170. package/docs/diamond_module-BaseStrategy_design.uxf +272 -0
  171. package/docs/monitoring-troubleshooting.md +556 -0
  172. package/docs/testing-guide.md +713 -0
  173. package/examples/Diamond_Config_and_Deployment_examples/diamonds/ProxyDiamond/callbacks/ERC20ProxyFacet.ts +31 -0
  174. package/examples/Diamond_Config_and_Deployment_examples/diamonds/ProxyDiamond/proxydiamond.config.json +27 -0
  175. package/examples/Local_Hardhat_Deployer_Script_example/LocalDiamondDeployer.ts +180 -0
  176. package/examples/OZ_Defender_Deployer_Script_example/OZDiamondDeployer.ts +107 -0
  177. package/examples/OZ_Defender_Deployer_Script_example/run-oz-deploy.ts +17 -0
  178. package/examples/Test_examples/ProxyDiamondDeployment.test.ts +202 -0
  179. package/examples/defender-deployment/.env.example +35 -0
  180. package/examples/defender-deployment/README.md +415 -0
  181. package/examples/defender-deployment/contracts/ExampleDiamond.sol +41 -0
  182. package/examples/defender-deployment/contracts/ExampleFacet1.sol +84 -0
  183. package/examples/defender-deployment/contracts/ExampleFacet2.sol +104 -0
  184. package/examples/defender-deployment/contracts/UpgradeFacet.sol +92 -0
  185. package/examples/defender-deployment/deploy-script.ts +170 -0
  186. package/examples/defender-deployment/diamond-config.json +36 -0
  187. package/examples/defender-deployment/upgrade-script.ts +237 -0
  188. package/examples/hardhat-diamonds-config.example.ts +41 -0
  189. package/package.json +228 -0
  190. package/src/core/CallbackManager.ts +70 -0
  191. package/src/core/DeploymentManager.ts +64 -0
  192. package/src/core/Diamond.ts +197 -0
  193. package/src/core/DiamondDeployer.ts +36 -0
  194. package/src/core/index.ts +4 -0
  195. package/src/index.ts +5 -0
  196. package/src/repositories/DBDeploymentRepository.ts +22 -0
  197. package/src/repositories/DeploymentRepository.ts +12 -0
  198. package/src/repositories/FileDeploymentRepository.ts +67 -0
  199. package/src/repositories/databaseHandler.ts +14 -0
  200. package/src/repositories/index.ts +4 -0
  201. package/src/repositories/jsonFileHandler.ts +252 -0
  202. package/src/repositories/prismaDBHandler.ts +10 -0
  203. package/src/schemas/DeploymentSchema.ts +71 -0
  204. package/src/schemas/index.ts +1 -0
  205. package/src/strategies/BaseDeploymentStrategy.ts +649 -0
  206. package/src/strategies/DeploymentStrategy.ts +25 -0
  207. package/src/strategies/LocalDeploymentStrategy.ts +5 -0
  208. package/src/strategies/OZDefenderDeploymentStrategy.ts +849 -0
  209. package/src/strategies/RPCDeploymentStrategy.ts +881 -0
  210. package/src/strategies/index.ts +5 -0
  211. package/src/types/config.ts +34 -0
  212. package/src/types/defender.ts +24 -0
  213. package/src/types/deployments.ts +102 -0
  214. package/src/types/index.ts +4 -0
  215. package/src/types/rpc.ts +37 -0
  216. package/src/utils/common.ts +54 -0
  217. package/src/utils/configurationResolver.ts +141 -0
  218. package/src/utils/contractMapping.ts +220 -0
  219. package/src/utils/defenderClients.ts +22 -0
  220. package/src/utils/defenderStore.ts +62 -0
  221. package/src/utils/diamondAbiGenerator.ts +523 -0
  222. package/src/utils/diffDeployedFacets.ts +131 -0
  223. package/src/utils/index.ts +15 -0
  224. package/src/utils/loupe.ts +159 -0
  225. package/src/utils/rpcStore.ts +152 -0
  226. package/src/utils/signer.ts +93 -0
  227. package/src/utils/txlogging.ts +97 -0
  228. package/src/utils/workspaceSetup.ts +315 -0
  229. package/test/README.md +136 -0
@@ -0,0 +1,545 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BaseDeploymentStrategy = void 0;
7
+ require("@nomicfoundation/hardhat-ethers");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const ethers_1 = require("ethers");
10
+ const hardhat_1 = __importDefault(require("hardhat"));
11
+ const types_1 = require("../types");
12
+ const utils_1 = require("../utils");
13
+ class BaseDeploymentStrategy {
14
+ verbose;
15
+ constructor(verbose = false) {
16
+ this.verbose = verbose;
17
+ }
18
+ async preDeployDiamond(diamond) {
19
+ if (this.verbose) {
20
+ console.log(chalk_1.default.gray(`🔧 Running pre-deploy logic for diamond ${diamond.diamondName}`));
21
+ }
22
+ await this.preDeployDiamondTasks(diamond);
23
+ }
24
+ async preDeployDiamondTasks(diamond) { }
25
+ async deployDiamond(diamond) {
26
+ if (this.verbose) {
27
+ console.log(chalk_1.default.yellowBright(`\n🪓 Deploying diamond ${diamond.diamondName} with DiamondCutFacet...`));
28
+ }
29
+ await this.deployDiamondTasks(diamond);
30
+ }
31
+ async deployDiamondTasks(diamond) {
32
+ console.log(chalk_1.default.blueBright(`🚀 Explicitly deploying DiamondCutFacet and Diamond for ${diamond.diamondName}`));
33
+ // Deploy the DiamondCutFacet - use contract mapping to get correct name
34
+ const diamondCutContractName = await (0, utils_1.getContractName)("DiamondCutFacet", diamond);
35
+ const diamondCutFactory = await hardhat_1.default.ethers.getContractFactory(diamondCutContractName, diamond.getSigner());
36
+ const diamondCutFacet = await diamondCutFactory.deploy();
37
+ await diamondCutFacet.waitForDeployment();
38
+ // Deploy the Diamond - use contract mapping to get correct name
39
+ const diamondContractName = await (0, utils_1.getDiamondContractName)(diamond.diamondName, diamond);
40
+ const diamondFactory = await hardhat_1.default.ethers.getContractFactory(diamondContractName, diamond.getSigner());
41
+ const diamondContract = await diamondFactory.deploy(await diamond.getSigner().getAddress(), await diamondCutFacet.getAddress());
42
+ await diamondContract.waitForDeployment();
43
+ // Get function selectors for DiamondCutFacet
44
+ const diamondCutFacetFunctionSelectors = [];
45
+ diamondCutFacet.interface.forEachFunction((func) => {
46
+ diamondCutFacetFunctionSelectors.push(func.selector);
47
+ });
48
+ // Get addresses for later use
49
+ const diamondCutFacetAddress = await diamondCutFacet.getAddress();
50
+ const diamondContractAddress = await diamondContract.getAddress();
51
+ // Register the DiamondCutFacet function selectors
52
+ const diamondCutFacetSelectorsRegistry = diamondCutFacetFunctionSelectors.reduce((acc, selector) => {
53
+ acc[selector] = {
54
+ facetName: "DiamondCutFacet",
55
+ priority: diamond.getFacetsConfig()?.DiamondCutFacet?.priority || 1000, // Default priority if not set
56
+ address: diamondCutFacetAddress,
57
+ action: types_1.RegistryFacetCutAction.Deployed,
58
+ };
59
+ return acc;
60
+ }, {});
61
+ diamond.registerFunctionSelectors(diamondCutFacetSelectorsRegistry);
62
+ // Update deployed diamond data
63
+ const deployedDiamondData = diamond.getDeployedDiamondData();
64
+ deployedDiamondData.DeployerAddress = await diamond.getSigner().getAddress();
65
+ deployedDiamondData.DiamondAddress = diamondContractAddress;
66
+ deployedDiamondData.DeployedFacets = deployedDiamondData.DeployedFacets || {};
67
+ deployedDiamondData.DeployedFacets["DiamondCutFacet"] = {
68
+ address: diamondCutFacetAddress,
69
+ tx_hash: diamondCutFacet.deploymentTransaction()?.hash || "",
70
+ version: 0,
71
+ funcSelectors: diamondCutFacetFunctionSelectors,
72
+ };
73
+ diamond.updateDeployedDiamondData(deployedDiamondData);
74
+ console.log(chalk_1.default.green(`✅ Diamond deployed at ${await diamondContract.getAddress()}, DiamondCutFacet at ${await diamondCutFacet.getAddress()}`));
75
+ }
76
+ async postDeployDiamond(diamond) {
77
+ if (this.verbose) {
78
+ console.log(chalk_1.default.gray(`✅ Running post-deploy logic for diamond ${diamond.diamondName}`));
79
+ }
80
+ await this.postDeployDiamondTasks(diamond);
81
+ }
82
+ async postDeployDiamondTasks(diamond) { }
83
+ async preDeployFacets(diamond) {
84
+ if (this.verbose) {
85
+ console.log(chalk_1.default.gray(`🔧 Running pre-deploy logic for facets of diamond ${diamond.diamondName}`));
86
+ }
87
+ await this.preDeployFacetsTasks(diamond);
88
+ }
89
+ async preDeployFacetsTasks(diamond) {
90
+ // This can be overridden by subclasses for custom pre-deploy logic
91
+ if (this.verbose) {
92
+ console.log(chalk_1.default.gray(`🔧 No pre-deploy tasks defined for facets of diamond ${diamond.diamondName}`));
93
+ }
94
+ }
95
+ async deployFacets(diamond) {
96
+ await this.deployFacetsTasks(diamond);
97
+ }
98
+ async deployFacetsTasks(diamond) {
99
+ const deployConfig = diamond.getDeployConfig();
100
+ const facetsConfig = diamond.getDeployConfig().facets;
101
+ const deployedDiamondData = diamond.getDeployedDiamondData();
102
+ const deployedFacets = deployedDiamondData.DeployedFacets || {};
103
+ const facetCuts = [];
104
+ const sortedFacetNames = Object.keys(deployConfig.facets)
105
+ .sort((a, b) => {
106
+ return (deployConfig.facets[a].priority || 1000) - (deployConfig.facets[b].priority || 1000);
107
+ });
108
+ // Save the facet deployment info
109
+ for (const facetName of sortedFacetNames) {
110
+ const facetConfig = facetsConfig[facetName];
111
+ const deployedVersion = deployedDiamondData.DeployedFacets?.[facetName]?.version ?? -1;
112
+ const availableVersions = Object.keys(facetConfig.versions || {}).map(Number);
113
+ const upgradeVersion = Math.max(...availableVersions);
114
+ if (upgradeVersion > deployedVersion || deployedVersion === -1) {
115
+ if (this.verbose) {
116
+ console.log(chalk_1.default.blueBright(`🚀 Deploying facet: ${facetName} to version ${upgradeVersion}`));
117
+ }
118
+ // Deploy the facet contract - use contract mapping to get correct name
119
+ const signer = diamond.getSigner();
120
+ const facetContractName = await (0, utils_1.getContractName)(facetName, diamond);
121
+ const facetFactory = await hardhat_1.default.ethers.getContractFactory(facetContractName, { signer });
122
+ const facetContract = await facetFactory.deploy();
123
+ await facetContract.waitForDeployment();
124
+ const deployedFacets = new Map();
125
+ const availableVersions = Object.keys(facetConfig.versions ?? {}).map(Number);
126
+ const facetSelectors = [];
127
+ facetContract.interface.forEachFunction((func) => {
128
+ facetSelectors.push(func.selector);
129
+ });
130
+ // Initializer function Registry
131
+ const deployInit = facetConfig.versions?.[upgradeVersion]?.deployInit || "";
132
+ const upgradeInit = facetConfig.versions?.[upgradeVersion]?.upgradeInit || "";
133
+ const initFn = diamond.newDeployment ? deployInit : upgradeInit;
134
+ if (initFn && facetName !== deployConfig.protocolInitFacet) {
135
+ diamond.initializerRegistry.set(facetName, initFn);
136
+ }
137
+ const newFacetData = {
138
+ priority: facetConfig.priority || 1000,
139
+ address: await facetContract.getAddress(),
140
+ tx_hash: facetContract.deploymentTransaction()?.hash || "",
141
+ version: upgradeVersion,
142
+ funcSelectors: facetSelectors,
143
+ deployInclude: facetConfig.versions?.[upgradeVersion]?.deployInclude || [],
144
+ deployExclude: facetConfig.versions?.[upgradeVersion]?.deployExclude || [],
145
+ initFunction: initFn,
146
+ verified: false,
147
+ };
148
+ diamond.updateNewDeployedFacets(facetName, newFacetData);
149
+ console.log(chalk_1.default.cyan(`⛵ ${facetName} deployed at ${await facetContract.getAddress()} with ${facetSelectors.length} selectors.`));
150
+ // Log the deployment transaction and selectors
151
+ if (this.verbose) {
152
+ console.log(chalk_1.default.gray(` Selectors:`), facetSelectors);
153
+ }
154
+ }
155
+ }
156
+ }
157
+ async postDeployFacets(diamond) {
158
+ if (this.verbose) {
159
+ console.log(chalk_1.default.gray(`✅ Running post-deploy logic for facets of diamond ${diamond.diamondName}`));
160
+ }
161
+ await this.postDeployFacetsTasks(diamond);
162
+ }
163
+ // Used by subclasses for facet post-deployment tasks
164
+ async postDeployFacetsTasks(diamond) { }
165
+ // Pre-hook for updating function selector registry (can be overridden by subclasses)
166
+ async preUpdateFunctionSelectorRegistry(diamond) {
167
+ if (this.verbose) {
168
+ console.log(chalk_1.default.gray(`🔧 Running pre-update logic for function selector registry of diamond ${diamond.diamondName}`));
169
+ }
170
+ }
171
+ async preUpdateFunctionSelectorRegistryTasks(diamond) { }
172
+ async updateFunctionSelectorRegistry(diamond) {
173
+ if (this.verbose) {
174
+ console.log(chalk_1.default.yellowBright(`\n🪓 Updating function selector registry for diamond ${diamond.diamondName}...`));
175
+ }
176
+ this.updateFunctionSelectorRegistryTasks(diamond);
177
+ }
178
+ async updateFunctionSelectorRegistryTasks(diamond) {
179
+ const registry = diamond.functionSelectorRegistry;
180
+ const zeroAddress = ethers_1.ethers.ZeroAddress;
181
+ const newDeployedFacets = diamond.getNewDeployedFacets();
182
+ const newDeployedFacetsByPriority = Object.entries(newDeployedFacets).sort(([, a], [, b]) => (a.priority || 1000) - (b.priority || 1000));
183
+ for (const [newFacetName, newFacetData] of newDeployedFacetsByPriority) {
184
+ const currentFacetAddress = newFacetData.address;
185
+ const priority = newFacetData.priority;
186
+ const functionSelectors = newFacetData.funcSelectors || [];
187
+ const includeFuncSelectors = newFacetData.deployInclude || [];
188
+ const excludeFuncSelectors = newFacetData.deployExclude || [];
189
+ /* ------------------ Exclusion Filter ------------------ */
190
+ for (const excludeFuncSelector of excludeFuncSelectors) {
191
+ // remove from the facets functionSelectors
192
+ if (excludeFuncSelector in functionSelectors) {
193
+ functionSelectors.splice(functionSelectors.indexOf(excludeFuncSelector), 1);
194
+ }
195
+ // update action to remove if excluded from registry where a previous deployment associated with facetname
196
+ if (excludeFuncSelector in registry && registry.get(excludeFuncSelector)?.facetName === newFacetName) {
197
+ const existing = registry.get(excludeFuncSelector);
198
+ if (existing && existing.facetName === newFacetName) {
199
+ registry.set(excludeFuncSelector, {
200
+ priority: priority,
201
+ address: currentFacetAddress,
202
+ action: types_1.RegistryFacetCutAction.Remove,
203
+ facetName: newFacetName,
204
+ });
205
+ }
206
+ }
207
+ }
208
+ /* ------------ Higher Priority Split of Registry ------------------ */
209
+ const registryHigherPrioritySplit = Array.from(registry.entries())
210
+ .filter(([_, entry]) => entry.priority > priority)
211
+ .reduce((acc, [selector, entry]) => {
212
+ if (!acc[entry.facetName]) {
213
+ acc[entry.facetName] = [];
214
+ }
215
+ acc[entry.facetName].push(selector);
216
+ return acc;
217
+ }, {});
218
+ /* ------------------ Inclusion Override Filter ------------------ */
219
+ for (const includeFuncSelector of includeFuncSelectors) {
220
+ // Force Replace if already registered by higher priority facet
221
+ if (includeFuncSelector in registryHigherPrioritySplit) {
222
+ const higherPriorityFacet = Object.keys(registryHigherPrioritySplit).find(facetName => {
223
+ return registryHigherPrioritySplit[facetName].includes(includeFuncSelector);
224
+ });
225
+ if (higherPriorityFacet) {
226
+ registry.set(includeFuncSelector, {
227
+ priority: priority,
228
+ address: currentFacetAddress,
229
+ action: types_1.RegistryFacetCutAction.Replace,
230
+ facetName: newFacetName,
231
+ });
232
+ }
233
+ }
234
+ else {
235
+ // Add to the registry
236
+ registry.set(includeFuncSelector, {
237
+ priority: priority,
238
+ address: currentFacetAddress,
239
+ action: types_1.RegistryFacetCutAction.Add,
240
+ facetName: newFacetName,
241
+ });
242
+ }
243
+ // remove from the funcSels so it is not modified in Priority Resolution Pass
244
+ if (includeFuncSelector in newDeployedFacets) {
245
+ const existing = newDeployedFacets[newFacetName];
246
+ if (existing && existing.funcSelectors) {
247
+ existing.funcSelectors.splice(existing.funcSelectors.indexOf(includeFuncSelector), 1);
248
+ }
249
+ }
250
+ }
251
+ /* ------------------ Replace Facet and Priority Resolution Pass ------------- */
252
+ for (const selector of functionSelectors) {
253
+ const existing = registry.get(selector);
254
+ if (existing) {
255
+ const existingPriority = existing.priority;
256
+ if (existing.facetName === newFacetName) {
257
+ // Same facet, update the address
258
+ registry.set(selector, {
259
+ priority: priority,
260
+ address: currentFacetAddress,
261
+ action: types_1.RegistryFacetCutAction.Replace,
262
+ facetName: newFacetName,
263
+ });
264
+ }
265
+ else if (priority < existingPriority) {
266
+ // Current facet has higher priority, Replace it
267
+ registry.set(selector, {
268
+ priority: priority,
269
+ address: currentFacetAddress,
270
+ action: types_1.RegistryFacetCutAction.Replace,
271
+ facetName: newFacetName,
272
+ });
273
+ }
274
+ }
275
+ else {
276
+ // New selector, simply add
277
+ registry.set(selector, {
278
+ priority: priority,
279
+ address: currentFacetAddress,
280
+ action: types_1.RegistryFacetCutAction.Add,
281
+ facetName: newFacetName,
282
+ });
283
+ }
284
+ }
285
+ /* ---------------- Remove Old Function Selectors from facets -------------- */
286
+ // Set functionselectors with the newFacetName and still different address to Remove
287
+ for (const [selector, entry] of registry.entries()) {
288
+ if (entry.facetName === newFacetName && entry.address !== currentFacetAddress) {
289
+ registry.set(selector, {
290
+ priority: entry.priority,
291
+ address: zeroAddress,
292
+ action: types_1.RegistryFacetCutAction.Remove,
293
+ facetName: newFacetName,
294
+ });
295
+ }
296
+ }
297
+ }
298
+ // `Remove` function selectors for facets no longer in config (deleted facets)
299
+ const facetsConfig = diamond.getDeployConfig().facets;
300
+ const facetNames = Object.keys(facetsConfig);
301
+ for (const [selector, entry] of registry.entries()) {
302
+ if (!facetNames.includes(entry.facetName)) {
303
+ registry.set(selector, {
304
+ priority: entry.priority,
305
+ address: zeroAddress,
306
+ action: types_1.RegistryFacetCutAction.Remove,
307
+ facetName: entry.facetName,
308
+ });
309
+ }
310
+ }
311
+ }
312
+ async postUpdateFunctionSelectorRegistry(diamond) {
313
+ if (this.verbose) {
314
+ console.log(chalk_1.default.gray(`✅ Running post-update logic for function selector registry of diamond ${diamond.diamondName}`));
315
+ }
316
+ }
317
+ async prePerformDiamondCut(diamond) {
318
+ if (this.verbose) {
319
+ console.log(chalk_1.default.gray(`🔧 Running pre-diamond cut logic for diamond ${diamond.diamondName}`));
320
+ }
321
+ await this.prePerformDiamondCutTasks(diamond);
322
+ }
323
+ async prePerformDiamondCutTasks(diamond) {
324
+ // This can be overridden by subclasses for custom pre-diamond cut logic
325
+ if (this.verbose) {
326
+ console.log(chalk_1.default.gray(`🔧 No pre-diamond cut tasks defined for diamond ${diamond.diamondName}`));
327
+ }
328
+ }
329
+ async performDiamondCut(diamond) {
330
+ if (this.verbose) {
331
+ console.log(chalk_1.default.yellowBright(`\n🪓 Performing diamond cut for diamond ${diamond.diamondName}...`));
332
+ }
333
+ await this.performDiamondCutTasks(diamond);
334
+ }
335
+ async performDiamondCutTasks(diamond) {
336
+ const diamondSignerAddress = await diamond.getSigner()?.getAddress();
337
+ const signer = await hardhat_1.default.ethers.getSigner(diamondSignerAddress);
338
+ const diamondContract = await hardhat_1.default.ethers.getContractAt("IDiamondCut", diamond.getDeployedDiamondData().DiamondAddress);
339
+ const signerDiamondContract = diamondContract.connect(signer);
340
+ const deployConfig = diamond.getDeployConfig();
341
+ const deployedDiamondData = diamond.getDeployedDiamondData();
342
+ // Setup initCallData with Atomic Protocol Initializer
343
+ const [initCalldata, initAddress] = await this.getInitCalldata(diamond);
344
+ // extract facet cuts from the selector registry
345
+ const facetCuts = await this.getFacetCuts(diamond);
346
+ // Validate no orphaned selectors, i.e. 'Add', 'Replace' or 'Deployed' selectors with the same facetNames but different addresses
347
+ await this.validateNoOrphanedSelectors(facetCuts);
348
+ if (this.verbose) {
349
+ console.log(chalk_1.default.yellowBright(`\n🪓 Performing DiamondCut with ${facetCuts.length} cut(s):`));
350
+ for (const cut of facetCuts) {
351
+ console.log(chalk_1.default.bold(`- ${types_1.FacetCutAction[cut.action]} for facet ${cut.name} at ${cut.facetAddress}`));
352
+ console.log(chalk_1.default.gray(` Selectors:`), cut.functionSelectors);
353
+ }
354
+ if (initAddress !== ethers_1.ethers.ZeroAddress) {
355
+ console.log(chalk_1.default.cyan(`Initializing with functionSelector ${initCalldata} on ProtocolInitFacet ${deployConfig.protocolInitFacet} @ ${initAddress}`));
356
+ }
357
+ }
358
+ /* -------------------------- Perform the diamond cut -----------------------*/
359
+ const facetSelectorCutMap = facetCuts.map(fc => ({ facetAddress: fc.facetAddress, action: fc.action, functionSelectors: fc.functionSelectors }));
360
+ const tx = await signerDiamondContract.diamondCut(facetSelectorCutMap, initAddress, initCalldata);
361
+ /* --------------------- Update the deployed diamond data ------------------ */
362
+ const txHash = tx.hash;
363
+ await this.postDiamondCutDeployedDataUpdate(diamond, txHash);
364
+ const ifaceList = (0, utils_1.getDeployedFacetInterfaces)(deployedDiamondData);
365
+ // Log the transaction
366
+ if (this.verbose) {
367
+ await (0, utils_1.logTx)(tx, "DiamondCut", ifaceList);
368
+ }
369
+ else {
370
+ console.log(chalk_1.default.blueBright(`🔄 Waiting for DiamondCut transaction to be mined...`));
371
+ await tx.wait();
372
+ }
373
+ console.log(chalk_1.default.green(`✅ DiamondCut executed: ${tx.hash}`));
374
+ for (const [facetName, initFunction] of diamond.initializerRegistry.entries()) {
375
+ console.log(chalk_1.default.blueBright(`▶ Running ${initFunction} from the ${facetName} facet`));
376
+ // const contract = await ethers.getContractAt(facetName, diamondSignerAddress!);
377
+ const facetContractName = await (0, utils_1.getContractName)(facetName, diamond);
378
+ const initContract = await hardhat_1.default.ethers.getContractAt(facetContractName, diamond.getDeployedDiamondData().DiamondAddress);
379
+ const signerDiamondContract = initContract.connect(signer);
380
+ const tx = await initContract[initFunction]();
381
+ // const tx = await signerDiamondContract.initFunction;
382
+ if (this.verbose) {
383
+ (0, utils_1.logTx)(tx, `${facetName}.${initFunction}`, ifaceList);
384
+ }
385
+ else {
386
+ console.log(chalk_1.default.blueBright(`🔄 Waiting for ${facetName}.${initFunction}} mined...`));
387
+ await tx.wait();
388
+ }
389
+ console.log(chalk_1.default.green(`✅ ${facetName}.${initFunction} executed`));
390
+ }
391
+ }
392
+ async postPerformDiamondCut(diamond) {
393
+ if (this.verbose) {
394
+ console.log(chalk_1.default.gray(`✅ Running post-diamond cut logic for diamond ${diamond.diamondName}`));
395
+ }
396
+ await this.postPerformDiamondCutTasks(diamond);
397
+ }
398
+ async postPerformDiamondCutTasks(diamond) { }
399
+ async getInitCalldata(diamond) {
400
+ const deployedDiamondData = diamond.getDeployedDiamondData();
401
+ const deployConfig = diamond.getDeployConfig();
402
+ let initAddress = ethers_1.ethers.ZeroAddress;
403
+ let initCalldata = "0x";
404
+ const protocolInitFacet = deployConfig.protocolInitFacet || "";
405
+ const protocolVersion = deployConfig.protocolVersion;
406
+ const protocolFacetInfo = diamond.getNewDeployedFacets()[protocolInitFacet];
407
+ if (protocolInitFacet && protocolFacetInfo) {
408
+ const versionCfg = deployConfig.facets[protocolInitFacet]?.versions?.[protocolVersion];
409
+ const initFn = diamond.newDeployment ? versionCfg?.deployInit : versionCfg?.upgradeInit;
410
+ if (initFn) {
411
+ const iface = new ethers_1.ethers.Interface([`function ${initFn}`]);
412
+ initAddress = protocolFacetInfo.address;
413
+ initCalldata = iface.encodeFunctionData(initFn);
414
+ if (this.verbose) {
415
+ console.log(chalk_1.default.cyan(`🔧 Using protocol-wide initializer: ${protocolInitFacet}.${initFn}()`));
416
+ }
417
+ }
418
+ }
419
+ if (initAddress === ethers_1.ethers.ZeroAddress) {
420
+ console.log(chalk_1.default.yellow(`⚠️ No protocol-wide initializer found. Using zero address.`));
421
+ }
422
+ diamond.setInitAddress(initAddress);
423
+ return [initCalldata, initAddress];
424
+ }
425
+ async getFacetCuts(diamond) {
426
+ const deployConfig = diamond.getDeployConfig();
427
+ const selectorRegistry = diamond.functionSelectorRegistry;
428
+ /* -------------------------- Prepare the facet cuts -----------------------*/
429
+ // extract facet cuts from the selector registry
430
+ const facetCuts = Array.from(selectorRegistry.entries())
431
+ .filter(([_, entry]) => entry.action !== types_1.RegistryFacetCutAction.Deployed)
432
+ .map(([selector, entry]) => {
433
+ return {
434
+ facetAddress: entry.address,
435
+ action: entry.action,
436
+ functionSelectors: [selector],
437
+ name: entry.facetName,
438
+ };
439
+ });
440
+ return facetCuts;
441
+ }
442
+ async validateNoOrphanedSelectors(facetCuts) {
443
+ // Validate no orphaned selectors, i.e. 'Add', 'Replace' or 'Deployed' selectors with the same facetNames but different addresses
444
+ const orphanedSelectors = facetCuts.filter(facetCut => {
445
+ return facetCuts.some(otherFacetCut => {
446
+ return (otherFacetCut.facetAddress !== facetCut.facetAddress &&
447
+ otherFacetCut.name === facetCut.name &&
448
+ (otherFacetCut.action === types_1.RegistryFacetCutAction.Add ||
449
+ otherFacetCut.action === types_1.RegistryFacetCutAction.Replace ||
450
+ otherFacetCut.action === types_1.RegistryFacetCutAction.Deployed));
451
+ });
452
+ });
453
+ if (orphanedSelectors.length > 0) {
454
+ console.error(chalk_1.default.redBright(`❌ Orphaned selectors found for facet ${orphanedSelectors[0].name} at address ${orphanedSelectors[0].facetAddress}`));
455
+ console.error(chalk_1.default.redBright(` - ${orphanedSelectors[0].functionSelectors}`));
456
+ throw new Error(`Orphaned selectors found for facet ${orphanedSelectors[0].name} at address ${orphanedSelectors[0].facetAddress}`);
457
+ }
458
+ }
459
+ async postDiamondCutDeployedDataUpdate(diamond, txHash) {
460
+ const deployConfig = diamond.getDeployConfig();
461
+ const deployedDiamondData = diamond.getDeployedDiamondData();
462
+ const selectorRegistry = diamond.functionSelectorRegistry;
463
+ const newDeployedFacets = diamond.getNewDeployedFacets();
464
+ deployedDiamondData.protocolVersion = deployConfig.protocolVersion;
465
+ // Aggregate selectors for each facet
466
+ const facetSelectorsMap = {};
467
+ for (const [selector, entry] of selectorRegistry.entries()) {
468
+ const facetName = entry.facetName;
469
+ if (!facetSelectorsMap[facetName]) {
470
+ facetSelectorsMap[facetName] = { address: entry.address, selectors: [] };
471
+ }
472
+ if (entry.action === types_1.RegistryFacetCutAction.Add || entry.action === types_1.RegistryFacetCutAction.Replace || entry.action === types_1.RegistryFacetCutAction.Deployed) {
473
+ facetSelectorsMap[facetName].selectors.push(selector);
474
+ }
475
+ }
476
+ // Update deployed facets with aggregated selectors
477
+ deployedDiamondData.DeployedFacets = deployedDiamondData.DeployedFacets || {};
478
+ for (const [facetName, { address, selectors }] of Object.entries(facetSelectorsMap)) {
479
+ if (selectors.length > 0) {
480
+ let facetVersion;
481
+ if (newDeployedFacets[facetName]) {
482
+ // Use the version from newly deployed facet
483
+ facetVersion = newDeployedFacets[facetName].version;
484
+ }
485
+ else {
486
+ // For facets not in newDeployedFacets (like existing deployed facets),
487
+ // preserve their existing version or use 0 as default
488
+ facetVersion = deployedDiamondData.DeployedFacets[facetName]?.version ?? 0;
489
+ }
490
+ deployedDiamondData.DeployedFacets[facetName] = {
491
+ address,
492
+ tx_hash: txHash,
493
+ version: facetVersion,
494
+ funcSelectors: selectors,
495
+ };
496
+ }
497
+ }
498
+ // Remove facets with no selectors
499
+ for (const facetName of Object.keys(deployedDiamondData.DeployedFacets)) {
500
+ if (!facetSelectorsMap[facetName] || facetSelectorsMap[facetName].selectors.length === 0) {
501
+ delete deployedDiamondData.DeployedFacets[facetName];
502
+ }
503
+ }
504
+ diamond.updateDeployedDiamondData(deployedDiamondData);
505
+ }
506
+ async preRunPostDeployCallbacks(diamond) {
507
+ if (this.verbose) {
508
+ console.log(chalk_1.default.gray(`🔧 Running pre-post-deploy logic for diamond ${diamond.diamondName}`));
509
+ }
510
+ }
511
+ async runPostDeployCallbacks(diamond) {
512
+ await this.runPostDeployCallbacksTasks(diamond);
513
+ }
514
+ async runPostDeployCallbacksTasks(diamond) {
515
+ console.log(`🔄 Running post-deployment callbacks...`);
516
+ const deployConfig = diamond.getDeployConfig();
517
+ for (const [facetName, facetConfig] of Object.entries(deployConfig.facets)) {
518
+ if (!facetConfig.versions)
519
+ continue;
520
+ for (const [version, config] of Object.entries(facetConfig.versions)) {
521
+ if (config.callbacks) {
522
+ const args = {
523
+ diamond: diamond,
524
+ };
525
+ console.log(chalk_1.default.cyanBright(`Executing callback ${config.callbacks} for facet ${facetName}...`));
526
+ await diamond.callbackManager.executeCallback(facetName, config.callbacks, args);
527
+ console.log(chalk_1.default.magenta(`✅ Callback ${config.callbacks} executed for facet ${facetName}`));
528
+ }
529
+ }
530
+ }
531
+ console.log(chalk_1.default.greenBright `✅ All post-deployment callbacks executed.`);
532
+ }
533
+ async postRunPostDeployCallbacks(diamond) {
534
+ if (this.verbose) {
535
+ console.log(chalk_1.default.gray(`✅ Running post-post-deploy logic for diamond ${diamond.diamondName}`));
536
+ }
537
+ }
538
+ async postRunPostDeployCallbacksTasks(diamond) {
539
+ if (this.verbose) {
540
+ console.log(chalk_1.default.gray(`✅ Running post-post-deploy logic for diamond ${diamond.diamondName}`));
541
+ }
542
+ }
543
+ }
544
+ exports.BaseDeploymentStrategy = BaseDeploymentStrategy;
545
+ //# sourceMappingURL=BaseDeploymentStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseDeploymentStrategy.js","sourceRoot":"","sources":["../../src/strategies/BaseDeploymentStrategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Diamond } from "../core/Diamond";
2
+ export interface DeploymentStrategy {
3
+ preDeployDiamond(diamond: Diamond): Promise<void>;
4
+ deployDiamond(diamond: Diamond): Promise<void>;
5
+ postDeployDiamond(diamond: Diamond): Promise<void>;
6
+ preDeployFacets(diamond: Diamond): Promise<void>;
7
+ deployFacets(diamond: Diamond): Promise<void>;
8
+ postDeployFacets(diamond: Diamond): Promise<void>;
9
+ preUpdateFunctionSelectorRegistry(diamond: Diamond): Promise<void>;
10
+ updateFunctionSelectorRegistry(diamond: Diamond): Promise<void>;
11
+ postUpdateFunctionSelectorRegistry(diamond: Diamond): Promise<void>;
12
+ prePerformDiamondCut(diamond: Diamond): Promise<void>;
13
+ performDiamondCut(diamond: Diamond): Promise<void>;
14
+ postPerformDiamondCut(diamond: Diamond): Promise<void>;
15
+ preRunPostDeployCallbacks(diamond: Diamond): Promise<void>;
16
+ runPostDeployCallbacks(diamond: Diamond): Promise<void>;
17
+ postRunPostDeployCallbacks(diamond: Diamond): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=DeploymentStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeploymentStrategy.d.ts","sourceRoot":"","sources":["../../src/strategies/DeploymentStrategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG1C,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElD,iCAAiC,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,8BAA8B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,kCAAkC,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpE,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=DeploymentStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeploymentStrategy.js","sourceRoot":"","sources":["../../src/strategies/DeploymentStrategy.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { BaseDeploymentStrategy } from "./BaseDeploymentStrategy";
2
+ export declare class LocalDeploymentStrategy extends BaseDeploymentStrategy {
3
+ }
4
+ //# sourceMappingURL=LocalDeploymentStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalDeploymentStrategy.d.ts","sourceRoot":"","sources":["../../src/strategies/LocalDeploymentStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,qBAAa,uBAAwB,SAAQ,sBAAsB;CAElE"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LocalDeploymentStrategy = void 0;
4
+ const BaseDeploymentStrategy_1 = require("./BaseDeploymentStrategy");
5
+ class LocalDeploymentStrategy extends BaseDeploymentStrategy_1.BaseDeploymentStrategy {
6
+ }
7
+ exports.LocalDeploymentStrategy = LocalDeploymentStrategy;
8
+ //# sourceMappingURL=LocalDeploymentStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalDeploymentStrategy.js","sourceRoot":"","sources":["../../src/strategies/LocalDeploymentStrategy.ts"],"names":[],"mappings":";;;AAAA,qEAAkE;AAElE,MAAa,uBAAwB,SAAQ,+CAAsB;CAElE;AAFD,0DAEC"}