Skip to content

Commit bdbfb7c

Browse files
committed
feat: github actions workflow
1 parent 12da5ff commit bdbfb7c

6 files changed

Lines changed: 277 additions & 19 deletions

File tree

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
name: Setup Node and Dependencies
2+
description: Setup Node.js with Yarn and Turbo caching
3+
4+
inputs:
5+
node-version:
6+
description: 'Node.js version to use'
7+
required: true
8+
default: '22'
9+
10+
runs:
11+
using: composite
12+
steps:
13+
- name: Setup Node.js
14+
uses: actions/setup-node@v4
15+
with:
16+
node-version: ${{ inputs.node-version }}
17+
18+
- name: Enable Corepack
19+
shell: bash
20+
run: corepack enable
21+
22+
- name: Get yarn cache directory path
23+
id: yarn-cache-dir-path
24+
shell: bash
25+
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
26+
27+
- name: Cache yarn dependencies
28+
uses: actions/cache@v4
29+
with:
30+
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
31+
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
32+
restore-keys: |
33+
${{ runner.os }}-yarn-
34+
35+
- name: Cache Turbo
36+
uses: actions/cache@v4
37+
with:
38+
path: .turbo
39+
key: ${{ runner.os }}-turbo-${{ github.sha }}
40+
restore-keys: |
41+
${{ runner.os }}-turbo-
42+
43+
- name: Install dependencies
44+
shell: bash
45+
run: yarn install --immutable

