Premium

ICS change detection & reconciliation

Detect changes between ICS snapshots and reconcile competing local and remote edits against a common base. The toolkit produces an inspectable result so applications can choose their conflict policy deliberately.

ICS change detection & reconciliation — Screenshot of actual package API results with sample data. The read-only result table is application-owned; this feature does not provide this screen as built-in UI. Preview build: @wts-calendar/core@1.1.0 (unpublished).
Screenshot of actual package API results with sample data. The read-only result table is application-owned; this feature does not provide this screen as built-in UI. Preview build: @wts-calendar/core@1.1.0 (unpublished).

What you configure

diffICalendar
Compare previous and current ICS content using the intended time zone.
reconcile
Supply base, local, and remote event collections with stable IDs.
conflict policy
Choose local, remote, or manual reconciliation behavior.

Integration code example

  1. Retain the previous feed or common event snapshot instead of comparing unrelated data sets.
  2. Inspect added, updated, deleted, and unchanged records.
  3. Resolve manual conflicts before writing or adopting the proposed result.

Copy this TypeScript into your application, not the browser console. Replace YOUR_WTS_LICENSE_KEY with an entitlement issued for your deployment origin. A WTS license is not a Google, Microsoft or CalDAV credential. These examples are documentation only and never execute on this page.

Install command
npm install @wts-calendar/core
TypeScript integration
import { verifyCalendarLicense } from '@wts-calendar/core';
import { PremiumCalendarInteroperability } from '@wts-calendar/core/premium-interoperability';
import type { CalendarEventInput } from '@wts-calendar/core';
const license = await verifyCalendarLicense('YOUR_WTS_LICENSE_KEY');
const interoperability = new PremiumCalendarInteroperability({ license });

// File contents and event snapshots come from your application, not a WTS service.
export function compareFeeds(previousIcs: string, currentIcs: string) {
  return interoperability.diffICalendar(previousIcs, currentIcs, 'UTC');
}
export function reconcileEvents(
  base: CalendarEventInput[],
  local: CalendarEventInput[],
  remote: CalendarEventInput[],
) {
  const result = interoperability.reconcile(base, local, remote, 'manual');
  // Keep local state until your conflict UI resolves every unresolved conflict.
  return { proposedEvents: result.events, conflicts: result.conflicts };
}

Application responsibilities

Keep stable event IDs across snapshots. Detecting a deleted event does not authorize deleting it from another system; apply your own reconciliation policy.

Behavior and lifecycle

  • Three-way conflicts retain the base, local, and remote values.
  • Manual mode preserves the local copy in the proposal while reporting the unresolved conflict.

Limits and responsibilities

  • Basic ICS import/export remains separate from this Premium change-management workflow.
  • When a provider returns a delta, preserve remoteBase so absent unchanged events are not mistaken for deletions.
Premium

Enable this capability

Optional module
@wts-calendar/core/premium-interoperability
Signed entitlement
premium-interoperability

Request the required features and deployment origins by email. Pricing and terms are confirmed privately. A WTS license is separate from provider credentials; do not send passwords or production access tokens.

Email for a license key →

This public guide does not execute Premium modules or collect license tokens.