Why this matters
Every dependency is a potential attack vector. Supply chain attacks (like the event-stream, ua-parser-js, and colors incidents) have demonstrated that even popular packages can be compromised. forceCalendar eliminates this entire class of vulnerability by shipping zero runtime dependencies.
Verified by running npm ls --all --json on @forcecalendar/core and @forcecalendar/interface. Both packages list zero dependencies in their package.json.
forceCalendar was built specifically for strict CSP environments, including Salesforce Locker Service -- one of the most restrictive JavaScript sandboxes in production use. The library uses no patterns that would violate common CSP directives.
| CSP Directive | Status | Notes |
|---|---|---|
| script-src 'self' | Compatible | No eval(), no new Function(), no inline scripts |
| style-src 'self' | Compatible | All styles via CSS custom properties and stylesheets |
| img-src 'self' | Compatible | No dynamic image loading from external sources |
| connect-src 'self' | Compatible | ICS fetch respects connect-src (configurable) |
| object-src 'none' | Compatible | No plugins, embeds, or applets |
| base-uri 'self' | Compatible | No base tag manipulation |
Prohibited patterns
The following JavaScript patterns are explicitly avoided throughout the codebase:
* innerHTML is used in @forcecalendar/interface renderers and is tracked as finding DOM-001. The core library is entirely DOM-free.
Salesforce Locker Service compatibility has been verified in production deployments. The library runs in Lightning Web Components without any CSP violations.
A calendar library has a specific and bounded attack surface. The following analysis covers the primary vectors relevant to forceCalendar's architecture.
ICS Parser
@forcecalendar/coreThe ICS parser processes external .ics files, which are untrusted input by definition. Malformed or maliciously crafted calendar files could exploit the parser if input validation is insufficient.
URL Handling / SSRF
@forcecalendar/coreThe ICS file fetching mechanism accepts URLs that could point to internal network resources. In server-side contexts, this creates a Server-Side Request Forgery (SSRF) vector.
DOM Rendering / XSS
@forcecalendar/interfaceThe Web Components interface layer renders event data into the DOM. Certain renderers use innerHTML to insert content, which creates a cross-site scripting vector if event data contains untrusted input.
Recurrence Engine
@forcecalendar/coreThe recurrence expansion engine processes RFC 5545 RRULE patterns. Complex or maliciously crafted rules could potentially cause excessive computation (algorithmic complexity attack).
| ID | Finding | Component | Severity | Status | Issue |
|---|---|---|---|---|---|
| ICS-001 | ICS parser lacks input size limits | @forcecalendar/core | Medium | In Progress | #37 |
| NET-001 | ICS fetch URL lacks SSRF protection | @forcecalendar/core | Medium | In Progress | #38 |
| DOM-001 | innerHTML usage in DOM renderers | @forcecalendar/interface | High | In Progress | #39 |
| CPU-001 | Recurrence engine algorithmic complexity | @forcecalendar/core | Low | Needs Analysis | -- |
Last updated: February 2026. This tracker reflects the current state of known security findings. Resolved findings remain listed for transparency.
Audit approach
- 1.Manual code review -- line-by-line analysis of core and interface packages, focusing on input handling, DOM manipulation, and data flow
- 2.Dependency analysis -- verification of zero-dependency claim via npm ls and package.json inspection
- 3.CSP compatibility testing -- deployment and validation in Salesforce Locker Service and strict CSP headers
- 4.Attack surface mapping -- identification of all input vectors, trust boundaries, and data flows
Recommended tooling
- +npm audit -- checks for known vulnerabilities in dependencies (always clean for forceCalendar)
- +eslint-plugin-security -- static analysis for common security anti-patterns in JavaScript
- +Snyk -- continuous vulnerability monitoring and code analysis
- +GitHub Dependabot -- automated dependency updates (minimal surface for forceCalendar due to zero deps)
Scope
This audit covers @forcecalendar/core and @forcecalendar/interface as published on npm. The Salesforce LWC wrapper, documentation site, and benchmark tooling are out of scope. This is a self-assessment, not a third-party audit. We encourage independent security researchers to verify these findings.
Reporting security vulnerabilities
If you discover a security vulnerability in forceCalendar, we ask that you disclose it responsibly. Please do not open a public GitHub issue for security findings.
Use GitHub Security Advisories on the relevant repository (core or interface).
security@forcecalendar.org
We aim to acknowledge reports within 48 hours and provide a remediation timeline within 7 days. Critical vulnerabilities will be patched and released as soon as a fix is verified.