
Research
Security News
Lazarus Strikes npm Again with New Wave of Malicious Packages
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
@marcoms/make-element
Advanced tools
make-element provides a simple and ergonomic system for creating Web Components. It is lightweight, imperative1, supports Shadow DOM, and supports property/attribute binding.
const CounterElement = makeElement({
props: {
counter: {
init: 1,
set(counter) {
this.$['counter'].textContent = counter;
},
},
},
methods: {
increment() {
++this.counter;
},
},
ready() {
this.$['increment-button'].onclick = () => {
this.increment()
};
},
shadowDom: true,
template: `
<div id="counter"></div>
<button id="increment-button">Increment</button>
`,
});
customElements.define('counter-element', CounterElement);
<counter-element></counter-element>
makeElement(definition={})
Produces a custom element class that can be passed to customElements.define
.
props
Collection of properties to register for the custom element. All configuration fields (attr
, get
, set
, …) are optional.
attr
Default: (none)
Attribute name to bind to
Every time the property is set, the value will flow into the attribute name specified here via coerce()
, then toAttr()
A property can be initialised through markup by supplying an attribute value, but subsequent changes to the attribute will not flow back to the property -- binding is therefore one-way from property to attribute
myProp: {
attr: 'my-attr',
}
<my-element my-attr="24"></my-element>
myElement.myProp; // -> 24 (initialised from attribute)
myElement.myProp = 32;
myElement.getAttribute('my-attr'); // -> 32 (flowed from property)
myElement.setAttribute('my-attr', 48);
myElement.myProp; // -> 32 (no change)
get(val)
Getter function
get(fullName) {
const [firstName, lastName] = fullName.split(' ');
return {firstName, lastName};
}
set(val)
Setter function
set(val) {
console.log('property was set to', val);
}
coerce(val)
Function to modify a property's value before it is passed to set()
and stored
coerce(val) {
return Number.parseInt(val, 10);
}
toAttr(val)
Function to modify the value to store as an attribute
fromAttr(val)
Function to modify the value retreived initially from the attribute
methods
Collection of methods to assign to the custom element prototype
methods: {
myMethod() {
console.log('hello from myMethod');
},
}
myElement.myMethod(); // -> hello from myMethod
shadowDom
Default: false
If true, shadow DOM will be used for templating
template
HTML template to initialise the custom element with
If templateUrl
is also defined, template
will be used
templateUrl
Like template
, but fetches the template from this URL
If template
is also defined, template
will be used.
cacheIds
Default: true
If true, elements in the template with an id
attribute will be stored in the $
property for easy and fast referencing.
cacheIds: true,
template: `<p id="hello">hello</p>`,
ready() {
this.$['hello'].onclick = () => {
console.log('hello');
};
},
ready()
Function invoked once the custom element has initialised its template and connected to the DOM
MIT (see license.txt
)
1: For a functional-style custom elements library, see skatejs
FAQs
Create custom elements without boilerplate
The npm package @marcoms/make-element receives a total of 1 weekly downloads. As such, @marcoms/make-element popularity was classified as not popular.
We found that @marcoms/make-element 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
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
Security News
Socket CEO Feross Aboukhadijeh discusses the open web, open source security, and how Socket tackles software supply chain attacks on The Pair Program podcast.
Security News
Opengrep continues building momentum with the alpha release of its Playground tool, demonstrating the project's rapid evolution just two months after its initial launch.