Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
@puppet/react-layouts
Advanced tools
Puppet React Layouts is a collection of full pages and other reusable layouts approved as part of the Puppet Design System.
Puppet React Layouts is a collection of full pages and other reusable layouts approved as part of the Puppet Design System.
npm install @puppet/react-layouts
React Components utilizes Calibre and Open Sans. In order for Calibre to load, you will need to process the react-layouts scss with Webpack. This has currently been tested with webpack 4 using css-loader, sass-loader, file-loader, resolve-url-loader, and mini-css-extract-plugin. The following is an example configuration for a consuming application:
const common = {
mode: 'none',
context: path.join(__dirname, '/source/react'),
entry: ['./main.js'],
output: {
path: path.join(__dirname, '/build'),
publicPath: '/',
filename: 'application.js',
},
resolve: {
symlinks: false,
extensions: ['.js', '.jsx', '.json'],
},
module: {
rules: [
{
test: /\.scss$/,
exclude: /node_modules/,
use: [
{ loader: MiniCssExtractPlugin.loader },
{ loader: 'css-loader' },
{ loader: 'resolve-url-loader' },
{ loader: 'sass-loader', options: { sourceMap: true } },
],
},
{
test: /\.js$/,
use: 'babel-loader',
},
{
test: /\.(eot|svg|ttf|woff|woff2|png|jpg)$/,
use: 'file-loader',
},
],
},
node: {
fs: 'empty',
},
};
If you are using CRA with react-app-rewired (after following their instructions for switching from react-scripts to react-app-rewired in package.json), you can use this included rewire instead (after adding resolve-url-loader
to devDependencies):
// config-overrides.js
const rewireResolveUrlLoader = require('@puppet/react-layouts/config/rewire-resolve-url-loader.js');
module.exports = function override(config, env) {
config = rewireResolveUrlLoader(config, env);
return config;
};
If you want to npm link
or yarn link
react-layouts in a CRA app, you may need to disable CRA's ModuleScopePlugin
because resolve-url-loader
will output an absolute path to the react-layouts. This can be accomplished with an included rewire:
// config-overrides.js
const rewireRemoveModuleScopePlugin = require('@puppet/react-layouts/config/rewire-remove-module-scope-plugin.js');
module.exports = function override(config, env) {
config = rewireRemoveModuleScopePlugin(config, env);
return config;
};
The full set of react layouts are exported from the project root and can be imported as such:
import { Login } from '@puppet/react-layouts';
...
const MyProductLogin = ({ t, history }) => {
// Pulling corresponding keys from login.json
const localeStrings = mapObjIndexed(
(value, key) => t(key),
Login.defaultProps.localeStrings,
);
// Replace with server call
const onSubmit = async values => {
await new Promise(res => setTimeout(res, 1000));
console.log(`Logged in with email ${values.email}`);
history.push('/');
};
// Repace with custom error handling
const mapErrorToMessage = e => {
console.log(e);
// This should also be translated, but the messaging will depend on the platform
return 'Invalid email or password, please try again';
};
return (
<Login
product="Product"
onSubmit={onSubmit}
mapErrorToMessage={mapErrorToMessage}
renderResetPasswordAs={Link}
resetPasswordProps={{ to: '/auth/forgot-password' }}
localeStrings={localeStrings}
/>
);
};
export default withTranslation('login')(withRouter(Login));
React layouts scss depends on react-components scss. To use, place the following lines at the top of your scss hierarchy:
@import '~@puppet/sass-variables/index';
@import '~@puppet/react-layouts/src/index';
npm install
npm run build
npm start
npm run serve
: Serve the production bundlesnpm test
: Run all tests with jestnpm run test:watch
: Run tests in watch modenpm run test:coverage
: Run tests with coverage reportingnpm run lint
: Lint everythingnpm run format
: Run auto code formattingThis package was built in accordance with the patterns established in the uikit. You may find it useful to create component boilerplate with:
uikit generate component <ComponentName> -d src/client/components
or to create utility methods with
uikit generate method <methodName> -s src/client/methods
Q: Which browser versions do we support? A: Down to IE11.
FAQs
Puppet React Layouts is a collection of full pages and other reusable layouts approved as part of the Puppet Design System.
We found that @puppet/react-layouts demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 7 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
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.