| 'use strict'; | 
| var defineBuiltIn = require('../internals/define-built-in'); | 
| var uncurryThis = require('../internals/function-uncurry-this'); | 
| var toString = require('../internals/to-string'); | 
| var validateArgumentsLength = require('../internals/validate-arguments-length'); | 
|   | 
| var $URLSearchParams = URLSearchParams; | 
| var URLSearchParamsPrototype = $URLSearchParams.prototype; | 
| var append = uncurryThis(URLSearchParamsPrototype.append); | 
| var $delete = uncurryThis(URLSearchParamsPrototype['delete']); | 
| var forEach = uncurryThis(URLSearchParamsPrototype.forEach); | 
| var push = uncurryThis([].push); | 
| var params = new $URLSearchParams('a=1&a=2&b=3'); | 
|   | 
| params['delete']('a', 1); | 
| // `undefined` case is a Chromium 117 bug | 
| // https://bugs.chromium.org/p/v8/issues/detail?id=14222 | 
| params['delete']('b', undefined); | 
|   | 
| if (params + '' !== 'a=2') { | 
|   defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) { | 
|     var length = arguments.length; | 
|     var $value = length < 2 ? undefined : arguments[1]; | 
|     if (length && $value === undefined) return $delete(this, name); | 
|     var entries = []; | 
|     forEach(this, function (v, k) { // also validates `this` | 
|       push(entries, { key: k, value: v }); | 
|     }); | 
|     validateArgumentsLength(length, 1); | 
|     var key = toString(name); | 
|     var value = toString($value); | 
|     var index = 0; | 
|     var dindex = 0; | 
|     var found = false; | 
|     var entriesLength = entries.length; | 
|     var entry; | 
|     while (index < entriesLength) { | 
|       entry = entries[index++]; | 
|       if (found || entry.key === key) { | 
|         found = true; | 
|         $delete(this, entry.key); | 
|       } else dindex++; | 
|     } | 
|     while (dindex < entriesLength) { | 
|       entry = entries[dindex++]; | 
|       if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value); | 
|     } | 
|   }, { enumerable: true, unsafe: true }); | 
| } |