Skip to content

Commit 77dac71

Browse files
authored
feat!: use native fetch & update deps (#68)
* deps: update aegir and typescript * feat!: use native fetch, update all deps * docs: update instructions for devs * chore: update to latest aegir * chore: use lts node in github actions
1 parent 5c079ba commit 77dac71

16 files changed

+109
-130
lines changed

.aegir.js

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,32 @@
1-
import { MockServerController } from './dist/test/MockServerController.js'
21

32
/** @type {import('aegir').PartialOptions} */
4-
const config = {
3+
export default {
4+
typescript: true,
5+
dependencyCheck: {
6+
ignore: [
7+
'@swc/cli',
8+
'@swc/core',
9+
'@swc/helpers',
10+
'cors',
11+
'dotenvrc',
12+
'express',
13+
'express-promise-router',
14+
'mock-ipfs-pinning-service',
15+
'portscanner',
16+
'regenerator-runtime',
17+
'winston',
18+
]
19+
},
520
docs: {
621
publish: true,
722
entryPoint: './'
823
},
924
build: {
25+
types: true,
1026
config: {
11-
platform: 'node'
27+
format: 'esm',
28+
platform: 'node',
29+
external: ['electron', '#ansi-styles', 'yargs/yargs', '#supports-color']
1230
},
1331
bundlesizeMax: '44KB'
1432
},
@@ -17,6 +35,7 @@ const config = {
1735
progress: true,
1836
cov: false,
1937
async before () {
38+
const { MockServerController } = await import('./dist/test/MockServerController.js')
2039
return {
2140
env: {
2241
MOCK_PINNING_SERVER_SECRET: 'ci',
@@ -26,12 +45,10 @@ const config = {
2645
},
2746
/**
2847
* @param {import('aegir').GlobalOptions & import('aegir').TestOptions} _
29-
* @param { {controller: MockServerController} } beforeResult
48+
* @param { { controller: import('./test/MockServerController.js').MockServerController } } beforeResult
3049
*/
3150
async after (_, {controller}) {
3251
await controller.shutdown()
3352
}
3453
}
3554
}
36-
37-
export default config

.eslintrc.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
{
22
"root": true,
3-
"parser": "@typescript-eslint/parser",
4-
"plugins": ["@typescript-eslint", "import"],
53
"extends": ["ipfs"],
4+
"parserOptions": {
5+
"project": true,
6+
"sourceType": "module"
7+
},
68
"overrides": [
79
{
810
"parserOptions": {
@@ -13,7 +15,6 @@
1315
"./types/**/*.ts"
1416
],
1517
"rules": {
16-
"@typescript-eslint/strict-boolean-expressions": "off"
1718
}
1819
},
1920
{
@@ -32,8 +33,7 @@
3233
"semi": "off",
3334
"indent": "off",
3435
"no-unused-vars": "off",
35-
"no-undef": "off",
36-
"@typescript-eslint/strict-boolean-expressions": "off"
36+
"no-undef": "off"
3737
}
3838
}
3939
],

.github/workflows/js-test-and-release.yml

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ jobs:
1212
check:
1313
runs-on: ubuntu-latest
1414
steps:
15-
- uses: actions/checkout@v2
16-
- uses: actions/setup-node@v2
15+
- uses: actions/checkout@v4
16+
- uses: actions/setup-node@v4
1717
with:
1818
node-version: lts/*
1919
- uses: ipfs/aegir/actions/cache-node-modules@master
@@ -27,11 +27,11 @@ jobs:
2727
strategy:
2828
matrix:
2929
os: [windows-latest, ubuntu-latest, macos-latest]
30-
node: [16]
30+
node: [20]
3131
fail-fast: true
3232
steps:
33-
- uses: actions/checkout@v2
34-
- uses: actions/setup-node@v2
33+
- uses: actions/checkout@v4
34+
- uses: actions/setup-node@v4
3535
with:
3636
node-version: ${{ matrix.node }}
3737
- uses: ipfs/aegir/actions/cache-node-modules@master
@@ -46,8 +46,8 @@ jobs:
4646
needs: check
4747
runs-on: ubuntu-latest
4848
steps:
49-
- uses: actions/checkout@v2
50-
- uses: actions/setup-node@v2
49+
- uses: actions/checkout@v4
50+
- uses: actions/setup-node@v4
5151
with:
5252
node-version: lts/*
5353
- uses: ipfs/aegir/actions/cache-node-modules@master
@@ -62,8 +62,8 @@ jobs:
6262
needs: check
6363
runs-on: ubuntu-latest
6464
steps:
65-
- uses: actions/checkout@v2
66-
- uses: actions/setup-node@v2
65+
- uses: actions/checkout@v4
66+
- uses: actions/setup-node@v4
6767
with:
6868
node-version: lts/*
6969
- uses: ipfs/aegir/actions/cache-node-modules@master
@@ -78,8 +78,8 @@ jobs:
7878
needs: check
7979
runs-on: ubuntu-latest
8080
steps:
81-
- uses: actions/checkout@v2
82-
- uses: actions/setup-node@v2
81+
- uses: actions/checkout@v4
82+
- uses: actions/setup-node@v4
8383
with:
8484
node-version: lts/*
8585
- uses: ipfs/aegir/actions/cache-node-modules@master
@@ -94,8 +94,8 @@ jobs:
9494
needs: check
9595
runs-on: ubuntu-latest
9696
steps:
97-
- uses: actions/checkout@v2
98-
- uses: actions/setup-node@v2
97+
- uses: actions/checkout@v4
98+
- uses: actions/setup-node@v4
9999
with:
100100
node-version: lts/*
101101
- uses: ipfs/aegir/actions/cache-node-modules@master
@@ -110,8 +110,8 @@ jobs:
110110
needs: check
111111
runs-on: ubuntu-latest
112112
steps:
113-
- uses: actions/checkout@v2
114-
- uses: actions/setup-node@v2
113+
- uses: actions/checkout@v4
114+
- uses: actions/setup-node@v4
115115
with:
116116
node-version: lts/*
117117
- uses: ipfs/aegir/actions/cache-node-modules@master
@@ -126,8 +126,8 @@ jobs:
126126
needs: check
127127
runs-on: ubuntu-latest
128128
steps:
129-
- uses: actions/checkout@v2
130-
- uses: actions/setup-node@v2
129+
- uses: actions/checkout@v4
130+
- uses: actions/setup-node@v4
131131
with:
132132
node-version: lts/*
133133
- uses: ipfs/aegir/actions/cache-node-modules@master
@@ -143,10 +143,10 @@ jobs:
143143
runs-on: ubuntu-latest
144144
if: github.event_name == 'push' && github.ref == 'refs/heads/main' # with #262 - 'refs/heads/${{{ github.default_branch }}}'
145145
steps:
146-
- uses: actions/checkout@v2
146+
- uses: actions/checkout@v4
147147
with:
148148
fetch-depth: 0
149-
- uses: actions/setup-node@v2
149+
- uses: actions/setup-node@v4
150150
with:
151151
node-version: lts/*
152152
- uses: ipfs/aegir/actions/cache-node-modules@master

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,4 @@ logs
2424
.tsbuildinfo*
2525
# generated by nektos/act cli
2626
workflow
27+
.coverage

.vscode/settings.json

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

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import type { PinsGetRequest, PinResults } from '@ipfs-shipyard/pinning-service-
2020
const config = new Configuration({
2121
endpointUrl, // the URI for your pinning provider, e.g. `http://localhost:3000`
2222
accessToken, // the secret token/key given to you by your pinning provider
23-
// fetchApi: fetch, // You can pass your own fetchApi implementation, but we use fetch-ponyfill by default.
23+
// fetchApi: fetch, // You can pass your own fetchApi implementation, but we use NodeJS fetch by default.
2424
})
2525

2626
const client = new RemotePinningServiceClient(config)
@@ -49,6 +49,12 @@ npm install
4949
npm run build
5050
```
5151

52+
### Updating the generated client
53+
54+
To update the client, you need to `npm run gen` npm script. This will fetch the latest version of the OpenAPI spec and generate the client. However, openapi-generator-cli does not currently generate the client code with proper import syntax. So you must modify the imports in `generated/fetch/**` directly, or just `git checkout -p` to remove the invalid import path changes.
55+
56+
If you need to modify the generated code's import paths, you will have to run `npm run postgen` manually.
57+
5258
### Contributing
5359

5460
See [CONTRIBUTING.md](CONTRIBUTING.md).

fixtures.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
// @ts-check
32
// export async function mochaGlobalSetup () {
43

package.json

Lines changed: 18 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,6 @@
5858
"require": "./dist/dist.generated/apis"
5959
}
6060
},
61-
"eslintConfig": {
62-
"extends": "ipfs",
63-
"parserOptions": {
64-
"sourceType": "module"
65-
}
66-
},
6761
"release": {
6862
"branches": [
6963
"main"
@@ -147,7 +141,7 @@
147141
},
148142
"scripts": {
149143
"ci:test": "run-s test:*",
150-
"dep-check": "aegir dep-check dist/**/*.js -- --ignore @openapitools/openapi-generator-cli @typescript-eslint/eslint-plugin @typescript-eslint/parser",
144+
"dep-check": "aegir dep-check dist/**/*.js",
151145
"fix": "run-s fix:*",
152146
"fix:lint": "aegir lint --fix",
153147
"release": "aegir release",
@@ -165,49 +159,39 @@
165159
"test:firefox": "aegir test -t browser -- --browser firefox",
166160
"test:firefox-webworker": "aegir test -t webworker -- --browser firefox",
167161
"test:electron-main": "aegir test -t electron-main",
168-
"posttest": "npx nyc report",
162+
"posttest": "npx nyc report || echo 'coverage report temporarily broken'",
169163
"pregen": "openapi-generator-cli validate -i https://raw.githubusercontent.com/ipfs/pinning-services-api-spec/v1.0.0/ipfs-pinning-service.yaml",
170164
"gen": "run-p gen:fetch",
171165
"postgen": "run-s build:generated",
172166
"gen:fetch": "openapi-generator-cli generate --generator-key fetch",
173167
"gen:node": "openapi-generator-cli generate --generator-key node",
174168
"gen:ts": "openapi-generator-cli generate --generator-key ts",
175169
"clean": "aegir clean",
170+
"reset": "aegir clean node_modules dist dist.generated",
176171
"lint": "aegir lint"
177172
},
178-
"dependencies": {
179-
"fetch-ponyfill": "^7.1.0"
180-
},
181173
"devDependencies": {
182-
"@openapitools/openapi-generator-cli": "^2.4.26",
183-
"@swc/cli": "^0.1.55",
184-
"@swc/core": "^1.2.157",
185-
"@swc/helpers": "^0.3.3",
186-
"@types/cors": "^2.8.12",
187-
"@types/eslint": "^8.4.2",
188-
"@types/express": "^4.17.13",
189-
"@types/mocha": "^10.0.0",
190-
"@types/node": "^18.8.2",
191-
"@types/portscanner": "^2.1.1",
174+
"@openapitools/openapi-generator-cli": "^2.13.5",
175+
"@swc/cli": "^0.4.0",
176+
"@swc/core": "^1.7.18",
177+
"@swc/helpers": "^0.5.12",
178+
"@types/cors": "^2.8.17",
179+
"@types/express": "^4.17.21",
180+
"@types/mocha": "^10.0.7",
181+
"@types/node": "^22.5.0",
182+
"@types/portscanner": "^2.1.4",
192183
"@types/winston": "^2.4.4",
193-
"@typescript-eslint/eslint-plugin": "^5.22.0",
194-
"@typescript-eslint/parser": "^5.22.0",
195-
"aegir": "^37.0.15",
196-
"check-aegir-project": "^1.0.3",
184+
"aegir": "^44.1.1",
197185
"cors": "^2.8.5",
198186
"cp-cli": "^2.0.0",
199187
"dotenvrc": "^1.0.1",
200-
"eslint": "^8.14.0",
201-
"eslint-plugin-import": "^2.26.0",
202-
"express": "^4.17.3",
188+
"express": "^4.19.2",
203189
"express-promise-router": "^4.1.1",
204-
"mock-ipfs-pinning-service": "^0.4.0",
190+
"mock-ipfs-pinning-service": "^0.4.2",
205191
"npm-run-all": "^4.1.5",
206192
"portscanner": "^2.2.0",
207-
"regenerator-runtime": "^0.13.9",
208-
"ts-node": "^10.7.0",
209-
"tsc-silent": "^1.2.1",
210-
"typescript": "^4.6.4",
211-
"winston": "^3.6.0"
193+
"regenerator-runtime": "^0.14.1",
194+
"tsc-silent": "^1.2.2",
195+
"winston": "^3.14.2"
212196
}
213197
}

src/index.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
import fetchPonyfill from 'fetch-ponyfill'
2-
1+
import { PinsApi as RemotePinningServiceClient } from '../dist.generated/apis/index.js'
32
import { Configuration as GeneratedConfiguration } from '../dist.generated/index.js'
43
import type { ConfigurationParameters as GeneratedConfigurationParameters } from '../dist.generated/index.js'
5-
import { PinsApi as RemotePinningServiceClient } from '../dist.generated/apis/index.js'
64

7-
interface ConfigurationParameters extends Omit<GeneratedConfigurationParameters, 'basePath'>{
5+
interface ConfigurationParameters extends Omit<GeneratedConfigurationParameters, 'basePath'> {
86
endpointUrl?: string
97
}
108
class Configuration extends GeneratedConfiguration {
@@ -14,7 +12,7 @@ class Configuration extends GeneratedConfiguration {
1412
* Prevent the need for everyone to have to override the fetch API...
1513
*/
1614
if (options.fetchApi == null) {
17-
finalOptions.fetchApi = fetchPonyfill().fetch
15+
finalOptions.fetchApi = fetch
1816
}
1917

2018
// @see https://github.com/ipfs-shipyard/js-pinning-service-http-client/issues/3

0 commit comments

Comments
 (0)