@pnp/sp 2.10.0 → 2.11.0

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.
Files changed (294) hide show
  1. package/LICENSE +25 -25
  2. package/appcatalog/index.d.ts +8 -8
  3. package/appcatalog/index.js +30 -30
  4. package/appcatalog/types.d.ts +81 -81
  5. package/appcatalog/types.js +177 -177
  6. package/appcatalog/web.d.ts +16 -16
  7. package/appcatalog/web.js +6 -6
  8. package/attachments/index.d.ts +2 -2
  9. package/attachments/index.js +2 -2
  10. package/attachments/item.d.ts +12 -12
  11. package/attachments/item.js +4 -4
  12. package/attachments/types.d.ts +92 -92
  13. package/attachments/types.js +240 -240
  14. package/batch.d.ts +17 -17
  15. package/batch.js +223 -223
  16. package/clientside-pages/funcs.d.ts +22 -22
  17. package/clientside-pages/funcs.js +25 -25
  18. package/clientside-pages/index.d.ts +2 -2
  19. package/clientside-pages/index.js +2 -2
  20. package/clientside-pages/types.d.ts +496 -496
  21. package/clientside-pages/types.js +1496 -1496
  22. package/clientside-pages/web.d.ts +41 -41
  23. package/clientside-pages/web.js +57 -57
  24. package/column-defaults/folder.d.ts +27 -27
  25. package/column-defaults/folder.js +82 -82
  26. package/column-defaults/index.d.ts +3 -3
  27. package/column-defaults/index.js +2 -2
  28. package/column-defaults/list.d.ts +19 -19
  29. package/column-defaults/list.js +198 -198
  30. package/column-defaults/types.d.ts +21 -21
  31. package/column-defaults/types.js +1 -1
  32. package/comments/clientside-page.d.ts +57 -57
  33. package/comments/clientside-page.d.ts.map +1 -1
  34. package/comments/clientside-page.js +136 -136
  35. package/comments/index.d.ts +2 -2
  36. package/comments/index.js +2 -2
  37. package/comments/item.d.ts +29 -29
  38. package/comments/item.js +47 -47
  39. package/comments/types.d.ts +107 -107
  40. package/comments/types.d.ts.map +1 -1
  41. package/comments/types.js +145 -145
  42. package/comments/types.js.map +1 -1
  43. package/content-types/index.d.ts +4 -4
  44. package/content-types/index.js +4 -4
  45. package/content-types/item.d.ts +12 -12
  46. package/content-types/item.js +4 -4
  47. package/content-types/list.d.ts +12 -12
  48. package/content-types/list.js +4 -4
  49. package/content-types/types.d.ts +107 -107
  50. package/content-types/types.js +166 -166
  51. package/content-types/web.d.ts +12 -12
  52. package/content-types/web.js +4 -4
  53. package/decorators.d.ts +11 -11
  54. package/decorators.js +28 -28
  55. package/features/index.d.ts +3 -3
  56. package/features/index.js +3 -3
  57. package/features/site.d.ts +12 -12
  58. package/features/site.js +4 -4
  59. package/features/types.d.ts +47 -47
  60. package/features/types.js +109 -109
  61. package/features/web.d.ts +12 -12
  62. package/features/web.js +4 -4
  63. package/fields/index.d.ts +4 -4
  64. package/fields/index.js +4 -4
  65. package/fields/list.d.ts +12 -12
  66. package/fields/list.js +4 -4
  67. package/fields/types.d.ts +368 -368
  68. package/fields/types.js +624 -624
  69. package/fields/web.d.ts +17 -17
  70. package/fields/web.js +5 -5
  71. package/files/folder.d.ts +12 -12
  72. package/files/folder.js +4 -4
  73. package/files/index.d.ts +4 -4
  74. package/files/index.js +4 -4
  75. package/files/item.d.ts +12 -12
  76. package/files/item.js +4 -4
  77. package/files/types.d.ts +421 -421
  78. package/files/types.js +853 -853
  79. package/files/web.d.ts +35 -35
  80. package/files/web.js +15 -15
  81. package/folders/index.d.ts +4 -4
  82. package/folders/index.js +4 -4
  83. package/folders/item.d.ts +9 -9
  84. package/folders/item.js +4 -4
  85. package/folders/list.d.ts +12 -12
  86. package/folders/list.js +4 -4
  87. package/folders/types.d.ts +207 -207
  88. package/folders/types.js +433 -433
  89. package/folders/web.d.ts +39 -39
  90. package/folders/web.js +15 -15
  91. package/forms/index.d.ts +2 -2
  92. package/forms/index.js +2 -2
  93. package/forms/list.d.ts +9 -9
  94. package/forms/list.js +4 -4
  95. package/forms/types.d.ts +35 -35
  96. package/forms/types.js +41 -41
  97. package/hubsites/index.d.ts +12 -12
  98. package/hubsites/index.js +15 -15
  99. package/hubsites/site.d.ts +26 -26
  100. package/hubsites/site.js +39 -39
  101. package/hubsites/types.d.ts +55 -55
  102. package/hubsites/types.js +53 -53
  103. package/hubsites/web.d.ts +21 -21
  104. package/hubsites/web.js +23 -23
  105. package/index.d.ts +14 -14
  106. package/index.js +13 -13
  107. package/items/index.d.ts +2 -2
  108. package/items/index.js +2 -2
  109. package/items/list.d.ts +9 -9
  110. package/items/list.js +4 -4
  111. package/items/types.d.ts +226 -226
  112. package/items/types.js +549 -549
  113. package/lists/index.d.ts +2 -2
  114. package/lists/index.js +2 -2
  115. package/lists/types.d.ts +495 -495
  116. package/lists/types.js +522 -522
  117. package/lists/web.d.ts +43 -43
  118. package/lists/web.js +27 -27
  119. package/navigation/index.d.ts +8 -8
  120. package/navigation/index.js +14 -14
  121. package/navigation/types.d.ts +154 -154
  122. package/navigation/types.js +219 -219
  123. package/navigation/web.d.ts +13 -13
  124. package/navigation/web.js +4 -4
  125. package/odata.d.ts +5 -5
  126. package/odata.js +90 -90
  127. package/operations.d.ts +9 -9
  128. package/operations.js +63 -63
  129. package/package.json +4 -4
  130. package/presets/all.d.ts +72 -72
  131. package/presets/all.js +72 -72
  132. package/presets/core.d.ts +11 -11
  133. package/presets/core.js +11 -11
  134. package/profiles/index.d.ts +7 -7
  135. package/profiles/index.js +13 -13
  136. package/profiles/types.d.ts +357 -357
  137. package/profiles/types.js +454 -454
  138. package/readme.md +21 -21
  139. package/regional-settings/content-type.d.ts +7 -7
  140. package/regional-settings/content-type.js +4 -4
  141. package/regional-settings/field.d.ts +7 -7
  142. package/regional-settings/field.js +4 -4
  143. package/regional-settings/funcs.d.ts +2 -2
  144. package/regional-settings/funcs.js +8 -8
  145. package/regional-settings/index.d.ts +6 -6
  146. package/regional-settings/index.js +6 -6
  147. package/regional-settings/list.d.ts +7 -7
  148. package/regional-settings/list.js +4 -4
  149. package/regional-settings/types.d.ts +111 -111
  150. package/regional-settings/types.js +159 -159
  151. package/regional-settings/user-custom-actions.d.ts +7 -7
  152. package/regional-settings/user-custom-actions.js +4 -4
  153. package/regional-settings/web.d.ts +12 -12
  154. package/regional-settings/web.js +7 -7
  155. package/related-items/index.d.ts +1 -1
  156. package/related-items/index.js +1 -1
  157. package/related-items/types.d.ts +76 -76
  158. package/related-items/types.js +103 -103
  159. package/related-items/web.d.ts +12 -12
  160. package/related-items/web.js +9 -9
  161. package/rest.d.ts +44 -44
  162. package/rest.js +72 -72
  163. package/search/index.d.ts +30 -30
  164. package/search/index.js +25 -25
  165. package/search/query.d.ts +62 -62
  166. package/search/query.js +302 -302
  167. package/search/suggest.d.ts +76 -76
  168. package/search/suggest.js +66 -66
  169. package/search/types.d.ts +426 -426
  170. package/search/types.js +57 -57
  171. package/security/funcs.d.ts +43 -43
  172. package/security/funcs.js +142 -142
  173. package/security/index.d.ts +4 -4
  174. package/security/index.js +4 -4
  175. package/security/item.d.ts +7 -7
  176. package/security/item.js +14 -14
  177. package/security/list.d.ts +7 -7
  178. package/security/list.js +14 -14
  179. package/security/types.d.ts +318 -318
  180. package/security/types.js +399 -399
  181. package/security/web.d.ts +9 -9
  182. package/security/web.js +15 -15
  183. package/sharepointqueryable.d.ts +135 -135
  184. package/sharepointqueryable.js +265 -265
  185. package/sharing/file.d.ts +18 -18
  186. package/sharing/file.js +116 -116
  187. package/sharing/folder.d.ts +9 -9
  188. package/sharing/folder.js +136 -136
  189. package/sharing/funcs.d.ts +62 -62
  190. package/sharing/funcs.js +239 -239
  191. package/sharing/index.d.ts +5 -5
  192. package/sharing/index.js +5 -5
  193. package/sharing/item.d.ts +16 -16
  194. package/sharing/item.js +15 -15
  195. package/sharing/types.d.ts +583 -583
  196. package/sharing/types.js +113 -113
  197. package/sharing/web.d.ts +19 -19
  198. package/sharing/web.js +76 -76
  199. package/site-designs/index.d.ts +8 -8
  200. package/site-designs/index.js +14 -14
  201. package/site-designs/types.d.ts +319 -319
  202. package/site-designs/types.js +203 -203
  203. package/site-designs/web.d.ts +25 -25
  204. package/site-designs/web.js +11 -11
  205. package/site-groups/index.d.ts +2 -2
  206. package/site-groups/index.js +2 -2
  207. package/site-groups/types.d.ts +89 -89
  208. package/site-groups/types.js +125 -125
  209. package/site-groups/web.d.ts +40 -40
  210. package/site-groups/web.js +30 -30
  211. package/site-scripts/index.d.ts +9 -9
  212. package/site-scripts/index.js +15 -15
  213. package/site-scripts/list.d.ts +12 -12
  214. package/site-scripts/list.js +24 -24
  215. package/site-scripts/types.d.ts +183 -183
  216. package/site-scripts/types.js +141 -141
  217. package/site-scripts/web.d.ts +13 -13
  218. package/site-scripts/web.js +5 -5
  219. package/site-users/index.d.ts +2 -2
  220. package/site-users/index.js +2 -2
  221. package/site-users/types.d.ts +138 -138
  222. package/site-users/types.js +122 -122
  223. package/site-users/web.d.ts +31 -31
  224. package/site-users/web.js +27 -27
  225. package/sites/index.d.ts +7 -7
  226. package/sites/index.js +13 -13
  227. package/sites/types.d.ts +147 -147
  228. package/sites/types.js +321 -321
  229. package/social/index.d.ts +10 -10
  230. package/social/index.js +13 -13
  231. package/social/types.d.ts +309 -309
  232. package/social/types.js +322 -322
  233. package/sphttpclient.d.ts +18 -18
  234. package/sphttpclient.js +189 -189
  235. package/splibconfig.d.ts +22 -22
  236. package/splibconfig.js +13 -13
  237. package/sputilities/index.d.ts +7 -7
  238. package/sputilities/index.js +13 -13
  239. package/sputilities/types.d.ts +130 -130
  240. package/sputilities/types.js +118 -118
  241. package/subscriptions/index.d.ts +2 -2
  242. package/subscriptions/index.js +2 -2
  243. package/subscriptions/list.d.ts +13 -13
  244. package/subscriptions/list.js +4 -4
  245. package/subscriptions/types.d.ts +54 -54
  246. package/subscriptions/types.js +111 -111
  247. package/taxonomy/index.d.ts +7 -7
  248. package/taxonomy/index.js +13 -13
  249. package/taxonomy/types.d.ts +200 -200
  250. package/taxonomy/types.js +347 -347
  251. package/telemetry.d.ts +12 -12
  252. package/telemetry.js +48 -48
  253. package/types.d.ts +218 -218
  254. package/types.js +79 -79
  255. package/user-custom-actions/index.d.ts +4 -4
  256. package/user-custom-actions/index.js +4 -4
  257. package/user-custom-actions/list.d.ts +12 -12
  258. package/user-custom-actions/list.js +4 -4
  259. package/user-custom-actions/site.d.ts +12 -12
  260. package/user-custom-actions/site.js +4 -4
  261. package/user-custom-actions/types.d.ts +82 -82
  262. package/user-custom-actions/types.js +93 -93
  263. package/user-custom-actions/web.d.ts +15 -15
  264. package/user-custom-actions/web.js +4 -4
  265. package/utils/escapeQueryStrValue.d.ts +1 -1
  266. package/utils/escapeQueryStrValue.js +19 -19
  267. package/utils/extractweburl.d.ts +1 -1
  268. package/utils/extractweburl.js +15 -15
  269. package/utils/file-names.d.ts +17 -17
  270. package/utils/file-names.js +38 -38
  271. package/utils/metadata.d.ts +5 -5
  272. package/utils/metadata.js +5 -5
  273. package/utils/objectToSPKeyValueCollection.d.ts +20 -20
  274. package/utils/objectToSPKeyValueCollection.js +16 -16
  275. package/utils/toResourcePath.d.ts +7 -7
  276. package/utils/toResourcePath.js +6 -6
  277. package/utils/toabsoluteurl.d.ts +7 -7
  278. package/utils/toabsoluteurl.js +61 -61
  279. package/views/index.d.ts +2 -2
  280. package/views/index.js +2 -2
  281. package/views/list.d.ts +23 -23
  282. package/views/list.js +8 -8
  283. package/views/types.d.ts +140 -140
  284. package/views/types.js +184 -184
  285. package/webparts/file.d.ts +15 -15
  286. package/webparts/file.js +6 -6
  287. package/webparts/index.d.ts +2 -2
  288. package/webparts/index.js +2 -2
  289. package/webparts/types.d.ts +83 -83
  290. package/webparts/types.js +117 -117
  291. package/webs/index.d.ts +16 -16
  292. package/webs/index.js +16 -16
  293. package/webs/types.d.ts +210 -210
  294. package/webs/types.js +295 -295