‎.github/workflows/deploy.yml‎

Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,208 @@
1+
name: Build and Deploy
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- github-actions
8+
pull_request:
9+
branches:
10+
- main
11+
12+
env:
13+
NODE_VERSION: '22.5.1'
14+
15+
jobs:
16+
lint-and-test:
17+
name: Lint and Test
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Checkout code
21+
uses: actions/checkout@v4
22+
with:
23+
fetch-depth: 0
24+
25+
- name: Setup Node and Dependencies
26+
uses: ./.github/actions/setup-node-and-deps
27+
with:
28+
node-version: ${{ env.NODE_VERSION }}
29+
30+
- name: Lint
31+
run: yarn lint
32+
continue-on-error: true
33+
34+
- name: Run tests
35+
run: yarn test
36+
continue-on-error: true
37+
38+
deploy:
39+
name: Deploy ${{ matrix.service }} (${{ matrix.environment }})
40+
runs-on: ubuntu-latest
41+
needs: lint-and-test
42+
if: github.event_name == 'push'
43+
environment: ${{ matrix.environment }}
44+
concurrency:
45+
group: deploy-${{ matrix.environment }}-${{ matrix.service }}
46+
cancel-in-progress: false
47+
strategy:
48+
matrix:
49+
include:
50+
# Development environment
51+
- service: notifications-service
52+
environment: dev
53+
pulumi_stack: public-dev-us-east-2
54+
db_secret: NOTIFICATIONS_SERVICE_DATABASE_URL
55+
cpu_limit: 250m
56+
memory_limit: 250Mi
57+
replicas: 1
58+
- service: swap-service
59+
environment: dev
60+
pulumi_stack: public-dev-us-east-2
61+
db_secret: SWAP_SERVICE_DATABASE_URL
62+
cpu_limit: 250m
63+
memory_limit: 250Mi
64+
replicas: 1
65+
- service: user-service
66+
environment: dev
67+
pulumi_stack: public-dev-us-east-2
68+
db_secret: USER_SERVICE_DATABASE_URL
69+
cpu_limit: 250m
70+
memory_limit: 250Mi
71+
replicas: 1
72+
# Production environment
73+
#- service: notifications-service
74+
# environment: prod
75+
# pulumi_stack: public-us-east-2
76+
# db_secret: NOTIFICATIONS_SERVICE_DATABASE_URL
77+
# cpu_limit: 250m
78+
# memory_limit: 250Mi
79+
# replicas: 2
80+
#- service: swap-service
81+
# environment: prod
82+
# pulumi_stack: public-us-east-2
83+
# db_secret: SWAP_SERVICE_DATABASE_URL
84+
# cpu_limit: 250m
85+
# memory_limit: 250Mi
86+
# replicas: 2
87+
#- service: user-service
88+
# environment: prod
89+
# pulumi_stack: public-us-east-2
90+
# db_secret: USER_SERVICE_DATABASE_URL
91+
# cpu_limit: 250m
92+
# memory_limit: 250Mi
93+
# replicas: 2
94+
steps:
95+
- name: Checkout code
96+
uses: actions/checkout@v4
97+
with:
98+
fetch-depth: 0
99+
100+
- name: Setup Node and Dependencies
101+
uses: ./.github/actions/setup-node-and-deps
102+
with:
103+
node-version: ${{ env.NODE_VERSION }}
104+
105+
- name: Set up Docker Buildx
106+
uses: docker/setup-buildx-action@v3
107+
108+
- name: Configure AWS Credentials
109+
uses: aws-actions/configure-aws-credentials@v4
110+
with:
111+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
112+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
113+
aws-region: us-east-2
114+
115+
- name: Install Pulumi CLI
116+
uses: pulumi/actions@v5
117+
118+
- name: Configure and Deploy with Pulumi
119+
working-directory: apps/${{ matrix.service }}/pulumi
120+
run: |
121+
pulumi stack select unchained/${{ matrix.pulumi_stack }}
122+
pulumi config set --path unchained:coinstack.assetName ${{ matrix.service }}
123+
pulumi config set --path unchained:coinstack.stack unchained/common/dependencies-us-east-2
124+
${{ matrix.environment == 'dev' && 'pulumi config set --path unchained:coinstack.environment dev' || 'echo "Skipping environment config for prod"' }}
125+
pulumi config set --path unchained:coinstack.network mainnet
126+
pulumi config set --path unchained:coinstack.api.cpuLimit ${{ matrix.cpu_limit }}
127+
pulumi config set --path unchained:coinstack.api.memoryLimit ${{ matrix.memory_limit }}
128+
pulumi config set --path unchained:coinstack.api.replicas ${{ matrix.replicas }}
129+
pulumi up -f --yes --refresh --suppress-outputs
130+
env:
131+
ADDITIONAL_ROOT_DOMAIN_NAME: shapeshift.com
132+
DOCKER_BUILDKIT: 1
133+
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
134+
135+
# Service URLs
136+
USER_SERVICE_URL: http://user-service-svc.unchained${{ matrix.environment == 'dev' && '-dev' || '' }}.svc.cluster.local:3000
137+
NOTIFICATIONS_SERVICE_URL: http://notifications-service-svc.unchained${{ matrix.environment == 'dev' && '-dev' || '' }}.svc.cluster.local:3000
138+
SWAP_SERVICE_URL: http://swap-service-svc.unchained${{ matrix.environment == 'dev' && '-dev' || '' }}.svc.cluster.local:3000
139+
140+
# Unchained API URLs (dynamic based on environment)
141+
VITE_UNCHAINED_ETHEREUM_HTTP_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.ethereum.shapeshift.com
142+
VITE_UNCHAINED_ETHEREUM_WS_URL: wss://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.ethereum.shapeshift.com
143+
VITE_UNCHAINED_AVALANCHE_HTTP_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.avalanche.shapeshift.com
144+
VITE_UNCHAINED_AVALANCHE_WS_URL: wss://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.avalanche.shapeshift.com
145+
VITE_UNCHAINED_OPTIMISM_HTTP_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.optimism.shapeshift.com
146+
VITE_UNCHAINED_OPTIMISM_WS_URL: wss://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.optimism.shapeshift.com
147+
VITE_UNCHAINED_BNBSMARTCHAIN_HTTP_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.bnbsmartchain.shapeshift.com
148+
VITE_UNCHAINED_BNBSMARTCHAIN_WS_URL: wss://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.bnbsmartchain.shapeshift.com
149+
VITE_UNCHAINED_POLYGON_HTTP_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.polygon.shapeshift.com
150+
VITE_UNCHAINED_POLYGON_WS_URL: wss://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.polygon.shapeshift.com
151+
VITE_UNCHAINED_GNOSIS_HTTP_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.gnosis.shapeshift.com
152+
VITE_UNCHAINED_GNOSIS_WS_URL: wss://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.gnosis.shapeshift.com
153+
VITE_UNCHAINED_ARBITRUM_HTTP_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.arbitrum.shapeshift.com
154+
VITE_UNCHAINED_ARBITRUM_WS_URL: wss://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.arbitrum.shapeshift.com
155+
VITE_UNCHAINED_ARBITRUM_NOVA_HTTP_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.arbitrum-nova.shapeshift.com
156+
VITE_UNCHAINED_ARBITRUM_NOVA_WS_URL: wss://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.arbitrum-nova.shapeshift.com
157+
VITE_UNCHAINED_BASE_HTTP_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.base.shapeshift.com
158+
VITE_UNCHAINED_BASE_WS_URL: wss://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.base.shapeshift.com
159+
VITE_UNCHAINED_BITCOIN_HTTP_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.bitcoin.shapeshift.com
160+
VITE_UNCHAINED_BITCOIN_WS_URL: wss://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.bitcoin.shapeshift.com
161+
VITE_UNCHAINED_DOGECOIN_HTTP_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.dogecoin.shapeshift.com
162+
VITE_UNCHAINED_DOGECOIN_WS_URL: wss://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.dogecoin.shapeshift.com
163+
VITE_UNCHAINED_LITECOIN_HTTP_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.litecoin.shapeshift.com
164+
VITE_UNCHAINED_LITECOIN_WS_URL: wss://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.litecoin.shapeshift.com
165+
VITE_UNCHAINED_BITCOINCASH_HTTP_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.bitcoincash.shapeshift.com
166+
VITE_UNCHAINED_BITCOINCASH_WS_URL: wss://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.bitcoincash.shapeshift.com
167+
VITE_UNCHAINED_COSMOS_HTTP_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.cosmos.shapeshift.com
168+
VITE_UNCHAINED_COSMOS_WS_URL: wss://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.cosmos.shapeshift.com
169+
VITE_UNCHAINED_THORCHAIN_HTTP_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.thorchain.shapeshift.com
170+
VITE_UNCHAINED_THORCHAIN_WS_URL: wss://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.thorchain.shapeshift.com
171+
VITE_UNCHAINED_MAYACHAIN_HTTP_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.mayachain.shapeshift.com
172+
VITE_UNCHAINED_MAYACHAIN_WS_URL: wss://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.mayachain.shapeshift.com
173+
VITE_UNCHAINED_SOLANA_HTTP_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.solana.shapeshift.com
174+
VITE_UNCHAINED_SOLANA_WS_URL: wss://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.solana.shapeshift.com
175+
176+
# Node URLs (dynamic based on environment)
177+
VITE_ETHEREUM_NODE_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.ethereum.shapeshift.com/api/v1/jsonrpc
178+
VITE_AVALANCHE_NODE_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.avalanche.shapeshift.com/api/v1/jsonrpc
179+
VITE_OPTIMISM_NODE_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.optimism.shapeshift.com/api/v1/jsonrpc
180+
VITE_BNBSMARTCHAIN_NODE_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.bnbsmartchain.shapeshift.com/api/v1/jsonrpc
181+
VITE_POLYGON_NODE_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.polygon.shapeshift.com/api/v1/jsonrpc
182+
VITE_GNOSIS_NODE_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.gnosis.shapeshift.com/api/v1/jsonrpc
183+
VITE_ARBITRUM_NODE_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.arbitrum.shapeshift.com/api/v1/jsonrpc
184+
VITE_ARBITRUM_NOVA_NODE_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.arbitrum-nova.shapeshift.com/api/v1/jsonrpc
185+
VITE_BASE_NODE_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.base.shapeshift.com/api/v1/jsonrpc
186+
VITE_THORCHAIN_NODE_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.thorchain.shapeshift.com/lcd
187+
VITE_MAYACHAIN_NODE_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.mayachain.shapeshift.com/lcd
188+
VITE_SOLANA_NODE_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.solana.shapeshift.com/api/v1/jsonrpc
189+
190+
# Midgard URLs (dynamic based on environment)
191+
VITE_THORCHAIN_MIDGARD_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.thorchain.shapeshift.com/midgard/v2
192+
VITE_MAYACHAIN_MIDGARD_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.mayachain.shapeshift.com/midgard/v2
193+
194+
# DEX/Swapper URLs
195+
VITE_CHAINFLIP_API_URL: https://chainflip-broker.io
196+
VITE_COWSWAP_BASE_URL: https://api.cow.fi
197+
VITE_JUPITER_API_URL: https://quote-api.jup.ag/v6
198+
VITE_PORTALS_BASE_URL: https://api.portals.fi
199+
VITE_RELAY_API_URL: https://api.relay.link
200+
VITE_ZRX_BASE_URL: https://${{ matrix.environment == 'dev' && 'dev-' || '' }}api.proxy.shapeshift.com/api/v1/zrx/
201+
202+
# Secrets (from GitHub Secrets)
203+
ACCOUNT_ID_SALT: ${{ secrets.ACCOUNT_ID_SALT }}
204+
DATABASE_URL: ${{ secrets[matrix.db_secret] }}
205+
EXPO_ACCESS_TOKEN: ${{ secrets.EXPO_ACCESS_TOKEN }}
206+
VITE_BEBOP_API_KEY: ${{ secrets.BEBOP_API_KEY }}
207+
VITE_CHAINFLIP_API_KEY: ${{ secrets.CHAINFLIP_API_KEY }}
208+
VITE_NEAR_INTENTS_API_KEY: ${{ secrets.NEAR_INTENTS_API_KEY }}

