@lindle/sharepoint_requests 0.1.9 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"sharepoint_requests.esm.js","sources":["../src/root/index.ts","../src/index.ts"],"sourcesContent":["import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\nimport {\r\n CreateFileProps,\r\n CurrentUser,\r\n EmailProps,\r\n Field_Options,\r\n Folder_Options,\r\n IListName,\r\n ItemID,\r\n ListData,\r\n Options,\r\n PersonField,\r\n SHAREPOINT_VER,\r\n SPItem,\r\n UserPermision,\r\n UserProfile,\r\n} from '../types';\r\n\r\nclass HTTPSharePointRequests<\r\n T extends { LISTS: Record<string, any>; FOLDERS?: Record<string, any> }\r\n> {\r\n private baseURL: string;\r\n private endpoint: string;\r\n private listName: string;\r\n private instance: AxiosInstance;\r\n\r\n constructor(baseURL: string) {\r\n this.baseURL = baseURL.endsWith('/') ? baseURL : `${baseURL}/`;\r\n this.endpoint = '/api';\r\n this.listName = '';\r\n const headers = {\r\n Accept: 'application/json; odata=verbose',\r\n 'Content-Type': 'application/json; odata=verbose',\r\n };\r\n\r\n this.instance = axios.create({\r\n baseURL: `${this.baseURL}`,\r\n withCredentials: true,\r\n headers: {\r\n common: headers,\r\n post: headers,\r\n },\r\n });\r\n }\r\n\r\n private transformArraysToEdmStrings(data: ListData) {\r\n for (const key in data) {\r\n if (Array.isArray(data[key])) {\r\n data[key] = {\r\n __metadata: { type: 'Collection(Edm.String)' },\r\n results: data[key],\r\n };\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @deprecated Use `from` instead.\r\n */\r\n list(listName: IListName<T>) {\r\n this.listName = listName;\r\n this.endpoint = `_vti_bin/ListData.svc/${listName}`;\r\n return this;\r\n }\r\n public readonly lists = {\r\n get: () => {\r\n this.endpoint = '_api/web/lists';\r\n return this.get_v2();\r\n },\r\n };\r\n\r\n from<K extends Extract<keyof T['LISTS'], string>>(\r\n listName: K,\r\n sharepoint_ver: SHAREPOINT_VER = '2013'\r\n ) {\r\n this.listName = listName;\r\n this.endpoint =\r\n sharepoint_ver === '2013'\r\n ? `_api/web/lists/GetByTitle('${this.listName}')/items`\r\n : `_vti_bin/ListData.svc/${listName}`;\r\n return {\r\n create: (data: ListData) => this.create_v2(data),\r\n get: (options?: Options<T['LISTS'][K]>) =>\r\n this.get_v2<T['LISTS'][K]>(options),\r\n update: (id: ItemID, data: ListData, digest?: string) =>\r\n this.update_2(id, data, digest),\r\n delete: (id: ItemID) => this.delete(id),\r\n createFile: (props: CreateFileProps) => this.createFile(props),\r\n fields: (options?: Field_Options<T['LISTS'][K]>) => {\r\n // return this.field_v2(options)\r\n this.endpoint = !options?.fieldName\r\n ? `_api/web/lists/GetByTitle('${this.listName}')/fields`\r\n : `_api/web/lists/GetByTitle('${this.listName}')/fields/getbytitle('${options.fieldName}')`;\r\n return {\r\n get: () => this.get_only(options),\r\n };\r\n },\r\n };\r\n }\r\n\r\n public folders = {\r\n get: () => {\r\n this.endpoint = '_api/web/folders';\r\n this.get_v2();\r\n },\r\n };\r\n\r\n public folder(folderName?: string | string[]) {\r\n let filePath = ['Shared Documents'];\r\n\r\n if (folderName) {\r\n filePath = Array.isArray(folderName)\r\n ? [...filePath, ...folderName]\r\n : [...filePath, folderName];\r\n }\r\n this.endpoint = `_api/web/GetFolderByServerRelativeUrl('${filePath.join(\r\n '/'\r\n )}')`;\r\n return {\r\n get: (options?: Folder_Options<any>) => {\r\n if (!options?.type) {\r\n this.endpoint += '/Files';\r\n } else {\r\n this.endpoint += `/${options.type}`;\r\n }\r\n\r\n return this.get_files(options);\r\n },\r\n };\r\n }\r\n\r\n public users(options?: Options<any>) {\r\n this.endpoint = '_api/web/SiteUserInfoList/items';\r\n return {\r\n get: () => this.get_v2(options),\r\n };\r\n }\r\n\r\n /**\r\n * Asynchronously retrieves the Form Digest Value from the context information API.\r\n *\r\n * @returns {Promise<string>} A promise that resolves to the Form Digest Value.\r\n * @throws {Error} If the HTTP request fails or the response does not contain the expected data.\r\n */\r\n private async getDigest(): Promise<string> {\r\n try {\r\n const response = await this.instance.post(\r\n `${this.baseURL}_api/contextinfo`\r\n );\r\n if (!response.data?.d?.GetContextWebInformation?.FormDigestValue) {\r\n throw new Error('Invalid response structure: Missing FormDigestValue');\r\n }\r\n return response.data.d.GetContextWebInformation.FormDigestValue;\r\n } catch (error) {\r\n console.error('Failed to retrieve the Form Digest Value:', error);\r\n throw new Error(`Error retrieving Form Digest Value`);\r\n }\r\n '';\r\n }\r\n\r\n private async get_only(options?: any) {\r\n const { expand, orderBy, limit, filter, cols, skip } = options || {};\r\n\r\n const params = {\r\n $expand: Array.isArray(expand) ? expand.join(',') : expand,\r\n $top: limit,\r\n $skip: skip,\r\n $select: Array.isArray(cols) ? cols.join(',') : cols,\r\n $filter: filter,\r\n $orderby: Array.isArray(orderBy) ? orderBy.join(',') : orderBy,\r\n };\r\n const { data } = await this.instance.get(this.endpoint, { params });\r\n if (data) {\r\n return data.d.results ? data.d.results : data.d;\r\n }\r\n }\r\n\r\n private async get_files(options?: Folder_Options<any>) {\r\n const { expand, orderBy, limit, filter, cols, skip } = options || {};\r\n const params = {\r\n $expand: Array.isArray(expand) ? expand.join(',') : expand,\r\n $top: limit,\r\n $skip: skip,\r\n $select: Array.isArray(cols) ? cols.join(',') : cols,\r\n $filter: filter,\r\n $orderby: Array.isArray(orderBy) ? orderBy.join(',') : orderBy,\r\n };\r\n const url = new URL(this.endpoint, this.instance.defaults.baseURL);\r\n Object.entries(params).forEach(([key, value]) => {\r\n if (value !== undefined && value !== null) {\r\n url.searchParams.append(key, String(value));\r\n }\r\n });\r\n\r\n const response = await this.instance.request({\r\n url: this.endpoint,\r\n method: 'GET',\r\n params,\r\n });\r\n\r\n const data =\r\n limit || !response.data.d.results\r\n ? response.data.d\r\n : response.data.d.results;\r\n\r\n const meta = { url };\r\n\r\n return { data, meta };\r\n }\r\n\r\n private async get_v2<K = any>(\r\n options?: Options<K>\r\n ): Promise<{ data: (K & Partial<SPItem>)[]; meta: { url: URL } }> {\r\n const { expand, orderBy, limit, filter, cols, skip } = options || {};\r\n\r\n const params = {\r\n $expand: Array.isArray(expand) ? expand.join(',') : expand,\r\n $top: limit,\r\n $skip: skip,\r\n $select: Array.isArray(cols) ? cols.join(',') : cols,\r\n $filter: filter,\r\n $orderby: Array.isArray(orderBy) ? orderBy.join(' ') : orderBy,\r\n };\r\n\r\n const url = new URL(this.endpoint, this.instance.defaults.baseURL);\r\n Object.entries(params).forEach(([key, value]) => {\r\n if (value !== undefined && value !== null) {\r\n url.searchParams.append(key, String(value));\r\n }\r\n });\r\n\r\n const response = await this.instance.request({\r\n url: this.endpoint,\r\n method: 'GET',\r\n params,\r\n });\r\n\r\n const data =\r\n limit || !response.data.d.results\r\n ? response.data.d\r\n : response.data.d.results;\r\n\r\n const meta = { url };\r\n\r\n return { data, meta };\r\n }\r\n\r\n private async update_2(id: ItemID, data: ListData, digest?: string) {\r\n const formDigestValue = digest || (await this.getDigest());\r\n\r\n data.__metadata = {\r\n type: `SP.Data.${this.listName}ListItem`,\r\n };\r\n const url = `_api/lists/getbytitle('${this.listName}')/getItemById('${id}')`;\r\n const response = await this.instance({\r\n url,\r\n method: 'POST',\r\n data: JSON.stringify(data),\r\n headers: {\r\n 'X-RequestDigest': formDigestValue,\r\n 'IF-MATCH': '*',\r\n 'X-Http-Method': 'PATCH',\r\n },\r\n });\r\n return response;\r\n }\r\n\r\n private async create_v2(listData: ListData) {\r\n this.transformArraysToEdmStrings(listData);\r\n listData.__metadata = {\r\n type: `SP.Data.${this.listName}ListItem`,\r\n };\r\n const response = await this.instance({\r\n url: this.endpoint,\r\n method: 'POST',\r\n data: JSON.stringify(listData),\r\n headers: {\r\n 'X-RequestDigest': await this.getDigest(),\r\n 'IF-MATCH': '*',\r\n },\r\n });\r\n return response;\r\n }\r\n\r\n private async createFile({ file, itemId }: CreateFileProps) {\r\n const requestUrl = `_api/lists/getbytitle('${this.listName}')/items(${itemId})/AttachmentFiles/add(FileName='${file.name}')`;\r\n const res = await this.instance.post(requestUrl, file, {\r\n headers: {\r\n 'X-RequestDigest': await this.getDigest(),\r\n },\r\n withCredentials: true,\r\n });\r\n\r\n return res;\r\n }\r\n\r\n private async delete(ID: string | number) {\r\n const response = await this.instance.delete(`${this.endpoint!}(${ID})`);\r\n return response;\r\n }\r\n\r\n public email = {\r\n /**\r\n * Sends an email using SharePoint's Utility.SendEmail API.\r\n *\r\n * @param {EmailProps} param0 - The email properties.\r\n * @param {string} param0.From - The sender's email address.\r\n * @example\r\n * Example of a sender's email address\r\n * \"sender@example.com\"\r\n * @param {string | string[]} param0.To - The recipient's email address or an array of email addresses.\r\n * @example\r\n * Example of a single recipient's email address\r\n * \"recipient@example.com\"\r\n * Example of multiple recipients' email addresses\r\n * [\"recipient1@example.com\", \"recipient2@example.com\"]\r\n * @param {string} param0.Subject - The subject of the email.\r\n * @example\r\n * Example of an email subject\r\n * \"Meeting Reminder\"\r\n * @param {string} param0.Body - The body content of the email.\r\n * @example\r\n * Example of an email body\r\n * \"Dear team, please be reminded of the meeting scheduled for tomorrow at 10 AM.\"\r\n * @returns {Promise<any>} - A promise that resolves to the response of the email send request.\r\n */\r\n send: (props: EmailProps) => this.sendEmail(props),\r\n };\r\n\r\n private async sendEmail({\r\n From,\r\n To,\r\n Subject,\r\n Body,\r\n }: EmailProps): Promise<\r\n AxiosResponse<{\r\n d: {\r\n SendEmail: null;\r\n };\r\n }>\r\n > {\r\n const httpRequest = '_api/SP.Utilities.Utility.SendEmail';\r\n const response = await this.instance({\r\n url: httpRequest,\r\n method: 'POST',\r\n headers: {\r\n 'X-RequestDigest': await this.getDigest(),\r\n 'X-Http-Method': 'POST',\r\n 'Content-Type': 'application/json;odata=verbose',\r\n },\r\n data: JSON.stringify({\r\n properties: {\r\n __metadata: {\r\n type: 'SP.Utilities.EmailProperties',\r\n },\r\n From,\r\n To: {\r\n results: Array.isArray(To) ? To : [To],\r\n },\r\n Body,\r\n Subject,\r\n },\r\n }),\r\n });\r\n\r\n return response;\r\n }\r\n\r\n private async typeAhead(input: string, filter?: string) {\r\n const filterValue = filter ? ` and ${filter}` : '';\r\n const response = await this.instance.get(\r\n `_vti_bin/listdata.svc/UserInformationList?$top=10&$filter=substringof('${input}',Name) or substringof('${input}',WorkEmail)${filterValue}`\r\n );\r\n return response.data.d;\r\n }\r\n\r\n private async currentUserProperties() {\r\n const requestUrl = '_api/sp.userprofiles.peoplemanager/getmyproperties';\r\n let profile: any = await this.instance.get(requestUrl);\r\n\r\n profile = profile.data.d;\r\n\r\n profile.UserProfileProperties.results.forEach(\r\n (prop: { Key: string; Value: string }) => {\r\n if (prop.Key === 'FirstName') {\r\n profile.FirstName = prop.Value;\r\n }\r\n if (prop.Key === 'LastName') {\r\n profile.LastName = prop.Value;\r\n }\r\n if (prop.Key === 'Country') {\r\n profile.Country = prop.Value;\r\n }\r\n if (prop.Key === 'UserName') {\r\n profile.UserName = prop.Value;\r\n }\r\n }\r\n );\r\n return profile as Promise<UserProfile>;\r\n }\r\n public user = {\r\n properties: () => {\r\n return {\r\n get: () => this.currentUserProperties(),\r\n };\r\n },\r\n searchSiteUser: (searchValue: string) => this.getSiteUser(searchValue),\r\n searchUser: (input: string, filter?: string): Promise<PersonField> =>\r\n this.typeAhead(input, filter),\r\n current: () => {\r\n this.endpoint = '_api/web/currentUser';\r\n return {\r\n get: (): Promise<CurrentUser> => this.get_only(),\r\n };\r\n },\r\n currentPermission: () => {\r\n return {\r\n get: () => this.currentUserPermissions(),\r\n };\r\n },\r\n };\r\n\r\n private async getSiteUser(searchValue: string) {\r\n const requestUrl = `_api/web/siteusers?&$filter=substringof('${searchValue}', Title) or substringof('${searchValue}', LoginName) or substringof('${searchValue}', Email)&$top=50&$expand=Groups`;\r\n const response = await this.instance.get(requestUrl);\r\n return response.data.d;\r\n }\r\n\r\n private async roleDefinitions() {\r\n const requestUrl = `_api/Web/RoleDefinitions`;\r\n const response = await this.instance.get(requestUrl);\r\n return response.data.d.results;\r\n }\r\n\r\n private async getEffectiveBasePermissions() {\r\n const requestUrl = `_api/Web/effectiveBasePermissions`;\r\n const response = await this.instance.get(requestUrl);\r\n return response.data.d.EffectiveBasePermissions;\r\n }\r\n\r\n private async currentUserPermissions() {\r\n const { High } = await this.getEffectiveBasePermissions();\r\n const roleDefinitions = await this.roleDefinitions();\r\n\r\n const result = roleDefinitions.find(\r\n ({ BasePermissions }: { BasePermissions: { High: string } }) =>\r\n BasePermissions.High === High\r\n );\r\n\r\n return result as UserPermision;\r\n }\r\n}\r\n\r\nexport default HTTPSharePointRequests;\r\n","import SHAREPOINT_REQUESTS from './root';\r\n\r\nimport type { LookupField, ChoiceField, PersonField } from './types';\r\n\r\n// Load environment variables from .env file\r\n\r\nexport default function createBase<\r\n T extends { LISTS: Record<string, any>; FOLDERS?: Record<string, any> } = any\r\n>(){\r\n function create({ baseURL }: { baseURL: string }) {\r\n if (!baseURL) {\r\n throw new Error('A valid SharePoint URL must be provided.');\r\n }\r\n return new SHAREPOINT_REQUESTS<T>(baseURL);\r\n }\r\n\r\n return {\r\n /**\r\n * @deprecated Use `create` instead.\r\n */\r\n baseURL(url: string) {\r\n return create({ baseURL: url });\r\n },\r\n create,\r\n };\r\n}\r\n\r\nexport { LookupField, ChoiceField, PersonField };\r\n"],"names":["HTTPSharePointRequests","baseURL","get","_this","endpoint","get_v2","send","props","sendEmail","properties","currentUserProperties","searchSiteUser","searchValue","getSiteUser","searchUser","input","filter","typeAhead","current","get_only","currentPermission","currentUserPermissions","endsWith","listName","headers","Accept","instance","axios","create","withCredentials","common","post","_proto","prototype","transformArraysToEdmStrings","data","key","Array","isArray","__metadata","type","results","list","from","sharepoint_ver","_this2","create_v2","options","update","id","digest","update_2","delete","createFile","fields","fieldName","folder","folderName","filePath","concat","join","_this3","get_files","users","_this4","getDigest","_getDigest","_asyncToGenerator","_regenerator","m","_callee","_response$data","response","_t","w","_context","p","n","v","d","GetContextWebInformation","FormDigestValue","Error","a","console","error","apply","arguments","_get_only","_callee2","_ref","expand","orderBy","limit","cols","skip","params","_yield$this$instance$","_context2","$expand","$top","$skip","$select","$filter","$orderby","_x","_get_files","_callee3","_ref2","url","meta","_context3","URL","defaults","Object","entries","forEach","_ref3","value","undefined","searchParams","append","String","request","method","_x2","_get_v","_callee4","_ref4","_context4","_ref5","_x3","_update_","_callee5","formDigestValue","_t2","_context5","JSON","stringify","_x4","_x5","_x6","_create_v","_callee6","listData","_t3","_t4","_t5","_t6","_t7","_t8","_context6","call","_x7","_createFile","_callee7","_ref6","file","itemId","requestUrl","res","_t9","_t0","_t1","_t10","_t11","_t12","_context7","name","_x8","_delete2","_callee8","ID","_context8","_x9","_sendEmail","_callee9","_ref7","From","To","Subject","Body","httpRequest","_t13","_t14","_t15","_t16","_t17","_t18","_context9","_x0","_typeAhead","_callee0","filterValue","_context0","_x1","_x10","_currentUserProperties","_callee1","profile","_context1","UserProfileProperties","prop","Key","FirstName","Value","LastName","Country","UserName","_getSiteUser","_callee10","_context10","_x11","roleDefinitions","_roleDefinitions","_callee11","_context11","getEffectiveBasePermissions","_getEffectiveBasePermissions","_callee12","_context12","EffectiveBasePermissions","_currentUserPermissions","_callee13","_yield$this$getEffect","High","result","_context13","find","_ref8","BasePermissions","createBase","SHAREPOINT_REQUESTS"],"mappings":"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"}
1
+ {"version":3,"file":"sharepoint_requests.esm.js","sources":["../src/root/instance.ts","../src/root/index.ts","../src/index.ts"],"sourcesContent":["import axios, { CreateAxiosDefaults } from 'axios';\n\nexport const instance = (\n baseURL: string,\n config: CreateAxiosDefaults = {\n headers: {\n Accept: 'application/json; odata=verbose',\n 'Content-Type': 'application/json; odata=verbose',\n },\n timeout: 15000,\n withCredentials: true,\n }\n) => {\n return axios.create({\n baseURL: baseURL,\n ...config,\n });\n};\n\nexport default instance;\n","import { AxiosInstance, AxiosResponse } from 'axios';\r\nimport instance from './instance';\r\nimport {\r\n CreateFileProps,\r\n CurrentUser,\r\n EmailProps,\r\n Field_Options,\r\n Folder_Options,\r\n IListName,\r\n ItemID,\r\n ListData,\r\n Options,\r\n PersonField,\r\n SHAREPOINT_VER,\r\n SPItem,\r\n UserPermision,\r\n UserProfile,\r\n} from '../types';\r\n\r\nclass HTTPSharePointRequests<\r\n T extends { LISTS: Record<string, any>; FOLDERS?: Record<string, any> }\r\n> {\r\n private baseURL: string;\r\n private endpoint: string;\r\n private listName: string;\r\n private instance: AxiosInstance;\r\n\r\n /**\r\n * Creates an HTTP SharePoint requester bound to the provided base URL.\r\n *\r\n * @param baseURL The root SharePoint site URL (with or without trailing slash).\r\n */\r\n constructor(baseURL: string) {\r\n this.baseURL = baseURL.endsWith('/') ? baseURL : `${baseURL}/`;\r\n this.endpoint = '/api';\r\n this.listName = '';\r\n\r\n this.instance = instance(this.baseURL);\r\n }\r\n\r\n /**\r\n * Converts array values in a payload to the `Collection(Edm.String)` structure\r\n * expected by SharePoint REST endpoints.\r\n *\r\n * @param data The list item payload to harmonise in-place.\r\n */\r\n private transformArraysToEdmStrings(data: ListData) {\r\n for (const key in data) {\r\n if (Array.isArray(data[key])) {\r\n data[key] = {\r\n __metadata: { type: 'Collection(Edm.String)' },\r\n results: data[key],\r\n };\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @deprecated Use `from` instead.\r\n */\r\n list(listName: IListName<T>) {\r\n this.listName = listName;\r\n this.endpoint = `_vti_bin/ListData.svc/${listName}`;\r\n return this;\r\n }\r\n public readonly lists = {\r\n /**\r\n * Fetches all SharePoint lists available to the current site.\r\n *\r\n * @returns Promise resolving to the list collection response payload.\r\n */\r\n get: () => {\r\n this.endpoint = '_api/web/lists';\r\n return this.get_v2();\r\n },\r\n };\r\n\r\n /**\r\n * Selects a SharePoint list and exposes list-scoped CRUD helpers.\r\n *\r\n * @param listName Logical list key configured in the generic type map.\r\n * @param sharepoint_ver SharePoint version used to choose the correct REST endpoint.\r\n * @returns Chainable helpers bound to the selected list.\r\n */\r\n from<K extends Extract<keyof T['LISTS'], string>>(\r\n listName: K,\r\n sharepoint_ver: SHAREPOINT_VER = '2013'\r\n ) {\r\n this.listName = listName;\r\n this.endpoint =\r\n sharepoint_ver === '2013'\r\n ? `_api/web/lists/GetByTitle('${this.listName}')/items`\r\n : `_vti_bin/ListData.svc/${listName}`;\r\n return {\r\n create: (data: ListData) => this.create_v2(data),\r\n get: (options?: Options<T['LISTS'][K]>) =>\r\n this.get_v2<T['LISTS'][K]>(options),\r\n update: (id: ItemID, data: ListData, digest?: string) =>\r\n this.update_2(id, data, digest),\r\n delete: (id: ItemID) => this.delete(id),\r\n createFile: (props: CreateFileProps) => this.createFile(props),\r\n fields: (options?: Field_Options<T['LISTS'][K]>) => {\r\n // return this.field_v2(options)\r\n this.endpoint = !options?.fieldName\r\n ? `_api/web/lists/GetByTitle('${this.listName}')/fields`\r\n : `_api/web/lists/GetByTitle('${this.listName}')/fields/getbytitle('${options.fieldName}')`;\r\n return {\r\n get: () => this.get_only(options),\r\n };\r\n },\r\n };\r\n }\r\n\r\n public folders = {\r\n /**\r\n * Retrieves SharePoint folders from the default folders endpoint.\r\n *\r\n * @returns A promise resolving with folder metadata.\r\n */\r\n get: () => {\r\n this.endpoint = '_api/web/folders';\r\n this.get_v2();\r\n },\r\n };\r\n\r\n /**\r\n * Targets a SharePoint folder path and exposes file retrieval helpers.\r\n *\r\n * @param folderName Optional folder path relative to `Shared Documents`.\r\n * @returns Helper exposing `get` to fetch files or sub-folders.\r\n */\r\n public folder(folderName?: string | string[]) {\r\n let filePath = ['Shared Documents'];\r\n\r\n if (folderName) {\r\n filePath = Array.isArray(folderName)\r\n ? [...filePath, ...folderName]\r\n : [...filePath, folderName];\r\n }\r\n this.endpoint = `_api/web/GetFolderByServerRelativeUrl('${filePath.join(\r\n '/'\r\n )}')`;\r\n return {\r\n /**\r\n * Fetches files or folders from the targeted path.\r\n *\r\n * @param options Optional REST query options to refine the result set.\r\n * @returns Promise resolving to folder contents and metadata.\r\n */\r\n get: (options?: Folder_Options<any>) => {\r\n if (!options?.type) {\r\n this.endpoint += '/Files';\r\n } else {\r\n this.endpoint += `/${options.type}`;\r\n }\r\n\r\n return this.get_files(options);\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Retrieves user list items and exposes a get helper with optional query parameters.\r\n *\r\n * @param options Optional REST query options.\r\n * @returns Helper exposing `get` returning SharePoint user rows.\r\n */\r\n public users(options?: Options<any>) {\r\n this.endpoint = '_api/web/SiteUserInfoList/items';\r\n return {\r\n /**\r\n * Executes the user list request using the specified options.\r\n *\r\n * @returns Promise resolving to the SharePoint user list response.\r\n */\r\n get: () => this.get_v2(options),\r\n };\r\n }\r\n\r\n /**\r\n * Asynchronously retrieves the Form Digest Value from the context information API.\r\n *\r\n * @returns {Promise<string>} A promise that resolves to the Form Digest Value.\r\n * @throws {Error} If the HTTP request fails or the response does not contain the expected data.\r\n */\r\n private async getDigest(): Promise<string> {\r\n try {\r\n const response = await this.instance.post(\r\n `${this.baseURL}_api/contextinfo`\r\n );\r\n if (!response.data?.d?.GetContextWebInformation?.FormDigestValue) {\r\n throw new Error('Invalid response structure: Missing FormDigestValue');\r\n }\r\n return response.data.d.GetContextWebInformation.FormDigestValue;\r\n } catch (error) {\r\n console.error('Failed to retrieve the Form Digest Value:', error);\r\n throw new Error(`Error retrieving Form Digest Value`);\r\n }\r\n '';\r\n }\r\n\r\n /**\r\n * Executes a GET request without additional metadata wrapping.\r\n *\r\n * @param options Optional REST query options.\r\n * @returns SharePoint response payload or undefined when empty.\r\n */\r\n private async get_only(options?: any) {\r\n const { expand, orderBy, limit, filter, cols, skip } = options || {};\r\n\r\n const params = {\r\n $expand: Array.isArray(expand) ? expand.join(',') : expand,\r\n $top: limit,\r\n $skip: skip,\r\n $select: Array.isArray(cols) ? cols.join(',') : cols,\r\n $filter: filter,\r\n $orderby: Array.isArray(orderBy) ? orderBy.join(',') : orderBy,\r\n };\r\n const { data } = await this.instance.get(this.endpoint, { params });\r\n if (data) {\r\n return data.d.results ? data.d.results : data.d;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves folder contents with optional filtering and returns the payload with metadata.\r\n *\r\n * @param options REST options describing expand/filter/order conditions.\r\n * @returns Folder data and the fully resolved request URL.\r\n */\r\n private async get_files(options?: Folder_Options<any>) {\r\n const { expand, orderBy, limit, filter, cols, skip } = options || {};\r\n const params = {\r\n $expand: Array.isArray(expand) ? expand.join(',') : expand,\r\n $top: limit,\r\n $skip: skip,\r\n $select: Array.isArray(cols) ? cols.join(',') : cols,\r\n $filter: filter,\r\n $orderby: Array.isArray(orderBy) ? orderBy.join(',') : orderBy,\r\n };\r\n const url = new URL(this.endpoint, this.instance.defaults.baseURL);\r\n Object.entries(params).forEach(([key, value]) => {\r\n if (value !== undefined && value !== null) {\r\n url.searchParams.append(key, String(value));\r\n }\r\n });\r\n\r\n const response = await this.instance.request({\r\n url: this.endpoint,\r\n method: 'GET',\r\n params,\r\n });\r\n\r\n const data =\r\n limit || !response.data.d.results\r\n ? response.data.d\r\n : response.data.d.results;\r\n\r\n const meta = { url };\r\n\r\n return { data, meta };\r\n }\r\n\r\n /**\r\n * Performs a typed list read against the current endpoint.\r\n *\r\n * @param options Optional REST query options governing expand, filter, ordering and pagination.\r\n * @returns SharePoint list items alongside the fully-resolved request URL.\r\n */\r\n private async get_v2<K = any>(\r\n options?: Options<K>\r\n ): Promise<{ data: (K & Partial<SPItem>)[]; meta: { url: URL } }> {\r\n const { expand, orderBy, limit, filter, cols, skip } = options || {};\r\n\r\n const params = {\r\n $expand: Array.isArray(expand) ? expand.join(',') : expand,\r\n $top: limit,\r\n $skip: skip,\r\n $select: Array.isArray(cols) ? cols.join(',') : cols,\r\n $filter: filter,\r\n $orderby: Array.isArray(orderBy) ? orderBy.join(' ') : orderBy,\r\n };\r\n\r\n const url = new URL(this.endpoint, this.instance.defaults.baseURL);\r\n Object.entries(params).forEach(([key, value]) => {\r\n if (value !== undefined && value !== null) {\r\n url.searchParams.append(key, String(value));\r\n }\r\n });\r\n\r\n const response = await this.instance.request({\r\n url: this.endpoint,\r\n method: 'GET',\r\n params,\r\n });\r\n\r\n const data =\r\n limit || !response.data.d.results\r\n ? response.data.d\r\n : response.data.d.results;\r\n\r\n const meta = { url };\r\n\r\n return { data, meta };\r\n }\r\n\r\n /**\r\n * Updates an item in the currently selected list.\r\n *\r\n * @param id Target list item identifier.\r\n * @param data Payload with fields to update.\r\n * @param digest Optional pre-fetched form digest to reuse.\r\n * @returns Axios response of the update request.\r\n */\r\n private async update_2(id: ItemID, data: ListData, digest?: string) {\r\n const formDigestValue = digest || (await this.getDigest());\r\n\r\n data.__metadata = {\r\n type: `SP.Data.${this.listName}ListItem`,\r\n };\r\n const url = `_api/lists/getbytitle('${this.listName}')/getItemById('${id}')`;\r\n const response = await this.instance({\r\n url,\r\n method: 'POST',\r\n data: JSON.stringify(data),\r\n headers: {\r\n 'X-RequestDigest': formDigestValue,\r\n 'IF-MATCH': '*',\r\n 'X-Http-Method': 'PATCH',\r\n },\r\n });\r\n return response;\r\n }\r\n\r\n /**\r\n * Creates a new item within the active list.\r\n *\r\n * @param listData SharePoint list item payload.\r\n * @returns Axios response resolved from the create request.\r\n */\r\n private async create_v2(listData: ListData) {\r\n this.transformArraysToEdmStrings(listData);\r\n listData.__metadata = {\r\n type: `SP.Data.${this.listName}ListItem`,\r\n };\r\n const response = await this.instance({\r\n url: this.endpoint,\r\n method: 'POST',\r\n data: JSON.stringify(listData),\r\n headers: {\r\n 'X-RequestDigest': await this.getDigest(),\r\n 'IF-MATCH': '*',\r\n },\r\n });\r\n return response;\r\n }\r\n\r\n /**\r\n * Uploads an attachment file to an existing list item.\r\n *\r\n * @param props File payload and target item identifier.\r\n * @returns Axios response describing the upload result.\r\n */\r\n private async createFile({ file, itemId }: CreateFileProps) {\r\n const requestUrl = `_api/lists/getbytitle('${this.listName}')/items(${itemId})/AttachmentFiles/add(FileName='${file.name}')`;\r\n const res = await this.instance.post(requestUrl, file, {\r\n headers: {\r\n 'X-RequestDigest': await this.getDigest(),\r\n },\r\n withCredentials: true,\r\n });\r\n\r\n return res;\r\n }\r\n\r\n /**\r\n * Deletes an item using the current endpoint.\r\n *\r\n * @param ID Identifier of the entity to remove.\r\n * @returns Axios response from the delete call.\r\n */\r\n private async delete(ID: string | number) {\r\n const response = await this.instance.delete(`${this.endpoint!}(${ID})`);\r\n return response;\r\n }\r\n\r\n public email = {\r\n /**\r\n * Sends an email using SharePoint's Utility.SendEmail API.\r\n *\r\n * @param {EmailProps} param0 - The email properties.\r\n * @param {string} param0.From - The sender's email address.\r\n * @example\r\n * Example of a sender's email address\r\n * \"sender@example.com\"\r\n * @param {string | string[]} param0.To - The recipient's email address or an array of email addresses.\r\n * @example\r\n * Example of a single recipient's email address\r\n * \"recipient@example.com\"\r\n * Example of multiple recipients' email addresses\r\n * [\"recipient1@example.com\", \"recipient2@example.com\"]\r\n * @param {string} param0.Subject - The subject of the email.\r\n * @example\r\n * Example of an email subject\r\n * \"Meeting Reminder\"\r\n * @param {string} param0.Body - The body content of the email.\r\n * @example\r\n * Example of an email body\r\n * \"Dear team, please be reminded of the meeting scheduled for tomorrow at 10 AM.\"\r\n * @returns {Promise<any>} - A promise that resolves to the response of the email send request.\r\n */\r\n send: (props: EmailProps) => this.sendEmail(props),\r\n };\r\n\r\n private async sendEmail({\r\n From,\r\n To,\r\n Subject,\r\n Body,\r\n }: EmailProps): Promise<\r\n AxiosResponse<{\r\n d: {\r\n SendEmail: null;\r\n };\r\n }>\r\n > {\r\n const httpRequest = '_api/SP.Utilities.Utility.SendEmail';\r\n const response = await this.instance({\r\n url: httpRequest,\r\n method: 'POST',\r\n headers: {\r\n 'X-RequestDigest': await this.getDigest(),\r\n 'X-Http-Method': 'POST',\r\n 'Content-Type': 'application/json;odata=verbose',\r\n },\r\n data: JSON.stringify({\r\n properties: {\r\n __metadata: {\r\n type: 'SP.Utilities.EmailProperties',\r\n },\r\n From,\r\n To: {\r\n results: Array.isArray(To) ? To : [To],\r\n },\r\n Body,\r\n Subject,\r\n },\r\n }),\r\n });\r\n\r\n return response;\r\n }\r\n\r\n /**\r\n * Queries SharePoint's people picker endpoint for matching users.\r\n *\r\n * @param input Free-text search term.\r\n * @param filter Optional additional filter condition.\r\n * @returns Promise with type-ahead results payload.\r\n */\r\n private async typeAhead(input: string, filter?: string) {\r\n const filterValue = filter ? ` and ${filter}` : '';\r\n const response = await this.instance.get(\r\n `_vti_bin/listdata.svc/UserInformationList?$top=10&$filter=substringof('${input}',Name) or substringof('${input}',WorkEmail)${filterValue}`\r\n );\r\n return response.data.d;\r\n }\r\n\r\n /**\r\n * Retrieves the current user profile and flattens selected properties.\r\n *\r\n * @returns Promise containing the current user's profile information.\r\n */\r\n private async currentUserProperties() {\r\n const requestUrl = '_api/sp.userprofiles.peoplemanager/getmyproperties';\r\n let profile: any = await this.instance.get(requestUrl);\r\n\r\n profile = profile.data.d;\r\n\r\n profile.UserProfileProperties.results.forEach(\r\n (prop: { Key: string; Value: string }) => {\r\n if (prop.Key === 'FirstName') {\r\n profile.FirstName = prop.Value;\r\n }\r\n if (prop.Key === 'LastName') {\r\n profile.LastName = prop.Value;\r\n }\r\n if (prop.Key === 'Country') {\r\n profile.Country = prop.Value;\r\n }\r\n if (prop.Key === 'UserName') {\r\n profile.UserName = prop.Value;\r\n }\r\n }\r\n );\r\n return profile as Promise<UserProfile>;\r\n }\r\n public user = {\r\n /**\r\n * Provides accessors for the current user's profile information.\r\n *\r\n * @returns Helper exposing a `get` function to retrieve profile details.\r\n */\r\n properties: () => {\r\n return {\r\n get: () => this.currentUserProperties(),\r\n };\r\n },\r\n /**\r\n * Searches across site users and their groups.\r\n *\r\n * @param searchValue Query string to match site users.\r\n * @returns Promise resolving to matching site users.\r\n */\r\n searchSiteUser: (searchValue: string) => this.getSiteUser(searchValue),\r\n /**\r\n * Performs a people-picker search scoped to the current site collection.\r\n *\r\n * @param input Search prefix.\r\n * @param filter Optional additional filter condition.\r\n * @returns Promise with type-ahead person results.\r\n */\r\n searchUser: (input: string, filter?: string): Promise<PersonField> =>\r\n this.typeAhead(input, filter),\r\n /**\r\n * Fetches the currently authenticated SharePoint user.\r\n *\r\n * @returns Helper exposing `get` that resolves to the current user payload.\r\n */\r\n current: () => {\r\n this.endpoint = '_api/web/currentUser';\r\n return {\r\n get: (): Promise<CurrentUser> => this.get_only(),\r\n };\r\n },\r\n /**\r\n * Retrieves calculated permission level for the current user.\r\n *\r\n * @returns Helper exposing `get` resolving to the user's permission definition.\r\n */\r\n currentPermission: () => {\r\n return {\r\n get: () => this.currentUserPermissions(),\r\n };\r\n },\r\n };\r\n\r\n /**\r\n * Searches site users based on a substring match across common fields.\r\n *\r\n * @param searchValue Term to match against the SharePoint user directory.\r\n * @returns Promise with matching site users and their groups.\r\n */\r\n private async getSiteUser(searchValue: string) {\r\n const requestUrl = `_api/web/siteusers?&$filter=substringof('${searchValue}', Title) or substringof('${searchValue}', LoginName) or substringof('${searchValue}', Email)&$top=50&$expand=Groups`;\r\n const response = await this.instance.get(requestUrl);\r\n return response.data.d;\r\n }\r\n\r\n /**\r\n * Retrieves all available role definitions for the current site.\r\n *\r\n * @returns Promise resolving to an array of role definitions.\r\n */\r\n private async roleDefinitions() {\r\n const requestUrl = `_api/Web/RoleDefinitions`;\r\n const response = await this.instance.get(requestUrl);\r\n return response.data.d.results;\r\n }\r\n\r\n /**\r\n * Fetches the bit-encoded permissions of the current user.\r\n *\r\n * @returns Promise resolving to the `EffectiveBasePermissions` object.\r\n */\r\n private async getEffectiveBasePermissions() {\r\n const requestUrl = `_api/Web/effectiveBasePermissions`;\r\n const response = await this.instance.get(requestUrl);\r\n return response.data.d.EffectiveBasePermissions;\r\n }\r\n\r\n /**\r\n * Matches the current user's effective permissions against known role definitions.\r\n *\r\n * @returns The matching SharePoint role definition as a structured permission object.\r\n */\r\n private async currentUserPermissions() {\r\n const { High } = await this.getEffectiveBasePermissions();\r\n const roleDefinitions = await this.roleDefinitions();\r\n\r\n const result = roleDefinitions.find(\r\n ({ BasePermissions }: { BasePermissions: { High: string } }) =>\r\n BasePermissions.High === High\r\n );\r\n\r\n return result as UserPermision;\r\n }\r\n}\r\n\r\nexport default HTTPSharePointRequests;\r\n","import SHAREPOINT_REQUESTS from './root';\r\n\r\nimport type { LookupField, ChoiceField, PersonField } from './types';\r\n\r\n// Load environment variables from .env file\r\n\r\nexport default function createBase<\r\n T extends { LISTS: Record<string, any>; FOLDERS?: Record<string, any> } = any\r\n>(){\r\n function create({ baseURL }: { baseURL: string }) {\r\n if (!baseURL) {\r\n throw new Error('A valid SharePoint URL must be provided.');\r\n }\r\n return new SHAREPOINT_REQUESTS<T>(baseURL);\r\n }\r\n\r\n return {\r\n /**\r\n * @deprecated Use `create` instead.\r\n */\r\n baseURL(url: string) {\r\n return create({ baseURL: url });\r\n },\r\n create,\r\n };\r\n}\r\n\r\nexport { LookupField, ChoiceField, PersonField };\r\n"],"names":["instance","baseURL","config","headers","Accept","timeout","withCredentials","axios","create","_extends","HTTPSharePointRequests","get","_this","endpoint","get_v2","send","props","sendEmail","properties","currentUserProperties","searchSiteUser","searchValue","getSiteUser","searchUser","input","filter","typeAhead","current","get_only","currentPermission","currentUserPermissions","endsWith","listName","_proto","prototype","transformArraysToEdmStrings","data","key","Array","isArray","__metadata","type","results","list","from","sharepoint_ver","_this2","create_v2","options","update","id","digest","update_2","delete","createFile","fields","fieldName","folder","folderName","filePath","concat","join","_this3","get_files","users","_this4","getDigest","_getDigest","_asyncToGenerator","_regenerator","m","_callee","_response$data","response","_t","w","_context","p","n","post","v","d","GetContextWebInformation","FormDigestValue","Error","a","console","error","apply","arguments","_get_only","_callee2","_ref","expand","orderBy","limit","cols","skip","params","_yield$this$instance$","_context2","$expand","$top","$skip","$select","$filter","$orderby","_x","_get_files","_callee3","_ref2","url","meta","_context3","URL","defaults","Object","entries","forEach","_ref3","value","undefined","searchParams","append","String","request","method","_x2","_get_v","_callee4","_ref4","_context4","_ref5","_x3","_update_","_callee5","formDigestValue","_t2","_context5","JSON","stringify","_x4","_x5","_x6","_create_v","_callee6","listData","_t3","_t4","_t5","_t6","_t7","_context6","call","_x7","_createFile","_callee7","_ref6","file","itemId","requestUrl","res","_t8","_t9","_t0","_t1","_t10","_context7","name","_x8","_delete2","_callee8","ID","_context8","_x9","_sendEmail","_callee9","_ref7","From","To","Subject","Body","httpRequest","_t11","_t12","_t13","_t14","_t15","_context9","_x0","_typeAhead","_callee0","filterValue","_context0","_x1","_x10","_currentUserProperties","_callee1","profile","_context1","UserProfileProperties","prop","Key","FirstName","Value","LastName","Country","UserName","_getSiteUser","_callee10","_context10","_x11","roleDefinitions","_roleDefinitions","_callee11","_context11","getEffectiveBasePermissions","_getEffectiveBasePermissions","_callee12","_context12","EffectiveBasePermissions","_currentUserPermissions","_callee13","_yield$this$getEffect","High","result","_context13","find","_ref8","BasePermissions","createBase","SHAREPOINT_REQUESTS"],"mappings":"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"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.9",
2
+ "version": "0.1.11",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
package/src/root/index.ts CHANGED
@@ -1,4 +1,5 @@
1
- import axios, { AxiosInstance, AxiosResponse } from 'axios';
1
+ import { AxiosInstance, AxiosResponse } from 'axios';
2
+ import instance from './instance';
2
3
  import {
3
4
  CreateFileProps,
4
5
  CurrentUser,
@@ -24,25 +25,25 @@ class HTTPSharePointRequests<
24
25
  private listName: string;
25
26
  private instance: AxiosInstance;
26
27
 
28
+ /**
29
+ * Creates an HTTP SharePoint requester bound to the provided base URL.
30
+ *
31
+ * @param baseURL The root SharePoint site URL (with or without trailing slash).
32
+ */
27
33
  constructor(baseURL: string) {
28
34
  this.baseURL = baseURL.endsWith('/') ? baseURL : `${baseURL}/`;
29
35
  this.endpoint = '/api';
30
36
  this.listName = '';
31
- const headers = {
32
- Accept: 'application/json; odata=verbose',
33
- 'Content-Type': 'application/json; odata=verbose',
34
- };
35
37
 
36
- this.instance = axios.create({
37
- baseURL: `${this.baseURL}`,
38
- withCredentials: true,
39
- headers: {
40
- common: headers,
41
- post: headers,
42
- },
43
- });
38
+ this.instance = instance(this.baseURL);
44
39
  }
45
40
 
41
+ /**
42
+ * Converts array values in a payload to the `Collection(Edm.String)` structure
43
+ * expected by SharePoint REST endpoints.
44
+ *
45
+ * @param data The list item payload to harmonise in-place.
46
+ */
46
47
  private transformArraysToEdmStrings(data: ListData) {
47
48
  for (const key in data) {
48
49
  if (Array.isArray(data[key])) {
@@ -63,12 +64,24 @@ class HTTPSharePointRequests<
63
64
  return this;
64
65
  }
65
66
  public readonly lists = {
67
+ /**
68
+ * Fetches all SharePoint lists available to the current site.
69
+ *
70
+ * @returns Promise resolving to the list collection response payload.
71
+ */
66
72
  get: () => {
67
73
  this.endpoint = '_api/web/lists';
68
74
  return this.get_v2();
69
75
  },
70
76
  };
71
77
 
78
+ /**
79
+ * Selects a SharePoint list and exposes list-scoped CRUD helpers.
80
+ *
81
+ * @param listName Logical list key configured in the generic type map.
82
+ * @param sharepoint_ver SharePoint version used to choose the correct REST endpoint.
83
+ * @returns Chainable helpers bound to the selected list.
84
+ */
72
85
  from<K extends Extract<keyof T['LISTS'], string>>(
73
86
  listName: K,
74
87
  sharepoint_ver: SHAREPOINT_VER = '2013'
@@ -99,12 +112,23 @@ class HTTPSharePointRequests<
99
112
  }
100
113
 
101
114
  public folders = {
115
+ /**
116
+ * Retrieves SharePoint folders from the default folders endpoint.
117
+ *
118
+ * @returns A promise resolving with folder metadata.
119
+ */
102
120
  get: () => {
103
121
  this.endpoint = '_api/web/folders';
104
122
  this.get_v2();
105
123
  },
106
124
  };
107
125
 
126
+ /**
127
+ * Targets a SharePoint folder path and exposes file retrieval helpers.
128
+ *
129
+ * @param folderName Optional folder path relative to `Shared Documents`.
130
+ * @returns Helper exposing `get` to fetch files or sub-folders.
131
+ */
108
132
  public folder(folderName?: string | string[]) {
109
133
  let filePath = ['Shared Documents'];
110
134
 
@@ -117,6 +141,12 @@ class HTTPSharePointRequests<
117
141
  '/'
118
142
  )}')`;
119
143
  return {
144
+ /**
145
+ * Fetches files or folders from the targeted path.
146
+ *
147
+ * @param options Optional REST query options to refine the result set.
148
+ * @returns Promise resolving to folder contents and metadata.
149
+ */
120
150
  get: (options?: Folder_Options<any>) => {
121
151
  if (!options?.type) {
122
152
  this.endpoint += '/Files';
@@ -129,9 +159,20 @@ class HTTPSharePointRequests<
129
159
  };
130
160
  }
131
161
 
162
+ /**
163
+ * Retrieves user list items and exposes a get helper with optional query parameters.
164
+ *
165
+ * @param options Optional REST query options.
166
+ * @returns Helper exposing `get` returning SharePoint user rows.
167
+ */
132
168
  public users(options?: Options<any>) {
133
169
  this.endpoint = '_api/web/SiteUserInfoList/items';
134
170
  return {
171
+ /**
172
+ * Executes the user list request using the specified options.
173
+ *
174
+ * @returns Promise resolving to the SharePoint user list response.
175
+ */
135
176
  get: () => this.get_v2(options),
136
177
  };
137
178
  }
@@ -158,6 +199,12 @@ class HTTPSharePointRequests<
158
199
  '';
159
200
  }
160
201
 
202
+ /**
203
+ * Executes a GET request without additional metadata wrapping.
204
+ *
205
+ * @param options Optional REST query options.
206
+ * @returns SharePoint response payload or undefined when empty.
207
+ */
161
208
  private async get_only(options?: any) {
162
209
  const { expand, orderBy, limit, filter, cols, skip } = options || {};
163
210
 
@@ -175,6 +222,12 @@ class HTTPSharePointRequests<
175
222
  }
176
223
  }
177
224
 
225
+ /**
226
+ * Retrieves folder contents with optional filtering and returns the payload with metadata.
227
+ *
228
+ * @param options REST options describing expand/filter/order conditions.
229
+ * @returns Folder data and the fully resolved request URL.
230
+ */
178
231
  private async get_files(options?: Folder_Options<any>) {
179
232
  const { expand, orderBy, limit, filter, cols, skip } = options || {};
180
233
  const params = {
@@ -208,6 +261,12 @@ class HTTPSharePointRequests<
208
261
  return { data, meta };
209
262
  }
210
263
 
264
+ /**
265
+ * Performs a typed list read against the current endpoint.
266
+ *
267
+ * @param options Optional REST query options governing expand, filter, ordering and pagination.
268
+ * @returns SharePoint list items alongside the fully-resolved request URL.
269
+ */
211
270
  private async get_v2<K = any>(
212
271
  options?: Options<K>
213
272
  ): Promise<{ data: (K & Partial<SPItem>)[]; meta: { url: URL } }> {
@@ -245,6 +304,14 @@ class HTTPSharePointRequests<
245
304
  return { data, meta };
246
305
  }
247
306
 
307
+ /**
308
+ * Updates an item in the currently selected list.
309
+ *
310
+ * @param id Target list item identifier.
311
+ * @param data Payload with fields to update.
312
+ * @param digest Optional pre-fetched form digest to reuse.
313
+ * @returns Axios response of the update request.
314
+ */
248
315
  private async update_2(id: ItemID, data: ListData, digest?: string) {
249
316
  const formDigestValue = digest || (await this.getDigest());
250
317
 
@@ -265,6 +332,12 @@ class HTTPSharePointRequests<
265
332
  return response;
266
333
  }
267
334
 
335
+ /**
336
+ * Creates a new item within the active list.
337
+ *
338
+ * @param listData SharePoint list item payload.
339
+ * @returns Axios response resolved from the create request.
340
+ */
268
341
  private async create_v2(listData: ListData) {
269
342
  this.transformArraysToEdmStrings(listData);
270
343
  listData.__metadata = {
@@ -282,6 +355,12 @@ class HTTPSharePointRequests<
282
355
  return response;
283
356
  }
284
357
 
358
+ /**
359
+ * Uploads an attachment file to an existing list item.
360
+ *
361
+ * @param props File payload and target item identifier.
362
+ * @returns Axios response describing the upload result.
363
+ */
285
364
  private async createFile({ file, itemId }: CreateFileProps) {
286
365
  const requestUrl = `_api/lists/getbytitle('${this.listName}')/items(${itemId})/AttachmentFiles/add(FileName='${file.name}')`;
287
366
  const res = await this.instance.post(requestUrl, file, {
@@ -294,6 +373,12 @@ class HTTPSharePointRequests<
294
373
  return res;
295
374
  }
296
375
 
376
+ /**
377
+ * Deletes an item using the current endpoint.
378
+ *
379
+ * @param ID Identifier of the entity to remove.
380
+ * @returns Axios response from the delete call.
381
+ */
297
382
  private async delete(ID: string | number) {
298
383
  const response = await this.instance.delete(`${this.endpoint!}(${ID})`);
299
384
  return response;
@@ -366,6 +451,13 @@ class HTTPSharePointRequests<
366
451
  return response;
367
452
  }
368
453
 
454
+ /**
455
+ * Queries SharePoint's people picker endpoint for matching users.
456
+ *
457
+ * @param input Free-text search term.
458
+ * @param filter Optional additional filter condition.
459
+ * @returns Promise with type-ahead results payload.
460
+ */
369
461
  private async typeAhead(input: string, filter?: string) {
370
462
  const filterValue = filter ? ` and ${filter}` : '';
371
463
  const response = await this.instance.get(
@@ -374,6 +466,11 @@ class HTTPSharePointRequests<
374
466
  return response.data.d;
375
467
  }
376
468
 
469
+ /**
470
+ * Retrieves the current user profile and flattens selected properties.
471
+ *
472
+ * @returns Promise containing the current user's profile information.
473
+ */
377
474
  private async currentUserProperties() {
378
475
  const requestUrl = '_api/sp.userprofiles.peoplemanager/getmyproperties';
379
476
  let profile: any = await this.instance.get(requestUrl);
@@ -399,20 +496,48 @@ class HTTPSharePointRequests<
399
496
  return profile as Promise<UserProfile>;
400
497
  }
401
498
  public user = {
499
+ /**
500
+ * Provides accessors for the current user's profile information.
501
+ *
502
+ * @returns Helper exposing a `get` function to retrieve profile details.
503
+ */
402
504
  properties: () => {
403
505
  return {
404
506
  get: () => this.currentUserProperties(),
405
507
  };
406
508
  },
509
+ /**
510
+ * Searches across site users and their groups.
511
+ *
512
+ * @param searchValue Query string to match site users.
513
+ * @returns Promise resolving to matching site users.
514
+ */
407
515
  searchSiteUser: (searchValue: string) => this.getSiteUser(searchValue),
516
+ /**
517
+ * Performs a people-picker search scoped to the current site collection.
518
+ *
519
+ * @param input Search prefix.
520
+ * @param filter Optional additional filter condition.
521
+ * @returns Promise with type-ahead person results.
522
+ */
408
523
  searchUser: (input: string, filter?: string): Promise<PersonField> =>
409
524
  this.typeAhead(input, filter),
525
+ /**
526
+ * Fetches the currently authenticated SharePoint user.
527
+ *
528
+ * @returns Helper exposing `get` that resolves to the current user payload.
529
+ */
410
530
  current: () => {
411
531
  this.endpoint = '_api/web/currentUser';
412
532
  return {
413
533
  get: (): Promise<CurrentUser> => this.get_only(),
414
534
  };
415
535
  },
536
+ /**
537
+ * Retrieves calculated permission level for the current user.
538
+ *
539
+ * @returns Helper exposing `get` resolving to the user's permission definition.
540
+ */
416
541
  currentPermission: () => {
417
542
  return {
418
543
  get: () => this.currentUserPermissions(),
@@ -420,24 +545,45 @@ class HTTPSharePointRequests<
420
545
  },
421
546
  };
422
547
 
548
+ /**
549
+ * Searches site users based on a substring match across common fields.
550
+ *
551
+ * @param searchValue Term to match against the SharePoint user directory.
552
+ * @returns Promise with matching site users and their groups.
553
+ */
423
554
  private async getSiteUser(searchValue: string) {
424
555
  const requestUrl = `_api/web/siteusers?&$filter=substringof('${searchValue}', Title) or substringof('${searchValue}', LoginName) or substringof('${searchValue}', Email)&$top=50&$expand=Groups`;
425
556
  const response = await this.instance.get(requestUrl);
426
557
  return response.data.d;
427
558
  }
428
559
 
560
+ /**
561
+ * Retrieves all available role definitions for the current site.
562
+ *
563
+ * @returns Promise resolving to an array of role definitions.
564
+ */
429
565
  private async roleDefinitions() {
430
566
  const requestUrl = `_api/Web/RoleDefinitions`;
431
567
  const response = await this.instance.get(requestUrl);
432
568
  return response.data.d.results;
433
569
  }
434
570
 
571
+ /**
572
+ * Fetches the bit-encoded permissions of the current user.
573
+ *
574
+ * @returns Promise resolving to the `EffectiveBasePermissions` object.
575
+ */
435
576
  private async getEffectiveBasePermissions() {
436
577
  const requestUrl = `_api/Web/effectiveBasePermissions`;
437
578
  const response = await this.instance.get(requestUrl);
438
579
  return response.data.d.EffectiveBasePermissions;
439
580
  }
440
581
 
582
+ /**
583
+ * Matches the current user's effective permissions against known role definitions.
584
+ *
585
+ * @returns The matching SharePoint role definition as a structured permission object.
586
+ */
441
587
  private async currentUserPermissions() {
442
588
  const { High } = await this.getEffectiveBasePermissions();
443
589
  const roleDefinitions = await this.roleDefinitions();
@@ -0,0 +1,20 @@
1
+ import axios, { CreateAxiosDefaults } from 'axios';
2
+
3
+ export const instance = (
4
+ baseURL: string,
5
+ config: CreateAxiosDefaults = {
6
+ headers: {
7
+ Accept: 'application/json; odata=verbose',
8
+ 'Content-Type': 'application/json; odata=verbose',
9
+ },
10
+ timeout: 15000,
11
+ withCredentials: true,
12
+ }
13
+ ) => {
14
+ return axios.create({
15
+ baseURL: baseURL,
16
+ ...config,
17
+ });
18
+ };
19
+
20
+ export default instance;