Skip to content

Commit 202f046

Browse files
vrasparclaude
andcommitted
Add CI workflows, ESLint, Prettier, and formatting alignment with x402
- Add 4 GitHub Actions workflows: format check, lint check, unit tests (Node 20/22 matrix), lockfile validation - Add .prettierrc (semi: false, singleQuote: true, printWidth: 100) matching x402 - Add eslint.config.js (flat config with @typescript-eslint) - Add format:check and lint:check scripts to root and evm package.json - Bump pnpm from 9.15.0 to 10.7.0 - Fix unused import (PAYMENT_INFO_COMPONENTS) and lint warnings in nonce.ts - Reformat all source and test files with new prettier config Co-Authored-By: Claude Opus 4.6 <[email protected]>
1 parent b3448d8 commit 202f046

31 files changed

Lines changed: 2086 additions & 1222 deletions

.github/workflows/check_format.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: Format
2+
on: [pull_request]
3+
4+
jobs:
5+
check-format:
6+
runs-on: ubuntu-latest
7+
steps:
8+
- uses: actions/checkout@v4
9+
- name: Setup pnpm
10+
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
11+
with:
12+
run_install: false
13+
- uses: actions/setup-node@v4
14+
with:
15+
node-version: "20"
16+
cache: "pnpm"
17+
- name: Ensure formatting
18+
run: |
19+
pnpm install --frozen-lockfile
20+
pnpm format:check

.github/workflows/check_lint.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: Lint
2+
on: [pull_request]
3+
4+
jobs:
5+
check-lint:
6+
runs-on: ubuntu-latest
7+
steps:
8+
- uses: actions/checkout@v4
9+
- name: Setup pnpm
10+
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
11+
with:
12+
run_install: false
13+
- uses: actions/setup-node@v4
14+
with:
15+
node-version: "20"
16+
cache: "pnpm"
17+
- name: Ensure linting
18+
run: |
19+
pnpm install --frozen-lockfile
20+
pnpm lint:check
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: Package Lock
2+
on: [pull_request]
3+
4+
jobs:
5+
check-package-lock:
6+
runs-on: ubuntu-latest
7+
steps:
8+
- uses: actions/checkout@v4
9+
- name: Setup pnpm
10+
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
11+
with:
12+
run_install: false
13+
- uses: actions/setup-node@v4
14+
with:
15+
node-version: "20"
16+
cache: "pnpm"
17+
- name: Check if pnpm-lock.yaml changed
18+
run: |
19+
pnpm install
20+
if [ -n "$(git diff pnpm-lock.yaml)" ]; then
21+
echo "Error: pnpm-lock.yaml was modified after running pnpm install. Please commit the updated pnpm-lock.yaml file."
22+
git diff pnpm-lock.yaml
23+
exit 1
24+
fi

.github/workflows/unit_tests.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
name: Run Unit Tests
2+
on: [pull_request]
3+
4+
jobs:
5+
test:
6+
runs-on: ubuntu-latest
7+
strategy:
8+
matrix:
9+
node-version: ["20", "22"]
10+
steps:
11+
- uses: actions/checkout@v4
12+
- name: Setup pnpm
13+
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
14+
with:
15+
run_install: false
16+
- uses: actions/setup-node@v4
17+
with:
18+
node-version: ${{ matrix.node-version }}
19+
cache: "pnpm"
20+
- name: Install and test
21+
run: |
22+
pnpm install --frozen-lockfile
23+
pnpm run test

.prettierrc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"semi": false,
3+
"singleQuote": true,
4+
"printWidth": 100
5+
}

README.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,36 +19,36 @@ Peer dependencies: `@x402/core`, `@x402/evm`, `viem`
1919
### Client
2020