‎apps/swap-service/.env.example‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,16 @@ VITE_MAYACHAIN_MIDGARD_URL="https://api.mayachain.shapeshift.com/midgard/v2"
6060

6161
# Swapper API URLs
6262
VITE_COWSWAP_BASE_URL="https://api.cow.fi"
63-
VITE_CHAINFLIP_API_KEY="09bc0796ff40435482c0a54fa6ae2784"
6463
VITE_CHAINFLIP_API_URL="https://chainflip-broker.io"
6564
VITE_RELAY_API_URL="https://api.relay.link"
6665
VITE_PORTALS_BASE_URL="https://api.portals.fi"
6766
VITE_ZRX_BASE_URL="https://api.proxy.shapeshift.com/api/v1/zrx/"
68-
VITE_BEBOP_API_KEY=b4a7ffa9-2abb-45ae-8ddd-ec33bc377939
69-
VITE_NEAR_INTENTS_API_KEY=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjIwMjUtMDQtMjMtdjEifQ.eyJ2IjoxLCJrZXlfdHlwZSI6ImludGVncmF0aW9ucyIsInBhcnRuZXJfaWQiOiJnb21lcy1zaGFwZS1zaGlmdCIsImlhdCI6MTc2MjgxNjQ3MCwiZXhwIjoxNzk0MzUyNDcwfQ.BHFPJ1y-UnVBN3Y_PtMfP9MRng-hKPowYDLOeLj4Cnsvs9lNgikgaC_e41PO4LduMKiRRrtwfRhzUfV5Usdsf8IS9U7mF1UrUwDqyEEOF10weJWYU36Gg6NyNuIFgJhvV8sFzwPShbenLHIR3gIZ97pyBmpJ8jTDZu7ncw6kVqY6hcsu6H9Pyl9jYNdSwhdWUgZ9UswPPTeecrF1wgQPpE3i3tNT-fTbDtj-DswmEIT3f8qgfgZBi7cde68gsGiVy7v0cSE2r8y9UwFWejuUoltUDrTEmF6lCJHGuCaKYqGqZs2MBiIr5xnYpzlsKFTYlUNa8cTTcXng_pzWd5LrsA
70-
71-
# Additional APIs (used in swaps service)
7267
VITE_JUPITER_API_URL="https://quote-api.jup.ag/v6"
7368

