@nangohq/types
Version:
Types used in Nango applications
136 lines (135 loc) • 4.1 kB
TypeScript
import type { OnEventType } from '../scripts/on-events/api';
export type HTTP_METHOD = 'GET' | 'POST' | 'PATCH' | 'PUT' | 'DELETE';
export type SyncTypeLiteral = 'incremental' | 'full';
export type ScriptFileType = 'actions' | 'syncs' | 'on-events' | 'post-connection-scripts';
export type ScriptTypeLiteral = 'action' | 'sync' | 'on-event';
export interface NangoYamlV1 {
integrations: Record<string, Record<string, NangoYamlV1Integration>>;
models: NangoYamlModel;
}
export interface NangoYamlV1Integration {
type?: ScriptTypeLiteral;
returns?: string | string[];
description?: string;
runs?: string;
track_deletes?: boolean;
auto_start?: boolean;
version?: string;
}
export interface NangoYamlV2 {
integrations: Record<string, NangoYamlV2Integration>;
models: NangoYamlModel;
}
export interface NangoYamlV2Endpoint {
method?: HTTP_METHOD;
path: string;
group?: string | undefined;
}
export interface NangoYamlV2Integration {
provider?: string;
syncs?: Record<string, NangoYamlV2IntegrationSync>;
actions?: Record<string, NangoYamlV2IntegrationAction>;
'on-events'?: Record<string, string[]>;
/**
* @deprecated
*/
'post-connection-scripts'?: string[];
}
export interface NangoYamlV2IntegrationSync {
endpoint: string | string[] | NangoYamlV2Endpoint | NangoYamlV2Endpoint[];
output: string | string[];
description?: string;
sync_type?: SyncTypeLiteral;
track_deletes?: boolean;
auto_start?: boolean;
runs: string;
scopes?: string | string[];
input?: string;
'webhook-subscriptions'?: string | string[];
version?: string;
}
export interface NangoYamlV2IntegrationAction {
endpoint: string | NangoYamlV2Endpoint;
output?: string | string[];
description?: string;
scopes?: string | string[];
input?: string;
version?: string;
}
export interface NangoYamlModel {
[key: string]: NangoYamlModelFields;
}
export interface NangoYamlModelFields {
[key: string]: NangoYamlModelField;
}
export type NangoYamlModelField = boolean | number | string | null | string[] | NangoYamlModelFields;
export type NangoYaml = NangoYamlV1 | NangoYamlV2;
export interface NangoYamlParsed {
yamlVersion: 'v1' | 'v2';
integrations: NangoYamlParsedIntegration[];
models: Map<string, NangoModel>;
}
export interface NangoYamlParsedIntegration {
providerConfigKey: string;
syncs: ParsedNangoSync[];
actions: ParsedNangoAction[];
onEventScripts: Record<OnEventType, string[]>;
/**
* @deprecated
*/
postConnectionScripts?: string[];
}
export interface ParsedNangoSync {
name: string;
type: 'sync';
endpoints: NangoSyncEndpointV2[];
description: string;
sync_type: SyncTypeLiteral;
track_deletes: boolean;
auto_start: boolean;
runs: string;
scopes: string[];
input: string | null;
output: string[] | null;
usedModels: string[];
webhookSubscriptions: string[];
version: string;
}
export interface ParsedNangoAction {
name: string;
type: 'action';
description: string;
input: string | null;
output: string[] | null;
endpoint: NangoSyncEndpointV2 | null;
scopes: string[];
usedModels: string[];
version: string;
}
export type LayoutMode = 'root' | 'nested';
export interface NangoModel {
name: string;
fields: NangoModelField[];
isAnon?: boolean | undefined;
}
export interface NangoModelField {
name: string;
value: string | number | boolean | null | NangoModelField[];
dynamic?: boolean | undefined;
tsType?: boolean | undefined;
model?: boolean | undefined;
array?: boolean | undefined;
union?: boolean | undefined;
optional?: boolean | undefined;
}
export type NangoSyncEndpointOld = Partial<Record<HTTP_METHOD, string | undefined>>;
export interface NangoSyncEndpointV2 {
method: HTTP_METHOD;
path: string;
group?: string | undefined;
}
export interface FlowsYaml {
integrations: Record<string, NangoYamlV2Integration & {
models: NangoYamlModel;
}>;
}