Skip to content

Commit 43e0e20

Browse files
committed
chore!: build to ES modules
1 parent dd518f0 commit 43e0e20

File tree

7 files changed

+59
-109
lines changed

7 files changed

+59
-109
lines changed

jest.config.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { createDefaultPreset } from 'ts-jest';
1+
import { createDefaultEsmPreset } from 'ts-jest';
22

33
export default {
4-
...createDefaultPreset(),
4+
...createDefaultEsmPreset(),
55
coverageProvider: 'v8',
66
coverageThreshold: {
77
global: {

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
"name": "expo-server-sdk",
33
"version": "3.15.0",
44
"description": "Server-side library for working with Expo using Node.js",
5-
"main": "build/ExpoClient.js",
5+
"type": "module",
6+
"exports": "build/ExpoClient.js",
67
"types": "build/ExpoClient.d.ts",
78
"files": [
89
"build"
@@ -14,7 +15,7 @@
1415
"build": "yarn prepack",
1516
"lint": "eslint",
1617
"prepack": "tsc --project tsconfig.build.json",
17-
"test": "jest",
18+
"test": "NODE_OPTIONS=--experimental-vm-modules jest",
1819
"tsc": "tsc",
1920
"watch": "tsc --watch"
2021
},
@@ -33,15 +34,14 @@
3334
},
3435
"homepage": "https://github.com/expo/expo-server-sdk-node#readme",
3536
"dependencies": {
36-
"node-fetch": "^2.6.0",
37+
"node-fetch": "^3.3.2",
3738
"promise-limit": "^2.7.0",
3839
"promise-retry": "^2.0.1"
3940
},
4041
"devDependencies": {
4142
"@tsconfig/node20": "20.1.6",
4243
"@tsconfig/strictest": "2.0.5",
4344
"@types/node": "20.19.1",
44-
"@types/node-fetch": "2.6.12",
4545
"@types/promise-retry": "1.1.6",
4646
"eslint": "9.26.0",
4747
"eslint-config-universe": "15.0.3",

renovate.json

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
11
{
22
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
33
"extends": ["config:best-practices"],
4-
"labels": ["dependencies"],
5-
"packageRules": [
6-
{
7-
"matchPackageNames": ["**node-fetch"],
8-
"enabled": false
9-
}
10-
]
4+
"labels": ["dependencies"]
115
}

src/ExpoClient.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* Application Services
66
* https://expo.dev
77
*/
8-
import fetch, { Headers, Response as FetchResponse } from 'node-fetch';
8+
import fetch, { Response as FetchResponse, Headers } from 'node-fetch';
99
import assert from 'node:assert';
1010
import { Agent } from 'node:http';
1111
import { gzipSync } from 'node:zlib';
@@ -19,7 +19,7 @@ import {
1919
pushNotificationReceiptChunkLimit,
2020
requestRetryMinTimeout,
2121
sendApiUrl,
22-
} from './ExpoClientValues';
22+
} from './ExpoClientValues.ts';
2323

2424
export class Expo {
2525
static pushNotificationChunkSizeLimit = pushNotificationChunkLimit;
@@ -202,9 +202,9 @@ export class Expo {
202202
}
203203

204204
private async requestAsync(url: string, options: RequestOptions): Promise<any> {
205-
let requestBody: string | Buffer | undefined;
205+
let requestBody: string | Buffer | null= null;
206206

207-
const sdkVersion = require('../package.json').version;
207+
const sdkVersion = (await import('../package.json')).default.version;
208208
const requestHeaders = new Headers({
209209
Accept: 'application/json',
210210
'Accept-Encoding': 'gzip, deflate',
@@ -214,6 +214,7 @@ export class Expo {
214214
requestHeaders.set('Authorization', `Bearer ${this.accessToken}`);
215215
}
216216

217+
217218
if (options.body != null) {
218219
const json = JSON.stringify(options.body);
219220
assert(json != null, `JSON request body must not be null`);

src/__tests__/ExpoClient-test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import assert from 'node:assert';
55
import { randomUUID } from 'node:crypto';
66
import { gunzipSync } from 'node:zlib';
77

8-
import ExpoClient, { ExpoPushMessage } from '../ExpoClient';
9-
import { getReceiptsApiUrl, sendApiUrl } from '../ExpoClientValues';
8+
import ExpoClient, { type ExpoPushMessage } from '../ExpoClient.ts';
9+
import { getReceiptsApiUrl, sendApiUrl } from '../ExpoClientValues.ts';
1010

1111
const accessToken = 'foobar';
1212
const mockTickets = [{ status: 'ok', id: randomUUID() }];

tsconfig.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
"compilerOptions": {
44
"declaration": true,
55
"noEmit": true,
6-
"sourceMap": true
6+
"resolveJsonModule": true,
7+
"rewriteRelativeImportExtensions": true,
8+
"sourceMap": true,
9+
"verbatimModuleSyntax": true
710
},
811
"exclude": ["build", "coverage"]
912
}

yarn.lock

Lines changed: 41 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1432,16 +1432,6 @@ __metadata:
14321432
languageName: node
14331433
linkType: hard
14341434

1435-
"@types/node-fetch@npm:2.6.12":
1436-
version: 2.6.12
1437-
resolution: "@types/node-fetch@npm:2.6.12"
1438-
dependencies:
1439-
"@types/node": "npm:*"
1440-
form-data: "npm:^4.0.0"
1441-
checksum: 10c0/7693acad5499b7df2d1727d46cff092a63896dc04645f36b973dd6dd754a59a7faba76fcb777bdaa35d80625c6a9dd7257cca9c401a4bab03b04480cda7fd1af
1442-
languageName: node
1443-
linkType: hard
1444-
14451435
"@types/node@npm:*":
14461436
version: 22.10.2
14471437
resolution: "@types/node@npm:22.10.2"
@@ -2004,13 +1994,6 @@ __metadata:
20041994
languageName: node
20051995
linkType: hard
20061996

2007-
"asynckit@npm:^0.4.0":
2008-
version: 0.4.0
2009-
resolution: "asynckit@npm:0.4.0"
2010-
checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d
2011-
languageName: node
2012-
linkType: hard
2013-
20141997
"available-typed-arrays@npm:^1.0.7":
20151998
version: 1.0.7
20161999
resolution: "available-typed-arrays@npm:1.0.7"
@@ -2382,15 +2365,6 @@ __metadata:
23822365
languageName: node
23832366
linkType: hard
23842367

2385-
"combined-stream@npm:^1.0.8":
2386-
version: 1.0.8
2387-
resolution: "combined-stream@npm:1.0.8"
2388-
dependencies:
2389-
delayed-stream: "npm:~1.0.0"
2390-
checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5
2391-
languageName: node
2392-
linkType: hard
2393-
23942368
"concat-map@npm:0.0.1":
23952369
version: 0.0.1
23962370
resolution: "concat-map@npm:0.0.1"
@@ -2456,6 +2430,13 @@ __metadata:
24562430
languageName: node
24572431
linkType: hard
24582432

2433+
"data-uri-to-buffer@npm:^4.0.0":
2434+
version: 4.0.1
2435+
resolution: "data-uri-to-buffer@npm:4.0.1"
2436+
checksum: 10c0/20a6b93107597530d71d4cb285acee17f66bcdfc03fd81040921a81252f19db27588d87fc8fc69e1950c55cfb0bf8ae40d0e5e21d907230813eb5d5a7f9eb45b
2437+
languageName: node
2438+
linkType: hard
2439+
24592440
"data-view-buffer@npm:^1.0.1":
24602441
version: 1.0.2
24612442
resolution: "data-view-buffer@npm:1.0.2"
@@ -2558,13 +2539,6 @@ __metadata:
25582539
languageName: node
25592540
linkType: hard
25602541

2561-
"delayed-stream@npm:~1.0.0":
2562-
version: 1.0.0
2563-
resolution: "delayed-stream@npm:1.0.0"
2564-
checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19
2565-
languageName: node
2566-
linkType: hard
2567-
25682542
"depd@npm:2.0.0, depd@npm:^2.0.0":
25692543
version: 2.0.0
25702544
resolution: "depd@npm:2.0.0"
@@ -3299,14 +3273,13 @@ __metadata:
32993273
"@tsconfig/node20": "npm:20.1.6"
33003274
"@tsconfig/strictest": "npm:2.0.5"
33013275
"@types/node": "npm:20.19.1"
3302-
"@types/node-fetch": "npm:2.6.12"
33033276
"@types/promise-retry": "npm:1.1.6"
33043277
eslint: "npm:9.26.0"
33053278
eslint-config-universe: "npm:15.0.3"
33063279
jest: "npm:30.0.3"
33073280
jiti: "npm:2.4.2"
33083281
msw: "npm:2.10.2"
3309-
node-fetch: "npm:^2.6.0"
3282+
node-fetch: "npm:^3.3.2"
33103283
prettier: "npm:3.5.3"
33113284
promise-limit: "npm:^2.7.0"
33123285
promise-retry: "npm:^2.0.1"
@@ -3425,6 +3398,16 @@ __metadata:
34253398
languageName: node
34263399
linkType: hard
34273400

3401+
"fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4":
3402+
version: 3.2.0
3403+
resolution: "fetch-blob@npm:3.2.0"
3404+
dependencies:
3405+
node-domexception: "npm:^1.0.0"
3406+
web-streams-polyfill: "npm:^3.0.3"
3407+
checksum: 10c0/60054bf47bfa10fb0ba6cb7742acec2f37c1f56344f79a70bb8b1c48d77675927c720ff3191fa546410a0442c998d27ab05e9144c32d530d8a52fbe68f843b69
3408+
languageName: node
3409+
linkType: hard
3410+
34283411
"file-entry-cache@npm:^8.0.0":
34293412
version: 8.0.0
34303413
resolution: "file-entry-cache@npm:8.0.0"
@@ -3522,14 +3505,12 @@ __metadata:
35223505
languageName: node
35233506
linkType: hard
35243507

3525-
"form-data@npm:^4.0.0":
3526-
version: 4.0.1
3527-
resolution: "form-data@npm:4.0.1"
3508+
"formdata-polyfill@npm:^4.0.10":
3509+
version: 4.0.10
3510+
resolution: "formdata-polyfill@npm:4.0.10"
35283511
dependencies:
3529-
asynckit: "npm:^0.4.0"
3530-
combined-stream: "npm:^1.0.8"
3531-
mime-types: "npm:^2.1.12"
3532-
checksum: 10c0/bb102d570be8592c23f4ea72d7df9daa50c7792eb0cf1c5d7e506c1706e7426a4e4ae48a35b109e91c85f1c0ec63774a21ae252b66f4eb981cb8efef7d0463c8
3512+
fetch-blob: "npm:^3.1.2"
3513+
checksum: 10c0/5392ec484f9ce0d5e0d52fb5a78e7486637d516179b0eb84d81389d7eccf9ca2f663079da56f761355c0a65792810e3b345dc24db9a8bbbcf24ef3c8c88570c6
35333514
languageName: node
35343515
linkType: hard
35353516

@@ -5141,29 +5122,13 @@ __metadata:
51415122
languageName: node
51425123
linkType: hard
51435124

5144-
"mime-db@npm:1.52.0":
5145-
version: 1.52.0
5146-
resolution: "mime-db@npm:1.52.0"
5147-
checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa
5148-
languageName: node
5149-
linkType: hard
5150-
51515125
"mime-db@npm:^1.54.0":
51525126
version: 1.54.0
51535127
resolution: "mime-db@npm:1.54.0"
51545128
checksum: 10c0/8d907917bc2a90fa2df842cdf5dfeaf509adc15fe0531e07bb2f6ab15992416479015828d6a74200041c492e42cce3ebf78e5ce714388a0a538ea9c53eece284
51555129
languageName: node
51565130
linkType: hard
51575131

5158-
"mime-types@npm:^2.1.12":
5159-
version: 2.1.35
5160-
resolution: "mime-types@npm:2.1.35"
5161-
dependencies:
5162-
mime-db: "npm:1.52.0"
5163-
checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2
5164-
languageName: node
5165-
linkType: hard
5166-
51675132
"mime-types@npm:^3.0.0, mime-types@npm:^3.0.1":
51685133
version: 3.0.1
51695134
resolution: "mime-types@npm:3.0.1"
@@ -5370,17 +5335,21 @@ __metadata:
53705335
languageName: node
53715336
linkType: hard
53725337

5373-
"node-fetch@npm:^2.6.0":
5374-
version: 2.7.0
5375-
resolution: "node-fetch@npm:2.7.0"
5338+
"node-domexception@npm:^1.0.0":
5339+
version: 1.0.0
5340+
resolution: "node-domexception@npm:1.0.0"
5341+
checksum: 10c0/5e5d63cda29856402df9472335af4bb13875e1927ad3be861dc5ebde38917aecbf9ae337923777af52a48c426b70148815e890a5d72760f1b4d758cc671b1a2b
5342+
languageName: node
5343+
linkType: hard
5344+
5345+
"node-fetch@npm:^3.3.2":
5346+
version: 3.3.2
5347+
resolution: "node-fetch@npm:3.3.2"
53765348
dependencies:
5377-
whatwg-url: "npm:^5.0.0"
5378-
peerDependencies:
5379-
encoding: ^0.1.0
5380-
peerDependenciesMeta:
5381-
encoding:
5382-
optional: true
5383-
checksum: 10c0/b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8
5349+
data-uri-to-buffer: "npm:^4.0.0"
5350+
fetch-blob: "npm:^3.1.4"
5351+
formdata-polyfill: "npm:^4.0.10"
5352+
checksum: 10c0/f3d5e56190562221398c9f5750198b34cf6113aa304e34ee97c94fd300ec578b25b2c2906edba922050fce983338fde0d5d34fcb0fc3336ade5bd0e429ad7538
53845353
languageName: node
53855354
linkType: hard
53865355

@@ -6673,13 +6642,6 @@ __metadata:
66736642
languageName: node
66746643
linkType: hard
66756644

6676-
"tr46@npm:~0.0.3":
6677-
version: 0.0.3
6678-
resolution: "tr46@npm:0.0.3"
6679-
checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11
6680-
languageName: node
6681-
linkType: hard
6682-
66836645
"ts-api-utils@npm:^2.0.1":
66846646
version: 2.1.0
66856647
resolution: "ts-api-utils@npm:2.1.0"
@@ -7054,20 +7016,10 @@ __metadata:
70547016
languageName: node
70557017
linkType: hard
70567018

7057-
"webidl-conversions@npm:^3.0.0":
7058-
version: 3.0.1
7059-
resolution: "webidl-conversions@npm:3.0.1"
7060-
checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db
7061-
languageName: node
7062-
linkType: hard
7063-
7064-
"whatwg-url@npm:^5.0.0":
7065-
version: 5.0.0
7066-
resolution: "whatwg-url@npm:5.0.0"
7067-
dependencies:
7068-
tr46: "npm:~0.0.3"
7069-
webidl-conversions: "npm:^3.0.0"
7070-
checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5
7019+
"web-streams-polyfill@npm:^3.0.3":
7020+
version: 3.3.3
7021+
resolution: "web-streams-polyfill@npm:3.3.3"
7022+
checksum: 10c0/64e855c47f6c8330b5436147db1c75cb7e7474d924166800e8e2aab5eb6c76aac4981a84261dd2982b3e754490900b99791c80ae1407a9fa0dcff74f82ea3a7f
70717023
languageName: node
70727024
linkType: hard
70737025

0 commit comments

Comments
 (0)