gitextract_47nb8t9x/ ├── .claude/ │ ├── settings.json │ └── skills/ │ └── react-best-practices/ │ ├── AGENTS.md │ ├── README.md │ ├── SKILL.md │ ├── metadata.json │ └── rules/ │ ├── _sections.md │ ├── _template.md │ ├── advanced-event-handler-refs.md │ ├── advanced-use-latest.md │ ├── async-api-routes.md │ ├── async-defer-await.md │ ├── async-dependencies.md │ ├── async-parallel.md │ ├── async-suspense-boundaries.md │ ├── bundle-barrel-imports.md │ ├── bundle-conditional.md │ ├── bundle-defer-third-party.md │ ├── bundle-dynamic-imports.md │ ├── bundle-preload.md │ ├── client-event-listeners.md │ ├── client-swr-dedup.md │ ├── js-batch-dom-css.md │ ├── js-cache-function-results.md │ ├── js-cache-property-access.md │ ├── js-cache-storage.md │ ├── js-combine-iterations.md │ ├── js-early-exit.md │ ├── js-hoist-regexp.md │ ├── js-index-maps.md │ ├── js-length-check-first.md │ ├── js-min-max-loop.md │ ├── js-set-map-lookups.md │ ├── js-tosorted-immutable.md │ ├── rendering-activity.md │ ├── rendering-animate-svg-wrapper.md │ ├── rendering-conditional-render.md │ ├── rendering-content-visibility.md │ ├── rendering-hoist-jsx.md │ ├── rendering-hydration-no-flicker.md │ ├── rendering-svg-precision.md │ ├── rerender-defer-reads.md │ ├── rerender-dependencies.md │ ├── rerender-derived-state.md │ ├── rerender-functional-setstate.md │ ├── rerender-lazy-state-init.md │ ├── rerender-memo.md │ ├── rerender-transitions.md │ ├── server-after-nonblocking.md │ ├── server-cache-lru.md │ ├── server-cache-react.md │ ├── server-parallel-fetching.md │ └── server-serialization.md ├── .dockerignore ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ ├── checks.yml │ └── docker-publish.yml ├── .gitignore ├── .oxlintrc.json ├── Caddyfile ├── LICENSE ├── NOTICE ├── README.md ├── applications/ │ └── web/ │ ├── .eslintrc.cjs │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── entrypoint.sh │ ├── eslint.config.js │ ├── index.html │ ├── package.json │ ├── plugins/ │ │ ├── blog.ts │ │ └── sitemap.ts │ ├── public/ │ │ ├── llms-full.txt │ │ ├── llms.txt │ │ ├── robots.txt │ │ └── site.webmanifest │ ├── scripts/ │ │ ├── build.ts │ │ └── start.ts │ ├── src/ │ │ ├── components/ │ │ │ ├── analytics-scripts.tsx │ │ │ ├── cookie-consent.tsx │ │ │ └── ui/ │ │ │ ├── composites/ │ │ │ │ └── navigation-menu/ │ │ │ │ ├── navigation-menu-editable.tsx │ │ │ │ ├── navigation-menu-items.tsx │ │ │ │ ├── navigation-menu-popover.tsx │ │ │ │ ├── navigation-menu.contexts.ts │ │ │ │ └── navigation-menu.styles.ts │ │ │ ├── primitives/ │ │ │ │ ├── animated-reveal.tsx │ │ │ │ ├── back-button.tsx │ │ │ │ ├── button.tsx │ │ │ │ ├── checkbox.tsx │ │ │ │ ├── collapsible.tsx │ │ │ │ ├── dashboard-heading.tsx │ │ │ │ ├── delete-confirmation.tsx │ │ │ │ ├── divider.tsx │ │ │ │ ├── error-state.tsx │ │ │ │ ├── fade-in.tsx │ │ │ │ ├── github-star-button.tsx │ │ │ │ ├── heading.tsx │ │ │ │ ├── input.tsx │ │ │ │ ├── list.tsx │ │ │ │ ├── markdown-component-map.ts │ │ │ │ ├── markdown-components.tsx │ │ │ │ ├── modal.tsx │ │ │ │ ├── pagination.tsx │ │ │ │ ├── provider-icon-stack.tsx │ │ │ │ ├── provider-icon.tsx │ │ │ │ ├── shimmer-text.tsx │ │ │ │ ├── staggered-backdrop-blur.tsx │ │ │ │ ├── template-text.tsx │ │ │ │ ├── text-link.tsx │ │ │ │ ├── text.tsx │ │ │ │ ├── tooltip.tsx │ │ │ │ └── upgrade-hint.tsx │ │ │ └── shells/ │ │ │ ├── layout.tsx │ │ │ ├── route-shell.tsx │ │ │ └── session-slot.tsx │ │ ├── config/ │ │ │ ├── commercial.ts │ │ │ ├── gdpr.ts │ │ │ └── plans.ts │ │ ├── content/ │ │ │ └── blog/ │ │ │ └── introducing-keeper-blog.mdx │ │ ├── features/ │ │ │ ├── auth/ │ │ │ │ └── components/ │ │ │ │ ├── auth-form.tsx │ │ │ │ ├── auth-switch-prompt.tsx │ │ │ │ ├── caldav-connect-form.tsx │ │ │ │ ├── caldav-connect-page.tsx │ │ │ │ ├── ics-connect-form.tsx │ │ │ │ └── oauth-preamble.tsx │ │ │ ├── blog/ │ │ │ │ └── components/ │ │ │ │ └── blog-post-cta.tsx │ │ │ ├── dashboard/ │ │ │ │ └── components/ │ │ │ │ ├── event-graph.tsx │ │ │ │ ├── metadata-row.tsx │ │ │ │ ├── sync-status-helpers.ts │ │ │ │ ├── sync-status.tsx │ │ │ │ └── upgrade-card.tsx │ │ │ └── marketing/ │ │ │ ├── components/ │ │ │ │ ├── marketing-cta.tsx │ │ │ │ ├── marketing-faq.tsx │ │ │ │ ├── marketing-feature-bento.tsx │ │ │ │ ├── marketing-footer.tsx │ │ │ │ ├── marketing-header.tsx │ │ │ │ ├── marketing-how-it-works.tsx │ │ │ │ ├── marketing-illustration-calendar.tsx │ │ │ │ └── marketing-pricing-section.tsx │ │ │ └── contributors.json │ │ ├── generated/ │ │ │ └── tanstack/ │ │ │ └── route-tree.generated.ts │ │ ├── hooks/ │ │ │ ├── use-animated-swr.ts │ │ │ ├── use-api-tokens.ts │ │ │ ├── use-entitlements.ts │ │ │ ├── use-events.ts │ │ │ ├── use-has-password.ts │ │ │ ├── use-passkeys.ts │ │ │ ├── use-session.ts │ │ │ ├── use-start-of-today.ts │ │ │ └── use-subscription.ts │ │ ├── illustrations/ │ │ │ ├── how-it-works-configure.tsx │ │ │ ├── how-it-works-connect.tsx │ │ │ ├── how-it-works-sync.tsx │ │ │ ├── marketing-illustration-contributors.tsx │ │ │ ├── marketing-illustration-providers.tsx │ │ │ ├── marketing-illustration-setup.tsx │ │ │ └── marketing-illustration-sync.tsx │ │ ├── index.css │ │ ├── index.d.ts │ │ ├── lib/ │ │ │ ├── analytics.ts │ │ │ ├── auth-capabilities.ts │ │ │ ├── auth-client.ts │ │ │ ├── auth.ts │ │ │ ├── blog-posts.ts │ │ │ ├── fetcher.ts │ │ │ ├── mcp-auth-flow.ts │ │ │ ├── motion-features.ts │ │ │ ├── page-metadata.ts │ │ │ ├── pluralize.ts │ │ │ ├── providers.ts │ │ │ ├── route-access-guards.ts │ │ │ ├── router-context.ts │ │ │ ├── runtime-config.ts │ │ │ ├── seo.ts │ │ │ ├── serialized-mutate.ts │ │ │ ├── session-cookie.ts │ │ │ ├── swr.ts │ │ │ └── time.ts │ │ ├── main.tsx │ │ ├── providers/ │ │ │ ├── sync-provider-logic.ts │ │ │ └── sync-provider.tsx │ │ ├── routeTree.gen.ts │ │ ├── router.ts │ │ ├── routes/ │ │ │ ├── (auth)/ │ │ │ │ ├── forgot-password.tsx │ │ │ │ ├── login.tsx │ │ │ │ ├── register.tsx │ │ │ │ ├── reset-password.tsx │ │ │ │ ├── route.tsx │ │ │ │ ├── verify-authentication.tsx │ │ │ │ └── verify-email.tsx │ │ │ ├── (dashboard)/ │ │ │ │ ├── dashboard/ │ │ │ │ │ ├── accounts/ │ │ │ │ │ │ ├── $accountId.$calendarId.tsx │ │ │ │ │ │ ├── $accountId.index.tsx │ │ │ │ │ │ ├── $accountId.setup.tsx │ │ │ │ │ │ └── route.tsx │ │ │ │ │ ├── connect/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── route.tsx │ │ │ │ │ ├── events/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── feedback.tsx │ │ │ │ │ ├── ical.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── integrations/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── report.tsx │ │ │ │ │ ├── settings/ │ │ │ │ │ │ ├── api-tokens.tsx │ │ │ │ │ │ ├── change-password.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── passkeys.tsx │ │ │ │ │ │ └── route.tsx │ │ │ │ │ └── upgrade/ │ │ │ │ │ └── index.tsx │ │ │ │ └── route.tsx │ │ │ ├── (marketing)/ │ │ │ │ ├── blog/ │ │ │ │ │ ├── $slug.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── route.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── privacy.tsx │ │ │ │ ├── route.tsx │ │ │ │ └── terms.tsx │ │ │ ├── (oauth)/ │ │ │ │ ├── auth/ │ │ │ │ │ ├── google.tsx │ │ │ │ │ ├── outlook.tsx │ │ │ │ │ └── route.tsx │ │ │ │ ├── dashboard/ │ │ │ │ │ ├── connect/ │ │ │ │ │ │ ├── apple.tsx │ │ │ │ │ │ ├── caldav.tsx │ │ │ │ │ │ ├── fastmail.tsx │ │ │ │ │ │ ├── google.tsx │ │ │ │ │ │ ├── ical-link.tsx │ │ │ │ │ │ ├── ics-file.tsx │ │ │ │ │ │ ├── microsoft.tsx │ │ │ │ │ │ ├── outlook.tsx │ │ │ │ │ │ └── route.tsx │ │ │ │ │ └── route.tsx │ │ │ │ ├── oauth/ │ │ │ │ │ └── consent.tsx │ │ │ │ └── route.tsx │ │ │ └── __root.tsx │ │ ├── server/ │ │ │ ├── cache/ │ │ │ │ └── stale-cache.ts │ │ │ ├── compression.ts │ │ │ ├── config.ts │ │ │ ├── github-stars.ts │ │ │ ├── http-handler.ts │ │ │ ├── index.ts │ │ │ ├── internal-routes.ts │ │ │ ├── logging.ts │ │ │ ├── migration-check.ts │ │ │ ├── paths.ts │ │ │ ├── proxy/ │ │ │ │ ├── http.ts │ │ │ │ └── websocket.ts │ │ │ ├── runtime.ts │ │ │ ├── types.ts │ │ │ └── vite-assets.ts │ │ ├── server.tsx │ │ ├── state/ │ │ │ ├── auth-form.ts │ │ │ ├── calendar-detail.ts │ │ │ ├── calendar-emphasized.ts │ │ │ ├── destination-ids.ts │ │ │ ├── event-graph-hover.ts │ │ │ ├── ical-feed-settings.ts │ │ │ ├── ical-sources.ts │ │ │ ├── popover-overlay.ts │ │ │ └── sync.ts │ │ ├── types/ │ │ │ └── api.ts │ │ ├── utils/ │ │ │ ├── calendars.ts │ │ │ ├── checkout.ts │ │ │ ├── cn.ts │ │ │ ├── collections.ts │ │ │ ├── errors.ts │ │ │ └── templates.ts │ │ └── vite-env.d.ts │ ├── tests/ │ │ ├── features/ │ │ │ ├── auth/ │ │ │ │ └── components/ │ │ │ │ └── auth-form.test.tsx │ │ │ └── dashboard/ │ │ │ └── components/ │ │ │ └── sync-status-helpers.test.ts │ │ ├── hooks/ │ │ │ └── use-entitlements.test.ts │ │ ├── lib/ │ │ │ ├── auth-capabilities.test.ts │ │ │ ├── auth.test.ts │ │ │ ├── mcp-auth-flow.test.ts │ │ │ ├── route-access-guards.test.ts │ │ │ ├── runtime-config.test.ts │ │ │ └── serialized-mutate.test.ts │ │ ├── providers/ │ │ │ └── sync-provider-logic.test.ts │ │ ├── server/ │ │ │ └── internal-routes.test.ts │ │ └── state/ │ │ └── sync.test.ts │ ├── tsconfig.json │ ├── tsconfig.node.json │ ├── vite.config.ts │ └── vitest.config.ts ├── bunfig.toml ├── compose.yaml ├── deploy/ │ ├── Caddyfile │ └── compose.yaml ├── docker/ │ ├── caddy/ │ │ └── Dockerfile │ ├── services/ │ │ ├── Dockerfile │ │ └── rootfs/ │ │ └── etc/ │ │ └── s6-overlay/ │ │ ├── s6-rc.d/ │ │ │ ├── api/ │ │ │ │ ├── dependencies.d/ │ │ │ │ │ └── init-db │ │ │ │ ├── run │ │ │ │ └── type │ │ │ ├── cron/ │ │ │ │ ├── dependencies.d/ │ │ │ │ │ └── init-db │ │ │ │ ├── run │ │ │ │ └── type │ │ │ ├── init-db/ │ │ │ │ ├── type │ │ │ │ └── up │ │ │ ├── user/ │ │ │ │ ├── contents.d/ │ │ │ │ │ ├── api │ │ │ │ │ ├── cron │ │ │ │ │ ├── init-db │ │ │ │ │ ├── web │ │ │ │ │ └── worker │ │ │ │ └── type │ │ │ ├── web/ │ │ │ │ ├── dependencies.d/ │ │ │ │ │ └── api │ │ │ │ ├── run │ │ │ │ └── type │ │ │ └── worker/ │ │ │ ├── dependencies.d/ │ │ │ │ └── init-db │ │ │ ├── run │ │ │ └── type │ │ └── scripts/ │ │ └── init-db │ └── standalone/ │ ├── Dockerfile │ └── rootfs/ │ └── etc/ │ ├── caddy/ │ │ └── Caddyfile │ └── s6-overlay/ │ ├── s6-rc.d/ │ │ ├── api/ │ │ │ ├── dependencies.d/ │ │ │ │ ├── init-db │ │ │ │ └── redis │ │ │ ├── run │ │ │ └── type │ │ ├── caddy/ │ │ │ ├── dependencies.d/ │ │ │ │ └── web │ │ │ ├── run │ │ │ └── type │ │ ├── cron/ │ │ │ ├── dependencies.d/ │ │ │ │ ├── init-db │ │ │ │ └── redis │ │ │ ├── run │ │ │ └── type │ │ ├── init-db/ │ │ │ ├── dependencies.d/ │ │ │ │ └── postgres │ │ │ ├── type │ │ │ └── up │ │ ├── postgres/ │ │ │ ├── dependencies.d/ │ │ │ │ └── base │ │ │ ├── run │ │ │ └── type │ │ ├── redis/ │ │ │ ├── dependencies.d/ │ │ │ │ └── base │ │ │ ├── run │ │ │ └── type │ │ ├── user/ │ │ │ ├── contents.d/ │ │ │ │ ├── api │ │ │ │ ├── caddy │ │ │ │ ├── cron │ │ │ │ ├── init-db │ │ │ │ ├── postgres │ │ │ │ ├── redis │ │ │ │ ├── web │ │ │ │ └── worker │ │ │ └── type │ │ ├── web/ │ │ │ ├── dependencies.d/ │ │ │ │ └── api │ │ │ ├── run │ │ │ └── type │ │ └── worker/ │ │ ├── dependencies.d/ │ │ │ ├── init-db │ │ │ └── redis │ │ ├── run │ │ └── type │ └── scripts/ │ └── init-db ├── knip.json ├── lefthook.yml ├── package.json ├── packages/ │ ├── auth/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── capabilities.ts │ │ │ ├── index.ts │ │ │ ├── mcp-config.ts │ │ │ ├── plugins/ │ │ │ │ └── username-only/ │ │ │ │ ├── endpoints/ │ │ │ │ │ ├── sign-in.ts │ │ │ │ │ └── sign-up.ts │ │ │ │ ├── index.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils/ │ │ │ │ ├── config.ts │ │ │ │ └── schema.ts │ │ │ ├── polar-customer-delete.ts │ │ │ └── runtime-environment.ts │ │ ├── tests/ │ │ │ ├── capabilities.test.ts │ │ │ ├── mcp-config.test.ts │ │ │ └── polar-customer-delete.test.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── broadcast/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── state.ts │ │ │ └── types.ts │ │ └── tsconfig.json │ ├── calendar/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── core/ │ │ │ │ ├── events/ │ │ │ │ │ ├── all-day.ts │ │ │ │ │ ├── content-hash.ts │ │ │ │ │ ├── events.ts │ │ │ │ │ ├── identity.ts │ │ │ │ │ ├── mappings.ts │ │ │ │ │ └── recurrence.ts │ │ │ │ ├── oauth/ │ │ │ │ │ ├── accounts.ts │ │ │ │ │ ├── config.ts │ │ │ │ │ ├── coordinated-refresher.ts │ │ │ │ │ ├── create-source-provider.ts │ │ │ │ │ ├── ensure-valid-token.ts │ │ │ │ │ ├── error-classification.ts │ │ │ │ │ ├── google.ts │ │ │ │ │ ├── microsoft.ts │ │ │ │ │ ├── providers.ts │ │ │ │ │ ├── refresh-coordinator.ts │ │ │ │ │ ├── source-provider.ts │ │ │ │ │ ├── state.ts │ │ │ │ │ ├── sync-token.ts │ │ │ │ │ ├── sync-window.ts │ │ │ │ │ └── token-provider.ts │ │ │ │ ├── source/ │ │ │ │ │ ├── event-diff.ts │ │ │ │ │ ├── sync-diagnostics.ts │ │ │ │ │ └── write-event-states.ts │ │ │ │ ├── sync/ │ │ │ │ │ ├── aggregate-runtime.ts │ │ │ │ │ ├── aggregate-tracker.ts │ │ │ │ │ ├── operations.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── sync-engine/ │ │ │ │ │ ├── flush.ts │ │ │ │ │ ├── generation.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ingest.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils/ │ │ │ │ ├── concurrency.ts │ │ │ │ ├── error.ts │ │ │ │ ├── rate-limiter.ts │ │ │ │ └── redis-rate-limiter.ts │ │ │ ├── ics/ │ │ │ │ ├── index.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils/ │ │ │ │ ├── create-snapshot.ts │ │ │ │ ├── diff-events.ts │ │ │ │ ├── fetch-adapter.ts │ │ │ │ ├── normalize-timezone.ts │ │ │ │ ├── parse-ics-calendar.ts │ │ │ │ ├── parse-ics-events.ts │ │ │ │ ├── pull-remote-calendar.ts │ │ │ │ └── types.ts │ │ │ ├── index.ts │ │ │ ├── providers/ │ │ │ │ ├── caldav/ │ │ │ │ │ ├── destination/ │ │ │ │ │ │ └── provider.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shared/ │ │ │ │ │ │ ├── client.ts │ │ │ │ │ │ ├── digest-fetch.ts │ │ │ │ │ │ ├── ics.ts │ │ │ │ │ │ └── sync-window.ts │ │ │ │ │ ├── source/ │ │ │ │ │ │ ├── auth-error-classification.ts │ │ │ │ │ │ ├── fetch-adapter.ts │ │ │ │ │ │ ├── provider.ts │ │ │ │ │ │ ├── sync-window.ts │ │ │ │ │ │ └── sync.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── fastmail/ │ │ │ │ │ ├── destination/ │ │ │ │ │ │ └── provider.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── source/ │ │ │ │ │ └── provider.ts │ │ │ │ ├── google/ │ │ │ │ │ ├── destination/ │ │ │ │ │ │ ├── provider.ts │ │ │ │ │ │ ├── serialize-event.ts │ │ │ │ │ │ └── sync.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shared/ │ │ │ │ │ │ ├── api.ts │ │ │ │ │ │ ├── backoff.ts │ │ │ │ │ │ ├── batch.ts │ │ │ │ │ │ ├── date-time.ts │ │ │ │ │ │ └── errors.ts │ │ │ │ │ ├── source/ │ │ │ │ │ │ ├── fetch-adapter.ts │ │ │ │ │ │ ├── provider.ts │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ ├── fetch-events.ts │ │ │ │ │ │ └── list-calendars.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── icloud/ │ │ │ │ │ ├── destination/ │ │ │ │ │ │ └── provider.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── source/ │ │ │ │ │ └── provider.ts │ │ │ │ └── outlook/ │ │ │ │ ├── destination/ │ │ │ │ │ ├── provider.ts │ │ │ │ │ ├── serialize-event.ts │ │ │ │ │ └── sync.ts │ │ │ │ ├── index.ts │ │ │ │ ├── shared/ │ │ │ │ │ ├── api.ts │ │ │ │ │ ├── date-time.ts │ │ │ │ │ └── errors.ts │ │ │ │ ├── source/ │ │ │ │ │ ├── fetch-adapter.ts │ │ │ │ │ ├── provider.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── fetch-events.ts │ │ │ │ │ └── list-calendars.ts │ │ │ │ └── types.ts │ │ │ └── utils/ │ │ │ ├── registry/ │ │ │ │ ├── registry.ts │ │ │ │ └── server.ts │ │ │ └── safe-fetch.ts │ │ ├── tests/ │ │ │ ├── core/ │ │ │ │ ├── events/ │ │ │ │ │ ├── content-hash.test.ts │ │ │ │ │ ├── events.test.ts │ │ │ │ │ ├── identity.test.ts │ │ │ │ │ └── recurrence.test.ts │ │ │ │ ├── oauth/ │ │ │ │ │ ├── ensure-valid-token.test.ts │ │ │ │ │ ├── error-classification.test.ts │ │ │ │ │ ├── google.test.ts │ │ │ │ │ ├── refresh-coordinator.test.ts │ │ │ │ │ ├── sync-token.test.ts │ │ │ │ │ └── sync-window.test.ts │ │ │ │ ├── source/ │ │ │ │ │ ├── event-diff.test.ts │ │ │ │ │ ├── sync-diagnostics.test.ts │ │ │ │ │ └── write-event-states.test.ts │ │ │ │ ├── sync/ │ │ │ │ │ ├── aggregate-runtime.test.ts │ │ │ │ │ ├── aggregate-tracker.test.ts │ │ │ │ │ └── operations.test.ts │ │ │ │ ├── sync-engine/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── ingest.test.ts │ │ │ │ └── utils/ │ │ │ │ └── rate-limiter.test.ts │ │ │ ├── ics/ │ │ │ │ └── utils/ │ │ │ │ ├── diff-events-extended.test.ts │ │ │ │ ├── diff-events.test.ts │ │ │ │ ├── ics-fixtures.test.ts │ │ │ │ ├── normalize-timezone.test.ts │ │ │ │ ├── outlook-windows-timezone.test.ts │ │ │ │ ├── parse-ics-calendar.test.ts │ │ │ │ └── parse-ics-events.test.ts │ │ │ ├── providers/ │ │ │ │ ├── caldav/ │ │ │ │ │ ├── destination/ │ │ │ │ │ │ └── provider.test.ts │ │ │ │ │ ├── shared/ │ │ │ │ │ │ ├── ics-fixtures.test.ts │ │ │ │ │ │ ├── ics.test.ts │ │ │ │ │ │ └── sync-window.test.ts │ │ │ │ │ └── source/ │ │ │ │ │ ├── auth-error-classification.test.ts │ │ │ │ │ ├── fetch-adapter.test.ts │ │ │ │ │ └── sync-window.test.ts │ │ │ │ ├── google/ │ │ │ │ │ ├── destination/ │ │ │ │ │ │ ├── provider.test.ts │ │ │ │ │ │ └── serialize-event.test.ts │ │ │ │ │ ├── shared/ │ │ │ │ │ │ ├── backoff.test.ts │ │ │ │ │ │ ├── batch.test.ts │ │ │ │ │ │ └── errors.test.ts │ │ │ │ │ └── source/ │ │ │ │ │ ├── fetch-adapter.test.ts │ │ │ │ │ ├── provider.test.ts │ │ │ │ │ └── utils/ │ │ │ │ │ └── fetch-events.test.ts │ │ │ │ └── outlook/ │ │ │ │ ├── destination/ │ │ │ │ │ ├── provider.test.ts │ │ │ │ │ └── serialize-event.test.ts │ │ │ │ └── source/ │ │ │ │ ├── fetch-adapter.test.ts │ │ │ │ ├── provider.test.ts │ │ │ │ └── utils/ │ │ │ │ └── fetch-events.test.ts │ │ │ └── utils/ │ │ │ └── safe-fetch.test.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── constants/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── constants/ │ │ │ │ ├── http.ts │ │ │ │ ├── scopes.ts │ │ │ │ └── time.ts │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── data-schemas/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── client.ts │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── database/ │ │ ├── drizzle/ │ │ │ ├── 0000_slimy_justice.sql │ │ │ ├── 0001_complete_golden_guardian.sql │ │ │ ├── 0002_striped_queen_noir.sql │ │ │ ├── 0003_nervous_vulcan.sql │ │ │ ├── 0004_strong_midnight.sql │ │ │ ├── 0005_dusty_nomad.sql │ │ │ ├── 0006_curious_orphan.sql │ │ │ ├── 0007_heavy_pretty_boy.sql │ │ │ ├── 0008_vengeful_azazel.sql │ │ │ ├── 0009_daily_thor_girl.sql │ │ │ ├── 0010_heavy_prima.sql │ │ │ ├── 0011_round_gorilla_man.sql │ │ │ ├── 0012_vengeful_thena.sql │ │ │ ├── 0013_parallel_union_jack.sql │ │ │ ├── 0014_modern_talon.sql │ │ │ ├── 0015_unique_impossible_man.sql │ │ │ ├── 0016_salty_nextwave.sql │ │ │ ├── 0017_outstanding_eddie_brock.sql │ │ │ ├── 0018_whole_loa.sql │ │ │ ├── 0019_tearful_doctor_doom.sql │ │ │ ├── 0020_huge_talon.sql │ │ │ ├── 0021_icy_white_queen.sql │ │ │ ├── 0022_lazy_avengers.sql │ │ │ ├── 0023_lyrical_genesis.sql │ │ │ ├── 0024_aberrant_wallop.sql │ │ │ ├── 0025_powerful_sentinels.sql │ │ │ ├── 0026_typical_impossible_man.sql │ │ │ ├── 0027_loose_hydra.sql │ │ │ ├── 0028_lush_sumo.sql │ │ │ ├── 0029_huge_yellow_claw.sql │ │ │ ├── 0030_youthful_speed.sql │ │ │ ├── 0031_glorious_joshua_kane.sql │ │ │ ├── 0032_dapper_patch.sql │ │ │ ├── 0033_square_tomorrow_man.sql │ │ │ ├── 0034_dumb_clanker.sql │ │ │ ├── 0035_known_silk_fever.sql │ │ │ ├── 0036_late_bastion.sql │ │ │ ├── 0037_thankful_machine_man.sql │ │ │ ├── 0038_military_radioactive_man.sql │ │ │ ├── 0039_fat_mad_thinker.sql │ │ │ ├── 0040_sparkling_toad.sql │ │ │ ├── 0041_keen_black_panther.sql │ │ │ ├── 0042_famous_obadiah_stane.sql │ │ │ ├── 0043_smart_demogoblin.sql │ │ │ ├── 0044_crazy_kate_bishop.sql │ │ │ ├── 0045_flippant_paper_doll.sql │ │ │ ├── 0046_rainy_steve_rogers.sql │ │ │ ├── 0047_soft_ravenous.sql │ │ │ ├── 0048_gigantic_kid_colt.sql │ │ │ ├── 0049_handy_sentinels.sql │ │ │ ├── 0050_purple_patch.sql │ │ │ ├── 0051_normal_mentallo.sql │ │ │ ├── 0052_military_trish_tilby.sql │ │ │ ├── 0053_greedy_reptil.sql │ │ │ ├── 0054_nasty_sage.sql │ │ │ ├── 0055_zippy_wolfsbane.sql │ │ │ ├── 0056_ambiguous_unus.sql │ │ │ ├── 0057_requeue_source_backfill.sql │ │ │ ├── 0058_same_robbie_robertson.sql │ │ │ ├── 0059_shocking_stone_men.sql │ │ │ ├── 0060_condemned_imperial_guard.sql │ │ │ ├── 0061_brief_toxin.sql │ │ │ ├── 0062_lame_white_tiger.sql │ │ │ ├── 0063_friendly_black_panther.sql │ │ │ ├── 0064_talented_black_knight.sql │ │ │ ├── 0065_dizzy_zarda.sql │ │ │ ├── 0066_nasty_bushwacker.sql │ │ │ ├── 0067_curvy_mole_man.sql │ │ │ ├── 0068_clumsy_starbolt.sql │ │ │ ├── 0069_amazing_storm.sql │ │ │ └── meta/ │ │ │ ├── 0000_snapshot.json │ │ │ ├── 0001_snapshot.json │ │ │ ├── 0002_snapshot.json │ │ │ ├── 0003_snapshot.json │ │ │ ├── 0004_snapshot.json │ │ │ ├── 0005_snapshot.json │ │ │ ├── 0006_snapshot.json │ │ │ ├── 0007_snapshot.json │ │ │ ├── 0008_snapshot.json │ │ │ ├── 0009_snapshot.json │ │ │ ├── 0010_snapshot.json │ │ │ ├── 0011_snapshot.json │ │ │ ├── 0012_snapshot.json │ │ │ ├── 0013_snapshot.json │ │ │ ├── 0014_snapshot.json │ │ │ ├── 0015_snapshot.json │ │ │ ├── 0016_snapshot.json │ │ │ ├── 0017_snapshot.json │ │ │ ├── 0018_snapshot.json │ │ │ ├── 0019_snapshot.json │ │ │ ├── 0020_snapshot.json │ │ │ ├── 0021_snapshot.json │ │ │ ├── 0022_snapshot.json │ │ │ ├── 0023_snapshot.json │ │ │ ├── 0024_snapshot.json │ │ │ ├── 0025_snapshot.json │ │ │ ├── 0026_snapshot.json │ │ │ ├── 0027_snapshot.json │ │ │ ├── 0028_snapshot.json │ │ │ ├── 0029_snapshot.json │ │ │ ├── 0030_snapshot.json │ │ │ ├── 0031_snapshot.json │ │ │ ├── 0032_snapshot.json │ │ │ ├── 0033_snapshot.json │ │ │ ├── 0034_snapshot.json │ │ │ ├── 0035_snapshot.json │ │ │ ├── 0036_snapshot.json │ │ │ ├── 0037_snapshot.json │ │ │ ├── 0038_snapshot.json │ │ │ ├── 0039_snapshot.json │ │ │ ├── 0040_snapshot.json │ │ │ ├── 0041_snapshot.json │ │ │ ├── 0042_snapshot.json │ │ │ ├── 0043_snapshot.json │ │ │ ├── 0044_snapshot.json │ │ │ ├── 0045_snapshot.json │ │ │ ├── 0046_snapshot.json │ │ │ ├── 0047_snapshot.json │ │ │ ├── 0048_snapshot.json │ │ │ ├── 0049_snapshot.json │ │ │ ├── 0050_snapshot.json │ │ │ ├── 0051_snapshot.json │ │ │ ├── 0052_snapshot.json │ │ │ ├── 0053_snapshot.json │ │ │ ├── 0054_snapshot.json │ │ │ ├── 0055_snapshot.json │ │ │ ├── 0056_snapshot.json │ │ │ ├── 0057_snapshot.json │ │ │ ├── 0058_snapshot.json │ │ │ ├── 0059_snapshot.json │ │ │ ├── 0060_snapshot.json │ │ │ ├── 0061_snapshot.json │ │ │ ├── 0062_snapshot.json │ │ │ ├── 0063_snapshot.json │ │ │ ├── 0064_snapshot.json │ │ │ ├── 0065_snapshot.json │ │ │ ├── 0066_snapshot.json │ │ │ ├── 0067_snapshot.json │ │ │ ├── 0068_snapshot.json │ │ │ ├── 0069_snapshot.json │ │ │ └── _journal.json │ │ ├── drizzle.config.ts │ │ ├── package.json │ │ ├── scripts/ │ │ │ └── migrate.ts │ │ ├── src/ │ │ │ ├── database/ │ │ │ │ ├── auth-schema.ts │ │ │ │ └── schema.ts │ │ │ ├── encryption.ts │ │ │ ├── index.ts │ │ │ └── utils/ │ │ │ └── database.ts │ │ ├── tests/ │ │ │ └── database/ │ │ │ └── auth-schema.test.ts │ │ ├── tsconfig.json │ │ ├── turbo.json │ │ └── vitest.config.ts │ ├── digest-fetch/ │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── fixtures/ │ │ ├── ics/ │ │ │ ├── berkeley-ib-seminars.ics │ │ │ ├── calendarlabs-us-holidays.ics │ │ │ ├── google-canada-holidays.ics │ │ │ ├── google-us-holidays.ics │ │ │ ├── govuk-bank-holidays-england-wales.ics │ │ │ ├── hebcal-geoname-3448439.ics │ │ │ ├── meetup-ny-tech.ics │ │ │ ├── meetup-torontojs.ics │ │ │ ├── outlook-exchange-windows-timezones.ics │ │ │ └── stanford-featured-events.ics │ │ ├── package.json │ │ ├── src/ │ │ │ ├── cache.ts │ │ │ ├── index.ts │ │ │ ├── manifest.ts │ │ │ ├── schema.ts │ │ │ └── scripts/ │ │ │ ├── sync-fixtures.ts │ │ │ └── verify-fixtures.ts │ │ └── tsconfig.json │ ├── otelemetry/ │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── premium/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ └── subscription.ts │ │ └── tsconfig.json │ ├── queue/ │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── sync/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── destination-errors.ts │ │ │ ├── index.ts │ │ │ ├── resolve-provider.ts │ │ │ ├── sync-lock.ts │ │ │ └── sync-user.ts │ │ ├── tests/ │ │ │ ├── destination-errors.test.ts │ │ │ └── sync-lock.test.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ └── typescript-config/ │ ├── package.json │ └── tsconfig.json ├── scripts/ │ └── bun-test.ts ├── services/ │ ├── api/ │ │ ├── Dockerfile │ │ ├── entrypoint.sh │ │ ├── package.json │ │ ├── scripts/ │ │ │ └── build.ts │ │ ├── src/ │ │ │ ├── context.ts │ │ │ ├── env.ts │ │ │ ├── handlers/ │ │ │ │ ├── auth-oauth-resource.ts │ │ │ │ ├── auth.ts │ │ │ │ ├── websocket-initial-status.ts │ │ │ │ ├── websocket-payload.ts │ │ │ │ └── websocket.ts │ │ │ ├── index.ts │ │ │ ├── middleware/ │ │ │ │ └── cors.ts │ │ │ ├── mutations/ │ │ │ │ ├── index.ts │ │ │ │ ├── providers/ │ │ │ │ │ ├── caldav.ts │ │ │ │ │ ├── google.ts │ │ │ │ │ └── outlook.ts │ │ │ │ └── resolve-credentials.ts │ │ │ ├── provider-display.ts │ │ │ ├── queries/ │ │ │ │ ├── get-event-count.ts │ │ │ │ ├── get-event.ts │ │ │ │ ├── get-events-in-range.ts │ │ │ │ ├── get-sync-statuses.ts │ │ │ │ ├── list-destinations.ts │ │ │ │ ├── list-mappings.ts │ │ │ │ └── list-sources.ts │ │ │ ├── read-models.ts │ │ │ ├── routes/ │ │ │ │ └── api/ │ │ │ │ ├── accounts/ │ │ │ │ │ ├── [id].ts │ │ │ │ │ └── index.ts │ │ │ │ ├── cal/ │ │ │ │ │ └── [identifier].ts │ │ │ │ ├── destinations/ │ │ │ │ │ ├── [id].ts │ │ │ │ │ ├── authorize.ts │ │ │ │ │ ├── caldav/ │ │ │ │ │ │ ├── discover.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── callback/ │ │ │ │ │ │ └── [provider].ts │ │ │ │ │ └── index.ts │ │ │ │ ├── entitlements.ts │ │ │ │ ├── events/ │ │ │ │ │ ├── count.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── feedback/ │ │ │ │ │ └── index.ts │ │ │ │ ├── health.ts │ │ │ │ ├── ical/ │ │ │ │ │ ├── settings.ts │ │ │ │ │ └── token.ts │ │ │ │ ├── ics/ │ │ │ │ │ ├── [id]/ │ │ │ │ │ │ └── destinations.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── source-routes.ts │ │ │ │ ├── mappings/ │ │ │ │ │ └── index.ts │ │ │ │ ├── socket/ │ │ │ │ │ ├── token.ts │ │ │ │ │ └── url.ts │ │ │ │ ├── sources/ │ │ │ │ │ ├── [id]/ │ │ │ │ │ │ ├── destinations.ts │ │ │ │ │ │ ├── mapping-routes.ts │ │ │ │ │ │ ├── source-item-routes.ts │ │ │ │ │ │ └── sources.ts │ │ │ │ │ ├── [id].ts │ │ │ │ │ ├── authorize.ts │ │ │ │ │ ├── caldav/ │ │ │ │ │ │ ├── discover.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── callback/ │ │ │ │ │ │ └── [provider].ts │ │ │ │ │ ├── callback-state.ts │ │ │ │ │ ├── google/ │ │ │ │ │ │ ├── [id]/ │ │ │ │ │ │ │ └── destinations.ts │ │ │ │ │ │ ├── calendars.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── outlook/ │ │ │ │ │ ├── [id]/ │ │ │ │ │ │ └── destinations.ts │ │ │ │ │ ├── calendars.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── sync/ │ │ │ │ │ └── status.ts │ │ │ │ ├── tokens/ │ │ │ │ │ ├── [id].ts │ │ │ │ │ └── index.ts │ │ │ │ ├── v1/ │ │ │ │ │ ├── accounts/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── calendars/ │ │ │ │ │ │ ├── [calendarId]/ │ │ │ │ │ │ │ └── invites.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── events/ │ │ │ │ │ │ ├── [id].ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── ical/ │ │ │ │ │ └── index.ts │ │ │ │ └── webhook/ │ │ │ │ └── polar.ts │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ ├── api-rate-limit.ts │ │ │ ├── api-tokens.ts │ │ │ ├── background-task.ts │ │ │ ├── caldav-sources.ts │ │ │ ├── caldav.ts │ │ │ ├── date-range.ts │ │ │ ├── destinations.ts │ │ │ ├── enqueue-push-sync.ts │ │ │ ├── ical-format.ts │ │ │ ├── ical.ts │ │ │ ├── invalidate-calendars.ts │ │ │ ├── logging.ts │ │ │ ├── middleware.ts │ │ │ ├── oauth-calendar-listing.ts │ │ │ ├── oauth-callback-state.ts │ │ │ ├── oauth-refresh.ts │ │ │ ├── oauth-source-credentials.ts │ │ │ ├── oauth-sources.ts │ │ │ ├── oauth.ts │ │ │ ├── provider-display.ts │ │ │ ├── request-body.ts │ │ │ ├── request-query.ts │ │ │ ├── responses.ts │ │ │ ├── route-handler.ts │ │ │ ├── safe-fetch-options.ts │ │ │ ├── source-destination-mappings.ts │ │ │ ├── source-lifecycle.ts │ │ │ ├── source-sync-defaults.ts │ │ │ ├── sources.ts │ │ │ ├── state.ts │ │ │ └── user.ts │ │ ├── tests/ │ │ │ ├── handlers/ │ │ │ │ ├── auth-oauth-resource.test.ts │ │ │ │ ├── auth.test.ts │ │ │ │ ├── websocket-initial-status.test.ts │ │ │ │ └── websocket-payload.test.ts │ │ │ ├── routes/ │ │ │ │ └── api/ │ │ │ │ ├── ical/ │ │ │ │ │ └── settings.test.ts │ │ │ │ ├── ics/ │ │ │ │ │ └── source-routes.test.ts │ │ │ │ └── sources/ │ │ │ │ └── [id]/ │ │ │ │ ├── mapping-routes.test.ts │ │ │ │ └── source-item-routes.test.ts │ │ │ └── utils/ │ │ │ ├── account-locks.test.ts │ │ │ ├── api-rate-limit.test.ts │ │ │ ├── enqueue-push-sync.test.ts │ │ │ ├── ical.test.ts │ │ │ ├── oauth-sources.test.ts │ │ │ ├── oauth.test.ts │ │ │ ├── request-body.test.ts │ │ │ ├── source-destination-mappings.test.ts │ │ │ ├── source-lifecycle.test.ts │ │ │ └── source-sync-defaults.test.ts │ │ ├── tsconfig.json │ │ ├── turbo.json │ │ └── vitest.config.ts │ ├── cron/ │ │ ├── Dockerfile │ │ ├── entrypoint.sh │ │ ├── package.json │ │ ├── scripts/ │ │ │ └── build.ts │ │ ├── src/ │ │ │ ├── context.ts │ │ │ ├── env.ts │ │ │ ├── index.ts │ │ │ ├── jobs/ │ │ │ │ ├── ingest-sources.ts │ │ │ │ ├── push-destinations.ts │ │ │ │ └── reconcile-subscriptions.ts │ │ │ ├── migration-check.ts │ │ │ └── utils/ │ │ │ ├── baker.ts │ │ │ ├── get-jobs.ts │ │ │ ├── get-sources.ts │ │ │ ├── inject-jobs.ts │ │ │ ├── logging.ts │ │ │ ├── register-jobs.ts │ │ │ ├── safe-fetch-options.ts │ │ │ ├── source-plan-selection.ts │ │ │ └── with-wide-event.ts │ │ ├── tests/ │ │ │ ├── jobs/ │ │ │ │ └── reconcile-subscriptions.test.ts │ │ │ ├── migration-check.test.ts │ │ │ └── utils/ │ │ │ ├── get-jobs.test.ts │ │ │ └── source-plan-selection.test.ts │ │ ├── tsconfig.json │ │ ├── turbo.json │ │ └── vitest.config.ts │ ├── mcp/ │ │ ├── Dockerfile │ │ ├── entrypoint.sh │ │ ├── package.json │ │ ├── scripts/ │ │ │ └── build.ts │ │ ├── src/ │ │ │ ├── context.ts │ │ │ ├── env.ts │ │ │ ├── index.ts │ │ │ ├── mcp-handler.ts │ │ │ ├── routes/ │ │ │ │ ├── health.ts │ │ │ │ └── mcp.ts │ │ │ ├── toolset.ts │ │ │ └── utils/ │ │ │ ├── logging.ts │ │ │ ├── middleware.ts │ │ │ └── route-handler.ts │ │ ├── tests/ │ │ │ ├── mcp-handler.test.ts │ │ │ └── toolset.test.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ └── worker/ │ ├── Dockerfile │ ├── entrypoint.sh │ ├── package.json │ ├── scripts/ │ │ └── build.ts │ ├── src/ │ │ ├── context.ts │ │ ├── env.ts │ │ ├── index.ts │ │ ├── processor.ts │ │ └── utils/ │ │ └── logging.ts │ └── tsconfig.json └── turbo.json