Querystring.cjs 893 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var node_stream = require('node:stream');
  4. /* eslint-disable no-underscore-dangle */
  5. // This is a buffering parser, have a look at StreamingQuerystring.js for a streaming parser
  6. class QuerystringParser extends node_stream.Transform {
  7. constructor(options = {}) {
  8. super({ readableObjectMode: true });
  9. this.globalOptions = { ...options };
  10. this.buffer = '';
  11. this.bufferLength = 0;
  12. }
  13. _transform(buffer, encoding, callback) {
  14. this.buffer += buffer.toString('ascii');
  15. this.bufferLength = this.buffer.length;
  16. callback();
  17. }
  18. _flush(callback) {
  19. const fields = new URLSearchParams(this.buffer);
  20. for (const [key, value] of fields) {
  21. this.push({
  22. key,
  23. value,
  24. });
  25. }
  26. this.buffer = '';
  27. callback();
  28. }
  29. }
  30. exports.default = QuerystringParser;