Compare commits

..

1 Commits

Author SHA1 Message Date
0aa3036459 feat(tfl): export TflFeedItemType const
Replace hardcoded "tfl-alert" string with a
TflFeedItemType const object, matching the pattern
used by google-calendar and weatherkit packages.

Co-authored-by: Ona <no-reply@ona.com>
2026-03-01 18:33:02 +00:00
6 changed files with 21 additions and 22 deletions

View File

@@ -4,10 +4,10 @@ import { TimeRelevance, UnknownActionError } from "@aris/core"
import { DAVClient } from "tsdav"
import type { CalDavDAVClient, CalDavEventData, CalDavFeedItem } from "./types.ts"
import { CalDavEventStatus } from "./types.ts"
import { CalDavCalendarKey, type CalendarContext } from "./calendar-context.ts"
import { parseICalEvents } from "./ical-parser.ts"
import { CalDavEventStatus, CalDavFeedItemType } from "./types.ts"
// -- Source options --
@@ -340,7 +340,7 @@ export function computeSignals(
function createFeedItem(event: CalDavEventData, now: Date, timeZone?: string): CalDavFeedItem {
return {
id: `caldav-event-${event.uid}${event.recurrenceId ? `-${event.recurrenceId}` : ""}`,
type: CalDavFeedItemType.Event,
type: "caldav-event",
timestamp: now,
data: event,
signals: computeSignals(event, now, timeZone),

View File

@@ -5,7 +5,6 @@ export {
AttendeeRole,
AttendeeStatus,
CalDavEventStatus,
CalDavFeedItemType,
type CalDavAlarm,
type CalDavAttendee,
type CalDavDAVCalendar,

View File

@@ -64,17 +64,9 @@ export interface CalDavEventData extends Record<string, unknown> {
recurrenceId: string | null
}
// -- Feed item type --
export const CalDavFeedItemType = {
Event: "caldav-event",
} as const
export type CalDavFeedItemType = (typeof CalDavFeedItemType)[keyof typeof CalDavFeedItemType]
// -- Feed item --
export type CalDavFeedItem = FeedItem<typeof CalDavFeedItemType.Event, CalDavEventData>
export type CalDavFeedItem = FeedItem<"caldav-event", CalDavEventData>
// -- DAV client interface --

View File

@@ -1,12 +1,13 @@
export { TflSource } from "./tfl-source.ts"
export { TflApi } from "./tfl-api.ts"
export type { TflLineId } from "./tfl-api.ts"
export type {
ITflApi,
StationLocation,
TflAlertData,
TflAlertFeedItem,
TflAlertSeverity,
TflLineStatus,
TflSourceOptions,
export {
TflFeedItemType,
type ITflApi,
type StationLocation,
type TflAlertData,
type TflAlertFeedItem,
type TflAlertSeverity,
type TflLineStatus,
type TflSourceOptions,
} from "./types.ts"

View File

@@ -15,6 +15,7 @@ import type {
} from "./types.ts"
import { TflApi, lineId } from "./tfl-api.ts"
import { TflFeedItemType } from "./types.ts"
const setLinesInput = lineId.array()
@@ -150,7 +151,7 @@ export class TflSource implements FeedSource<TflAlertFeedItem> {
return {
id: `tfl-alert-${status.lineId}-${status.severity}`,
type: "tfl-alert",
type: TflFeedItemType.Alert,
timestamp: context.time,
data,
signals,

View File

@@ -20,7 +20,13 @@ export interface TflAlertData extends Record<string, unknown> {
closestStationDistance: number | null
}
export type TflAlertFeedItem = FeedItem<"tfl-alert", TflAlertData>
export const TflFeedItemType = {
Alert: "tfl-alert",
} as const
export type TflFeedItemType = (typeof TflFeedItemType)[keyof typeof TflFeedItemType]
export type TflAlertFeedItem = FeedItem<typeof TflFeedItemType.Alert, TflAlertData>
export interface TflSourceOptions {
apiKey?: string