sp-js-provisioning 1.0.4 → 1.1.2

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 (85) hide show
  1. package/.husky/commit-msg +4 -0
  2. package/README.md +11 -31
  3. package/lib/handlers/clientsidepages.d.ts +13 -13
  4. package/lib/handlers/clientsidepages.js +77 -60
  5. package/lib/handlers/clientsidepages.js.map +1 -0
  6. package/lib/handlers/composedlook.d.ts +6 -6
  7. package/lib/handlers/composedlook.js +24 -17
  8. package/lib/handlers/composedlook.js.map +1 -0
  9. package/lib/handlers/contenttypes.d.ts +20 -20
  10. package/lib/handlers/contenttypes.js +77 -59
  11. package/lib/handlers/contenttypes.js.map +1 -0
  12. package/lib/handlers/customactions.d.ts +7 -7
  13. package/lib/handlers/customactions.js +24 -17
  14. package/lib/handlers/customactions.js.map +1 -0
  15. package/lib/handlers/exports.d.ts +3 -3
  16. package/lib/handlers/exports.js +15 -11
  17. package/lib/handlers/exports.js.map +1 -0
  18. package/lib/handlers/features.d.ts +7 -7
  19. package/lib/handlers/features.js +24 -22
  20. package/lib/handlers/features.js.map +1 -0
  21. package/lib/handlers/files.d.ts +44 -44
  22. package/lib/handlers/files.js +229 -159
  23. package/lib/handlers/files.js.map +1 -0
  24. package/lib/handlers/handlerbase.d.ts +21 -11
  25. package/lib/handlers/handlerbase.js +51 -16
  26. package/lib/handlers/handlerbase.js.map +1 -0
  27. package/lib/handlers/hooks.d.ts +22 -0
  28. package/lib/handlers/hooks.js +230 -0
  29. package/lib/handlers/hooks.js.map +1 -0
  30. package/lib/handlers/lists.d.ts +45 -45
  31. package/lib/handlers/lists.js +184 -150
  32. package/lib/handlers/lists.js.map +1 -0
  33. package/lib/handlers/navigation.d.ts +10 -10
  34. package/lib/handlers/navigation.js +40 -31
  35. package/lib/handlers/navigation.js.map +1 -0
  36. package/lib/handlers/propertybagentries.d.ts +7 -7
  37. package/lib/handlers/propertybagentries.js +30 -25
  38. package/lib/handlers/propertybagentries.js.map +1 -0
  39. package/lib/handlers/sitefields.d.ts +11 -11
  40. package/lib/handlers/sitefields.js +40 -29
  41. package/lib/handlers/sitefields.js.map +1 -0
  42. package/lib/handlers/websettings.d.ts +7 -7
  43. package/lib/handlers/websettings.js +36 -33
  44. package/lib/handlers/websettings.js.map +1 -0
  45. package/lib/index.d.ts +3 -3
  46. package/lib/index.js +3 -2
  47. package/lib/index.js.map +1 -0
  48. package/lib/provisioningconfig.d.ts +2 -2
  49. package/lib/provisioningconfig.js +2 -0
  50. package/lib/provisioningconfig.js.map +1 -0
  51. package/lib/provisioningcontext.d.ts +1 -5
  52. package/lib/provisioningcontext.js +2 -4
  53. package/lib/provisioningcontext.js.map +1 -0
  54. package/lib/schema.d.ts +18 -4
  55. package/lib/schema.js +2 -0
  56. package/lib/schema.js.map +1 -0
  57. package/lib/util/index.d.ts +3 -6
  58. package/lib/util/index.js +20 -29
  59. package/lib/util/index.js.map +1 -0
  60. package/lib/util/tokenhelper.d.ts +3 -3
  61. package/lib/util/tokenhelper.js +30 -29
  62. package/lib/util/tokenhelper.js.map +1 -0
  63. package/lib/webprovisioner.d.ts +16 -16
  64. package/lib/webprovisioner.js +42 -29
  65. package/lib/webprovisioner.js.map +1 -0
  66. package/package.json +118 -36
  67. package/sample-schemas/all-simple.ts +85 -76
  68. package/AUTHORS +0 -3
  69. package/LICENSE +0 -25
  70. package/debug/debug.ts +0 -68
  71. package/debug/example.ts +0 -42
  72. package/gulptasks/@configuration.js +0 -58
  73. package/gulptasks/build.js +0 -84
  74. package/gulptasks/clean.js +0 -23
  75. package/gulptasks/docs.js +0 -11
  76. package/gulptasks/index.js +0 -8
  77. package/gulptasks/lint.js +0 -18
  78. package/gulptasks/package.js +0 -44
  79. package/gulptasks/publish.js +0 -232
  80. package/gulptasks/test.js +0 -40
  81. package/gulptasks/watch.js +0 -15
  82. package/jsdoc.json +0 -26
  83. package/pnpm-lock.yaml +0 -6582
  84. package/shrinkwrap.yaml +0 -6513
  85. package/webpack.config.js +0 -58
