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.
immutable-ics
Advanced tools
Immutable iCalendar document creation using typed-immutable and Immutable.js.
npm install --save immutable-ics
Import the modules:
import { Component, Property } from 'immutable-ics'
The following modules are available:
Component
: Typed Immutable Record
to build an iCalendar ComponentProperty
: Typed Immutable Record
to build an iCalendar PropertyCreate a new component and add properties:
let calendar
let event
const versionProperty = new Property({ name: 'VERSION', value: 2 })
const dtstartProperty = new Property({
name: 'DTSTART',
parameters: { VALUE: 'DATE' },
value: new Date('1991-07-11 7:00:00')
})
calendar = new Component({ name: 'VCALENDAR' })
calendar = calendar.pushProperty(versionProperty)
event = new Component({ name: 'VEVENT' })
event = event.pushProperty(dtstartProperty)
calendar = calendar.pushComponent(event)
Or instantiate everything at once:
const calendar = new Component({
name: 'VCALENDAR',
properties: [
new Property({ name: 'VERSION', value: 2 })
],
components: [
new Component({
name: 'VEVENT',
properties: [
new Property({
name: 'DTSTART',
parameters: { VALUE: 'DATE' },
value: new Date('1991-07-11 7:00:00')
})
]
})
]
})
Call #toString
on the Component
or Property
to get a string representation
of the component according to the iCalendar specifications.
calendar.toString()
Generated data:
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
DTSTART;VALUE=DATE:19910711
END:VEVENT
END:VCALENDAR
This string can then be saved to a file, sent to the user, etc.
Component
An Immutable Record
with the following properties:
name: String
: Name of the component (e.g. "VCALENDAR", "VEVENT")components: List<Component>
: List of Component
instancesproperties: List<Property>
: List of Property
instancesAll methods return a new instance of the component due to its backing on
Immutable's Record
.
Component.constructor({ name: String, components: (List<Component> | Array<Component>), properties: (List<Property> | Array<Property>) }): Component
Instantiate a new Component
with initial values. components
and
properties
will be coerced to a List
.
Component.prototype.pushComponent(component: Component): Component
Push a Component
to the list of components.
Component.prototype.pushProperty(property: Property): Component
Push a Property
to the list of properties.
Component.prototype.clear(): Component
Clear all components and properties from the component.
Component.prototype.clearComponents(): Component
Clear all components from the component.
Component.prototype.clearProperties(): Component
Clear all properties from the component.
Component.prototype.toString(): String
Get a string representation of the component according to the iCalendar specifications.
Property
An Immutable Record
with the following properties:
name: String
: Name of the property (e.g. "DTSTART", "SUMMARY")parameters: Map<String, Any>
: Property parameters (e.g. "VALUE")transform: Boolean = true
: Explicit determiner if the value is transformedvalue: Any
: Value of the propertyAll methods return a new instance of the property due to its backing on
Immutable's Record
.
Property.constructor({ name: String, parameters: (Object | Map<String, Any>), transform: Boolean = true, value: Any }): Property
Instantiate a new Property
with initial values. parameters
will be coerced
into a Map
.
Property.prototype.getTransformedValue(): String
Get the transformed value of the property's value. Transformations are conveniences to generate valid iCalendar data from JavaScript objects.
For example, providing a Date
object to a DTSTAMP
property value will
transform as such:
const dtstampProperty = new Property({
name: 'DTSTAMP'
parameters: { VALUE: 'DATE' },
value: new Date('1991-07-11 7:00:00')
})
dtstampProperty.toString() // => DTSTAMP;VALUE=DATE:19910711
Property.prototype.toString(): String
Get a string representation of the property according to the iCalendar specifications.
FAQs
Immutable iCalendar document creation
We found that immutable-ics 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.