
Research
Security News
Malicious PyPI Package Exploits Deezer API for Coordinated Music Piracy
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
snabbdom-jsx-lite
Advanced tools
Write snabbdom templates in .tsx with Typescript or via Babel in .jsx files.
JSX is an XML-like syntax extension to JavaScript (ECMAScript).
Typescript support for JSX supports embedding, type checking, and compiling JSX directly to JavaScript.
Instead of using snabbdom's h
(hyperscript function h(tag, data, children)
) to define the virtual tree,
with snabbdom-jsx-lite
, you get an similar jsx
function that is JSX compatible with Babel and Typescript.
Top level props can be any of the the initialized snabbdom modules
such as class
, attrs
, props
, on
, style
, hooks
e.t.c.
Install: yarn add snabbdom-jsx-lite
tsconfig.json
{
"compilerOptions": {
"jsx": "react",
"jsxFactory": "jsx"
}
}
profile.tsx
import {jsx} from 'snabbdom-jsx-lite';
const profile = (
<div>
{/* `sel` is css selector shorthand, <img sel=".profile" /> is same as <img class={profile: true} /> */}
<img sel=".profile" attrs={{src: 'avatar.png'}} />
<h3>{[user.firstName, user.lastName].join(' ')}</h3>
</div>
);
Install: yarn add snabbdom-jsx-lite @babel/plugin-transform-react-jsx
.babelrc
{
"plugins": [
[
"@babel/plugin-transform-react-jsx",
{
"pragma": "jsx",
"pragmaFrag": "Frag"
}
]
]
}
profile.jsx
import {jsx} from 'snabbdom-jsx-lite';
const profile = (
<div>
<img sel=".profile" attrs={{src: 'avatar.png'}} />
<h3>{[user.firstName, user.lastName].join(' ')}</h3>
</div>
);
Fragments let you group a list of children without adding extra nodes to the DOM.
NOTE: jsxFragmentFactory
compiler option is still being worked on in Typescript which would allow using <>
syntax.
See Typescript PR #38720.
For the time being use <Fragment>
instead.
import {jsx, Fragment} from 'snabbdom-jsx-lite';
const render = () => (
<Fragment>
<img sel=".profile" attrs={{src: 'avatar.png'}} />
<h3>{[user.firstName, user.lastName].join(' ')}</h3>
</Fragment>
);
A Clock App example is in provided in the repo that uses Functional Components and Fragments. See example/app.tsx
Demo is available at nojvek.github.io/snabbdom-jsx-lite
snabbdom-jsx-lite
's jsx
function is optimized for performance.
It avoids expensive string manipulation like other snabbdom-jsx libraries.
We test that a million vnodes can be created within 200ms on a github actions virtual core (~2GHz).
See perf.spec.tsx.
These notable third party modules support an optional flattened flavor of jsx.
FAQs
Write snabbdom templates in .jsx or .tsx (JSX for TypeScript)
The npm package snabbdom-jsx-lite receives a total of 2,928 weekly downloads. As such, snabbdom-jsx-lite popularity was classified as popular.
We found that snabbdom-jsx-lite demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 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 researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.
Security News
Newly introduced telemetry in devenv 1.4 sparked a backlash over privacy concerns, leading to the removal of its AI-powered feature after strong community pushback.