@aws-sdk/client-s3 3.6.0 → 3.6.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.
@@ -0,0 +1,19 @@
1
+ import { XMLParser } from "fast-xml-parser";
2
+ var parser = new XMLParser({
3
+ attributeNamePrefix: "",
4
+ htmlEntities: true,
5
+ ignoreAttributes: false,
6
+ ignoreDeclaration: true,
7
+ parseTagValue: false,
8
+ trimValues: false,
9
+ tagValueProcessor: function (_, val) { return (val.trim() === "" && val.includes("\n") ? "" : undefined); },
10
+ });
11
+ parser.addEntity("#xD", "\r");
12
+ parser.addEntity("#10", "\n");
13
+ /**
14
+ * @internal
15
+ */
16
+ export var parse = (function (encoded, ignored) {
17
+ return parser.parse(encoded);
18
+ });
19
+ //# sourceMappingURL=xml-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-parser.js","sourceRoot":"","sources":["../../xml-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,IAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,mBAAmB,EAAE,EAAE;IACvB,YAAY,EAAE,IAAI;IAClB,gBAAgB,EAAE,KAAK;IACvB,iBAAiB,EAAE,IAAI;IACvB,aAAa,EAAE,KAAK;IACpB,UAAU,EAAE,KAAK;IACjB,iBAAiB,EAAE,UAAC,CAAC,EAAE,GAAG,IAAK,OAAA,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAA1D,CAA0D;CAC1F,CAAC,CAAC;AAEH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC9B,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAE9B;;GAEG;AACH,MAAM,CAAC,IAAM,KAAK,GAAG,CAAC,UAAC,OAAY,EAAE,OAAa;IAChD,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAQ,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-sdk/client-s3",
3
3
  "description": "AWS SDK for JavaScript S3 Client for Node.js, Browser and React Native",
