
Security News
OpenClaw Skill Marketplace Emerges as Active Malware Vector
Security researchers report widespread abuse of OpenClaw skills to deliver info-stealing malware, exposing a new supply chain risk as agent ecosystems scale.
Use pre.js to load your JS and CSS files efficiently.
Pre()
.retries(10)
.css('/assets/app.css')
.js('http://www.google.com/jsapi', function() { return window.google; })
.js('/assets/app.js', function() { return window.App; })
.then({
App.start();
})
pre.js is available via bower and npm as pre-js.
It's recommended to get index.min.js and paste it as the first line of a small
script (or use whatever build tool you prefer to do this for you). This way, you
get a <4kb script that manages the loading of other scripts.
See pre.js's inline comments for more info. Here's a quick reference of the API:
Pre()
/*
* sets the maximum number of retries before giving up.
*/
.retries(10)
/*
* loads JavaScript assets. if the function returns a falsy value, it's
* assumed that the loading failed, and will try again.
*/
.js('/assets/jquery.js', function() { return window.jQuery; })
.js('http://www.google.com/jsapi', function() { return window.google; })
.js('/vendor.js', function() { return window.jQuery; })
.js('/app.js', function() { return window.App; })
/*
* defines callbacks to execute.
* these will run after the immediately-preceding `.js` or `.css` file is
* loaded. you can use as many .then() blocks as you like, inserted at
* different points.
*/
.then(function() {
google.api.load('maps');
App.start();
})
/*
* loads CSS files.
*/
.css('http://google.com/fonts?f=Roboto:300')
.css('/assets/application.css')
/*
* preloads assets (like images and fonts).
*/
.asset('/assets/image.jpg')
.asset('/assets/font.woff')
/*
* reports progress.
*/
.progress(function(e) {
document.getElementById('progress').style.width = '' + e.percent*100 + '%';
console.log("Loaded %s (%s of %s files loaded)", e.file, e.loaded, e.total);
})
/*
* reports retries when they happen.
*/
.retry(function (e) {
console.warn("Failed to fetch %s, retrying", e.file);
e.file;
})
/*
* Conditionals: runs the function block if `condition` is true.
*/
.if(condition, function (pre) {
pre.js('...');
})
Simple:
Pre()
.js(window.JSON || 'json2.js',
function() { return window.JSON; })
.js(oldie ? 'jquery-1.9.js' : 'jquery-2.1.js',
function() { return window.jQuery; })
For more complicated things:
Pre()
.if(env === 'development', function (pre) {
pre
.js('livereload.js')
.js('weinre.js')
})
Implemented on top of yepnope.js. In fact, it includes yepnope.js.
MIT.
FAQs
resilient, efficient resource loader
The npm package pre-js receives a total of 1 weekly downloads. As such, pre-js popularity was classified as not popular.
We found that pre-js demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Security researchers report widespread abuse of OpenClaw skills to deliver info-stealing malware, exposing a new supply chain risk as agent ecosystems scale.

Security News
Claude Opus 4.6 has uncovered more than 500 open source vulnerabilities, raising new considerations for disclosure, triage, and patching at scale.

Research
/Security News
Malicious dYdX client packages were published to npm and PyPI after a maintainer compromise, enabling wallet credential theft and remote code execution.