
Research
Security News
Lazarus Strikes npm Again with New Wave of Malicious Packages
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
@babel/plugin-proposal-async-generator-functions
Advanced tools
Turn async generator functions into ES2015 generators
The @babel/plugin-proposal-async-generator-functions package is a Babel plugin that allows you to use async generator functions and for-await-of loops in your JavaScript code, which are part of the ECMAScript 2018 (ES9) specification. This plugin transforms async generator functions and for-await-of loops into code that can run in environments that do not support these features natively.
Async Generator Functions
This feature allows you to define asynchronous generator functions using the async function* syntax. These functions can yield values using the yield keyword, and they return an AsyncIterator which can be used with for-await-of loops.
async function* asyncGenerator() {
var i = 0;
while (i < 3) {
yield i++;
}
}
For-Await-Of Loops
This feature enables you to iterate over AsyncIterables using a for-await-of loop. The loop will wait for each promise returned by the AsyncIterable to resolve before continuing to the next iteration.
async function iterateAsyncGenerator() {
for await (const value of asyncGenerator()) {
console.log(value);
}
}
The regenerator-runtime package provides a runtime for Regenerator-compiled generator and async functions. It is similar to @babel/plugin-proposal-async-generator-functions in that it allows you to use generators and async functions in environments that do not support them natively. However, it is a runtime library rather than a compile-time Babel plugin.
babel-preset-env is a Babel preset that includes various plugins to transpile modern JavaScript to backwards-compatible versions. It includes plugins for async functions and generators, similar to @babel/plugin-proposal-async-generator-functions, but it is more comprehensive as it covers a wider range of JavaScript features and proposals.
Turn async generator functions and for-await statements to ES2015 generators
In
async function* agf() {
await 1;
yield 2;
}
Out
var _asyncGenerator = ...
let agf = (() => {
var _ref = _asyncGenerator.wrap(function* () {
yield _asyncGenerator.await(1);
yield 2;
});
return function agf() {
return _ref.apply(this, arguments);
};
})();
For await example
async function f() {
for await (let x of y) {
g(x);
}
}
Example Usage
async function* genAnswers() {
var stream = [ Promise.resolve(4), Promise.resolve(9), Promise.resolve(12) ];
var total = 0;
for await (let val of stream) {
total += await val;
yield total;
}
}
function forEach(ai, fn) {
return ai.next().then(function (r) {
if (!r.done) {
fn(r);
return forEach(ai, fn);
}
});
}
var output = 0;
forEach(genAnswers(), function(val) { output += val.value })
.then(function () {
console.log(output); // 42
});
npm install --save-dev @babel/plugin-proposal-async-generator-functions
.babelrc
(Recommended).babelrc
{
"plugins": ["@babel/plugin-proposal-async-generator-functions"]
}
babel --plugins @babel/plugin-proposal-async-generator-functions script.js
require("@babel/core").transform("code", {
plugins: ["@babel/plugin-proposal-async-generator-functions"]
});
FAQs
Turn async generator functions into ES2015 generators
The npm package @babel/plugin-proposal-async-generator-functions receives a total of 4,852,769 weekly downloads. As such, @babel/plugin-proposal-async-generator-functions popularity was classified as popular.
We found that @babel/plugin-proposal-async-generator-functions demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers 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.
Research
Security News
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
Security News
Socket CEO Feross Aboukhadijeh discusses the open web, open source security, and how Socket tackles software supply chain attacks on The Pair Program podcast.
Security News
Opengrep continues building momentum with the alpha release of its Playground tool, demonstrating the project's rapid evolution just two months after its initial launch.