69+
# API Keys
70+
VITE_BEBOP_API_KEY=
71+
VITE_CHAINFLIP_API_KEY=
72+
VITE_NEAR_INTENTS_API_KEY=
73+
7474
# Service URLs
7575
NOTIFICATIONS_SERVICE_URL="http://notifications-service:3003"

‎apps/user-service/.env.example‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,7 @@
22
ACCOUNT_ID_SALT=
33

44
# Database Configuration
5-
DATABASE_URL=postgresql://postgres:password@user-db:5432/user_service
5+
DATABASE_URL=postgresql://postgres:password@user-db:5432/user_service
6+
7+
# Service URLs
8+
SWAP_SERVICE_URL="http://swap-service:3003"

‎package.json‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@
1818
"start": "turbo run start",
1919
"start:dev": "turbo run start:dev",
2020
"test": "jest",
21-
"lint": "eslint \"{apps,packages}/**/*.ts\" --fix",
22-
"format": "prettier --write \"**/*.{ts,js,json,md}\"",
21+
"lint": "eslint --cache \"{apps,packages}/**/*.ts\"",
22+
"lint:fix": "yarn lint --fix",
23+
"format": "prettier --check \"**/*.{ts,js,json,md}\"",
24+
"format:fix": "prettier --write \"**/*.{ts,js,json,md}\"",
2325
"docker:build": "docker-compose build",
2426
"docker:up": "docker-compose up -d",
2527
"docker:down": "docker-compose down",
@@ -48,7 +50,7 @@
4850
"@shapeshiftoss/swapper": "17.6.7",
4951
"@shapeshiftoss/types": "8.6.5",
5052
"@shapeshiftoss/unchained-client": "10.14.8",
51-
"@shapeshiftoss/unchained-pulumi": "1.0.0",
53+
"@shapeshiftoss/unchained-pulumi": "1.0.1",
5254
"axios": "^1.7.4",
5355
"dotenv": "^17.2.2",
5456
"p-lazy": "3.1.0",

