Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F98013669
generate-helpers.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, Jan 8, 15:54
Size
1 KB
Mime Type
text/x-java
Expires
Fri, Jan 10, 15:54 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
23480611
Attached To
rOACCT Open Access Compliance Check Tool (OACCT)
generate-helpers.js
View Options
import
fs
from
"fs"
;
import
{
join
}
from
"path"
;
import
{
URL
,
fileURLToPath
}
from
"url"
;
import
{
minify
}
from
"terser"
;
// eslint-disable-line import/no-extraneous-dependencies
const
HELPERS_FOLDER
=
new
URL
(
"../src/helpers"
,
import
.
meta
.
url
);
const
IGNORED_FILES
=
new
Set
([
"package.json"
]);
export
default
async
function
generateHelpers
()
{
let
output
=
`
/*
* This file is auto-generated! Do not modify it directly.
* To re-generate run 'yarn gulp generate-runtime-helpers'
*/
import
template
from
"@babel/template"
;
function
helper
(
minVersion
:
string
,
source
:
string
)
{
return
Object
.
freeze
({
minVersion
,
ast
:
()
=>
template
.
program
.
ast
(
source
,
{
preserveComments
:
true
}),
})
}
export
default
Object
.
freeze
({
`
;
for
(
const
file
of
(
await
fs
.
promises
.
readdir
(
HELPERS_FOLDER
)).
sort
())
{
if
(
IGNORED_FILES
.
has
(
file
))
continue
;
if
(
file
.
startsWith
(
"."
))
continue
;
// ignore e.g. vim swap files
const
[
helperName
]
=
file
.
split
(
"."
);
const
filePath
=
join
(
fileURLToPath
(
HELPERS_FOLDER
),
file
);
if
(
!
file
.
endsWith
(
".js"
))
{
console
.
error
(
"ignoring"
,
filePath
);
continue
;
}
const
fileContents
=
await
fs
.
promises
.
readFile
(
filePath
,
"utf8"
);
const
minVersionMatch
=
fileContents
.
match
(
/^\s*\/\*\s*@minVersion\s+(?<minVersion>\S+)\s*\*\/\s*$/m
);
if
(
!
minVersionMatch
)
{
throw
new
Error
(
`@
minVersion
number
missing
in
$
{
filePath
}
`
);
}
const
{
minVersion
}
=
minVersionMatch
.
groups
;
const
source
=
await
minify
(
fileContents
,
{
mangle
:
false
,
// The _typeof helper has a custom directive that we must keep
compress
:
{
directives
:
false
},
});
output
+=
`
\
$
{
JSON
.
stringify
(
helperName
)}
:
helper
(
$
{
JSON
.
stringify
(
minVersion
)},
$
{
JSON
.
stringify
(
source
.
code
)},
),
`
;
}
output
+=
"});"
;
return
output
;
}
Event Timeline
Log In to Comment