Skip to content

Commit fbec064

Browse files
authored
[BundleJS] Add externals query parameter support (#11400)
* Add externals support to [BundleJS] badge * retry
1 parent 7af3720 commit fbec064

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

services/bundlejs/bundlejs-package.service.js

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const schema = Joi.object({
1111

1212
const queryParamSchema = Joi.object({
1313
exports: Joi.string(),
14+
externals: Joi.string(),
1415
}).required()
1516

1617
const esbuild =
@@ -49,6 +50,10 @@ export default class BundlejsPackage extends BaseJsonService {
4950
name: 'exports',
5051
example: 'isVal,val',
5152
}),
53+
queryParam({
54+
name: 'externals',
55+
example: 'lodash,axios',
56+
}),
5257
],
5358
},
5459
},
@@ -71,20 +76,29 @@ export default class BundlejsPackage extends BaseJsonService {
7176
name: 'exports',
7277
example: 'randEmail,randFullName',
7378
}),
79+
queryParam({
80+
name: 'externals',
81+
example: 'lodash,axios',
82+
}),
7483
],
7584
},
7685
},
7786
}
7887

7988
static defaultBadgeData = { label: 'bundlejs', color: 'informational' }
8089

81-
async fetch({ scope, packageName, exports }) {
90+
async fetch({ scope, packageName, exports, externals }) {
8291
const searchParams = {
8392
q: `${scope ? `${scope}/` : ''}${packageName}`,
8493
}
8594
if (exports) {
8695
searchParams.treeshake = `[{${exports}}]`
8796
}
97+
if (externals) {
98+
searchParams.config = JSON.stringify({
99+
esbuild: { external: externals.split(',') },
100+
})
101+
}
88102
return this._requestJson({
89103
schema,
90104
url: 'https://deno.bundlejs.com',
@@ -103,8 +117,8 @@ export default class BundlejsPackage extends BaseJsonService {
103117
})
104118
}
105119

106-
async handle({ scope, packageName }, { exports }) {
107-
const json = await this.fetch({ scope, packageName, exports })
120+
async handle({ scope, packageName }, { exports, externals }) {
121+
const json = await this.fetch({ scope, packageName, exports, externals })
108122
const size = json.size.rawCompressedSize
109123
return renderSizeBadge(size, 'metric', 'minified size (gzip)')
110124
}

services/bundlejs/bundlejs-package.tester.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ t.create('bundlejs/package (scoped version select exports)')
2222
.get('/@ngneat/[email protected]?exports=randEmail,randFullName')
2323
.expectBadge({ label: 'minified size (gzip)', message: isMetricFileSize })
2424

25+
t.create('bundlejs/package (externals)')
26+
.get('/value-enhancer.json?externals=lodash,axios,jquery')
27+
.expectBadge({ label: 'minified size (gzip)', message: isMetricFileSize })
28+
2529
t.create('bundlejs/package (not found)')
2630
2731
.intercept(nock =>

0 commit comments

Comments
 (0)