Skip to content

Commit b7c855e

Browse files
authored
CLI: Use SDK for manifest validations (#237)
1 parent 9055731 commit b7c855e

10 files changed

Lines changed: 29 additions & 42 deletions

File tree

.changeset/fresh-nails-act.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"@mimicprotocol/cli": patch
3+
"@mimicprotocol/lib-ts": patch
4+
"@mimicprotocol/test-ts": patch
5+
---
6+
7+
Use SDK for manifest validation

packages/cli/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
],
2121
"dependencies": {
2222
"@inquirer/prompts": "^7.2.4",
23+
"@mimicprotocol/sdk": "^0.1.7",
2324
"@oclif/core": "^4.2.2",
2425
"@oclif/plugin-not-found": "^3.2.38",
2526
"axios": "^1.7.9",

packages/cli/src/commands/codegen.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import { confirm } from '@inquirer/prompts'
2+
import { Manifest } from '@mimicprotocol/sdk'
23
import { Command, Flags } from '@oclif/core'
34
import * as fs from 'fs'
45
import { join } from 'path'
56

67
import { AbisInterfaceGenerator, InputsInterfaceGenerator, ManifestHandler } from '../lib'
78
import log from '../log'
8-
import { FlagsType, Manifest } from '../types'
9+
import { FlagsType } from '../types'
910

1011
import Functions, { DefaultFunctionConfig } from './functions'
1112

packages/cli/src/lib/InputsInterfaceGenerator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ManifestInputs } from '../types'
1+
import { ManifestInputs } from '@mimicprotocol/sdk'
22

33
export default {
44
generate(inputs: ManifestInputs): string {

packages/cli/src/lib/ManifestHandler.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
import { RUNNER_TARGET_VERSION } from '@mimicprotocol/lib-ts/constants'
2+
import { Manifest, ManifestValidator, ZodError } from '@mimicprotocol/sdk'
23
import { Command } from '@oclif/core'
34
import * as fs from 'fs'
45
import { load } from 'js-yaml'
5-
import { ZodError } from 'zod'
66

77
import { DuplicateEntryError, EmptyManifestError, GENERIC_SUGGESTION, MoreThanOneEntryError } from '../errors'
8-
import { Manifest } from '../types'
9-
import { ManifestValidator } from '../validators'
108

119
export default {
1210
// eslint-disable-next-line @typescript-eslint/no-explicit-any

packages/cli/src/types.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
11
import { Command, Interfaces } from '@oclif/core'
2-
import { z } from 'zod'
3-
4-
import { ManifestValidator } from './validators'
5-
6-
export type Manifest = z.infer<typeof ManifestValidator>
7-
export type ManifestInputs = z.infer<typeof ManifestValidator.shape.inputs>
82

93
export type AbiParameter = {
104
name?: string

packages/cli/src/validators.ts

Lines changed: 0 additions & 27 deletions
This file was deleted.

packages/cli/tests/ManifestHandler.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
import { SEMVER_REGEX } from '@mimicprotocol/sdk'
12
import { expect } from 'chai'
23

34
import ManifestHandler from '../src/lib/ManifestHandler'
4-
import { SEM_VER_REGEX } from '../src/validators'
55

66
import invalidSemVers from './fixtures/sem-vers/invalid-sem-vers.json'
77
import validSemVers from './fixtures/sem-vers/valid-sem-vers.json'
@@ -76,7 +76,7 @@ describe('ManifestHandler', () => {
7676
it('adds the runner target version to the manifest', () => {
7777
const parsedManifest = ManifestHandler.validate(manifest)
7878

79-
expect(parsedManifest.metadata.runnerTarget).to.match(SEM_VER_REGEX)
79+
expect(parsedManifest.metadata.runnerTarget).to.match(SEMVER_REGEX)
8080
})
8181
})
8282

@@ -138,7 +138,7 @@ describe('ManifestHandler', () => {
138138
context('when an input is invalid', () => {
139139
itReturnsAnError(
140140
{ ...manifest, inputs: [...manifest.inputs, { wrong: 'u8' }] },
141-
'Must be a valid solidity type'
141+
'Must be a valid Solidity type or custom type (Token, TokenAmount)'
142142
)
143143
})
144144

packages/cli/tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
"target": "ES2020",
66
"strict": true,
77
"types": ["node"],
8-
"esModuleInterop": true
8+
"esModuleInterop": true,
9+
"skipLibCheck": true
910
},
1011
"include": [ "src/**/*" ],
1112
"exclude": [ "src/templates/**/*" ]

yarn.lock

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -725,6 +725,18 @@
725725
"@mimicprotocol/runner-node-win32-arm64-msvc" "0.1.1"
726726
"@mimicprotocol/runner-node-win32-x64-msvc" "0.1.1"
727727

728+
"@mimicprotocol/sdk@^0.1.7":
729+
version "0.1.7"
730+
resolved "https://registry.yarnpkg.com/@mimicprotocol/sdk/-/sdk-0.1.7.tgz#a40be86f2cbbfb20eb98c2af580660f40459e9d0"
731+
integrity sha512-gza2noCNPC8RLlMNwWdxRktd4l2h5ZttqPjvAuKaIHmkagZZqfCaBu1XrjlYkqSevpZEYnBSfc6Fj8KqcJn5zQ==
732+
dependencies:
733+
"@coral-xyz/anchor" "0.32.1"
734+
"@solana/web3.js" "^1.98.4"
735+
borsh "^2.0.0"
736+
cron-parser "^5.3.1"
737+
ethers "^6.13.5"
738+
zod "^3.23.8"
739+
728740
"@mimicprotocol/sdk@~0.1.5":
729741
version "0.1.5"
730742
resolved "https://registry.yarnpkg.com/@mimicprotocol/sdk/-/sdk-0.1.5.tgz#2820867ac4acfa34bf3a0d7809b771cc0ba34173"

0 commit comments

Comments
 (0)