happy-dom 17.1.6 → 17.1.7

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.
@@ -102,6 +102,8 @@ class MultipartFormDataParser {
102
102
  chunks.push(buffer_1.Buffer.from('\r\n'));
103
103
  }
104
104
  }
105
+ // add end boundary
106
+ chunks.push(buffer_1.Buffer.from(`--${boundary}--\r\n`));
105
107
  const buffer = buffer_1.Buffer.concat(chunks);
106
108
  return {
107
109
  contentType: `multipart/form-data; boundary=${boundary}`,
@@ -1 +1 @@
1
- {"version":3,"file":"MultipartFormDataParser.cjs","sourceRoot":"","sources":["../../../src/fetch/multipart/MultipartFormDataParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MultipartFormDataParser.cjs","sourceRoot":"","sources":["../../../src/fetch/multipart/MultipartFormDataParser.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MultipartFormDataParser.d.ts","sourceRoot":"","sources":["../../../src/fetch/multipart/MultipartFormDataParser.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAC3C;;;;;;;OAOG;WACiB,gBAAgB,CACnC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAuDlD;;;;;OAKG;WACW,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG;QACnD,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,cAAc,CAAC;KACvB;IA4CD;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;CAMzB"}
1
+ {"version":3,"file":"MultipartFormDataParser.d.ts","sourceRoot":"","sources":["../../../src/fetch/multipart/MultipartFormDataParser.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAC3C;;;;;;;OAOG;WACiB,gBAAgB,CACnC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAuDlD;;;;;OAKG;WACW,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG;QACnD,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,cAAc,CAAC;KACvB;IA+CD;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;CAMzB"}
@@ -3,15 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const DOMExceptionNameEnum_js_1 = __importDefault(require("../../exception/DOMExceptionNameEnum.cjs"));
7
6
  const File_js_1 = __importDefault(require("../../file/File.cjs"));
8
- var MultiparParserStateEnum;
9
- (function (MultiparParserStateEnum) {
10
- MultiparParserStateEnum[MultiparParserStateEnum["boundary"] = 0] = "boundary";
11
- MultiparParserStateEnum[MultiparParserStateEnum["headerStart"] = 2] = "headerStart";
12
- MultiparParserStateEnum[MultiparParserStateEnum["header"] = 3] = "header";
13
- MultiparParserStateEnum[MultiparParserStateEnum["data"] = 5] = "data";
14
- })(MultiparParserStateEnum || (MultiparParserStateEnum = {}));
7
+ var MultipartParserStateEnum;
8
+ (function (MultipartParserStateEnum) {
9
+ MultipartParserStateEnum[MultipartParserStateEnum["boundary"] = 0] = "boundary";
10
+ MultipartParserStateEnum[MultipartParserStateEnum["headerStart"] = 2] = "headerStart";
11
+ MultipartParserStateEnum[MultipartParserStateEnum["header"] = 3] = "header";
12
+ MultipartParserStateEnum[MultipartParserStateEnum["data"] = 5] = "data";
13
+ })(MultipartParserStateEnum || (MultipartParserStateEnum = {}));
15
14
  const CHARACTER_CODE = {
16
15
  lf: 10,
17
16
  cr: 13
@@ -26,14 +25,13 @@ class MultipartReader {
26
25
  formData;
27
26
  boundary;
28
27
  boundaryIndex = 0;
29
- state = MultiparParserStateEnum.boundary;
28
+ state = MultipartParserStateEnum.boundary;
30
29
  data = {
31
30
  contentDisposition: null,
32
31
  value: [],
33
32
  contentType: null,
34
33
  header: ''
35
34
  };
36
- window;
37
35
  /**
38
36
  * Constructor.
39
37
  *
@@ -43,7 +41,6 @@ class MultipartReader {
43
41
  */
44
42
  constructor(window, boundary) {
45
43
  const boundaryHeader = `--${boundary}`;
46
- this.window = window;
47
44
  this.boundary = new Uint8Array(boundaryHeader.length);
48
45
  this.formData = new window.FormData();
49
46
  for (let i = 0, max = boundaryHeader.length; i < max; i++) {
@@ -62,7 +59,7 @@ class MultipartReader {
62
59
  char = data[i];
63
60
  nextChar = data[i + 1];
64
61
  switch (this.state) {
65
- case MultiparParserStateEnum.boundary:
62
+ case MultipartParserStateEnum.boundary:
66
63
  if (char === this.boundary[this.boundaryIndex]) {
67
64
  this.boundaryIndex++;
68
65
  }
@@ -70,41 +67,43 @@ class MultipartReader {
70
67
  this.boundaryIndex = 0;
71
68
  }
72
69
  if (this.boundaryIndex === this.boundary.length) {
73
- this.state = MultiparParserStateEnum.headerStart;
70
+ this.state = MultipartParserStateEnum.headerStart;
74
71
  this.boundaryIndex = 0;
75
72
  }
76
73
  break;
77
- case MultiparParserStateEnum.headerStart:
74
+ case MultipartParserStateEnum.headerStart:
78
75
  if (nextChar !== CHARACTER_CODE.cr && nextChar !== CHARACTER_CODE.lf) {
79
76
  this.data.header = '';
80
77
  this.state =
81
78
  data[i - 2] === CHARACTER_CODE.lf
82
- ? MultiparParserStateEnum.data
83
- : MultiparParserStateEnum.header;
79
+ ? MultipartParserStateEnum.data
80
+ : MultipartParserStateEnum.header;
84
81
  }
85
82
  break;
86
- case MultiparParserStateEnum.header:
83
+ case MultipartParserStateEnum.header:
87
84
  if (char === CHARACTER_CODE.cr) {
88
85
  if (this.data.header) {
89
86
  const headerParts = this.data.header.split(':');
90
- const headerName = headerParts[0].toLowerCase();
91
- const headerValue = headerParts[1].trim();
92
- switch (headerName) {
93
- case 'content-disposition':
94
- this.data.contentDisposition = this.getContentDisposition(headerValue);
95
- break;
96
- case 'content-type':
97
- this.data.contentType = headerValue;
98
- break;
87
+ if (headerParts.length > 1) {
88
+ const headerName = headerParts[0].toLowerCase();
89
+ const headerValue = headerParts[1].trim();
90
+ switch (headerName) {
91
+ case 'content-disposition':
92
+ this.data.contentDisposition = this.getContentDisposition(headerValue);
93
+ break;
94
+ case 'content-type':
95
+ this.data.contentType = headerValue;
96
+ break;
97
+ }
99
98
  }
100
99
  }
101
- this.state = MultiparParserStateEnum.headerStart;
100
+ this.state = MultipartParserStateEnum.headerStart;
102
101
  }
103
102
  else {
104
103
  this.data.header += String.fromCharCode(char);
105
104
  }
106
105
  break;
107
- case MultiparParserStateEnum.data:
106
+ case MultipartParserStateEnum.data:
108
107
  if (char === this.boundary[this.boundaryIndex]) {
109
108
  this.boundaryIndex++;
110
109
  }
@@ -112,7 +111,7 @@ class MultipartReader {
112
111
  this.boundaryIndex = 0;
113
112
  }
114
113
  if (this.boundaryIndex === this.boundary.length) {
115
- this.state = MultiparParserStateEnum.headerStart;
114
+ this.state = MultipartParserStateEnum.headerStart;
116
115
  if (this.data.value.length) {
117
116
  this.appendFormData(this.data.contentDisposition.name, Buffer.from(this.data.value.slice(0, -(this.boundary.length + 1))), this.data.contentDisposition.filename, this.data.contentType);
118
117
  this.data.value = [];
@@ -134,10 +133,10 @@ class MultipartReader {
134
133
  * @returns Form data.
135
134
  */
136
135
  end() {
137
- if (this.state !== MultiparParserStateEnum.data) {
138
- throw new this.window.DOMException(`Unexpected end of multipart stream. Expected state to be "${MultiparParserStateEnum.data}" but got "${this.state}".`, DOMExceptionNameEnum_js_1.default.invalidStateError);
136
+ // If we are missing an end boundary, but we have data, we should append it.
137
+ if (this.data.contentDisposition && this.data.value.length) {
138
+ this.appendFormData(this.data.contentDisposition.name, Buffer.from(this.data.value.slice(0, -2)), this.data.contentDisposition.filename, this.data.contentType);
139
139
  }
140
- this.appendFormData(this.data.contentDisposition.name, Buffer.from(this.data.value.slice(0, -2)), this.data.contentDisposition.filename, this.data.contentType);
141
140
  return this.formData;
142
141
  }
143
142
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"MultipartReader.cjs","sourceRoot":"","sources":["../../../src/fetch/multipart/MultipartReader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MultipartReader.cjs","sourceRoot":"","sources":["../../../src/fetch/multipart/MultipartReader.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,6 @@ export default class MultipartReader {
12
12
  private boundaryIndex;
13
13
  private state;
14
14
  private data;
15
- private window;
16
15
  /**
17
16
  * Constructor.
18
17
  *
@@ -1 +1 @@
1
- {"version":3,"file":"MultipartReader.d.ts","sourceRoot":"","sources":["../../../src/fetch/multipart/MultipartReader.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AACnD,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAc1D;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,eAAe;IACnC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,IAAI,CAUV;IACF,OAAO,CAAC,MAAM,CAAgB;IAE9B;;;;;;OAMG;gBACS,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM;IAWnD;;;;OAIG;IACI,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IA2FpC;;;;OAIG;IACI,GAAG,IAAI,QAAQ;IAkBtB;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAiBtB;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;CAW7B"}
1
+ {"version":3,"file":"MultipartReader.d.ts","sourceRoot":"","sources":["../../../src/fetch/multipart/MultipartReader.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AACnD,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAc1D;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,eAAe;IACnC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,IAAI,CAUV;IAEF;;;;;;OAMG;gBACS,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM;IAUnD;;;;OAIG;IACI,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IA6FpC;;;;OAIG;IACI,GAAG,IAAI,QAAQ;IActB;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAiBtB;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;CAW7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"MultipartFormDataParser.d.ts","sourceRoot":"","sources":["../../../src/fetch/multipart/MultipartFormDataParser.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAC3C;;;;;;;OAOG;WACiB,gBAAgB,CACnC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAuDlD;;;;;OAKG;WACW,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG;QACnD,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,cAAc,CAAC;KACvB;IA4CD;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;CAMzB"}
1
+ {"version":3,"file":"MultipartFormDataParser.d.ts","sourceRoot":"","sources":["../../../src/fetch/multipart/MultipartFormDataParser.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAC3C;;;;;;;OAOG;WACiB,gBAAgB,CACnC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAuDlD;;;;;OAKG;WACW,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG;QACnD,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,cAAc,CAAC;KACvB;IA+CD;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;CAMzB"}
@@ -74,6 +74,8 @@ export default class MultipartFormDataParser {
74
74
  chunks.push(Buffer.from('\r\n'));
75
75
  }
76
76
  }
77
+ // add end boundary
78
+ chunks.push(Buffer.from(`--${boundary}--\r\n`));
77
79
  const buffer = Buffer.concat(chunks);
78
80
  return {
79
81
  contentType: `multipart/form-data; boundary=${boundary}`,
@@ -1 +1 @@
1
- {"version":3,"file":"MultipartFormDataParser.js","sourceRoot":"","sources":["../../../src/fetch/multipart/MultipartFormDataParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MultipartFormDataParser.js","sourceRoot":"","sources":["../../../src/fetch/multipart/MultipartFormDataParser.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,6 @@ export default class MultipartReader {
12
12
  private boundaryIndex;
13
13
  private state;
14
14
  private data;
15
- private window;
16
15
  /**
17
16
  * Constructor.
18
17
  *
@@ -1 +1 @@
1
- {"version":3,"file":"MultipartReader.d.ts","sourceRoot":"","sources":["../../../src/fetch/multipart/MultipartReader.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AACnD,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAc1D;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,eAAe;IACnC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,IAAI,CAUV;IACF,OAAO,CAAC,MAAM,CAAgB;IAE9B;;;;;;OAMG;gBACS,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM;IAWnD;;;;OAIG;IACI,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IA2FpC;;;;OAIG;IACI,GAAG,IAAI,QAAQ;IAkBtB;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAiBtB;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;CAW7B"}
1
+ {"version":3,"file":"MultipartReader.d.ts","sourceRoot":"","sources":["../../../src/fetch/multipart/MultipartReader.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AACnD,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAc1D;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,eAAe;IACnC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,IAAI,CAUV;IAEF;;;;;;OAMG;gBACS,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM;IAUnD;;;;OAIG;IACI,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IA6FpC;;;;OAIG;IACI,GAAG,IAAI,QAAQ;IActB;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAiBtB;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;CAW7B"}
@@ -1,12 +1,11 @@
1
- import DOMExceptionNameEnum from '../../exception/DOMExceptionNameEnum.js';
2
1
  import File from '../../file/File.js';
3
- var MultiparParserStateEnum;
4
- (function (MultiparParserStateEnum) {
5
- MultiparParserStateEnum[MultiparParserStateEnum["boundary"] = 0] = "boundary";
6
- MultiparParserStateEnum[MultiparParserStateEnum["headerStart"] = 2] = "headerStart";
7
- MultiparParserStateEnum[MultiparParserStateEnum["header"] = 3] = "header";
8
- MultiparParserStateEnum[MultiparParserStateEnum["data"] = 5] = "data";
9
- })(MultiparParserStateEnum || (MultiparParserStateEnum = {}));
2
+ var MultipartParserStateEnum;
3
+ (function (MultipartParserStateEnum) {
4
+ MultipartParserStateEnum[MultipartParserStateEnum["boundary"] = 0] = "boundary";
5
+ MultipartParserStateEnum[MultipartParserStateEnum["headerStart"] = 2] = "headerStart";
6
+ MultipartParserStateEnum[MultipartParserStateEnum["header"] = 3] = "header";
7
+ MultipartParserStateEnum[MultipartParserStateEnum["data"] = 5] = "data";
8
+ })(MultipartParserStateEnum || (MultipartParserStateEnum = {}));
10
9
  const CHARACTER_CODE = {
11
10
  lf: 10,
12
11
  cr: 13
@@ -21,14 +20,13 @@ export default class MultipartReader {
21
20
  formData;
22
21
  boundary;
23
22
  boundaryIndex = 0;
24
- state = MultiparParserStateEnum.boundary;
23
+ state = MultipartParserStateEnum.boundary;
25
24
  data = {
26
25
  contentDisposition: null,
27
26
  value: [],
28
27
  contentType: null,
29
28
  header: ''
30
29
  };
31
- window;
32
30
  /**
33
31
  * Constructor.
34
32
  *
@@ -38,7 +36,6 @@ export default class MultipartReader {
38
36
  */
39
37
  constructor(window, boundary) {
40
38
  const boundaryHeader = `--${boundary}`;
41
- this.window = window;
42
39
  this.boundary = new Uint8Array(boundaryHeader.length);
43
40
  this.formData = new window.FormData();
44
41
  for (let i = 0, max = boundaryHeader.length; i < max; i++) {
@@ -57,7 +54,7 @@ export default class MultipartReader {
57
54
  char = data[i];
58
55
  nextChar = data[i + 1];
59
56
  switch (this.state) {
60
- case MultiparParserStateEnum.boundary:
57
+ case MultipartParserStateEnum.boundary:
61
58
  if (char === this.boundary[this.boundaryIndex]) {
62
59
  this.boundaryIndex++;
63
60
  }
@@ -65,41 +62,43 @@ export default class MultipartReader {
65
62
  this.boundaryIndex = 0;
66
63
  }
67
64
  if (this.boundaryIndex === this.boundary.length) {
68
- this.state = MultiparParserStateEnum.headerStart;
65
+ this.state = MultipartParserStateEnum.headerStart;
69
66
  this.boundaryIndex = 0;
70
67
  }
71
68
  break;
72
- case MultiparParserStateEnum.headerStart:
69
+ case MultipartParserStateEnum.headerStart:
73
70
  if (nextChar !== CHARACTER_CODE.cr && nextChar !== CHARACTER_CODE.lf) {
74
71
  this.data.header = '';
75
72
  this.state =
76
73
  data[i - 2] === CHARACTER_CODE.lf
77
- ? MultiparParserStateEnum.data
78
- : MultiparParserStateEnum.header;
74
+ ? MultipartParserStateEnum.data
75
+ : MultipartParserStateEnum.header;
79
76
  }
80
77
  break;
81
- case MultiparParserStateEnum.header:
78
+ case MultipartParserStateEnum.header:
82
79
  if (char === CHARACTER_CODE.cr) {
83
80
  if (this.data.header) {
84
81
  const headerParts = this.data.header.split(':');
85
- const headerName = headerParts[0].toLowerCase();
86
- const headerValue = headerParts[1].trim();
87
- switch (headerName) {
88
- case 'content-disposition':
89
- this.data.contentDisposition = this.getContentDisposition(headerValue);
90
- break;
91
- case 'content-type':
92
- this.data.contentType = headerValue;
93
- break;
82
+ if (headerParts.length > 1) {
83
+ const headerName = headerParts[0].toLowerCase();
84
+ const headerValue = headerParts[1].trim();
85
+ switch (headerName) {
86
+ case 'content-disposition':
87
+ this.data.contentDisposition = this.getContentDisposition(headerValue);
88
+ break;
89
+ case 'content-type':
90
+ this.data.contentType = headerValue;
91
+ break;
92
+ }
94
93
  }
95
94
  }
96
- this.state = MultiparParserStateEnum.headerStart;
95
+ this.state = MultipartParserStateEnum.headerStart;
97
96
  }
98
97
  else {
99
98
  this.data.header += String.fromCharCode(char);
100
99
  }
101
100
  break;
102
- case MultiparParserStateEnum.data:
101
+ case MultipartParserStateEnum.data:
103
102
  if (char === this.boundary[this.boundaryIndex]) {
104
103
  this.boundaryIndex++;
105
104
  }
@@ -107,7 +106,7 @@ export default class MultipartReader {
107
106
  this.boundaryIndex = 0;
108
107
  }
109
108
  if (this.boundaryIndex === this.boundary.length) {
110
- this.state = MultiparParserStateEnum.headerStart;
109
+ this.state = MultipartParserStateEnum.headerStart;
111
110
  if (this.data.value.length) {
112
111
  this.appendFormData(this.data.contentDisposition.name, Buffer.from(this.data.value.slice(0, -(this.boundary.length + 1))), this.data.contentDisposition.filename, this.data.contentType);
113
112
  this.data.value = [];
@@ -129,10 +128,10 @@ export default class MultipartReader {
129
128
  * @returns Form data.
130
129
  */
131
130
  end() {
132
- if (this.state !== MultiparParserStateEnum.data) {
133
- throw new this.window.DOMException(`Unexpected end of multipart stream. Expected state to be "${MultiparParserStateEnum.data}" but got "${this.state}".`, DOMExceptionNameEnum.invalidStateError);
131
+ // If we are missing an end boundary, but we have data, we should append it.
132
+ if (this.data.contentDisposition && this.data.value.length) {
133
+ this.appendFormData(this.data.contentDisposition.name, Buffer.from(this.data.value.slice(0, -2)), this.data.contentDisposition.filename, this.data.contentType);
134
134
  }
135
- this.appendFormData(this.data.contentDisposition.name, Buffer.from(this.data.value.slice(0, -2)), this.data.contentDisposition.filename, this.data.contentType);
136
135
  return this.formData;
137
136
  }
138
137
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"MultipartReader.js","sourceRoot":"","sources":["../../../src/fetch/multipart/MultipartReader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MultipartReader.js","sourceRoot":"","sources":["../../../src/fetch/multipart/MultipartReader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "happy-dom",
3
- "version": "17.1.6",
3
+ "version": "17.1.7",
4
4
  "license": "MIT",
5
5
  "homepage": "https://github.com/capricorn86/happy-dom",
6
6
  "repository": "https://github.com/capricorn86/happy-dom",
@@ -120,6 +120,9 @@ export default class MultipartFormDataParser {
120
120
  }
121
121
  }
122
122
 
123
+ // add end boundary
124
+ chunks.push(Buffer.from(`--${boundary}--\r\n`));
125
+
123
126
  const buffer = Buffer.concat(chunks);
124
127
 
125
128
  return {
@@ -1,9 +1,8 @@
1
- import DOMExceptionNameEnum from '../../exception/DOMExceptionNameEnum.js';
2
1
  import File from '../../file/File.js';
3
2
  import FormData from '../../form-data/FormData.js';
4
3
  import BrowserWindow from '../../window/BrowserWindow.js';
5
4
 
6
- enum MultiparParserStateEnum {
5
+ enum MultipartParserStateEnum {
7
6
  boundary = 0,
8
7
  headerStart = 2,
9
8
  header = 3,
@@ -25,7 +24,7 @@ export default class MultipartReader {
25
24
  private formData: FormData;
26
25
  private boundary: Uint8Array;
27
26
  private boundaryIndex = 0;
28
- private state = MultiparParserStateEnum.boundary;
27
+ private state = MultipartParserStateEnum.boundary;
29
28
  private data: {
30
29
  contentDisposition: { [key: string]: string } | null;
31
30
  value: number[];
@@ -37,7 +36,6 @@ export default class MultipartReader {
37
36
  contentType: null,
38
37
  header: ''
39
38
  };
40
- private window: BrowserWindow;
41
39
 
42
40
  /**
43
41
  * Constructor.
@@ -48,7 +46,6 @@ export default class MultipartReader {
48
46
  */
49
47
  constructor(window: BrowserWindow, boundary: string) {
50
48
  const boundaryHeader = `--${boundary}`;
51
- this.window = window;
52
49
  this.boundary = new Uint8Array(boundaryHeader.length);
53
50
  this.formData = new window.FormData();
54
51
 
@@ -71,7 +68,7 @@ export default class MultipartReader {
71
68
  nextChar = data[i + 1];
72
69
 
73
70
  switch (this.state) {
74
- case MultiparParserStateEnum.boundary:
71
+ case MultipartParserStateEnum.boundary:
75
72
  if (char === this.boundary[this.boundaryIndex]) {
76
73
  this.boundaryIndex++;
77
74
  } else {
@@ -79,48 +76,50 @@ export default class MultipartReader {
79
76
  }
80
77
 
81
78
  if (this.boundaryIndex === this.boundary.length) {
82
- this.state = MultiparParserStateEnum.headerStart;
79
+ this.state = MultipartParserStateEnum.headerStart;
83
80
  this.boundaryIndex = 0;
84
81
  }
85
82
 
86
83
  break;
87
84
 
88
- case MultiparParserStateEnum.headerStart:
85
+ case MultipartParserStateEnum.headerStart:
89
86
  if (nextChar !== CHARACTER_CODE.cr && nextChar !== CHARACTER_CODE.lf) {
90
87
  this.data.header = '';
91
88
  this.state =
92
89
  data[i - 2] === CHARACTER_CODE.lf
93
- ? MultiparParserStateEnum.data
94
- : MultiparParserStateEnum.header;
90
+ ? MultipartParserStateEnum.data
91
+ : MultipartParserStateEnum.header;
95
92
  }
96
93
 
97
94
  break;
98
95
 
99
- case MultiparParserStateEnum.header:
96
+ case MultipartParserStateEnum.header:
100
97
  if (char === CHARACTER_CODE.cr) {
101
98
  if (this.data.header) {
102
99
  const headerParts = this.data.header.split(':');
103
- const headerName = headerParts[0].toLowerCase();
104
- const headerValue = headerParts[1].trim();
105
-
106
- switch (headerName) {
107
- case 'content-disposition':
108
- this.data.contentDisposition = this.getContentDisposition(headerValue);
109
- break;
110
- case 'content-type':
111
- this.data.contentType = headerValue;
112
- break;
100
+ if (headerParts.length > 1) {
101
+ const headerName = headerParts[0].toLowerCase();
102
+ const headerValue = headerParts[1].trim();
103
+
104
+ switch (headerName) {
105
+ case 'content-disposition':
106
+ this.data.contentDisposition = this.getContentDisposition(headerValue);
107
+ break;
108
+ case 'content-type':
109
+ this.data.contentType = headerValue;
110
+ break;
111
+ }
113
112
  }
114
113
  }
115
114
 
116
- this.state = MultiparParserStateEnum.headerStart;
115
+ this.state = MultipartParserStateEnum.headerStart;
117
116
  } else {
118
117
  this.data.header += String.fromCharCode(char);
119
118
  }
120
119
 
121
120
  break;
122
121
 
123
- case MultiparParserStateEnum.data:
122
+ case MultipartParserStateEnum.data:
124
123
  if (char === this.boundary[this.boundaryIndex]) {
125
124
  this.boundaryIndex++;
126
125
  } else {
@@ -128,7 +127,7 @@ export default class MultipartReader {
128
127
  }
129
128
 
130
129
  if (this.boundaryIndex === this.boundary.length) {
131
- this.state = MultiparParserStateEnum.headerStart;
130
+ this.state = MultipartParserStateEnum.headerStart;
132
131
 
133
132
  if (this.data.value.length) {
134
133
  this.appendFormData(
@@ -159,20 +158,16 @@ export default class MultipartReader {
159
158
  * @returns Form data.
160
159
  */
161
160
  public end(): FormData {
162
- if (this.state !== MultiparParserStateEnum.data) {
163
- throw new this.window.DOMException(
164
- `Unexpected end of multipart stream. Expected state to be "${MultiparParserStateEnum.data}" but got "${this.state}".`,
165
- DOMExceptionNameEnum.invalidStateError
161
+ // If we are missing an end boundary, but we have data, we should append it.
162
+ if (this.data.contentDisposition && this.data.value.length) {
163
+ this.appendFormData(
164
+ this.data.contentDisposition.name,
165
+ Buffer.from(this.data.value.slice(0, -2)),
166
+ this.data.contentDisposition.filename,
167
+ this.data.contentType
166
168
  );
167
169
  }
168
170
 
169
- this.appendFormData(
170
- this.data.contentDisposition.name,
171
- Buffer.from(this.data.value.slice(0, -2)),
172
- this.data.contentDisposition.filename,
173
- this.data.contentType
174
- );
175
-
176
171
  return this.formData;
177
172
  }
178
173