@checkfirst/nestjs-outlook
Version:
An opinionated NestJS module for Microsoft Outlook integration that provides easy access to Microsoft Graph API for emails, calendars, and more.
52 lines (51 loc) • 2.06 kB
TypeScript
import { Client } from "@microsoft/microsoft-graph-client";
import { OutlookDeltaLinkRepository } from "../../repositories/outlook-delta-link.repository";
import { ResourceType } from "../../enums/resource-type.enum";
import { Event, Message } from "../../types";
export interface DeltaItem {
lastModifiedDateTime?: string;
createdDateTime?: string;
id?: string;
"@removed"?: {
reason: "changed" | "deleted";
};
}
export type DeltaEvent = Event & DeltaItem;
export type DeltaMessage = Message & DeltaItem;
export interface DeltaResponse<T> {
"@odata.nextLink"?: string;
"@odata.deltaLink"?: string;
value: T[];
}
export declare class DeltaSyncError extends Error {
readonly code: string;
readonly statusCode: number;
constructor(message: string, code: string, statusCode: number);
}
export declare class DeltaSyncService {
private readonly deltaLinkRepository;
private readonly logger;
private readonly MAX_RETRIES;
private readonly RETRY_DELAY_MS;
constructor(deltaLinkRepository: OutlookDeltaLinkRepository);
private handleDeltaResponse;
private calculateTokenExpiry;
private handleReplays;
private sortDeltaItems;
private fetchDeltaPagesCore;
private fetchAllDeltaPages;
fetchAndSortChanges(client: Client, requestUrl: string, userId: string, forceReset?: boolean, dateRange?: {
startDate: Date;
endDate: Date;
}): Promise<DeltaItem[]>;
streamDeltaChanges(client: Client, requestUrl: string, userId: string, forceReset?: boolean, dateRange?: {
startDate: Date;
endDate: Date;
}, saveDeltaLink?: boolean): AsyncGenerator<DeltaItem[], string | null, unknown>;
initializeDeltaLink(client: Client, requestUrl: string, userId: number, resourceType: ResourceType, dateRange?: {
startDate: Date;
endDate: Date;
}): Promise<DeltaItem[]>;
saveDeltaLink(userId: number, resourceType: ResourceType, deltaLink: string): Promise<void>;
getDeltaLink<T>(response: DeltaResponse<T>): string | null;
}