@0xsequence/catapult 1.3.17 → 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/README.md +276 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +12 -0
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/provenance.d.ts +3 -0
- package/dist/commands/provenance.d.ts.map +1 -0
- package/dist/commands/provenance.js +138 -0
- package/dist/commands/provenance.js.map +1 -0
- package/dist/lib/__tests__/deployer.spec.js +118 -1
- package/dist/lib/__tests__/deployer.spec.js.map +1 -1
- package/dist/lib/__tests__/network-loader.spec.js.map +1 -1
- package/dist/lib/__tests__/provenance.spec.d.ts +2 -0
- package/dist/lib/__tests__/provenance.spec.d.ts.map +1 -0
- package/dist/lib/__tests__/provenance.spec.js +205 -0
- package/dist/lib/__tests__/provenance.spec.js.map +1 -0
- package/dist/lib/contracts/__tests__/repository.spec.js +243 -0
- package/dist/lib/contracts/__tests__/repository.spec.js.map +1 -1
- package/dist/lib/contracts/repository.d.ts +9 -1
- package/dist/lib/contracts/repository.d.ts.map +1 -1
- package/dist/lib/contracts/repository.js +93 -7
- package/dist/lib/contracts/repository.js.map +1 -1
- package/dist/lib/core/__tests__/assert-action.spec.d.ts +2 -0
- package/dist/lib/core/__tests__/assert-action.spec.d.ts.map +1 -0
- package/dist/lib/core/__tests__/assert-action.spec.js +377 -0
- package/dist/lib/core/__tests__/assert-action.spec.js.map +1 -0
- package/dist/lib/core/__tests__/engine.spec.js +80 -0
- package/dist/lib/core/__tests__/engine.spec.js.map +1 -1
- package/dist/lib/core/__tests__/loader.spec.js +29 -0
- package/dist/lib/core/__tests__/loader.spec.js.map +1 -1
- package/dist/lib/core/__tests__/resolver.spec.js +405 -0
- package/dist/lib/core/__tests__/resolver.spec.js.map +1 -1
- package/dist/lib/core/__tests__/sign-actions.spec.d.ts +2 -0
- package/dist/lib/core/__tests__/sign-actions.spec.d.ts.map +1 -0
- package/dist/lib/core/__tests__/sign-actions.spec.js +128 -0
- package/dist/lib/core/__tests__/sign-actions.spec.js.map +1 -0
- package/dist/lib/core/__tests__/signer.spec.d.ts +2 -0
- package/dist/lib/core/__tests__/signer.spec.d.ts.map +1 -0
- package/dist/lib/core/__tests__/signer.spec.js +40 -0
- package/dist/lib/core/__tests__/signer.spec.js.map +1 -0
- package/dist/lib/core/context.d.ts +3 -2
- package/dist/lib/core/context.d.ts.map +1 -1
- package/dist/lib/core/context.js +3 -2
- package/dist/lib/core/context.js.map +1 -1
- package/dist/lib/core/engine.d.ts +4 -0
- package/dist/lib/core/engine.d.ts.map +1 -1
- package/dist/lib/core/engine.js +206 -0
- package/dist/lib/core/engine.js.map +1 -1
- package/dist/lib/core/loader.d.ts +1 -0
- package/dist/lib/core/loader.d.ts.map +1 -1
- package/dist/lib/core/loader.js +6 -1
- package/dist/lib/core/loader.js.map +1 -1
- package/dist/lib/core/resolver.d.ts +2 -0
- package/dist/lib/core/resolver.d.ts.map +1 -1
- package/dist/lib/core/resolver.js +89 -0
- package/dist/lib/core/resolver.js.map +1 -1
- package/dist/lib/core/signer.d.ts +7 -0
- package/dist/lib/core/signer.d.ts.map +1 -0
- package/dist/lib/core/signer.js +60 -0
- package/dist/lib/core/signer.js.map +1 -0
- package/dist/lib/deployer.d.ts.map +1 -1
- package/dist/lib/deployer.js +21 -4
- package/dist/lib/deployer.js.map +1 -1
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/parsers/__tests__/job.spec.js +77 -0
- package/dist/lib/parsers/__tests__/job.spec.js.map +1 -1
- package/dist/lib/parsers/__tests__/source.spec.d.ts +2 -0
- package/dist/lib/parsers/__tests__/source.spec.d.ts.map +1 -0
- package/dist/lib/parsers/__tests__/source.spec.js +158 -0
- package/dist/lib/parsers/__tests__/source.spec.js.map +1 -0
- package/dist/lib/parsers/index.d.ts +1 -0
- package/dist/lib/parsers/index.d.ts.map +1 -1
- package/dist/lib/parsers/index.js +1 -0
- package/dist/lib/parsers/index.js.map +1 -1
- package/dist/lib/parsers/job.d.ts.map +1 -1
- package/dist/lib/parsers/job.js +11 -0
- package/dist/lib/parsers/job.js.map +1 -1
- package/dist/lib/parsers/source.d.ts +4 -0
- package/dist/lib/parsers/source.d.ts.map +1 -0
- package/dist/lib/parsers/source.js +107 -0
- package/dist/lib/parsers/source.js.map +1 -0
- package/dist/lib/provenance.d.ts +34 -0
- package/dist/lib/provenance.d.ts.map +1 -0
- package/dist/lib/provenance.js +694 -0
- package/dist/lib/provenance.js.map +1 -0
- package/dist/lib/types/actions.d.ts +42 -2
- package/dist/lib/types/actions.d.ts.map +1 -1
- package/dist/lib/types/actions.js +4 -0
- package/dist/lib/types/actions.js.map +1 -1
- package/dist/lib/types/contracts.d.ts +3 -0
- package/dist/lib/types/contracts.d.ts.map +1 -1
- package/dist/lib/types/definitions.d.ts +1 -0
- package/dist/lib/types/definitions.d.ts.map +1 -1
- package/dist/lib/types/index.d.ts +1 -0
- package/dist/lib/types/index.d.ts.map +1 -1
- package/dist/lib/types/index.js +1 -0
- package/dist/lib/types/index.js.map +1 -1
- package/dist/lib/types/source.d.ts +26 -0
- package/dist/lib/types/source.d.ts.map +1 -0
- package/dist/lib/types/source.js +3 -0
- package/dist/lib/types/source.js.map +1 -0
- package/dist/lib/types/values.d.ts +33 -1
- package/dist/lib/types/values.d.ts.map +1 -1
- package/package.json +4 -1
- package/.eslintrc.json +0 -29
- package/.github/workflows/ci.yml +0 -181
- package/CONCEPT.md +0 -24
- package/contracts/checked-call.huff +0 -65
- package/eslint.config.js +0 -48
- package/examples/jobs/guards-v1.yaml +0 -17
- package/examples/jobs/sequence-seq-0001-patch.yaml +0 -59
- package/examples/jobs/sequence-v1.yaml +0 -59
- package/examples/templates/sequence-factory-v1.yaml +0 -56
- package/jest.config.js +0 -25
- package/src/cli.ts +0 -17
- package/src/commands/common.ts +0 -61
- package/src/commands/dry.ts +0 -209
- package/src/commands/etherscan.ts +0 -360
- package/src/commands/index.ts +0 -5
- package/src/commands/list.ts +0 -249
- package/src/commands/run.ts +0 -146
- package/src/commands/utils.ts +0 -215
- package/src/index.ts +0 -67
- package/src/lib/__tests__/deployer-events.spec.ts +0 -338
- package/src/lib/__tests__/deployer.spec.ts +0 -2093
- package/src/lib/__tests__/network-loader.spec.ts +0 -150
- package/src/lib/__tests__/network-selection.spec.ts +0 -41
- package/src/lib/__tests__/network-utils.spec.ts +0 -230
- package/src/lib/artifacts/__tests__/fixtures/contract1.json +0 -19
- package/src/lib/artifacts/__tests__/fixtures/contract2.json +0 -19
- package/src/lib/artifacts/__tests__/fixtures/duplicate-name.json +0 -19
- package/src/lib/artifacts/__tests__/fixtures/nested/nested-contract.json +0 -18
- package/src/lib/artifacts/__tests__/fixtures/not-an-artifact.json +0 -8
- package/src/lib/artifacts/__tests__/fixtures/readme.txt +0 -2
- package/src/lib/contracts/__tests__/repository.spec.ts +0 -344
- package/src/lib/contracts/repository.ts +0 -313
- package/src/lib/core/__tests__/context.spec.ts +0 -37
- package/src/lib/core/__tests__/engine.spec.ts +0 -1889
- package/src/lib/core/__tests__/graph.spec.ts +0 -125
- package/src/lib/core/__tests__/json-integration.spec.ts +0 -425
- package/src/lib/core/__tests__/loader.spec.ts +0 -334
- package/src/lib/core/__tests__/multi-platform-verification.spec.ts +0 -406
- package/src/lib/core/__tests__/resolver.spec.ts +0 -2053
- package/src/lib/core/__tests__/static-action.spec.ts +0 -172
- package/src/lib/core/context.ts +0 -127
- package/src/lib/core/engine.ts +0 -1782
- package/src/lib/core/graph.ts +0 -252
- package/src/lib/core/loader.ts +0 -247
- package/src/lib/core/resolver.ts +0 -757
- package/src/lib/deployer.ts +0 -981
- package/src/lib/events/__tests__/event-system.spec.ts +0 -392
- package/src/lib/events/cli-adapter.ts +0 -369
- package/src/lib/events/emitter.ts +0 -62
- package/src/lib/events/index.ts +0 -3
- package/src/lib/events/types.ts +0 -520
- package/src/lib/index.ts +0 -14
- package/src/lib/network-loader.ts +0 -90
- package/src/lib/network-selection.ts +0 -73
- package/src/lib/network-utils.ts +0 -64
- package/src/lib/parsers/__tests__/buildinfo.spec.ts +0 -122
- package/src/lib/parsers/__tests__/fixtures/buildinfo/invalid-bytecode-buildinfo.json +0 -62
- package/src/lib/parsers/__tests__/fixtures/buildinfo/invalid-json.txt +0 -2
- package/src/lib/parsers/__tests__/fixtures/buildinfo/multi-contract-buildinfo.json +0 -89
- package/src/lib/parsers/__tests__/fixtures/buildinfo/no-contracts-buildinfo.json +0 -17
- package/src/lib/parsers/__tests__/fixtures/buildinfo/simple-buildinfo.json +0 -63
- package/src/lib/parsers/__tests__/fixtures/buildinfo/wrong-format.json +0 -4
- package/src/lib/parsers/__tests__/job.spec.ts +0 -358
- package/src/lib/parsers/__tests__/template.spec.ts +0 -111
- package/src/lib/parsers/artifact/__tests__/artifact.spec.ts +0 -117
- package/src/lib/parsers/artifact/__tests__/fixtures/empty-bytecode.json +0 -5
- package/src/lib/parsers/artifact/__tests__/fixtures/hardhat-artifact.json +0 -67
- package/src/lib/parsers/artifact/__tests__/fixtures/invalid-bytecode.json +0 -5
- package/src/lib/parsers/artifact/__tests__/fixtures/invalid-json.txt +0 -11
- package/src/lib/parsers/artifact/__tests__/fixtures/minimal-artifact.json +0 -5
- package/src/lib/parsers/artifact/__tests__/fixtures/missing-abi.json +0 -4
- package/src/lib/parsers/artifact/__tests__/fixtures/missing-bytecode.json +0 -11
- package/src/lib/parsers/artifact/__tests__/fixtures/missing-contract-name.json +0 -11
- package/src/lib/parsers/artifact/__tests__/fixtures/simple-artifact.json +0 -40
- package/src/lib/parsers/artifact/__tests__/fixtures/wrong-types.json +0 -7
- package/src/lib/parsers/artifact/foundry-1.2.ts +0 -72
- package/src/lib/parsers/artifact/index.ts +0 -27
- package/src/lib/parsers/artifact/types.ts +0 -9
- package/src/lib/parsers/buildinfo.ts +0 -127
- package/src/lib/parsers/constants.ts +0 -56
- package/src/lib/parsers/index.ts +0 -5
- package/src/lib/parsers/job.ts +0 -148
- package/src/lib/parsers/template.ts +0 -135
- package/src/lib/std/templates/arachnid-deterministic-deployment-proxy.yaml +0 -68
- package/src/lib/std/templates/assured-deployment.yaml +0 -46
- package/src/lib/std/templates/era-evm-predeploy.yaml +0 -35
- package/src/lib/std/templates/erc-2470.yaml +0 -70
- package/src/lib/std/templates/min-balance.yaml +0 -35
- package/src/lib/std/templates/nano-universal-deployer.yaml +0 -61
- package/src/lib/std/templates/raw-erc-2470.yaml +0 -62
- package/src/lib/std/templates/raw-nano-universal-deployer.yaml +0 -54
- package/src/lib/std/templates/raw-sequence-universal-deployer-2.yaml +0 -52
- package/src/lib/std/templates/sequence-universal-deployer-2.yaml +0 -61
- package/src/lib/types/__tests__/json-request-action.spec.ts +0 -243
- package/src/lib/types/__tests__/read-json-value.spec.ts +0 -278
- package/src/lib/types/__tests__/resolve-json-value.spec.ts +0 -769
- package/src/lib/types/actions.ts +0 -127
- package/src/lib/types/artifacts.ts +0 -21
- package/src/lib/types/buildinfo.ts +0 -116
- package/src/lib/types/conditions.ts +0 -50
- package/src/lib/types/contracts.ts +0 -23
- package/src/lib/types/definitions.ts +0 -70
- package/src/lib/types/index.ts +0 -8
- package/src/lib/types/network.ts +0 -33
- package/src/lib/types/project.ts +0 -9
- package/src/lib/types/task.ts +0 -9
- package/src/lib/types/values.ts +0 -150
- package/src/lib/utils/assertion.ts +0 -24
- package/src/lib/utils/validation.ts +0 -116
- package/src/lib/validation/contract-references.ts +0 -210
- package/src/lib/validation/index.ts +0 -1
- package/src/lib/verification/__tests__/etherscan.spec.ts +0 -710
- package/src/lib/verification/__tests__/sourcify.spec.ts +0 -288
- package/src/lib/verification/etherscan.ts +0 -547
- package/src/lib/verification/sourcify.ts +0 -248
- package/test_validation/artifacts/TestContract.json +0 -9
- package/test_validation/jobs/test-missing.yaml +0 -16
- package/test_validation/networks.yaml +0 -3
- package/tsconfig.json +0 -36
|
@@ -1,369 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk'
|
|
2
|
-
import { DeploymentEvent } from './types'
|
|
3
|
-
import { DeploymentEventEmitter } from './emitter'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Verbosity levels for filtering console output:
|
|
7
|
-
* 0 (default): Critical info only - errors, warnings, main deployment steps
|
|
8
|
-
* 1 (-v): Add transaction details and verification steps
|
|
9
|
-
* 2 (-vv): Add action details and file operations
|
|
10
|
-
* 3 (-vvv): Full debug - show everything including template transitions
|
|
11
|
-
*/
|
|
12
|
-
export type VerbosityLevel = 0 | 1 | 2 | 3
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* CLI adapter that converts structured deployment events into
|
|
16
|
-
* formatted console output using chalk for colors.
|
|
17
|
-
*/
|
|
18
|
-
export class CLIEventAdapter {
|
|
19
|
-
private emitter: DeploymentEventEmitter
|
|
20
|
-
private verbosity: VerbosityLevel
|
|
21
|
-
|
|
22
|
-
constructor(emitter: DeploymentEventEmitter, verbosity: VerbosityLevel = 0) {
|
|
23
|
-
this.emitter = emitter
|
|
24
|
-
this.verbosity = verbosity
|
|
25
|
-
this.setupListeners()
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Updates the verbosity level for this adapter.
|
|
30
|
-
*/
|
|
31
|
-
setVerbosity(verbosity: VerbosityLevel): void {
|
|
32
|
-
this.verbosity = verbosity
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
private setupListeners(): void {
|
|
38
|
-
this.emitter.onAnyEvent((event) => {
|
|
39
|
-
this.handleEvent(event)
|
|
40
|
-
})
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Determines the minimum verbosity level required to show an event.
|
|
45
|
-
*/
|
|
46
|
-
private getEventVerbosityLevel(eventType: string): VerbosityLevel {
|
|
47
|
-
// Level 0 (default): Critical info only
|
|
48
|
-
const level0Events = new Set([
|
|
49
|
-
'deployment_started', 'deployment_completed', 'deployment_failed',
|
|
50
|
-
'job_started', 'job_completed', 'job_skipped', 'job_execution_failed',
|
|
51
|
-
'network_started', 'network_signer_info',
|
|
52
|
-
'duplicate_artifact_warning', 'missing_network_config_warning',
|
|
53
|
-
'unhandled_rejection', 'uncaught_exception', 'cli_error',
|
|
54
|
-
'verification_failed'
|
|
55
|
-
])
|
|
56
|
-
|
|
57
|
-
// Level 1 (-v): Add transaction details and verification
|
|
58
|
-
const level1Events = new Set([
|
|
59
|
-
'project_loading_started', 'project_loaded', 'execution_plan',
|
|
60
|
-
'transaction_sent', 'transaction_confirmed',
|
|
61
|
-
'contract_created',
|
|
62
|
-
'verification_started', 'verification_submitted', 'verification_completed',
|
|
63
|
-
'output_writing_started', 'output_file_written', 'no_outputs',
|
|
64
|
-
'run_summary'
|
|
65
|
-
])
|
|
66
|
-
|
|
67
|
-
// Level 2 (-vv): Add action details and operations
|
|
68
|
-
const level2Events = new Set([
|
|
69
|
-
'action_started', 'action_skipped',
|
|
70
|
-
'template_setup_started', 'template_setup_completed', 'template_setup_skipped', 'template_skipped'
|
|
71
|
-
])
|
|
72
|
-
|
|
73
|
-
// Level 3 (-vvv): Full debug - everything else
|
|
74
|
-
const level3Events = new Set([
|
|
75
|
-
'template_entered', 'template_exited',
|
|
76
|
-
'primitive_action', 'output_stored',
|
|
77
|
-
'debug_info', 'action_failed', 'action_info', 'action_completed'
|
|
78
|
-
])
|
|
79
|
-
|
|
80
|
-
if (level0Events.has(eventType)) return 0
|
|
81
|
-
if (level1Events.has(eventType)) return 1
|
|
82
|
-
if (level2Events.has(eventType)) return 2
|
|
83
|
-
if (level3Events.has(eventType)) return 3
|
|
84
|
-
|
|
85
|
-
// Default to level 3 for any new events we haven't categorized
|
|
86
|
-
return 3
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
private handleEvent(event: DeploymentEvent): void {
|
|
90
|
-
// Filter events based on verbosity level
|
|
91
|
-
const requiredLevel = this.getEventVerbosityLevel(event.type)
|
|
92
|
-
if (this.verbosity < requiredLevel) {
|
|
93
|
-
return
|
|
94
|
-
}
|
|
95
|
-
switch (event.type) {
|
|
96
|
-
case 'deployment_started':
|
|
97
|
-
console.log(chalk.bold.inverse(' CATAPULT: STARTING DEPLOYMENT RUN '))
|
|
98
|
-
break
|
|
99
|
-
|
|
100
|
-
case 'project_loading_started':
|
|
101
|
-
console.log(chalk.blue(`\n1. Loading project from: ${event.data.projectRoot}`))
|
|
102
|
-
break
|
|
103
|
-
|
|
104
|
-
case 'project_loaded':
|
|
105
|
-
console.log(chalk.green(` - Loaded ${event.data.jobCount} jobs, ${event.data.templateCount} templates, and registered artifacts.`))
|
|
106
|
-
break
|
|
107
|
-
|
|
108
|
-
case 'execution_plan':
|
|
109
|
-
console.log(chalk.blue('\n2. Execution Plan'))
|
|
110
|
-
console.log(chalk.gray(` - Target Networks: ${event.data.targetNetworks.map(n => `${n.name} (ChainID: ${n.chainId})`).join(', ')}`))
|
|
111
|
-
console.log(chalk.gray(` - Job Execution Order: ${event.data.jobExecutionOrder.join(' -> ')}`))
|
|
112
|
-
break
|
|
113
|
-
|
|
114
|
-
case 'network_started':
|
|
115
|
-
console.log(chalk.cyan.bold(`\nNetwork: ${event.data.networkName} (ChainID: ${event.data.chainId})`))
|
|
116
|
-
break
|
|
117
|
-
|
|
118
|
-
case 'network_signer_info':
|
|
119
|
-
console.log(chalk.gray(` Sender: ${event.data.address}`))
|
|
120
|
-
console.log(chalk.gray(` Balance: ${event.data.balance} ETH (${event.data.balanceWei} wei)`))
|
|
121
|
-
break
|
|
122
|
-
|
|
123
|
-
case 'job_started':
|
|
124
|
-
console.log(chalk.cyan.bold(`\n🚀 Starting job: ${event.data.jobName} (v${event.data.jobVersion})`))
|
|
125
|
-
break
|
|
126
|
-
|
|
127
|
-
case 'job_completed':
|
|
128
|
-
console.log(chalk.green.bold(`✅ Job "${event.data.jobName}" completed successfully.`))
|
|
129
|
-
break
|
|
130
|
-
|
|
131
|
-
case 'job_skipped':
|
|
132
|
-
console.log(chalk.yellow(` Skipping job "${event.data.jobName}" on network "${event.data.networkName}" due to configuration.`))
|
|
133
|
-
break
|
|
134
|
-
|
|
135
|
-
case 'action_started':
|
|
136
|
-
console.log(chalk.blue(` - Executing: ${event.data.actionName}`))
|
|
137
|
-
break
|
|
138
|
-
|
|
139
|
-
case 'action_skipped':
|
|
140
|
-
console.log(chalk.yellow(` ↪ Skipping "${event.data.actionName}": ${event.data.reason}`))
|
|
141
|
-
break
|
|
142
|
-
|
|
143
|
-
case 'template_entered':
|
|
144
|
-
console.log(chalk.magenta(` -> Entering template: ${event.data.templateName}`))
|
|
145
|
-
break
|
|
146
|
-
|
|
147
|
-
case 'template_exited':
|
|
148
|
-
console.log(chalk.magenta(` <- Exiting template: ${event.data.templateName}`))
|
|
149
|
-
break
|
|
150
|
-
|
|
151
|
-
case 'template_setup_started':
|
|
152
|
-
console.log(chalk.magenta(` -> Running setup for template: ${event.data.templateName}`))
|
|
153
|
-
break
|
|
154
|
-
|
|
155
|
-
case 'template_setup_completed':
|
|
156
|
-
console.log(chalk.magenta(` <- Finished setup for template: ${event.data.templateName}`))
|
|
157
|
-
break
|
|
158
|
-
|
|
159
|
-
case 'template_setup_skipped':
|
|
160
|
-
// Don't output anything - this is internal and not user-facing
|
|
161
|
-
break
|
|
162
|
-
|
|
163
|
-
case 'template_skipped':
|
|
164
|
-
console.log(chalk.yellow(` ↪ Skipping actions in template "${event.data.templateName}" due to met condition.`))
|
|
165
|
-
break
|
|
166
|
-
|
|
167
|
-
case 'primitive_action':
|
|
168
|
-
console.log(chalk.gray(` Executing primitive: ${event.data.actionType}`))
|
|
169
|
-
break
|
|
170
|
-
|
|
171
|
-
case 'transaction_sent':
|
|
172
|
-
console.log(chalk.gray(` to: ${event.data.to}, value: ${event.data.value}, data: ${event.data.dataPreview}...`))
|
|
173
|
-
console.log(chalk.gray(` tx hash: ${event.data.txHash}`))
|
|
174
|
-
break
|
|
175
|
-
|
|
176
|
-
case 'transaction_confirmed':
|
|
177
|
-
console.log(chalk.gray(` tx confirmed in block: ${event.data.blockNumber}`))
|
|
178
|
-
break
|
|
179
|
-
|
|
180
|
-
case 'output_stored':
|
|
181
|
-
console.log(chalk.gray(` Stored output: ${event.data.outputKey} = ${event.data.value}`))
|
|
182
|
-
break
|
|
183
|
-
|
|
184
|
-
case 'output_writing_started':
|
|
185
|
-
console.log(chalk.blue('\n4. Writing output files...'))
|
|
186
|
-
break
|
|
187
|
-
|
|
188
|
-
case 'output_file_written':
|
|
189
|
-
console.log(chalk.green(` - Wrote: ${event.data.relativePath}`))
|
|
190
|
-
break
|
|
191
|
-
|
|
192
|
-
case 'no_outputs':
|
|
193
|
-
console.log(chalk.yellow('\nNo successful job executions to write to output.'))
|
|
194
|
-
break
|
|
195
|
-
|
|
196
|
-
case 'deployment_completed':
|
|
197
|
-
// Print a compact, high-signal run summary. The Deployer will have emitted
|
|
198
|
-
// preceding info, so we only render a final banner here. Detailed counts
|
|
199
|
-
// are printed via a separate 'run_summary' event.
|
|
200
|
-
console.log(chalk.bold.inverse('\n CATAPULT: DEPLOYMENT RUN COMPLETED SUCCESSFULLY '))
|
|
201
|
-
break
|
|
202
|
-
|
|
203
|
-
case 'deployment_failed':
|
|
204
|
-
console.error(chalk.red.bold('\n💥 DEPLOYMENT FAILED!'))
|
|
205
|
-
// Show concise failed jobs table if present
|
|
206
|
-
const failedJobs = (event as any).data?.failedJobs as Array<{ jobName: string; networkName: string; chainId: number; error: string }> | undefined
|
|
207
|
-
if (Array.isArray(failedJobs) && failedJobs.length > 0) {
|
|
208
|
-
console.error(chalk.red(' ✗ Failed jobs:'))
|
|
209
|
-
for (const f of failedJobs) {
|
|
210
|
-
const where = `${f.networkName} (ChainID: ${f.chainId})`
|
|
211
|
-
console.error(chalk.red(` - ${f.jobName} on ${where}`))
|
|
212
|
-
console.error(chalk.red(` Error: ${f.error}`))
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
// Always print the top-level error and stack last
|
|
216
|
-
if ((event as any).data?.stack) {
|
|
217
|
-
console.error(chalk.red((event as any).data.stack))
|
|
218
|
-
} else if ((event as any).data?.error) {
|
|
219
|
-
console.error(chalk.red((event as any).data.error))
|
|
220
|
-
}
|
|
221
|
-
break
|
|
222
|
-
|
|
223
|
-
case 'duplicate_artifact_warning':
|
|
224
|
-
console.warn(`Warning: Duplicate artifact contractName found: "${event.data.contractName}". Name-based lookup disabled - use hash or path references instead.`)
|
|
225
|
-
break
|
|
226
|
-
|
|
227
|
-
case 'missing_network_config_warning':
|
|
228
|
-
console.warn(chalk.yellow(`Warning: Could not find network configurations for specified chain IDs: ${event.data.missingChainIds.join(', ')}`))
|
|
229
|
-
break
|
|
230
|
-
|
|
231
|
-
case 'unhandled_rejection':
|
|
232
|
-
console.error(chalk.red('Unhandled Rejection:'), event.data.error, chalk.red('origin:'), event.data.origin)
|
|
233
|
-
break
|
|
234
|
-
|
|
235
|
-
case 'uncaught_exception':
|
|
236
|
-
console.error(chalk.red('Uncaught Exception:'), event.data.error)
|
|
237
|
-
break
|
|
238
|
-
|
|
239
|
-
case 'cli_error':
|
|
240
|
-
console.error(chalk.red('Error:'), event.data.message)
|
|
241
|
-
break
|
|
242
|
-
|
|
243
|
-
case 'verification_started':
|
|
244
|
-
console.log(chalk.gray(` 🔍 Verifying contract on ${event.data.platform} (${event.data.networkName})...`))
|
|
245
|
-
break
|
|
246
|
-
|
|
247
|
-
case 'verification_submitted':
|
|
248
|
-
if (event.data.guid && event.data.guid !== 'N/A') {
|
|
249
|
-
console.log(chalk.gray(` 📝 Verification submitted to ${event.data.platform} (GUID: ${event.data.guid})`))
|
|
250
|
-
}
|
|
251
|
-
break
|
|
252
|
-
|
|
253
|
-
case 'verification_completed':
|
|
254
|
-
if (event.data.message.includes('already verified')) {
|
|
255
|
-
console.log(chalk.yellow(` ✓ Already verified on ${event.data.platform}`))
|
|
256
|
-
} else {
|
|
257
|
-
console.log(chalk.green(` ✅ ${event.data.message} on ${event.data.platform}`))
|
|
258
|
-
}
|
|
259
|
-
break
|
|
260
|
-
|
|
261
|
-
case 'verification_failed':
|
|
262
|
-
console.log(chalk.red(` ❌ Verification failed on ${event.data.platform}: ${event.data.error}`))
|
|
263
|
-
break
|
|
264
|
-
|
|
265
|
-
case 'verification_retry':
|
|
266
|
-
// Keep short to reduce noise
|
|
267
|
-
console.log(chalk.gray(` Verification retry ${event.data.attempt}/${event.data.maxRetries}: ${event.data.error}`))
|
|
268
|
-
break
|
|
269
|
-
|
|
270
|
-
case 'verification_skipped':
|
|
271
|
-
console.log(chalk.yellow(` ⚠️ ${event.data.reason}`))
|
|
272
|
-
break
|
|
273
|
-
|
|
274
|
-
case 'verification_warnings_report':
|
|
275
|
-
// Display detailed verification warnings report
|
|
276
|
-
console.log(chalk.yellow('\n📋 Verification Warnings Report'))
|
|
277
|
-
console.log(chalk.yellow(` Total warnings: ${event.data.totalWarnings}`))
|
|
278
|
-
console.log('')
|
|
279
|
-
|
|
280
|
-
if (event.data.warnings && event.data.warnings.length > 0) {
|
|
281
|
-
for (const warning of event.data.warnings) {
|
|
282
|
-
console.log(chalk.red(` ❌ ${warning.actionName} (${warning.contractName})`))
|
|
283
|
-
console.log(chalk.gray(` Address: ${warning.address}`))
|
|
284
|
-
console.log(chalk.gray(` Platform: ${warning.platform}`))
|
|
285
|
-
if (warning.networkName) {
|
|
286
|
-
console.log(chalk.gray(` Network: ${warning.networkName}`))
|
|
287
|
-
}
|
|
288
|
-
console.log(chalk.gray(` Error: ${warning.error}`))
|
|
289
|
-
console.log('')
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
break
|
|
293
|
-
case 'contract_created':
|
|
294
|
-
console.log(chalk.gray(` contract: ${event.data.contractAddress}`))
|
|
295
|
-
break
|
|
296
|
-
|
|
297
|
-
case 'context_disposal_warning':
|
|
298
|
-
console.warn(chalk.yellow(`Warning: context cleanup issue for job "${event.data.jobName}" on ${event.data.networkName}: ${event.data.error}`))
|
|
299
|
-
break
|
|
300
|
-
|
|
301
|
-
case 'deprecated_jobs_skipped':
|
|
302
|
-
if (Array.isArray(event.data.jobs) && event.data.jobs.length > 0) {
|
|
303
|
-
const names = event.data.jobs.map((j: any) => typeof j === 'string' ? j : j.name).filter(Boolean)
|
|
304
|
-
console.log(chalk.yellow(`Skipping deprecated jobs (not requested): ${names.join(', ')}`))
|
|
305
|
-
}
|
|
306
|
-
break
|
|
307
|
-
|
|
308
|
-
case 'run_summary':
|
|
309
|
-
// Rich end-of-run summary
|
|
310
|
-
console.log(chalk.blue('\n5. Summary'))
|
|
311
|
-
console.log(chalk.gray(` Networks: ${event.data.networkCount}, Jobs: ${event.data.jobCount}`))
|
|
312
|
-
console.log(chalk.green(` ✓ Success: ${event.data.successCount}`))
|
|
313
|
-
if (event.data.skippedCount > 0) console.log(chalk.yellow(` ↪ Skipped: ${event.data.skippedCount}`))
|
|
314
|
-
if (event.data.failedCount > 0) console.log(chalk.red(` ✗ Failed: ${event.data.failedCount}`))
|
|
315
|
-
if (Array.isArray(event.data.keyContracts) && event.data.keyContracts.length > 0) {
|
|
316
|
-
console.log(chalk.gray(' Key contracts:'))
|
|
317
|
-
for (const c of event.data.keyContracts) {
|
|
318
|
-
console.log(chalk.gray(` - ${c.job}.${c.action}: ${c.address}`))
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
break
|
|
322
|
-
|
|
323
|
-
case 'job_execution_failed':
|
|
324
|
-
console.error(chalk.red.bold(`❌ Job "${event.data.jobName}" failed on ${event.data.networkName} (Chain ID: ${event.data.chainId})`))
|
|
325
|
-
console.error(chalk.red(` Error: ${event.data.error}`))
|
|
326
|
-
break
|
|
327
|
-
|
|
328
|
-
case 'action_completed':
|
|
329
|
-
console.log(chalk.green(` ✅ ${event.data.result}`))
|
|
330
|
-
break
|
|
331
|
-
|
|
332
|
-
case 'action_failed':
|
|
333
|
-
console.log(chalk.red(` ❌ ${event.data.message}`))
|
|
334
|
-
break
|
|
335
|
-
|
|
336
|
-
case 'action_info':
|
|
337
|
-
console.log(chalk.gray(` ℹ️ ${event.data.message}`))
|
|
338
|
-
break
|
|
339
|
-
|
|
340
|
-
case 'debug_info':
|
|
341
|
-
const levelPrefix = event.level.toUpperCase()
|
|
342
|
-
const levelColor = event.level === 'warn' ? chalk.yellow :
|
|
343
|
-
event.level === 'info' ? chalk.blue :
|
|
344
|
-
chalk.gray
|
|
345
|
-
console.log(levelColor(` [${levelPrefix}] ${event.data.message}`))
|
|
346
|
-
break
|
|
347
|
-
|
|
348
|
-
default:
|
|
349
|
-
// Suppress raw debug dumps in CLI output; only show a concise line at highest verbosity
|
|
350
|
-
if (this.verbosity >= 3) {
|
|
351
|
-
const level = (event as any).level?.toUpperCase?.() || 'DEBUG'
|
|
352
|
-
const type = (event as any).type || 'event'
|
|
353
|
-
const msg = (event as any).data?.message
|
|
354
|
-
if (msg) {
|
|
355
|
-
console.log(chalk.gray(` [${level}] ${type}: ${msg}`))
|
|
356
|
-
}
|
|
357
|
-
// Otherwise, remain silent to avoid noisy/broken logs
|
|
358
|
-
}
|
|
359
|
-
break
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
/**
|
|
364
|
-
* Stop listening to events (cleanup method).
|
|
365
|
-
*/
|
|
366
|
-
public destroy(): void {
|
|
367
|
-
this.emitter.removeAllListeners()
|
|
368
|
-
}
|
|
369
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from 'events'
|
|
2
|
-
import { DeploymentEvent } from './types'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Type-safe event emitter for deployment events.
|
|
6
|
-
* Extends Node.js EventEmitter with typed event methods.
|
|
7
|
-
*/
|
|
8
|
-
export class DeploymentEventEmitter extends EventEmitter {
|
|
9
|
-
/**
|
|
10
|
-
* Emits a deployment event with automatic timestamp injection.
|
|
11
|
-
*/
|
|
12
|
-
public emitEvent(event: any): void {
|
|
13
|
-
const fullEvent = {
|
|
14
|
-
...event,
|
|
15
|
-
timestamp: new Date()
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
// Emit on both the specific event type and a general 'event' channel
|
|
19
|
-
this.emit(event.type, fullEvent)
|
|
20
|
-
this.emit('event', fullEvent)
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Type-safe event listener registration.
|
|
25
|
-
*/
|
|
26
|
-
public onEvent<T extends DeploymentEvent>(
|
|
27
|
-
eventType: T['type'],
|
|
28
|
-
listener: (event: T) => void
|
|
29
|
-
): this {
|
|
30
|
-
return this.on(eventType, listener)
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Listen to all events.
|
|
35
|
-
*/
|
|
36
|
-
public onAnyEvent(listener: (event: DeploymentEvent) => void): this {
|
|
37
|
-
return this.on('event', listener)
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* One-time event listener.
|
|
42
|
-
*/
|
|
43
|
-
public onceEvent<T extends DeploymentEvent>(
|
|
44
|
-
eventType: T['type'],
|
|
45
|
-
listener: (event: T) => void
|
|
46
|
-
): this {
|
|
47
|
-
return this.once(eventType, listener)
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Remove event listener.
|
|
52
|
-
*/
|
|
53
|
-
public offEvent<T extends DeploymentEvent>(
|
|
54
|
-
eventType: T['type'],
|
|
55
|
-
listener: (event: T) => void
|
|
56
|
-
): this {
|
|
57
|
-
return this.off(eventType, listener)
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Singleton instance for global access
|
|
62
|
-
export const deploymentEvents = new DeploymentEventEmitter()
|
package/src/lib/events/index.ts
DELETED