Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F86949263
DelegatedModuleFactoryPlugin.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Wed, Oct 9, 15:03
Size
2 KB
Mime Type
text/x-c++
Expires
Fri, Oct 11, 15:03 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
21511525
Attached To
rOACCT Open Access Compliance Check Tool (OACCT)
DelegatedModuleFactoryPlugin.js
View Options
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
"use strict"
;
const
DelegatedModule
=
require
(
"./DelegatedModule"
);
// options.source
// options.type
// options.context
// options.scope
// options.content
// options.associatedObjectForCache
class
DelegatedModuleFactoryPlugin
{
constructor
(
options
)
{
this
.
options
=
options
;
options
.
type
=
options
.
type
||
"require"
;
options
.
extensions
=
options
.
extensions
||
[
""
,
".js"
,
".json"
,
".wasm"
];
}
apply
(
normalModuleFactory
)
{
const
scope
=
this
.
options
.
scope
;
if
(
scope
)
{
normalModuleFactory
.
hooks
.
factorize
.
tapAsync
(
"DelegatedModuleFactoryPlugin"
,
(
data
,
callback
)
=>
{
const
[
dependency
]
=
data
.
dependencies
;
const
{
request
}
=
dependency
;
if
(
request
&&
request
.
startsWith
(
`
$
{
scope
}
/
`
))
{
const
innerRequest
=
"."
+
request
.
substr
(
scope
.
length
);
let
resolved
;
if
(
innerRequest
in
this
.
options
.
content
)
{
resolved
=
this
.
options
.
content
[
innerRequest
];
return
callback
(
null
,
new
DelegatedModule
(
this
.
options
.
source
,
resolved
,
this
.
options
.
type
,
innerRequest
,
request
)
);
}
for
(
let
i
=
0
;
i
<
this
.
options
.
extensions
.
length
;
i
++
)
{
const
extension
=
this
.
options
.
extensions
[
i
];
const
requestPlusExt
=
innerRequest
+
extension
;
if
(
requestPlusExt
in
this
.
options
.
content
)
{
resolved
=
this
.
options
.
content
[
requestPlusExt
];
return
callback
(
null
,
new
DelegatedModule
(
this
.
options
.
source
,
resolved
,
this
.
options
.
type
,
requestPlusExt
,
request
+
extension
)
);
}
}
}
return
callback
();
}
);
}
else
{
normalModuleFactory
.
hooks
.
module
.
tap
(
"DelegatedModuleFactoryPlugin"
,
module
=>
{
const
request
=
module
.
libIdent
(
this
.
options
);
if
(
request
)
{
if
(
request
in
this
.
options
.
content
)
{
const
resolved
=
this
.
options
.
content
[
request
];
return
new
DelegatedModule
(
this
.
options
.
source
,
resolved
,
this
.
options
.
type
,
request
,
module
);
}
}
return
module
;
}
);
}
}
}
module
.
exports
=
DelegatedModuleFactoryPlugin
;
Event Timeline
Log In to Comment