ngx-vcard
Version:
Generate an RFC compliant vCard and download it.
344 lines (343 loc) • 10.9 kB
TypeScript
import { BasicPropertyParameters } from './parameter/BasicPropertyParameters.type';
/**
* vCard interface with properties for the vCard format, which allows the capture and exchange of
information normally stored within an address book or directory application.
* Explanations from [RFC 6350](https://tools.ietf.org/html/rfc6350)
* Does not support xml Encapsulation.
*/
export interface VCard {
/***********************************************************************************************
* General Property
***********************************************************************************************/
/**
* The source of directory information contained in the content type.
* @kind SOURCE
* @link https://tools.ietf.org/html/rfc6350#section-6.1.3
*/
source?: string | {
value: string;
param: BasicPropertyParameters;
};
/**
* The kind of object the vCard represents.
* @kind KIND
*/
kind?: 'individual' | 'group' | 'org' | 'location';
/**
* Include extended XML-encoded vCard data in a plain vCard.
* @kind XML
* @link https://tools.ietf.org/html/rfc6350#section-6.1.5
*/
xml?: string;
/***********************************************************************************************
* Identification Properties
***********************************************************************************************/
/**
* The formatted text corresponding to the name of the object the vCard represents.
* (will automatically populatet if not set)
* @kind FN
*/
formattedName?: Name;
/**
* The name of the object the vCard represents.
* @kind N
*/
name?: Name;
/**
* The text corresponding to the nickname of the object the vCard represents.
* @kind NICKNAME
*/
nickname?: string;
/**
* An image or photograph information that annotates some aspect of the object the vCard represents.
* @kind PHOTO
*/
photo?: string | {
value: string;
param: BasicPropertyParameters;
};
/**
* The birth date of the object the vCard represents.
* @kind BDAY
*/
birthday?: Date;
/**
* Date of marriage, or equivalent, of the object the vCard represents.
* @kind ANNIVERSARY
*/
anniversary?: Date;
/**
* The components of the sex and gender identity of the object the vCard represents.
* @kind GENDER
*/
gender?: Gender;
/***********************************************************************************************
* Delivery Addressing Properties
***********************************************************************************************/
/**
* The components of the delivery address for the vCard object.
* @kind ADR
*/
address?: Array<Address | {
value: Address;
param: BasicPropertyParameters;
}>;
/***********************************************************************************************
* Communications Properties
***********************************************************************************************/
/**
* The telephone number for telephony communication with the object the vCard represents.
* @kind TEL
*/
telephone?: Array<string | {
value: string;
param: BasicPropertyParameters;
}>;
/**
* Work facsimile
*/
workFax?: string[];
/**
* Home facsimile
*/
homeFax?: string[];
/**
* The electronic mail address for communication with the object the vCard represents.
* @kind EMAIL
*/
email?: Array<string | {
value: string;
param: BasicPropertyParameters;
}>;
/**
* The address for work-related electronic mail communication
* @deprecated
*/
workEmail?: string[];
/**
* The address for other electronic mail communication
* @deprecated
*/
otherEmail?: string[];
/**
* The URI for instant messaging and presence protocol communications with the object the vCard represents.
* @kind IMPP
*/
instantMessagingPresenceProtocol?: string;
/**
* The language(s) that may be used for contacting the entity associated with the vCard.
* @kind LANG
*/
language?: Array<string | {
value: string;
param: BasicPropertyParameters;
}>;
/***********************************************************************************************
* Geographical Properties
***********************************************************************************************/
/**
* Information related to the time zone of the object the vCard represents.
* @kind TZ
*/
timezone?: string;
/**
* Information related to the global positioning of the object the vCard represents.
* @kind GEO
*/
geoPosition?: string;
/***********************************************************************************************
* Organizational Properties
***********************************************************************************************/
/**
* The position or job of the object the vCard represents.
* @kind TITLE
*/
title?: string;
/**
* The function or part played in a particular situation by the object the vCard represents.
* @kind ROLE
*/
role?: string;
/**
* A graphic image of a logo associated with the object the vCard represents.
* @kind LOGO
*/
logo?: string | {
value: string;
param: BasicPropertyParameters;
};
/**
* The organizational name and units associated with the vCard.
* @kind ORG
*/
organization?: string | {
value: string;
param: BasicPropertyParameters;
};
/**
* A member in the group this vCard represents.
* @kind MEMBER
*/
member?: string;
/**
* A relationship between another entity and the entity represented by this vCard.
* @kind RELATED
*/
related?: {
type: 'contact' | 'acquaintance' | 'friend' | 'met' | 'co-worker' | 'colleague' | 'co-resident' | 'neighbor' | 'child' | 'parent' | 'sibling' | 'spouse' | 'kin' | 'muse' | 'crush' | 'date' | 'sweetheart' | 'me' | 'agent' | 'emergency';
value: string;
}[];
/***********************************************************************************************
* Explanatory Properties
***********************************************************************************************/
/**
* Application category information about the vCard, also known as "tags".
* @kind CATEGORIES
*/
categories?: string[];
/**
* Supplemental information or a comment that is associated with the vCard.
* @kind NOTE
*/
note?: string;
/**
* The identifier for the product that created the vCard object.
* @kind PRODID
*/
prodid?: string;
/**
* Revision information about the current vCard.
* @kind REV
*/
rev?: string;
/**
* A digital sound content information that annotates some aspect of the vCard.
* This property is often used to specify the proper pronunciation of the name property value of the vCard.
* @kind SOUND
*/
sound?: string;
/**
* A value that represents a globally unique identifier corresponding to the entity associated with the vCard.
* @kind UID
*/
uid?: string;
/**
* To give a global meaning to a local PID source identifier.
* @kind CLIENTPIDMAP
*/
clientpidmap?: string;
/**
* A uniform resource locator associated with the object to which the vCard refers.
* Examples for individuals include personal web sites, blogs, and social networking site identifiers.
* @kind URL
*/
url?: string | {
work: string;
home: string;
};
/**
* The version of the vCard specification used to format this vCard.
* @kind VERSION
*/
version?: string;
/***********************************************************************************************
* Security Properties
***********************************************************************************************/
/**
* A public key or authentication certificate associated with the object that the vCard represents.
* @kind KEY
*/
key?: string;
/***********************************************************************************************
* Calendar Properties
***********************************************************************************************/
/**
* The URI for the busy time associated with the object that the vCard represents.
* @kind FBURL
*/
fburl?: string;
/**
* The calendar user address to which a scheduling request should be sent for the object represented by the vCard.
* @kind CALADRURI
*/
caladURI?: string;
/**
* The URI for a calendar associated with the object represented by the vCard.
* @kind CALURI
*/
calenderURI?: string;
socialUrls?: any;
}
export interface Address {
/**
* Represents the actual text that should be put on the mailing label when delivering a physical package
*/
label?: string;
/**
* The post office box
* @deprecated Incompatibility with vCard Version 3
*/
postOfficeBox?: string;
/**
* The extended address (e.g. apartment or suite number)
* @deprecated Incompatibility with vCard Version 3
*/
extendedAddress?: string;
/**
* Street address
*/
street?: string;
/**
* locality (e.g. city)
*/
locality?: string;
/**
* region (e.g. state or province)
*/
region?: string;
/**
* Postal code
*/
postalCode?: string;
/**
* country name (full name)
*/
countryName?: string;
}
export interface Name {
/**
* Family Names (Surnames)
*/
lastNames?: string;
/**
* First Names (Given Names)
*/
firstNames?: string;
/**
* Additional Names
*/
addtionalNames?: string;
/**
* Prefix for individual's name (Honorific Prefixes)
*/
namePrefix?: string;
/**
* Suffix for individual's name (Honorific Suffixes)
*/
nameSuffix?: string;
}
/**
* To specify the components of the sex and gender identity of the object the vCard represents.
*/
export interface Gender {
/**
* sex (biological)
* @description
* M stands for "male", F stands for "female", O stands for "other", N stands for "none or not applicable", U stands for "unknown".
*/
sex?: 'M' | 'F' | 'O' | 'N' | 'U';
/**
* Gender identity
*/
text?: string;
}