@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.
- package/dist/root/index.d.ts +161 -5
- package/dist/root/instance.d.ts +3 -0
- package/dist/sharepoint_requests.cjs.development.js +285 -81
- package/dist/sharepoint_requests.cjs.development.js.map +1 -1
- package/dist/sharepoint_requests.cjs.production.min.js +1 -1
- package/dist/sharepoint_requests.cjs.production.min.js.map +1 -1
- package/dist/sharepoint_requests.esm.js +285 -81
- package/dist/sharepoint_requests.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/root/index.ts +159 -13
- package/src/root/instance.ts +20 -0
|
@@ -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
package/src/root/index.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
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 =
|
|
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;
|