4
- "version": "3.6.0",
4
+ "version": "3.6.2",
5
5
  "scripts": {
6
6
  "clean": "yarn remove-definitions && yarn remove-dist && yarn remove-documentation",
7
7
  "build-documentation": "yarn remove-documentation && typedoc ./",
@@ -31,53 +31,53 @@
31
31
  "dependencies": {
32
32
  "@aws-crypto/sha256-browser": "^1.0.0",
33
33
  "@aws-crypto/sha256-js": "^1.0.0",
34
- "@aws-sdk/config-resolver": "3.6.0",
35
- "@aws-sdk/credential-provider-node": "3.6.0",
36
- "@aws-sdk/eventstream-serde-browser": "3.4.1",
37
- "@aws-sdk/eventstream-serde-config-resolver": "3.4.1",
38
- "@aws-sdk/eventstream-serde-node": "3.4.1",
39
- "@aws-sdk/fetch-http-handler": "3.5.0",
40
- "@aws-sdk/hash-blob-browser": "3.4.1",
41
- "@aws-sdk/hash-node": "3.4.1",
42
- "@aws-sdk/hash-stream-node": "3.4.1",
43
- "@aws-sdk/invalid-dependency": "3.4.1",
44
- "@aws-sdk/md5-js": "3.4.1",
45
- "@aws-sdk/middleware-apply-body-checksum": "3.5.0",
46
- "@aws-sdk/middleware-bucket-endpoint": "3.6.0",
47
- "@aws-sdk/middleware-content-length": "3.5.0",
48
- "@aws-sdk/middleware-expect-continue": "3.5.0",
49
- "@aws-sdk/middleware-host-header": "3.5.0",
50
- "@aws-sdk/middleware-location-constraint": "3.4.1",
51
- "@aws-sdk/middleware-logger": "3.5.0",
52
- "@aws-sdk/middleware-retry": "3.6.0",
53
- "@aws-sdk/middleware-sdk-s3": "3.5.0",
54
- "@aws-sdk/middleware-serde": "3.4.1",
55
- "@aws-sdk/middleware-signing": "3.5.0",
56
- "@aws-sdk/middleware-ssec": "3.4.1",
57
- "@aws-sdk/middleware-stack": "3.4.1",
58
- "@aws-sdk/middleware-user-agent": "3.5.0",
59
- "@aws-sdk/node-config-provider": "3.6.0",
60
- "@aws-sdk/node-http-handler": "3.5.0",
61
- "@aws-sdk/protocol-http": "3.5.0",
62
- "@aws-sdk/smithy-client": "3.5.0",
63
- "@aws-sdk/types": "3.4.1",
64
- "@aws-sdk/url-parser": "3.4.1",
65
- "@aws-sdk/url-parser-native": "3.4.1",
66
- "@aws-sdk/util-base64-browser": "3.4.1",
67
- "@aws-sdk/util-base64-node": "3.4.1",
68
- "@aws-sdk/util-body-length-browser": "3.4.1",
69
- "@aws-sdk/util-body-length-node": "3.4.1",
70
- "@aws-sdk/util-user-agent-browser": "3.5.0",
71
- "@aws-sdk/util-user-agent-node": "3.6.0",
72
- "@aws-sdk/util-utf8-browser": "3.4.1",
73
- "@aws-sdk/util-utf8-node": "3.4.1",
74
- "@aws-sdk/util-waiter": "3.4.1",
75
- "@aws-sdk/xml-builder": "3.4.1",
76
- "fast-xml-parser": "^3.16.0",
34
+ "@aws-sdk/config-resolver": "3.6.1",
35
+ "@aws-sdk/credential-provider-node": "3.6.1",
36
+ "@aws-sdk/eventstream-serde-browser": "3.6.1",
37
+ "@aws-sdk/eventstream-serde-config-resolver": "3.6.1",
38
+ "@aws-sdk/eventstream-serde-node": "3.6.1",
39
+ "@aws-sdk/fetch-http-handler": "3.6.1",
40
+ "@aws-sdk/hash-blob-browser": "3.6.1",
41
+ "@aws-sdk/hash-node": "3.6.1",
42
+ "@aws-sdk/hash-stream-node": "3.6.1",
43
+ "@aws-sdk/invalid-dependency": "3.6.1",
44
+ "@aws-sdk/md5-js": "3.6.1",
45
+ "@aws-sdk/middleware-apply-body-checksum": "3.6.1",
46
+ "@aws-sdk/middleware-bucket-endpoint": "3.6.1",
47
+ "@aws-sdk/middleware-content-length": "3.6.1",
48
+ "@aws-sdk/middleware-expect-continue": "3.6.1",
49
+ "@aws-sdk/middleware-host-header": "3.6.1",
50
+ "@aws-sdk/middleware-location-constraint": "3.6.1",
51
+ "@aws-sdk/middleware-logger": "3.6.1",
52
+ "@aws-sdk/middleware-retry": "3.6.1",
53
+ "@aws-sdk/middleware-sdk-s3": "3.6.1",
54
+ "@aws-sdk/middleware-serde": "3.6.1",
55
+ "@aws-sdk/middleware-signing": "3.6.1",
56
+ "@aws-sdk/middleware-ssec": "3.6.1",
57
+ "@aws-sdk/middleware-stack": "3.6.1",
58
+ "@aws-sdk/middleware-user-agent": "3.6.1",
59
+ "@aws-sdk/node-config-provider": "3.6.1",
60
+ "@aws-sdk/node-http-handler": "3.6.1",
61
+ "@aws-sdk/protocol-http": "3.6.1",
62
+ "@aws-sdk/smithy-client": "3.6.1",
63
+ "@aws-sdk/types": "3.6.1",
64
+ "@aws-sdk/url-parser": "3.6.1",
65
+ "@aws-sdk/url-parser-native": "3.6.1",
66
+ "@aws-sdk/util-base64-browser": "3.6.1",
67
+ "@aws-sdk/util-base64-node": "3.6.1",
68
+ "@aws-sdk/util-body-length-browser": "3.6.1",
69
+ "@aws-sdk/util-body-length-node": "3.6.1",
70
+ "@aws-sdk/util-user-agent-browser": "3.6.1",
71
+ "@aws-sdk/util-user-agent-node": "3.6.1",
72
+ "@aws-sdk/util-utf8-browser": "3.6.1",
73
+ "@aws-sdk/util-utf8-node": "3.6.1",
74
+ "@aws-sdk/util-waiter": "3.6.1",
75
+ "@aws-sdk/xml-builder": "3.6.1",
76
+ "fast-xml-parser": "4.1.3",
77
77
  "tslib": "^2.0.0"
78
78
  },
79
79
  "devDependencies": {
80
- "@aws-sdk/client-documentation-generator": "3.4.1",
80
+ "@aws-sdk/client-documentation-generator": "3.6.1",
81
81
  "@types/chai": "^4.2.11",
82
82
  "@types/mocha": "^8.0.4",
83
83
  "@types/node": "^12.7.5",
@@ -102,10 +102,10 @@
102
102
  "url": "https://aws.amazon.com/javascript/"
103
103
  },
104
104
  "license": "Apache-2.0",
105
- "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/master/clients/client-s3",
105
+ "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-s3",
106
106
  "repository": {
107
107
  "type": "git",
108
108
  "url": "https://github.com/aws/aws-sdk-js-v3.git",
109
109
  "directory": "clients/client-s3"
110
110
  }
111
- }
111
+ }
@@ -394,7 +394,7 @@ import {
394
394
  SerdeContext as __SerdeContext,
395
395
  } from "@aws-sdk/types";