package/sharing/funcs.js CHANGED
@@ -1,240 +1,240 @@
1
- import { __awaiter, __generator, __read, __spreadArray } from "tslib";
2
- import { body } from "@pnp/odata";
3
- import { jsS, assign } from "@pnp/common";
4
- import { SharePointQueryableCollection, SharePointQueryableInstance } from "../sharepointqueryable.js";
5
- import { extractWebUrl } from "../utils/extractweburl.js";
6
- import { Web } from "../webs/types.js";
7
- import { SharingRole, RoleType, } from "./types.js";
8
- import { spPost } from "../operations.js";
9
- import { tag } from "../telemetry.js";
10
- import { RoleDefinitions } from "../security/types.js";
11
- import { emptyGuid } from "../splibconfig.js";
12
- /**
13
- * Shares an object based on the supplied options
14
- *
15
- * @param options The set of options to send to the ShareObject method
16
- * @param bypass If true any processing is skipped and the options are sent directly to the ShareObject method
17
- */
18
- export function shareObject(o, options, bypass) {
19
- if (bypass === void 0) { bypass = false; }
20
- return __awaiter(this, void 0, void 0, function () {
21
- var roleValue, userStr, postBody;
22
- return __generator(this, function (_a) {
23
- switch (_a.label) {
24
- case 0:
25
- if (bypass) {
26
- // if the bypass flag is set send the supplied parameters directly to the service
27
- return [2 /*return*/, sendShareObjectRequest(o, options)];
28
- }
29
- // extend our options with some defaults
30
- options = assign(options, {
31
- group: null,
32
- includeAnonymousLinkInEmail: false,
33
- propagateAcl: false,
34
- useSimplifiedRoles: true,
35
- }, true);
36
- return [4 /*yield*/, getRoleValue(options.role, options.group)];
37
- case 1:
38
- roleValue = _a.sent();
39
- // handle the multiple input types
40
- if (!Array.isArray(options.loginNames)) {
41
- options.loginNames = [options.loginNames];
42
- }
43
- userStr = jsS(options.loginNames.map(function (Key) { return ({ Key: Key }); }));
44
- postBody = {
45
- peoplePickerInput: userStr,
46
- roleValue: roleValue,
47
- url: options.url,
48
- };
49
- if (options.emailData !== undefined && options.emailData !== null) {
50
- postBody = assign(postBody, {
51
- emailBody: options.emailData.body,
52
- emailSubject: options.emailData.subject !== undefined ? options.emailData.subject : "Shared with you.",
53
- sendEmail: true,
54
- });
55
- }
56
- return [2 /*return*/, sendShareObjectRequest(o, postBody)];
57
- }
58
- });
59
- });
60
- }
61
- /**
62
- * Gets a sharing link for the supplied
63
- *
64
- * @param kind The kind of link to share
65
- * @param expiration The optional expiration for this link
66
- */
67
- export function getShareLink(kind, expiration) {
68
- if (expiration === void 0) { expiration = null; }
69
- // date needs to be an ISO string or null
70
- var expString = expiration !== null ? expiration.toISOString() : null;
71
- // clone using the factory and send the request
72
- var o = tag.configure(this.clone(SharePointQueryableInstance, "shareLink"), "sh.getShareLink");
73
- return spPost(o, body({
74
- request: {
75
- createLink: true,
76
- emailData: null,
77
- settings: {
78
- expiration: expString,
79
- linkKind: kind,
80
- },
81
- },
82
- }));
83
- }
84
- /**
85
- * Checks Permissions on the list of Users and returns back role the users have on the Item.
86
- *
87
- * @param recipients The array of Entities for which Permissions need to be checked.
88
- */
89
- export function checkPermissions(recipients) {
90
- var o = tag.configure(this.clone(SharePointQueryableInstance, "checkPermissions"), "sh.checkPermissions");
91
- return spPost(o, body({ recipients: recipients }));
92
- }
93
- /**
94
- * Get Sharing Information.
95
- *
96
- * @param request The SharingInformationRequest Object.
97
- * @param expands Expand more fields.
98
- *
99
- */
100
- export function getSharingInformation(request, expands) {
101
- if (request === void 0) { request = null; }
102
- if (expands === void 0) { expands = []; }
103
- var o = tag.configure(this.clone(SharePointQueryableInstance, "getSharingInformation"), "sh.getSharingInformation");
104
- return spPost(o.expand.apply(o, __spreadArray([], __read(expands), false)), body({ request: request }));
105
- }
106
- /**
107
- * Gets the sharing settings of an item.
108
- *
109
- * @param useSimplifiedRoles Determines whether to use simplified roles.
110
- */
111
- export function getObjectSharingSettings(useSimplifiedRoles) {
112
- if (useSimplifiedRoles === void 0) { useSimplifiedRoles = true; }
113
- var o = tag.configure(this.clone(SharePointQueryableInstance, "getObjectSharingSettings"), "sh.getObjectSharingSettings");
114
- return spPost(o, body({ useSimplifiedRoles: useSimplifiedRoles }));
115
- }
116
- /**
117
- * Unshares this object
118
- */
119
- export function unshareObject() {
120
- return spPost(tag.configure(this.clone(SharePointQueryableInstance, "unshareObject"), "sh.unshareObject"));
121
- }
122
- /**
123
- * Deletes a link by type
124
- *
125
- * @param kind Deletes a sharing link by the kind of link
126
- */
127
- export function deleteLinkByKind(linkKind) {
128
- return spPost(tag.configure(this.clone(SharePointQueryableInstance, "deleteLinkByKind"), "sh.deleteLinkByKind"), body({ linkKind: linkKind }));
129
- }
130
- /**
131
- * Removes the specified link to the item.
132
- *
133
- * @param kind The kind of link to be deleted.
134
- * @param shareId
135
- */
136
- export function unshareLink(linkKind, shareId) {
137
- if (shareId === void 0) { shareId = emptyGuid; }
138
- return spPost(tag.configure(this.clone(SharePointQueryableInstance, "unshareLink"), "sh.unshareLink"), body({ linkKind: linkKind, shareId: shareId }));
139
- }
140
- /**
141
- * Shares this instance with the supplied users
142
- *
143
- * @param loginNames Resolved login names to share
144
- * @param role The role
145
- * @param requireSignin True to require the user is authenticated, otherwise false
146
- * @param propagateAcl True to apply this share to all children
147
- * @param emailData If supplied an email will be sent with the indicated properties
148
- */
149
- export function shareWith(o, loginNames, role, requireSignin, propagateAcl, emailData) {
150
- if (requireSignin === void 0) { requireSignin = false; }
151
- if (propagateAcl === void 0) { propagateAcl = false; }
152
- return __awaiter(this, void 0, void 0, function () {
153
- var userStr, roleFilter, w, def, postBody;
154
- return __generator(this, function (_a) {
155
- switch (_a.label) {
156
- case 0:
157
- // handle the multiple input types
158
- if (!Array.isArray(loginNames)) {
159
- loginNames = [loginNames];
160
- }
161
- userStr = jsS(loginNames.map(function (login) {
162
- return { Key: login };
163
- }));
164
- roleFilter = role === SharingRole.Edit ? RoleType.Contributor : RoleType.Reader;
165
- w = SharePointQueryableCollection("_api/web", "roledefinitions");
166
- return [4 /*yield*/, w.select("Id").filter("RoleTypeKind eq " + roleFilter).get()];
167
- case 1:
168
- def = _a.sent();
169
- if (!Array.isArray(def) || def.length < 1) {
170
- throw Error("Could not locate a role defintion with RoleTypeKind " + roleFilter);
171
- }
172
- postBody = {
173
- includeAnonymousLinkInEmail: requireSignin,
174
- peoplePickerInput: userStr,
175
- propagateAcl: propagateAcl,
176
- roleValue: "role:" + def[0].Id,
177
- useSimplifiedRoles: true,
178
- };
179
- if (emailData !== undefined) {
180
- postBody = assign(postBody, {
181
- emailBody: emailData.body,
182
- emailSubject: emailData.subject !== undefined ? emailData.subject : "",
183
- sendEmail: true,
184
- });
185
- }
186
- return [2 /*return*/, spPost(tag.configure(o.clone(SharePointQueryableInstance, "shareObject"), "sh.shareWith"), body(postBody))];
187
- }
188
- });
189
- });
190
- }
191
- function sendShareObjectRequest(o, options) {
192
- var w = tag.configure(Web(extractWebUrl(o.toUrl()), "/_api/SP.Web.ShareObject"), "sh.sendShareObjectRequest");
193
- w.configureFrom(o);
194
- return spPost(w.expand("UsersWithAccessRequests", "GroupsSharedWith"), body(options));
195
- }
196
- /**
197
- * Calculates the roleValue string used in the sharing query
198
- *
199
- * @param role The Sharing Role
200
- * @param group The Group type
201
- */
202
- function getRoleValue(role, group) {
203
- return __awaiter(this, void 0, void 0, function () {
204
- var _a, g1, g2, roleFilter, def;
205
- return __generator(this, function (_b) {
206
- switch (_b.label) {
207
- case 0:
208
- if (!(group !== undefined && group !== null)) return [3 /*break*/, 7];
209
- _a = group;
210
- switch (_a) {
211
- case RoleType.Contributor: return [3 /*break*/, 1];
212
- case RoleType.Reader: return [3 /*break*/, 3];
213
- case RoleType.Guest: return [3 /*break*/, 3];
214
- }
215
- return [3 /*break*/, 5];
216
- case 1: return [4 /*yield*/, Web("_api/web", "associatedmembergroup").configureFrom(this).select("Id")()];
217
- case 2:
218
- g1 = _b.sent();
219
- return [2 /*return*/, "group: " + g1.Id];
220
- case 3: return [4 /*yield*/, Web("_api/web", "associatedvisitorgroup").configureFrom(this).select("Id")()];
221
- case 4:
222
- g2 = _b.sent();
223
- return [2 /*return*/, "group: " + g2.Id];
224
- case 5: throw Error("Could not determine role value for supplied value. Contributor, Reader, and Guest are supported");
225
- case 6: return [3 /*break*/, 9];
226
- case 7:
227
- roleFilter = role === SharingRole.Edit ? RoleType.Contributor : RoleType.Reader;
228
- return [4 /*yield*/, RoleDefinitions("_api/web").select("Id").top(1).filter("RoleTypeKind eq " + roleFilter)()];
229
- case 8:
230
- def = _b.sent();
231
- if (def.length < 1) {
232
- throw Error("Could not locate associated role definition for supplied role. Edit and View are supported");
233
- }
234
- return [2 /*return*/, "role: " + def[0].Id];
235
- case 9: return [2 /*return*/];
236
- }
237
- });
238
- });
239
- }
1
+ import { __awaiter, __generator, __read, __spreadArray } from "tslib";
2
+ import { body } from "@pnp/odata";
3
+ import { jsS, assign } from "@pnp/common";
4
+ import { SharePointQueryableCollection, SharePointQueryableInstance } from "../sharepointqueryable.js";
5
+ import { extractWebUrl } from "../utils/extractweburl.js";
6
+ import { Web } from "../webs/types.js";
7
+ import { SharingRole, RoleType, } from "./types.js";
8
+ import { spPost } from "../operations.js";
9
+ import { tag } from "../telemetry.js";
10
+ import { RoleDefinitions } from "../security/types.js";
11
+ import { emptyGuid } from "../splibconfig.js";
12
+ /**
13
+ * Shares an object based on the supplied options
14
+ *
15
+ * @param options The set of options to send to the ShareObject method
16
+ * @param bypass If true any processing is skipped and the options are sent directly to the ShareObject method
17
+ */
18
+ export function shareObject(o, options, bypass) {
19
+ if (bypass === void 0) { bypass = false; }
20
+ return __awaiter(this, void 0, void 0, function () {
21
+ var roleValue, userStr, postBody;
22
+ return __generator(this, function (_a) {
23
+ switch (_a.label) {
24
+ case 0:
25
+ if (bypass) {
26
+ // if the bypass flag is set send the supplied parameters directly to the service
27
+ return [2 /*return*/, sendShareObjectRequest(o, options)];
28
+ }
29
+ // extend our options with some defaults
30
+ options = assign(options, {
31
+ group: null,
32
+ includeAnonymousLinkInEmail: false,
33
+ propagateAcl: false,
34
+ useSimplifiedRoles: true,
35
+ }, true);
36
+ return [4 /*yield*/, getRoleValue(options.role, options.group)];
37
+ case 1:
38
+ roleValue = _a.sent();
39
+ // handle the multiple input types
40
+ if (!Array.isArray(options.loginNames)) {
41
+ options.loginNames = [options.loginNames];
42
+ }
43
+ userStr = jsS(options.loginNames.map(function (Key) { return ({ Key: Key }); }));
44
+ postBody = {
45
+ peoplePickerInput: userStr,
46
+ roleValue: roleValue,
47
+ url: options.url,
48
+ };
49
+ if (options.emailData !== undefined && options.emailData !== null) {
50
+ postBody = assign(postBody, {
51
+ emailBody: options.emailData.body,
52
+ emailSubject: options.emailData.subject !== undefined ? options.emailData.subject : "Shared with you.",
53
+ sendEmail: true,
54
+ });
55
+ }
56
+ return [2 /*return*/, sendShareObjectRequest(o, postBody)];
57
+ }
58
+ });
59
+ });
60
+ }
61
+ /**
62
+ * Gets a sharing link for the supplied
63
+ *
64
+ * @param kind The kind of link to share
65
+ * @param expiration The optional expiration for this link
66
+ */
67
+ export function getShareLink(kind, expiration) {
68
+ if (expiration === void 0) { expiration = null; }
69
+ // date needs to be an ISO string or null
70
+ var expString = expiration !== null ? expiration.toISOString() : null;
71
+ // clone using the factory and send the request
72
+ var o = tag.configure(this.clone(SharePointQueryableInstance, "shareLink"), "sh.getShareLink");
73
+ return spPost(o, body({
74
+ request: {
75
+ createLink: true,
76
+ emailData: null,
77
+ settings: {
78
+ expiration: expString,
79
+ linkKind: kind,
80
+ },
81
+ },
82
+ }));
83
+ }
84
+ /**
85
+ * Checks Permissions on the list of Users and returns back role the users have on the Item.
86
+ *
87
+ * @param recipients The array of Entities for which Permissions need to be checked.
88
+ */
89
+ export function checkPermissions(recipients) {
90
+ var o = tag.configure(this.clone(SharePointQueryableInstance, "checkPermissions"), "sh.checkPermissions");
91
+ return spPost(o, body({ recipients: recipients }));
92
+ }
93
+ /**
94
+ * Get Sharing Information.
95
+ *
96
+ * @param request The SharingInformationRequest Object.
97
+ * @param expands Expand more fields.
98
+ *
99
+ */
100
+ export function getSharingInformation(request, expands) {
101
+ if (request === void 0) { request = null; }
102
+ if (expands === void 0) { expands = []; }
103
+ var o = tag.configure(this.clone(SharePointQueryableInstance, "getSharingInformation"), "sh.getSharingInformation");
104
+ return spPost(o.expand.apply(o, __spreadArray([], __read(expands), false)), body({ request: request }));
105
+ }
106
+ /**
107
+ * Gets the sharing settings of an item.
108
+ *
109
+ * @param useSimplifiedRoles Determines whether to use simplified roles.
110
+ */
111
+ export function getObjectSharingSettings(useSimplifiedRoles) {
112
+ if (useSimplifiedRoles === void 0) { useSimplifiedRoles = true; }
113
+ var o = tag.configure(this.clone(SharePointQueryableInstance, "getObjectSharingSettings"), "sh.getObjectSharingSettings");
114
+ return spPost(o, body({ useSimplifiedRoles: useSimplifiedRoles }));
115
+ }
116
+ /**
117
+ * Unshares this object
118
+ */
119
+ export function unshareObject() {
120
+ return spPost(tag.configure(this.clone(SharePointQueryableInstance, "unshareObject"), "sh.unshareObject"));
121
+ }
122
+ /**
123
+ * Deletes a link by type
124
+ *
125
+ * @param kind Deletes a sharing link by the kind of link
126
+ */
127
+ export function deleteLinkByKind(linkKind) {
128
+ return spPost(tag.configure(this.clone(SharePointQueryableInstance, "deleteLinkByKind"), "sh.deleteLinkByKind"), body({ linkKind: linkKind }));
129
+ }
130
+ /**
131
+ * Removes the specified link to the item.
132
+ *
133
+ * @param kind The kind of link to be deleted.
134
+ * @param shareId
135
+ */
136
+ export function unshareLink(linkKind, shareId) {
137
+ if (shareId === void 0) { shareId = emptyGuid; }
138
+ return spPost(tag.configure(this.clone(SharePointQueryableInstance, "unshareLink"), "sh.unshareLink"), body({ linkKind: linkKind, shareId: shareId }));
139
+ }
140
+ /**
141
+ * Shares this instance with the supplied users
142
+ *
143
+ * @param loginNames Resolved login names to share
144
+ * @param role The role
145
+ * @param requireSignin True to require the user is authenticated, otherwise false
146
+ * @param propagateAcl True to apply this share to all children
147
+ * @param emailData If supplied an email will be sent with the indicated properties
148
+ */
149
+ export function shareWith(o, loginNames, role, requireSignin, propagateAcl, emailData) {
150
+ if (requireSignin === void 0) { requireSignin = false; }
151
+ if (propagateAcl === void 0) { propagateAcl = false; }
152
+ return __awaiter(this, void 0, void 0, function () {
153
+ var userStr, roleFilter, w, def, postBody;
154
+ return __generator(this, function (_a) {
155
+ switch (_a.label) {
156
+ case 0:
157
+ // handle the multiple input types
158
+ if (!Array.isArray(loginNames)) {
159
+ loginNames = [loginNames];
160
+ }
161
+ userStr = jsS(loginNames.map(function (login) {
162
+ return { Key: login };
163
+ }));
164
+ roleFilter = role === SharingRole.Edit ? RoleType.Contributor : RoleType.Reader;
165
+ w = SharePointQueryableCollection("_api/web", "roledefinitions");
166
+ return [4 /*yield*/, w.select("Id").filter("RoleTypeKind eq " + roleFilter).get()];
167
+ case 1:
168
+ def = _a.sent();
169
+ if (!Array.isArray(def) || def.length < 1) {
170
+ throw Error("Could not locate a role defintion with RoleTypeKind " + roleFilter);
171
+ }
172
+ postBody = {
173
+ includeAnonymousLinkInEmail: requireSignin,
174
+ peoplePickerInput: userStr,
175
+ propagateAcl: propagateAcl,
176
+ roleValue: "role:" + def[0].Id,
177
+ useSimplifiedRoles: true,
178
+ };
179
+ if (emailData !== undefined) {
180
+ postBody = assign(postBody, {
181
+ emailBody: emailData.body,
182
+ emailSubject: emailData.subject !== undefined ? emailData.subject : "",
183
+ sendEmail: true,
184
+ });
185
+ }
186
+ return [2 /*return*/, spPost(tag.configure(o.clone(SharePointQueryableInstance, "shareObject"), "sh.shareWith"), body(postBody))];
187
+ }
188
+ });
189
+ });
190
+ }
191
+ function sendShareObjectRequest(o, options) {
192
+ var w = tag.configure(Web(extractWebUrl(o.toUrl()), "/_api/SP.Web.ShareObject"), "sh.sendShareObjectRequest");
193
+ w.configureFrom(o);
194
+ return spPost(w.expand("UsersWithAccessRequests", "GroupsSharedWith"), body(options));
195
+ }
196
+ /**
197
+ * Calculates the roleValue string used in the sharing query
198
+ *
199
+ * @param role The Sharing Role
200
+ * @param group The Group type
201
+ */
202
+ function getRoleValue(role, group) {
203
+ return __awaiter(this, void 0, void 0, function () {
204
+ var _a, g1, g2, roleFilter, def;
205
+ return __generator(this, function (_b) {
206
+ switch (_b.label) {
207
+ case 0:
208
+ if (!(group !== undefined && group !== null)) return [3 /*break*/, 7];
209
+ _a = group;
210
+ switch (_a) {
211
+ case RoleType.Contributor: return [3 /*break*/, 1];
212
+ case RoleType.Reader: return [3 /*break*/, 3];
213
+ case RoleType.Guest: return [3 /*break*/, 3];
214
+ }
215
+ return [3 /*break*/, 5];
216
+ case 1: return [4 /*yield*/, Web("_api/web", "associatedmembergroup").configureFrom(this).select("Id")()];
217
+ case 2:
218
+ g1 = _b.sent();
219
+ return [2 /*return*/, "group: " + g1.Id];
220
+ case 3: return [4 /*yield*/, Web("_api/web", "associatedvisitorgroup").configureFrom(this).select("Id")()];
221
+ case 4:
222
+ g2 = _b.sent();
223
+ return [2 /*return*/, "group: " + g2.Id];
224
+ case 5: throw Error("Could not determine role value for supplied value. Contributor, Reader, and Guest are supported");
225
+ case 6: return [3 /*break*/, 9];
226
+ case 7:
227
+ roleFilter = role === SharingRole.Edit ? RoleType.Contributor : RoleType.Reader;
228
+ return [4 /*yield*/, RoleDefinitions("_api/web").select("Id").top(1).filter("RoleTypeKind eq " + roleFilter)()];
229
+ case 8:
230
+ def = _b.sent();
231
+ if (def.length < 1) {
232
+ throw Error("Could not locate associated role definition for supplied role. Edit and View are supported");
233
+ }
234
+ return [2 /*return*/, "role: " + def[0].Id];
235
+ case 9: return [2 /*return*/];
236
+ }
237
+ });
238
+ });
239
+ }
240
240
  //# sourceMappingURL=funcs.js.map
