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.
hooks.macro
Advanced tools
Babel Macros for React Hooks automatic memoization invalidation.
Requires babel-plugin-macros
, which is already configured for you if you are using Create React App v2+.
npm install --dev hooks.macro
yarn add --dev hooks.macro
Replace:
import { useMemo } from "react";
function MyComponent({ labels }) {
const myComputation = useMemo(
() => labels.map(label => label.toUpperCase()),
[labels]
);
}
With:
import { useAutoMemo } from "hooks.macro";
function MyComponent({ labels }) {
const myComputation = useAutoMemo(() =>
labels.map(label => label.toUpperCase())
);
}
Or even:
import { useAutoMemo } from "hooks.macro";
function MyComponent({ labels }) {
const myComputation = useAutoMemo(labels.map(label => label.toUpperCase()));
}
useAutoMemo
Exactly like React’s useMemo
but automatically identifies value dependencies.
Can be passed a factory function or directly a value, will convert the latter to a function for you.
import { useAutoMemo } from "hooks.macro";
useAutoMemo(value);
useAutoMemo(() => value);
Both become:
useMemo(() => value, [value]);
useAutoCallback
Exactly like React’s useMemo
but automatically identifies value dependencies.
import { useAutoCallback } from "hooks.macro";
useAutoCallback(() => {
doSomethingWith(value);
});
Becomes:
useCallback(
() => {
doSomethingWith(value);
},
[doSomethingWith, value]
);
To make this work I currently needed to pose some limitations. This could change in the future (PR very welcome).
Only variables created in the scope of the component body are automatically trapped as value dependencies.
Only variables, and not properties’ access, are trapped. This means that if you use obj.prop
only [obj]
will become part of the memoization invalidation keys. This is a problem for refs, and will be addressed specifically in a future release.
Currently there’s no way to add additional keys for more fine grained cache invalidation. Could be an important escape hatch when you do nasty things, but in that case I’d prefer to use useMemo
/useCallback
directly.
MIT
v0.1.1 (November 23, 2018)
FAQs
> Babel Macros for React Hooks automatic memoization invalidation.
The npm package hooks.macro receives a total of 185 weekly downloads. As such, hooks.macro popularity was classified as not popular.
We found that hooks.macro 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.
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.