
Security News
vlt Launches "reproduce": A New Tool Challenging the Limits of Package Provenance
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
@brecert/ytl
Advanced tools
A small tagged template dsl inspired by KDL and htm that transforms through hyperscript functions
ytl
is a small htm
like dsl for writing markup in javascript.
It uses javascript's tagged templates to to allow for interpolation of values.
The syntax is fairly simple, and is meant to be easier to type than htm.
// this is a comment
// nodes
div {}
// you can have multiple root nodes
// attributes can be interpolated into for both the key and value
// attributes with no values are possible
div key="value" ${key}=${value} draggable {}
// strings can be used as a value for keys as well
div "this is a key"="foo" {}
// nodes can contain children
// strings can be used as a value
label {
img {}
"hello world"
input {}
}
// attributes can be spread
div ...${props} {}
// children can be spread as well
div {
...${children}
}
// components are possible
// where `Button` is a component reference
${Button} type="submit" {}
Since ytl
is a generic library, we need to tell it what to "compile" our templates to.
You can bind ytl
to any function of the form h(type, props, ...children)
(hyperscript).
This function can return anything - ytl
never looks at the return value.
Here's an example h()
function that returns tree nodes:
function h(type, props, ...children) {
return { type, props, children };
}
To use our custom h()
function, we need to create our own ytml
tag function by binding ytl
to our h()
function:
import ytl from '@brecert/ytl';
const ytml = ytl.bind(h);
Now we have an ytml()
template tag that can be used to produce objects in the format we created above.
Here's the whole thing for clarity:
import ytl from '@brecert/ytl';
function h(type, props, ...children) {
return { type, props, children };
}
const ytml = ytl.bind(h);
console.log( ytml`h1 id=hello { "Hello world!" }` );
// [{
// type: 'h1',
// props: { id: 'hello' },
// children: ['Hello world!']
// }]
Many thanks to htm. This project is heavily based on it, including this readme.
FAQs
A small tagged template dsl inspired by KDL and htm that transforms through hyperscript functions
The npm package @brecert/ytl receives a total of 1 weekly downloads. As such, @brecert/ytl popularity was classified as not popular.
We found that @brecert/ytl 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.
Security News
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
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.