@@ -1,6 +1,6 @@
1
- import "./file.js";
2
- import "./folder.js";
3
- import "./item.js";
4
- import "./web.js";
5
- export { ISharingEmailData, ISharingEntityPermission, ISharingInformation, ISharingInformationRequest, ISharingLinkInfo, ISharingRecipient, ISharingResult, IUserSharingResult, SPSharedObjectType, SharingDomainRestrictionMode, SharingLinkKind, SharingOperationStatusCode, SharingRole, IInvitationCreationResult, IObjectSharingSettings, IShareLinkRequest, IShareLinkResponse, IShareLinkSettings, IShareObjectOptions, RoleType, } from "./types.js";
1
+ import "./file.js";
2
+ import "./folder.js";
3
+ import "./item.js";
4
+ import "./web.js";
5
+ export { ISharingEmailData, ISharingEntityPermission, ISharingInformation, ISharingInformationRequest, ISharingLinkInfo, ISharingRecipient, ISharingResult, IUserSharingResult, SPSharedObjectType, SharingDomainRestrictionMode, SharingLinkKind, SharingOperationStatusCode, SharingRole, IInvitationCreationResult, IObjectSharingSettings, IShareLinkRequest, IShareLinkResponse, IShareLinkSettings, IShareObjectOptions, RoleType, } from "./types.js";
6
6
  //# sourceMappingURL=index.d.ts.map
