@@ -45,7 +45,7 @@ export class ImporterRegistry<sync extends 'sync' | 'async'> {
45
45
register (
46
46
importer : Importer < sync > | FileImporter < sync >
47
47
) : proto . InboundMessage_CompileRequest_Importer {
48
- const response = new proto . InboundMessage_CompileRequest_Importer ( ) ;
48
+ const message = new proto . InboundMessage_CompileRequest_Importer ( ) ;
49
49
if ( 'canonicalize' in importer ) {
50
50
if ( 'findFileUrl' in importer ) {
51
51
throw new Error (
@@ -54,14 +54,18 @@ export class ImporterRegistry<sync extends 'sync' | 'async'> {
54
54
) ;
55
55
}
56
56
57
- response . importer = { case : 'importerId' , value : this . id } ;
57
+ message . importer = { case : 'importerId' , value : this . id } ;
58
+ message . nonCanonicalScheme =
59
+ typeof importer . nonCanonicalScheme === 'string'
60
+ ? [ importer . nonCanonicalScheme ]
61
+ : importer . nonCanonicalScheme ?? [ ] ;
58
62
this . importersById . set ( this . id , importer ) ;
59
63
} else {
60
- response . importer = { case : 'fileImporterId' , value : this . id } ;
64
+ message . importer = { case : 'fileImporterId' , value : this . id } ;
61
65
this . fileImportersById . set ( this . id , importer ) ;
62
66
}
63
67
this . id += 1 ;
64
- return response ;
68
+ return message ;
65
69
}
66
70
67
71
/** Handles a canonicalization request. */
@@ -78,6 +82,9 @@ export class ImporterRegistry<sync extends 'sync' | 'async'> {
78
82
return thenOr (
79
83
importer . canonicalize ( request . url , {
80
84
fromImport : request . fromImport ,
85
+ containingUrl : request . containingUrl
86
+ ? new URL ( request . containingUrl )
87
+ : null ,
81
88
} ) ,
82
89
url =>
83
90
new proto . InboundMessage_CanonicalizeResponse ( {
@@ -157,6 +164,9 @@ export class ImporterRegistry<sync extends 'sync' | 'async'> {
157
164
return thenOr (
158
165
importer . findFileUrl ( request . url , {
159
166
fromImport : request . fromImport ,
167
+ containingUrl : request . containingUrl
168
+ ? new URL ( request . containingUrl )
169
+ : null ,
160
170
} ) ,
161
171
url => {
162
172
if ( ! url ) return new proto . InboundMessage_FileImportResponse ( ) ;
0 commit comments