396
396
  import { XmlNode as __XmlNode, XmlText as __XmlText } from "@aws-sdk/xml-builder";
397
- import { parse as xmlParse } from "fast-xml-parser";
397
+ import { parse as xmlParse } from "../xml-parser";
398
398
 
399
399
  export const serializeAws_restXmlAbortMultipartUploadCommand = async (
400
400
  input: AbortMultipartUploadCommandInput,
@@ -14317,7 +14317,7 @@ const parseBody = (streamBody: any, context: __SerdeContext): any =>
14317
14317
  attributeNamePrefix: "",
14318
14318
  ignoreAttributes: false,
14319
14319
  parseNodeValue: false,
14320
- tagValueProcessor: (val, tagName) => decodeEscapedXML(val),
14320
+ tagValueProcessor: (val: any, tagName: any) => decodeEscapedXML(val),
14321
14321
  });
14322
14322
  const textNodeName = "#text";
14323
14323
  const key = Object.keys(parsedObj)[0];
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @internal
3
+ */
4
+ export declare const parse: any;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @internal
3
+ */
4
+ export declare const parse: any;
package/xml-parser.ts ADDED
@@ -0,0 +1,21 @@
1
+ import { XMLParser } from "fast-xml-parser";
2
+
3
+ const parser = new XMLParser({
4
+ attributeNamePrefix: "",
5
+ htmlEntities: true,
6
+ ignoreAttributes: false,
7
+ ignoreDeclaration: true,
8
+ parseTagValue: false,
9
+ trimValues: false,
10
+ tagValueProcessor: (_, val) => (val.trim() === "" && val.includes("\n") ? "" : undefined),
11
+ });
12
+
13
+ parser.addEntity("#xD", "\r");
14
+ parser.addEntity("#10", "\n");
15
+
16
+ /**
17
+ * @internal
18
+ */
19
+ export const parse = ((encoded: any, ignored?: any) => {
20
+ return parser.parse(encoded);
21
+ }) as any;
@@ -1,237 +0,0 @@
1
- "use strict";
2
- var _a, _b, _c, _d, _e;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const tslib_1 = require("tslib");
5
- /// <reference types="mocha" />
6
- /**
7
- * This is the integration test that make sure the client can make request cross-platform-ly
8
- * in NodeJS, Chromium and Firefox. This test is written in mocha.
9
- */
10
- const chai_1 = tslib_1.__importDefault(require("chai"));
11
- const chai_as_promised_1 = tslib_1.__importDefault(require("chai-as-promised"));
12
- const index_1 = require("../index");
13
- const helpers_1 = require("./helpers");
14
- chai_1.default.use(chai_as_promised_1.default);
15
- const { expect } = chai_1.default;
16
- // There will be default values of defaultRegion, credentials, and isBrowser variable in browser tests.
17
- // Define the values for Node.js tests
18
- const region = globalThis.defaultRegion || ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.AWS_SMOKE_TEST_REGION);
19
- const credentials = globalThis.credentials || undefined;
20
- const isBrowser = globalThis.isBrowser || false;
21
- const Bucket = ((_d = (_c = (_b = globalThis) === null || _b === void 0 ? void 0 : _b.window) === null || _c === void 0 ? void 0 : _c.__env__) === null || _d === void 0 ? void 0 : _d.AWS_SMOKE_TEST_BUCKET) || ((_e = process === null || process === void 0 ? void 0 : process.env) === null || _e === void 0 ? void 0 : _e.AWS_SMOKE_TEST_BUCKET);
22
- let Key = `${Date.now()}`;
23
- describe("@aws-sdk/client-s3", () => {
24
- const client = new index_1.S3({
25
- region: region,
26
- credentials,
27
- });
28
- describe("PutObject", () => {
29
- before(() => {
30
- Key = `${Date.now()}`;
31
- });
32
- after(async () => {
33
- await client.deleteObject({ Bucket, Key });
34
- });
35
- if (isBrowser) {
36
- const buf = helpers_1.createBuffer("1KB");
37
- it("should succeed with blob body", async () => {
38
- const result = await client.putObject({
39
- Bucket,
40
- Key,
41
- Body: new Blob([buf]),
42
- });
43
- expect(result.$metadata.httpStatusCode).to.equal(200);
44
- });
45
- it("should succeed with TypedArray body", async () => {
46
- const result = await client.putObject({
47
- Bucket,
48
- Key,
49
- Body: buf,
50
- });
51
- expect(result.$metadata.httpStatusCode).to.equal(200);
52
- });
53
- it("should succeed with ReadableStream body", async () => {
54
- const length = 10 * 1000; // 10KB
55
- const chunkSize = 10;
56
- const readableStream = new ReadableStream({
57
- start(controller) {
58
- let sizeLeft = length;
59
- while (sizeLeft > 0) {
60
- let chunk = "";
61
- for (let i = 0; i < Math.min(sizeLeft, chunkSize); i++) {
62
- chunk += "x";
63
- }
64
- controller.enqueue(chunk);
65
- sizeLeft -= chunk.length;
66
- }
67
- },
68
- });
69
- const result = await client.putObject({
70
- Bucket,
71
- Key,
72
- Body: readableStream,
73
- });
74
- expect(result.$metadata.httpStatusCode).to.equal(200);
75
- });
76
- }
77
- else {
78
- it("should succeed with Node.js readable stream body", async () => {
79
- const length = 10 * 1000; // 10KB
80
- const chunkSize = 10;
81
- const { Readable } = require("stream");
82
- let sizeLeft = length;
83
- const inputStream = new Readable({
84
- read() {
85
- if (sizeLeft <= 0) {
86
- this.push(null); //end stream;
87
- return;
88
- }
89
- let chunk = "";
90
- for (let i = 0; i < Math.min(sizeLeft, chunkSize); i++) {
91
- chunk += "x";
92
- }
93
- this.push(chunk);
94
- sizeLeft -= chunk.length;
95
- },
96
- });
97
- inputStream.size = length; // This is required
98
- const result = await client.putObject({
99
- Bucket,
100
- Key,
101
- Body: inputStream,
102
- });
103
- expect(result.$metadata.httpStatusCode).to.equal(200);
104
- });
105
- }
106
- });
107
- describe("GetObject", function () {
108
- this.timeout(10 * 1000);
109
- before(async () => {
110
- Key = `${Date.now()}`;
111
- });
112
- after(async () => {
113
- await client.deleteObject({ Bucket, Key });
114
- });
115
- it("should succeed with valid body payload", async () => {
116
- // prepare the object.
117
- const body = helpers_1.createBuffer("1MB");
118
- await client.putObject({ Bucket, Key, Body: body });
119
- const result = await client.getObject({ Bucket, Key });
120
- expect(result.$metadata.httpStatusCode).to.equal(200);
121
- if (isBrowser) {
122
- expect(result.Body).to.be.instanceOf(ReadableStream);
123
- }
124
- else {
125
- const { Readable } = require("stream");
126
- expect(result.Body).to.be.instanceOf(Readable);
127
- }
128
- });
129
- });
130
- describe("ListObjects", () => {
131
- before(async () => {
132
- Key = `${Date.now()}`;
133
- await client.putObject({ Bucket, Key, Body: "foo" });
134
- });
135
- after(async () => {
136
- await client.deleteObject({ Bucket, Key });
137
- });
138
- it("should succeed with valid bucket", async () => {
139
- const result = await client.listObjects({
140
- Bucket,
141
- });
142
- expect(result.$metadata.httpStatusCode).to.equal(200);
143
- expect(result.Contents).to.be.instanceOf(Array);
144
- });
145
- it("should throw with invalid bucket", () => expect(client.listObjects({ Bucket: "invalid-bucket" })).to.eventually.be.rejected.and.be.an.instanceOf(Error));
146
- });
147
- describe("MultipartUpload", () => {
148
- let UploadId;
149
- let Etag;
150
- const multipartObjectKey = `${Key}-multipart`;
151
- before(() => {
152
- Key = `${Date.now()}`;
153
- });
154
- afterEach(async () => {
155
- if (UploadId) {
156
- await client.abortMultipartUpload({
157
- Bucket,
158
- Key: multipartObjectKey,
159
- UploadId,
160
- });
161
- }
162
- await client.deleteObject({
163
- Bucket,
164
- Key: multipartObjectKey,
165
- });
166
- });
167
- it("should successfully create, upload list and complete", async () => {
168
- var _a, _b;
169
- //create multipart upload
170
- const createResult = await client.createMultipartUpload({
171
- Bucket,
172
- Key: multipartObjectKey,
173
- });
174
- expect(createResult.$metadata.httpStatusCode).to.equal(200);
175
- expect(typeof createResult.UploadId).to.equal("string");
176
- UploadId = createResult.UploadId;
177
- //upload part
178
- const uploadResult = await client.uploadPart({
179
- Bucket,
180
- Key: multipartObjectKey,
181
- UploadId,
182
- PartNumber: 1,
183
- Body: helpers_1.createBuffer("1KB"),
184
- });
185
- expect(uploadResult.$metadata.httpStatusCode).to.equal(200);
186
- expect(typeof uploadResult.ETag).to.equal("string");
187
- Etag = uploadResult.ETag;
188
- //list parts
189
- const listPartsResult = await client.listParts({
190
- Bucket,
191
- Key: multipartObjectKey,
192
- UploadId,
193
- });
194
- expect(listPartsResult.$metadata.httpStatusCode).to.equal(200);
195
- expect((_a = listPartsResult.Parts) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
196
- expect((_b = listPartsResult.Parts) === null || _b === void 0 ? void 0 : _b[0].ETag).to.equal(Etag);
197
- //complete multipart upload
198
- const completeResult = await client.completeMultipartUpload({
199
- Bucket,
200
- Key: multipartObjectKey,
201
- UploadId,
202
- MultipartUpload: { Parts: [{ ETag: Etag, PartNumber: 1 }] },
203
- });
204
- expect(completeResult.$metadata.httpStatusCode).to.equal(200);
205
- //validate the object is uploaded
206
- const headResult = await client.headObject({
207
- Bucket,
208
- Key: multipartObjectKey,
209
- });
210
- expect(headResult.$metadata.httpStatusCode).to.equal(200);
211
- });
212
- it("should successfully create, abort, and list upload", async () => {
213
- //create multipart upload
214
- const createResult = await client.createMultipartUpload({
215
- Bucket,
216
- Key: multipartObjectKey,
217
- });
218
- expect(createResult.$metadata.httpStatusCode).to.equal(200);
219
- const toAbort = createResult.UploadId;
220
- expect(typeof toAbort).to.equal("string");
221
- //abort multipart upload
222
- const abortResult = await client.abortMultipartUpload({
223
- Bucket,
224
- Key: multipartObjectKey,
225
- UploadId: toAbort,
226
- });
227
- expect(abortResult.$metadata.httpStatusCode).to.equal(204);
228
- //validate multipart upload is aborted
229
- const listUploadsResult = await client.listMultipartUploads({
230
- Bucket,
231
- });
232
- expect(listUploadsResult.$metadata.httpStatusCode).to.equal(200);
233
- expect((listUploadsResult.Uploads || []).map((upload) => upload.UploadId)).not.to.contain(toAbort);
234
- });
235
- });
236
- });
237
- //# sourceMappingURL=S3.ispec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"S3.ispec.js","sourceRoot":"","sources":["../../../e2e/S3.ispec.ts"],"names":[],"mappings":"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"}