@kwiz/common
Version:
KWIZ common utilities and helpers for M365 platform
307 lines (282 loc) • 8.79 kB
text/typescript
/** types for KWIZ sharepoint API */
import { IDictionary } from "./common.types";
import { AttachmentFilesRESTValue, BaseTypes, FileSystemObjectTypes, IFieldInfoEX, ISPEventReceiver, ListTemplateTypes, PrincipalType, RoleType } from "./sharepoint.types";
export interface ISiteInfo { Id: string; ServerRelativeUrl: string; }
export interface IRootWebInfo { Id: string; ServerRelativeUrl: string; }
export interface ISPRestError {
code: string;
message: string;
}
export interface IUserInfo {
Id: number;
LoginName: string;
UserPrincipalName: string;
Title: string;
IsSiteAdmin: boolean;
Email: string;
Groups?: IUserGroupInfo[];
PrincipalType: PrincipalType;
}
export interface IUserGroupInfo {
Id: number;
LoginName: string;
Title: string;
Description: string;
}
export interface IGroupInfo {
Id: number;
Title: string;
Description: string;
CanCurrentUserViewMembership: boolean;
OnlyAllowMembersViewMembership: boolean;
LoginName: string;
Users?: IUserInfo[];
PrincipalType: PrincipalType.SharePointGroup;
IsHiddenInUI?: boolean;
OwnerTitle?: string;
}
// eslint-disable-next-line no-shadow
export enum ListExperienceOptions {
Default = 0,
Modern = 1,
Classic = 2
}
export interface iList {
Title: string;
Description: string;
EnableAttachments: boolean;
EnableModeration: boolean;
BaseTemplate: ListTemplateTypes;
BaseType: BaseTypes;
Id: string;
Hidden: boolean;
IsApplicationList: boolean;
IsPrivate: boolean;
IsCatalog: boolean;
ImageUrl: string;
ItemCount: number;
ParentWebUrl: string;
EntityTypeName: string;
DefaultViewUrl: string;
ParentWeb: { Id: string; Title: string; };
Views?: iListView[];
ContentTypes?: iContentType[];
EffectiveBasePermissions: { High: number; Low: number; },
RootFolder?: {
ServerRelativeUrl: string;
Name: string;
};
EventReceivers?: ISPEventReceiver[];
ListExperienceOptions?: ListExperienceOptions;
}
export enum DraftVisibilityType {
Reader = 0,
/** default */
Author = 1,
/** approvers, and the person who submitted the draft */
Approver = 2
}
export interface iListVersionSettings {
/** saving creates a draft */
EnableMinorVersions: boolean;
/** @deprecated versioning is enabled. (this is now always on in M365 libraries) */
EnableVersioning: boolean;
DraftVersionVisibility: DraftVisibilityType;
MajorWithMinorVersionsLimit: number;
MajorVersionLimit: number;
EnableModeration: boolean;
}
export interface iListView {
Title: string;
Id: string;
ServerRelativeUrl: string;
RowLimit: number;
Paged: boolean;
ViewQuery: string;
ListViewXml: string;
PersonalView: boolean;
MobileView: boolean;
MobileDefaultView: boolean;
Hidden: boolean;
DefaultView: boolean;
ReadOnlyView: boolean;
ViewFields?: string[];
}
export interface IListWorkflowAssociation {
AllowManual: boolean;
BaseId: string;//guid
Created: string;
Description: string;
Enabled: boolean;
HistoryListTitle: string;
Id: string;//guid
InstantiationUrl?: string;
InternalName: string;
IsDeclarative: boolean;
ListId: string;//guid
Modified: string;
Name: string;
RunningInstances: number;
TaskListTitle: string;
WebId: string;//guid
}
export interface iContentType {
Name: string;
Description: string;
StringId: string;
Group: string;
Hidden: boolean;
ReadOnly: boolean;
NewFormUrl: string;
DisplayFormUrl: string;
EditFormUrl: string;
Fields?: IFieldInfoEX[];
Sealed: boolean;
MobileNewFormUrl: string;
MobileDisplayFormUrl: string;
MobileEditFormUrl: string;
NewFormTemplateName: string;
DisplayFormTemplateName: string;
EditFormTemplateName: string;
}
// eslint-disable-next-line no-shadow
export enum WebTypes {
Team = 0,
Group = 1,
App = 2,
Other = 3
}
export interface IWebBasicInfo {
Title: string;
ServerRelativeUrl: string;
WebId: string;
/**STS, APP, WIKI, MPS, APPCATALOG, DEV, PWA, PWS, SPS, GROUP or other... */
WebTemplate: "STS" | "APP" | "WIKI" | "MPS" | "APPCATALOG" | "DEV" | "PWA" | "PWS" | "SPS" | "GROUP" | string;
WebType: WebTypes;
Description?: string;
SiteLogoUrl?: string;
}
export interface IRestRoleDefinition {
BasePermissions: { High: number; Low: number; };
Description: string;
Hidden: boolean;
Id: number;
Name: string;
Order: number;
RoleTypeKind: RoleType;
}
export interface IAppTile {
Title: string;
ProductId: string;
}
export interface IFileInfo {
Exists: boolean;
Name: string;
ServerRelativeUrl: string;
TimeCreated: Date;
TimeLastModified: Date;
Title: string;
Level: FileLevel;
}
export interface IFileInfoWithModerationStatus extends IFileInfo {
ListItemAllFields?: {
OData__ModerationStatus?: ModerationStatus
}
}
export interface ITimeZone {
Description: string;
Id: number;
Information: { Bias: number; DaylightBias: number; StandardBias: number; };
}
// eslint-disable-next-line no-shadow
export enum GeListItemsFoldersBehaviour { AllItemsNoFolders, ItemsAndFoldersFlat, ItemsInsideFolders }
export interface IRestItem {
Id: number;
FileRef: string;
FileDirRef: string;
FileLeafRef: string;
/** file type (lower case) or 'folder' or 'listitem' */
FileType: 'folder' | 'listitem' | string;
/** Folder=1, list item=0 */
FileSystemObjectType: FileSystemObjectTypes;
[InternalName: string]: any;
FieldValuesAsText?: IDictionary<string>;
FieldValuesForEdit?: IDictionary<any>;
AttachmentFiles?: AttachmentFilesRESTValue;
/** File name (no extension) for files or folders, Title for list items or 'Item #ID' for items with an empty title */
__DisplayTitle: string;
/** For a folder, this will have items inside the folder */
__Items?: IRestItem[];
/** For an item inside a folder, this will be the parent folder */
__ParentFolder?: IRestItem;
}
export interface IRestItemExpandedLookupValue {
Id: number;
Title: string;
}
export type UserEntityValueType = {
principalType: PrincipalType.User | PrincipalType.SecurityGroup | PrincipalType.SharePointGroup;
spId: number;
loginOrPrincipalName?: string;
/** not saved in settings. pre-loaded when loading settings. */
title?: string;
/** not saved in settings. pre-loaded when loading settings. */
email?: string;
};
export interface IWebRegionalSettings {
AdjustHijriDays: number;
AlternateCalendarType: number;
AM: string;
CalendarType: number;
Collation: number;
CollationLCID: number;
DateFormat: number;
DateSeparator: string;
DecimalSeparator: string;
DigitGrouping: string;
FirstDayOfWeek: number;
FirstWeekOfYear: number;
IsEastAsia: boolean;
IsRightToLeft: boolean;
IsUIRightToLeft: boolean;
ListSeparator: string;
LocaleId: number;
NegativeSign: string;
NegNumberMode: number;
PM: string;
PositiveSign: string;
ShowWeeks: boolean;
ThousandSeparator: string;
Time24: boolean;
TimeMarkerPosition: number;
TimeSeparator: string;
WorkDayEndHour: number;
WorkDays: number;
WorkDayStartHour: number;
}
/**
* Specifies the moderation status for a file/item (https://learn.microsoft.com/en-us/openspecs/sharepoint_protocols/ms-wssfo3/4342322d-6fab-4dc5-8ccd-b808a5e25acf)
*/
export enum ModerationStatus {
/** The list item is approved. */
Approved,
/** The list item has been denied approval. */
Rejected,
/** The list item is pending approval. */
Pending,
/** The list item is in the draft or checked out state. */
Draft,
/** The list item is scheduled for automatic approval at a future date. */
Scheduled
}
/**
* Specifies the publishing level for a file (https://learn.microsoft.com/en-us/previous-versions/office/sharepoint-visio/jj246272(v=office.15))
*/
export enum FileLevel {
/** Enumeration whose values specify whether the file is a published version. */
Published = 1,
/** Enumeration whose values specify whether the file is a draft.. */
Draft = 2,
/** Enumeration whose values specify whether the file is checked out to the current user. */
Checkout = 255
}