Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F100893317
method-chooser.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
Mon, Feb 3, 16:53
Size
1 KB
Mime Type
text/x-java
Expires
Wed, Feb 5, 16:53 (1 d, 20 h)
Engine
blob
Format
Raw Data
Handle
24050270
Attached To
rOACCT Open Access Compliance Check Tool (OACCT)
method-chooser.js
View Options
import
NativeMethod
from
'./methods/native.js'
;
import
IndexeDbMethod
from
'./methods/indexed-db.js'
;
import
LocalstorageMethod
from
'./methods/localstorage.js'
;
import
SimulateMethod
from
'./methods/simulate.js'
;
import
{
isNode
}
from
'./util'
;
// order is important
var
METHODS
=
[
NativeMethod
,
// fastest
IndexeDbMethod
,
LocalstorageMethod
];
/**
* The NodeMethod is loaded lazy
* so it will not get bundled in browser-builds
*/
if
(
isNode
)
{
/**
* we use the non-transpiled code for nodejs
* because it runs faster
*/
var
NodeMethod
=
require
(
'../../src/methods/'
+
// use this hack so that browserify and others
// do not import the node-method by default
// when bundling.
'node.js'
);
/**
* this will be false for webpackbuilds
* which will shim the node-method with an empty object {}
*/
if
(
typeof
NodeMethod
.
canBeUsed
===
'function'
)
{
METHODS
.
push
(
NodeMethod
);
}
}
export
function
chooseMethod
(
options
)
{
var
chooseMethods
=
[].
concat
(
options
.
methods
,
METHODS
).
filter
(
Boolean
);
// directly chosen
if
(
options
.
type
)
{
if
(
options
.
type
===
'simulate'
)
{
// only use simulate-method if directly chosen
return
SimulateMethod
;
}
var
ret
=
chooseMethods
.
find
(
function
(
m
)
{
return
m
.
type
===
options
.
type
;
});
if
(
!
ret
)
throw
new
Error
(
'method-type '
+
options
.
type
+
' not found'
);
else
return
ret
;
}
/**
* if no webworker support is needed,
* remove idb from the list so that localstorage is been chosen
*/
if
(
!
options
.
webWorkerSupport
&&
!
isNode
)
{
chooseMethods
=
chooseMethods
.
filter
(
function
(
m
)
{
return
m
.
type
!==
'idb'
;
});
}
var
useMethod
=
chooseMethods
.
find
(
function
(
method
)
{
return
method
.
canBeUsed
();
});
if
(
!
useMethod
)
throw
new
Error
(
'No useable methode found:'
+
JSON
.
stringify
(
METHODS
.
map
(
function
(
m
)
{
return
m
.
type
;
})));
else
return
useMethod
;
}
Event Timeline
Log In to Comment