
Security News
/Research
Wallet-Draining npm Package Impersonates Nodemailer to Hijack Crypto Transactions
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
@simple-contacts/react-router-async-routes
Advanced tools
Async Routes and transitions for React Router v4
Extend <Route> API to include async rendering and transitions. This is useful to do webpack code-splitting and fetching essential data before rendering.
npm install @simple-contacts/react-router-async-routes --save
or
yarn add @simple-contacts/react-router-async-routes
To make a asynchronous route, use the async
prop. When using the async prop, the component prop becomes a function that evaluates to a promise of the component. The render prop becomes a promise of the render method. The transition prop can include options for 'react-transition-group'.
import("isomorphic-fetch");
import { render } from "react-dom";
import { BrowserRouter } from "react-router-dom";
import Home from "./home";
import Page1 from "./page1";
import Page3 from "./page3";
import { Route } from "react-router-async-routes";
const FadeInTransition = {
transitionName: "example",
transitionAppear: false,
transitionEnterTimeout: 500,
transitionEnter: true,
transitionLeave: false
};
const myErrorHandler = () => {
console.error("Error loading page...");
};
const routes = (
<div>
{/* Original API */}
<Route path="/" component={Home} />
{/* Route with transition */}
<Route transition={FadeInTransition} path="/page1" component={Page1} />
{/* Code Split */}
<Route
async
path="/page2"
component={() => import("./page2")}
onError={myErrorHandler}
/>
{/* Fetch data before render */}
<Route
async
path="/page3"
render={() => fetch("/api/endpoint1").then(data => <Page3 data={data} />)}
/>
{/* Code split, data fetch and transition */}
<Route
async
transition={FadeInTransition}
path="/page4"
render={async () => {
const [Page5, data] = await Promise.all([
import("./page3"),
fetch("/api/endpoint2")
]);
return <Page3 data={data} />;
}}
/>
</div>
);
render(<BrowserRouter>{routes}</BrowserRouter>);
The async routes can be preprocessed and resolved using resolveRoutes. Once resolved, React.renderToString can be used.
import express from "express";
import { resolveRoutes } from "react-router-async-routes";
import { renderToString } from "react-dom/server";
import App, { routes } from "./App";
app.use(async function(req, res) {
const resolvedRoutes = await ResolveRoutes(routes, req.url);
const html = renderToString(
<StaticRouter location={req.url} context={{}}>
{resolvedRoutes}
</StaticRouter>
);
res.send(`<body><div id='app'>${html}</div></body>`);
});
To run the example do a yarn start. You can view the example using the webpack-dev-server via http://localhost:8080. When changes are detected to server or client, the service is restarted automatically (via pm2).
If you want to see the example with bundled files. Run yarn run build-example
, then yarn start
, and access via http://localhost:8081.
FAQs
Async Routes and transitions for React Router v4
The npm package @simple-contacts/react-router-async-routes receives a total of 7 weekly downloads. As such, @simple-contacts/react-router-async-routes popularity was classified as not popular.
We found that @simple-contacts/react-router-async-routes 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.
Security News
/Research
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Security News
/Research
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.