2121
```typescript
22-
import { EscrowEvmScheme, registerEscrowEvmScheme } from "@x402r/evm/escrow/client";
23-
import { x402Client } from "@x402/core/client";
22+
import { EscrowEvmScheme, registerEscrowEvmScheme } from '@x402r/evm/escrow/client'
23+
import { x402Client } from '@x402/core/client'
2424

25-
const client = new x402Client();
26-
registerEscrowEvmScheme(client, { signer, networks: "eip155:84532" });
25+
const client = new x402Client()
26+
registerEscrowEvmScheme(client, { signer, networks: 'eip155:84532' })
2727
```
2828

2929
### Server
3030

3131
```typescript
32-
import { EscrowServerScheme, registerEscrowEvmScheme } from "@x402r/evm/escrow/server";
33-
import { x402ResourceServer } from "@x402/core/server";
32+
import { EscrowServerScheme, registerEscrowEvmScheme } from '@x402r/evm/escrow/server'
33+
import { x402ResourceServer } from '@x402/core/server'
3434

35-
const server = new x402ResourceServer(facilitatorConfig);
36-
registerEscrowEvmScheme(server, { networks: "eip155:84532" });
35+
const server = new x402ResourceServer(facilitatorConfig)
36+
registerEscrowEvmScheme(server, { networks: 'eip155:84532' })
3737
```
3838

3939
### Facilitator
4040

4141
The escrow scheme integrates with x402's facilitator via `registerEscrowEvmScheme()`, using the same `FacilitatorEvmSigner` as x402's exact scheme:
4242

4343
```typescript
44-
import { x402Facilitator } from "@x402/core/facilitator";
45-
import { toFacilitatorEvmSigner } from "@x402/evm";
46-
import { registerEscrowEvmScheme } from "@x402r/evm/escrow/facilitator";
44+
import { x402Facilitator } from '@x402/core/facilitator'
45+
import { toFacilitatorEvmSigner } from '@x402/evm'
46+
import { registerEscrowEvmScheme } from '@x402r/evm/escrow/facilitator'
4747

48-
const evmSigner = toFacilitatorEvmSigner({ address, ...clients });
48+
const evmSigner = toFacilitatorEvmSigner({ address, ...clients })
4949

50-
const facilitator = new x402Facilitator();
51-
registerEscrowEvmScheme(facilitator, { signer: evmSigner, networks: "eip155:84532" });
50+
const facilitator = new x402Facilitator()
51+
registerEscrowEvmScheme(facilitator, { signer: evmSigner, networks: 'eip155:84532' })
5252
```
5353

5454
## Development

eslint.config.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import js from '@eslint/js'
2+
import ts from '@typescript-eslint/eslint-plugin'
3+
import tsParser from '@typescript-eslint/parser'
4+
5+
export default [
6+
{
7+
ignores: ['**/dist/**', '**/node_modules/**'],
8+
},
9+
js.configs.recommended,
10+
{
11+
files: ['**/*.ts'],
12+
languageOptions: {
13+
parser: tsParser,
14+
sourceType: 'module',
15+
globals: {
16+
TextEncoder: 'readonly',
17+
crypto: 'readonly',
18+
setTimeout: 'readonly',
19+
console: 'readonly',
20+
},
21+
},
22+
plugins: {
23+
'@typescript-eslint': ts,
24+
},
25+
rules: {
26+
...ts.configs.recommended.rules,
27+
'no-unused-vars': 'off',
28+
'@typescript-eslint/no-unused-vars': [
29+
'error',
30+
{ argsIgnorePattern: '^_', varsIgnorePattern: '^_' },
31+
],
32+
},
33+
},
34+
]