package/sharing/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import "./file.js";
2
- import "./folder.js";
3
- import "./item.js";
4
- import "./web.js";
5
- export { SPSharedObjectType, SharingDomainRestrictionMode, SharingLinkKind, SharingOperationStatusCode, SharingRole, RoleType, } from "./types.js";
1
+ import "./file.js";
2
+ import "./folder.js";
3
+ import "./item.js";
4
+ import "./web.js";
5
+ export { SPSharedObjectType, SharingDomainRestrictionMode, SharingLinkKind, SharingOperationStatusCode, SharingRole, RoleType, } from "./types.js";
6
6
  //# sourceMappingURL=index.js.map
package/sharing/item.d.ts CHANGED
@@ -1,17 +1,17 @@
1
- import { ISharingEmailData, ISharingResult, SharingRole, ISharedFuncs } from "./types.js";
2
- declare module "../items/types" {
3
- interface _Item extends ISharedFuncs {
4
- shareWith(loginNames: string | string[], role?: SharingRole, requireSignin?: boolean, emailData?: ISharingEmailData): Promise<ISharingResult>;
5
- }
6
- interface IItem extends ISharedFuncs {
7
- /**
8
- * Shares this item with one or more users
9
- *
10
- * @param loginNames string or string[] of resolved login names to which this item will be shared
11
- * @param role The role (View | Edit) applied to the share
12
- * @param emailData Optional, if inlucded an email will be sent. Note subject currently has no effect.
13
- */
14
- shareWith(loginNames: string | string[], role?: SharingRole, requireSignin?: boolean, emailData?: ISharingEmailData): Promise<ISharingResult>;
15
- }
16
- }
1
+ import { ISharingEmailData, ISharingResult, SharingRole, ISharedFuncs } from "./types.js";
2
+ declare module "../items/types" {
3
+ interface _Item extends ISharedFuncs {
4
+ shareWith(loginNames: string | string[], role?: SharingRole, requireSignin?: boolean, emailData?: ISharingEmailData): Promise<ISharingResult>;
5
+ }
6
+ interface IItem extends ISharedFuncs {
7
+ /**
8
+ * Shares this item with one or more users
9
+ *
10
+ * @param loginNames string or string[] of resolved login names to which this item will be shared
11
+ * @param role The role (View | Edit) applied to the share
12
+ * @param emailData Optional, if inlucded an email will be sent. Note subject currently has no effect.
13
+ */
14
+ shareWith(loginNames: string | string[], role?: SharingRole, requireSignin?: boolean, emailData?: ISharingEmailData): Promise<ISharingResult>;
15
+ }
16
+ }
17
17
  //# sourceMappingURL=item.d.ts.map