@@ -1,7 +1,10 @@
1
1
  var __extends = (this && this.__extends) || (function () {
2
- var extendStatics = Object.setPrototypeOf ||
3
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
4
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
5
8
  return function (d, b) {
6
9
  extendStatics(d, b);
7
10
  function __() { this.constructor = d; }
@@ -9,10 +12,11 @@ var __extends = (this && this.__extends) || (function () {
9
12
  };
10
13
  })();
11
14
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
16
  return new (P || (P = Promise))(function (resolve, reject) {
13
17
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
18
  function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
20
  step((generator = generator.apply(thisArg, _arguments || [])).next());
17
21
  });
18
22
  };
@@ -23,8 +27,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
23
27
  function step(op) {
24
28
  if (f) throw new TypeError("Generator is already executing.");
25
29
  while (_) try {
26
- if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
27
- if (y = 0, t) op = [0, t.value];
30
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
+ if (y = 0, t) op = [op[0] & 2, t.value];
28
32
  switch (op[0]) {
29
33
  case 0: case 1: t = op; break;
30
34
  case 4: _.label++; return { value: op[1], done: false };
@@ -43,79 +47,98 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
43
47
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
44
48
  }
45
49
  };
46
- import * as xmljs from "xml-js";
47
- import { HandlerBase } from "./handlerbase";
48
- import { combine, isArray } from "@pnp/common";
49
- import { Logger } from "@pnp/logging";
50
- import { replaceUrlTokens } from "../util";
51
- import { TokenHelper } from "../util/tokenhelper";
50
+ /* eslint-disable unicorn/prevent-abbreviations */
51
+ import * as xmljs from 'xml-js';
52
+ import { HandlerBase } from './handlerbase';
53
+ import { combine, isArray } from '@pnp/common';
54
+ import { Logger } from '@pnp/logging';
55
+ import { replaceUrlTokens } from '../util';
56
+ import { TokenHelper } from '../util/tokenhelper';
52
57
  /**
53
58
  * Describes the Features Object Handler
54
59
  */
55
- var Files = (function (_super) {
60
+ var Files = /** @class */ (function (_super) {
56
61
  __extends(Files, _super);
57
62
  /**
58
63
  * Creates a new instance of the Files class
59
64
  *
60
- * @param {IProvisioningConfig} config Provisioning config
65
+ * @param config - Provisioning config
61
66
  */
62
67
  function Files(config) {
63
- var _this = _super.call(this, "Files", config) || this;
68
+ var _this = _super.call(this, Files.name, config) || this;
64
69
  /**
65
70
  * Fetches web part contents
66
71
  *
67
- * @param {Array<IWebPart>} webParts Web parts
68
- * @param {Function} callbackFunc Callback function that takes index of the the webpart and the retrieved XML
72
+ * @param webParts - Web parts
73
+ * @param callbackFunc - Callback function that takes index of the the webpart and the retrieved XML
69
74
  */
70
- _this.fetchWebPartContents = function (webParts, callbackFunc) {
75
+ _this.fetchWebPartContents = function (webParts, callbackFunction) {
71
76
  return new Promise(function (resolve, reject) {
72
77
  var fileFetchPromises = webParts.map(function (wp, index) {
73
78
  return (function () {
74
- return new Promise(function (_res, _rej) { return __awaiter(_this, void 0, void 0, function () {
75
- var fileSrc, response, xml, obj, existingProperties, updatedProperties_1;
79
+ return new Promise(function (_res) { return __awaiter(_this, void 0, void 0, function () {
80
+ var fileSource, response, xml, object, existingProperties, updatedProperties_1, _loop_1, _i, existingProperties_1, property;
76
81
  return __generator(this, function (_a) {
77
82
  switch (_a.label) {
78
83
  case 0:
79
84
  if (!wp.Contents.FileSrc) return [3 /*break*/, 3];
80
- fileSrc = replaceUrlTokens(this.tokenHelper.replaceTokens(wp.Contents.FileSrc), this.config);
81
- Logger.log({ data: null, level: 1 /* Info */, message: "Retrieving contents from file '" + fileSrc + "'." });
82
- return [4 /*yield*/, fetch(fileSrc, { credentials: "include", method: "GET" })];
85
+ fileSource = replaceUrlTokens(this.tokenHelper.replaceTokens(wp.Contents.FileSrc), this.config);
86
+ Logger.log({
87
+ data: null,
88
+ level: 1 /* Info */,
89
+ message: "Retrieving contents from file '" + fileSource + "'."
90
+ });
91
+ return [4 /*yield*/, fetch(fileSource, {
92
+ credentials: 'include',
93
+ method: 'GET'
94
+ })];
83
95
  case 1:
84
96
  response = _a.sent();
85
97
  return [4 /*yield*/, response.text()];
86
98
  case 2:
87
99
  xml = _a.sent();
88
100
  if (isArray(wp.PropertyOverrides)) {
89
- obj = xmljs.xml2js(xml);
90
- if (obj.elements[0].name === "webParts") {
91
- existingProperties = obj.elements[0].elements[0].elements[1].elements[0].elements;
101
+ object = xmljs.xml2js(xml);
102
+ if (object.elements[0].name === 'webParts') {
103
+ existingProperties = object.elements[0].elements[0].elements[1].elements[0]
104
+ .elements;
92
105
  updatedProperties_1 = [];
93
- existingProperties.forEach(function (prop) {
94
- var hasOverride = wp.PropertyOverrides.filter(function (po) { return po.name === prop.attributes.name; }).length > 0;
106
+ _loop_1 = function (property) {
107
+ var hasOverride = wp.PropertyOverrides.filter(function (po) { return po.name === property.attributes.name; }).length > 0;
95
108
  if (!hasOverride) {
96
- updatedProperties_1.push(prop);
109
+ updatedProperties_1.push(property);
97
110
  }
98
- });
111
+ };
112
+ for (_i = 0, existingProperties_1 = existingProperties; _i < existingProperties_1.length; _i++) {
113
+ property = existingProperties_1[_i];
114
+ _loop_1(property);
115
+ }
116
+ // eslint-disable-next-line unicorn/no-array-for-each
99
117
  wp.PropertyOverrides.forEach(function (_a) {
100
118
  var name = _a.name, type = _a.type, value = _a.value;
101
- updatedProperties_1.push({ attributes: { name: name, type: type }, elements: [{ text: value, type: "text" }], name: "property", type: "element" });
119
+ updatedProperties_1.push({
120
+ attributes: { name: name, type: type },
121
+ elements: [{ text: value, type: 'text' }],
122
+ name: 'property',
123
+ type: 'element'
124
+ });
102
125
  });
103
- obj.elements[0].elements[0].elements[1].elements[0].elements = updatedProperties_1;
104
- callbackFunc(index, xmljs.js2xml(obj));
105
- _res();
126
+ object.elements[0].elements[0].elements[1].elements[0].elements = updatedProperties_1;
127
+ callbackFunction(index, xmljs.js2xml(object));
128
+ _res(true);
106
129
  }
107
130
  else {
108
- callbackFunc(index, xml);
109
- _res();
131
+ callbackFunction(index, xml);
132
+ _res(true);
110
133
  }
111
134
  }
112
135
  else {
113
- callbackFunc(index, xml);
114
- _res();
136
+ callbackFunction(index, xml);
137
+ _res(true);
115
138
  }
116
139
  return [3 /*break*/, 4];
117
140
  case 3:
118
- _res();
141
+ _res(true);
119
142
  _a.label = 4;
120
143
  case 4: return [2 /*return*/];
121
144
  }
@@ -123,9 +146,7 @@ var Files = (function (_super) {
123
146
  }); });
124
147
  })();
125
148
  });
126
- Promise.all(fileFetchPromises)
127
- .then(resolve)
128
- .catch(reject);
149
+ Promise.all(fileFetchPromises).then(resolve).catch(reject);
129
150
  });
130
151
  };
131
152
  return _this;
@@ -133,24 +154,21 @@ var Files = (function (_super) {
133
154
  /**
134
155
  * Provisioning Files
135
156
  *
136
- * @param {Web} web The web
137
- * @param {IFile[]} files The files to provision
138
- * @param {ProvisioningContext} context Provisioning context
157
+ * @param web - The web
158
+ * @param files - The files to provision
159
+ * @param context - Provisioning context
139
160
  */
140
161
  Files.prototype.ProvisionObjects = function (web, files, context) {
141
162
  return __awaiter(this, void 0, void 0, function () {
163
+ var ServerRelativeUrl, error_1;
142
164
  var _this = this;
143
- var ServerRelativeUrl, err_1;
144
165
  return __generator(this, function (_a) {
145
166
  switch (_a.label) {
146
167
  case 0:
147
168
  this.tokenHelper = new TokenHelper(context, this.config);
148
169
  _super.prototype.scope_started.call(this);
149
- if (typeof window === "undefined") {
150
- throw "Files Handler not supported in Node.";
151
- }
152
170
  if (this.config.spfxContext) {
153
- throw "Files Handler not supported in SPFx.";
171
+ throw 'Files Handler not supported in SPFx.';
154
172
  }
155
173
  return [4 /*yield*/, web.get()];
156
174
  case 1:
@@ -158,14 +176,16 @@ var Files = (function (_super) {
158
176
  _a.label = 2;
159
177
  case 2:
160
178
  _a.trys.push([2, 4, , 5]);
161
- return [4 /*yield*/, files.reduce(function (chain, file) { return chain.then(function () { return _this.processFile(web, file, ServerRelativeUrl); }); }, Promise.resolve())];
179
+ return [4 /*yield*/, files.reduce(function (chain, file) {
180
+ return chain.then(function () { return _this.processFile(web, file, ServerRelativeUrl); });
181
+ }, Promise.resolve())];
162
182
  case 3:
163
183
  _a.sent();
164
184
  _super.prototype.scope_ended.call(this);
165
185
  return [3 /*break*/, 5];
166
186
  case 4:
167
- err_1 = _a.sent();
168
- _super.prototype.scope_ended.call(this);
187
+ error_1 = _a.sent();
188
+ _super.prototype.scope_ended.call(this, error_1);
169
189
  return [3 /*break*/, 5];
170
190
  case 5: return [2 /*return*/];
171
191
  }
@@ -175,22 +195,25 @@ var Files = (function (_super) {
175
195
  /**
176
196
  * Get blob for a file
177
197
  *
178
- * @param {IFile} file The file
198
+ * @param file - The file
179
199
  */
180
200
  Files.prototype.getFileBlob = function (file) {
181
201
  return __awaiter(this, void 0, void 0, function () {
182
- var fileSrcWithoutTokens, response, fileContents, blob;
202
+ var fileSourceWithoutTokens, response, fileContents, blob;
183
203
  return __generator(this, function (_a) {
184
204
  switch (_a.label) {
185
205
  case 0:
186
- fileSrcWithoutTokens = replaceUrlTokens(this.tokenHelper.replaceTokens(file.Src), this.config);
187
- return [4 /*yield*/, fetch(fileSrcWithoutTokens, { credentials: "include", method: "GET" })];
206
+ fileSourceWithoutTokens = replaceUrlTokens(this.tokenHelper.replaceTokens(file.Src), this.config);
207
+ return [4 /*yield*/, fetch(fileSourceWithoutTokens, {
208
+ credentials: 'include',
209
+ method: 'GET'
210
+ })];
188
211
  case 1:
189
212
  response = _a.sent();
190
213
  return [4 /*yield*/, response.text()];
191
214
  case 2:
192
215
  fileContents = _a.sent();
193
- blob = new Blob([fileContents], { type: "text/plain" });
216
+ blob = new Blob([fileContents], { type: 'text/plain' });
194
217
  return [2 /*return*/, blob];
195
218
  }
196
219
  });
@@ -199,54 +222,57 @@ var Files = (function (_super) {
199
222
  /**
200
223
  * Procceses a file
201
224
  *
202
- * @param {Web} web The web
203
- * @param {IFile} file The fileAddError
204
- * @param {string} webServerRelativeUrl ServerRelativeUrl for the web
225
+ * @param web - The web
226
+ * @param file - The file
227
+ * @param webServerRelativeUrl - ServerRelativeUrl for the web
205
228
  */
206
229
  Files.prototype.processFile = function (web, file, webServerRelativeUrl) {
207
230
  return __awaiter(this, void 0, void 0, function () {
208
- var blob, folderServerRelativeUrl, pnpFolder, fileServerRelativeUrl, fileAddResult, pnpFile, fileAddError_1, err_2;
209
- return __generator(this, function (_a) {
210
- switch (_a.label) {
231
+ var blob, folderServerRelativeUrl, pnpFolder, fileServerRelativeUrl, fileAddResult, pnpFile, _a, error_2;
232
+ return __generator(this, function (_b) {
233
+ switch (_b.label) {
211
234
  case 0:
212
- Logger.log({ level: 1 /* Info */, message: "Processing file " + file.Folder + "/" + file.Url });
213
- _a.label = 1;
235
+ Logger.log({
236
+ level: 1 /* Info */,
237
+ message: "Processing file " + file.Folder + "/" + file.Url
238
+ });
239
+ _b.label = 1;
214
240
  case 1:
215
- _a.trys.push([1, 10, , 11]);
241
+ _b.trys.push([1, 10, , 11]);
216
242
  return [4 /*yield*/, this.getFileBlob(file)];
217
243
  case 2:
218
- blob = _a.sent();
219
- folderServerRelativeUrl = combine("/", webServerRelativeUrl, file.Folder);
244
+ blob = _b.sent();
245
+ folderServerRelativeUrl = combine('/', webServerRelativeUrl, file.Folder);
220
246
  pnpFolder = web.getFolderByServerRelativeUrl(folderServerRelativeUrl);
221
- fileServerRelativeUrl = combine("/", folderServerRelativeUrl, file.Url);
247
+ fileServerRelativeUrl = combine('/', folderServerRelativeUrl, file.Url);
222
248
  fileAddResult = void 0;
223
249
  pnpFile = void 0;
224
- _a.label = 3;
250
+ _b.label = 3;
225
251
  case 3:
226
- _a.trys.push([3, 5, , 6]);
252
+ _b.trys.push([3, 5, , 6]);
227
253
  return [4 /*yield*/, pnpFolder.files.add(file.Url, blob, file.Overwrite)];
228
254
  case 4:
229
- fileAddResult = _a.sent();
255
+ fileAddResult = _b.sent();
230
256
  pnpFile = fileAddResult.file;
231
257
  fileServerRelativeUrl = fileAddResult.data.ServerRelativeUrl;
232
258
  return [3 /*break*/, 6];
233
259
  case 5:
234
- fileAddError_1 = _a.sent();
260
+ _a = _b.sent();
235
261
  pnpFile = web.getFileByServerRelativePath(fileServerRelativeUrl);
236
262
  return [3 /*break*/, 6];
237
263
  case 6: return [4 /*yield*/, this.processProperties(web, pnpFile, file)];
238
264
  case 7:
239
- _a.sent();
265
+ _b.sent();
240
266
  return [4 /*yield*/, this.processWebParts(file, webServerRelativeUrl, fileServerRelativeUrl)];
241
267
  case 8:
242
- _a.sent();
268
+ _b.sent();
243
269
  return [4 /*yield*/, this.processPageListViews(web, file.WebParts, fileServerRelativeUrl)];
244
270
  case 9:
245
- _a.sent();
271
+ _b.sent();
246
272
  return [3 /*break*/, 11];
247
273
  case 10:
248
- err_2 = _a.sent();
249
- throw err_2;
274
+ error_2 = _b.sent();
275
+ throw error_2;
250
276
  case 11: return [2 /*return*/];
251
277
  }
252
278
  });
@@ -255,74 +281,96 @@ var Files = (function (_super) {
255
281
  /**
256
282
  * Remove exisiting webparts if specified
257
283
  *
258
- * @param {string} webServerRelativeUrl ServerRelativeUrl for the web
259
- * @param {string} fileServerRelativeUrl ServerRelativeUrl for the file
260
- * @param {boolean} shouldRemove Should web parts be removed
284
+ * @param webServerRelativeUrl - ServerRelativeUrl for the web
285
+ * @param fileServerRelativeUrl - ServerRelativeUrl for the file
286
+ * @param shouldRemove - Should web parts be removed
261
287
  */
262
288
  Files.prototype.removeExistingWebParts = function (webServerRelativeUrl, fileServerRelativeUrl, shouldRemove) {
263
289
  return new Promise(function (resolve, reject) {
264
290
  if (shouldRemove) {
265
- Logger.log({ level: 1 /* Info */, message: "Deleting existing webpart from file " + fileServerRelativeUrl });
291
+ Logger.log({
292
+ level: 1 /* Info */,
293
+ message: "Deleting existing webpart from file " + fileServerRelativeUrl
294
+ });
266
295
  var clientContext_1 = new SP.ClientContext(webServerRelativeUrl);
267
- var spFile = clientContext_1.get_web().getFileByServerRelativeUrl(fileServerRelativeUrl);
296
+ var spFile = clientContext_1
297
+ .get_web()
298
+ .getFileByServerRelativeUrl(fileServerRelativeUrl);
268
299
  var webPartManager = spFile.getLimitedWebPartManager(SP.WebParts.PersonalizationScope.shared);
269
300
  var webParts_1 = webPartManager.get_webParts();
270
301
  clientContext_1.load(webParts_1);
271
302
  clientContext_1.executeQueryAsync(function () {
272
- webParts_1.get_data().forEach(function (wp) { return wp.deleteWebPart(); });
303
+ for (var _i = 0, _a = webParts_1.get_data(); _i < _a.length; _i++) {
304
+ var wp = _a[_i];
305
+ wp.deleteWebPart();
306
+ }
273
307
  clientContext_1.executeQueryAsync(resolve, reject);
274
308
  }, reject);
275
309
  }
276
310
  else {
277
- Logger.log({ level: 1 /* Info */, message: "Web parts should not be removed from file " + fileServerRelativeUrl + "." });
278
- resolve();
311
+ Logger.log({
312
+ level: 1 /* Info */,
313
+ message: "Web parts should not be removed from file " + fileServerRelativeUrl + "."
314
+ });
315
+ resolve(true);
279
316
  }
280
317
  });
281
318
  };
282
319
  /**
283
320
  * Processes web parts
284
321
  *
285
- * @param {IFile} file The file
286
- * @param {string} webServerRelativeUrl ServerRelativeUrl for the web
287
- * @param {string} fileServerRelativeUrl ServerRelativeUrl for the file
322
+ * @param file - The file
323
+ * @param webServerRelativeUrl - ServerRelativeUrl for the web
324
+ * @param fileServerRelativeUrl - ServerRelativeUrl for the file
288
325
  */
289
326
  Files.prototype.processWebParts = function (file, webServerRelativeUrl, fileServerRelativeUrl) {
290
327
  var _this = this;
291
328
  return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
292
- var _this = this;
293
- var clientContext_2, spFile, webPartManager_1;
294
- return __generator(this, function (_a) {
295
- switch (_a.label) {
329
+ var clientContext, spFile, webPartManager, _i, _a, wp, webPartXml, webPartDef, webPartInstance;
330
+ return __generator(this, function (_b) {
331
+ switch (_b.label) {
296
332
  case 0:
297
- Logger.log({ level: 1 /* Info */, message: "Processing webparts for file " + file.Folder + "/" + file.Url });
333
+ Logger.log({
334
+ level: 1 /* Info */,
335
+ message: "Processing webparts for file " + file.Folder + "/" + file.Url
336
+ });
298
337
  return [4 /*yield*/, this.removeExistingWebParts(webServerRelativeUrl, fileServerRelativeUrl, file.RemoveExistingWebParts)];
299
338
  case 1:
300
- _a.sent();
339
+ _b.sent();
301
340
  if (!(file.WebParts && file.WebParts.length > 0)) return [3 /*break*/, 3];
302
- clientContext_2 = new SP.ClientContext(webServerRelativeUrl), spFile = clientContext_2.get_web().getFileByServerRelativeUrl(fileServerRelativeUrl), webPartManager_1 = spFile.getLimitedWebPartManager(SP.WebParts.PersonalizationScope.shared);
303
- return [4 /*yield*/, this.fetchWebPartContents(file.WebParts, function (index, xml) { file.WebParts[index].Contents.Xml = xml; })];
341
+ clientContext = new SP.ClientContext(webServerRelativeUrl), spFile = clientContext
342
+ .get_web()
343
+ .getFileByServerRelativeUrl(fileServerRelativeUrl), webPartManager = spFile.getLimitedWebPartManager(SP.WebParts.PersonalizationScope.shared);
344
+ return [4 /*yield*/, this.fetchWebPartContents(file.WebParts, function (index, xml) {
345
+ file.WebParts[index].Contents.Xml = xml;
346
+ })];
304
347
  case 2:
305
- _a.sent();
306
- file.WebParts.forEach(function (wp) {
307
- var webPartXml = _this.tokenHelper.replaceTokens(_this.replaceWebPartXmlTokens(wp.Contents.Xml, clientContext_2));
308
- var webPartDef = webPartManager_1.importWebPart(webPartXml);
309
- var webPartInstance = webPartDef.get_webPart();
310
- Logger.log({ data: { webPartXml: webPartXml }, level: 1 /* Info */, message: "Processing webpart " + wp.Title + " for file " + file.Folder + "/" + file.Url });
311
- webPartManager_1.addWebPart(webPartInstance, wp.Zone, wp.Order);
312
- clientContext_2.load(webPartInstance);
313
- });
314
- clientContext_2.executeQueryAsync(resolve, function (sender, args) {
348
+ _b.sent();
349
+ for (_i = 0, _a = file.WebParts; _i < _a.length; _i++) {
350
+ wp = _a[_i];
351
+ webPartXml = this.tokenHelper.replaceTokens(this.replaceWebPartXmlTokens(wp.Contents.Xml, clientContext));
352
+ webPartDef = webPartManager.importWebPart(webPartXml);
353
+ webPartInstance = webPartDef.get_webPart();
354
+ Logger.log({
355
+ data: { webPartXml: webPartXml },
356
+ level: 1 /* Info */,
357
+ message: "Processing webpart " + wp.Title + " for file " + file.Folder + "/" + file.Url
358
+ });
359
+ webPartManager.addWebPart(webPartInstance, wp.Zone, wp.Order);
360
+ clientContext.load(webPartInstance);
361
+ }
362
+ clientContext.executeQueryAsync(resolve, function (sender, args) {
315
363
  Logger.log({
316
364
  data: { error: args.get_message() },
317
365
  level: 3 /* Error */,
318
- message: "Failed to process webparts for file " + file.Folder + "/" + file.Url,
366
+ message: "Failed to process webparts for file " + file.Folder + "/" + file.Url
319
367
  });
320
368
  reject({ sender: sender, args: args });
321
369
  });
322
370
  return [3 /*break*/, 4];
323
371
  case 3:
324
- resolve();
325
- _a.label = 4;
372
+ resolve(true);
373
+ _b.label = 4;
326
374
  case 4: return [2 /*return*/];
327
375
  }
328
376
  });
@@ -331,9 +379,9 @@ var Files = (function (_super) {
331
379
  /**
332
380
  * Processes page list views
333
381
  *
334
- * @param {Web} web The web
335
- * @param {Array<IWebPart>} webParts Web parts
336
- * @param {string} fileServerRelativeUrl ServerRelativeUrl for the file
382
+ * @param web - The web
383
+ * @param webParts - Web parts
384
+ * @param fileServerRelativeUrl - ServerRelativeUrl for the file
337
385
  */
338
386
  Files.prototype.processPageListViews = function (web, webParts, fileServerRelativeUrl) {
339
387
  var _this = this;
@@ -342,27 +390,31 @@ var Files = (function (_super) {
342
390
  Logger.log({
343
391
  data: { webParts: webParts, fileServerRelativeUrl: fileServerRelativeUrl },
344
392
  level: 1 /* Info */,
345
- message: "Processing page list views for file " + fileServerRelativeUrl,
393
+ message: "Processing page list views for file " + fileServerRelativeUrl
346
394
  });
347
395
  var listViewWebParts = webParts.filter(function (wp) { return wp.ListView; });
348
396
  if (listViewWebParts.length > 0) {
349
397
  listViewWebParts
350
- .reduce(function (chain, wp) { return chain.then(function () { return _this.processPageListView(web, wp.ListView, fileServerRelativeUrl); }); }, Promise.resolve())
398
+ .reduce(function (chain, wp) {
399
+ return chain.then(function () {
400
+ return _this.processPageListView(web, wp.ListView, fileServerRelativeUrl);
401
+ });
402
+ }, Promise.resolve())
351
403
  .then(function () {
352
404
  Logger.log({
353
405
  data: {},
354
406
  level: 1 /* Info */,
355
- message: "Successfully processed page list views for file " + fileServerRelativeUrl,
407
+ message: "Successfully processed page list views for file " + fileServerRelativeUrl
356
408
  });
357
409
  resolve();
358
410
  })
359
- .catch(function (err) {
411
+ .catch(function (error) {
360
412
  Logger.log({
361
- data: { err: err, fileServerRelativeUrl: fileServerRelativeUrl },
413
+ data: { err: error, fileServerRelativeUrl: fileServerRelativeUrl },
362
414
  level: 3 /* Error */,
363
- message: "Failed to process page list views for file " + fileServerRelativeUrl,
415
+ message: "Failed to process page list views for file " + fileServerRelativeUrl
364
416
  });
365
- reject(err);
417
+ reject(error);
366
418
  });
367
419
  }
368
420
  else {
@@ -377,72 +429,77 @@ var Files = (function (_super) {
377
429
  /**
378
430
  * Processes page list view
379
431
  *
380
- * @param {Web} web The web
381
- * @param {any} listView List view
382
- * @param {string} fileServerRelativeUrl ServerRelativeUrl for the file
432
+ * @param web - The web
433
+ * @param listView - List view
434
+ * @param fileServerRelativeUrl - ServerRelativeUrl for the file
383
435
  */
384
436
  Files.prototype.processPageListView = function (web, listView, fileServerRelativeUrl) {
385
437
  return new Promise(function (resolve, reject) {
386
438
  var views = web.lists.getByTitle(listView.List).views;
387
- views.get()
439
+ views
440
+ .get()
388
441
  .then(function (listViews) {
389
442
  var wpView = listViews.filter(function (v) { return v.ServerRelativeUrl === fileServerRelativeUrl; });
390
443
  if (wpView.length === 1) {
391
444
  var view_1 = views.getById(wpView[0].Id);
392
445
  var settings = listView.View.AdditionalSettings || {};
393
- view_1.update(settings)
446
+ view_1
447
+ .update(settings)
394
448
  .then(function () {
395
- view_1.fields.removeAll()
449
+ view_1.fields
450
+ .removeAll()
396
451
  .then(function () {
397
- listView.View.ViewFields.reduce(function (chain, viewField) { return chain.then(function () { return view_1.fields.add(viewField); }); }, Promise.resolve())
452
+ listView.View.ViewFields.reduce(function (chain, viewField) {
453
+ return chain.then(function () { return view_1.fields.add(viewField); });
454
+ }, Promise.resolve())
398
455
  .then(resolve)
399
- .catch(function (err) {
456
+ .catch(function (error) {
400
457
  Logger.log({
401
- data: { fileServerRelativeUrl: fileServerRelativeUrl, listView: listView, err: err },
458
+ data: { fileServerRelativeUrl: fileServerRelativeUrl, listView: listView, err: error },
402
459
  level: 3 /* Error */,
403
- message: "Failed to process page list view for file " + fileServerRelativeUrl,
460
+ message: "Failed to process page list view for file " + fileServerRelativeUrl
404
461
  });
405
- reject(err);
462
+ reject(error);
406
463
  });
407
464
  })
408
- .catch(function (err) {
465
+ .catch(function (error) {
409
466
  Logger.log({
410
- data: { fileServerRelativeUrl: fileServerRelativeUrl, listView: listView, err: err },
467
+ data: { fileServerRelativeUrl: fileServerRelativeUrl, listView: listView, err: error },
411
468
  level: 3 /* Error */,
412
- message: "Failed to process page list view for file " + fileServerRelativeUrl,
469
+ message: "Failed to process page list view for file " + fileServerRelativeUrl
413
470
  });
414
- reject(err);
471
+ reject(error);
415
472
  });
416
473
  })
417
- .catch(function (err) {
474
+ .catch(function (error) {
418
475
  Logger.log({
419
- data: { fileServerRelativeUrl: fileServerRelativeUrl, listView: listView, err: err },
476
+ data: { fileServerRelativeUrl: fileServerRelativeUrl, listView: listView, err: error },
420
477
  level: 3 /* Error */,
421
- message: "Failed to process page list view for file " + fileServerRelativeUrl,
478
+ message: "Failed to process page list view for file " + fileServerRelativeUrl
422
479
  });
423
- reject(err);
480
+ reject(error);
424
481
  });
425
482
  }
426
483
  else {
427
484
  resolve();
428
485
  }
429
486
  })
430
- .catch(function (err) {
487
+ .catch(function (error) {
431
488
  Logger.log({
432
- data: { fileServerRelativeUrl: fileServerRelativeUrl, listView: listView, err: err },
489
+ data: { fileServerRelativeUrl: fileServerRelativeUrl, listView: listView, err: error },
433
490
  level: 3 /* Error */,
434
- message: "Failed to process page list view for file " + fileServerRelativeUrl,
491
+ message: "Failed to process page list view for file " + fileServerRelativeUrl
435
492
  });
436
- reject(err);
493
+ reject(error);
437
494
  });
438
495
  });
439
496
  };
440
497
  /**
441
498
  * Process list item properties for the file
442
499
  *
443
- * @param {Web} web The web
444
- * @param {File} pnpFile The PnP file
445
- * @param {Object} properties The properties to set
500
+ * @param web - The web
501
+ * @param pnpFile - The PnP file
502
+ * @param properties - The properties to set
446
503
  */
447
504
  Files.prototype.processProperties = function (web, pnpFile, file) {
448
505
  return __awaiter(this, void 0, void 0, function () {
@@ -452,14 +509,26 @@ var Files = (function (_super) {
452
509
  case 0:
453
510
  hasProperties = file.Properties && Object.keys(file.Properties).length > 0;
454
511
  if (!hasProperties) return [3 /*break*/, 3];
455
- Logger.log({ level: 1 /* Info */, message: "Processing properties for " + file.Folder + "/" + file.Url });
456
- return [4 /*yield*/, pnpFile.listItemAllFields.select("ID", "ParentList/ID", "ParentList/Title").expand("ParentList").get()];
512
+ Logger.log({
513
+ level: 1 /* Info */,
514
+ message: "Processing properties for " + file.Folder + "/" + file.Url
515
+ });
516
+ return [4 /*yield*/, pnpFile.listItemAllFields
517
+ .select('ID', 'ParentList/ID', 'ParentList/Title')
518
+ .expand('ParentList')
519
+ .get()];
457
520
  case 1:
458
521
  listItemAllFields = _a.sent();
459
- return [4 /*yield*/, web.lists.getById(listItemAllFields.ParentList.Id).items.getById(listItemAllFields.ID).update(file.Properties)];
522
+ return [4 /*yield*/, web.lists
523
+ .getById(listItemAllFields.ParentList.Id)
524
+ .items.getById(listItemAllFields.ID)
525
+ .update(file.Properties)];
460
526
  case 2:
461
527
  _a.sent();
462
- Logger.log({ level: 1 /* Info */, message: "Successfully processed properties for " + file.Folder + "/" + file.Url });
528
+ Logger.log({
529
+ level: 1 /* Info */,
530
+ message: "Successfully processed properties for " + file.Folder + "/" + file.Url
531
+ });
463
532
  _a.label = 3;
464
533
  case 3: return [2 /*return*/];
465
534
  }
@@ -467,15 +536,16 @@ var Files = (function (_super) {
467
536
  });
468
537
  };
469
538
  /**
470
- * Replaces tokens in a string, e.g. {site}
471
- *
472
- * @param {string} str The string
473
- * @param {SP.ClientContext} ctx Client context
474
- */
475
- Files.prototype.replaceWebPartXmlTokens = function (str, ctx) {
476
- var site = combine(document.location.protocol, "//", document.location.host, ctx.get_url());
477
- return str.replace(/{site}/g, site);
539
+ * Replaces tokens in a string, e.g. `{site}`
540
+ *
541
+ * @param str - The string
542
+ * @param ctx - Client context
543
+ */
544
+ Files.prototype.replaceWebPartXmlTokens = function (string, context) {
545
+ var site = combine(document.location.protocol, '//', document.location.host, context.get_url());
546
+ return string.replace(/{site}/g, site);
478
547
  };
479
548
  return Files;
480
549
  }(HandlerBase));
481
550
  export { Files };
551
+ //# sourceMappingURL=files.js.map