package.json

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"name": "x402r-scheme",
33
"private": true,
4+
"type": "module",
45
"workspaces": [
56
"packages/*",
67
"examples/*"
@@ -11,11 +12,17 @@
1112
"test": "pnpm -r test",
1213
"typecheck": "pnpm -r typecheck",
1314
"lint": "pnpm -r lint",
14-
"format": "prettier --write \"**/*.{ts,js,json,md}\""
15+
"lint:check": "pnpm -r lint:check",
16+
"format": "prettier -c .prettierrc --write \"**/*.{ts,js,cjs,json,md}\"",
17+
"format:check": "prettier -c .prettierrc --check \"**/*.{ts,js,cjs,json,md}\""
1518
},
1619
"devDependencies": {
20+
"@eslint/js": "^9.24.0",
21+
"@typescript-eslint/eslint-plugin": "^8.0.0",
22+
"@typescript-eslint/parser": "^8.0.0",
23+
"eslint": "^9.24.0",
1724
"prettier": "^3.4.0",
1825
"typescript": "^5.7.0"
1926
},
20-
"packageManager": "pnpm@9.15.0"
27+
"packageManager": "pnpm@10.7.0"
2128
}

packages/evm/README.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,35 +13,35 @@ npm install @x402r/evm
1313
### Client — Create payment payloads
1414

1515
```typescript
16-
import { EscrowEvmScheme, registerEscrowEvmScheme } from "@x402r/evm/escrow/client";
17-
import { x402Client } from "@x402/core/client";
16+
import { EscrowEvmScheme, registerEscrowEvmScheme } from '@x402r/evm/escrow/client'
17+
import { x402Client } from '@x402/core/client'
1818

19-
const client = new x402Client();
20-
registerEscrowEvmScheme(client, { signer });
19+
const client = new x402Client()
20+
registerEscrowEvmScheme(client, { signer })
2121
// or with specific networks:
22-
registerEscrowEvmScheme(client, { signer, networks: "eip155:84532" });
22+
registerEscrowEvmScheme(client, { signer, networks: 'eip155:84532' })
2323
```
2424

2525
### Server — Register with x402 resource server
2626

2727
```typescript
28-
import { EscrowServerScheme, registerEscrowEvmScheme } from "@x402r/evm/escrow/server";
29-
import { x402ResourceServer } from "@x402/core/server";
28+
import { EscrowServerScheme, registerEscrowEvmScheme } from '@x402r/evm/escrow/server'
29+
import { x402ResourceServer } from '@x402/core/server'
3030

31-
const server = new x402ResourceServer(facilitatorConfig);
32-
registerEscrowEvmScheme(server);
31+
const server = new x402ResourceServer(facilitatorConfig)
32+
registerEscrowEvmScheme(server)
3333
// or with specific networks:
34-
registerEscrowEvmScheme(server, { networks: "eip155:84532" });
34+
registerEscrowEvmScheme(server, { networks: 'eip155:84532' })
3535
```
3636

3737
### Facilitator — Verify and settle payments
3838

3939
```typescript
40-
import { EscrowFacilitatorScheme, registerEscrowEvmScheme } from "@x402r/evm/escrow/facilitator";
41-
import { x402Facilitator } from "@x402/core/facilitator";
40+
import { EscrowFacilitatorScheme, registerEscrowEvmScheme } from '@x402r/evm/escrow/facilitator'
41+
import { x402Facilitator } from '@x402/core/facilitator'
4242

43-
const facilitator = new x402Facilitator();
44-
registerEscrowEvmScheme(facilitator, { signer, networks: "eip155:84532" });
43+
const facilitator = new x402Facilitator()
44+
registerEscrowEvmScheme(facilitator, { signer, networks: 'eip155:84532' })
4545
```
4646

4747
## Exports

packages/evm/package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,10 @@
6565
"test": "vitest run",
6666
"test:watch": "vitest",
6767
"typecheck": "tsc --noEmit",
68-
"lint": "eslint src --ext .ts",
69-
"format": "prettier --write \"src/**/*.ts\""
68+
"lint": "eslint . --fix",
69+
"lint:check": "eslint .",
70+
"format": "prettier -c .prettierrc --write \"**/*.{ts,js,cjs,json,md}\"",
71+
"format:check": "prettier -c .prettierrc --check \"**/*.{ts,js,cjs,json,md}\""
7072
},
7173
"peerDependencies": {
7274
"@x402/core": "^2.4.0",

0 commit comments

Comments
 (0)