‎yarn.lock‎

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4875,16 +4875,16 @@ __metadata:
48754875
languageName: node
48764876
linkType: hard
48774877

4878-
"@shapeshiftoss/cluster-launcher@npm:^0.22.3":
4879-
version: 0.22.3
4880-
resolution: "@shapeshiftoss/cluster-launcher@npm:0.22.3"
4878+
"@shapeshiftoss/cluster-launcher@npm:^0.22.5":
4879+
version: 0.22.5
4880+
resolution: "@shapeshiftoss/cluster-launcher@npm:0.22.5"
48814881
dependencies:
48824882
"@pulumi/aws": "npm:6.83.0"
48834883
"@pulumi/awsx": "npm:2.22.0"
48844884
"@pulumi/eks": "npm:3.9.1"
48854885
"@pulumi/kubernetes": "npm:4.23.0"
48864886
"@pulumi/pulumi": "npm:3.160.0"
4887-
checksum: 10/3a2d693f42e348fbcde715bd5a91429815cba813d0e08028e017819b36aa859d907643c62d4a711e44569984c66f3006d0b7c55bceef84017dbe997373ee9e55
4887+
checksum: 10/0055fe4b8b54c493d2d698864059f952b09de30be31fd123dd7b4da84695a5faf51029740b592e16672ee4ab1ffaa8b0320d79c7f0604440355f6dfbd267fa86
48884888
languageName: node
48894889
linkType: hard
48904890

@@ -5050,12 +5050,12 @@ __metadata:
50505050
languageName: node
50515051
linkType: hard
50525052

5053-
"@shapeshiftoss/unchained-pulumi@npm:1.0.0":
5054-
version: 1.0.0
5055-
resolution: "@shapeshiftoss/unchained-pulumi@npm:1.0.0"
5053+
"@shapeshiftoss/unchained-pulumi@npm:1.0.1":
5054+
version: 1.0.1
5055+
resolution: "@shapeshiftoss/unchained-pulumi@npm:1.0.1"
50565056
dependencies:
5057-
"@shapeshiftoss/cluster-launcher": "npm:^0.22.3"
5058-
checksum: 10/94d86e318be33b5f522ac26850a0e93c652485cfc894943a571aac3a0fbd629764839c99015f9c054c4ffb39936c25243d3a6436f0834491d2525459a8ff7b52
5057+
"@shapeshiftoss/cluster-launcher": "npm:^0.22.5"
5058+
checksum: 10/388cedfe7980425ff36a526dee1f24205ff1647288ca0ea46bc492360228221011fdfdb40a01be80794d91b23f43ab0ad4c98051eba92713f7171bc821e33825
50595059
languageName: node
50605060
linkType: hard
50615061

@@ -15366,7 +15366,7 @@ __metadata:
1536615366
"@shapeshiftoss/swapper": "npm:17.6.7"
1536715367
"@shapeshiftoss/types": "npm:8.6.5"
1536815368
"@shapeshiftoss/unchained-client": "npm:10.14.8"
15369-
"@shapeshiftoss/unchained-pulumi": "npm:1.0.0"
15369+
"@shapeshiftoss/unchained-pulumi": "npm:1.0.1"
1537015370
"@types/express": "npm:^5.0.5"
1537115371
"@types/jest": "npm:^30.0.0"
1537215372
"@types/node": "npm:^22.10.7"

0 commit comments

Comments
 (0)