package/sharing/item.js CHANGED
@@ -1,16 +1,16 @@
1
- import { _Item } from "../items/types.js";
2
- import { SharingRole, } from "./types.js";
3
- import { shareWith, getShareLink, checkPermissions, getSharingInformation, getObjectSharingSettings, unshareObject, deleteLinkByKind, unshareLink, } from "./funcs.js";
4
- _Item.prototype.shareWith = function (loginNames, role, requireSignin, emailData) {
5
- if (role === void 0) { role = SharingRole.View; }
6
- if (requireSignin === void 0) { requireSignin = false; }
7
- return shareWith(this, loginNames, role, requireSignin, false, emailData);
8
- };
9
- _Item.prototype.getShareLink = getShareLink;
10
- _Item.prototype.checkSharingPermissions = checkPermissions;
11
- _Item.prototype.getSharingInformation = getSharingInformation;
12
- _Item.prototype.getObjectSharingSettings = getObjectSharingSettings;
13
- _Item.prototype.unshare = unshareObject;
14
- _Item.prototype.deleteSharingLinkByKind = deleteLinkByKind;
15
- _Item.prototype.unshareLink = unshareLink;
1
+ import { _Item } from "../items/types.js";
2
+ import { SharingRole, } from "./types.js";
3
+ import { shareWith, getShareLink, checkPermissions, getSharingInformation, getObjectSharingSettings, unshareObject, deleteLinkByKind, unshareLink, } from "./funcs.js";
4
+ _Item.prototype.shareWith = function (loginNames, role, requireSignin, emailData) {
5
+ if (role === void 0) { role = SharingRole.View; }
6
+ if (requireSignin === void 0) { requireSignin = false; }
7
+ return shareWith(this, loginNames, role, requireSignin, false, emailData);
8
+ };
9
+ _Item.prototype.getShareLink = getShareLink;
10
+ _Item.prototype.checkSharingPermissions = checkPermissions;
11
+ _Item.prototype.getSharingInformation = getSharingInformation;
12
+ _Item.prototype.getObjectSharingSettings = getObjectSharingSettings;
13
+ _Item.prototype.unshare = unshareObject;
14
+ _Item.prototype.deleteSharingLinkByKind = deleteLinkByKind;
15
+ _Item.prototype.unshareLink = unshareLink;
16
16
  //# sourceMappingURL=item.js.map