Skip to content

Commit a831fad

Browse files
committed
fix: fix jsDeliver reader url issue
1 parent 3e98b26 commit a831fad

2 files changed

Lines changed: 24 additions & 29 deletions

File tree

lib/package-file-reader/jsDelivr.js

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ const {ext} = require('dumber-module-loader/dist/id-utils');
33
const {encode} = require('base64-arraybuffer');
44

55
// use in browser only
6-
let prefix = 'https://cdn.jsdelivr.net/npm/';
6+
let prefix = '//cdn.jsdelivr.net/npm/';
77

88
function fetchContent(fetchApi, fp) {
9-
return fetchApi(prefix + fp)
9+
return fetchApi(fp)
1010
.then(function (response) {
1111
if (!response.ok) {
1212
throw new Error(response.statusText);
@@ -27,23 +27,18 @@ function fetchContent(fetchApi, fp) {
2727
// use jsDelivr to find npm package files
2828
module.exports = function(packageConfig, mock) {
2929
// decoupling for testing
30-
let _readFile = mock && mock.readFile;
30+
let _fetch = mock && mock.fetch;
3131

32-
if (!_readFile) {
33-
let _fetch = mock && mock.fetch;
34-
35-
if (!_fetch && typeof fetch === 'function') {
36-
// get global fetch api
37-
_fetch = fetch;
38-
}
39-
40-
if (typeof _fetch !== 'function') {
41-
throw new Error('Your browser is not supported: no JavaScript fetch API')
42-
}
32+
if (!_fetch && typeof fetch === 'function') {
33+
// get global fetch api
34+
_fetch = fetch;
35+
}
4336

44-
_readFile = fp => fetchContent(_fetch, fp);
37+
if (typeof _fetch !== 'function') {
38+
throw new Error('Your browser is not supported: no JavaScript fetch API')
4539
}
4640

41+
const _readFile = fp => fetchContent(_fetch, fp);
4742

4843
const name = packageConfig.name;
4944
let packagePath;

test/package-file-reader/jsDelivr.spec.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,28 +12,28 @@ function mkResponse (text) {
1212
function mockFetch (url) {
1313
return new Promise((resolve) => {
1414
setTimeout(() => {
15-
if (url.endsWith('foo/package.json') ||
16-
url.endsWith('foo@1.0.1/package.json')) {
15+
if (url === '//cdn.jsdelivr.net/npm/foo/package.json' ||
16+
url === '//cdn.jsdelivr.net/npm/foo@1.0.1/package.json') {
1717
resolve(mkResponse('{"name":"foo","version":"1.0.1"}'));
1818

19-
} else if (url.endsWith('foo@1.0.1/fib.wasm')) {
19+
} else if (url === '//cdn.jsdelivr.net/npm/foo@1.0.1/fib.wasm') {
2020
const base64 = 'AGFzbQEAAAABBgFgAX8BfwMCAQAHBwEDZmliAAAKHwEdACAAQQJIBEBBAQ8LIABBAmsQACAAQQFrEABqDws=';
2121
resolve({
2222
ok: true,
2323
arrayBuffer: () => Promise.resolve(decode(base64))
2424
});
25-
} else if (url.endsWith('bar/package.json') ||
26-
url.endsWith('bar@1.9.0/package.json')) {
25+
} else if (url === '//cdn.jsdelivr.net/npm/bar/package.json' ||
26+
url === '//cdn.jsdelivr.net/npm/bar@1.9.0/package.json') {
2727
resolve(mkResponse('{"name":"bar","version":"1.9.0"}'));
2828

29-
} else if (url.endsWith('bar@2.0.0-rc1/package.json')) {
29+
} else if (url === '//cdn.jsdelivr.net/npm/bar@2.0.0-rc1/package.json') {
3030
resolve(mkResponse('{"name":"bar","version":"2.0.0-rc1"}'));
3131

32-
} else if (url.endsWith('@scoped/pkg/package.json') ||
33-
url.endsWith('@scoped/pkg@1.0.0/package.json')) {
32+
} else if (url === '//cdn.jsdelivr.net/npm/@scoped/pkg/package.json' ||
33+
url === '//cdn.jsdelivr.net/npm/@scoped/pkg@1.0.0/package.json') {
3434
resolve(mkResponse('{"name":"@scoped/pkg","version":"1.0.0"}'));
35-
} else if (url.endsWith('foo/dist') ||
36-
url.endsWith('foo@1.0.1/dist')) {
35+
} else if (url === '//cdn.jsdelivr.net/npm/foo/dist' ||
36+
url === '//cdn.jsdelivr.net/npm/foo@1.0.1/dist') {
3737
resolve({ok: true, redirected: true});
3838
} else {
3939
resolve({statusText: 'Not Found'});
@@ -61,7 +61,7 @@ test('jsDelivrNpmPackageFileReader returns fileRead func for existing package',
6161
return fileRead('package.json')
6262
.then(
6363
file => {
64-
t.equal(file.path, 'https://cdn.jsdelivr.net/npm/foo@1.0.1/package.json');
64+
t.equal(file.path, '//cdn.jsdelivr.net/npm/foo@1.0.1/package.json');
6565
const info = JSON.parse(file.contents);
6666
t.equal(info.name, 'foo');
6767
t.equal(info.version, '1.0.1');
@@ -80,7 +80,7 @@ test('jsDelivrNpmPackageFileReader returns fileRead func for fixed package versi
8080
return fileRead('package.json')
8181
.then(
8282
file => {
83-
t.equal(file.path, 'https://cdn.jsdelivr.net/npm/bar@2.0.0-rc1/package.json');
83+
t.equal(file.path, '//cdn.jsdelivr.net/npm/bar@2.0.0-rc1/package.json');
8484
const info = JSON.parse(file.contents);
8585
t.equal(info.name, 'bar');
8686
t.equal(info.version, '2.0.0-rc1');
@@ -100,7 +100,7 @@ test('jsDelivrNpmPackageFileReader returns fileRead func for alias package', t =
100100
return fileRead('package.json')
101101
.then(
102102
file => {
103-
t.equal(file.path, 'https://cdn.jsdelivr.net/npm/foo@1.0.1/package.json');
103+
t.equal(file.path, '//cdn.jsdelivr.net/npm/foo@1.0.1/package.json');
104104
const info = JSON.parse(file.contents);
105105
t.equal(info.name, 'bar');
106106
t.equal(info.version, '1.0.1');
@@ -133,7 +133,7 @@ test('jsDelivrNpmPackageFileReader returns fileRead func for existing scoped pac
133133
return fileRead('package.json')
134134
.then(
135135
file => {
136-
t.equal(file.path, 'https://cdn.jsdelivr.net/npm/@scoped/pkg@1.0.0/package.json');
136+
t.equal(file.path, '//cdn.jsdelivr.net/npm/@scoped/pkg@1.0.0/package.json');
137137
const info = JSON.parse(file.contents);
138138
t.equal(info.name, '@scoped/pkg');
139139
t.equal(info.version, '1.0.0');

0 commit comments

Comments
 (0)