Skip to content

Commit e162cda

Browse files
committed
Add getEsmaVersionFromUA function
1 parent 71d9f2a commit e162cda

File tree

4 files changed

+30
-30
lines changed

4 files changed

+30
-30
lines changed

README.md

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,11 @@ npm i esm-compat
1111
## Usage
1212

1313
```js
14-
import { getBuildTargetFromUA } from 'esm-compat';
14+
import { getEsmaVersionFromUA } from "esm-compat"
1515

1616
const ua = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"
17-
const target = getBuildTargetFromUA(ua)
18-
console.log(target) // => es2022
19-
```
20-
21-
## API
22-
23-
```ts
24-
export const targets: Set<string>;
25-
export const getBuildTargetFromUA: (ua: string | null) => string;
17+
const version = getEsmaVersionFromUA(ua)
18+
console.log(version) // => es2022
2619
```
2720

2821
## License

src/compat.ts

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ const jsTable: Record<string, Record<string, Version>> = {
417417
Chrome: [91, 0, 0],
418418
Deno: [1, 17, 0],
419419
Edge: [91, 0, 0],
420-
Node: [2, 0, 0],
420+
Node: [22, 0, 0],
421421
},
422422
ImportAttributes: {
423423
Chrome: [123, 0, 0],
@@ -482,14 +482,14 @@ const jsTable: Record<string, Record<string, Version>> = {
482482
Opera: [33, 0, 0],
483483
Safari: [10, 0, 0],
484484
},
485-
// NodeColonPrefixImport: {
486-
// ES: [0, 0, 0],
487-
// Node: [14, 13, 1],
488-
// },
489-
// NodeColonPrefixRequire: {
490-
// ES: [0, 0, 0],
491-
// Node: [16, 0, 0],
492-
// },
485+
NodeColonPrefixImport: {
486+
ES: [0, 0, 0],
487+
Node: [14, 13, 1],
488+
},
489+
NodeColonPrefixRequire: {
490+
ES: [0, 0, 0],
491+
Node: [16, 0, 0],
492+
},
493493
NullishCoalescing: {
494494
// Note: The latest version of "IE" failed this test: nullish coalescing operator (??)
495495
// Note: The latest version of "Rhino" failed this test: nullish coalescing operator (??)
@@ -780,7 +780,7 @@ const esmaUnsupportedFeatures: [string, number][] = [
780780

781781
const rVersion = /^(\d+)\.(\d+)\.(\d+)/;
782782

783-
/** get build target from the `User-Agent` header by checking the `jsTable` object. */
783+
/** get the build target for esm.sh service by checking the given `user-agent` header. */
784784
export const getBuildTargetFromUA = (userAgent: string | null) => {
785785
if (!userAgent || userAgent.startsWith("curl/")) {
786786
return "esnext";
@@ -825,3 +825,12 @@ export const getBuildTargetFromUA = (userAgent: string | null) => {
825825
}
826826
return "es2015";
827827
};
828+
829+
/** get the esma version of a browser by checking the given `user-agent` header. */
830+
export const getEsmaVersionFromUA = (userAgent: string | null) => {
831+
const target = getBuildTargetFromUA(userAgent);
832+
if (target.startsWith("es")) {
833+
return target;
834+
}
835+
return "esnext";
836+
};

test.mjs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
import { getBuildTargetFromUA } from "./dist/compat.js";
22

33
const testData = {
4-
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36":
5-
"es2023",
6-
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Safari/605.1.15":
7-
"es2021",
8-
"ES/2022": "es2022",
9-
"Deno/1.33.1": "deno",
10-
"Deno/1.33.2": "denonext",
11-
"Node.js/20.0.0": "node",
12-
"undici": "node",
13-
4+
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36": "es2023",
5+
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Safari/605.1.15": "es2021",
6+
"ES/2022": "es2022",
7+
"Deno/1.33.1": "deno",
8+
"Deno/1.33.2": "denonext",
9+
"Node.js/20.0.0": "node",
10+
"undici": "node",
1411
};
1512

1613
for (const [ua, expected] of Object.entries(testData)) {

types/compat.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export const targets: Set<string>;
22
export const getBuildTargetFromUA: (ua: string | null) => string;
3+
export const getEsmaVersionFromUA: (ua: string | null) => string;

0 commit comments

Comments
 (0)