@pnp/nodejs 3.3.2 → 3.4.1
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/behaviors/fetch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../packages/nodejs/behaviors/fetch.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,EAAS,YAAY,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,SAAS,CAAC,KAAK,CAAC,EAAE,eAAe,GAAG,YAAY,CAAC,SAAS,CAAC,CAsB1E;AAED,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,wBAAwB,GAAG,YAAY,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../packages/nodejs/behaviors/fetch.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,EAAS,YAAY,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,SAAS,CAAC,KAAK,CAAC,EAAE,eAAe,GAAG,YAAY,CAAC,SAAS,CAAC,CAsB1E;AAED,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,wBAAwB,GAAG,YAAY,CAAC,SAAS,CAAC,CA2F5F"}
|
package/behaviors/fetch.js
CHANGED
|
@@ -31,13 +31,15 @@ export function NodeFetchWithRetry(props) {
|
|
|
31
31
|
instance.on.send(function (url, init) {
|
|
32
32
|
let response;
|
|
33
33
|
let wait = interval;
|
|
34
|
-
let count =
|
|
34
|
+
let count = 0;
|
|
35
|
+
let lastErr;
|
|
35
36
|
const retry = async () => {
|
|
36
37
|
var _a;
|
|
37
38
|
// if we've tried too many times, throw
|
|
38
39
|
if (count >= retries) {
|
|
39
|
-
throw new HttpRequestError(`Retry count exceeded (${retries}) for this request. ${response.status}: ${response.statusText};`, response);
|
|
40
|
+
throw lastErr || new HttpRequestError(`Retry count exceeded (${retries}) for this request. ${response === null || response === void 0 ? void 0 : response.status}: ${response === null || response === void 0 ? void 0 : response.statusText};`, response || null);
|
|
40
41
|
}
|
|
42
|
+
count++;
|
|
41
43
|
if (typeof response === "undefined" || (response === null || response === void 0 ? void 0 : response.status) === 429 || (response === null || response === void 0 ? void 0 : response.status) === 503 || (response === null || response === void 0 ? void 0 : response.status) === 504) {
|
|
42
44
|
// this is our first try and response isn't defined yet
|
|
43
45
|
// we have been throttled OR http status code 503 or 504, we can retry this
|
|
@@ -52,7 +54,6 @@ export function NodeFetchWithRetry(props) {
|
|
|
52
54
|
wait *= 2;
|
|
53
55
|
}
|
|
54
56
|
this.log(`Attempt #${count} to retry request which failed with ${response.status}: ${response.statusText}`, 0 /* Verbose */);
|
|
55
|
-
count++;
|
|
56
57
|
await delay(wait);
|
|
57
58
|
}
|
|
58
59
|
try {
|
|
@@ -66,6 +67,11 @@ export function NodeFetchWithRetry(props) {
|
|
|
66
67
|
// this is some non-transient node error, no retry
|
|
67
68
|
throw err;
|
|
68
69
|
}
|
|
70
|
+
if (/AbortError/.test(err.name)) {
|
|
71
|
+
// don't retry aborted requests
|
|
72
|
+
throw err;
|
|
73
|
+
}
|
|
74
|
+
lastErr = err;
|
|
69
75
|
return retry();
|
|
70
76
|
}
|
|
71
77
|
}
|
package/behaviors/fetch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../../packages/nodejs/behaviors/fetch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAa,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,KAAK,EAAgB,MAAM,WAAW,CAAC;AAMhD,MAAM,UAAU,SAAS,CAAC,KAAuB;IAE7C,MAAM,EAAE,OAAO,EAAE,GAAG;QAChB,OAAO,EAAE,IAAI;QACb,GAAG,KAAK;KACX,CAAC;IAEF,OAAO,CAAC,QAAmB,EAAE,EAAE;QAE3B,IAAI,OAAO,EAAE;YACT,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;SAC5B;QAED,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,UAA2B,GAAQ,EAAE,IAAiB;YAEnE,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,kBAAmB,CAAC;YAEtE,OAAY,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAO,IAAI,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC;AACN,CAAC;AAOD,MAAM,UAAU,kBAAkB,CAAC,KAAgC;IAE/D,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG;QACnC,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,GAAG;QACb,OAAO,EAAE,CAAC;QACV,GAAG,KAAK;KACX,CAAC;IAEF,OAAO,CAAC,QAAmB,EAAE,EAAE;QAE3B,IAAI,OAAO,EAAE;YACT,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;SAC5B;QAED,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,UAA2B,GAAQ,EAAE,IAAiB;YAEnE,IAAI,QAAkB,CAAC;YACvB,IAAI,IAAI,GAAG,QAAQ,CAAC;YACpB,IAAI,KAAK,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../../packages/nodejs/behaviors/fetch.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pnp/nodejs",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.4.1",
|
|
4
4
|
"description": "pnp - provides functionality enabling the @pnp libraries within nodejs",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"typings": "./index",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@azure/msal-node": "1.
|
|
9
|
-
"@pnp/core": "3.
|
|
10
|
-
"@pnp/logging": "3.
|
|
11
|
-
"@pnp/queryable": "3.
|
|
12
|
-
"@pnp/sp": "3.
|
|
13
|
-
"@pnp/graph": "3.
|
|
14
|
-
"node-fetch": "3.2.
|
|
15
|
-
"tslib": "2.
|
|
8
|
+
"@azure/msal-node": "1.9.0",
|
|
9
|
+
"@pnp/core": "3.4.1",
|
|
10
|
+
"@pnp/logging": "3.4.1",
|
|
11
|
+
"@pnp/queryable": "3.4.1",
|
|
12
|
+
"@pnp/sp": "3.4.1",
|
|
13
|
+
"@pnp/graph": "3.4.1",
|
|
14
|
+
"node-fetch": "3.2.4",
|
|
15
|
+
"tslib": "2.4.0"
|
|
16
16
|
},
|
|
17
17
|
"funding": {
|
|
18
18
|
"type": "individual",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../../packages/nodejs/sp-extensions/stream.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAKrC,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../../packages/nodejs/sp-extensions/stream.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAKrC,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACvB;AAmGD,OAAO,QAAQ,qBAAqB,CAAC;IAEjC,UAAU,KAAK;QACX;;WAEG;QACH,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAE1C;;WAEG;QACH,uBAAuB,CACnB,MAAM,EAAE,UAAU,EAClB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,IAAI,GACnD,OAAO,CAAC,cAAc,CAAC,CAAC;KAC9B;IAED,UAAU,MAAM;QACZ;;WAEG;QACH,UAAU,CACN,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,IAAI,GAAG,UAAU,EAC1B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,IAAI,EAClD,eAAe,CAAC,EAAE,OAAO,EACzB,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,cAAc,CAAC,CAAC;KAC9B;CACJ"}
|
package/sp-extensions/stream.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { headers } from "@pnp/queryable";
|
|
1
|
+
import { asCancelableScope, CancelAction, headers } from "@pnp/queryable";
|
|
2
2
|
import { File, Files } from "@pnp/sp/files/index.js";
|
|
3
3
|
import { spPost, escapeQueryStrValue } from "@pnp/sp";
|
|
4
4
|
import { extendFactory, getGUID, isFunc } from "@pnp/core";
|
|
@@ -14,13 +14,16 @@ extendFactory(File, {
|
|
|
14
14
|
* @param stream The file to upload (as readable stream)
|
|
15
15
|
* @param progress A callback function which can be used to track the progress of the upload
|
|
16
16
|
*/
|
|
17
|
-
async
|
|
17
|
+
setStreamContentChunked: asCancelableScope(async function (stream, progress) {
|
|
18
18
|
if (!isFunc(progress)) {
|
|
19
19
|
progress = () => void (0);
|
|
20
20
|
}
|
|
21
21
|
const uploadId = getGUID();
|
|
22
22
|
let blockNumber = -1;
|
|
23
23
|
let promise = Promise.resolve(0);
|
|
24
|
+
const fileRef = File(this).using(CancelAction(async () => {
|
|
25
|
+
return File(this).cancelUpload(uploadId);
|
|
26
|
+
}));
|
|
24
27
|
return new Promise((resolve) => {
|
|
25
28
|
stream.on("data", (chunk) => {
|
|
26
29
|
blockNumber += 1;
|
|
@@ -28,24 +31,24 @@ extendFactory(File, {
|
|
|
28
31
|
promise = promise.then(() => {
|
|
29
32
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
30
33
|
progress({ uploadId, blockNumber, chunkSize: chunk.length, currentPointer: 0, fileSize: -1, stage: "starting", totalBlocks: -1 });
|
|
31
|
-
return
|
|
34
|
+
return fileRef.startUpload(uploadId, chunk);
|
|
32
35
|
});
|
|
33
36
|
}
|
|
34
37
|
else {
|
|
35
|
-
promise = promise.then((
|
|
38
|
+
promise = promise.then((pointer) => {
|
|
36
39
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
37
|
-
progress({ uploadId, blockNumber, chunkSize: chunk.length, currentPointer:
|
|
38
|
-
return
|
|
40
|
+
progress({ uploadId, blockNumber, chunkSize: chunk.length, currentPointer: pointer, fileSize: -1, stage: "continue", totalBlocks: -1 });
|
|
41
|
+
return fileRef.continueUpload(uploadId, pointer, chunk);
|
|
39
42
|
});
|
|
40
43
|
}
|
|
41
44
|
});
|
|
42
45
|
stream.on("end", async () => {
|
|
43
46
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
44
47
|
progress({ uploadId, blockNumber, chunkSize: -1, currentPointer: -1, fileSize: -1, stage: "finishing", totalBlocks: -1 });
|
|
45
|
-
promise.then((
|
|
48
|
+
promise.then((pointer) => resolve(fileRef.finishUpload(uploadId, pointer, Buffer.from([]))));
|
|
46
49
|
});
|
|
47
50
|
});
|
|
48
|
-
},
|
|
51
|
+
}),
|
|
49
52
|
});
|
|
50
53
|
extendFactory(Files, {
|
|
51
54
|
/**
|
|
@@ -58,13 +61,16 @@ extendFactory(Files, {
|
|
|
58
61
|
* @param chunkSize The size of each file slice, in bytes (default: 10485760)
|
|
59
62
|
* @returns The new File and the raw response.
|
|
60
63
|
*/
|
|
61
|
-
async
|
|
64
|
+
addChunked: asCancelableScope(async function (url, content, progress, shouldOverWrite = true, chunkSize = 10485760) {
|
|
62
65
|
const response = await spPost(Files(this, `add(overwrite=${shouldOverWrite},url='${escapeQueryStrValue(url)}')`));
|
|
63
66
|
const file = fileFromServerRelativePath(this, response.ServerRelativeUrl);
|
|
67
|
+
// file.using(CancelAction(async () => {
|
|
68
|
+
// return File(file).delete();
|
|
69
|
+
// }));
|
|
64
70
|
if ("function" === typeof content.read) {
|
|
65
71
|
return file.setStreamContentChunked(content, progress);
|
|
66
72
|
}
|
|
67
73
|
return file.setContentChunked(content, progress, chunkSize);
|
|
68
|
-
},
|
|
74
|
+
}),
|
|
69
75
|
});
|
|
70
76
|
//# sourceMappingURL=stream.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../../packages/nodejs/sp-extensions/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../../packages/nodejs/sp-extensions/stream.ts"],"names":[],"mappings":"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"}
|