@@ -7,6 +7,14 @@ type PKG = {
7
7
name : string ;
8
8
} ;
9
9
10
+ const requesters = {
11
+ fetch : '@algolia/requester-fetch' ,
12
+ http : '@algolia/requester-node-http' ,
13
+ xhr : '@algolia/requester-browser-xhr' ,
14
+ } ;
15
+
16
+ type Requester = keyof typeof requesters ;
17
+
10
18
export function getBaseConfig ( cwd : string ) : Options {
11
19
return {
12
20
clean : true ,
@@ -16,35 +24,40 @@ export function getBaseConfig(cwd: string): Options {
16
24
} ;
17
25
}
18
26
19
- export function getDependencies ( pkg : PKG , env : 'browser' | 'node' ) : string [ ] {
27
+ export function getDependencies ( pkg : PKG , requester : Requester ) : string [ ] {
20
28
const deps = Object . keys ( pkg . dependencies || { } ) || [ ] ;
21
29
22
30
if ( pkg . name !== 'algoliasearch' ) {
23
31
return deps ;
24
32
}
25
33
26
- if ( env === 'node' ) {
27
- return deps . filter ( ( dep ) => dep !== '@algolia/requester-browser-xhr' ) ;
34
+ switch ( requester ) {
35
+ case 'http' :
36
+ return deps . filter ( ( dep ) => dep !== requesters . fetch && dep !== requesters . xhr ) ;
37
+ case 'xhr' :
38
+ return deps . filter ( ( dep ) => dep !== requesters . fetch && dep !== requesters . http ) ;
39
+ case 'fetch' :
40
+ return deps . filter ( ( dep ) => dep !== requesters . xhr && dep !== requesters . http ) ;
41
+ default :
42
+ throw new Error ( 'unknown requester' , requester ) ;
28
43
}
29
-
30
- return deps . filter ( ( dep ) => dep !== '@algolia/requester-node-http' ) ;
31
44
}
32
45
33
- export function getBaseNodeOptions ( pkg : PKG , cwd : string ) : Options {
46
+ export function getBaseNodeOptions ( pkg : PKG , cwd : string , requester : Requester = 'http' ) : Options {
34
47
return {
35
48
...getBaseConfig ( cwd ) ,
36
49
platform : 'node' ,
37
50
target : 'node14' ,
38
- external : [ ...getDependencies ( pkg , 'node' ) , 'node:crypto' ] ,
51
+ external : [ ...getDependencies ( pkg , requester ) , 'node:crypto' ] ,
39
52
} ;
40
53
}
41
54
42
- export function getBaseBrowserOptions ( pkg : PKG , cwd : string ) : Options {
55
+ export function getBaseBrowserOptions ( pkg : PKG , cwd : string , requester : Requester = 'xhr' ) : Options {
43
56
return {
44
57
...getBaseConfig ( cwd ) ,
45
58
platform : 'browser' ,
46
59
format : [ 'esm' ] ,
47
60
target : [ 'chrome109' , 'safari15.6' , 'firefox115' , 'edge126' ] ,
48
- external : [ ...getDependencies ( pkg , 'browser' ) , 'dom' ] ,
61
+ external : [ ...getDependencies ( pkg , requester ) , 'dom' ] ,
49
62
} ;
50
63
}
0 commit comments