
Research
2025 Report: Destructive Malware in Open Source Packages
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.
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.
ComponentAn 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.
PropertyAn 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
The npm package immutable-ics receives a total of 1,074 weekly downloads. As such, immutable-ics popularity was classified as popular.
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
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.

Security News
Socket CTO Ahmad Nassri shares practical AI coding techniques, tools, and team workflows, plus what still feels noisy and why shipping remains human-led.

Research
/Security News
A five-month operation turned 27 npm packages into durable hosting for browser-run lures that mimic document-sharing portals and Microsoft sign-in, targeting 25 organizations across manufacturing, industrial automation, plastics, and healthcare for credential theft.