From bbfb4d1731344967851eabbd4072b54aa33e6e6c Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 4 Sep 2024 09:44:44 -0700
Subject: [PATCH] chore(main): release 3.21.3 (#938)
---
CHANGELOG.md | 7 +
documentation/app/yarn.lock | 151 +-----------
.../fastly:backend/Backend/Backend.mdx | 233 ++++++++++++++++++
.../fastly:backend/Backend/exists.mdx | 20 ++
.../fastly:backend/Backend/fromName.mdx | 20 ++
.../fastly:backend/Backend/health.mdx | 25 ++
.../Backend/prototype/toName.mdx | 20 ++
.../Backend/prototype/toString.mdx | 87 +++++++
.../CacheOverride/CacheOverride.mdx | 132 ++++++++++
.../fastly:cache/CacheEntry/age.mdx | 23 ++
.../fastly:cache/CacheEntry/body.mdx | 29 +++
.../fastly:cache/CacheEntry/close.mdx | 23 ++
.../fastly:cache/CacheEntry/hits.mdx | 25 ++
.../fastly:cache/CacheEntry/length.mdx | 27 ++
.../fastly:cache/CacheEntry/maxAge.mdx | 23 ++
.../CacheEntry/staleWhileRevalidate.mdx | 23 ++
.../fastly:cache/CacheEntry/state.mdx | 23 ++
.../fastly:cache/CacheEntry/userMetadata.mdx | 23 ++
.../fastly:cache/CacheState/found.mdx | 25 ++
.../CacheState/mustInsertOrUpdate.mdx | 24 ++
.../fastly:cache/CacheState/stale.mdx | 25 ++
.../fastly:cache/CacheState/usable.mdx | 25 ++
.../fastly:cache/CoreCache/insert.mdx | 70 ++++++
.../fastly:cache/CoreCache/lookup.mdx | 48 ++++
.../CoreCache/transactionLookup.mdx | 52 ++++
.../fastly:cache/SimpleCache/SimpleCache.mdx | 47 ++++
.../fastly:cache/SimpleCache/get.mdx | 58 +++++
.../fastly:cache/SimpleCache/getOrSet.mdx | 81 ++++++
.../fastly:cache/SimpleCache/purge.mdx | 81 ++++++
.../SimpleCacheEntry/arrayBuffer.mdx | 25 ++
.../fastly:cache/SimpleCacheEntry/body.mdx | 14 ++
.../SimpleCacheEntry/bodyUsed.mdx | 13 +
.../fastly:cache/SimpleCacheEntry/json.mdx | 28 +++
.../fastly:cache/SimpleCacheEntry/text.mdx | 26 ++
.../TransactionCacheEntry/age.mdx | 23 ++
.../TransactionCacheEntry/body.mdx | 29 +++
.../TransactionCacheEntry/cancel.mdx | 24 ++
.../TransactionCacheEntry/close.mdx | 23 ++
.../TransactionCacheEntry/hits.mdx | 25 ++
.../TransactionCacheEntry/insert.mdx | 52 ++++
.../insertAndStreamBack.mdx | 53 ++++
.../TransactionCacheEntry/length.mdx | 27 ++
.../TransactionCacheEntry/maxAge.mdx | 23 ++
.../staleWhileRevalidate.mdx | 23 ++
.../TransactionCacheEntry/state.mdx | 23 ++
.../TransactionCacheEntry/update.mdx | 49 ++++
.../TransactionCacheEntry/userMetadata.mdx | 23 ++
.../ConfigStore/ConfigStore.mdx | 96 ++++++++
.../ConfigStore/prototype/get.mdx | 97 ++++++++
.../fastly:device/Device/lookup.mdx | 22 ++
.../fastly:device/Device/prototype/brand.mdx | 16 ++
.../Device/prototype/hardwareType.mdx | 18 ++
.../Device/prototype/isDesktop.mdx | 15 ++
.../Device/prototype/isGameConsole.mdx | 15 ++
.../Device/prototype/isMediaPlayer.mdx | 15 ++
.../Device/prototype/isMobile.mdx | 15 ++
.../Device/prototype/isSmartTV.mdx | 15 ++
.../Device/prototype/isTablet.mdx | 15 ++
.../Device/prototype/isTouchscreen.mdx | 15 ++
.../fastly:device/Device/prototype/model.mdx | 15 ++
.../fastly:device/Device/prototype/name.mdx | 15 ++
.../fastly:device/Device/prototype/toJSON.mdx | 24 ++
.../Dictionary/Dictionary.mdx | 102 ++++++++
.../Dictionary/prototype/get.mdx | 105 ++++++++
.../EdgeRateLimiter/EdgeRateLimiter.mdx | 38 +++
.../EdgeRateLimiter/prototype/checkRate.mdx | 46 ++++
.../PenaltyBox/PenaltyBox.mdx | 35 +++
.../PenaltyBox/prototype/add.mdx | 33 +++
.../PenaltyBox/prototype/has.mdx | 29 +++
.../RateCounter/RateCounter.mdx | 35 +++
.../RateCounter/prototype/increment.mdx | 32 +++
.../RateCounter/prototype/lookupCount.mdx | 32 +++
.../RateCounter/prototype/lookupRate.mdx | 32 +++
.../version-3.21.3/fastly:env/env.mdx | 93 +++++++
.../allowDynamicBackends.mdx | 104 ++++++++
.../fastly:experimental/includeBytes.mdx | 40 +++
.../fastly:experimental/sdkVersion.mdx | 14 ++
.../fastly:fanout/createFanoutHandoff.mdx | 53 ++++
.../getGeolocationForIpAddress.mdx | 178 +++++++++++++
.../fastly:kv-store/KVStore/KVStore.mdx | 62 +++++
.../KVStore/prototype/delete.mdx | 62 +++++
.../fastly:kv-store/KVStore/prototype/get.mdx | 68 +++++
.../fastly:kv-store/KVStore/prototype/put.mdx | 68 +++++
.../KVStoreEntry/prototype/arrayBuffer.mdx | 23 ++
.../KVStoreEntry/prototype/body.mdx | 14 ++
.../KVStoreEntry/prototype/bodyUsed.mdx | 14 ++
.../KVStoreEntry/prototype/json.mdx | 26 ++
.../KVStoreEntry/prototype/text.mdx | 24 ++
.../fastly:logger/Logger/Logger.mdx | 87 +++++++
.../fastly:logger/Logger/prototype/log.mdx | 91 +++++++
.../SecretStore/SecretStore.mdx | 63 +++++
.../SecretStore/fromBytes.mdx | 25 ++
.../SecretStore/prototype/get.mdx | 69 ++++++
.../SecretStoreEntry/prototype/plaintext.mdx | 55 +++++
.../SecretStoreEntry/prototype/rawBytes.mdx | 30 +++
.../AggregrateError/AggregrateError.mdx | 35 +++
.../globals/Array/@@species.mdx | 57 +++++
.../version-3.21.3/globals/Array/Array.mdx | 41 +++
.../version-3.21.3/globals/Array/from.mdx | 62 +++++
.../version-3.21.3/globals/Array/isArray.mdx | 32 +++
.../version-3.21.3/globals/Array/of.mdx | 41 +++
.../globals/Array/prototype/@@iterator.mdx | 21 ++
.../globals/Array/prototype/@@unscopables.mdx | 33 +++
.../globals/Array/prototype/at.mdx | 32 +++
.../globals/Array/prototype/concat.mdx | 41 +++
.../globals/Array/prototype/copyWithin.mdx | 54 ++++
.../globals/Array/prototype/entries.mdx | 27 ++
.../globals/Array/prototype/every.mdx | 70 ++++++
.../globals/Array/prototype/fill.mdx | 46 ++++
.../globals/Array/prototype/filter.mdx | 64 +++++
.../globals/Array/prototype/find.mdx | 73 ++++++
.../globals/Array/prototype/findIndex.mdx | 67 +++++
.../globals/Array/prototype/flat.mdx | 35 +++
.../globals/Array/prototype/flatMap.mdx | 57 +++++
.../globals/Array/prototype/forEach.mdx | 70 ++++++
.../globals/Array/prototype/includes.mdx | 40 +++
.../globals/Array/prototype/indexOf.mdx | 39 +++
.../globals/Array/prototype/join.mdx | 43 ++++
.../globals/Array/prototype/keys.mdx | 26 ++
.../globals/Array/prototype/lastIndexOf.mdx | 40 +++
.../globals/Array/prototype/length.mdx | 40 +++
.../globals/Array/prototype/map.mdx | 72 ++++++
.../globals/Array/prototype/pop.mdx | 31 +++
.../globals/Array/prototype/push.mdx | 37 +++
.../globals/Array/prototype/reduce.mdx | 125 ++++++++++
.../globals/Array/prototype/reduceRight.mdx | 79 ++++++
.../globals/Array/prototype/reverse.mdx | 28 +++
.../globals/Array/prototype/shift.mdx | 33 +++
.../globals/Array/prototype/slice.mdx | 46 ++++
.../globals/Array/prototype/some.mdx | 68 +++++
.../globals/Array/prototype/sort.mdx | 110 +++++++++
.../globals/Array/prototype/splice.mdx | 59 +++++
.../Array/prototype/toLocaleString.mdx | 42 ++++
.../globals/Array/prototype/toString.mdx | 35 +++
.../globals/Array/prototype/unshift.mdx | 62 +++++
.../globals/Array/prototype/values.mdx | 31 +++
.../globals/ArrayBuffer/@@species.mdx | 43 ++++
.../globals/ArrayBuffer/ArrayBuffer.mdx | 32 +++
.../globals/ArrayBuffer/isView.mdx | 28 +++
.../ArrayBuffer/prototype/byteLength.mdx | 13 +
.../globals/ArrayBuffer/prototype/slice.mdx | 43 ++++
.../version-3.21.3/globals/BigInt/BigInt.mdx | 37 +++
.../version-3.21.3/globals/BigInt/asIntN.mdx | 53 ++++
.../version-3.21.3/globals/BigInt/asUintN.mdx | 45 ++++
.../BigInt/prototype/toLocaleString.mdx | 49 ++++
.../globals/BigInt/prototype/toString.mdx | 49 ++++
.../globals/BigInt/prototype/valueOf.mdx | 20 ++
.../globals/BigInt64Array/BigInt64Array.mdx | 37 +++
.../globals/BigUint64Array/BigUint64Array.mdx | 37 +++
.../globals/Boolean/Boolean.mdx | 37 +++
.../globals/Boolean/prototype/toString.mdx | 34 +++
.../globals/Boolean/prototype/valueOf.mdx | 27 ++
.../ByteLengthQueuingStrategy.mdx | 31 +++
.../prototype/size.mdx | 26 ++
.../CompressionStream/CompressionStream.mdx | 30 +++
.../CompressionStream/prototype/readable.mdx | 13 +
.../CompressionStream/prototype/writable.mdx | 13 +
.../globals/CryptoKey/CryptoKey.mdx | 23 ++
.../globals/CryptoKey/prototype/algorithm.mdx | 18 ++
.../CryptoKey/prototype/extractable.mdx | 16 ++
.../globals/CryptoKey/prototype/type.mdx | 18 ++
.../globals/CryptoKey/prototype/usages.mdx | 23 ++
.../globals/DOMException/DOMException.mdx | 107 ++++++++
.../globals/DOMException/code.mdx | 16 ++
.../globals/DOMException/message.mdx | 14 ++
.../globals/DOMException/name.mdx | 14 ++
.../globals/DataView/DataView.mdx | 46 ++++
.../globals/DataView/prototype/buffer.mdx | 13 +
.../globals/DataView/prototype/byteLength.mdx | 13 +
.../globals/DataView/prototype/byteOffset.mdx | 13 +
.../DataView/prototype/getBigInt64.mdx | 39 +++
.../DataView/prototype/getBigUint64.mdx | 40 +++
.../globals/DataView/prototype/getFloat32.mdx | 40 +++
.../globals/DataView/prototype/getFloat64.mdx | 40 +++
.../globals/DataView/prototype/getInt16.mdx | 40 +++
.../globals/DataView/prototype/getInt32.mdx | 40 +++
.../globals/DataView/prototype/getInt8.mdx | 35 +++
.../globals/DataView/prototype/getUint16.mdx | 43 ++++
.../globals/DataView/prototype/getUint32.mdx | 43 ++++
.../globals/DataView/prototype/getUint8.mdx | 36 +++
.../DataView/prototype/setBigInt64.mdx | 41 +++
.../DataView/prototype/setBigUint64.mdx | 42 ++++
.../globals/DataView/prototype/setFloat32.mdx | 38 +++
.../globals/DataView/prototype/setFloat64.mdx | 39 +++
.../globals/DataView/prototype/setInt16.mdx | 38 +++
.../globals/DataView/prototype/setInt32.mdx | 38 +++
.../globals/DataView/prototype/setInt8.mdx | 33 +++
.../globals/DataView/prototype/setUint16.mdx | 39 +++
.../globals/DataView/prototype/setUint32.mdx | 39 +++
.../globals/DataView/prototype/setUint8.mdx | 33 +++
.../version-3.21.3/globals/Date/Date.mdx | 88 +++++++
.../version-3.21.3/globals/Date/UTC.mdx | 84 +++++++
.../version-3.21.3/globals/Date/now.mdx | 19 ++
.../version-3.21.3/globals/Date/parse.mdx | 123 +++++++++
.../globals/Date/prototype/@@toPrimitive.mdx | 40 +++
.../globals/Date/prototype/getDate.mdx | 21 ++
.../globals/Date/prototype/getDay.mdx | 22 ++
.../globals/Date/prototype/getFullYear.mdx | 29 +++
.../globals/Date/prototype/getHours.mdx | 21 ++
.../Date/prototype/getMilliseconds.mdx | 21 ++
.../globals/Date/prototype/getMinutes.mdx | 21 ++
.../globals/Date/prototype/getMonth.mdx | 22 ++
.../globals/Date/prototype/getSeconds.mdx | 21 ++
.../globals/Date/prototype/getTime.mdx | 44 ++++
.../Date/prototype/getTimezoneOffset.mdx | 41 +++
.../globals/Date/prototype/getUTCDate.mdx | 24 ++
.../globals/Date/prototype/getUTCDay.mdx | 25 ++
.../globals/Date/prototype/getUTCFullYear.mdx | 29 +++
.../globals/Date/prototype/getUTCHours.mdx | 24 ++
.../Date/prototype/getUTCMilliseconds.mdx | 27 ++
.../globals/Date/prototype/getUTCMinutes.mdx | 24 ++
.../globals/Date/prototype/getUTCMonth.mdx | 24 ++
.../globals/Date/prototype/getUTCSeconds.mdx | 24 ++
.../globals/Date/prototype/getYear.mdx | 36 +++
.../globals/Date/prototype/setDate.mdx | 35 +++
.../globals/Date/prototype/setFullYear.mdx | 47 ++++
.../globals/Date/prototype/setHours.mdx | 57 +++++
.../Date/prototype/setMilliseconds.mdx | 31 +++
.../globals/Date/prototype/setMinutes.mdx | 48 ++++
.../globals/Date/prototype/setMonth.mdx | 45 ++++
.../globals/Date/prototype/setSeconds.mdx | 40 +++
.../globals/Date/prototype/setTime.mdx | 32 +++
.../globals/Date/prototype/setUTCDate.mdx | 34 +++
.../globals/Date/prototype/setUTCFullYear.mdx | 47 ++++
.../globals/Date/prototype/setUTCHours.mdx | 53 ++++
.../Date/prototype/setUTCMilliseconds.mdx | 33 +++
.../globals/Date/prototype/setUTCMinutes.mdx | 49 ++++
.../globals/Date/prototype/setUTCMonth.mdx | 38 +++
.../globals/Date/prototype/setUTCSeconds.mdx | 40 +++
.../globals/Date/prototype/setYear.mdx | 38 +++
.../globals/Date/prototype/toDateString.mdx | 35 +++
.../globals/Date/prototype/toISOString.mdx | 19 ++
.../globals/Date/prototype/toJSON.mdx | 28 +++
.../Date/prototype/toLocaleDateString.mdx | 47 ++++
.../globals/Date/prototype/toLocaleString.mdx | 43 ++++
.../Date/prototype/toLocaleTimeString.mdx | 47 ++++
.../globals/Date/prototype/toString.mdx | 34 +++
.../globals/Date/prototype/toTimeString.mdx | 38 +++
.../globals/Date/prototype/toUTCString.mdx | 43 ++++
.../globals/Date/prototype/valueOf.mdx | 33 +++
.../DecompressionStream.mdx | 30 +++
.../prototype/readable.mdx | 13 +
.../prototype/writable.mdx | 13 +
.../EcKeyImportParams/EcKeyImportParams.mdx | 21 ++
.../globals/EcdsaParams/EcdsaParams.mdx | 24 ++
.../version-3.21.3/globals/Error/Error.mdx | 36 +++
.../globals/Error/prototype/cause.mdx | 19 ++
.../globals/Error/prototype/message.mdx | 19 ++
.../globals/Error/prototype/name.mdx | 17 ++
.../globals/Error/prototype/toString.mdx | 25 ++
.../globals/EvalError/EvalError.mdx | 37 +++
.../globals/FetchEvent/FetchEvent.mdx | 42 ++++
.../FetchEvent/prototype/respondWith.mdx | 25 ++
.../FetchEvent/prototype/waitUntil.mdx | 29 +++
.../FinalizationRegistry.mdx | 29 +++
.../prototype/register.mdx | 47 ++++
.../prototype/unregister.mdx | 37 +++
.../globals/Float32Array/Float32Array.mdx | 38 +++
.../globals/Float64Array/Float64Array.mdx | 38 +++
.../globals/Function/Function.mdx | 75 ++++++
.../globals/Function/prototype/apply.mdx | 37 +++
.../globals/Function/prototype/bind.mdx | 87 +++++++
.../globals/Function/prototype/call.mdx | 36 +++
.../globals/Function/prototype/index.mdx | 71 ++++++
.../globals/Function/prototype/length.mdx | 21 ++
.../globals/Function/prototype/name.mdx | 214 ++++++++++++++++
.../globals/Function/prototype/toString.mdx | 60 +++++
.../globals/Headers/Headers.mdx | 24 ++
.../globals/Headers/prototype/append.mdx | 33 +++
.../globals/Headers/prototype/delete.mdx | 29 +++
.../globals/Headers/prototype/entries.mdx | 24 ++
.../globals/Headers/prototype/forEach.mdx | 43 ++++
.../globals/Headers/prototype/get.mdx | 30 +++
.../Headers/prototype/getSetCookie.mdx | 21 ++
.../globals/Headers/prototype/has.mdx | 27 ++
.../globals/Headers/prototype/keys.mdx | 24 ++
.../globals/Headers/prototype/set.mdx | 34 +++
.../globals/Headers/prototype/values.mdx | 24 ++
.../HmacImportParams/HmacImportParams.mdx | 21 ++
.../version-3.21.3/globals/Infinity.mdx | 21 ++
.../globals/Int16Array/Int16Array.mdx | 37 +++
.../globals/Int32Array/Int32Array.mdx | 37 +++
.../globals/Int8Array/Int8Array.mdx | 35 +++
.../version-3.21.3/globals/JSON/parse.mdx | 50 ++++
.../version-3.21.3/globals/JSON/stringify.mdx | 96 ++++++++
.../version-3.21.3/globals/Map/@@species.mdx | 25 ++
.../version-3.21.3/globals/Map/Map.mdx | 27 ++
.../globals/Map/prototype/@@iterator.mdx | 21 ++
.../globals/Map/prototype/clear.mdx | 19 ++
.../globals/Map/prototype/delete.mdx | 26 ++
.../globals/Map/prototype/entries.mdx | 24 ++
.../globals/Map/prototype/forEach.mdx | 73 ++++++
.../globals/Map/prototype/get.mdx | 28 +++
.../globals/Map/prototype/has.mdx | 26 ++
.../globals/Map/prototype/keys.mdx | 21 ++
.../globals/Map/prototype/set.mdx | 26 ++
.../globals/Map/prototype/size.mdx | 16 ++
.../globals/Map/prototype/values.mdx | 22 ++
.../version-3.21.3/globals/Math/E.mdx | 17 ++
.../version-3.21.3/globals/Math/LN10.mdx | 17 ++
.../version-3.21.3/globals/Math/LN2.mdx | 17 ++
.../version-3.21.3/globals/Math/LOG10e.mdx | 17 ++
.../version-3.21.3/globals/Math/LOG2e.mdx | 17 ++
.../version-3.21.3/globals/Math/PI.mdx | 17 ++
.../version-3.21.3/globals/Math/SQRT1_2.mdx | 19 ++
.../version-3.21.3/globals/Math/SQRT2.mdx | 19 ++
.../version-3.21.3/globals/Math/abs.mdx | 29 +++
.../version-3.21.3/globals/Math/acos.mdx | 28 +++
.../version-3.21.3/globals/Math/acosh.mdx | 28 +++
.../version-3.21.3/globals/Math/asin.mdx | 28 +++
.../version-3.21.3/globals/Math/asinh.mdx | 28 +++
.../version-3.21.3/globals/Math/atan.mdx | 28 +++
.../version-3.21.3/globals/Math/atan2.mdx | 51 ++++
.../version-3.21.3/globals/Math/atanh.mdx | 29 +++
.../version-3.21.3/globals/Math/cbrt.mdx | 28 +++
.../version-3.21.3/globals/Math/ceil.mdx | 28 +++
.../version-3.21.3/globals/Math/clz32.mdx | 34 +++
.../version-3.21.3/globals/Math/cos.mdx | 28 +++
.../version-3.21.3/globals/Math/cosh.mdx | 28 +++
.../version-3.21.3/globals/Math/exp.mdx | 30 +++
.../version-3.21.3/globals/Math/expm1.mdx | 32 +++
.../version-3.21.3/globals/Math/floor.mdx | 28 +++
.../version-3.21.3/globals/Math/fround.mdx | 32 +++
.../version-3.21.3/globals/Math/hypot.mdx | 39 +++
.../version-3.21.3/globals/Math/imul.mdx | 35 +++
.../version-3.21.3/globals/Math/log.mdx | 32 +++
.../version-3.21.3/globals/Math/log10.mdx | 30 +++
.../version-3.21.3/globals/Math/log1p.mdx | 34 +++
.../version-3.21.3/globals/Math/log2.mdx | 30 +++
.../version-3.21.3/globals/Math/max.mdx | 33 +++
.../version-3.21.3/globals/Math/min.mdx | 33 +++
.../version-3.21.3/globals/Math/pow.mdx | 39 +++
.../version-3.21.3/globals/Math/random.mdx | 21 ++
.../version-3.21.3/globals/Math/round.mdx | 34 +++
.../version-3.21.3/globals/Math/sign.mdx | 34 +++
.../version-3.21.3/globals/Math/sin.mdx | 28 +++
.../version-3.21.3/globals/Math/sinh.mdx | 29 +++
.../version-3.21.3/globals/Math/sqrt.mdx | 29 +++
.../version-3.21.3/globals/Math/tan.mdx | 31 +++
.../version-3.21.3/globals/Math/tanh.mdx | 28 +++
.../version-3.21.3/globals/Math/trunc.mdx | 30 +++
.../version-3.21.3/globals/NaN.mdx | 35 +++
.../globals/Number/MAX_SAFE_INTEGER.mdx | 21 ++
.../globals/Number/MAX_VALUE.mdx | 19 ++
.../globals/Number/MIN_SAFE_INTEGER.mdx | 21 ++
.../globals/Number/MIN_VALUE.mdx | 21 ++
.../globals/Number/NEGATIVE_INFINITY.mdx | 32 +++
.../version-3.21.3/globals/Number/NaN.mdx | 17 ++
.../version-3.21.3/globals/Number/Number.mdx | 31 +++
.../globals/Number/POSITIVE_INFINITY.mdx | 32 +++
.../version-3.21.3/globals/Number/epsilon.mdx | 21 ++
.../globals/Number/isFinite.mdx | 24 ++
.../globals/Number/isInteger.mdx | 32 +++
.../version-3.21.3/globals/Number/isNaN.mdx | 32 +++
.../globals/Number/isSafeInteger.mdx | 37 +++
.../globals/Number/parseFloat.mdx | 26 ++
.../globals/Number/parseInt.mdx | 37 +++
.../Number/prototype/toExponential.mdx | 54 ++++
.../globals/Number/prototype/toFixed.mdx | 51 ++++
.../Number/prototype/toLocaleString.mdx | 49 ++++
.../globals/Number/prototype/toPrecision.mdx | 41 +++
.../globals/Number/prototype/toString.mdx | 58 +++++
.../globals/Number/prototype/valueOf.mdx | 24 ++
.../version-3.21.3/globals/Object/Object.mdx | 27 ++
.../version-3.21.3/globals/Object/assign.mdx | 57 +++++
.../version-3.21.3/globals/Object/create.mdx | 32 +++
.../globals/Object/defineProperties.mdx | 71 ++++++
.../globals/Object/defineProperty.mdx | 149 +++++++++++
.../version-3.21.3/globals/Object/entries.mdx | 30 +++
.../version-3.21.3/globals/Object/freeze.mdx | 66 +++++
.../globals/Object/fromEntries.mdx | 40 +++
.../Object/getOwnPropertyDescriptor.mdx | 60 +++++
.../Object/getOwnPropertyDescriptors.mdx | 54 ++++
.../globals/Object/getOwnPropertyNames.mdx | 28 +++
.../globals/Object/getOwnPropertySymbols.mdx | 30 +++
.../globals/Object/getPrototypeOf.mdx | 26 ++
.../version-3.21.3/globals/Object/hasOwn.mdx | 46 ++++
.../version-3.21.3/globals/Object/is.mdx | 48 ++++
.../globals/Object/isExtensible.mdx | 29 +++
.../globals/Object/isFrozen.mdx | 31 +++
.../globals/Object/isSealed.mdx | 32 +++
.../version-3.21.3/globals/Object/keys.mdx | 30 +++
.../globals/Object/preventExtensions.mdx | 43 ++++
.../globals/Object/prototype/constructor.mdx | 48 ++++
.../Object/prototype/hasOwnProperty.mdx | 54 ++++
.../Object/prototype/isPrototypeOf.mdx | 35 +++
.../Object/prototype/propertyIsEnumerable.mdx | 30 +++
.../Object/prototype/toLocaleString.mdx | 34 +++
.../globals/Object/prototype/toString.mdx | 55 +++++
.../globals/Object/prototype/valueOf.mdx | 35 +++
.../version-3.21.3/globals/Object/seal.mdx | 38 +++
.../globals/Object/setPrototypeOf.mdx | 50 ++++
.../version-3.21.3/globals/Object/values.mdx | 30 +++
.../globals/Promise/@@species.mdx | 43 ++++
.../globals/Promise/Promise.mdx | 140 +++++++++++
.../version-3.21.3/globals/Promise/all.mdx | 34 +++
.../globals/Promise/allSettled.mdx | 42 ++++
.../version-3.21.3/globals/Promise/any.mdx | 36 +++
.../globals/Promise/prototype/catch.mdx | 66 +++++
.../globals/Promise/prototype/finally.mdx | 60 +++++
.../globals/Promise/prototype/then.mdx | 53 ++++
.../version-3.21.3/globals/Promise/race.mdx | 30 +++
.../version-3.21.3/globals/Promise/reject.mdx | 32 +++
.../globals/Promise/resolve.mdx | 39 +++
.../version-3.21.3/globals/Proxy/Proxy.mdx | 74 ++++++
.../globals/Proxy/proxy/apply.mdx | 53 ++++
.../globals/Proxy/proxy/construct.mdx | 52 ++++
.../globals/Proxy/proxy/defineProperty.mdx | 66 +++++
.../globals/Proxy/proxy/deleteProperty.mdx | 54 ++++
.../globals/Proxy/proxy/get.mdx | 60 +++++
.../Proxy/proxy/getOwnPropertyDescriptor.mdx | 57 +++++
.../globals/Proxy/proxy/getPrototypeOf.mdx | 54 ++++
.../globals/Proxy/proxy/has.mdx | 55 +++++
.../globals/Proxy/proxy/isExtensible.mdx | 52 ++++
.../globals/Proxy/proxy/ownKeys.mdx | 58 +++++
.../globals/Proxy/proxy/preventExtensions.mdx | 50 ++++
.../globals/Proxy/proxy/set.mdx | 77 ++++++
.../globals/Proxy/proxy/setPrototypeOf.mdx | 56 +++++
.../globals/Proxy/revocable.mdx | 41 +++
.../globals/RangeError/RangeError.mdx | 38 +++
.../prototype/byobRequest.mdx | 17 ++
.../prototype/close.mdx | 34 +++
.../prototype/desiredSize.mdx | 21 ++
.../prototype/enqueue.mdx | 33 +++
.../prototype/error.mdx | 34 +++
.../globals/ReadableStream/ReadableStream.mdx | 93 +++++++
.../ReadableStream/prototype/cancel.mdx | 38 +++
.../ReadableStream/prototype/getReader.mdx | 42 ++++
.../ReadableStream/prototype/locked.mdx | 16 ++
.../ReadableStream/prototype/pipeThrough.mdx | 61 +++++
.../ReadableStream/prototype/pipeTo.mdx | 50 ++++
.../globals/ReadableStream/prototype/tee.mdx | 57 +++++
.../ReadableStreamBYOBReader.mdx | 33 +++
.../prototype/cancel.mdx | 34 +++
.../prototype/closed.mdx | 16 ++
.../prototype/read.mdx | 73 ++++++
.../prototype/releaseLock.mdx | 35 +++
.../prototype/respond.mdx | 32 +++
.../prototype/respondWithNewView.mdx | 46 ++++
.../prototype/view.mdx | 17 ++
.../prototype/close.mdx | 35 +++
.../prototype/desiredSize.mdx | 15 ++
.../prototype/enqueue.mdx | 31 +++
.../prototype/error.mdx | 34 +++
.../ReadableStreamDefaultReader.mdx | 32 +++
.../prototype/cancel.mdx | 43 ++++
.../prototype/closed.mdx | 17 ++
.../prototype/read.mdx | 33 +++
.../prototype/releaseLock.mdx | 33 +++
.../globals/ReferenceError/ReferenceError.mdx | 38 +++
.../version-3.21.3/globals/Reflect/apply.mdx | 48 ++++
.../globals/Reflect/construct.mdx | 135 ++++++++++
.../globals/Reflect/defineProperty.mdx | 46 ++++
.../globals/Reflect/deleteProperty.mdx | 43 ++++
.../version-3.21.3/globals/Reflect/get.mdx | 43 ++++
.../Reflect/getOwnPropertyDescriptor.mdx | 45 ++++
.../globals/Reflect/getPrototypeOf.mdx | 39 +++
.../version-3.21.3/globals/Reflect/has.mdx | 39 +++
.../globals/Reflect/isExtensible.mdx | 28 +++
.../globals/Reflect/ownKeys.mdx | 37 +++
.../globals/Reflect/preventExtensions.mdx | 28 +++
.../version-3.21.3/globals/Reflect/set.mdx | 43 ++++
.../globals/Reflect/setPrototypeOf.mdx | 43 ++++
.../globals/Request/Request.mdx | 54 ++++
.../globals/Request/prototype/arrayBuffer.mdx | 24 ++
.../globals/Request/prototype/body.mdx | 17 ++
.../globals/Request/prototype/bodyUsed.mdx | 15 ++
.../globals/Request/prototype/clone.mdx | 34 +++
.../globals/Request/prototype/headers.mdx | 15 ++
.../globals/Request/prototype/json.mdx | 27 ++
.../globals/Request/prototype/method.mdx | 14 ++
.../prototype/setManualFramingHeaders.mdx | 35 +++
.../globals/Request/prototype/text.mdx | 25 ++
.../globals/Request/prototype/url.mdx | 14 ++
.../globals/Response/Response.mdx | 55 +++++
.../Response/prototype/arrayBuffer.mdx | 25 ++
.../globals/Response/prototype/body.mdx | 14 ++
.../globals/Response/prototype/bodyUsed.mdx | 13 +
.../globals/Response/prototype/headers.mdx | 15 ++
.../globals/Response/prototype/ip.mdx | 17 ++
.../globals/Response/prototype/json.mdx | 28 +++
.../globals/Response/prototype/ok.mdx | 13 +
.../globals/Response/prototype/port.mdx | 17 ++
.../prototype/setManualFramingHeaders.mdx | 33 +++
.../globals/Response/prototype/status.mdx | 15 ++
.../globals/Response/prototype/statusText.mdx | 16 ++
.../globals/Response/prototype/text.mdx | 26 ++
.../globals/Response/prototype/url.mdx | 15 ++
.../globals/Response/redirect.mdx | 35 +++
.../RsaHashedImportParams.mdx | 18 ++
.../version-3.21.3/globals/Set/@@species.mdx | 25 ++
.../version-3.21.3/globals/Set/Set.mdx | 34 +++
.../globals/Set/prototype/@@iterator.mdx | 21 ++
.../globals/Set/prototype/add.mdx | 24 ++
.../globals/Set/prototype/clear.mdx | 20 ++
.../globals/Set/prototype/delete.mdx | 26 ++
.../globals/Set/prototype/entries.mdx | 26 ++
.../globals/Set/prototype/forEach.mdx | 82 ++++++
.../globals/Set/prototype/has.mdx | 25 ++
.../globals/Set/prototype/keys.mdx | 20 ++
.../globals/Set/prototype/size.mdx | 13 +
.../globals/Set/prototype/values.mdx | 26 ++
.../version-3.21.3/globals/String/String.mdx | 34 +++
.../globals/String/fromCharCode.mdx | 38 +++
.../globals/String/fromCodePoint.mdx | 40 +++
.../globals/String/prototype/@@iterator.mdx | 34 +++
.../globals/String/prototype/at.mdx | 24 ++
.../globals/String/prototype/charAt.mdx | 42 ++++
.../globals/String/prototype/charCodeAt.mdx | 65 +++++
.../globals/String/prototype/codePointAt.mdx | 32 +++
.../globals/String/prototype/concat.mdx | 38 +++
.../globals/String/prototype/endsWith.mdx | 36 +++
.../globals/String/prototype/includes.mdx | 50 ++++
.../globals/String/prototype/indexOf.mdx | 91 +++++++
.../globals/String/prototype/lastIndexOf.mdx | 62 +++++
.../globals/String/prototype/length.mdx | 39 +++
.../String/prototype/localeCompare.mdx | 67 +++++
.../globals/String/prototype/match.mdx | 42 ++++
.../globals/String/prototype/matchAll.mdx | 38 +++
.../globals/String/prototype/padEnd.mdx | 38 +++
.../globals/String/prototype/padStart.mdx | 36 +++
.../globals/String/prototype/repeat.mdx | 33 +++
.../globals/String/prototype/replace.mdx | 112 +++++++++
.../globals/String/prototype/replaceAll.mdx | 66 +++++
.../globals/String/prototype/search.mdx | 38 +++
.../globals/String/prototype/slice.mdx | 41 +++
.../globals/String/prototype/split.mdx | 53 ++++
.../globals/String/prototype/startsWith.mdx | 36 +++
.../globals/String/prototype/substr.mdx | 44 ++++
.../globals/String/prototype/substring.mdx | 39 +++
.../String/prototype/toLocaleLowerCase.mdx | 42 ++++
.../String/prototype/toLocaleUpperCase.mdx | 49 ++++
.../globals/String/prototype/toLowerCase.mdx | 26 ++
.../globals/String/prototype/toString.mdx | 34 +++
.../globals/String/prototype/toUpperCase.mdx | 32 +++
.../globals/String/prototype/trim.mdx | 23 ++
.../globals/String/prototype/trimEnd.mdx | 31 +++
.../globals/String/prototype/trimStart.mdx | 31 +++
.../globals/String/prototype/valueOf.mdx | 28 +++
.../version-3.21.3/globals/String/raw.mdx | 45 ++++
.../globals/SubtleCrypto/SubtleCrypto.mdx | 18 ++
.../globals/SubtleCrypto/prototype/digest.mdx | 45 ++++
.../SubtleCrypto/prototype/importKey.mdx | 99 ++++++++
.../globals/SubtleCrypto/prototype/sign.mdx | 60 +++++
.../globals/SubtleCrypto/prototype/verify.mdx | 52 ++++
.../version-3.21.3/globals/Symbol/Symbol.mdx | 31 +++
.../globals/Symbol/asyncIterator.mdx | 17 ++
.../version-3.21.3/globals/Symbol/for.mdx | 37 +++
.../globals/Symbol/hasInstance.mdx | 13 +
.../globals/Symbol/isConcatSpreadable.mdx | 20 ++
.../globals/Symbol/iterator.mdx | 26 ++
.../version-3.21.3/globals/Symbol/keyFor.mdx | 25 ++
.../version-3.21.3/globals/Symbol/match.mdx | 19 ++
.../globals/Symbol/matchAll.mdx | 15 ++
.../Symbol/prototype/@@toPrimitive.mdx | 31 +++
.../globals/Symbol/prototype/description.mdx | 13 +
.../globals/Symbol/prototype/toString.mdx | 28 +++
.../globals/Symbol/prototype/valueOf.mdx | 25 ++
.../version-3.21.3/globals/Symbol/replace.mdx | 15 ++
.../version-3.21.3/globals/Symbol/search.mdx | 15 ++
.../version-3.21.3/globals/Symbol/species.mdx | 21 ++
.../version-3.21.3/globals/Symbol/split.mdx | 15 ++
.../globals/Symbol/toPrimitive.mdx | 21 ++
.../globals/Symbol/toStringTag.mdx | 13 +
.../globals/Symbol/unscopables.mdx | 21 ++
.../globals/SyntaxError/SyntaxError.mdx | 38 +++
.../globals/TextDecoder/TextDecoder.mdx | 38 +++
.../globals/TextDecoder/prototype/decode.mdx | 42 ++++
.../TextDecoder/prototype/encoding.mdx | 65 +++++
.../globals/TextDecoder/prototype/fatal.mdx | 18 ++
.../TextDecoder/prototype/ignoreBOM.mdx | 13 +
.../globals/TextEncoder/TextEncoder.mdx | 19 ++
.../globals/TextEncoder/prototype/encode.mdx | 24 ++
.../TextEncoder/prototype/encoding.mdx | 16 ++
.../TransformStream/TransformStream.mdx | 62 +++++
.../TransformStream/prototype/readable.mdx | 13 +
.../TransformStream/prototype/writable.mdx | 13 +
.../prototype/desiredSize.mdx | 17 ++
.../prototype/enqueue.mdx | 30 +++
.../prototype/error.mdx | 24 ++
.../prototype/terminate.mdx | 23 ++
.../globals/TypeError/TypeError.mdx | 39 +++
.../globals/URIError/URIError.mdx | 38 +++
.../version-3.21.3/globals/URL/URL.mdx | 38 +++
.../globals/URL/prototype/hash.mdx | 18 ++
.../globals/URL/prototype/host.mdx | 15 ++
.../globals/URL/prototype/hostname.mdx | 14 ++
.../globals/URL/prototype/href.mdx | 15 ++
.../globals/URL/prototype/origin.mdx | 28 +++
.../globals/URL/prototype/password.mdx | 16 ++
.../globals/URL/prototype/pathname.mdx | 21 ++
.../globals/URL/prototype/port.mdx | 16 ++
.../globals/URL/prototype/protocol.mdx | 15 ++
.../globals/URL/prototype/search.mdx | 16 ++
.../globals/URL/prototype/searchParams.mdx | 15 ++
.../globals/URL/prototype/toJSON.mdx | 26 ++
.../globals/URL/prototype/toString.mdx | 25 ++
.../globals/URL/prototype/username.mdx | 15 ++
.../URLSearchParams/URLSearchParams.mdx | 31 +++
.../URLSearchParams/prototype/append.mdx | 30 +++
.../URLSearchParams/prototype/delete.mdx | 26 ++
.../URLSearchParams/prototype/entries.mdx | 27 ++
.../URLSearchParams/prototype/forEach.mdx | 39 +++
.../globals/URLSearchParams/prototype/get.mdx | 26 ++
.../globals/URLSearchParams/prototype/has.mdx | 26 ++
.../URLSearchParams/prototype/keys.mdx | 26 ++
.../globals/URLSearchParams/prototype/set.mdx | 29 +++
.../URLSearchParams/prototype/sort.mdx | 27 ++
.../URLSearchParams/prototype/toString.mdx | 26 ++
.../URLSearchParams/prototype/values.mdx | 26 ++
.../globals/Uint16Array/Uint16Array.mdx | 33 +++
.../globals/Uint32Array/Uint32Array.mdx | 37 +++
.../globals/Uint8Array/Uint8Array.mdx | 35 +++
.../Uint8ClampedArray/Uint8ClampedArray.mdx | 37 +++
.../globals/WeakMap/WeakMap.mdx | 23 ++
.../globals/WeakMap/prototype/delete.mdx | 27 ++
.../globals/WeakMap/prototype/get.mdx | 26 ++
.../globals/WeakMap/prototype/has.mdx | 28 +++
.../globals/WeakMap/prototype/set.mdx | 29 +++
.../globals/WeakRef/WeakRef.mdx | 23 ++
.../globals/WeakRef/prototype/deref.mdx | 25 ++
.../globals/WeakSet/WeakSet.mdx | 25 ++
.../globals/WeakSet/prototype/add.mdx | 25 ++
.../globals/WeakSet/prototype/delete.mdx | 27 ++
.../globals/WeakSet/prototype/has.mdx | 27 ++
.../globals/WorkerLocation/WorkerLocation.mdx | 36 +++
.../globals/WorkerLocation/hash.mdx | 13 +
.../globals/WorkerLocation/host.mdx | 13 +
.../globals/WorkerLocation/hostname.mdx | 13 +
.../globals/WorkerLocation/href.mdx | 13 +
.../globals/WorkerLocation/origin.mdx | 13 +
.../globals/WorkerLocation/pathname.mdx | 13 +
.../globals/WorkerLocation/port.mdx | 13 +
.../globals/WorkerLocation/protocol.mdx | 13 +
.../globals/WorkerLocation/search.mdx | 14 ++
.../globals/WorkerLocation/toString.mdx | 23 ++
.../globals/WritableStream/WritableStream.mdx | 80 ++++++
.../WritableStream/prototype/abort.mdx | 29 +++
.../WritableStream/prototype/getWriter.mdx | 29 +++
.../WritableStream/prototype/locked.mdx | 13 +
.../WritableStreamDefaultController/error.mdx | 37 +++
.../WritableStreamDefaultWriter.mdx | 31 +++
.../prototype/abort.mdx | 40 +++
.../prototype/close.mdx | 37 +++
.../prototype/closed.mdx | 16 ++
.../prototype/desiredSize.mdx | 24 ++
.../prototype/ready.mdx | 16 ++
.../prototype/releaseLock.mdx | 28 +++
.../prototype/write.mdx | 39 +++
.../version-3.21.3/globals/atob.mdx | 37 +++
.../version-3.21.3/globals/btoa.mdx | 38 +++
.../version-3.21.3/globals/clearInterval.mdx | 35 +++
.../version-3.21.3/globals/clearTimeout.mdx | 36 +++
.../version-3.21.3/globals/console/assert.mdx | 42 ++++
.../version-3.21.3/globals/console/clear.mdx | 24 ++
.../version-3.21.3/globals/console/count.mdx | 30 +++
.../globals/console/countReset.mdx | 28 +++
.../version-3.21.3/globals/console/debug.mdx | 26 ++
.../version-3.21.3/globals/console/dir.mdx | 26 ++
.../version-3.21.3/globals/console/dirxml.mdx | 25 ++
.../version-3.21.3/globals/console/error.mdx | 26 ++
.../version-3.21.3/globals/console/group.mdx | 26 ++
.../globals/console/groupCollapsed.mdx | 30 +++
.../globals/console/groupEnd.mdx | 24 ++
.../version-3.21.3/globals/console/info.mdx | 26 ++
.../version-3.21.3/globals/console/log.mdx | 30 +++
.../version-3.21.3/globals/console/time.mdx | 29 +++
.../globals/console/timeEnd.mdx | 26 ++
.../globals/console/timeLog.mdx | 26 ++
.../version-3.21.3/globals/console/trace.mdx | 27 ++
.../version-3.21.3/globals/console/warn.mdx | 26 ++
.../globals/crypto/getRandomValues.mdx | 35 +++
.../globals/crypto/randomUUID.mdx | 23 ++
.../version-3.21.3/globals/crypto/subtle.mdx | 16 ++
.../version-3.21.3/globals/decodeURI.mdx | 41 +++
.../globals/decodeURIComponent.mdx | 36 +++
.../version-3.21.3/globals/encodeURI.mdx | 51 ++++
.../globals/encodeURIComponent.mdx | 43 ++++
.../version-3.21.3/globals/escape.mdx | 34 +++
.../version-3.21.3/globals/eval.mdx | 36 +++
.../version-3.21.3/globals/fetch.mdx | 65 +++++
.../version-3.21.3/globals/globalThis.mdx | 20 ++
.../version-3.21.3/globals/isFinite.mdx | 37 +++
.../version-3.21.3/globals/isNaN.mdx | 36 +++
.../version-3.21.3/globals/location.mdx | 18 ++
.../version-3.21.3/globals/parseFloat.mdx | 41 +++
.../version-3.21.3/globals/parseInt.mdx | 68 +++++
.../globals/performance/now.mdx | 25 ++
.../globals/performance/timeOrigin.mdx | 16 ++
.../version-3.21.3/globals/setInterval.mdx | 61 +++++
.../version-3.21.3/globals/setTimeout.mdx | 61 +++++
.../globals/structuredClone.mdx | 33 +++
.../version-3.21.3/globals/undefined.mdx | 25 ++
.../version-3.21.3/globals/unescape.mdx | 34 +++
.../versioned_docs/version-3.21.3/index.mdx | 98 ++++++++
.../version-3.21.3/migration-guide/index.mdx | 98 ++++++++
.../version-3.21.3-sidebars.json | 8 +
documentation/versions.json | 1 +
package-lock.json | 4 +-
package.json | 2 +-
700 files changed, 25507 insertions(+), 151 deletions(-)
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/Backend.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/exists.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/fromName.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/health.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/prototype/toName.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/prototype/toString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache-override/CacheOverride/CacheOverride.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/age.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/body.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/close.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/hits.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/length.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/maxAge.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/staleWhileRevalidate.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/state.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/userMetadata.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/CacheState/found.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/CacheState/mustInsertOrUpdate.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/CacheState/stale.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/CacheState/usable.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/CoreCache/insert.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/CoreCache/lookup.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/CoreCache/transactionLookup.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCache/SimpleCache.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCache/get.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCache/getOrSet.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCache/purge.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/arrayBuffer.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/body.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/bodyUsed.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/json.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/text.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/age.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/body.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/cancel.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/close.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/hits.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/insert.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/insertAndStreamBack.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/length.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/maxAge.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/staleWhileRevalidate.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/state.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/update.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/userMetadata.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:config-store/ConfigStore/ConfigStore.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:config-store/ConfigStore/prototype/get.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:device/Device/lookup.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/brand.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/hardwareType.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isDesktop.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isGameConsole.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isMediaPlayer.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isMobile.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isSmartTV.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isTablet.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isTouchscreen.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/model.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/name.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/toJSON.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:dictionary/Dictionary/Dictionary.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:dictionary/Dictionary/prototype/get.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/EdgeRateLimiter/EdgeRateLimiter.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/EdgeRateLimiter/prototype/checkRate.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/PenaltyBox/PenaltyBox.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/PenaltyBox/prototype/add.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/PenaltyBox/prototype/has.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/RateCounter/RateCounter.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/RateCounter/prototype/increment.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/RateCounter/prototype/lookupCount.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/RateCounter/prototype/lookupRate.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:env/env.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:experimental/allowDynamicBackends.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:experimental/includeBytes.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:experimental/sdkVersion.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:fanout/createFanoutHandoff.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:geolocation/getGeolocationForIpAddress.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStore/KVStore.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStore/prototype/delete.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStore/prototype/get.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStore/prototype/put.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/arrayBuffer.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/body.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/bodyUsed.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/json.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/text.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:logger/Logger/Logger.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:logger/Logger/prototype/log.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStore/SecretStore.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStore/fromBytes.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStore/prototype/get.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStoreEntry/prototype/plaintext.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStoreEntry/prototype/rawBytes.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/AggregrateError/AggregrateError.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/@@species.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/Array.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/from.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/isArray.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/of.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/@@iterator.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/@@unscopables.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/at.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/concat.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/copyWithin.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/entries.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/every.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/fill.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/filter.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/find.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/findIndex.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/flat.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/flatMap.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/forEach.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/includes.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/indexOf.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/join.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/keys.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/lastIndexOf.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/length.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/map.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/pop.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/push.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/reduce.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/reduceRight.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/reverse.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/shift.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/slice.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/some.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/sort.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/splice.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/toLocaleString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/toString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/unshift.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Array/prototype/values.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/@@species.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/ArrayBuffer.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/isView.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/prototype/byteLength.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/prototype/slice.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/BigInt/BigInt.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/BigInt/asIntN.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/BigInt/asUintN.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/BigInt/prototype/toLocaleString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/BigInt/prototype/toString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/BigInt/prototype/valueOf.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/BigInt64Array/BigInt64Array.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/BigUint64Array/BigUint64Array.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Boolean/Boolean.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Boolean/prototype/toString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Boolean/prototype/valueOf.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ByteLengthQueuingStrategy/ByteLengthQueuingStrategy.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ByteLengthQueuingStrategy/prototype/size.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/CompressionStream/CompressionStream.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/CompressionStream/prototype/readable.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/CompressionStream/prototype/writable.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/CryptoKey/CryptoKey.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/CryptoKey/prototype/algorithm.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/CryptoKey/prototype/extractable.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/CryptoKey/prototype/type.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/CryptoKey/prototype/usages.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DOMException/DOMException.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DOMException/code.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DOMException/message.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DOMException/name.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/DataView.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/buffer.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/byteLength.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/byteOffset.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getBigInt64.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getBigUint64.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getFloat32.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getFloat64.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getInt16.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getInt32.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getInt8.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getUint16.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getUint32.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getUint8.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setBigInt64.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setBigUint64.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setFloat32.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setFloat64.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setInt16.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setInt32.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setInt8.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setUint16.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setUint32.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setUint8.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/Date.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/UTC.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/now.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/parse.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/@@toPrimitive.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getDate.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getDay.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getFullYear.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getHours.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getMilliseconds.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getMinutes.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getMonth.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getSeconds.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getTime.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getTimezoneOffset.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCDate.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCDay.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCFullYear.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCHours.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCMilliseconds.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCMinutes.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCMonth.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCSeconds.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getYear.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setDate.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setFullYear.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setHours.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setMilliseconds.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setMinutes.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setMonth.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setSeconds.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setTime.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCDate.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCFullYear.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCHours.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCMilliseconds.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCMinutes.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCMonth.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCSeconds.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setYear.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toDateString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toISOString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toJSON.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toLocaleDateString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toLocaleString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toLocaleTimeString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toTimeString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toUTCString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Date/prototype/valueOf.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DecompressionStream/DecompressionStream.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DecompressionStream/prototype/readable.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/DecompressionStream/prototype/writable.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/EcKeyImportParams/EcKeyImportParams.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/EcdsaParams/EcdsaParams.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Error/Error.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Error/prototype/cause.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Error/prototype/message.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Error/prototype/name.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Error/prototype/toString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/EvalError/EvalError.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/FetchEvent/FetchEvent.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/FetchEvent/prototype/respondWith.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/FetchEvent/prototype/waitUntil.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/FinalizationRegistry/FinalizationRegistry.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/FinalizationRegistry/prototype/register.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/FinalizationRegistry/prototype/unregister.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Float32Array/Float32Array.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Float64Array/Float64Array.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Function/Function.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Function/prototype/apply.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Function/prototype/bind.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Function/prototype/call.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Function/prototype/index.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Function/prototype/length.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Function/prototype/name.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Function/prototype/toString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Headers/Headers.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/append.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/delete.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/entries.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/forEach.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/get.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/getSetCookie.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/has.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/keys.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/set.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/values.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/HmacImportParams/HmacImportParams.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Infinity.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Int16Array/Int16Array.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Int32Array/Int32Array.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Int8Array/Int8Array.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/JSON/parse.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/JSON/stringify.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Map/@@species.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Map/Map.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Map/prototype/@@iterator.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Map/prototype/clear.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Map/prototype/delete.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Map/prototype/entries.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Map/prototype/forEach.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Map/prototype/get.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Map/prototype/has.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Map/prototype/keys.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Map/prototype/set.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Map/prototype/size.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Map/prototype/values.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/E.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/LN10.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/LN2.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/LOG10e.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/LOG2e.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/PI.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/SQRT1_2.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/SQRT2.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/abs.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/acos.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/acosh.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/asin.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/asinh.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/atan.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/atan2.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/atanh.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/cbrt.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/ceil.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/clz32.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/cos.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/cosh.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/exp.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/expm1.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/floor.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/fround.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/hypot.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/imul.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/log.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/log10.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/log1p.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/log2.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/max.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/min.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/pow.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/random.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/round.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/sign.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/sin.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/sinh.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/sqrt.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/tan.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/tanh.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Math/trunc.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/NaN.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/MAX_SAFE_INTEGER.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/MAX_VALUE.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/MIN_SAFE_INTEGER.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/MIN_VALUE.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/NEGATIVE_INFINITY.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/NaN.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/Number.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/POSITIVE_INFINITY.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/epsilon.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/isFinite.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/isInteger.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/isNaN.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/isSafeInteger.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/parseFloat.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/parseInt.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toExponential.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toFixed.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toLocaleString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toPrecision.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Number/prototype/valueOf.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/Object.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/assign.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/create.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/defineProperties.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/defineProperty.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/entries.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/freeze.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/fromEntries.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/getOwnPropertyDescriptor.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/getOwnPropertyDescriptors.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/getOwnPropertyNames.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/getOwnPropertySymbols.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/getPrototypeOf.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/hasOwn.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/is.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/isExtensible.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/isFrozen.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/isSealed.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/keys.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/preventExtensions.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/prototype/constructor.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/prototype/hasOwnProperty.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/prototype/isPrototypeOf.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/prototype/propertyIsEnumerable.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/prototype/toLocaleString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/prototype/toString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/prototype/valueOf.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/seal.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/setPrototypeOf.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Object/values.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Promise/@@species.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Promise/Promise.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Promise/all.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Promise/allSettled.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Promise/any.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Promise/prototype/catch.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Promise/prototype/finally.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Promise/prototype/then.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Promise/race.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Promise/reject.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Promise/resolve.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Proxy/Proxy.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Proxy/proxy/apply.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Proxy/proxy/construct.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Proxy/proxy/defineProperty.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Proxy/proxy/deleteProperty.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Proxy/proxy/get.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Proxy/proxy/getOwnPropertyDescriptor.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Proxy/proxy/getPrototypeOf.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Proxy/proxy/has.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Proxy/proxy/isExtensible.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Proxy/proxy/ownKeys.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Proxy/proxy/preventExtensions.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Proxy/proxy/set.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Proxy/proxy/setPrototypeOf.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Proxy/revocable.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/RangeError/RangeError.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableByteStreamController/prototype/byobRequest.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableByteStreamController/prototype/close.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableByteStreamController/prototype/desiredSize.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableByteStreamController/prototype/enqueue.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableByteStreamController/prototype/error.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStream/ReadableStream.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStream/prototype/cancel.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStream/prototype/getReader.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStream/prototype/locked.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStream/prototype/pipeThrough.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStream/prototype/pipeTo.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStream/prototype/tee.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStreamBYOBReader/ReadableStreamBYOBReader.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStreamBYOBReader/prototype/cancel.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStreamBYOBReader/prototype/closed.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStreamBYOBReader/prototype/read.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStreamBYOBReader/prototype/releaseLock.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStreamBYOBRequest/prototype/respond.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStreamBYOBRequest/prototype/respondWithNewView.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStreamBYOBRequest/prototype/view.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStreamDefaultController/prototype/close.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStreamDefaultController/prototype/desiredSize.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStreamDefaultController/prototype/enqueue.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStreamDefaultController/prototype/error.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStreamDefaultReader/ReadableStreamDefaultReader.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStreamDefaultReader/prototype/cancel.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStreamDefaultReader/prototype/closed.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStreamDefaultReader/prototype/read.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReadableStreamDefaultReader/prototype/releaseLock.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/ReferenceError/ReferenceError.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Reflect/apply.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Reflect/construct.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Reflect/defineProperty.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Reflect/deleteProperty.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Reflect/get.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Reflect/getOwnPropertyDescriptor.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Reflect/getPrototypeOf.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Reflect/has.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Reflect/isExtensible.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Reflect/ownKeys.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Reflect/preventExtensions.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Reflect/set.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Reflect/setPrototypeOf.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Request/Request.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Request/prototype/arrayBuffer.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Request/prototype/body.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Request/prototype/bodyUsed.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Request/prototype/clone.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Request/prototype/headers.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Request/prototype/json.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Request/prototype/method.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Request/prototype/setManualFramingHeaders.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Request/prototype/text.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Request/prototype/url.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Response/Response.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Response/prototype/arrayBuffer.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Response/prototype/body.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Response/prototype/bodyUsed.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Response/prototype/headers.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Response/prototype/ip.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Response/prototype/json.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Response/prototype/ok.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Response/prototype/port.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Response/prototype/setManualFramingHeaders.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Response/prototype/status.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Response/prototype/statusText.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Response/prototype/text.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Response/prototype/url.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Response/redirect.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/RsaHashedImportParams/RsaHashedImportParams.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Set/@@species.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Set/Set.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Set/prototype/@@iterator.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Set/prototype/add.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Set/prototype/clear.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Set/prototype/delete.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Set/prototype/entries.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Set/prototype/forEach.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Set/prototype/has.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Set/prototype/keys.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Set/prototype/size.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Set/prototype/values.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/String.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/fromCharCode.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/fromCodePoint.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/@@iterator.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/at.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/charAt.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/charCodeAt.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/codePointAt.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/concat.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/endsWith.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/includes.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/indexOf.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/lastIndexOf.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/length.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/localeCompare.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/match.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/matchAll.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/padEnd.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/padStart.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/repeat.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/replace.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/replaceAll.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/search.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/slice.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/split.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/startsWith.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/substr.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/substring.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/toLocaleLowerCase.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/toLocaleUpperCase.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/toLowerCase.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/toString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/toUpperCase.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/trim.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/trimEnd.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/trimStart.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/prototype/valueOf.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/String/raw.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/SubtleCrypto/SubtleCrypto.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/SubtleCrypto/prototype/digest.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/SubtleCrypto/prototype/importKey.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/SubtleCrypto/prototype/sign.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/SubtleCrypto/prototype/verify.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/Symbol.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/asyncIterator.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/for.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/hasInstance.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/isConcatSpreadable.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/iterator.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/keyFor.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/match.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/matchAll.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/prototype/@@toPrimitive.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/prototype/description.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/prototype/toString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/prototype/valueOf.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/replace.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/search.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/species.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/split.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/toPrimitive.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/toStringTag.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Symbol/unscopables.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/SyntaxError/SyntaxError.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/TextDecoder/TextDecoder.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/TextDecoder/prototype/decode.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/TextDecoder/prototype/encoding.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/TextDecoder/prototype/fatal.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/TextDecoder/prototype/ignoreBOM.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/TextEncoder/TextEncoder.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/TextEncoder/prototype/encode.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/TextEncoder/prototype/encoding.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/TransformStream/TransformStream.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/TransformStream/prototype/readable.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/TransformStream/prototype/writable.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/TransformStreamDefaultController/prototype/desiredSize.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/TransformStreamDefaultController/prototype/enqueue.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/TransformStreamDefaultController/prototype/error.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/TransformStreamDefaultController/prototype/terminate.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/TypeError/TypeError.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URIError/URIError.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URL/URL.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URL/prototype/hash.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URL/prototype/host.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URL/prototype/hostname.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URL/prototype/href.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URL/prototype/origin.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URL/prototype/password.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URL/prototype/pathname.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URL/prototype/port.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URL/prototype/protocol.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URL/prototype/search.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URL/prototype/searchParams.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URL/prototype/toJSON.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URL/prototype/toString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URL/prototype/username.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URLSearchParams/URLSearchParams.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URLSearchParams/prototype/append.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URLSearchParams/prototype/delete.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URLSearchParams/prototype/entries.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URLSearchParams/prototype/forEach.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URLSearchParams/prototype/get.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URLSearchParams/prototype/has.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URLSearchParams/prototype/keys.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URLSearchParams/prototype/set.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URLSearchParams/prototype/sort.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URLSearchParams/prototype/toString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/URLSearchParams/prototype/values.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Uint16Array/Uint16Array.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Uint32Array/Uint32Array.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Uint8Array/Uint8Array.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/Uint8ClampedArray/Uint8ClampedArray.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WeakMap/WeakMap.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WeakMap/prototype/delete.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WeakMap/prototype/get.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WeakMap/prototype/has.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WeakMap/prototype/set.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WeakRef/WeakRef.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WeakRef/prototype/deref.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WeakSet/WeakSet.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WeakSet/prototype/add.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WeakSet/prototype/delete.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WeakSet/prototype/has.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WorkerLocation/WorkerLocation.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WorkerLocation/hash.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WorkerLocation/host.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WorkerLocation/hostname.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WorkerLocation/href.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WorkerLocation/origin.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WorkerLocation/pathname.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WorkerLocation/port.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WorkerLocation/protocol.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WorkerLocation/search.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WorkerLocation/toString.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WritableStream/WritableStream.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WritableStream/prototype/abort.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WritableStream/prototype/getWriter.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WritableStream/prototype/locked.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WritableStreamDefaultController/error.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WritableStreamDefaultWriter/WritableStreamDefaultWriter.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WritableStreamDefaultWriter/prototype/abort.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WritableStreamDefaultWriter/prototype/close.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WritableStreamDefaultWriter/prototype/closed.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WritableStreamDefaultWriter/prototype/desiredSize.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WritableStreamDefaultWriter/prototype/ready.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WritableStreamDefaultWriter/prototype/releaseLock.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/WritableStreamDefaultWriter/prototype/write.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/atob.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/btoa.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/clearInterval.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/clearTimeout.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/console/assert.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/console/clear.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/console/count.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/console/countReset.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/console/debug.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/console/dir.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/console/dirxml.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/console/error.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/console/group.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/console/groupCollapsed.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/console/groupEnd.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/console/info.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/console/log.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/console/time.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/console/timeEnd.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/console/timeLog.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/console/trace.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/console/warn.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/crypto/getRandomValues.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/crypto/randomUUID.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/crypto/subtle.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/decodeURI.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/decodeURIComponent.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/encodeURI.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/encodeURIComponent.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/escape.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/eval.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/fetch.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/globalThis.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/isFinite.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/isNaN.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/location.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/parseFloat.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/parseInt.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/performance/now.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/performance/timeOrigin.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/setInterval.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/setTimeout.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/structuredClone.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/undefined.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/globals/unescape.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/index.mdx
create mode 100644 documentation/versioned_docs/version-3.21.3/migration-guide/index.mdx
create mode 100644 documentation/versioned_sidebars/version-3.21.3-sidebars.json
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4a4befcbb1..cbfb1f9775 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## 3.21.3 (2024-09-04)
+
+### Fixed
+
+* Device.toJSON() properties ([#937](https://github.com/fastly/js-compute-runtime/issues/937)) ([c4182d3](https://github.com/fastly/js-compute-runtime/commit/c4182d30e8d22d7720acb9d51bd59763ab8b83e5))
+* event loop stall error no longer a panic ([#934](https://github.com/fastly/js-compute-runtime/issues/934)) ([08c9934](https://github.com/fastly/js-compute-runtime/commit/08c9934c59bd00ddd2dde252f6529ee8322be809))
+
## 3.21.2 (2024-08-27)
### Fixed
diff --git a/documentation/app/yarn.lock b/documentation/app/yarn.lock
index d4acfdcd5e..64cec75f8b 100644
--- a/documentation/app/yarn.lock
+++ b/documentation/app/yarn.lock
@@ -25,36 +25,11 @@
resolved "https://registry.npmjs.org/@bytecodealliance/preview2-shim/-/preview2-shim-0.16.4.tgz"
integrity sha512-G6IB1YQjy6csGe6OEAlBYHqtsakZu5ilh59w08h1IR6IEoZG3O1dmCRdy/zcBgvyk/ORXyhiBMKFCzOCACw01g==
-"@bytecodealliance/wizer-darwin-arm64@3.0.1":
- version "3.0.1"
- resolved "https://registry.npmjs.org/@bytecodealliance/wizer-darwin-arm64/-/wizer-darwin-arm64-3.0.1.tgz"
- integrity sha512-/8KYSajyhO9koAE3qQhYfC6belZheJw9X3XqW7hrizTpj6n4z4OJFhhqwJmiYFUUsPtC7OxcXMFFPbTuSQPBcw==
-
-"@bytecodealliance/wizer-darwin-x64@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@bytecodealliance/wizer-darwin-x64/-/wizer-darwin-x64-3.0.1.tgz#0a4131f210cbaab0df46ad64d065768c0803c977"
- integrity sha512-bMReultN/r+W/BRXV0F+28U5dZwbQT/ZO0k4icZlhUhrv5/wpQJix7Z/ZvBnVQ+/JHb0QDUpFk2/zCtgkRXP6Q==
-
-"@bytecodealliance/wizer-linux-arm64@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@bytecodealliance/wizer-linux-arm64/-/wizer-linux-arm64-3.0.1.tgz#9cdd378a0b7ccaf4c195d648ee5f88658df04779"
- integrity sha512-35ZhAeYxWK3bTqqgwysbBWlGlrlMNKNng3ZITQV2PAtafpE7aCeqywl7VAS4lLRG5eTb7wxNgN7zf8d3wiIFTQ==
-
-"@bytecodealliance/wizer-linux-s390x@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@bytecodealliance/wizer-linux-s390x/-/wizer-linux-s390x-3.0.1.tgz#d53d7ae5809573fa72d0d4dc4742cec9ae4aed1b"
- integrity sha512-Smvy9mguEMtX0lupDLTPshXUzAHeOhgscr1bhGNjeCCLD1sd8rIjBvWV19Wtra0BL1zTuU2EPOHjR/4k8WoyDg==
-
"@bytecodealliance/wizer-linux-x64@3.0.1":
version "3.0.1"
- resolved "https://registry.yarnpkg.com/@bytecodealliance/wizer-linux-x64/-/wizer-linux-x64-3.0.1.tgz#fa074bc047d693dc5a95ce4b1b800bd58dae24ee"
+ resolved "https://registry.npmjs.org/@bytecodealliance/wizer-linux-x64/-/wizer-linux-x64-3.0.1.tgz"
integrity sha512-uUue78xl7iwndsGgTsagHLTLyLBVHhwzuywiwHt1xw8y0X0O8REKRLBoB7+LdM+pttDPdFtKJgbTFL4UPAA7Yw==
-"@bytecodealliance/wizer-win32-x64@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@bytecodealliance/wizer-win32-x64/-/wizer-win32-x64-3.0.1.tgz#d5f59c56cf65c4aa261078a04ca46b8540a4416d"
- integrity sha512-ycd38sx1UTZpHZwh8IfH/4N3n0OQUB8awxkUSLXf9PolEd088YbxoPB3noHy4E+L2oYN7KZMrg9517pX0z2RhQ==
-
"@bytecodealliance/wizer@^3.0.1":
version "3.0.1"
resolved "https://registry.npmjs.org/@bytecodealliance/wizer/-/wizer-3.0.1.tgz"
@@ -67,116 +42,11 @@
"@bytecodealliance/wizer-linux-x64" "3.0.1"
"@bytecodealliance/wizer-win32-x64" "3.0.1"
-"@esbuild/android-arm64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd"
- integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==
-
-"@esbuild/android-arm@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d"
- integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==
-
-"@esbuild/android-x64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1"
- integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==
-
-"@esbuild/darwin-arm64@0.17.19":
- version "0.17.19"
- resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz"
- integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==
-
-"@esbuild/darwin-x64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb"
- integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==
-
-"@esbuild/freebsd-arm64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2"
- integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==
-
-"@esbuild/freebsd-x64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4"
- integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==
-
-"@esbuild/linux-arm64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb"
- integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==
-
-"@esbuild/linux-arm@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a"
- integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==
-
-"@esbuild/linux-ia32@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a"
- integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==
-
-"@esbuild/linux-loong64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72"
- integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==
-
-"@esbuild/linux-mips64el@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289"
- integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==
-
-"@esbuild/linux-ppc64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7"
- integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==
-
-"@esbuild/linux-riscv64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09"
- integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==
-
-"@esbuild/linux-s390x@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829"
- integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==
-
"@esbuild/linux-x64@0.17.19":
version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4"
+ resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz"
integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==
-"@esbuild/netbsd-x64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462"
- integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==
-
-"@esbuild/openbsd-x64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691"
- integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==
-
-"@esbuild/sunos-x64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273"
- integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==
-
-"@esbuild/win32-arm64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f"
- integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==
-
-"@esbuild/win32-ia32@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03"
- integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==
-
-"@esbuild/win32-x64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061"
- integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==
-
"@fastly/js-compute@^3":
version "3.16.0"
resolved "https://registry.npmjs.org/@fastly/js-compute/-/js-compute-3.16.0.tgz"
@@ -200,26 +70,11 @@
"@jakechampion/c-at-e-file-server-linux-x64" "0.0.2-main"
"@jakechampion/c-at-e-file-server-win32-x64" "0.0.2-main"
-"@jakechampion/c-at-e-file-server-darwin-arm64@0.0.2-main":
- version "0.0.2-main"
- resolved "https://registry.npmjs.org/@jakechampion/c-at-e-file-server-darwin-arm64/-/c-at-e-file-server-darwin-arm64-0.0.2-main.tgz"
- integrity sha512-TZUMtAQmzVDVFcRvxP8FixjAmMDCrzmbXltkDlvG8+hYNVVLVG/2VDmkcAmEy56LUrYiov79P/VUKMPPDVhG9g==
-
-"@jakechampion/c-at-e-file-server-darwin-x64@0.0.2-main":
- version "0.0.2-main"
- resolved "https://registry.yarnpkg.com/@jakechampion/c-at-e-file-server-darwin-x64/-/c-at-e-file-server-darwin-x64-0.0.2-main.tgz#3ffa4309fb73d3c393014310da456585fdc5e5bb"
- integrity sha512-04I/dib1f1Fl9wWF29YY1PMUuRDEDv43qn6mxxAOF3QzvhtVakxkPD9ml7gF3ETr+J0QBVgZRVv2H6mOn+MIKw==
-
"@jakechampion/c-at-e-file-server-linux-x64@0.0.2-main":
version "0.0.2-main"
- resolved "https://registry.yarnpkg.com/@jakechampion/c-at-e-file-server-linux-x64/-/c-at-e-file-server-linux-x64-0.0.2-main.tgz#0dc51ea2a1ad2cf2409b64e4e92ddc8c42bd10b5"
+ resolved "https://registry.npmjs.org/@jakechampion/c-at-e-file-server-linux-x64/-/c-at-e-file-server-linux-x64-0.0.2-main.tgz"
integrity sha512-xL4cXyJ19WegU+w89oOlOw69FLoAqmiWJtfcsKUeUHeJjjqAmKQ98T5dsroBXQeYNXQYbt48IbX3Qa7NdMyZzw==
-"@jakechampion/c-at-e-file-server-win32-x64@0.0.2-main":
- version "0.0.2-main"
- resolved "https://registry.yarnpkg.com/@jakechampion/c-at-e-file-server-win32-x64/-/c-at-e-file-server-win32-x64-0.0.2-main.tgz#18e757e95bc32c479b443b93e3d74eece4ff8b6c"
- integrity sha512-wqgxzcj0EtaSDBA7ivVYLvVreLXJfFD3KkyQ0UFutGPCITr18nPsnsl7r8h6M+gc4gmL22r5VMW72Xd+wXUaEg==
-
"@jakechampion/c-at-e-file-server@^0.0.2-main":
version "0.0.2-main"
resolved "https://registry.npmjs.org/@jakechampion/c-at-e-file-server/-/c-at-e-file-server-0.0.2-main.tgz"
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/Backend.mdx b/documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/Backend.mdx
new file mode 100644
index 0000000000..81a52cae11
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/Backend.mdx
@@ -0,0 +1,233 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+import {Fiddle} from '@site/src/components/fiddle';
+
+# `Backend()`
+
+The **`Backend` constructor** lets you dynamically create new [Fastly Backends](https://developer.fastly.com/reference/api/services/backend/) for your Fastly Compute service.
+
+Dynamically creating new [Fastly Backends](https://developer.fastly.com/reference/api/services/backend/) is disabled by default for Fastly Services. Please contact [Fastly Support](https://support.fastly.com/hc/requests/new?ticket_form_id=360000269711) to request the feature be enabled on the Fastly Services which require Dynamic Backends.
+
+By default, Dynamic Backends are disabled within a JavaScript application as it can be a potential avenue for third-party JavaScript code to send requests, potentially including sensitive/secret data, off to destinations that the JavaScript project was not intending, which could be a security issue.
+
+To enable Dynamic Backends the application will need to explicitly allow Dynamic Backends via:
+
+```js
+import { allowDynamicBackends } from "fastly:experimental";
+allowDynamicBackends(true);
+```
+
+**Note**: Backend constructors can only be used when processing requests, not during build-time initialization.
+
+## Syntax
+
+```js
+new Backend(backendConfiguration)
+```
+
+> **Note:** `Backend()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+- `backendConfiguration`
+
+ - : An Object which contains all the configuration options to apply to the newly created Backend.
+
+ - `name` _: string_
+ - The name of the backend.
+ - The name has to be between 1 and 254 characters inclusive.
+ - The name can be whatever you would like, as long as it does not match the name of any of the static service backends nor match any other dynamic backends built during a single execution of the application.
+ - Throws a [`TypeError`](../../globals/TypeError/TypeError.mdx) if the value is not valid. I.E. The value is null, undefined, an empty string or a string with more than 254 characters.
+ - `target` _: string_
+ - A hostname, IPv4, or IPv6 address for the backend as well as an optional port.
+ - The target has to be at-least 1 character.
+ - Throws a [`TypeError`](../../globals/TypeError/TypeError.mdx) if the value is not valid. I.E. Is null, undefined, an empty string, not a valid IP address or host, or is the string `::`
+ - `hostOverride` _: string_ _**optional**_
+ - If set, will force the HTTP Host header on connections to this backend to be the supplied value.
+ - Throws a [`TypeError`](../../globals/TypeError/TypeError.mdx) if the value is an empty string.
+ - `connectTimeout` _: number_ _**optional**_
+ - Maximum duration in milliseconds to wait for a connection to this backend to be established.
+ - If exceeded, the connection is aborted and a 503 response will be presented instead.
+ - Throws a [`RangeError`](../../globals/RangeError/RangeError.mdx) if the value is negative or greater than or equal to 2^32
+ - `firstByteTimeout` _: number_ _**optional**_
+ - Maximum duration in milliseconds to wait for the server response to begin after a TCP connection is established and the request has been sent.
+ - If exceeded, the connection is aborted and a 503 response will be presented instead.
+ - Throws a [`RangeError`](../../globals/RangeError/RangeError.mdx) if the value is negative or greater than or equal to 2^32
+ - `betweenBytesTimeout` _: number_ _**optional**_
+ - Maximum duration in milliseconds that Fastly will wait while receiving no data on a download from a backend.
+ - If exceeded, the response received so far will be considered complete and the fetch will end.
+ - Throws a [`RangeError`](../../globals/RangeError/RangeError.mdx) if the value is negative or greater than or equal to 2^32
+ - `useSSL` _: boolean_ _**optional**_
+ - Whether or not to require TLS for connections to this backend.
+ - `dontPool` _: boolean_ _**optional**_
+ - Determine whether or not connections to the same backend should be pooled across different sessions.
+ - Fastly considers two backends “the same” if they're registered with the same name and the exact same settings.
+ - In those cases, when pooling is enabled, if Session 1 opens a connection to this backend it will be left open, and can be re-used by Session 2.
+ - This can help improve backend latency, by removing the need for the initial network / TLS handshake(s).
+ - By default, pooling is enabled for dynamic backends.
+ - `tlsMinVersion` _: 1 | 1.1 | 1.2 | 1.3_ _**optional**_
+ - Minimum allowed TLS version on SSL connections to this backend.
+ - If the backend server is not able to negotiate a connection meeting this constraint, a 503 response will be presented instead.
+ - Throws a [`RangeError`](../../globals/RangeError/RangeError.mdx) if the value is not 1, 1.1, 1.2, or 1.3
+ - `tlsMaxVersion` _: 1 | 1.1 | 1.2 | 1.3_ _**optional**_
+ - Maximum allowed TLS version on SSL connections to this backend.
+ - If the backend server is not able to negotiate a connection meeting this constraint, a 503 response will be presented instead.
+ - Throws a [`RangeError`](../../globals/RangeError/RangeError.mdx) if the value is not 1, 1.1, 1.2, or 1.3
+ - `certificateHostname` _: string_ _**optional**_
+ - Define the hostname that the server certificate should declare.
+ - Throws a [`TypeError`](../../globals/TypeError/TypeError.mdx) if the value is an empty string.
+ - `caCertificate` _: string_ _**optional**_
+ - The CA certificate to use when checking the validity of the backend.
+ - Throws a [`TypeError`](../../globals/TypeError/TypeError.mdx) if the value is an empty string.
+ - `ciphers` _: string_ _**optional**_
+ - List of OpenSSL ciphers to support for connections to this origin.
+ - If the backend server is not able to negotiate a connection meeting this constraint, a 503 response will be presented instead.
+ - [List of ciphers supported by Fastly](https://developer.fastly.com/learning/concepts/routing-traffic-to-fastly/#use-a-tls-configuration).
+ - Throws a [`TypeError`](../../globals/TypeError/TypeError.mdx) if the value is an empty string.
+ - `sniHostname` _: string_ _**optional**_
+ - The SNI hostname to use on connections to this backend.
+ - Throws a [`TypeError`](../../globals/TypeError/TypeError.mdx) if the value is an empty string.
+ - `clientCertificate` _: object_ _**optional**_
+ - The client certificate to provide for the TLS handshake
+ - `certificate` _: string_
+ - The PEM certificate string.
+ - `key` _: SecretStoreEntry_
+ - The `SecretStoreEntry` to use for the key, created via [`SecretStore.prototype.get`](../../fastly:secret-store/SecretStore/prototype/get.mdx) or alteratively via [`SecretStore.fromBytes`](../../fastly:secret-store/SecretStore/fromBytes.mdx).
+
+### Return value
+
+A new `Backend` object.
+
+## Examples
+
+In this example an implicit Dynamic Backend is created when making the fetch request to and the response is then returned to the client.
+
+import { allowDynamicBackends } from "fastly:experimental";
+allowDynamicBackends(true);
+async function app() {
+ // For any request, return the fastly homepage -- without defining a backend!
+ return fetch('https://www.fastly.com/');
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+`
+ },
+ "requests": [
+ {
+ "enableCluster": true,
+ "enableShield": false,
+ "enableWAF": false,
+ "method": "GET",
+ "path": "/status=200",
+ "useFreshCache": false,
+ "followRedirects": false,
+ "tests": "",
+ "delay": 0
+ }
+ ],
+ "srcVersion": 1
+}}>
+
+```js
+///
+import { allowDynamicBackends } from "fastly:experimental";
+allowDynamicBackends(true);
+async function app() {
+ // For any request, return the fastly homepage -- without defining a backend!
+ return fetch('https://www.fastly.com/');
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+```
+
+
+
+In this example an explicit Dynamic Backend is created and supplied to the fetch request, the response is then returned to the client.
+
+
+
+import { allowDynamicBackends } from "fastly:experimental";
+import { Backend } from "fastly:backend";
+allowDynamicBackends(true);
+async function app() {
+ // For any request, return the fastly homepage -- without defining a backend!
+ const backend = new Backend({
+ name: 'fastly',
+ target: 'fastly.com',
+ hostOverride: "www.fastly.com",
+ connectTimeout: 1000,
+ firstByteTimeout: 15000,
+ betweenBytesTimeout: 10000,
+ useSSL: true,
+ sslMinVersion: 1.3,
+ sslMaxVersion: 1.3,
+ });
+ return fetch('https://www.fastly.com/', {
+ backend // Here we are configuring this request to use the backend from above.
+ });
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+`
+ },
+ "requests": [
+ {
+ "enableCluster": true,
+ "enableShield": false,
+ "enableWAF": false,
+ "method": "GET",
+ "path": "/status=200",
+ "useFreshCache": false,
+ "followRedirects": false,
+ "tests": "",
+ "delay": 0
+ }
+ ],
+ "srcVersion": 1
+}}>
+
+```js
+///
+import { allowDynamicBackends } from "fastly:experimental";
+import { Backend } from "fastly:backend";
+allowDynamicBackends(true);
+async function app() {
+ // For any request, return the fastly homepage -- without defining a backend!
+ const backend = new Backend({
+ name: 'fastly',
+ target: 'fastly.com',
+ hostOverride: "www.fastly.com",
+ connectTimeout: 1000,
+ firstByteTimeout: 15000,
+ betweenBytesTimeout: 10000,
+ useSSL: true,
+ sslMinVersion: 1.3,
+ sslMaxVersion: 1.3,
+ });
+ return fetch('https://www.fastly.com/', {
+ backend // Here we are configuring this request to use the backend from above.
+ });
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+```
+
+
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/exists.mdx b/documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/exists.mdx
new file mode 100644
index 0000000000..d4d75b304f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/exists.mdx
@@ -0,0 +1,20 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# Backend.exists()
+
+The **`Backend.exists()`** method returns a boolean indicating if a Backend with the given name exists or not.
+
+## Syntax
+
+```js
+exists(name)
+```
+
+### Return value
+
+A boolean indicating if a Backend with the given name exists or not.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/fromName.mdx b/documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/fromName.mdx
new file mode 100644
index 0000000000..471b6699dc
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/fromName.mdx
@@ -0,0 +1,20 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# Backend.fromName()
+
+Returns the `Backend` instance with the given name, if one exists. If one does not exist, an error is thrown.
+
+## Syntax
+
+```js
+fromName(name)
+```
+
+### Return value
+
+A `Backend` instance.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/health.mdx b/documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/health.mdx
new file mode 100644
index 0000000000..e4b39c9012
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/health.mdx
@@ -0,0 +1,25 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# Backend.health()
+
+The **`Backend.health()`** method returns a string representing the health of the given Backend instance.
+
+## Syntax
+
+```js
+Backend.health(backend)
+```
+
+### Return value
+
+A string representing the health of the specified Backend value.
+
+Possible values are:
+- `"healthy"` - The backend's health check has succeeded, indicating the backend is working as expected and should receive requests.
+- `"unhealthy"` - The backend's health check has failed, indicating the backend is not working as expected and should not receive requests.
+- `"unknown"` - The backend does not have a health check configured.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/prototype/toName.mdx b/documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/prototype/toName.mdx
new file mode 100644
index 0000000000..f7667882de
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/prototype/toName.mdx
@@ -0,0 +1,20 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# Backend.prototype.toName()
+
+The **`toName()`** method returns the name associated with the `Backend` instance.
+
+## Syntax
+
+```js
+toName()
+```
+
+### Return value
+
+A string which contains the name of the Backend.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/prototype/toString.mdx b/documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/prototype/toString.mdx
new file mode 100644
index 0000000000..8dd7a21ec9
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:backend/Backend/prototype/toString.mdx
@@ -0,0 +1,87 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+import {Fiddle} from '@site/src/components/fiddle';
+
+# toString
+
+The **`toString()`** method returns a string representing the specified Backend value.
+
+## Syntax
+
+```js
+toString()
+```
+
+### Return value
+
+A string representing the specified Backend value.
+
+## Description
+
+The [Backend](../Backend.mdx) object overrides the `toString()` method of [Object](../../../globals//Object/Object.mdx); it does not inherit
+[`Object.prototype.toString()`](../../../globals/Object/prototype/toString.mdx). For [Backend](../Backend.mdx) values, the `toString` method returns the name given to the [Backend](../Backend.mdx) object during construction.
+
+The `toString()` method requires its `this` value to be a [Backend](../Backend.mdx) object.
+
+If the `this` value does not inherit from `Backend.prototype`, a [TypeError](../../../globals/TypeError/TypeError.mdx) is thrown.
+
+## Examples
+
+### Using toString()
+
+The following example logs the string value of a [Backend](../Backend.mdx) object:
+
+
+import { Backend } from "fastly:backend";
+async function app() {
+ const backend = new Backend({
+ name: "fastly",
+ target: "fastly.com",
+ });
+ console.log(backend.toString()); // "fastly"
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+`
+ },
+ "requests": [
+ {
+ "enableCluster": true,
+ "enableShield": false,
+ "enableWAF": false,
+ "method": "GET",
+ "path": "/status=200",
+ "useFreshCache": false,
+ "followRedirects": false,
+ "tests": "",
+ "delay": 0
+ }
+ ],
+ "srcVersion": 1
+}}>
+
+```js
+import { Backend } from "fastly:backend";
+async function app() {
+ const backend = new Backend({
+ name: "fastly",
+ target: "fastly.com",
+ });
+ console.log(backend.toString()); // "fastly"
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+```
+
+
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache-override/CacheOverride/CacheOverride.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache-override/CacheOverride/CacheOverride.mdx
new file mode 100644
index 0000000000..e1495191d5
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache-override/CacheOverride/CacheOverride.mdx
@@ -0,0 +1,132 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+import {Fiddle} from '@site/src/components/fiddle';
+
+# `CacheOverride()`
+
+The **`CacheOverride` constructor** lets you configure the caching behavior of a `Response`.
+
+Normally, the HTTP Headers on a [`Response`](../../globals/Response/Response.mdx) would control how the [`Response`](../../globals/Response/Response.mdx) is cached,
+but `CacheOverride` can be set on a [`Request`](../../globals/Request/Request.mdx), to define custom caching behavior.
+
+## Syntax
+
+```js
+new CacheOverride(mode)
+new CacheOverride(mode, init)
+```
+
+> **Note:** `CacheOverride()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+- `mode` _: string_
+ - Sets the cache override mode for a request
+ - If set to:
+ - `"none"`: Do not override the behavior specified in the origin response’s cache control headers.
+ - `"pass"`: Do not cache the response to this request, regardless of the origin response’s headers.
+ - `"override"`: Override particular cache control settings using the `CacheOverride` object's settings.
+
+- `init`
+
+ - : An Object which contains all the configuration options to apply to the newly created `CacheOverride`.
+
+ - `pci` _: boolean_ _**optional**_
+ - Override the caching behavior of this request to enable or disable PCI/HIPAA-compliant non-volatile caching.
+ - By default, this is `false`, which means the request may not be PCI/HIPAA-compliant. Set it to `true` to enable compliant caching.
+ - See the [Fastly PCI-Compliant Caching and Delivery documentation](https://docs.fastly.com/products/pci-compliant-caching-and-delivery) for details.
+
+ - `surrogateKey` _: string_ _**optional**_
+ - Override the caching behavior of this request to include the given surrogate key, provided as a header value.
+ - See the [Fastly surrogate keys guide](https://docs.fastly.com/en/guides/purging-api-cache-with-surrogate-keys) for details.
+ - `swr` _: number_ _**optional**_
+ - Override the caching behavior of this request to use the given `stale-while-revalidate` time, in seconds
+
+ - `ttl` _: number_ _**optional**_
+ - Override the caching behavior of this request to use the given Time to Live (TTL), in seconds.
+
+### Return value
+
+A new `CacheOverride` object.
+
+## Examples
+
+In this example we override the cache for all the requests prefixed /static/ to have a long TTL (Time To Live), and the home page to have a short TTL and a long SWR (Stale While Revalidate).
+
+
+import { CacheOverride } from "fastly:cache-override";
+// In this example we override the cache for all the requests prefixed /static/
+// to have a long TTL (Time To Live), and the home page to have a short TTL and
+// a long SWR (Stale While Revalidate).
+async function app (event) {
+ const path = (new URL(event.request.url)).pathname;
+ let cacheOverride;
+ if (path == '/') {
+ cacheOverride = new CacheOverride('override', {ttl: 10, swr: 86_400});
+ } else if (path.startsWith('/static/')) {
+ cacheOverride = new CacheOverride('override', {ttl: 86_400});
+ } else {
+ cacheOverride = new CacheOverride('none')
+ }
+ return fetch(event.request.url, {
+ cacheOverride,
+ backend: 'origin_0'
+ });
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+`
+ },
+ "requests": [
+ {
+ "enableCluster": true,
+ "enableShield": false,
+ "enableWAF": false,
+ "method": "GET",
+ "path": "/status=200",
+ "useFreshCache": false,
+ "followRedirects": false,
+ "tests": "",
+ "delay": 0
+ }
+ ],
+ "srcVersion": 1
+}}>
+
+```js
+///
+import { CacheOverride } from "fastly:cache-override";
+// In this example we override the cache for all the requests prefixed /static/
+// to have a long TTL (Time To Live), and the home page to have a short TTL and
+// a long SWR (Stale While Revalidate).
+async function app (event) {
+ const path = (new URL(event.request.url)).pathname;
+ let cacheOverride;
+ if (path == '/') {
+ cacheOverride = new CacheOverride('override', {ttl: 10, swr: 86_400});
+ } else if (path.startsWith('/static/')) {
+ cacheOverride = new CacheOverride('override', {ttl: 86_400});
+ } else {
+ cacheOverride = new CacheOverride('none')
+ }
+ return fetch(event.request.url, {
+ cacheOverride,
+ backend: 'origin_0'
+ });
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+```
+
+
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/age.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/age.mdx
new file mode 100644
index 0000000000..582010180c
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/age.mdx
@@ -0,0 +1,23 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# CacheEntry.age
+
+The **`age`** method of the `CacheEntry` interface returns the current age in milliseconds of the cached item.
+
+## Syntax
+
+```js
+age()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `number` which represents the current age in milliseconds of the cached item.
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/body.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/body.mdx
new file mode 100644
index 0000000000..820392aac0
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/body.mdx
@@ -0,0 +1,29 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# CacheEntry.body
+
+The **`body`** method of the `CacheEntry` interface retrieves the cached item contents as a `ReadableStream`.
+
+Only one stream can be active at a time for a given `CacheEntry`. An error will be thrown if a stream is already active for this `CacheEntry`.
+
+## Syntax
+
+```js
+body(options)
+```
+
+### Parameters
+
+- `options` _: object_ __optional__
+ - `start` _: number_
+ - The offset from which to start the range.
+ - `end` _: number_
+ - How long the range should be.
+
+### Return value
+
+A `ReadableStream` which contains the cached item contents.
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/close.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/close.mdx
new file mode 100644
index 0000000000..aade06781d
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/close.mdx
@@ -0,0 +1,23 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# CacheEntry.close
+
+The **`close`** method of the `CacheEntry` interface closes the connection to the cache for this `CacheEntry`.
+
+## Syntax
+
+```js
+close()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+`undefined`
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/hits.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/hits.mdx
new file mode 100644
index 0000000000..4e99b0933f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/hits.mdx
@@ -0,0 +1,25 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# CacheEntry.hits
+
+The **`hits`** method of the `CacheEntry` interface returns the amount of cache hits for the cached item.
+
+Note: this hit count only reflects the view of the server that supplied the cached item. Due to clustering, this count may vary between potentially many servers within the data center where the item is cached. See the [clustering documentation](https://developer.fastly.com/learning/vcl/clustering/) for details, though note that the exact caching architecture of Compute is different from VCL services.
+
+## Syntax
+
+```js
+hits()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `number` which represents the number of cache hits to this cached item.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/length.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/length.mdx
new file mode 100644
index 0000000000..b0eed58d1c
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/length.mdx
@@ -0,0 +1,27 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# CacheEntry.length
+
+The **`length`** method of the `CacheEntry` interface returns the size in bytes of the cached item, if known, otherwise returns `null` if the length is currently unknown.
+
+The length of the cached item may be unknown if the item is currently being streamed into the cache without a fixed length.
+
+## Syntax
+
+```js
+length()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `number` or `null` which represents the current length of the cached item.
+
+`null` is returned if the length is currently unknown.
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/maxAge.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/maxAge.mdx
new file mode 100644
index 0000000000..f80b3f9a58
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/maxAge.mdx
@@ -0,0 +1,23 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# CacheEntry.maxAge
+
+The **`maxAge`** method of the `CacheEntry` interface returns the time in milliseconds for which the cached item is considered fresh.
+
+## Syntax
+
+```js
+maxAge()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `number` which represents the time in milliseconds for which the cached item is considered fresh.
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/staleWhileRevalidate.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/staleWhileRevalidate.mdx
new file mode 100644
index 0000000000..ec636a112f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/staleWhileRevalidate.mdx
@@ -0,0 +1,23 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# CacheEntry.staleWhileRevalidate
+
+The **`staleWhileRevalidate`** method of the `CacheEntry` interface returns the time in milliseconds for which a cached item can safely be used despite being considered stale.
+
+## Syntax
+
+```js
+staleWhileRevalidate()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `number` which represents the time in milliseconds for which a cached item can safely be used despite being considered stale.
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/state.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/state.mdx
new file mode 100644
index 0000000000..c5f6526f3b
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/state.mdx
@@ -0,0 +1,23 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# CacheEntry.state
+
+The **`state`** method of the `CacheEntry` interface returns a `CacheState` instance which reflects the current state of this `CacheEntry` instance.
+
+## Syntax
+
+```js
+state()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `CacheState` instance which reflects the current state of this `CacheEntry` instance.
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/userMetadata.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/userMetadata.mdx
new file mode 100644
index 0000000000..d1a982de08
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheEntry/userMetadata.mdx
@@ -0,0 +1,23 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# CacheEntry.userMetadata
+
+The **`userMetadata`** method of the `CacheEntry` interface returns the user-controlled metadata associated with the cached item.
+
+## Syntax
+
+```js
+userMetadata()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+An `ArrayBuffer` which contains the user-controlled metadata associated with the cached item.
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheState/found.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheState/found.mdx
new file mode 100644
index 0000000000..60db770aa0
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheState/found.mdx
@@ -0,0 +1,25 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# CacheState.found
+
+The **`found`** method of the `CacheState` interface returns `true` if a cached item was located.
+
+Even if an cached item is found, the cached item might be stale and require updating. Use `mustInsertOrUpdate()` to determine whether this transaction client is expected to update the cached item.
+
+## Syntax
+
+```js
+found()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `boolean` which represents whether a cached item was located or not.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheState/mustInsertOrUpdate.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheState/mustInsertOrUpdate.mdx
new file mode 100644
index 0000000000..70460755f9
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheState/mustInsertOrUpdate.mdx
@@ -0,0 +1,24 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# CacheState.mustInsertOrUpdate
+
+The **`mustInsertOrUpdate`** method of the `CacheState` interface returns `true` if a fresh cache item was not found, and this transaction client is expected to insert a new item or update a stale item.
+
+
+## Syntax
+
+```js
+mustInsertOrUpdate()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `boolean` which represents whether a fresh cached item was found not.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheState/stale.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheState/stale.mdx
new file mode 100644
index 0000000000..22e0912d8f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheState/stale.mdx
@@ -0,0 +1,25 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# CacheState.stale
+
+The **`stale`** method of the `CacheState` interface returns `true` if the cached item is stale.
+
+A cached item is stale if its age is greater than its `maxAge` period.
+
+## Syntax
+
+```js
+stale()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `boolean` which represents whether the cached item is stale or not.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheState/usable.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheState/usable.mdx
new file mode 100644
index 0000000000..59d010e0b0
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/CacheState/usable.mdx
@@ -0,0 +1,25 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# CacheState.usable
+
+The **`usable`** method of the `CacheState` interface returns `true` if the cached item is usable.
+
+A cached item is usable if its age is less than the sum of the `maxAge` and `staleWhileRevalidate` periods.
+
+## Syntax
+
+```js
+usable()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `boolean` which represents whether a cached item is usable or not.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/CoreCache/insert.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/CoreCache/insert.mdx
new file mode 100644
index 0000000000..150d9c20f7
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/CoreCache/insert.mdx
@@ -0,0 +1,70 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# CoreCache.insert
+
+Performs a non-transactional insertion into the cache, returning a `FastlyBody` instance for providing the cached object itself.
+For the insertion to complete successfully, the object must be written into the returned `FastlyBody` instance, and then `FastlyBody.protoype.close` must be called.
+If `FastlyBody.prototype.close` does not get called, the insertion is considered incomplete, and any concurrent lookups that may be reading from the object as it is streamed into the cache may encounter a streaming error.
+
+Note: Like `CoreCache.lookup()`, `CoreCache.insert()` may race with concurrent lookups or insertions, and will unconditionally overwrite existing cached items rather than allowing for revalidation of an existing object.
+The transactional equivalent of this function is `TransactionCacheEntry.insert()`, which may only be called following a `CoreCache.transactionLookup()` call and the returned `CacheEntry` when has a state where `CacheState.mustInsertOrUpdate()` returns true.
+
+## Syntax
+
+```js
+insert(key, options)
+```
+
+### Parameters
+
+- `key` _: string_
+ - A cache key which is a string with a length of up to 8,135 that identify a cached item.
+ - The cache key may not uniquely identify an item; headers can be used to augment the key when multiple items are associated with the same key.
+- `options` _: object_
+ - `headers` _: HeadersInit_ __optional__
+ - The headers act as additional factors in object selection, and the choice of which headers to factor in is determined during insertion, via the `vary` property within `TransactionInsertOptions`.
+ - A lookup will succeed when there is at least one cached item that matches lookup’s `key`, and all of the lookup’s headers included in the cache items’ `vary` list match the corresponding headers in that cached item.
+ - A typical example is a cached HTTP response, where the request had an "Accept-Encoding" header. In that case, the origin server may or may not decide on a given encoding, and whether that same response is suitable for a request with a different (or missing) Accept-Encoding header is determined by whether Accept-Encoding is listed in Vary header in the origin’s response.
+ - Note: These headers are narrowly useful for implementing cache lookups incorporating the semantics of the HTTP Vary header.
+ - `maxAge` _: number_ __optional__
+ - Sets the “time to live” for the cache item in milliseconds: The time for which the item will be considered fresh.
+ - `vary` _: array_ __optional__
+ - Sets the list of headers that must match when looking up this cached item.
+ - `initialAge` _: number_ __optional__
+ - Sets the initial age of the cached item, in milliseconds, to be used in freshness calculations.
+ - The initial age is 0 by default.
+ - `staleWhileRevalidate` _: number_ __optional__
+ - Sets the stale-while-revalidate period, in milliseconds for the cached item, which is the time for which the item can be safely used despite being considered stale.
+ - Having a stale-while-revalidate period provides a signal that the cache should be updated (or its contents otherwise revalidated for freshness) asynchronously, while the stale cached item continues to be used, rather than blocking on updating the cached item.
+ - The methods `CacheState.protoype.usable` and `CacheState.protoype.stale` can be used to determine the current state of an item.
+ - The stale-while-revalidate period is 0 by default.
+ - `surrogateKeys` _: array_ __optional__
+ - Sets the surrogate keys that can be used for purging this cached item.
+ - Surrogate key purges are the only means to purge specific items from the cache. At least one surrogate key must be set in order to remove an item without performing a purge-all, waiting for the item’s TTL to elapse, or overwriting the item with insert().
+ - Surrogate keys must contain only printable ASCII characters (those between 0x21 and 0x7E, inclusive). Any invalid keys will be ignored.
+ - [See the Fastly surrogate keys guide for details.](https://docs.fastly.com/en/guides/working-with-surrogate-keys)
+ - `length` _: number_ __optional__
+ - Sets the size of the cached item, in bytes, when known prior to actually providing the bytes.
+ - It is preferable to provide a length, if possible.
+ - Clients that begin streaming the item’s contents before it is completely provided will see the promised length which allows them to, for example, use content-length instead of transfer-encoding: chunked if the item is used as the body of a Request or Response.
+ - `userMetadata` _: ArrayBufferView | ArrayBuffer | URLSearchParams | string_ __optional__
+ - Sets the user-defined metadata to associate with the cached item.
+ - `sensitive` _: boolean_ __optional__
+ - Enable or disable PCI/HIPAA-compliant non-volatile caching.
+ - By default, this is false.
+ - [See the Fastly PCI-Compliant Caching and Delivery documentation for details.](https://docs.fastly.com/products/pci-compliant-caching-and-delivery)
+
+### Return value
+
+Returns a `FastlyBody`.
+
+### Exceptions
+
+- If the provided `key`:
+ - Cannot be coerced to a string
+ - Is an empty string
+ - Is longer than 8135 characters
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/CoreCache/lookup.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/CoreCache/lookup.mdx
new file mode 100644
index 0000000000..23e15615fb
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/CoreCache/lookup.mdx
@@ -0,0 +1,48 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# CoreCache.lookup
+
+Perform a non-transactional lookup into the cache, returning a CacheEntry if a usable cached item was found.
+A cached item is usable if its age is less than the sum of its TTL and its stale-while-revalidate period. Items beyond that age are unusably stale.
+
+Note: A non-transactional lookup will not attempt to coordinate with any concurrent cache lookups.
+If two instances of the service perform a lookup at the same time for the same cache key, and the item is not yet cached, they will both return `null`.
+Without further coordination, they may both end up performing the work needed to insert() the item (which usually involves origin requests and/or computation) and racing with each other to insert.
+To resolve such races between concurrent lookups, use `CoreCache.transactionLookup()` instead.
+
+## Syntax
+
+```js
+lookup(key, options)
+```
+
+### Parameters
+
+- `key` _: string_
+ - A cache key which is a string with a length of up to 8,135 that identify a cached item.
+ - The cache key may not uniquely identify an item; headers can be used to augment the key when multiple items are associated with the same key.
+
+- `options` _: object_
+ - `headers` _: HeadersInit_ __optional__
+ - The headers act as additional factors in object selection, and the choice of which headers to factor in is determined during insertion, via the `vary` property within `TransactionInsertOptions`.
+ - A lookup will succeed when there is at least one cached item that matches lookup’s `key`, and all of the lookup’s headers included in the cache items’ `vary` list match the corresponding headers in that cached item.
+ - A typical example is a cached HTTP response, where the request had an "Accept-Encoding" header. In that case, the origin server may or may not decide on a given encoding, and whether that same response is suitable for a request with a different (or missing) Accept-Encoding header is determined by whether Accept-Encoding is listed in Vary header in the origin’s response.
+ - Note: These headers are narrowly useful for implementing cache lookups incorporating the semantics of the HTTP Vary header.
+
+### Return value
+
+Returns `CacheEntry` if a usable cached item was found, otherwise returns `null`.
+
+### Exceptions
+
+- `TypeError`
+ - If the provided `key`:
+ - Is an empty string
+ - Cannot be coerced to a string
+ - Is longer than 8135 characters
+
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/CoreCache/transactionLookup.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/CoreCache/transactionLookup.mdx
new file mode 100644
index 0000000000..b6d1bfbcd2
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/CoreCache/transactionLookup.mdx
@@ -0,0 +1,52 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# CoreCache.transactionLookup
+
+Perform a transactional lookup into the cache, returning a `TransactionCacheEntry` instance.
+
+Transactions coordinate between concurrent actions on the same cache key, incorporating concepts of [request collapsing](https://developer.fastly.com/learning/concepts/request-collapsing/) and [revalidation](https://developer.fastly.com/learning/concepts/stale/), though at a lower level that does not automatically interpret HTTP semantics.
+
+Request Collapsing:
+If there are multiple concurrent calls to `CoreCache.transactionLookup()` for the same item and that item is not present,
+just one of the callers will be instructed to insert the item into the cache as part of the transaction.
+The other callers will block until the metadata for the item has been inserted, and can then begin streaming its contents out of the cache at the same time that the inserting caller streams them into the cache.
+
+Revalidation:
+Similarly, if an item is usable but stale, and multiple callers attempt a `CoreCache.transactionLookup()` concurrently, they will all be given access to the stale item, but only one will be designated to perform an asynchronous update (or insertion) to freshen the item in the cache.
+
+## Syntax
+
+```js
+transactionLookup(key, options)
+```
+
+### Parameters
+
+- `key` _: string_
+ - A cache key which is a string with a length of up to 8,135 that identify a cached item.
+ - The cache key may not uniquely identify an item; headers can be used to augment the key when multiple items are associated with the same key.
+
+- `options` _: object_
+ - `headers` _: HeadersInit_ __optional__
+ - The headers act as additional factors in object selection, and the choice of which headers to factor in is determined during insertion, via the `vary` property within `TransactionInsertOptions`.
+ - A lookup will succeed when there is at least one cached item that matches lookup’s `key`, and all of the lookup’s headers included in the cache items’ `vary` list match the corresponding headers in that cached item.
+ - A typical example is a cached HTTP response, where the request had an "Accept-Encoding" header. In that case, the origin server may or may not decide on a given encoding, and whether that same response is suitable for a request with a different (or missing) Accept-Encoding header is determined by whether Accept-Encoding is listed in Vary header in the origin’s response.
+ - Note: These headers are narrowly useful for implementing cache lookups incorporating the semantics of the HTTP Vary header.
+
+### Return value
+
+Returns an instance of `TransactionCacheEntry`.
+
+### Exceptions
+
+- `TypeError`
+ - If the provided `key`:
+ - Is an empty string
+ - Cannot be coerced to a string
+ - Is longer than 8135 characters
+
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCache/SimpleCache.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCache/SimpleCache.mdx
new file mode 100644
index 0000000000..f4bf28b99e
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCache/SimpleCache.mdx
@@ -0,0 +1,47 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# `SimpleCache`
+
+The **`SimpleCache` class** provides a simplified interface to inserting and retrieving entries from Fastly's Cache.
+
+All the methods on the class are static methods, there are no instance methods.
+
+
+## Examples
+
+In this example we attempt to retrieve an entry from the Fastly Cache, if the entry does not exist, we create the content and insert it into the Fastly Cache before finally returning.
+
+```js
+///
+
+import { SimpleCache } from 'fastly:cache';
+
+addEventListener('fetch', event => event.respondWith(app(event)));
+
+async function app(event) {
+ const path = new URL(event.request.url).pathname;
+ let page = SimpleCache.getOrSet(path, async () => {
+ return {
+ value: await render(path),
+ // Store the page in the cache for 1 minute.
+ ttl: 60
+ }
+ });
+ return new Response(page, {
+ headers: {
+ 'content-type': 'text/plain;charset=UTF-8'
+ }
+ });
+}
+
+async function render(path) {
+ // expensive/slow function which constructs and returns the contents for a given path
+ await new Promise(resolve => setTimeout(resolve, 10_000));
+ return path;
+}
+
+```
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCache/get.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCache/get.mdx
new file mode 100644
index 0000000000..f547ac00d2
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCache/get.mdx
@@ -0,0 +1,58 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# SimpleCache.get
+
+▸ **get**(): `string`
+
+Gets the entry associated with the key `key` from the cache.
+
+## Syntax
+
+```js
+get(key)
+```
+
+### Parameters
+
+- `key` _: string_
+ - The key to retrieve from within the cache.
+
+### Return value
+
+If the key does not exist in the cache, this returns `null`.
+
+If the key does exist in the cache, this returns a `SimpleCacheEntry`.
+
+### Exceptions
+
+- `TypeError`
+ - If the provided `key`:
+ - Is an empty string
+ - Cannot be coerced to a string
+ - Is longer than 8135 characters
+
+## Examples
+
+In this example we attempt to retrieve an entry from the Fastly Cache, and return a message stating whether the entry was in the Fastly Cache or not.
+
+```js
+///
+
+import { SimpleCache } from 'fastly:cache';
+
+addEventListener('fetch', event => event.respondWith(app(event)));
+
+async function app(event) {
+ const path = new URL(event.request.url).pathname;
+ let page = SimpleCache.get(path);
+ return new Response(page ? `${path} is in the cache` : `${path} is not in the cache`, {
+ headers: {
+ 'content-type': 'text/plain;charset=UTF-8'
+ }
+ });
+}
+```
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCache/getOrSet.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCache/getOrSet.mdx
new file mode 100644
index 0000000000..bb85d24c86
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCache/getOrSet.mdx
@@ -0,0 +1,81 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# SimpleCache.getOrSet
+
+The **`getOrSet()`** method attempts to get an entry from the cache for the supplied `key`. If no entry is found (or has expired), the supplied `set` function is executed and its result is inserted into the cache under the supplied `key` and for the supplied `ttl` (Time-To-Live) duration, provided in seconds.
+
+## Syntax
+
+```js
+getOrSet(key, set)
+getOrSet(key, set, length)
+```
+
+### Parameters
+
+- `key` _: string_
+ - The key to lookup and/or store the supplied entry under within the cache.
+- `set` _: Function_
+ - The function to execute if and only if the cache does not have a usable entry for the supplied `key`.
+ The function should return a Promise which resolves with the following interface:
+ - `value` _: ArrayBuffer | TypedArray | DataView | ReadableStream | URLSearchParams | String | string literal_
+ - The value to store within the cache.
+ - `ttl` _: number_
+ - The maximum number of seconds to store the supplied entry in the cache.
+ - `length` _: number_ __optional__
+ - The length of the value being stored within the cache. This is only used when the `value` is a `ReadableStream`.
+
+### Return value
+
+Returns a `SimpleCacheEntry`.
+
+### Exceptions
+
+- If the provided `key`:
+ - Cannot be coerced to a string
+ - Is an empty string
+ - Is longer than 8135 characters
+- If the provided `ttl`:
+ - Cannot be coerced to a number
+ - Is a negative number
+ - Is `NaN`
+ - Is Inifinity
+
+## Examples
+
+In this example we attempt to retrieve an entry from the Fastly Cache. If the entry does not exist, we create the content and insert it into the Fastly Cache before finally returning.
+
+```js
+///
+
+import { SimpleCache } from 'fastly:cache';
+
+addEventListener('fetch', event => event.respondWith(app(event)));
+
+async function app(event) {
+ const path = new URL(event.request.url).pathname;
+ let page = SimpleCache.getOrSet(path, async () => {
+ return {
+ value: await render(path),
+ // Store the page in the cache for 1 minute.
+ ttl: 60
+ }
+ });
+ return new Response(page, {
+ headers: {
+ 'content-type': 'text/plain;charset=UTF-8'
+ }
+ });
+}
+
+async function render(path) {
+ // expensive/slow function which constructs and returns the contents for a given path
+ await new Promise(resolve => setTimeout(resolve, 10_000));
+ return path;
+}
+
+```
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCache/purge.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCache/purge.mdx
new file mode 100644
index 0000000000..44ac6ff92c
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCache/purge.mdx
@@ -0,0 +1,81 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# SimpleCache.purge
+
+purge the entry associated with the key `key` from the cache.
+
+## Syntax
+
+```js
+purge(key, options)
+```
+
+### Parameters
+
+- `key` _: string_
+ - The key to purge from within the cache.
+
+- `options` _: object_
+ - `scope` _: string_
+ - : Where to purge the content from.
+ - Possible values are:
+ - "global" - This will remove the content from all of Fastly.
+ - "pop" - This will remove the content from the POP that contains the currently executing instance.
+
+### Return value
+
+Returns `undefined`.
+
+### Exceptions
+
+- `TypeError`
+ - If the provided `key`:
+ - Is an empty string
+ - Cannot be coerced to a string
+ - Is longer than 8135 characters
+
+## Examples
+
+In this example, when a request contains a `purge` querystring parameter, we purge the an entry from the cache.
+
+```js
+///
+
+import { SimpleCache } from 'fastly:cache';
+
+addEventListener('fetch', event => event.respondWith(app(event)));
+
+async function app(event) {
+ const url = new URL(event.request.url);
+ const path = url.pathname;
+ if (url.searchParams.has('purge')) {
+ SimpleCache.purge(path, { scope: "global" });
+ return new Response(page, { status: 204 });
+ }
+
+ let page = SimpleCache.getOrSet(path, async () => {
+ return {
+ value: await render(path),
+ // Store the page in the cache for 1 minute.
+ ttl: 60
+ }
+ });
+ return new Response(page, {
+ headers: {
+ 'content-type': 'text/plain;charset=UTF-8'
+ }
+ });
+}
+
+async function render(path) {
+ // expensive/slow function which constructs and returns the contents for a given path
+ await new Promise(resolve => setTimeout(resolve, 10_000));
+ return path;
+}
+
+```
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/arrayBuffer.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/arrayBuffer.mdx
new file mode 100644
index 0000000000..80deed4947
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/arrayBuffer.mdx
@@ -0,0 +1,25 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# SimpleCacheEntry.arrayBuffer()
+
+The **`arrayBuffer()`** method of the `SimpleCacheEntry` interface
+takes the instance's stream and reads it to completion. It returns a promise
+that resolves with an `ArrayBuffer`.
+
+## Syntax
+
+```js
+arrayBuffer()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A promise that resolves with an `ArrayBuffer`.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/body.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/body.mdx
new file mode 100644
index 0000000000..b9627e9091
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/body.mdx
@@ -0,0 +1,14 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# SimpleCacheEntry.body
+
+The **`body`** read-only property of the `SimpleCacheEntry` interface is a `ReadableStream` of the instance's contents.
+
+## Value
+
+A `ReadableStream`.
+
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/bodyUsed.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/bodyUsed.mdx
new file mode 100644
index 0000000000..8f44f22fd0
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/bodyUsed.mdx
@@ -0,0 +1,13 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# SimpleCacheEntry.bodyUsed
+
+The **`bodyUsed`** read-only property of the `SimpleCacheEntry` interface is a boolean value that indicates whether the body has been read yet.
+
+## Value
+
+A boolean value.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/json.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/json.mdx
new file mode 100644
index 0000000000..84c6ca33a3
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/json.mdx
@@ -0,0 +1,28 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# SimpleCacheEntry.json()
+
+The **`json()`** method of the `SimpleCacheEntry` interface takes
+a `SimpleCacheEntry` stream and reads it to completion. It returns a promise which
+resolves with the result of parsing the body text as JSON.
+
+Note that despite the method being named `json()`, the result is not JSON but is instead the result of taking JSON as input and parsing it to produce a JavaScript object.
+
+## Syntax
+
+```js
+json()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `Promise` that resolves to a JavaScript object. This object could be
+anything that can be represented by JSON — an object, an array, a string, a number…
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/text.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/text.mdx
new file mode 100644
index 0000000000..7f8cb74819
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/SimpleCacheEntry/text.mdx
@@ -0,0 +1,26 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# SimpleCacheEntry.text()
+
+The **`text()`** method of the `SimpleCacheEntry` interface takes the instance's stream and reads it to completion.
+It returns a promise that resolves with a `String`.
+The result is _always_ decoded using UTF-8.
+
+## Syntax
+
+```js
+text()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A Promise that resolves with a `String`.
+
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/age.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/age.mdx
new file mode 100644
index 0000000000..276950a778
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/age.mdx
@@ -0,0 +1,23 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# TransactionCacheEntry.age
+
+The **`age`** method of the `TransactionCacheEntry` interface returns the current age in milliseconds of the cached item.
+
+## Syntax
+
+```js
+age()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `number` which represents the current age in milliseconds of the cached item.
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/body.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/body.mdx
new file mode 100644
index 0000000000..7ae107cde1
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/body.mdx
@@ -0,0 +1,29 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# TransactionCacheEntry.body
+
+The **`body`** method of the `TransactionCacheEntry` interface retrieves the cached item contents as a `ReadableStream`.
+
+Only one stream can be active at a time for a given `TransactionCacheEntry`. An error will be thrown if a stream is already active for this `TransactionCacheEntry`.
+
+## Syntax
+
+```js
+body(options)
+```
+
+### Parameters
+
+- `options` _: object_ __optional__
+ - `start` _: number_
+ - The offset from which to start the range.
+ - `end` _: number_
+ - How long the range should be.
+
+### Return value
+
+A `ReadableStream` which contains the cached item contents.
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/cancel.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/cancel.mdx
new file mode 100644
index 0000000000..08a127d0e2
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/cancel.mdx
@@ -0,0 +1,24 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# TransactionCacheEntry.cancel
+
+The **`cancel`** method of the `TransactionCacheEntry` interface cancels an obligation to provide an object to the cache.
+
+
+## Syntax
+
+```js
+cancel()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+`undefined`
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/close.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/close.mdx
new file mode 100644
index 0000000000..eb907c4305
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/close.mdx
@@ -0,0 +1,23 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# TransactionCacheEntry.close
+
+The **`close`** method of the `TransactionCacheEntry` interface closes the connection to the cache for this `TransactionCacheEntry`.
+
+## Syntax
+
+```js
+close()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+`undefined`
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/hits.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/hits.mdx
new file mode 100644
index 0000000000..3df3d77dba
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/hits.mdx
@@ -0,0 +1,25 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# TransactionCacheEntry.hits
+
+The **`hits`** method of the `TransactionCacheEntry` interface returns the amount of cache hits for the cached item.
+
+Note: this hit count only reflects the view of the server that supplied the cached item. Due to clustering, this count may vary between potentially many servers within the data center where the item is cached. See the [clustering documentation](https://developer.fastly.com/learning/vcl/clustering/) for details, though note that the exact caching architecture of Compute is different from VCL services.
+
+## Syntax
+
+```js
+hits()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `number` which represents the number of cache hits to this cached item.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/insert.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/insert.mdx
new file mode 100644
index 0000000000..40408eb12c
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/insert.mdx
@@ -0,0 +1,52 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# TransactionCacheEntry.insert
+
+Perform a transactional cache insertion, returning a `FastlyBody` instance for providing the cached object itself.
+
+This method should only be called when `TransactionCacheEntry.state().mustInsertOrUpdate()` is true; otherwise, an error will be thrown when attempting to perform the insertion.
+
+## Syntax
+
+```js
+insert(options)
+```
+
+### Parameters
+
+- `options` _: object_
+ - `maxAge` _: number_ __optional__
+ - Sets the “time to live” for the cache item in milliseconds: The time for which the item will be considered fresh.
+ - `vary` _: array_ __optional__
+ - Sets the list of headers that must match when looking up this cached item.
+ - `initialAge` _: number_ __optional__
+ - Sets the initial age of the cached item, in milliseconds, to be used in freshness calculations.
+ - The initial age is 0 by default.
+ - `staleWhileRevalidate` _: number_ __optional__
+ - Sets the stale-while-revalidate period, in milliseconds for the cached item, which is the time for which the item can be safely used despite being considered stale.
+ - Having a stale-while-revalidate period provides a signal that the cache should be updated (or its contents otherwise revalidated for freshness) asynchronously, while the stale cached item continues to be used, rather than blocking on updating the cached item.
+ - The methods `CacheState.protoype.usable` and `CacheState.protoype.stale` can be used to determine the current state of an item.
+ - The stale-while-revalidate period is 0 by default.
+ - `surrogateKeys` _: array_ __optional__
+ - Sets the surrogate keys that can be used for purging this cached item.
+ - Surrogate key purges are the only means to purge specific items from the cache. At least one surrogate key must be set in order to remove an item without performing a purge-all, waiting for the item’s TTL to elapse, or overwriting the item with insert().
+ - Surrogate keys must contain only printable ASCII characters (those between 0x21 and 0x7E, inclusive). Any invalid keys will be ignored.
+ - [See the Fastly surrogate keys guide for details.](https://docs.fastly.com/en/guides/working-with-surrogate-keys)
+ - `length` _: number_ __optional__
+ - Sets the size of the cached item, in bytes, when known prior to actually providing the bytes.
+ - It is preferable to provide a length, if possible.
+ - Clients that begin streaming the item's contents before it is completely provided will see the promised length which allows them to, for example, use content-length instead of transfer-encoding: chunked if the item is used as the body of a Request or Response.
+ - `userMetadata` _: ArrayBufferView | ArrayBuffer | URLSearchParams | string_ __optional__
+ - Sets the user-defined metadata to associate with the cached item.
+ - `sensitive` _: boolean_ __optional__
+ - Enable or disable PCI/HIPAA-compliant non-volatile caching.
+ - By default, this is false.
+ - [See the Fastly PCI-Compliant Caching and Delivery documentation for details.](https://docs.fastly.com/products/pci-compliant-caching-and-delivery)
+
+### Return value
+
+Returns a `FastlyBody`.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/insertAndStreamBack.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/insertAndStreamBack.mdx
new file mode 100644
index 0000000000..3cd423e955
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/insertAndStreamBack.mdx
@@ -0,0 +1,53 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# TransactionCacheEntry.insertAndStreamBack
+
+Perform a transaction cache insertion, returning a `FastlyBody` instance for providing the cached object itself, and a `CacheEntry` instance which can be used to stream out the newly-inserted cache item.
+
+For the insertion to complete successfully, the object must be written into the returned `FastlyBody` instance, and then `FastlyBody.protoype.close` must be called.
+If `FastlyBody.prototype.close` does not get called, the insertion is considered incomplete, and any concurrent lookups that may be reading from the object as it is streamed into the cache may encounter a streaming error.
+
+## Syntax
+
+```js
+insertAndStreamBack(options)
+```
+
+### Parameters
+
+- `options` _: object_
+ - `maxAge` _: number_ __optional__
+ - Sets the “time to live” for the cache item in milliseconds: The time for which the item will be considered fresh.
+ - `vary` _: array_ __optional__
+ - Sets the list of headers that must match when looking up this cached item.
+ - `initialAge` _: number_ __optional__
+ - Sets the initial age of the cached item, in milliseconds, to be used in freshness calculations.
+ - The initial age is 0 by default.
+ - `staleWhileRevalidate` _: number_ __optional__
+ - Sets the stale-while-revalidate period, in milliseconds for the cached item, which is the time for which the item can be safely used despite being considered stale.
+ - Having a stale-while-revalidate period provides a signal that the cache should be updated (or its contents otherwise revalidated for freshness) asynchronously, while the stale cached item continues to be used, rather than blocking on updating the cached item.
+ - The methods `CacheState.protoype.usable` and `CacheState.protoype.stale` can be used to determine the current state of an item.
+ - The stale-while-revalidate period is 0 by default.
+ - `surrogateKeys` _: array_ __optional__
+ - Sets the surrogate keys that can be used for purging this cached item.
+ - Surrogate key purges are the only means to purge specific items from the cache. At least one surrogate key must be set in order to remove an item without performing a purge-all, waiting for the item’s TTL to elapse, or overwriting the item with insert().
+ - Surrogate keys must contain only printable ASCII characters (those between 0x21 and 0x7E, inclusive). Any invalid keys will be ignored.
+ - [See the Fastly surrogate keys guide for details.](https://docs.fastly.com/en/guides/working-with-surrogate-keys)
+ - `length` _: number_ __optional__
+ - Sets the size of the cached item, in bytes, when known prior to actually providing the bytes.
+ - It is preferable to provide a length, if possible.
+ - Clients that begin streaming the item's contents before it is completely provided will see the promised length which allows them to, for example, use content-length instead of transfer-encoding: chunked if the item is used as the body of a Request or Response.
+ - `userMetadata` _: ArrayBufferView | ArrayBuffer | URLSearchParams | string_ __optional__
+ - Sets the user-defined metadata to associate with the cached item.
+ - `sensitive` _: boolean_ __optional__
+ - Enable or disable PCI/HIPAA-compliant non-volatile caching.
+ - By default, this is false.
+ - [See the Fastly PCI-Compliant Caching and Delivery documentation for details.](https://docs.fastly.com/products/pci-compliant-caching-and-delivery)
+
+### Return value
+
+Returns an array where the first item is a `FastlyBody` instance and the second item is a `CacheEntry` instance.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/length.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/length.mdx
new file mode 100644
index 0000000000..c1a33ff3fb
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/length.mdx
@@ -0,0 +1,27 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# TransactionCacheEntry.length
+
+The **`length`** method of the `TransactionCacheEntry` interface returns the size in bytes of the cached item, if known, otherwise returns `null` if the length is currently unknown.
+
+The length of the cached item may be unknown if the item is currently being streamed into the cache without a fixed length.
+
+## Syntax
+
+```js
+length()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `number` or `null` which represents the current length of the cached item.
+
+`null` is returned if the length is currently unknown.
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/maxAge.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/maxAge.mdx
new file mode 100644
index 0000000000..cc447c7e91
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/maxAge.mdx
@@ -0,0 +1,23 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# TransactionCacheEntry.maxAge
+
+The **`maxAge`** method of the `TransactionCacheEntry` interface returns the time in milliseconds for which the cached item is considered fresh.
+
+## Syntax
+
+```js
+maxAge()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `number` which represents the time in milliseconds for which the cached item is considered fresh.
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/staleWhileRevalidate.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/staleWhileRevalidate.mdx
new file mode 100644
index 0000000000..a02a712fe6
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/staleWhileRevalidate.mdx
@@ -0,0 +1,23 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# TransactionCacheEntry.staleWhileRevalidate
+
+The **`staleWhileRevalidate`** method of the `TransactionCacheEntry` interface returns the time in milliseconds for which a cached item can safely be used despite being considered stale.
+
+## Syntax
+
+```js
+staleWhileRevalidate()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `number` which represents the time in milliseconds for which a cached item can safely be used despite being considered stale.
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/state.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/state.mdx
new file mode 100644
index 0000000000..14689db330
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/state.mdx
@@ -0,0 +1,23 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# TransactionCacheEntry.state
+
+The **`state`** method of the `TransactionCacheEntry` interface returns a `CacheState` instance which reflects the current state of this `TransactionCacheEntry` instance.
+
+## Syntax
+
+```js
+state()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `CacheState` instance which reflects the current state of this `TransactionCacheEntry` instance.
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/update.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/update.mdx
new file mode 100644
index 0000000000..d04ef0ea56
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/update.mdx
@@ -0,0 +1,49 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# TransactionCacheEntry.update
+
+Perform an update of the cache item's metadata.
+
+## Syntax
+
+```js
+update(options)
+```
+
+### Parameters
+
+- `key` _: string_
+ - A cache key which is a string with a length of up to 8,135 that identify a cached item.
+ - The cache key may not uniquely identify an item; headers can be used to augment the key when multiple items are associated with the same key.
+- `options` _: object_
+ - `maxAge` _: number_ __optional__
+ - Sets the “time to live” for the cache item in milliseconds: The time for which the item will be considered fresh.
+ - `vary` _: array_ __optional__
+ - Sets the list of headers that must match when looking up this cached item.
+ - `initialAge` _: number_ __optional__
+ - Sets the initial age of the cached item, in milliseconds, to be used in freshness calculations.
+ - The initial age is 0 by default.
+ - `staleWhileRevalidate` _: number_ __optional__
+ - Sets the stale-while-revalidate period, in milliseconds for the cached item, which is the time for which the item can be safely used despite being considered stale.
+ - Having a stale-while-revalidate period provides a signal that the cache should be updated (or its contents otherwise revalidated for freshness) asynchronously, while the stale cached item continues to be used, rather than blocking on updating the cached item.
+ - The methods `CacheState.protoype.usable` and `CacheState.protoype.stale` can be used to determine the current state of an item.
+ - The stale-while-revalidate period is 0 by default.
+ - `surrogateKeys` _: array_ __optional__
+ - Sets the surrogate keys that can be used for purging this cached item.
+ - Surrogate key purges are the only means to purge specific items from the cache. At least one surrogate key must be set in order to remove an item without performing a purge-all, waiting for the item’s TTL to elapse, or overwriting the item with insert().
+ - Surrogate keys must contain only printable ASCII characters (those between 0x21 and 0x7E, inclusive). Any invalid keys will be ignored.
+ - [See the Fastly surrogate keys guide for details.](https://docs.fastly.com/en/guides/working-with-surrogate-keys)
+ - `length` _: number_ __optional__
+ - Sets the size of the cached item, in bytes, when known prior to actually providing the bytes.
+ - It is preferable to provide a length, if possible.
+ - Clients that begin streaming the item's contents before it is completely provided will see the promised length which allows them to, for example, use content-length instead of transfer-encoding: chunked if the item is used as the body of a Request or Response.
+ - `userMetadata` _: ArrayBufferView | ArrayBuffer | URLSearchParams | string_ __optional__
+ - Sets the user-defined metadata to associate with the cached item.
+
+### Return value
+
+`undefined`
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/userMetadata.mdx b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/userMetadata.mdx
new file mode 100644
index 0000000000..1689eb8744
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:cache/TransactionCacheEntry/userMetadata.mdx
@@ -0,0 +1,23 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# TransactionCacheEntry.userMetadata
+
+The **`userMetadata`** method of the `TransactionCacheEntry` interface returns the user-controlled metadata associated with the cached item.
+
+## Syntax
+
+```js
+userMetadata()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+An `ArrayBuffer` which contains the user-controlled metadata associated with the cached item.
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:config-store/ConfigStore/ConfigStore.mdx b/documentation/versioned_docs/version-3.21.3/fastly:config-store/ConfigStore/ConfigStore.mdx
new file mode 100644
index 0000000000..b5935719f1
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:config-store/ConfigStore/ConfigStore.mdx
@@ -0,0 +1,96 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+import {Fiddle} from '@site/src/components/fiddle';
+
+# `ConfigStore()`
+
+The **`ConfigStore` constructor** lets you access a specific [Fastly Edge Dictionary](https://docs.fastly.com/en/guides/about-edge-dictionaries).
+
+> **Note**: Can only be used when processing requests, not during build-time initialization.
+
+## Syntax
+
+```js
+new ConfigStore(name);
+```
+
+> **Note:** `ConfigStore()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+- `name` _: string_
+ - The name of the [Fastly Edge Dictionary](https://docs.fastly.com/en/guides/about-edge-dictionaries) that this `ConfigStore` instance should provide access to.
+
+### Return value
+
+A new `ConfigStore` object.
+
+### Exceptions
+
+- `TypeError`
+ - Thrown if no Config Store exists with the provided name
+ - Thrown if the provided name is longer than 255 in length
+ - Thrown if the provided name is an empty string
+ - Thrown if the provided name does not start with an ascii alphabetical character
+ - Thrown if the provided name does not contain only ascii alphanumeric, underscore, and whitespace characters
+
+## Examples
+
+In this example we have an Edge Dictionary named "animals" and we return the "cat" entry as the response body to the client.
+
+
+import { ConfigStore } from "fastly:config-store";
+async function app (event) {
+ const config = new ConfigStore('animals');
+ return new Response(config.get('cat'));
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+`
+ },
+ "requests": [
+ {
+ "enableCluster": true,
+ "enableShield": false,
+ "enableWAF": false,
+ "data": {
+ "dictionaries": {
+ "animals": {
+ "cat": "meow"
+ }
+ }
+ },
+ "method": "GET",
+ "path": "/status=200",
+ "useFreshCache": false,
+ "followRedirects": false,
+ "tests": "",
+ "delay": 0
+ }
+ ],
+ "srcVersion": 1
+}}>
+
+```js
+///
+import { ConfigStore } from "fastly:config-store";
+async function app (event) {
+ const config = new ConfigStore('animals');
+ return new Response(config.get('cat'));
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+```
+
+
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:config-store/ConfigStore/prototype/get.mdx b/documentation/versioned_docs/version-3.21.3/fastly:config-store/ConfigStore/prototype/get.mdx
new file mode 100644
index 0000000000..295fb3acf7
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:config-store/ConfigStore/prototype/get.mdx
@@ -0,0 +1,97 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+import {Fiddle} from '@site/src/components/fiddle';
+
+# ConfigStore.prototype.get
+
+The **`get()`** method returns the value associated with the provided key in the config-store. If the provided key does not exist in the ConfigStore then this returns `null`.
+
+## Syntax
+
+```js
+get(key)
+```
+
+### Parameters
+
+- `key` _: string_
+ - The key to retrieve from the dictionary.
+
+### Return value
+
+A `string` representing the specified ConfigStore value or `null` if the key does not exist in the ConfigStore
+
+## Description
+
+Get a value for a key in the config-store. If the provided key does not exist in the ConfigStore then this returns `null`.
+
+The `get()` method requires its `this` value to be a [`ConfigStore`](../../../fastly%3Aconfig-store/ConfigStore/ConfigStore.mdx) object.
+
+If the `this` value does not inherit from `ConfigStore.prototype`, a [`TypeError`](../../../globals/TypeError/TypeError.mdx) is thrown.
+
+### Exceptions
+
+- `TypeError`
+ - Thrown if the provided key is longer than 255 in length
+ - Thrown if the provided key is an empty string
+
+## Examples
+
+In this example we have an Edge Dictionary named "animals" and we return the "cat" entry as the response body to the client.
+
+
+import { ConfigStore } from "fastly:config-store";
+async function app (event) {
+ const config = new ConfigStore('animals');
+ return new Response(config.get('cat'));
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+`
+ },
+ "requests": [
+ {
+ "enableCluster": true,
+ "enableShield": false,
+ "enableWAF": false,
+ "data": {
+ "dictionaries": {
+ "animals": {
+ "cat": "meow"
+ }
+ }
+ },
+ "method": "GET",
+ "path": "/status=200",
+ "useFreshCache": false,
+ "followRedirects": false,
+ "tests": "",
+ "delay": 0
+ }
+ ],
+ "srcVersion": 1
+}}>
+
+```js
+///
+import { ConfigStore } from "fastly:config-store";
+async function app (event) {
+ const config = new ConfigStore('animals');
+ return new Response(config.get('cat'));
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+```
+
+
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:device/Device/lookup.mdx b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/lookup.mdx
new file mode 100644
index 0000000000..71db040fc9
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/lookup.mdx
@@ -0,0 +1,22 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# Device.lookup()
+
+Look up the data associated with a particular User-Agent string.
+
+
+## Syntax
+
+```js
+lookup(userAgent)
+```
+
+### Return value
+
+If there is data associated with the User-Agent, a `Device` instance is returned.
+Otherwise, `null` is returned.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/brand.mdx b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/brand.mdx
new file mode 100644
index 0000000000..0212b64fff
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/brand.mdx
@@ -0,0 +1,16 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Device.prototype.brand
+
+The read-only **`brand`** property of the `Device` interface is
+either a string stating the brand of the device, which can be different from the manufacturer of that device.
+If no brand is known, the value will be `null`.
+
+
+## Value
+
+Either a string value if a brand is known, otherwise `null`.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/hardwareType.mdx b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/hardwareType.mdx
new file mode 100644
index 0000000000..dc383215f5
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/hardwareType.mdx
@@ -0,0 +1,18 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Device.prototype.hardwareType
+
+The read-only **`hardwareType`** property of the `Device` interface is
+either a string stating the hardware type of the device, or `null` if the hardware type is not known.
+
+A string representation of the device's primary platform hardware. The most commonly used device types are also identified via boolean variables. Because a device may have multiple device types and this variable only has the primary type, we recommend using the boolean variables for logic and using this string representation for logging.
+
+
+
+## Value
+
+Either a string value if a hardware type is known, otherwise `null`.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isDesktop.mdx b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isDesktop.mdx
new file mode 100644
index 0000000000..f5993762ce
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isDesktop.mdx
@@ -0,0 +1,15 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Device.prototype.isDesktop
+
+The read-only **`isDesktop`** property of the `Device` interface is
+either a boolean stating if the device is a desktop web browser, or `null` if the this is not known.
+
+
+## Value
+
+Either a boolean stating if the device is a desktop web browser, or `null` if the this is not known.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isGameConsole.mdx b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isGameConsole.mdx
new file mode 100644
index 0000000000..839735ae4a
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isGameConsole.mdx
@@ -0,0 +1,15 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Device.prototype.isGameConsole
+
+The read-only **`isGameConsole`** property of the `Device` interface is
+either a boolean stating if the device is a video game console, or `null` if the this is not known.
+
+
+## Value
+
+Either a boolean stating if the device is a video game console, or `null` if the this is not known.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isMediaPlayer.mdx b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isMediaPlayer.mdx
new file mode 100644
index 0000000000..391c5dc168
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isMediaPlayer.mdx
@@ -0,0 +1,15 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Device.prototype.isMediaPlayer
+
+The read-only **`isMediaPlayer`** property of the `Device` interface is
+either a boolean stating if the device is a media player (like Blu-ray players, iPod devices, and smart speakers such as Amazon Echo), or `null` if the this is not known.
+
+
+## Value
+
+Either a boolean stating if the device is a media player (like Blu-ray players, iPod devices, and smart speakers such as Amazon Echo), or `null` if the this is not known.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isMobile.mdx b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isMobile.mdx
new file mode 100644
index 0000000000..507ed050fc
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isMobile.mdx
@@ -0,0 +1,15 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Device.prototype.isMobile
+
+The read-only **`isMobile`** property of the `Device` interface is
+either a boolean stating if the device is a mobile phone, or `null` if the this is not known.
+
+
+## Value
+
+Either a boolean stating if the device is a mobile phone, or `null` if the this is not known.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isSmartTV.mdx b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isSmartTV.mdx
new file mode 100644
index 0000000000..9619f66473
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isSmartTV.mdx
@@ -0,0 +1,15 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Device.prototype.isSmartTV
+
+The read-only **`isSmartTV`** property of the `Device` interface is
+either a boolean stating if the device is a smart TV, or `null` if the this is not known.
+
+
+## Value
+
+Either a boolean stating if the device is a smart TV, or `null` if the this is not known.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isTablet.mdx b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isTablet.mdx
new file mode 100644
index 0000000000..429a1cceb9
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isTablet.mdx
@@ -0,0 +1,15 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Device.prototype.isTablet
+
+The read-only **`isTablet`** property of the `Device` interface is
+either a boolean stating if the device is a tablet (like an iPad), or `null` if the this is not known.
+
+
+## Value
+
+Either a boolean stating if the device is a tablet (like an iPad), or `null` if the this is not known.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isTouchscreen.mdx b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isTouchscreen.mdx
new file mode 100644
index 0000000000..3c951c2b76
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/isTouchscreen.mdx
@@ -0,0 +1,15 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Device.prototype.isTouchscreen
+
+The read-only **`isTouchscreen`** property of the `Device` interface is
+either a boolean stating if the device's screen is touch sensitive, or `null` if the this is not known.
+
+
+## Value
+
+Either a boolean stating if the device's screen is touch sensitive, or `null` if the this is not known.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/model.mdx b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/model.mdx
new file mode 100644
index 0000000000..782c9cef60
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/model.mdx
@@ -0,0 +1,15 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Device.prototype.model
+
+The read-only **`model`** property of the `Device` interface is
+either a string stating the model of the device, or `null` if the model is not known.
+
+
+## Value
+
+Either a string value if a model is known, otherwise `null`.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/name.mdx b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/name.mdx
new file mode 100644
index 0000000000..468c436c21
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/name.mdx
@@ -0,0 +1,15 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Device.prototype.name
+
+The read-only **`name`** property of the `Device` interface is
+either a string stating the name of the device, or `null` if the name is not known.
+
+
+## Value
+
+Either a string value if a name is known, otherwise `null`.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/toJSON.mdx b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/toJSON.mdx
new file mode 100644
index 0000000000..505c2e1734
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:device/Device/prototype/toJSON.mdx
@@ -0,0 +1,24 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+import {Fiddle} from '@site/src/components/fiddle';
+
+# toJSON
+
+The `toJSON()` method of the Device interface is a serializer;
+it returns a JSON representation of the Device object.
+
+To get a JSON string, you can use `JSON.stringify(device)` directly; it will call `toJSON()` automatically.
+
+## Syntax
+
+```js
+toJSON()
+```
+
+### Return value
+
+A JSON object that is the serialization of the Device object.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:dictionary/Dictionary/Dictionary.mdx b/documentation/versioned_docs/version-3.21.3/fastly:dictionary/Dictionary/Dictionary.mdx
new file mode 100644
index 0000000000..bbfc51fc6f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:dictionary/Dictionary/Dictionary.mdx
@@ -0,0 +1,102 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+import {Fiddle} from '@site/src/components/fiddle';
+
+# `Dictionary()`
+
+:::info
+
+This Class is deprecated, it has been renamed to [`ConfigStore`](../../fastly:config-store/ConfigStore/ConfigStore.mdx) and can be imported via `import { ConfigStore } from 'fastly:config-store'`
+
+:::
+
+The **`Dictionary` constructor** lets you access a specific [Fastly Edge Dictionary](https://docs.fastly.com/en/guides/about-edge-dictionaries).
+
+**Note**: Can only be used when processing requests, not during build-time initialization.
+
+## Syntax
+
+```js
+new Dictionary(name);
+```
+
+> **Note:** `Dictionary()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+- `name` _: string_
+ - The name of the [Fastly Edge Dictionary](https://docs.fastly.com/en/guides/about-edge-dictionaries) that this `Dictionary` instance should provide access to.
+
+### Return value
+
+A new `Dictionary` object.
+
+### Exceptions
+
+- `TypeError`
+ - Thrown if no Dictionary exists with the provided name
+ - Thrown if the provided name is longer than 255 in length
+ - Thrown if the provided name is an empty string
+ - Thrown if the provided name does not start with an ascii alphabetical character
+ - Thrown if the provided name does not contain only ascii alphanumeric, underscore, and whitespace characters
+
+## Examples
+
+In this example we have an Edge Dictionary named "animals" and we return the "cat" entry as the response body to the client.
+
+
+import { Dictionary } from "fastly:dictionary";
+async function app (event) {
+ const config = new Dictionary('animals');
+ return new Response(config.get('cat'));
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+`
+ },
+ "requests": [
+ {
+ "enableCluster": true,
+ "enableShield": false,
+ "enableWAF": false,
+ "data": {
+ "dictionaries": {
+ "animals": {
+ "cat": "meow"
+ }
+ }
+ },
+ "method": "GET",
+ "path": "/status=200",
+ "useFreshCache": false,
+ "followRedirects": false,
+ "tests": "",
+ "delay": 0
+ }
+ ],
+ "srcVersion": 1
+}}>
+
+```js
+///
+import { Dictionary } from "fastly:dictionary";
+async function app (event) {
+ const config = new Dictionary('animals');
+ return new Response(config.get('cat'));
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+```
+
+
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:dictionary/Dictionary/prototype/get.mdx b/documentation/versioned_docs/version-3.21.3/fastly:dictionary/Dictionary/prototype/get.mdx
new file mode 100644
index 0000000000..b80cef4fd9
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:dictionary/Dictionary/prototype/get.mdx
@@ -0,0 +1,105 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+import {Fiddle} from '@site/src/components/fiddle';
+
+# Dictionary.prototype.get
+
+:::info
+
+This Class is deprecated, it has been renamed to [`ConfigStore`](../../../fastly:config-store/ConfigStore/ConfigStore.mdx) and can be imported via `import { ConfigStore } from 'fastly:config-store'`
+
+The `get()` method exists on the [`ConfigStore`](../../../fastly:config-store/ConfigStore/ConfigStore.mdx) Class.
+
+:::
+
+The **`get()`** method returns the value associated with the provided key in the dictionary. If the provided key does not exist in the Dictionary then this returns `null`.
+
+## Syntax
+
+```js
+get(key)
+```
+
+### Parameters
+
+- `key` _: string_
+ - The key to retrieve from the dictionary.
+
+### Return value
+
+A `string` representing the specified Dictionary value or `null` if the key does not exist in the Dictionary
+
+## Description
+
+Get a value for a key in the dictionary. If the provided key does not exist in the Dictionary then this returns `null`.
+
+The `get()` method requires its `this` value to be a [`Dictionary`](../Dictionary.mdx) object.
+
+If the `this` value does not inherit from `Dictionary.prototype`, a [`TypeError`](../../../globals/TypeError/TypeError.mdx) is thrown.
+
+### Exceptions
+
+- `TypeError`
+ - Thrown if the provided key is longer than 255 in length
+ - Thrown if the provided key is an empty string
+
+## Examples
+
+In this example we have an Edge Dictionary named "animals" and we return the "cat" entry as the response body to the client.
+
+
+import { Dictionary } from "fastly:dictionary";
+async function app (event) {
+ const config = new Dictionary('animals');
+ return new Response(config.get('cat'));
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+`
+ },
+ "requests": [
+ {
+ "enableCluster": true,
+ "enableShield": false,
+ "enableWAF": false,
+ "data": {
+ "dictionaries": {
+ "animals": {
+ "cat": "meow"
+ }
+ }
+ },
+ "method": "GET",
+ "path": "/status=200",
+ "useFreshCache": false,
+ "followRedirects": false,
+ "tests": "",
+ "delay": 0
+ }
+ ],
+ "srcVersion": 1
+}}>
+
+```js
+///
+import { Dictionary } from "fastly:dictionary";
+async function app (event) {
+ const config = new Dictionary('animals');
+ return new Response(config.get('cat'));
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+```
+
+
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/EdgeRateLimiter/EdgeRateLimiter.mdx b/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/EdgeRateLimiter/EdgeRateLimiter.mdx
new file mode 100644
index 0000000000..32485b587c
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/EdgeRateLimiter/EdgeRateLimiter.mdx
@@ -0,0 +1,38 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# `EdgeRateLimiter()`
+
+The **`EdgeRateLimiter` constructor** lets you open an epen a [ERL](https://docs.fastly.com/products/edge-rate-limiting) with the given ratecounter and penaltybox.
+
+
+>**Note**: Can only be used when processing requests, not during build-time initialization.
+
+## Syntax
+
+```js
+new EdgeRateLimiter(rateCounter, penaltyBox)
+```
+
+> **Note:** `EdgeRateLimiter()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+- `rateCounter` _: RateCounter_
+ - The RateCounter instance to associate with this EdgeRateLimiter instance
+- `penaltyBox` _: PenaltyBox_
+ - The PenaltyBox instance which should be associated with this EdgeRateLimiter instance
+
+### Return value
+
+A new `EdgeRateLimiter` object.
+
+### Exceptions
+
+- `TypeError`
+ - Thrown if the provided rateCounter value is not an instance of RateCounter
+ - Thrown if the provided penaltyBox value is not an instance of PenaltyBox
+
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/EdgeRateLimiter/prototype/checkRate.mdx b/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/EdgeRateLimiter/prototype/checkRate.mdx
new file mode 100644
index 0000000000..f1f6a5004d
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/EdgeRateLimiter/prototype/checkRate.mdx
@@ -0,0 +1,46 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# EdgeRateLimiter.prototype.checkRate
+
+Increment an entry in the rate counter and check if the entry has exceeded some average number of requests per second (RPS) over the given window.
+If the entry is over the RPS limit for the window, add to the penaltybox for the given `timeToLive`.
+
+Valid `timeToLive` is 1 minute to 60 minutes and `timeToLive` value is truncated to the nearest minute.
+
+## Syntax
+```js
+checkRate(entry, delta, window, limit, timeToLive)
+```
+
+### Parameters
+
+- `entry` _: string_
+ - The name of the entry to increment and check
+- `delta` _: number_
+ - The amount to increment the `entry` by
+- `window` _: number_
+ - The time period to check across, has to be either 1 second, 10 seconds, or 60 seconds
+- `limit` _: number_
+ - The requests-per-second limit
+- `timeToLive` _: number_
+ - In minutes, how long the entry should be added into the penalty-box
+ - Valid `timeToLive` is 1 minute to 60 minutes and `timeToLive` value is truncated to the nearest minute.
+
+
+### Return value
+
+Returns `true` if the entry has exceeded the average RPS for the window, otherwise returns `false`.
+
+### Exceptions
+
+- `TypeError`
+ - Thrown if the provided `name` value can not be coerced into a string
+ - Thrown if the provided `delta` value is not a positive finite number.
+ - Thrown if the provided `window` value is not either, 1, 10, or 60.
+ - Thrown if the provided `limit` value is not a positive finite number.
+ - Thrown if the provided `timeToLive` value is not either, a number between 1 and 60 inclusively.
+
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/PenaltyBox/PenaltyBox.mdx b/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/PenaltyBox/PenaltyBox.mdx
new file mode 100644
index 0000000000..17e1be9fb4
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/PenaltyBox/PenaltyBox.mdx
@@ -0,0 +1,35 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# `PenaltyBox()`
+
+The **`PenaltyBox` constructor** can be used with a [Edge Rate Limiter](../EdgeRateLimiter/EdgeRateLimiter.mdx) or standalone for adding and checking if some entry is in the dataset.
+
+>**Note**: Can only be used when processing requests, not during build-time initialization.
+
+## Syntax
+
+```js
+new PenaltyBox(name)
+```
+
+> **Note:** `PenaltyBox()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+- `name` _: string_
+ - Open a PenaltyBox with the given name
+
+
+### Return value
+
+A new `PenaltyBox` object instance.
+
+### Exceptions
+
+- `TypeError`
+ - Thrown if the provided `name` value can not be coerced into a string
+
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/PenaltyBox/prototype/add.mdx b/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/PenaltyBox/prototype/add.mdx
new file mode 100644
index 0000000000..7dd8b9eb6c
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/PenaltyBox/prototype/add.mdx
@@ -0,0 +1,33 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# PenaltyBox.prototype.has
+
+Add an `entry` into the PenaltyBox for the duration of the given `timeToLive`.
+
+## Syntax
+```js
+add(entry, timeToLive)
+```
+
+### Parameters
+
+- `entry` _: string_
+ - The name of the entry to look up
+- `timeToLive` _: number_
+ - In minutes, how long the entry should be added into the PenaltyBox
+ - Valid `timeToLive` is 1 minute to 60 minutes and `timeToLive` value is truncated to the nearest minute.
+
+
+### Return value
+
+Returns `undefined`.
+
+### Exceptions
+
+- `TypeError`
+ - Thrown if the provided `entry` value can not be coerced into a string
+ - Thrown if the provided `timeToLive` value is not either, a number between 1 and 60 inclusively.
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/PenaltyBox/prototype/has.mdx b/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/PenaltyBox/prototype/has.mdx
new file mode 100644
index 0000000000..105e0c3b06
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/PenaltyBox/prototype/has.mdx
@@ -0,0 +1,29 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# PenaltyBox.prototype.has
+
+Check if the given entry is contained in in the PenaltyBox instance.
+
+## Syntax
+```js
+has(entry)
+```
+
+### Parameters
+
+- `entry` _: string_
+ - The name of the entry to look up
+
+
+### Return value
+
+Returns `true` if the entry is contained in the PenaltyBox instance, otherwise returns `false`.
+
+### Exceptions
+
+- `TypeError`
+ - Thrown if the provided `entry` value can not be coerced into a string
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/RateCounter/RateCounter.mdx b/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/RateCounter/RateCounter.mdx
new file mode 100644
index 0000000000..04780a1fc0
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/RateCounter/RateCounter.mdx
@@ -0,0 +1,35 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# `RateCounter()`
+
+The **`RateCounter` constructor** can be used with a [Edge Rate Limiter](../EdgeRateLimiter/EdgeRateLimiter.mdx) or standalone for counting and rate calculations.
+
+>**Note**: Can only be used when processing requests, not during build-time initialization.
+
+## Syntax
+
+```js
+new RateCounter(name)
+```
+
+> **Note:** `RateCounter()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+- `name` _: string_
+ - Open a RateCounter with the given name
+
+
+### Return value
+
+A new `RateCounter` object instance.
+
+### Exceptions
+
+- `TypeError`
+ - Thrown if the provided `name` value can not be coerced into a string
+
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/RateCounter/prototype/increment.mdx b/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/RateCounter/prototype/increment.mdx
new file mode 100644
index 0000000000..8bd5d00cf8
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/RateCounter/prototype/increment.mdx
@@ -0,0 +1,32 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# RateCounter.prototype.increment
+
+Increment the given `entry` in the RateCounter instance with the given `delta` value.
+
+## Syntax
+```js
+increment(entry, delta)
+```
+
+### Parameters
+
+- `entry` _: string_
+ - The name of the entry to look up
+- `delta` _: number_
+ - The amount to increment the entry by
+
+
+### Return value
+
+Returns `undefined`.
+
+### Exceptions
+
+- `TypeError`
+ - Thrown if the provided `entry` value can not be coerced into a string
+ - Thrown if the provided `delta` value is not a positive, finite number.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/RateCounter/prototype/lookupCount.mdx b/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/RateCounter/prototype/lookupCount.mdx
new file mode 100644
index 0000000000..5b07777aec
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/RateCounter/prototype/lookupCount.mdx
@@ -0,0 +1,32 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# RateCounter.prototype.lookupCount
+
+Look up the current rate for the given `entry` and the given `duration`.
+
+## Syntax
+```js
+lookupCount(entry, duration)
+```
+
+### Parameters
+
+- `entry` _: string_
+ - The name of the entry to look up
+- `duration` _: number_
+ - The duration to lookup alongside the entry, has to be either, 10, 20, 30, 40, 50, or 60 seconds.
+
+
+### Return value
+
+Returns a number which is the count for the given `entry` and `duration` in this `RateCounter` instance.
+
+### Exceptions
+
+- `TypeError`
+ - Thrown if the provided `entry` value can not be coerced into a string
+ - Thrown if the provided `duration` value is not either, 10, 20, 30, 40, 50 or 60.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/RateCounter/prototype/lookupRate.mdx b/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/RateCounter/prototype/lookupRate.mdx
new file mode 100644
index 0000000000..496d39cd21
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:edge-rate-limiter/RateCounter/prototype/lookupRate.mdx
@@ -0,0 +1,32 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# RateCounter.prototype.lookupRate
+
+Look up the current rate for the given `entry` and the given `window`.
+
+## Syntax
+```js
+lookupRate(entry, window)
+```
+
+### Parameters
+
+- `entry` _: string_
+ - The name of the entry to look up
+- `window` _: number_
+ - The window to look up alongside the entry, has to be either 1 second, 10 seconds, or 60 seconds
+
+
+### Return value
+
+Returns a number which is the rate for the given `entry` and `window` in this `RateCounter` instance.
+
+### Exceptions
+
+- `TypeError`
+ - Thrown if the provided `entry` value can not be coerced into a string
+ - Thrown if the provided `window` value is not either, 1, 10, or 60.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:env/env.mdx b/documentation/versioned_docs/version-3.21.3/fastly:env/env.mdx
new file mode 100644
index 0000000000..2e6f33bda9
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:env/env.mdx
@@ -0,0 +1,93 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+import {Fiddle} from '@site/src/components/fiddle';
+
+# env
+
+The **`env()`** function returns the value for the provided environment variable name.
+
+For a list of available environment variables, see the [Fastly Developer Hub for Compute Environment Variables](https://developer.fastly.com/reference/compute/ecp-env/)
+
+>**Note**: The environment variables can only be retrieved when processing requests, not during build-time initialization.
+
+## Syntax
+
+```js
+env(name)
+```
+
+### Parameters
+
+- `name` _: string_
+ - The name of the environment variable to retrieve
+
+### Return value
+
+The value for the requested environment variable, if no such environment variable exists then an empty string is returned.
+
+## Examples
+
+In this example we log to stdout the environment variables [`FASTLY_HOSTNAME`](https://developer.fastly.com/reference/compute/ecp-env/fastly-hostname/) and [`FASTLY_TRACE_ID`](https://developer.fastly.com/reference/compute/ecp-env/fastly-trace-id/).
+
+
+import { env } from "fastly:env";
+function app(event) {
+ console.log("FASTLY_HOSTNAME:", env("FASTLY_HOSTNAME"));
+ console.log("FASTLY_TRACE_ID:", env("FASTLY_TRACE_ID"));
+ return new Response("", {
+ status: 200
+ });
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+`
+ },
+ "requests": [
+ {
+ "enableCluster": true,
+ "enableShield": false,
+ "enableWAF": false,
+ "data": {
+ "dictionaries": {
+ "animals": {
+ "cat": "meow"
+ }
+ }
+ },
+ "method": "GET",
+ "path": "/status=200",
+ "useFreshCache": false,
+ "followRedirects": false,
+ "tests": "",
+ "delay": 0
+ }
+ ],
+ "srcVersion": 1
+}}>
+
+```js
+///
+import { env } from "fastly:env";
+function app(event) {
+ console.log("FASTLY_HOSTNAME:", env("FASTLY_HOSTNAME"));
+ console.log("FASTLY_TRACE_ID:", env("FASTLY_TRACE_ID"));
+ return new Response("", {
+ status: 200
+ });
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+```
+
+
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:experimental/allowDynamicBackends.mdx b/documentation/versioned_docs/version-3.21.3/fastly:experimental/allowDynamicBackends.mdx
new file mode 100644
index 0000000000..52a63a8505
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:experimental/allowDynamicBackends.mdx
@@ -0,0 +1,104 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+import {Fiddle} from '@site/src/components/fiddle';
+
+# allowDynamicBackends
+
+The **`allowDynamicBackends()`** function is used to control whether or not Dynamic Backends should be allowed within this Fastly Compute Service.
+
+By default, Dynamic Backends are disabled within a JavaScript application as it can be a potential avenue for third-party JavaScript code to send requests, potentially including sensitive/secret data, off to destinations that the JavaScript project was not intending, which could be a security issue.
+
+>**Note**: This feature is in disabled by default for Fastly Services. Please contact [Fastly Support](https://support.fastly.com/hc/requests/new?ticket_form_id=360000269711) to request the feature be enabled on the Fastly Services which require Dynamic Backends.
+
+## Syntax
+
+```js
+allowDynamicBackends(enabledOrConfig)
+```
+
+### Parameters
+
+- `enabledOrConfig` _: boolean_
+ - Whether or not to allow Dynamic Backends
+
+or
+
+- `enabledOrConfig` _: object_
+ - `connectTimeout` _: number_ _**optional**_
+ - Maximum duration in milliseconds to wait for a connection to this backend to be established.
+ - If exceeded, the connection is aborted and a 503 response will be presented instead.
+ - Throws a [`RangeError`](../globals/RangeError/RangeError.mdx) if the value is negative or greater than or equal to 2^32
+ - `firstByteTimeout` _: number_ _**optional**_
+ - Maximum duration in milliseconds to wait for the server response to begin after a TCP connection is established and the request has been sent.
+ - If exceeded, the connection is aborted and a 503 response will be presented instead.
+ - Throws a [`RangeError`](../globals/RangeError/RangeError.mdx) if the value is negative or greater than or equal to 2^32
+ - `betweenBytesTimeout` _: number_ _**optional**_
+ - Maximum duration in milliseconds that Fastly will wait while receiving no data on a download from a backend.
+ - If exceeded, the response received so far will be considered complete and the fetch will end.
+ - Throws a [`RangeError`](../globals/RangeError/RangeError.mdx) if the value is negative or greater than or equal to 2^32
+
+### Return value
+
+`undefined`.
+
+## Examples
+
+In this example an implicit Dynamic Backend is created when making the fetch request to and the response is then returned to the client.
+
+
+import { allowDynamicBackends } from "fastly:experimental";
+allowDynamicBackends(true);
+async function app() {
+ // For any request, return the fastly homepage -- without defining a backend!
+ return fetch('https://www.fastly.com/');
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+`
+ },
+ "requests": [
+ {
+ "enableCluster": true,
+ "enableShield": false,
+ "enableWAF": false,
+ "data": {
+ "dictionaries": {
+ "animals": {
+ "cat": "meow"
+ }
+ }
+ },
+ "method": "GET",
+ "path": "/status=200",
+ "useFreshCache": false,
+ "followRedirects": false,
+ "tests": "",
+ "delay": 0
+ }
+ ],
+ "srcVersion": 1
+}}>
+
+```js
+///
+import { allowDynamicBackends } from "fastly:experimental";
+allowDynamicBackends(true);
+async function app() {
+ // For any request, return the fastly homepage -- without defining a backend!
+ return fetch('https://www.fastly.com/');
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+```
+
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:experimental/includeBytes.mdx b/documentation/versioned_docs/version-3.21.3/fastly:experimental/includeBytes.mdx
new file mode 100644
index 0000000000..9ec78512a6
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:experimental/includeBytes.mdx
@@ -0,0 +1,40 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# includeBytes
+
+The **`includeBytes()`** function is used embed a file as a Uint8Array.
+
+>**Note**: Can only be used during build-time initialization, not when processing requests.
+
+## Syntax
+
+```js
+includeBytes(path)
+```
+
+### Parameters
+
+- `path` _: string_
+ - The path to include, relative to the Fastly Compute application's top-level directory during build-time initialization.
+
+### Return value
+
+Returns a `Uint8Array`
+
+## Examples
+
+In this example we include the README.md file as a Uint8Array and use it for the body in the response we return to the client.
+
+```js
+///
+import { includeBytes } from "fastly:experimental";
+const readme = includeBytes('README.md');
+async function app() {
+ return new Response(readme);
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+```
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:experimental/sdkVersion.mdx b/documentation/versioned_docs/version-3.21.3/fastly:experimental/sdkVersion.mdx
new file mode 100644
index 0000000000..04d06fc153
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:experimental/sdkVersion.mdx
@@ -0,0 +1,14 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# sdkVersion
+
+The read-only **`sdkVersion`** property is a string whose indicates what JavaScript SDK version is being used.
+
+## Value
+
+A string value.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:fanout/createFanoutHandoff.mdx b/documentation/versioned_docs/version-3.21.3/fastly:fanout/createFanoutHandoff.mdx
new file mode 100644
index 0000000000..f236ec6cfe
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:fanout/createFanoutHandoff.mdx
@@ -0,0 +1,53 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# createFanoutHandoff
+
+The **`createFanoutHandoff()`** function creates a Response instance which informs Fastly to pass the original Request through Fanout, to the declared backend.
+
+## Syntax
+
+```js
+createFanoutHandoff(request, backend)
+```
+
+### Parameters
+
+- `request` _: Request_
+ - The request to pass through Fanout.
+- `backend` _: string_
+ - The name of the backend that Fanout should send the request to.
+ - The name has to be between 1 and 254 characters inclusive.
+ - Throws a [`TypeError`](../globals/TypeError/TypeError.mdx) if the value is not valid. I.E. The value is null, undefined, an empty string or a string with more than 254 characters.
+
+### Return value
+
+A Response instance is returned, which can then be used via `event.respondWith`.
+
+## Examples
+
+In this example application requests to the path `/stream` and sent handled via Fanout.
+
+```js
+import { createFanoutHandoff } from "fastly:fanout";
+
+async function handleRequest(event) {
+ try {
+ const url = new URL(event.request.url);
+ if (url.pathname === '/stream') {
+ return createFanoutHandoff(event.request, 'fanout');
+ } else {
+ return new Response('oopsie, make a request to /stream for some fanout goodies', { status: 404 });
+ }
+ } catch (error) {
+ console.error({error});
+ return new Response(error.message, {status:500})
+ }
+}
+
+addEventListener("fetch", (event) => event.respondWith(handleRequest(event)));
+```
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:geolocation/getGeolocationForIpAddress.mdx b/documentation/versioned_docs/version-3.21.3/fastly:geolocation/getGeolocationForIpAddress.mdx
new file mode 100644
index 0000000000..d47ed998ab
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:geolocation/getGeolocationForIpAddress.mdx
@@ -0,0 +1,178 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+import {Fiddle} from '@site/src/components/fiddle';
+
+# getGeolocationForIpAddress
+
+The **`getGeolocationForIpAddress()`** function is used to retrieve geolocation information about the given IP address.
+
+>**Note**: Can only be used when processing requests, not during build-time initialization.
+
+## Syntax
+
+```js
+getGeolocationForIpAddress(address)
+```
+
+### Parameters
+
+- `address` _: string_
+ - The IPv4 or IPv6 address to query.
+
+### Return value
+
+Returns an `Object` which contains information about the given IP address with the following properties:
+
+- `as_name` _: string | null_
+ - The name of the organization associated with `as_number`.
+ - For example, fastly is the value given for IP addresses under AS-54113.
+
+- `as_number` _: number | null_
+ - [Autonomous system](https://en.wikipedia.org/wiki/Autonomous_system_(Internet)) (AS) number.
+
+- `area_code` _: number | null_
+ - The telephone area code associated with an IP address.
+ - These are only available for IP addresses in the United States, its territories, and Canada.
+
+- `city` _: string | null_
+ - City or town name.
+
+- `conn_speed` _: string | null_
+ - Connection speed.
+
+- `conn_type` _: string | null_
+ - Connection type.
+
+- `continent` _: string | null_
+ - Continent.
+
+- `country_code` _: string | null_
+ - A two-character [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) country code for the country associated with an IP address.
+ - The US country code is returned for IP addresses associated with overseas United States military bases.
+ - These values include subdivisions that are assigned their own country codes in ISO 3166-1. For example, subdivisions NO-21 and NO-22 are presented with the country code SJ for Svalbard and the Jan Mayen Islands.
+
+- `country_code3` _: string | null_
+ - A three-character [ISO 3166-1 alpha-3](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) country code for the country associated with the IP address.
+ - The USA country code is returned for IP addresses associated with overseas United States military bases.
+
+- `country_name` _: string | null_
+ - Country name.
+ - This field is the [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) English short name for a country.
+
+- `gmt_offset` _: string | null_
+ - Time zone offset from Greenwich Mean Time (GMT) for `city`.
+
+- `latitude` _: number | null_
+ - Latitude, in units of degrees from the equator.
+ - Values range from -90.0 to +90.0 inclusive, and are based on the [WGS 84](https://en.wikipedia.org/wiki/World_Geodetic_System) coordinate reference system.
+
+- `longitude` _: number | null_
+ - Longitude, in units of degrees from the [IERS Reference Meridian](https://en.wikipedia.org/wiki/IERS_Reference_Meridian).
+ - Values range from -180.0 to +180.0 inclusive, and are based on the [WGS 84](https://en.wikipedia.org/wiki/World_Geodetic_System) coordinate reference system.
+
+- `metro_code` _: number | null_
+ - Metro code, representing designated market areas (DMAs) in the United States.
+
+- `postal_code` _: string | null_
+ - The postal code associated with the IP address.
+ - These are available for some IP addresses in Australia, Canada, France, Germany, Italy, Spain, Switzerland, the United Kingdom, and the United States.
+ - For Canadian postal codes, this is the first 3 characters. For the United Kingdom, this is the first 2-4 characters (outward code). For countries with alphanumeric postal codes, this field is a lowercase transliteration.
+
+- `proxy_description` _: string | null_
+ - Client proxy description.
+
+- `proxy_type` _: string | null_
+ - Client proxy type.
+
+- `region` _: string | null_
+ - [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) country subdivision code.
+ - For countries with multiple levels of subdivision (for example, nations within the United Kingdom), this variable gives the more specific subdivision.
+ - This field can be None for countries that do not have ISO country subdivision codes. For example, None is given for IP addresses assigned to the Åland Islands (country code AX, illustrated below).
+
+- `utc_offset` _: number | null;_
+ - Time zone offset from coordinated universal time (UTC) for `city`.
+
+## Examples
+
+In this example we return the geolocation details for the provided ip querystring parameter or for the incoming client request if the querystring parameter does not exist.
+
+
+import { getGeolocationForIpAddress } from "fastly:geolocation"
+async function app(event) {
+ try {
+ let ip = new URL(event.request.url).searchParams.get('ip') || event.client.address
+ let geo = getGeolocationForIpAddress(ip);
+ return new Response(JSON.stringify(geo), {
+ headers: {
+ "Content-Type": "application/json",
+ },
+ });
+ } catch (error) {
+ console.error(error);
+ return new Response("Internal Server Error", {
+ status: 500
+ });
+ }
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+`
+ },
+ "requests": [
+ {
+ "enableCluster": true,
+ "enableShield": false,
+ "enableWAF": false,
+ "data": {
+ "dictionaries": {
+ "animals": {
+ "cat": "meow"
+ }
+ }
+ },
+ "method": "GET",
+ "path": "/status=200",
+ "useFreshCache": false,
+ "followRedirects": false,
+ "tests": "",
+ "delay": 0
+ }
+ ],
+ "srcVersion": 1
+}}>
+
+```js
+///
+import { getGeolocationForIpAddress } from "fastly:geolocation"
+async function app(event) {
+ try {
+ let ip = new URL(event.request.url).searchParams.get('ip') || event.client.address
+ let geo = getGeolocationForIpAddress(ip);
+ return new Response(JSON.stringify(geo), {
+ headers: {
+ "Content-Type": "application/json",
+ },
+ });
+ } catch (error) {
+ console.error(error);
+ return new Response("Internal Server Error", {
+ status: 500
+ });
+ }
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+```
+
+
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStore/KVStore.mdx b/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStore/KVStore.mdx
new file mode 100644
index 0000000000..6cac3d4b05
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStore/KVStore.mdx
@@ -0,0 +1,62 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# `KVStore()`
+
+The **`KVStore` constructor** lets you connect your Fastly Compute application to a Fastly KV store.
+
+A Fastly KV store is a persistent, globally consistent key-value store. See [Data stores for Fastly services](https://developer.fastly.com/learning/concepts/edge-state/data-stores#kv-stores) for initialization and usage details.
+
+>**Note**: Can only be used when processing requests, not during build-time initialization.
+
+## Syntax
+
+```js
+new KVStore(name)
+```
+
+> **Note:** `KVStore()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+- `name` _: string_
+ - The Fastly KV store which should be associated with this KVStore instance
+
+### Return value
+
+A new `KVStore` object.
+
+### Exceptions
+
+- `TypeError`
+ - Thrown if no KV Store exists with the provided name
+ - Thrown if the provided name is longer than 255 in length
+ - Thrown if the provided name is an empty string
+ - Thrown if the provided name does not start with an ascii alphabetical character
+ - Thrown if the provided name contains control characters `(\u0000-\u001F)`
+
+## Examples
+
+In this example we connect to an KV Store named `'files'` and save an entry to the store under the key `'hello'` and then read back the value and return it to the client.
+
+```js
+///
+
+import { KVStore } from "fastly:kv-store";
+
+async function app(event) {
+ const files = new KVStore('files')
+
+ await files.put('hello', 'world')
+
+ const entry = await files.get('hello')
+
+ return new Response(await entry.text())
+}
+
+addEventListener("fetch", (event) => event.respondWith(app(event)))
+
+```
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStore/prototype/delete.mdx b/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStore/prototype/delete.mdx
new file mode 100644
index 0000000000..255faac0b2
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStore/prototype/delete.mdx
@@ -0,0 +1,62 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# KVStore.prototype.delete
+
+Deletes the value associated with the key `key` in the KV store.
+
+## Syntax
+
+```js
+delete(key)
+```
+
+### Parameters
+
+- `key` _: string_
+ - The key to retrieve from within the KV-store.
+
+### Return value
+
+Returns `undefined`
+
+### Exceptions
+
+- `TypeError`
+ - If the provided `key`:
+ - Is any of the strings `""`, `"."`, or `".."`
+ - Starts with the string `".well-known/acme-challenge/"`
+ - Contains any of the characters `"#?*[]\n\r"`
+ - Is longer than 1024 characters
+ - Does not exist
+
+## Examples
+
+In this example we connect to an KV Store named `'files'` and save an entry to the store under the key `'hello'` and then delete the entry.
+
+```js
+///
+
+import { KVStore } from "fastly:kv-store";
+
+async function app(event) {
+ const files = new KVStore('files')
+
+ await files.put('hello', 'world')
+ await files.delete('hello')
+
+ const entry = await files.get('hello')
+ if (entry) {
+ return new Response(await entry.text())
+ } else {
+ return new Response('no file named hello exists')
+ }
+
+}
+
+addEventListener("fetch", (event) => event.respondWith(app(event)))
+
+```
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStore/prototype/get.mdx b/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStore/prototype/get.mdx
new file mode 100644
index 0000000000..956ddbeda5
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStore/prototype/get.mdx
@@ -0,0 +1,68 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# KVStore.prototype.get
+
+▸ **get**(): `string`
+
+Gets the value associated with the key `key` in the KV store.
+
+## Syntax
+
+```js
+get(key)
+```
+
+### Parameters
+
+- `key` _: string_
+ - The key to retrieve from within the KV-store.
+
+### Return value
+
+If the key does not exist in the KV store, this returns a `Promise` which resolves with `null`.
+
+If the key does exist in the KV store, this returns a `Promise` which resolves with an `KVStoreEntry`.
+
+## Description
+
+Send the given message, converted to a string, to this KVStore instance's endpoint.
+
+The `get()` method requires its `this` value to be a [`KVStore`](../KVStore.mdx) object.
+
+If the `this` value does not inherit from `KVStore.prototype`, a [`TypeError`](../../../globals/TypeError/TypeError.mdx) is thrown.
+
+### Exceptions
+
+- `TypeError`
+ - If the provided `key`:
+ - Is any of the strings `""`, `"."`, or `".."`
+ - Starts with the string `".well-known/acme-challenge/"`
+ - Contains any of the characters `"#?*[]\n\r"`
+ - Is longer than 1024 characters
+
+## Examples
+
+In this example we connect to an KV Store named `'files'` and save an entry to the store under the key `'hello'` and then read back the value and return it to the client.
+
+```js
+///
+
+import { KVStore } from "fastly:kv-store";
+
+async function app(event) {
+ const files = new KVStore('files')
+
+ await files.put('hello', 'world')
+
+ const entry = await files.get('hello')
+
+ return new Response(await entry.text())
+}
+
+addEventListener("fetch", (event) => event.respondWith(app(event)))
+
+```
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStore/prototype/put.mdx b/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStore/prototype/put.mdx
new file mode 100644
index 0000000000..9504041ce1
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStore/prototype/put.mdx
@@ -0,0 +1,68 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# KVStore.prototype.put
+
+The **`put()`** method stores a `value` into the KV store under a `key`.
+
+> **Note**: KV stores are eventually consistent, this means that the updated contents associated with the key `key` may not be available to read from all edge locations immediately and some edge locations may continue returning the previous contents associated with the key.
+
+## Syntax
+
+```js
+put(key, value)
+```
+
+### Parameters
+
+- `key` _: string_
+ - The key to store the supplied value under within the KV store.
+- `value` _: ArrayBuffer | TypedArray | DataView| ReadableStream | URLSearchParams | String | string literal_
+ - The value to store within the KV store.
+
+### Return value
+
+Returns a `Promise` which resolves with `undefined` when the provided `value` has been written into the KV store.
+
+## Description
+
+Stores the supplied `value` into the KV store under the supplied `key`.
+
+The `put()` method requires its `this` value to be a [`KVStore`](../KVStore.mdx) object.
+
+If the `this` value does not inherit from `KVStore.prototype`, a [`TypeError`](../../../globals/TypeError/TypeError.mdx) is thrown.
+
+### Exceptions
+
+- `TypeError`
+ - If the provided `key`:
+ - Is any of the strings `""`, `"."`, or `".."`
+ - Starts with the string `".well-known/acme-challenge/"`
+ - Contains any of the characters `"#?*[]\n\r"`
+ - Is longer than 1024 characters
+
+## Examples
+
+In this example we connect to an KV Store named `'files'` and save an entry to the store under the key `'hello'` and then read back the value and return it to the client.
+
+```js
+///
+
+import { KVStore } from "fastly:kv-store";
+
+async function app(event) {
+ const files = new KVStore('files')
+
+ await files.put('hello', 'world')
+
+ const entry = await files.get('hello')
+
+ return new Response(await entry.text())
+}
+
+addEventListener("fetch", (event) => event.respondWith(app(event)))
+
+```
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/arrayBuffer.mdx b/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/arrayBuffer.mdx
new file mode 100644
index 0000000000..a79b301039
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/arrayBuffer.mdx
@@ -0,0 +1,23 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# KVStoreEntry.arrayBuffer()
+
+The `arrayBuffer()` method of the `KVStoreEntry` interface takes a `KVStoreEntry` stream and reads it to completion. It returns a promise that resolves with an `ArrayBuffer`.
+## Syntax
+
+```js
+text()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A promise that resolves with an `ArrayBuffer`.
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/body.mdx b/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/body.mdx
new file mode 100644
index 0000000000..42378097e3
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/body.mdx
@@ -0,0 +1,14 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# KVStoreEntry.body
+
+The `body` read-only property of the `KVStoreEntry` interface is a `ReadableStream` of the body contents.
+
+## Value
+
+A `ReadableStream`.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/bodyUsed.mdx b/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/bodyUsed.mdx
new file mode 100644
index 0000000000..ed887185bc
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/bodyUsed.mdx
@@ -0,0 +1,14 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# KVStoreEntry.bodyUsed
+
+The `bodyUsed` read-only property of the `KVStoreEntry` interface is a `boolean` value that indicates whether the body has been read yet.
+
+## Value
+
+A boolean value.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/json.mdx b/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/json.mdx
new file mode 100644
index 0000000000..0273ebc2fe
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/json.mdx
@@ -0,0 +1,26 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# KVStoreEntry.json()
+
+The `json()` method of the `KVStoreEntry` interface takes a `KVStoreEntry` stream and reads it to completion. It returns a promise which resolves with the result of parsing the body text as JSON.
+
+Note that despite the method being named `json()`, the result is not JSON but is instead the result of taking JSON as input and parsing it to produce a JavaScript object.
+
+## Syntax
+
+```js
+json()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `Promise` that resolves to a JavaScript object. This object could be anything that can be represented by JSON — an object, an array, a string, a number…
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/text.mdx b/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/text.mdx
new file mode 100644
index 0000000000..b03179f8ac
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:kv-store/KVStoreEntry/prototype/text.mdx
@@ -0,0 +1,24 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# KVStoreEntry.text()
+
+The `text()` method of the `KVStoreEntry` interface takes a `KVStoreEntry` stream and reads it to completion. It returns a promise that resolves with a `String`. The `KVStoreEntry `is always decoded using UTF-8.
+
+## Syntax
+
+```js
+text()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A `Promise` that resolves with a `String`.
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:logger/Logger/Logger.mdx b/documentation/versioned_docs/version-3.21.3/fastly:logger/Logger/Logger.mdx
new file mode 100644
index 0000000000..bd7ed9b585
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:logger/Logger/Logger.mdx
@@ -0,0 +1,87 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+import {Fiddle} from '@site/src/components/fiddle';
+
+# `Logger()`
+
+The **`Logger` constructor** lets you connect your Fastly Compute application to a [Fastly Named Logger](https://developer.fastly.com/learning/integrations/logging/).
+
+## Syntax
+
+```js
+new Logger(name)
+```
+
+> **Note:** `Logger()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+- `name` _: string_
+ - The Fastly Logger which should be associated with this Logger instance
+
+### Return value
+
+A new `Logger` object.
+
+## Examples
+
+In this example we have a create a logger named `"splunk"` and logs the incoming request method and destination.
+
+
+import { Logger } from "fastly:logger";
+async function app (event) {
+ let logger = new Logger("splunk");
+ logger.log(JSON.stringify({
+ method: event.request.method,
+ url: event.request.url
+ }));
+ return new Response('OK');
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+`
+ },
+ "requests": [
+ {
+ "enableCluster": true,
+ "enableShield": false,
+ "enableWAF": false,
+ "method": "GET",
+ "path": "/status=200",
+ "useFreshCache": false,
+ "followRedirects": false,
+ "tests": "",
+ "delay": 0
+ }
+ ],
+ "srcVersion": 1
+}}>
+
+```js
+///
+import { Logger } from "fastly:logger";
+const logger = new Logger("splunk");
+async function app (event) {
+ logger.log(JSON.stringify({
+ method: event.request.method,
+ url: event.request.url
+ }));
+
+ return new Response('OK');
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+```
+
+
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:logger/Logger/prototype/log.mdx b/documentation/versioned_docs/version-3.21.3/fastly:logger/Logger/prototype/log.mdx
new file mode 100644
index 0000000000..f64a83360a
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:logger/Logger/prototype/log.mdx
@@ -0,0 +1,91 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+import {Fiddle} from '@site/src/components/fiddle';
+
+# Logger.prototype.log
+
+▸ **log**(): `string`
+
+Sends the given message, converted to a string, to this Logger instance's endpoint.
+
+**Note**: Can only be used when processing requests, not during build-time initialization.
+
+## Syntax
+
+```js
+log(message)
+```
+
+### Return value
+
+`undefined`.
+
+## Description
+
+Send the given message, converted to a string, to this Logger instance's endpoint.
+
+The `log()` method requires its `this` value to be a [`Logger`](../Logger.mdx) object.
+
+If the `this` value does not inherit from `Logger.prototype`, a [`TypeError`](../../../globals/TypeError/TypeError.mdx) is thrown.
+
+## Examples
+
+In this example we have a create a logger named `"splunk"` and logs the incoming request method and destination.
+
+
+import { Logger } from "fastly:logger";
+let logger = new Logger("splunk");
+async function app (event) {
+ logger.log(JSON.stringify({
+ method: event.request.method,
+ url: event.request.url
+ }));
+ return new Response('OK');
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+`
+ },
+ "requests": [
+ {
+ "enableCluster": true,
+ "enableShield": false,
+ "enableWAF": false,
+ "method": "GET",
+ "path": "/status=200",
+ "useFreshCache": false,
+ "followRedirects": false,
+ "tests": "",
+ "delay": 0
+ }
+ ],
+ "srcVersion": 1
+}}>
+
+```js
+///
+import { Logger } from "fastly:logger";
+async function app (event) {
+ let logger = new Logger("splunk");
+ logger.log(JSON.stringify({
+ method: event.request.method,
+ url: event.request.url
+ }));
+ return new Response('OK');
+}
+addEventListener("fetch", event => event.respondWith(app(event)));
+```
+
+
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStore/SecretStore.mdx b/documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStore/SecretStore.mdx
new file mode 100644
index 0000000000..43f30f9d86
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStore/SecretStore.mdx
@@ -0,0 +1,63 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# `SecretStore()`
+
+The **`SecretStore` constructor** lets you connect your Fastly Compute application to a Fastly Secret store.
+
+A secret store is a persistent, globally distributed store for secrets accessible to Fastly Compute services during request processing.
+
+>**Note**: Can only be used when processing requests, not during build-time initialization.
+
+## Syntax
+
+```js
+new SecretStore(name)
+```
+
+> **Note:** `SecretStore()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+- `name` _: string_
+ - The Fastly Secret Store which should be associated with this SecretStore instance
+
+### Return value
+
+A new `SecretStore` object.
+
+### Exceptions
+
+- `TypeError`
+ - Thrown if no Secret Store exists with the provided name
+ - Thrown if the provided name is longer than 255 in length
+ - Thrown if the provided name is an empty string
+ - Thrown if the provided name contains characters other than letters, numbers, dashes (-), underscores (_), and periods (.)
+
+## Examples
+
+In this example we connect to a Secret Store named `'secrets'` and retrieve a secret named `'cat-api-key'` use the value in a Request header.
+
+```js
+///
+
+import { SecretStore } from "fastly:secret-store";
+
+async function app(event) {
+ const secrets = new SecretStore('secrets')
+
+ const catApiKey = await secrets.get('cat-api-key')
+
+ return fetch('/api/cat', {
+ headers: {
+ 'cat-api-key': catApiKey.plaintext()
+ }
+ })
+}
+
+addEventListener("fetch", (event) => event.respondWith(app(event)))
+
+```
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStore/fromBytes.mdx b/documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStore/fromBytes.mdx
new file mode 100644
index 0000000000..4aa5c85808
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStore/fromBytes.mdx
@@ -0,0 +1,25 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# fromBytes
+
+The **`fromBytes()`** function is used to create an in-memory secret from an array buffer.
+
+>**Note**: This API should be avoided when possible, by instead using [SecretStore.prototype.get](./prototype/get.mdx) to obtain secure secrets.
+
+## Syntax
+
+```js
+fromBytes(new Uint8Array([1, 2, 3]))
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+Returns a `SecretStoreEntry`.
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStore/prototype/get.mdx b/documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStore/prototype/get.mdx
new file mode 100644
index 0000000000..72f41d5d84
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStore/prototype/get.mdx
@@ -0,0 +1,69 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# SecretStore.prototype.get
+
+▸ **get**(): `string`
+
+Gets the value associated with the key `key` in the Secret store.
+
+## Syntax
+
+```js
+get(key)
+```
+
+### Parameters
+
+- `key` _: string_
+ - The key to retrieve from within the Secret Store.
+
+### Return value
+
+If the key does not exist in the Secret Store, this returns a `Promise` which resolves with `null`.
+
+If the key does exist in the Secret Store, this returns a `Promise` which resolves with an `SecretStoreEntry`.
+
+## Description
+
+Send the given message, converted to a string, to this SecretStore instance's endpoint.
+
+The `get()` method requires its `this` value to be a [`SecretStore`](../SecretStore.mdx) object.
+
+If the `this` value does not inherit from `SecretStore.prototype`, a [`TypeError`](../../../globals/TypeError/TypeError.mdx) is thrown.
+
+### Exceptions
+
+- `TypeError`
+ - If the provided `key`:
+ - Is an empty string
+ - Is longer than 255 characters
+ - Contains characters other than letters, numbers, dashes (-), underscores (_), and periods (.)
+
+## Examples
+
+In this example we connect to a Secret Store named `'secrets'` and retrieve a secret named `'cat-api-key'` use the value in a Request header.
+
+```js
+///
+
+import { SecretStore } from "fastly:secret-store";
+
+async function app(event) {
+ const secrets = new SecretStore('secrets')
+
+ const catApiKey = await secrets.get('cat-api-key')
+
+ return fetch('/api/cat', {
+ headers: {
+ 'cat-api-key': catApiKey.plaintext()
+ }
+ })
+}
+
+addEventListener("fetch", (event) => event.respondWith(app(event)))
+
+```
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStoreEntry/prototype/plaintext.mdx b/documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStoreEntry/prototype/plaintext.mdx
new file mode 100644
index 0000000000..d903471b89
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStoreEntry/prototype/plaintext.mdx
@@ -0,0 +1,55 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# SecretStoreEntry.prototype.plaintext
+
+▸ **plaintext**(): `string`
+
+Returns the plaintext contents of the SecretStoreEntry instance as String.
+
+## Syntax
+
+```js
+plaintext()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+A String
+
+### Exceptions
+
+The `plaintext()` method requires its `this` value to be a `SecretStoreEntry` object.
+If the `this` value does not inherit from `SecretStoreEntry.prototype`, a [`TypeError`](../../../globals/TypeError/TypeError.mdx) is thrown.
+
+## Examples
+
+In this example we connect to a Secret Store named `'secrets'` and retrieve a secret named `'cat-api-key'` use the value in a Request header.
+
+```js
+///
+
+import { SecretStore } from "fastly:secret-store";
+
+async function app(event) {
+ const secrets = new SecretStore('secrets')
+
+ const catApiKey = await secrets.get('cat-api-key')
+
+ return fetch('/api/cat', {
+ headers: {
+ 'cat-api-key': catApiKey.plaintext()
+ }
+ })
+}
+
+addEventListener("fetch", (event) => event.respondWith(app(event)))
+
+```
diff --git a/documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStoreEntry/prototype/rawBytes.mdx b/documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStoreEntry/prototype/rawBytes.mdx
new file mode 100644
index 0000000000..e8dd54a2c7
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/fastly:secret-store/SecretStoreEntry/prototype/rawBytes.mdx
@@ -0,0 +1,30 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# SecretStoreEntry.prototype.rawBytes
+
+▸ **rawBytes**(): `ArrayBuffer`
+
+Returns the raw byte contents of the SecretStoreEntry instance as an ArrayBuffer.
+
+## Syntax
+
+```js
+rawBytes()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+An ArrayBuffer
+
+### Exceptions
+
+The `rawBytes()` method requires its `this` value to be a `SecretStoreEntry` object.
+If the `this` value does not inherit from `SecretStoreEntry.prototype`, a [`TypeError`](../../../globals/TypeError/TypeError.mdx) is thrown.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/AggregrateError/AggregrateError.mdx b/documentation/versioned_docs/version-3.21.3/globals/AggregrateError/AggregrateError.mdx
new file mode 100644
index 0000000000..e27ca94f80
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/AggregrateError/AggregrateError.mdx
@@ -0,0 +1,35 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# AggregateError()
+
+The **`AggregateError()`** constructor creates an error for several errors that need to be wrapped in a single error.
+
+## Syntax
+
+```js
+new AggregateError(errors)
+new AggregateError(errors, message)
+new AggregateError(errors, message, options)
+
+AggregateError(errors)
+AggregateError(errors, message)
+AggregateError(errors, message, options)
+```
+
+> **Note:** `AggregateError()` can be called with or without `new`. Both create a new `AggregateError` instance.
+
+### Parameters
+
+- `errors`
+ - : An iterable of errors, may not actually be [`TypeError`](../Error/Error.mdx) instances.
+- `message` _**optional**_
+ - : An optional human-readable description of the aggregate error.
+- `options` _**optional**_
+ - : An object that has the following properties:
+ - `cause` _**optional**_
+ - : A property indicating the specific cause of the error.
+ When catching and re-throwing an error with a more-specific or useful error message, this property can be used to pass the original error.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/@@species.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/@@species.mdx
new file mode 100644
index 0000000000..21dca62c54
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/@@species.mdx
@@ -0,0 +1,57 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array\[Symbol.species]
+
+The **`Array[Symbol.species]`** accessor property returns the constructor used to construct return values from array methods.
+
+> **Warning:** The existence of `[Symbol.species]` allows execution of arbitrary code and may create security vulnerabilities. It also makes certain optimizations much harder. Engine implementers are [investigating whether to remove this feature](https://github.com/tc39/proposal-rm-builtin-subclassing). Avoid relying on it if possible.
+
+## Syntax
+
+```js
+Array[Symbol.species]
+```
+
+### Return value
+
+The value of the constructor (`this`) on which `get [Symbol.species]` was called. The return value is used to construct return values from array methods that create new arrays.
+
+## Description
+
+The `[Symbol.species]` accessor property returns the default constructor for `Array` objects. Subclass constructors may override it to change the constructor assignment. The default implementation is basically:
+
+```js
+// Hypothetical underlying implementation for illustration
+class Array {
+ static get [Symbol.species]() {
+ return this;
+ }
+}
+```
+
+Because of this polymorphic implementation, `[Symbol.species]` of derived subclasses would also return the constructor itself by default.
+
+```js
+class SubArray extends Array {}
+SubArray[Symbol.species] === SubArray; // true
+```
+
+When calling array methods that do not mutate the existing array but return a new array instance (for example, `filter()` and `map()`), the array's `constructor[Symbol.species]` will be accessed. The returned constructor will be used to construct the return value of the array method. This makes it technically possible to make array methods return objects unrelated to arrays.
+
+```js
+class NotAnArray {
+ constructor(length) {
+ this.length = length;
+ }
+}
+
+const arr = [0, 1, 2];
+arr.constructor = { [Symbol.species]: NotAnArray };
+arr.map((i) => i); // NotAnArray { '0': 0, '1': 1, '2': 2, length: 3 }
+arr.filter((i) => i); // NotAnArray { '0': 1, '1': 2, length: 0 }
+arr.concat([1, 2]); // NotAnArray { '0': 0, '1': 1, '2': 2, '3': 1, '4': 2, length: 5 }
+```
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/Array.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/Array.mdx
new file mode 100644
index 0000000000..a08672f15a
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/Array.mdx
@@ -0,0 +1,41 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array()
+
+The **`Array()`** constructor is used to create `Array` objects.
+
+## Syntax
+
+```js
+new Array(element0, element1, /* … ,*/ elementN)
+new Array(arrayLength)
+
+Array(element0, element1, /* … ,*/ elementN)
+Array(arrayLength)
+```
+
+> **Note:** `Array()` can be called with or without `new`. Both create a new `Array` instance.
+
+### Parameters
+
+- `elementN`
+ - : A JavaScript array is initialized with the given elements, except in the case where
+ a single argument is passed to the `Array` constructor and that argument is
+ a number (see the `arrayLength` parameter below). Note that this special case only
+ applies to JavaScript arrays created with the `Array` constructor, not
+ array literals created with the bracket syntax.
+- `arrayLength`
+ - : If the only argument passed to the `Array` constructor is an integer
+ between 0 and 232 - 1 (inclusive), this returns a new JavaScript array with
+ its `length` property set to that number (**Note:** this
+ implies an array of `arrayLength` empty slots, not slots with actual
+ `undefined` values).
+
+### Exceptions
+
+- [`RangeError`](../../globals/RangeError/RangeError.mdx)
+ - : Thrown if there's only one argument (`arrayLength`) and its value is not between 0 and 232 - 1 (inclusive).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/from.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/from.mdx
new file mode 100644
index 0000000000..f4c3e0c4e6
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/from.mdx
@@ -0,0 +1,62 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.from
+
+The **`Array.from()`** static method creates a new, shallow-copied `Array` instance from an iterable or array-like object.
+
+## Syntax
+
+```js
+Array.from(arrayLike)
+
+// Arrow function
+Array.from(arrayLike, (element) => { /* … */ })
+Array.from(arrayLike, (element, index) => { /* … */ })
+
+// Mapping function
+Array.from(arrayLike, mapFn)
+Array.from(arrayLike, mapFn, thisArg)
+
+// Inline mapping function
+Array.from(arrayLike, function (element) { /* … */ })
+Array.from(arrayLike, function (element, index) { /* … */ })
+Array.from(arrayLike, function (element) { /* … */ }, thisArg)
+Array.from(arrayLike, function (element, index) { /* … */ }, thisArg)
+```
+
+### Parameters
+
+- `arrayLike`
+ - : An iterable or array-like object to convert to an array.
+- `mapFn` _**optional**_
+
+ - : Map function to call on every element of the array. If provided, every value to be added to the array is first passed through this function, and `mapFn`'s return value is added to the array instead.
+
+ The function is called with the following arguments:
+
+ - `element`
+ - : The current element being processed in the array.
+ - `index`
+ - : The index of the current element being processed in the array.
+
+- `thisArg` _**optional**_
+ - : Value to use as `this` when executing `mapFn`.
+
+### Return value
+
+A new `Array` instance.
+
+## Description
+
+`Array.from()` lets you create `Array`s from:
+
+- [iterable objects](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Iteration_protocols) (objects such as [`Map`](../Map/Map.mdx) and [`Set`](../Set/Set.mdx); or, if the object is not iterable,
+- array-like objects (objects with a `length` property and indexed elements).
+
+`Array.from()` never creates a sparse array. If the `arrayLike` object is missing some index properties, they become `undefined` in the new array.
+
+`Array.from()` has an optional parameter `mapFn`, which allows you to execute a function on each element of the array being created, similar to [`Array.prototype.map()`](./prototype/map.mdx). More clearly, `Array.from(obj, mapFn, thisArg)` has the same result as `Array.from(obj).map(mapFn, thisArg)`, except that it does not create an intermediate array, and `mapFn` only receives two arguments (`element`, `index`) without the whole array, because the array is still under construction.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/isArray.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/isArray.mdx
new file mode 100644
index 0000000000..848da01bb8
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/isArray.mdx
@@ -0,0 +1,32 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.isArray()
+
+The **`Array.isArray()`** static method determines whether the passed value is an `Array`.
+
+## Syntax
+
+```js
+Array.isArray(value)
+```
+
+### Parameters
+
+- `value`
+ - : The value to be checked.
+
+### Return value
+
+`true` if `value` is an `Array`; otherwise, `false`. `false` is always returned if `value` is a `TypedArray` instance.
+
+## Description
+
+`Array.isArray()` checks if the passed value is an `Array`. It does not check the value's prototype chain, nor does it rely on the `Array` constructor it is attached to. It returns `true` for any value that was created using the array literal syntax or the `Array` constructor. This makes it safe to use with cross-realm objects, where the identity of the `Array` constructor is different and would therefore cause `instanceof Array` to fail.
+
+See the article ["Determining with absolute accuracy whether or not a JavaScript object is an array"](https://web.mit.edu/jwalden/www/isArray.html) for more details.
+
+`Array.isArray()` also rejects objects with `Array.prototype` in its prototype chain but aren't actual arrays, which `instanceof Array` would accept.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/of.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/of.mdx
new file mode 100644
index 0000000000..0fc47761ed
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/of.mdx
@@ -0,0 +1,41 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.of()
+The **`Array.of()`** method creates a new `Array`
+instance from a variable number of arguments, regardless of number or type of the
+arguments.
+
+## Syntax
+
+```js
+Array.of(element0)
+Array.of(element0, element1)
+Array.of(element0, element1, /* … ,*/ elementN)
+```
+
+### Parameters
+
+- `elementN`
+ - : Elements used to create the array.
+
+### Return value
+
+A new `Array` instance.
+
+## Description
+
+The difference between `Array.of()` and the [`Array()`](./Array.mdx) constructor is in the handling of single arguments: `Array.of(7)` creates an array with a single element, `7`, whereas `Array(7)` creates an empty array with a `length` property of `7`. (That implies an array of 7 empty slots, not slots with actual [`undefined`](../undefined.mdx) values.)
+
+```js
+Array.of(7); // [7]
+Array(7); // array of 7 empty slots
+
+Array.of(1, 2, 3); // [1, 2, 3]
+Array(1, 2, 3); // [1, 2, 3]
+```
+
+The `Array.of()` method is a generic factory method. For example, if a subclass of `Array` inherits the `of()` method, the inherited `of()` method will return new instances of the subclass instead of `Array` instances. In fact, the `this` value can be any constructor function that accepts a single argument representing the length of the new array, and the constructor will be called with the number of arguments passed to `of()`. The final `length` will be set again when all elements are assigned. If the `this` value is not a constructor function, the plain `Array` constructor is used instead.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/@@iterator.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/@@iterator.mdx
new file mode 100644
index 0000000000..b49c9f766e
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/@@iterator.mdx
@@ -0,0 +1,21 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype\[Symbol.iterator]()
+
+The **`Symbol.iterator`** method of an `Array` object implements the [iterable protocol](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Iteration_protocols) and allows arrays to be consumed by most syntaxes expecting iterables, such as the [spread syntax](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Spread_syntax) and [`for...of`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/for...of) loops. It returns an iterator that yields the value of each index in the array.
+
+The initial value of this property is the same function object as the initial value of the [`Array.prototype.values`](./values.mdx) property.
+
+## Syntax
+
+```js
+array[Symbol.iterator]()
+```
+
+### Return value
+
+The same return value as [`Array.prototype.values()`](./values.mdx): a new iterable iterator object that yields the value of each index in the array.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/@@unscopables.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/@@unscopables.mdx
new file mode 100644
index 0000000000..70125922cc
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/@@unscopables.mdx
@@ -0,0 +1,33 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype[Symbol.unscopables]
+
+The **`@@unscopables`** data property of `Array.prototype` is shared by all `Array` instances. It contains property names that were not included in the ECMAScript standard prior to the ES2015 version and that are ignored for [`with`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/with) statement-binding purposes.
+
+## Value
+
+A [`null`-prototype object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object#null-prototype_objects) with property names given below and their values set to `true`.
+
+## Description
+
+The default `Array` properties that are ignored for `with` statement-binding purposes are:
+
+- [`at()`](./at.mdx)
+- [`copyWithin()`](./copyWithin.mdx)
+- [`entries()`](./entries.mdx)
+- [`fill()`](./fill.mdx)
+- [`find()`](./find.mdx)
+- [`findIndex()`](./findIndex.mdx)
+- [`flat()`](./flat.mdx)
+- [`flatMap()`](./flatMap.mdx)
+- [`includes()`](./includes.mdx)
+- [`keys()`](./keys.mdx)
+- [`values()`](./values.mdx)
+
+`Array.prototype[@@unscopables]` is an empty object only containing all the above property names with the value `true`. Its [prototype is `null`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object#null-prototype_objects), so `Object.prototype` properties like [`toString`](../../Object/prototype/toString.mdx) won't accidentally be made unscopable, and a `toString()` within the `with` statement will continue to be called on the array.
+
+See [`Symbol.unscopables`](../../Symbol/unscopables.mdx) for how to set unscopable properties for your own objects.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/at.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/at.mdx
new file mode 100644
index 0000000000..72daaa0ac5
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/at.mdx
@@ -0,0 +1,32 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.at
+
+The **`at()`** method takes an integer value and returns the item at that index, allowing for positive and negative integers. Negative integers count back from the last item in the array.
+
+## Syntax
+
+```js
+at(index)
+```
+
+### Parameters
+
+- `index`
+ - : Zero-based index of the array element to be returned, converted to an integer. Negative index counts back from the end of the array — if `index < 0`, `index + array.length` is accessed.
+
+### Return value
+
+The element in the array matching the given index. Always returns [`undefined`](../../../globals/undefined.mdx) if `index < -array.length` or `index >= array.length` without attempting to access the corresponding property.
+
+## Description
+
+The `at()` method is equivalent to the bracket notation when `index` is non-negative. For example, `array[0]` and `array.at(0)` both return the first item. However, when counting elements from the end of the array, you cannot use `array[-1]` like you may in Python or R, because all values inside the square brackets are treated literally as string properties, so you will end up reading `array["-1"]`, which is just a normal string property instead of an array index.
+
+The usual practice is to access [`Array.prototype.length`](./length.mdx) and calculate the index from that — for example, `array[array.length - 1]`. The `at()` method allows relative indexing, so this can be shortened to `array.at(-1)`.
+
+The `at()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/concat.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/concat.mdx
new file mode 100644
index 0000000000..d2892232e7
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/concat.mdx
@@ -0,0 +1,41 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.concat
+
+The **`concat()`** method is used to merge two or more arrays.
+This method does not change the existing arrays, but instead returns a new array.
+
+## Syntax
+
+```js
+concat()
+concat(value0)
+concat(value0, value1)
+concat(value0, value1, /* … ,*/ valueN)
+```
+
+### Parameters
+
+- `valueN` _**optional**_
+ - : Arrays and/or values to concatenate into a new array. If all
+ `valueN` parameters are omitted, `concat` returns a
+ [shallow copy](https://developer.mozilla.org/docs/Glossary/Shallow_copy) of the existing array on which it is called. See the description below
+ for more details.
+
+### Return value
+
+A new `Array` instance.
+
+## Description
+
+The `concat` method creates a new array. The array will first be populated by the elements in the object on which it is called. Then, for each argument, its value will be concatenated into the array — for normal objects or primitives, the argument itself will become an element of the final array; for arrays or array-like objects with the property [`Symbol.isConcatSpreadable`](../../Symbol/isConcatSpreadable.mdx) set to a truthy value, each element of the argument will be independently added to the final array. The `concat` method does not recurse into nested array arguments.
+
+The `concat()` method is a copying. It does not alter `this` or any of the arrays provided as arguments but instead returns a [shallow copy](https://developer.mozilla.org/docs/Glossary/Shallow_copy) that contains the same elements as the ones from the original arrays.
+
+The `concat()` method preserves empty slots if any of the source arrays is sparse.
+
+The `concat()` method is generic. The `this` value is treated in the same way as the other arguments (except it will be converted to an object first), which means plain objects will be directly prepended to the resulting array, while array-like objects with truthy `Symbol.isConcatSpreadable` will be spread into the resulting array.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/copyWithin.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/copyWithin.mdx
new file mode 100644
index 0000000000..c008879349
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/copyWithin.mdx
@@ -0,0 +1,54 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.copyWithin
+
+The **`copyWithin()`** method shallow copies part of an array
+to another location in the same array and returns it without modifying its length.
+
+
+
+## Syntax
+
+```js
+copyWithin(target)
+copyWithin(target, start)
+copyWithin(target, start, end)
+```
+
+### Parameters
+
+- `target`
+ - : Zero-based index at which to copy the sequence to, converted to an integer.
+ - Negative index counts back from the end of the array — if `target < 0`, `target + array.length` is used.
+ - If `target < -array.length`, `0` is used.
+ - If `target >= array.length`, nothing is copied.
+ - If `target` is positioned after `start` after normalization, copying only happens until the end of `array.length` (in other words, `copyWithin()` never extends the array).
+- `start` _**optional**_
+ - : Zero-based index at which to start copying elements from, converted to an integer.
+ - Negative index counts back from the end of the array — if `start < 0`, `start + array.length` is used.
+ - If `start < -array.length` or `start` is omitted, `0` is used.
+ - If `start >= array.length`, nothing is copied.
+- `end` _**optional**_
+ - : Zero-based index at which to end copying elements from, converted to an integer. `copyWithin()` copies up to but not including `end`.
+ - Negative index counts back from the end of the array — if `end < 0`, `end + array.length` is used.
+ - If `end < -array.length`, `0` is used.
+ - If `end >= array.length` or `end` is omitted, `array.length` is used, causing all elements until the end to be copied.
+ - If `end` is positioned before or at `start` after normalization, nothing is copied.
+
+### Return value
+
+The modified array.
+
+## Description
+
+The `copyWithin()` method works like C and C++'s `memmove`, and is a high-performance method to shift the data of an `Array`. The sequence is copied and pasted as one operation; the pasted sequence will have the copied values even when the copy and paste region overlap.
+
+The `copyWithin()` method is a mutating method. It does not alter the length of `this`, but it will change the content of `this` and create new properties or delete existing properties, if necessary.
+
+The `copyWithin()` method preserves empty slots. If the region to be copied from is sparse, the empty slots' corresponding new indices are [deleted](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/delete) and also become empty slots.
+
+The `copyWithin()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties. Although strings are also array-like, this method is not suitable to be applied on them, as strings are immutable.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/entries.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/entries.mdx
new file mode 100644
index 0000000000..954fc63b1f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/entries.mdx
@@ -0,0 +1,27 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.entries
+
+The **`entries()`** method returns a new **Array
+Iterator** object that contains the key/value pairs for each index in the
+array.
+
+## Syntax
+
+```js
+entries()
+```
+
+### Return value
+
+A new `Array` iterator object.
+
+## Description
+
+When used on sparse arrays, the `entries()` method iterates empty slots as if they have the value `undefined`.
+
+The `entries()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/every.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/every.mdx
new file mode 100644
index 0000000000..f8a4de7880
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/every.mdx
@@ -0,0 +1,70 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.every
+
+The **`every()`** method tests whether
+all elements in the array pass the test implemented by the provided function. It
+returns a Boolean value.
+
+## Syntax
+
+```js
+// Arrow function
+every((element) => { /* … */ })
+every((element, index) => { /* … */ })
+every((element, index, array) => { /* … */ })
+
+// Callback function
+every(callbackFn)
+every(callbackFn, thisArg)
+
+// Inline callback function
+every(function (element) { /* … */ })
+every(function (element, index) { /* … */ })
+every(function (element, index, array) { /* … */ })
+every(function (element, index, array) { /* … */ }, thisArg)
+```
+
+### Parameters
+
+- `callbackFn`
+
+ - : A function to execute for each element in the array. It should return a [truthy](https://developer.mozilla.org/docs/Glossary/Truthy) value to indicate the element passes the test, and a falsy value otherwise.
+
+ The function is called with the following arguments:
+
+ - `element`
+ - : The current element being processed in the array.
+ - `index`
+ - : The index of the current element being processed in the array.
+ - `array`
+ - : The array `every()` was called upon.
+
+- `thisArg` _**optional**_
+ - : A value to use as `this` when executing `callbackFn`.
+
+### Return value
+
+`true` if `callbackFn` returns a [truthy](https://developer.mozilla.org/docs/Glossary/Truthy) value for every array element. Otherwise, `false`.
+
+## Description
+
+The `every()` method is an iterative method. It calls a provided `callbackFn` function once for each element in an array, until the `callbackFn` returns a [falsy](https://developer.mozilla.org/docs/Glossary/Falsy) value. If such an element is found, `every()` immediately returns `false` and stops iterating through the array. Otherwise, if `callbackFn` returns a [truthy](https://developer.mozilla.org/docs/Glossary/Truthy) value for all elements, `every()` returns `true`.
+
+`every` acts like the "for all" quantifier in mathematics. In particular, for an empty array, it returns `true`. (It is [vacuously true](https://en.wikipedia.org/wiki/Vacuous_truth) that all elements of the [empty set](https://en.wikipedia.org/wiki/Empty_set#Properties) satisfy any given condition.)
+
+`callbackFn` is invoked only for array indexes which have assigned values. It is not invoked for empty slots in sparse arrays.
+
+`every()` does not mutate the array on which it is called, but the function provided as `callbackFn` can. Note, however, that the length of the array is saved _before_ the first invocation of `callbackFn`. Therefore:
+
+- `callbackFn` will not visit any elements added beyond the array's initial length when the call to `every()` began.
+- Changes to already-visited indexes do not cause `callbackFn` to be invoked on them again.
+- If an existing, yet-unvisited element of the array is changed by `callbackFn`, its value passed to the `callbackFn` will be the value at the time that element gets visited. [Deleted](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/delete) elements are not visited.
+
+
+
+The `every()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/fill.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/fill.mdx
new file mode 100644
index 0000000000..83564660fd
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/fill.mdx
@@ -0,0 +1,46 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.fill
+
+The **`fill()`** method changes all elements in an array to a static value, from a start index (default `0`) to an end index (default `array.length`).
+It returns the modified array.
+
+## Syntax
+
+```js
+fill(value)
+fill(value, start)
+fill(value, start, end)
+```
+
+### Parameters
+
+- `value`
+ - : Value to fill the array with. Note all elements in the array will be this exact value: if `value` is an object, each slot in the array will reference that object.
+- `start` _**optional**_
+ - : Zero-based index at which to start filling, converted to an integer.
+ - Negative index counts back from the end of the array — if `start < 0`, `start + array.length` is used.
+ - If `start < -array.length` or `start` is omitted, `0` is used.
+ - If `start >= array.length`, no index is filled.
+- `end` _**optional**_
+ - : Zero-based index at which to end filling, converted to an integer. `fill()` fills up to but not including `end`.
+ - Negative index counts back from the end of the array — if `end < 0`, `end + array.length` is used.
+ - If `end < -array.length`, `0` is used.
+ - If `end >= array.length` or `end` is omitted, `array.length` is used, causing all indices until the end to be filled.
+ - If `end` is positioned before or at `start` after normalization, no index is filled.
+
+### Return value
+
+The modified array, filled with `value`.
+
+## Description
+
+The `fill()` method is a mutating method. It does not alter the length of `this`, but it will change the content of `this`.
+
+The `fill()` method fills empty slots in sparse arrays with `value` as well.
+
+The `fill()` method is generic. It only expects the `this` value to have a `length` property. Although strings are also array-like, this method is not suitable to be applied on them, as strings are immutable.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/filter.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/filter.mdx
new file mode 100644
index 0000000000..37c60f1dfb
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/filter.mdx
@@ -0,0 +1,64 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.filter
+
+The **`filter()`** method creates a [shallow copy](https://developer.mozilla.org/docs/Glossary/Shallow_copy) of a portion of a given array, filtered down to just the elements from the given array that pass the test implemented by the provided function.
+
+## Syntax
+
+```js
+// Arrow function
+filter((element) => { /* … */ })
+filter((element, index) => { /* … */ })
+filter((element, index, array) => { /* … */ })
+
+// Callback function
+filter(callbackFn)
+filter(callbackFn, thisArg)
+
+// Inline callback function
+filter(function (element) { /* … */ })
+filter(function (element, index) { /* … */ })
+filter(function (element, index, array) { /* … */ })
+filter(function (element, index, array) { /* … */ }, thisArg)
+```
+
+### Parameters
+
+- `callbackFn`
+
+ - : A function to execute for each element in the array. It should return a [truthy](https://developer.mozilla.org/docs/Glossary/Truthy) to keep the element in the resulting array, and a falsy value otherwise.
+
+ The function is called with the following arguments:
+
+ - `element`
+ - : The current element being processed in the array.
+ - `index`
+ - : The index of the current element being processed in the array.
+ - `array`
+ - : The array `filter()` was called upon.
+
+- `thisArg` _**optional**_
+ - : A value to use as `this` when executing `callbackFn`.
+
+### Return value
+
+A [shallow copy](https://developer.mozilla.org/docs/Glossary/Shallow_copy) of a portion of the given array, filtered down to just the elements from the given array that pass the test implemented by the provided function. If no elements pass the test, an empty array will be returned.
+
+## Description
+
+The `filter()` method is an iterative method. It calls a provided `callbackFn` function once for each element in an array, and constructs a new array of all the values for which `callbackFn` returns a [truthy](https://developer.mozilla.org/docs/Glossary/Truthy) value. Array elements which do not pass the `callbackFn` test are not included in the new array.
+
+`callbackFn` is invoked only for array indexes which have assigned values. It is not invoked for empty slots in sparse arrays.
+
+The `filter()` method is a copying method. It does not alter `this` but instead returns a [shallow copy](https://developer.mozilla.org/docs/Glossary/Shallow_copy) that contains the same elements as the ones from the original array (with some filtered out). However, the function provided as `callbackFn` can mutate the array. Note, however, that the length of the array is saved _before_ the first invocation of `callbackFn`. Therefore:
+
+- `callbackFn` will not visit any elements added beyond the array's initial length when the call to `filter()` began.
+- Changes to already-visited indexes do not cause `callbackFn` to be invoked on them again.
+- If an existing, yet-unvisited element of the array is changed by `callbackFn`, its value passed to the `callbackFn` will be the value at the time that element gets visited. [Deleted](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/delete) elements are not visited.
+
+The `filter()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/find.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/find.mdx
new file mode 100644
index 0000000000..7dad46af5e
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/find.mdx
@@ -0,0 +1,73 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.find()
+
+The `find()` method returns the first element in the provided array that satisfies the provided testing function.
+If no values satisfy the testing function, [`undefined`](../../../globals/undefined.mdx) is returned.
+
+- If you need the **index** of the found element in the array, use [`findIndex()`](./findIndex.mdx).
+- If you need to find the **index of a value**, use [`indexOf()`](./indexOf.mdx).
+ (It's similar to [`findIndex()`](./findIndex.mdx), but checks each element for equality with the value instead of using a testing function.)
+- If you need to find if a value **exists** in an array, use [`includes()`](./includes.mdx).
+ Again, it checks each element for equality with the value instead of using a testing function.
+- If you need to find if any element satisfies the provided testing function, use [`some()`](./some.mdx).
+
+## Syntax
+
+```js
+// Arrow function
+find((element) => { /* … */ })
+find((element, index) => { /* … */ })
+find((element, index, array) => { /* … */ })
+
+// Callback function
+find(callbackFn)
+find(callbackFn, thisArg)
+
+// Inline callback function
+find(function (element) { /* … */ })
+find(function (element, index) { /* … */ })
+find(function (element, index, array) { /* … */ })
+find(function (element, index, array) { /* … */ }, thisArg)
+```
+
+### Parameters
+
+- `callbackFn`
+
+ - : A function to execute for each element in the array. It should return a [truthy](https://developer.mozilla.org/docs/Glossary/Truthy) value to indicate a matching element has been found.
+
+ The function is called with the following arguments:
+
+ - `element`
+ - : The current element being processed in the array.
+ - `index`
+ - : The index of the current element being processed in the array.
+ - `array`
+ - : The array `find()` was called upon.
+
+- `thisArg` _**optional**_
+ - : A value to use as `this` when executing `callbackFn`.
+
+### Return value
+
+The first element in the array that satisfies the provided testing function.
+Otherwise, [`undefined`](../../../globals/undefined.mdx) is returned.
+
+## Description
+
+The `find()` method is an iterative method. It calls a provided `callbackFn` function once for each element in an array in ascending-index order, until `callbackFn` returns a [truthy](https://developer.mozilla.org/docs/Glossary/Truthy) value. `find()` then returns that element and stops iterating through the array. If `callbackFn` never returns a truthy value, `find()` returns [`undefined`](../../../globals/undefined.mdx).
+
+`callbackFn` is invoked for _every_ index of the array, not just those with assigned values. Empty slots in sparse arrays behave the same as `undefined`.
+
+`find()` does not mutate the array on which it is called, but the function provided as `callbackFn` can. Note, however, that the length of the array is saved _before_ the first invocation of `callbackFn`. Therefore:
+
+- `callbackFn` will not visit any elements added beyond the array's initial length when the call to `find()` began.
+- Changes to already-visited indexes do not cause `callbackFn` to be invoked on them again.
+- If an existing, yet-unvisited element of the array is changed by `callbackFn`, its value passed to the `callbackFn` will be the value at the time that element gets visited. [Deleted](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/delete) elements are visited as if they were `undefined`.
+
+The `find()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/findIndex.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/findIndex.mdx
new file mode 100644
index 0000000000..2601212f4e
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/findIndex.mdx
@@ -0,0 +1,67 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.findIndex
+
+The **`findIndex()`** method returns the index of the first element in an array that satisfies the provided testing function.
+If no elements satisfy the testing function, -1 is returned.
+
+See also the [`find()`](./find.mdx) method, which returns the first element that satisfies the testing function (rather than its index).
+
+## Syntax
+
+```js
+// Arrow function
+findIndex((element) => { /* … */ })
+findIndex((element, index) => { /* … */ })
+findIndex((element, index, array) => { /* … */ })
+
+// Callback function
+findIndex(callbackFn)
+findIndex(callbackFn, thisArg)
+
+// Inline callback function
+findIndex(function (element) { /* … */ })
+findIndex(function (element, index) { /* … */ })
+findIndex(function (element, index, array) { /* … */ })
+findIndex(function (element, index, array) { /* … */ }, thisArg)
+```
+
+### Parameters
+
+- `callbackFn`
+
+ - : A function to execute for each element in the array. It should return a [truthy](https://developer.mozilla.org/docs/Glossary/Truthy) value to indicate a matching element has been found.
+
+ The function is called with the following arguments:
+
+ - `element`
+ - : The current element being processed in the array.
+ - `index`
+ - : The index of the current element being processed in the array.
+ - `array`
+ - : The array `findIndex()` was called upon.
+
+- `thisArg` _**optional**_
+ - : A value to use as `this` when executing `callbackFn`.
+
+### Return value
+
+The index of the first element in the array that passes the test. Otherwise, `-1`.
+
+## Description
+
+The `findIndex()` is an iterative method. It calls a provided `callbackFn` function once for each element in an array in ascending-index order, until `callbackFn` returns a [truthy](https://developer.mozilla.org/docs/Glossary/Truthy) value. `findIndex()` then returns the index of that element and stops iterating through the array. If `callbackFn` never returns a truthy value, `findIndex()` returns `-1`.
+
+`callbackFn` is invoked for _every_ index of the array, not just those with assigned values. Empty slots in sparse arrays behave the same as `undefined`.
+
+`findIndex()` does not mutate the array on which it is called, but the function provided as `callbackFn` can. Note, however, that the length of the array is saved _before_ the first invocation of `callbackFn`. Therefore:
+
+- `callbackFn` will not visit any elements added beyond the array's initial length when the call to `findIndex()` began.
+- Changes to already-visited indexes do not cause `callbackFn` to be invoked on them again.
+- If an existing, yet-unvisited element of the array is changed by `callbackFn`, its value passed to the `callbackFn` will be the value at the time that element gets visited. [Deleted](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/delete) elements are visited as if they were `undefined`.
+
+The `findIndex()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/flat.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/flat.mdx
new file mode 100644
index 0000000000..22d358b478
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/flat.mdx
@@ -0,0 +1,35 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.flat
+
+The **`flat()`** method creates a new array with all sub-array
+elements concatenated into it recursively up to the specified depth.
+
+## Syntax
+
+```js
+flat()
+flat(depth)
+```
+
+### Parameters
+
+- `depth` _**optional**_
+ - : The depth level specifying how deep a nested array structure should be flattened.
+ Defaults to 1.
+
+### Return value
+
+A new array with the sub-array elements concatenated into it.
+
+## Description
+
+The `flat()` method is a copying method. It does not alter `this` but instead returns a [shallow copy](https://developer.mozilla.org/docs/Glossary/Shallow_copy) that contains the same elements as the ones from the original array.
+
+The `flat()` method ignores empty slots if the array being flattened is sparse. For example, if `depth` is 1, both empty slots in the root array and in the first level of nested arrays are ignored, but empty slots in further nested arrays are preserved with the arrays themselves.
+
+The `flat()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties. However, its elements must be arrays if they are to be flattened.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/flatMap.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/flatMap.mdx
new file mode 100644
index 0000000000..e3c1d73392
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/flatMap.mdx
@@ -0,0 +1,57 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.flatMap()
+
+The **`flatMap()`** method returns a new array formed by applying a given callback function to each element of the array, and then flattening the result by one level. It is identical to a [`Array.prototype.map()`](./map.mdx) followed by a [`Array.prototype.flat()`](./flat.mdx) of depth 1 (`arr.map(...args).flat()`), but slightly more efficient than calling those two methods separately.
+
+## Syntax
+
+```js
+// Arrow function
+flatMap((element) => { /* … */ })
+flatMap((element, index) => { /* … */ })
+flatMap((element, index, array) => { /* … */ })
+
+// Callback function
+flatMap(callbackFn)
+flatMap(callbackFn, thisArg)
+
+// Inline callback function
+flatMap(function (element) { /* … */ })
+flatMap(function (element, index) { /* … */ })
+flatMap(function (element, index, array) { /* … */ })
+flatMap(function (element, index, array) { /* … */ }, thisArg)
+```
+
+### Parameters
+
+- `callbackFn`
+
+ - : A function to execute for each element in the array. It should return an array containing new elements of the new array, or a single non-array value to be added to the new array.
+
+ The function is called with the following arguments:
+
+ - `element`
+ - : The current element being processed in the array.
+ - `index`
+ - : The index of the current element being processed in the array.
+ - `array`
+ - : The array `flatMap()` was called upon.
+
+- `thisArg` _**optional**_
+ - : A value to use as `this` when executing `callbackFn`.
+
+### Return value
+
+A new array with each element being the result of the callback function and flattened
+by a depth of 1.
+
+## Description
+
+The `flatMap()` method is an iterative method. See [`Array.prototype.map()`](./map.mdx) for a detailed description of the callback function. The `flatMap()` method is identical to [`map(callbackFn, thisArg)`](./map.mdx) followed by [`flat(1)`](./flat.mdx) — for each element, it produces an array of new elements, and concatenates the resulting arrays together to form a new array.
+
+The `flatMap()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties. However, the value returned from `callbackFn` must be an array if it is to be flattened.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/forEach.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/forEach.mdx
new file mode 100644
index 0000000000..75adb7d91f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/forEach.mdx
@@ -0,0 +1,70 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.forEach()
+
+The **`forEach()`** method executes a provided function once
+for each array element.
+
+## Syntax
+
+```js
+// Arrow function
+forEach((element) => { /* … */ })
+forEach((element, index) => { /* … */ })
+forEach((element, index, array) => { /* … */ })
+
+// Callback function
+forEach(callbackFn)
+forEach(callbackFn, thisArg)
+
+// Inline callback function
+forEach(function (element) { /* … */ })
+forEach(function (element, index) { /* … */ })
+forEach(function (element, index, array) { /* … */ })
+forEach(function (element, index, array) { /* … */ }, thisArg)
+```
+
+### Parameters
+
+- `callbackFn`
+
+ - : A function to execute for each element in the array. Its return value is discarded.
+
+ The function is called with the following arguments:
+
+ - `element`
+ - : The current element being processed in the array.
+ - `index`
+ - : The index of the current element being processed in the array.
+ - `array`
+ - : The array `forEach()` was called upon.
+
+- `thisArg` _**optional**_
+ - : A value to use as `this` when executing `callbackFn`.
+
+### Return value
+
+`undefined`.
+
+## Description
+
+The `forEach()` method is an iterative method. It calls a provided `callbackFn` function once for each element in an array in ascending-index order. Unlike [`Array.prototype.map()`](./map.mdx), `forEach()` always returns [`undefined`](../../../globals/undefined.mdx) and is not chainable. The typical use case is to execute side effects at the end of a chain.
+
+`callbackFn` is invoked only for array indexes which have assigned values. It is not invoked for empty slots in sparse arrays.
+
+`forEach()` does not mutate the array on which it is called, but the function provided as `callbackFn` can. Note, however, that the length of the array is saved _before_ the first invocation of `callbackFn`. Therefore:
+
+- `callbackFn` will not visit any elements added beyond the array's initial length when the call to `forEach()` began.
+- Changes to already-visited indexes do not cause `callbackFn` to be invoked on them again.
+- If an existing, yet-unvisited element of the array is changed by `callbackFn`, its value passed to the `callbackFn` will be the value at the time that element gets visited. [Deleted](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/delete) elements are not visited.
+
+The `forEach()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
+
+There is no way to stop or break a `forEach()` loop other than by throwing an exception. If you need such behavior, the `forEach()` method is the wrong tool.
+
+Early termination may be accomplished with looping statements like [`for`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/for), [`for...of`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/for...of), and [`for...in`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/for...in). Array methods like [`Array.prototype.some()`](./some.mdx), [`Array.prototype.some()`](./some.mdx), [`Array.prototype.find()`](./find.mdx), and [`Array.prototype.findIndex()`](./findIndex.mdx) also stops iteration immediately when further iteration is not necessary.
+
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/includes.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/includes.mdx
new file mode 100644
index 0000000000..7ad7a76615
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/includes.mdx
@@ -0,0 +1,40 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.includes()
+
+The **`includes()`** method determines whether an array
+includes a certain value among its entries, returning `true` or
+`false` as appropriate.
+
+## Syntax
+
+```js
+includes(searchElement)
+includes(searchElement, fromIndex)
+```
+
+### Parameters
+
+- `searchElement`
+ - : The value to search for.
+- `fromIndex` _**optional**_
+ - : Zero-based index at which to start searching, converted to an integer.
+ - Negative index counts back from the end of the array — if `fromIndex < 0`, `fromIndex + array.length` is used. However, the array is still searched from front to back in this case.
+ - If `fromIndex < -array.length` or `fromIndex` is omitted, `0` is used, causing the entire array to be searched.
+ - If `fromIndex >= array.length`, the array is not searched and `false` is returned.
+
+### Return value
+
+A boolean value which is `true` if the value `searchElement` is found within the array (or the part of the array indicated by the index `fromIndex`, if specified).
+
+## Description
+
+The `includes()` method compares `searchElement` to elements of the array using the [SameValueZero](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Strict_equality) algorithm. Values of zero are all considered to be equal, regardless of sign. (That is, `-0` is equal to `0`), but `false` is _not_ considered to be the same as `0`. [`NaN`](../../NaN.mdx) can be correctly searched for.
+
+When used on sparse arrays, the `includes()` method iterates empty slots as if they have the value `undefined`.
+
+The `includes()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/indexOf.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/indexOf.mdx
new file mode 100644
index 0000000000..fc33ad4974
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/indexOf.mdx
@@ -0,0 +1,39 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.indexOf()
+
+The **`indexOf()`** method returns the first index at which a
+given element can be found in the array, or -1 if it is not present.
+
+## Syntax
+
+```js
+indexOf(searchElement)
+indexOf(searchElement, fromIndex)
+```
+
+### Parameters
+
+- `searchElement`
+ - : Element to locate in the array.
+- `fromIndex` _**optional**_
+ - : Zero-based index at which to start searching, converted to an integer.
+ - Negative index counts back from the end of the array — if `fromIndex < 0`, `fromIndex + array.length` is used. Note, the array is still searched from front to back in this case.
+ - If `fromIndex < -array.length` or `fromIndex` is omitted, `0` is used, causing the entire array to be searched.
+ - If `fromIndex >= array.length`, the array is not searched and `-1` is returned.
+
+### Return value
+
+The first index of the element in the array; **-1** if not found.
+
+## Description
+
+The `indexOf()` method compares `searchElement` to elements of the array using [strict equality](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Strict_equality) (the same algorithm used by the `===` operator).
+
+The `indexOf()` method skips empty slots in sparse arrays.
+
+The `indexOf()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/join.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/join.mdx
new file mode 100644
index 0000000000..84dc12f5f7
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/join.mdx
@@ -0,0 +1,43 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.join()
+
+The **`join()`** method creates and
+returns a new string by concatenating all of the elements in an array
+(or an [array-like object](https://developer.mozilla.org/docs/Web/JavaScript/Guide/Indexed_collections#working_with_array-like_objects)),
+separated by commas or a specified separator string. If the array has
+only one item, then that item will be returned without using the separator.
+
+## Syntax
+
+```js
+join()
+join(separator)
+```
+
+### Parameters
+
+- `separator` _**optional**_
+ - : Specifies a string to separate each pair of adjacent elements of the array. The
+ separator is converted to a string if necessary. If omitted, the array elements are
+ separated with a comma (","). If `separator` is an empty string, all
+ elements are joined without any characters in between them.
+
+### Return value
+
+A string with all array elements joined. If `arr.length` is
+`0`, the empty string is returned.
+
+## Description
+
+The string conversions of all array elements are joined into one string. If an element is `undefined`, `null`, it is converted to an empty string instead of the string `"null"` or `"undefined"`.
+
+The `join` method is accessed internally by [`Array.prototype.toString()`](./toString.mdx) with no arguments. Overriding `join` of an array instance will override its `toString` behavior as well.
+
+When used on sparse arrays, the `join()` method iterates empty slots as if they have the value `undefined`.
+
+The `join()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/keys.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/keys.mdx
new file mode 100644
index 0000000000..383d96c2ac
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/keys.mdx
@@ -0,0 +1,26 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.keys()
+
+The **`keys()`** method returns a new **Array
+Iterator** object that contains the keys for each index in the array.
+
+## Syntax
+
+```js
+keys()
+```
+
+### Return value
+
+A new `Array` iterator object.
+
+## Description
+
+When used on sparse arrays, the `keys()` method iterates empty slots as if they have the value `undefined`.
+
+The `keys()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/lastIndexOf.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/lastIndexOf.mdx
new file mode 100644
index 0000000000..dc85d2700f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/lastIndexOf.mdx
@@ -0,0 +1,40 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.lastIndexOf()
+
+The **`lastIndexOf()`** method returns the last index at which
+a given element can be found in the array, or -1 if it is not present. The array is
+searched backwards, starting at `fromIndex`.
+
+## Syntax
+
+```js
+lastIndexOf(searchElement)
+lastIndexOf(searchElement, fromIndex)
+```
+
+### Parameters
+
+- `searchElement`
+ - : Element to locate in the array.
+- `fromIndex` _**optional**_
+ - : Zero-based index at which to start searching backwards, converted to an integer.
+ - Negative index counts back from the end of the array — if `fromIndex < 0`, `fromIndex + array.length` is used.
+ - If `fromIndex < -array.length`, the array is not searched and `-1` is returned. You can think of it conceptually as starting at a nonexistent position before the beginning of the array and going backwards from there. There are no array elements on the way, so `searchElement` is never found.
+ - If `fromIndex >= array.length` or `fromIndex` is omitted, `array.length - 1` is used, causing the entire array to be searched. You can think of it conceptually as starting at a nonexistent position beyond the end of the array and going backwards from there. It eventually reaches the real end position of the array, at which point it starts searching backwards through the actual array elements.
+
+### Return value
+
+The last index of the element in the array; **-1** if not found.
+
+## Description
+
+The `lastIndexOf()` method compares `searchElement` to elements of the array using [strict equality](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Strict_equality) (the same algorithm used by the `===` operator).
+
+The `lastIndexOf()` method skips empty slots in sparse arrays.
+
+The `lastIndexOf()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/length.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/length.mdx
new file mode 100644
index 0000000000..b6e08db845
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/length.mdx
@@ -0,0 +1,40 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.length
+
+The **`length`** data property of an `Array` instance represents the number of elements in that array. The value is an unsigned, 32-bit integer that is always numerically greater than the highest index in the array.
+
+## Value
+
+A non-negative integer less than 232.
+
+## Description
+
+The value of the `length` property is a non-negative integer with a value less than 232.
+
+```js
+const listA = [1, 2, 3];
+const listB = new Array(6);
+
+console.log(listA.length);
+// 3
+
+console.log(listB.length);
+// 6
+
+listB.length = 2 ** 32; // 4294967296
+// RangeError: Invalid array length
+
+const listC = new Array(-100); // Negative numbers are not allowed
+// RangeError: Invalid array length
+```
+
+The array object observes the `length` property, and automatically syncs the `length` value with the array's content. This means:
+
+- Setting `length` to a value smaller than the current length truncates the array — elements beyond the new `length` are deleted.
+- Setting any array index (a non-negative integer smaller than 232) beyond the current `length` extends the array — the `length` property is increased to reflect the new highest index.
+- Setting `length` to an invalid value (e.g. a negative number or a non-integer) throws a `RangeError` exception.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/map.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/map.mdx
new file mode 100644
index 0000000000..078d3fd24e
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/map.mdx
@@ -0,0 +1,72 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.map()
+
+The **`map()`** method **creates
+a new array** populated with the results of calling a provided function on
+every element in the calling array.
+
+## Syntax
+
+```js
+// Arrow function
+map((element) => { /* … */ })
+map((element, index) => { /* … */ })
+map((element, index, array) => { /* … */ })
+
+// Callback function
+map(callbackFn)
+map(callbackFn, thisArg)
+
+// Inline callback function
+map(function (element) { /* … */ })
+map(function (element, index) { /* … */ })
+map(function (element, index, array) { /* … */ })
+map(function (element, index, array) { /* … */ }, thisArg)
+```
+
+### Parameters
+
+- `callbackFn`
+
+ - : A function to execute for each element in the array. Its return value is added as a single element in the new array.
+
+ The function is called with the following arguments:
+
+ - `element`
+ - : The current element being processed in the array.
+ - `index`
+ - : The index of the current element being processed in the array.
+ - `array`
+ - : The array `map()` was called upon.
+
+- `thisArg` _**optional**_
+ - : A value to use as `this` when executing `callbackFn`.
+
+### Return value
+
+A new array with each element being the result of the callback function.
+
+## Description
+
+The `map()` method is an iterative method. It calls a provided `callbackFn` function once for each element in an array and constructs a new array from the results.
+
+`callbackFn` is invoked only for array indexes which have assigned values. It is not invoked for empty slots in sparse arrays.
+
+The `map()` method is a copying method. It does not alter `this`. However, the function provided as `callbackFn` can mutate the array. Note, however, that the length of the array is saved _before_ the first invocation of `callbackFn`. Therefore:
+
+- `callbackFn` will not visit any elements added beyond the array's initial length when the call to `map()` began.
+- Changes to already-visited indexes do not cause `callbackFn` to be invoked on them again.
+- If an existing, yet-unvisited element of the array is changed by `callbackFn`, its value passed to the `callbackFn` will be the value at the time that element gets visited. [Deleted](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/delete) elements are not visited.
+
+
+
+The `map()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
+
+Since `map` builds a new array, calling it without using the returned
+array is an anti-pattern; use [`Array.prototype.forEach()`](./forEach.mdx) or
+`for...of` instead.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/pop.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/pop.mdx
new file mode 100644
index 0000000000..5ceeb3967f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/pop.mdx
@@ -0,0 +1,31 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.pop()
+
+The **`pop()`** method removes the **last**
+element from an array and returns that element. This method changes the length of the
+array.
+
+## Syntax
+
+```js
+pop()
+```
+
+### Return value
+
+The removed element from the array; [`undefined`](../../../globals/undefined.mdx) if the array is empty.
+
+## Description
+
+The `pop()` method removes the last element from an array and returns that value to the caller. If you call `pop()` on an empty array, it returns [`undefined`](../../../globals/undefined.mdx).
+
+[`Array.prototype.shift()`](./shift.mdx) has similar behavior to `pop()`, but applied to the first element in an array.
+
+The `pop()` method is a mutating method. It changes the length and the content of `this`. In case you want the value of `this` to be the same, but return a new array with the last element removed, you can use [`arr.slice(0, -1)`](./slice.mdx) instead.
+
+The `pop()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties. Although strings are also array-like, this method is not suitable to be applied on them, as strings are immutable.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/push.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/push.mdx
new file mode 100644
index 0000000000..40a1de8d11
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/push.mdx
@@ -0,0 +1,37 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.push()
+
+The **`push()`** method adds one or more elements to the end of
+an array and returns the new length of the array.
+
+## Syntax
+
+```js
+push(element0)
+push(element0, element1)
+push(element0, element1, /* … ,*/ elementN)
+```
+
+### Parameters
+
+- `elementN`
+ - : The element(s) to add to the end of the array.
+
+### Return value
+
+The new [`Array.prototype.length`](./length.mdx) property of the object upon which the method was called.
+
+## Description
+
+The `push()` method appends values to an array.
+
+[`Array.prototype.unshift()`](./unshift.mdx)has similar behavior to `push()`, but applied to the start of an array.
+
+The `push()` method is a mutating method. It changes the length and the content of `this`. In case you want the value of `this` to be the same, but return a new array with elements appended to the end, you can use [`arr.concat([element0, element1, /* ... ,*/ elementN])`](./concat.mdx) instead. Notice that the elements are wrapped in an extra array — otherwise, if the element is an array itself, it would be spread instead of pushed as a single element due to the behavior of `concat()`.
+
+The `push()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties. Although strings are also array-like, this method is not suitable to be applied on them, as strings are immutable.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/reduce.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/reduce.mdx
new file mode 100644
index 0000000000..a26246ac6a
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/reduce.mdx
@@ -0,0 +1,125 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.reduce()
+
+The **`reduce()`** method executes a user-supplied "reducer" callback function on each element of the array, in order, passing in the return value from the calculation on the preceding element.
+The final result of running the reducer across all elements of the array is a single value.
+
+The first time that the callback is run there is no "return value of the previous calculation".
+If supplied, an initial value may be used in its place.
+Otherwise the array element at index 0 is used as the initial value and iteration starts from the next element (index 1 instead of index 0).
+
+Perhaps the easiest-to-understand case for `reduce()` is to return the sum of all the elements in an array:
+
+The reducer walks through the array element-by-element, at each step adding the current array value to the result from the previous step (this result is the running sum of all the previous steps) — until there are no more elements to add.
+
+## Syntax
+
+```js
+// Arrow function
+reduce((accumulator, currentValue) => { /* … */ })
+reduce((accumulator, currentValue, currentIndex) => { /* … */ })
+reduce((accumulator, currentValue, currentIndex, array) => { /* … */ })
+
+reduce((accumulator, currentValue) => { /* … */ }, initialValue)
+reduce((accumulator, currentValue, currentIndex) => { /* … */ }, initialValue)
+reduce((accumulator, currentValue, currentIndex, array) => { /* … */ }, initialValue)
+
+// Callback function
+reduce(callbackFn)
+reduce(callbackFn, initialValue)
+
+// Inline callback function
+reduce(function (accumulator, currentValue) { /* … */ })
+reduce(function (accumulator, currentValue, currentIndex) { /* … */ })
+reduce(function (accumulator, currentValue, currentIndex, array) { /* … */ })
+
+reduce(function (accumulator, currentValue) { /* … */ }, initialValue)
+reduce(function (accumulator, currentValue, currentIndex) { /* … */ }, initialValue)
+reduce(function (accumulator, currentValue, currentIndex, array) { /* … */ }, initialValue)
+```
+
+### Parameters
+
+- `callbackFn`
+
+ - : A function to execute for each element in the array. Its return value becomes the value of the `accumulator` parameter on the next invocation of `callbackFn`. For the last invocation, the return value becomes the return value of `reduce()`.
+
+ The function is called with the following arguments:
+
+ - `accumulator`
+ - : The value resulting from the previous call to `callbackFn`. On first call, `initialValue` if specified, otherwise the value of `array[0]`.
+ - `currentValue`
+ - : The value of the current element. On first call, the value of `array[0]` if an `initialValue` was specified, otherwise the value of `array[1]`.
+ - `currentIndex`
+ - : The index position of `currentValue` in the array. On first call, `0` if `initialValue` was specified, otherwise `1`.
+ - `array`
+ - : The array `reduce()` was called upon.
+
+- `initialValue` _**optional**_
+ - : A value to which `accumulator` is initialized the first time the callback is called.
+ If `initialValue` is specified, `callbackFn` starts executing with the first value in the array as `currentValue`.
+ If `initialValue` is _not_ specified, `accumulator` is initialized to the first value in the array, and `callbackFn` starts executing with the second value in the array as `currentValue`. In this case, if the array is empty (so that there's no first value to return as `accumulator`), an error is thrown.
+
+### Return value
+
+The value that results from running the "reducer" callback function to completion over the entire array.
+
+### Exceptions
+
+- [`TypeError`](../../../globals/TypeError/TypeError.mdx)
+
+ - : The array contains no elements and `initialValue` is not provided.
+
+## Description
+
+The `reduce()` method is an iterative method. It runs a "reducer" callback function over all elements in the array, in ascending-index order, and accumulates them into a single value. Every time, the return value of `callbackFn` is passed into `callbackFn` again on next invocation as `accumulator`. The final value of `accumulator` (which is the value returned from `callbackFn` on the final iteration of the array) becomes the return value of `reduce()`.
+
+`callbackFn` is invoked only for array indexes which have assigned values. It is not invoked for empty slots in sparse arrays.
+
+Unlike other [iterative methods](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array#iterative_methods), `reduce()` does not accept a `thisArg` argument. `callbackFn` is always called with `undefined` as `this`, which gets substituted with `globalThis` if `callbackFn` is non-strict.
+
+`reduce()` is a central concept in [functional programming](https://en.wikipedia.org/wiki/Functional_programming), where it's not possible to mutate any value, so in order to accumulate all values in an array, one must return a new accumulator value on every iteration. This convention propagates to JavaScript's `reduce()`: you should use [spreading](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Spread_syntax) or other copying methods where possible to create new arrays and objects as the accumulator, rather than mutating the existing one. If you decided to mutate the accumulator instead of copying it, remember to still return the modified object in the callback, or the next iteration will receive undefined.
+
+`reduce()` does not mutate the array on which it is called, but the function provided as `callbackFn` can. Note, however, that the length of the array is saved _before_ the first invocation of `callbackFn`. Therefore:
+
+- `callbackFn` will not visit any elements added beyond the array's initial length when the call to `reduce()` began.
+- Changes to already-visited indexes do not cause `callbackFn` to be invoked on them again.
+- If an existing, yet-unvisited element of the array is changed by `callbackFn`, its value passed to the `callbackFn` will be the value at the time that element gets visited. [Deleted](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/delete) elements are not visited.
+
+
+
+The `reduce()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
+
+### When to not use reduce()
+
+Recursive functions like `reduce()` can be powerful but sometimes difficult to understand, especially for less-experienced JavaScript developers. If code becomes clearer when using other array methods, developers must weigh the readability tradeoff against the other benefits of using `reduce()`. In cases where `reduce()` is the best choice, documentation and semantic variable naming can help mitigate readability drawbacks.
+
+### Edge cases
+
+If the array only has one element (regardless of position) and no `initialValue` is provided, or if `initialValue` is provided but the array is empty, the solo value will be returned _without_ calling `callbackFn`.
+
+If `initialValue` is provided and the array is not empty, then the reduce method will always invoke the callback function starting at index 0.
+
+If `initialValue` is not provided then the reduce method will act differently for arrays with length larger than 1, equal to 1 and 0, as shown in the following example:
+
+```js
+const getMax = (a, b) => Math.max(a, b);
+
+// callback is invoked for each element in the array starting at index 0
+[1, 100].reduce(getMax, 50); // 100
+[50].reduce(getMax, 10); // 50
+
+// callback is invoked once for element at index 1
+[1, 100].reduce(getMax); // 100
+
+// callback is not invoked
+[50].reduce(getMax); // 50
+[].reduce(getMax, 1); // 1
+
+[].reduce(getMax); // TypeError
+```
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/reduceRight.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/reduceRight.mdx
new file mode 100644
index 0000000000..6c3f91cc44
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/reduceRight.mdx
@@ -0,0 +1,79 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.reduceRight()
+
+The **`reduceRight()`** method applies a function against an
+accumulator and each value of the array (from right-to-left) to reduce it to a single
+value.
+
+See also [`Array.prototype.reduce()`](./reduce.mdx) for left-to-right.
+
+## Syntax
+
+```js
+// Arrow function
+reduceRight((accumulator, currentValue) => { /* … */ })
+reduceRight((accumulator, currentValue, index) => { /* … */ })
+reduceRight((accumulator, currentValue, index, array) => { /* … */ })
+reduceRight((accumulator, currentValue, index, array) => { /* … */ }, initialValue)
+
+// Callback function
+reduceRight(callbackFn)
+reduceRight(callbackFn, initialValue)
+
+// Callback reducer function
+reduceRight(function (accumulator, currentValue) { /* … */ })
+reduceRight(function (accumulator, currentValue, index) { /* … */ })
+reduceRight(function (accumulator, currentValue, index, array) { /* … */ })
+reduceRight(function (accumulator, currentValue, index, array) { /* … */ }, initialValue)
+```
+
+### Parameters
+
+- `callbackFn`
+
+ - : A function to execute for each element in the array. Its return value becomes the value of the `accumulator` parameter on the next invocation of `callbackFn`. For the last invocation, the return value becomes the return value of `reduce()`.
+
+ The function is called with the following arguments:
+
+ - `accumulator`
+ - : The value previously returned in the last invocation of the callback, or
+ `initialValue`, if supplied. (See below.)
+ - `currentValue`
+ - : The current element being processed in the array.
+ - `index`
+ - : The index of the current element being processed in the array.
+ - `array`
+ - : The array `reduceRight()` was called upon.
+
+- `initialValue` _**optional**_
+ - : Value to use as accumulator to the first call of the
+ `callbackFn`. If no initial value is supplied, the last element in
+ the array will be used and skipped. Calling reduce or reduceRight on an empty array
+ without an initial value creates a `TypeError`.
+
+### Return value
+
+The value that results from the reduction.
+
+## Description
+
+The `reduceRight()` method is an iterative method. It runs a "reducer" callback function over all elements in the array, in descending-index order, and accumulates them into a single value.
+
+`callbackFn` is invoked only for array indexes which have assigned values. It is not invoked for empty slots in sparse arrays.
+
+Unlike other [iterative methods](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array#iterative_methods), `reduce()` does not accept a `thisArg` argument. `callbackFn` is always called with `undefined` as `this`, which gets substituted with `globalThis` if `callbackFn` is non-strict.
+
+`reduceRight()` does not mutate the array on which it is called, but the function provided as `callbackFn` can. Note, however, that the length of the array is saved _before_ the first invocation of `callbackFn`. Therefore:
+
+- `callbackFn` will not visit any elements added beyond the array's initial length when the call to `reduceRight()` began.
+- Changes to already-visited indexes do not cause `callbackFn` to be invoked on them again.
+- If an existing, yet-unvisited element of the array is changed by `callbackFn`, its value passed to the `callbackFn` will be the value at the time that element gets visited. [Deleted](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/delete) elements are not visited.
+
+
+
+The `reduceRight()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/reverse.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/reverse.mdx
new file mode 100644
index 0000000000..c08bc646f8
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/reverse.mdx
@@ -0,0 +1,28 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.reverse()
+
+The **`reverse()`** method reverses an array _[in place](https://en.wikipedia.org/wiki/In-place_algorithm)_ and returns the reference to the same array, the first array element now becoming the last, and the last array element becoming the first. In other words, elements order in the array will be turned towards the direction opposite to that previously stated.
+
+## Syntax
+
+```js
+reverse()
+```
+
+### Return value
+
+The reference to the original array, now reversed. Note that the array is reversed _[in place](https://en.wikipedia.org/wiki/In-place_algorithm)_, and no copy is made.
+
+## Description
+
+The `reverse()` method transposes the elements of the calling array object in
+place, mutating the array, and returning a reference to the array.
+
+The `reverse()` method preserves empty slots. If the source array is sparse, the empty slots' corresponding new indices are [deleted](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/delete) and also become empty slots.
+
+The `reverse()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties. Although strings are also array-like, this method is not suitable to be applied on them, as strings are immutable.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/shift.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/shift.mdx
new file mode 100644
index 0000000000..80b25508e8
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/shift.mdx
@@ -0,0 +1,33 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.shift()
+
+The **`shift()`** method removes the **first**
+element from an array and returns that removed element. This method changes the length
+of the array.
+
+## Syntax
+
+```js
+shift()
+```
+
+### Return value
+
+The removed element from the array; [`undefined`](../../../globals/undefined.mdx) if the array is empty.
+
+## Description
+
+The `shift()` method removes the element at the zeroth index and shifts the
+values at consecutive indexes down, then returns the removed value. If the
+[`Array.prototype.length`](./length.mdx) property is 0, [`undefined`](../../../globals/undefined.mdx) is returned.
+
+The [`Array.prototype.pop()`](./pop.mdx) method has similar behavior to `shift()`, but applied to the last element in an array.
+
+The `shift()` method is a mutating method. It changes the length and the content of `this`. In case you want the value of `this` to be the same, but return a new array with the first element removed, you can use [`arr.slice(1)`](./slice.mdx) instead.
+
+The `shift()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties. Although strings are also array-like, this method is not suitable to be applied on them, as strings are immutable.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/slice.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/slice.mdx
new file mode 100644
index 0000000000..322752189a
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/slice.mdx
@@ -0,0 +1,46 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.slice()
+
+The **`slice()`** method returns a [shallow copy](https://developer.mozilla.org/docs/Glossary/Shallow_copy) of a portion of
+an array into a new array object selected from `start` to `end`
+(`end` not included) where `start` and `end` represent
+the index of items in that array. The original array will not be modified.
+
+## Syntax
+
+```js
+slice()
+slice(start)
+slice(start, end)
+```
+
+### Parameters
+
+- `start` _**optional**_
+ - : Zero-based index at which to start extraction, converted to an integer.
+ - Negative index counts back from the end of the array — if `start < 0`, `start + array.length` is used.
+ - If `start < -array.length` or `start` is omitted, `0` is used.
+ - If `start >= array.length`, nothing is extracted.
+- `end` _**optional**_
+ - : Zero-based index at which to end extraction, converted to an integer. `slice()` extracts up to but not including `end`.
+ - Negative index counts back from the end of the array — if `end < 0`, `end + array.length` is used.
+ - If `end < -array.length`, `0` is used.
+ - If `end >= array.length` or `end` is omitted, `array.length` is used, causing all elements until the end to be extracted.
+ - If `end` is positioned before or at `start` after normalization, nothing is extracted.
+
+### Return value
+
+A new array containing the extracted elements.
+
+## Description
+
+The `slice()` method is a copying method. It does not alter `this` but instead returns a [shallow copy](https://developer.mozilla.org/docs/Glossary/Shallow_copy) that contains some of the same elements as the ones from the original array.
+
+The `slice()` method preserves empty slots. If the sliced portion is sparse, the returned array is sparse as well.
+
+The `slice()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/some.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/some.mdx
new file mode 100644
index 0000000000..81e0c614cc
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/some.mdx
@@ -0,0 +1,68 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.some()
+
+The **`some()`** method tests whether
+at least one element in the array passes the test implemented by the provided
+function. It returns true if, in the array, it finds an element for which the provided function returns true; otherwise it returns false. It doesn't modify the array.
+
+## Syntax
+
+```js
+// Arrow function
+some((element) => { /* … */ })
+some((element, index) => { /* … */ })
+some((element, index, array) => { /* … */ })
+
+// Callback function
+some(callbackFn)
+some(callbackFn, thisArg)
+
+// Inline callback function
+some(function (element) { /* … */ })
+some(function (element, index) { /* … */ })
+some(function (element, index, array) { /* … */ })
+some(function (element, index, array) { /* … */ }, thisArg)
+```
+
+### Parameters
+
+- `callbackFn`
+
+ - : A function to execute for each element in the array. It should return a [truthy](https://developer.mozilla.org/docs/Glossary/Truthy) to indicate the element passes the test, and a falsy value otherwise.
+
+ The function is called with the following arguments:
+
+ - `element`
+ - : The current element being processed in the array.
+ - `index`
+ - : The index of the current element being processed in the array.
+ - `array`
+ - : The array `some()` was called upon.
+
+- `thisArg` _**optional**_
+ - : A value to use as `this` when executing `callbackFn`.
+
+### Return value
+
+`true` if the callback function returns a [truthy](https://developer.mozilla.org/docs/Glossary/Truthy) value for at least one element in the array. Otherwise, `false`.
+
+## Description
+
+The `some()` method is an iterative method. It calls a provided `callbackFn` function once for each element in an array, until the `callbackFn` returns a [truthy](https://developer.mozilla.org/docs/Glossary/Truthy) value. If such an element is found, `some()` immediately returns `true` and stops iterating through the array. Otherwise, if `callbackFn` returns a [falsy](https://developer.mozilla.org/docs/Glossary/Falsy) value for all elements, `some()` returns `false`.
+
+`some()` acts like the "there exists" quantifier in mathematics. In particular, for an empty array, it returns `false` for any condition.
+
+`callbackFn` is invoked only for array indexes which have assigned values. It is not invoked for empty slots in sparse arrays.
+
+`some()` does not mutate the array on which it is called, but the function provided as `callbackFn` can. Note, however, that the length of the array is saved _before_ the first invocation of `callbackFn`. Therefore:
+
+- `callbackFn` will not visit any elements added beyond the array's initial length when the call to `some()` began.
+- Changes to already-visited indexes do not cause `callbackFn` to be invoked on them again.
+- If an existing, yet-unvisited element of the array is changed by `callbackFn`, its value passed to the `callbackFn` will be the value at the time that element gets visited. [Deleted](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/delete) elements are not visited.
+
+The `some()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/sort.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/sort.mdx
new file mode 100644
index 0000000000..6307c151db
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/sort.mdx
@@ -0,0 +1,110 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.sort()
+
+The **`sort()`** method sorts the elements of an array _[in place](https://en.wikipedia.org/wiki/In-place_algorithm)_ and returns the reference to the same array, now sorted. The default sort order is ascending, built upon converting the elements into strings, then comparing their sequences of UTF-16 code units values.
+
+The time and space complexity of the sort cannot be guaranteed as it depends on the
+implementation.
+
+## Syntax
+
+```js
+// Functionless
+sort()
+
+// Arrow function
+sort((a, b) => { /* … */ } )
+
+// Compare function
+sort(compareFn)
+
+// Inline compare function
+sort(function compareFn(a, b) { /* … */ })
+```
+
+### Parameters
+
+- `compareFn` _**optional**_
+
+ - : Specifies a function that defines the sort order. If omitted, the array elements are converted to strings, then sorted according to each character's Unicode code point value.
+
+ - `a`
+ - : The first element for comparison.
+ - `b`
+ - : The second element for comparison.
+
+### Return value
+
+The reference to the original array, now sorted. Note that the array is sorted _[in place](https://en.wikipedia.org/wiki/In-place_algorithm)_, and no copy is made.
+
+## Description
+
+If `compareFn` is not supplied, all non-`undefined` array
+elements are sorted by converting them to strings and comparing strings in UTF-16 code
+units order. For example, "banana" comes before "cherry". In a numeric sort, 9 comes
+before 80, but because numbers are converted to strings, "80" comes before "9" in the
+Unicode order. All `undefined` elements are sorted to the end of the array.
+
+The `sort()` method preserves empty slots. If the source array is sparse, the empty slots are moved to the end of the array, and always come after all the `undefined`.
+
+> **Note:** In UTF-16, Unicode characters above `\uFFFF` are
+> encoded as two surrogate code units, of the range
+> `\uD800` - `\uDFFF`. The value of each code unit is taken
+> separately into account for the comparison. Thus the character formed by the surrogate
+> pair `\uD855\uDE51` will be sorted before the character
+> `\uFF3A`.
+
+If `compareFn` is supplied, all non-`undefined` array
+elements are sorted according to the return value of the compare function (all
+`undefined` elements are sorted to the end of the array, with no call to
+`compareFn`).
+
+| `compareFn(a, b)` return value | sort order |
+| ------------------------------ | ---------------------------------- |
+| > 0 | sort `a` after `b` |
+| < 0 | sort `a` before `b` |
+| === 0 | keep original order of `a` and `b` |
+
+So, the compare function has the following form:
+
+```js
+function compareFn(a, b) {
+ if (a is less than b by some ordering criterion) {
+ return -1;
+ }
+ if (a is greater than b by the ordering criterion) {
+ return 1;
+ }
+ // a must be equal to b
+ return 0;
+}
+```
+
+More formally, the comparator is expected to have the following properties, in order to ensure proper sort behavior:
+
+- _Pure_: The comparator does not mutate the objects being compared or any external state. (This is important because there's no guarantee _when_ and _how_ the comparator will be called, so any particular call should not produce visible effects to the outside.)
+- _Stable_: The comparator returns the same result with the same pair of input.
+- _Reflexive_: `compareFn(a, a) === 0`.
+- _Anti-symmetric_: `compareFn(a, b)` and `compareFn(b, a)` must both be `0` or have opposite signs.
+- _Transitive_: If `compareFn(a, b)` and `compareFn(b, c)` are both positive, zero, or negative, then `compareFn(a, c)` has the same positivity as the previous two.
+
+A comparator conforming to the constraints above will always be able to return all of `1`, `0`, and `-1`, or consistently return `0`. For example, if a comparator only returns `1` and `0`, or only returns `0` and `-1`, it will not be able to sort reliably because _anti-symmetry_ is broken. A comparator that always returns `0` will cause the array to not be changed at all, but is reliable nonetheless.
+
+The default lexicographic comparator satisfies all constraints above.
+
+To compare numbers instead of strings, the compare function can subtract `b`
+from `a`. The following function will sort the array in ascending order (if
+it doesn't contain `Infinity` and `NaN`):
+
+```js
+function compareNumbers(a, b) {
+ return a - b;
+}
+```
+
+The `sort()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties. Although strings are also array-like, this method is not suitable to be applied on them, as strings are immutable.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/splice.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/splice.mdx
new file mode 100644
index 0000000000..22d3033e5e
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/splice.mdx
@@ -0,0 +1,59 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.splice()
+
+The **`splice()`** method changes the contents of an array by
+removing or replacing existing elements and/or adding new elements [in place](https://en.wikipedia.org/wiki/In-place_algorithm). To access part of an array without modifying it, see [`Array.prototype.slice()`](./slice.mdx).
+
+## Syntax
+
+```js
+splice(start)
+splice(start, deleteCount)
+splice(start, deleteCount, item1)
+splice(start, deleteCount, item1, item2, itemN)
+```
+
+### Parameters
+
+- `start`
+
+ - : Zero-based index at which to start changing the array, converted to an integer.
+ - Negative index counts back from the end of the array — if `start < 0`, `start + array.length` is used.
+ - If `start < -array.length` or `start` is omitted, `0` is used.
+ - If `start >= array.length`, no element will be deleted, but the method will behave as an adding function, adding as many elements as provided.
+
+- `deleteCount` _**optional**_
+
+ - : An integer indicating the number of elements in the array to remove from `start`.
+
+ If `deleteCount` is omitted, or if its value is greater than or equal to the number of elements after the position specified by `start`, then all the elements from `start` to the end of the array will be deleted. However, if you wish to pass any `itemN` parameter, you should pass `Infinity` as `deleteCount` to delete all elements after `start`, because an explicit `undefined` gets [converted](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number#integer_conversion) to `0`.
+
+ If `deleteCount` is `0` or negative, no elements are removed.
+ In this case, you should specify at least one new element (see below).
+
+- `item1`, …, `itemN` _**optional**_
+
+ - : The elements to add to the array, beginning from `start`.
+
+ If you do not specify any elements, `splice()` will only remove elements from the array.
+
+### Return value
+
+An array containing the deleted elements.
+
+If only one element is removed, an array of one element is returned.
+
+If no elements are removed, an empty array is returned.
+
+## Description
+
+The `splice()` method is a mutating method. It may change the content of `this`. If the specified number of elements to insert differs from the number of elements being removed, the array's `length` will be changed as well. At the same time, it uses [`@@species`](../@@species.mdx) to create a new array instance to be returned.
+
+If the deleted portion is sparse, the array returned by `splice()` is sparse as well, with those corresponding indices being empty slots.
+
+The `splice()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties. Although strings are also array-like, this method is not suitable to be applied on them, as strings are immutable.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/toLocaleString.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/toLocaleString.mdx
new file mode 100644
index 0000000000..1451a99636
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/toLocaleString.mdx
@@ -0,0 +1,42 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.toLocaleString()
+
+The **`toLocaleString()`** method returns a string representing
+the elements of the array. The elements are converted to Strings using their
+`toLocaleString` methods and these Strings are separated by a locale-specific
+String (such as a comma ",").
+
+
+## Syntax
+
+```js
+toLocaleString()
+toLocaleString(locales)
+toLocaleString(locales, options)
+```
+
+### Parameters
+
+- `locales` _**optional**_
+ - : A string with a BCP 47 language tag, or an array of such strings. For the general form and interpretation of the `locales` argument, see [Locale identification and negotiation](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl#locale_identification_and_negotiation).
+- `options` _**optional**_
+ - : An object with configuration properties. For numbers, see [`Number.prototype.toLocaleString()`](../../../globals/Number/prototype/toLocaleString.mdx); for dates, see [`Date.prototype.toLocaleString()`](../../../globals/Date/prototype/toLocaleString.mdx).
+
+### Return value
+
+A string representing the elements of the array.
+
+## Description
+
+The `Array.prototype.toLocaleString` method traverses its content, calling the `toLocaleString` method of every element with the `locales` and `options` parameters provided, and concatenates them with an implementation-defined separator (such as a comma ","). Note that the method itself does not consume the two parameters — it only passes them to the `toLocaleString()` of each element. The choice of the separator string depends on the host's current locale, not the `locales` parameter.
+
+If an element is `undefined`, `null`, it is converted to an empty string instead of the string `"null"` or `"undefined"`.
+
+When used on sparse arrays, the `toLocaleString()` method iterates empty slots as if they have the value `undefined`.
+
+The `toLocaleString()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/toString.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/toString.mdx
new file mode 100644
index 0000000000..459b05b3f7
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/toString.mdx
@@ -0,0 +1,35 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.toString()
+
+The **`toString()`** method returns a string representing the
+specified array and its elements.
+
+
+## Syntax
+
+```js
+toString()
+```
+
+### Return value
+
+A string representing the elements of the array.
+
+## Description
+
+The `Array` object overrides the `toString` method of `Object`. The `toString` method of arrays calls [`join()`](../../../globals/Array/prototype/join.mdx) internally, which joins the array and returns one string containing each array element separated by commas. If the `join` method is unavailable or is not a function, [`Object.prototype.toString`](../../../globals/Object/prototype/toString.mdx) is used instead, returning `[object Array]`.
+
+```js
+const arr = [];
+arr.join = 1; // re-assign `join` with a non-function
+console.log(arr.toString()); // [object Array]
+
+console.log(Array.prototype.toString.call({ join: () => 1 })); // 1
+```
+
+JavaScript calls the `toString` method automatically when an array is to be represented as a text value or when an array is referred to in a string concatenation.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/unshift.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/unshift.mdx
new file mode 100644
index 0000000000..e1c7167b2a
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/unshift.mdx
@@ -0,0 +1,62 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.unshift()
+
+The **`unshift()`** method adds one or more elements to the
+beginning of an array and returns the new length of the array.
+
+## Syntax
+
+```js
+unshift(element0)
+unshift(element0, element1)
+unshift(element0, element1, /* … ,*/ elementN)
+```
+
+### Parameters
+
+- `elementN`
+ - : The elements to add to the front of the `arr`.
+
+### Return value
+
+The new [`Array.prototype.length`](./length.mdx) property of the object upon which the
+method was called.
+
+## Description
+
+The `unshift()` method inserts the given values to the beginning of an
+array-like object.
+
+[`Array.prototype.push()`](./push.mdx) has similar behavior to `unshift()`, but applied to the end of an array.
+
+Please note that, if multiple elements are passed as parameters, they're inserted in
+chunk at the beginning of the object, in the exact same order they were passed as
+parameters. Hence, calling `unshift()` with `n`
+arguments **once**, or calling it `n` times with
+**1** argument (with a loop, for example), don't yield the same results.
+
+See example:
+
+```js
+let arr = [4, 5, 6];
+
+arr.unshift(1, 2, 3);
+console.log(arr);
+// [1, 2, 3, 4, 5, 6]
+
+arr = [4, 5, 6]; // resetting the array
+
+arr.unshift(1);
+arr.unshift(2);
+arr.unshift(3);
+
+console.log(arr);
+// [3, 2, 1, 4, 5, 6]
+```
+
+The `unshift()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties. Although strings are also array-like, this method is not suitable to be applied on them, as strings are immutable.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/values.mdx b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/values.mdx
new file mode 100644
index 0000000000..6d8511a98c
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Array/prototype/values.mdx
@@ -0,0 +1,31 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Array.prototype.values()
+
+The **`values()`** method returns a new _array [iterator](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Iteration_protocols#the_iterator_protocol)_ object that iterates the value of each index in the array.
+
+## Syntax
+
+```js
+values()
+```
+
+### Return value
+
+A new iterable iterator object.
+
+## Description
+
+`Array.prototype.values()` is the default implementation of [`Array.prototype[@@iterator]()`](./@@iterator.mdx).
+
+```js
+Array.prototype.values === Array.prototype[Symbol.iterator]; // true
+```
+
+When used on sparse arrays, the `values()` method iterates empty slots as if they have the value `undefined`.
+
+The `values()` method is generic. It only expects the `this` value to have a `length` property and integer-keyed properties.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/@@species.mdx b/documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/@@species.mdx
new file mode 100644
index 0000000000..ad6d14f1dd
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/@@species.mdx
@@ -0,0 +1,43 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# get ArrayBuffer\[Symbol.species]
+
+The **`ArrayBuffer[Symbol.species]`** accessor property returns the constructor used to construct return values from array buffer methods.
+
+> **Warning:** The existence of `Symbol.species` allows execution of arbitrary code and may create security vulnerabilities. It also makes certain optimizations much harder. Engine implementers are [investigating whether to remove this feature](https://github.com/tc39/proposal-rm-builtin-subclassing). Avoid relying on it if possible.
+
+## Syntax
+
+```js
+ArrayBuffer[Symbol.species]
+```
+
+### Return value
+
+The value of the constructor (`this`) on which `get Symbol.species` was called. The return value is used to construct return values from array buffer methods that create new array buffers.
+
+## Description
+
+The `Symbol.species` accessor property returns the default constructor for `ArrayBuffer` objects. Subclass constructors may override it to change the constructor assignment. The default implementation is basically:
+
+```js
+// Hypothetical underlying implementation for illustration
+class ArrayBuffer {
+ static get [Symbol.species]() {
+ return this;
+ }
+}
+```
+
+Because of this polymorphic implementation, `Symbol.species` of derived subclasses would also return the constructor itself by default.
+
+```js
+class SubArrayBuffer extends ArrayBuffer {}
+SubArrayBuffer[Symbol.species] === SubArrayBuffer; // true
+```
+
+When calling array buffer methods that do not mutate the existing object but return a new array buffer instance (for example, [`slice()`](./prototype/slice.mdx)), the object's `constructor[Symbol.species]` will be accessed. The returned constructor will be used to construct the return value of the array buffer method.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/ArrayBuffer.mdx b/documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/ArrayBuffer.mdx
new file mode 100644
index 0000000000..42bf9d83a2
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/ArrayBuffer.mdx
@@ -0,0 +1,32 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# ArrayBuffer()
+
+The **`ArrayBuffer()`** constructor is used to create "ArrayBuffer" objects.
+
+## Syntax
+
+```js
+new ArrayBuffer(length)
+```
+
+> **Note:** `ArrayBuffer()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+- `length`
+ - : The size, in bytes, of the array buffer to create.
+
+### Return value
+
+A new `ArrayBuffer` object of the specified size. Its contents are
+initialized to 0.
+
+### Exceptions
+
+- [`RangeError`](../RangeError/RangeError.mdx)
+ - : Thrown if the `length` is larger than `Number_MAX_SAFE_INTEGER` (≥ 253) or negative.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/isView.mdx b/documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/isView.mdx
new file mode 100644
index 0000000000..1f99acd180
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/isView.mdx
@@ -0,0 +1,28 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# ArrayBuffer.isView
+
+The **`ArrayBuffer.isView()`** method determines whether the
+passed value is one of the `ArrayBuffer` views,
+such as [typed array objects](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray)
+or a [`DataView`](../DataView/DataView.mdx).
+
+## Syntax
+
+```js
+ArrayBuffer.isView(value)
+```
+
+### Parameters
+
+- `value`
+ - : The value to be checked.
+
+### Return value
+
+`true` if the given argument is one of the `ArrayBuffer` views;
+otherwise, `false`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/prototype/byteLength.mdx b/documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/prototype/byteLength.mdx
new file mode 100644
index 0000000000..d0cecd6ac6
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/prototype/byteLength.mdx
@@ -0,0 +1,13 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# ArrayBuffer.prototype.byteLength
+
+The **`byteLength`** accessor property represents the length of an `ArrayBuffer` in bytes.
+
+## Description
+
+The `byteLength` property is an accessor property whose set accessor function is `undefined`, meaning that you can only read this property. The value is established when the array is constructed and cannot be changed. This property returns 0 if this `ArrayBuffer` has been detached.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/prototype/slice.mdx b/documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/prototype/slice.mdx
new file mode 100644
index 0000000000..ef6bc7d960
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/ArrayBuffer/prototype/slice.mdx
@@ -0,0 +1,43 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# ArrayBuffer.prototype.slice()
+
+The **`slice()`** method returns a new `ArrayBuffer`
+whose contents are a copy of this `ArrayBuffer`'s bytes from
+`begin`, inclusive, up to `end`, exclusive.
+
+## Syntax
+
+```js
+slice(begin)
+slice(begin, end)
+```
+
+### Parameters
+
+- `begin`
+ - : Zero-based byte index at which to begin slicing.
+- `end` _**optional**_
+ - : Byte index before which to end slicing. If end is unspecified, the new
+ `ArrayBuffer` contains all bytes from begin to the end of this
+ `ArrayBuffer`. If negative, it will make the Byte index begin from the last
+ Byte.
+
+### Return value
+
+A new `ArrayBuffer` object.
+
+## Description
+
+The `slice()` method copies up to, but not including, the byte indicated by
+the `end` parameter. If either `begin` or `end` is
+negative, it refers to an index from the end of the array, as opposed to from the
+beginning.
+
+The range specified by the `begin` and `end` parameters is
+clamped to the valid index range for the current array. If the computed length of the
+new `ArrayBuffer` would be negative, it is clamped to zero.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/BigInt/BigInt.mdx b/documentation/versioned_docs/version-3.21.3/globals/BigInt/BigInt.mdx
new file mode 100644
index 0000000000..79dcdc712e
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/BigInt/BigInt.mdx
@@ -0,0 +1,37 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# BigInt()
+
+The **`BigInt()`** function returns a value of type **bigint**.
+
+## Syntax
+
+```js
+BigInt(value)
+```
+
+> **Note:** `BigInt()` can only be called without `new`. Attempting to construct it with `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+- `value`
+ - : The numeric value of the object being created. It may be a string, an integer, a boolean, or another `BigInt`.
+
+### Return value
+
+A `BigInt` value. Number values must be integers and are converted to BigInts. The boolean value `true` becomes `1n`, and `false` becomes `0n`. Strings are parsed as if they are source text for integer literals, which means they can have leading and trailing whitespaces and can be prefixed with `0b`, `0o`, or `0x`.
+
+### Exceptions
+
+- [`RangeError`](../../globals/RangeError/RangeError.mdx)
+ - : Thrown if the parameter is a non-integral number.
+- [`TypeError`](../../globals/TypeError/TypeError.mdx)
+ - : Thrown if at least one of these conditions is met:
+ - The parameter cannot be converted to a primitive.
+ - After conversion to a primitive, the result is [`undefined`](../undefined.mdx), `null`, `Symbol`.
+- [`SyntaxError`](../SyntaxError/SyntaxError.mdx)
+ - : Thrown if the parameter is a string that cannot be parsed as a `BigInt`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/BigInt/asIntN.mdx b/documentation/versioned_docs/version-3.21.3/globals/BigInt/asIntN.mdx
new file mode 100644
index 0000000000..501db735dd
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/BigInt/asIntN.mdx
@@ -0,0 +1,53 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# BigInt.asIntN()
+
+The **`BigInt.asIntN`** static method clamps a `BigInt` value to the given number of bits, and returns that value as a signed integer.
+
+## Syntax
+
+```js
+BigInt.asIntN(bits, bigint)
+```
+
+### Parameters
+
+- `bits`
+ - : The amount of bits available for the returned BigInt. Should be an integer between 0 and 253 - 1, inclusive.
+- `bigint`
+ - : The BigInt value to clamp to fit into the supplied bits.
+
+### Return value
+
+The value of `bigint` modulo 2^`bits`, as a signed integer.
+
+### Exceptions
+
+- [`RangeError`](../../globals/RangeError/RangeError.mdx)
+ - : Thrown if `bits` is negative or greater than 253 - 1.
+
+## Description
+
+The `BigInt.asIntN` method clamps a `BigInt` value to the given number of bits, and interprets the result as a signed integer. For example, for `BigInt.asIntN(3, 25n)`, the value `25n` is clamped to `1n`:
+
+```plain
+25n = 00011001 (base 2)
+ ^=== Clamp to three remaining bits
+===> 001 (base 2) = 1n
+```
+
+If the leading bit of the remaining number is `1`, the result is negative. For example, `BigInt.asIntN(4, 25n)` yields `-7n`, because `1001` is the encoding of `-7` under two's complement:
+
+```plain
+25n = 00011001 (base 2)
+ ^==== Clamp to four remaining bits
+===> 1001 (base 2) = -7n
+```
+
+> **Note:** `BigInt` values are always encoded as two's complement in binary.
+
+Unlike similar language APIs such as [`Number.prototype.toExponential()`](../Number/prototype/toExponential.mdx), `asIntN` is a static property of `BigInt`, so you always use it as `BigInt.asIntN()`, rather than as a method of a BigInt value. Exposing `asIntN()` as a "standard library function" allows [interop with asm.js](https://github.com/tc39/proposal-bigint/blob/master/ADVANCED.md#dont-break-asmjs).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/BigInt/asUintN.mdx b/documentation/versioned_docs/version-3.21.3/globals/BigInt/asUintN.mdx
new file mode 100644
index 0000000000..e3dd55ec0e
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/BigInt/asUintN.mdx
@@ -0,0 +1,45 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# BigInt.asUintN()
+
+The **`BigInt.asUintN`** static method clamps a `BigInt` value to the given number of bits, and returns that value as an unsigned integer.
+
+## Syntax
+
+```js
+BigInt.asUintN(bits, bigint)
+```
+
+### Parameters
+
+- `bits`
+ - : The amount of bits available for the returned BigInt. Should be an integer between 0 and 253 - 1, inclusive.
+- `bigint`
+ - : The BigInt value to clamp to fit into the supplied bits.
+
+### Return value
+
+The value of `bigint` modulo 2^`bits`, as an unsigned integer.
+
+### Exceptions
+
+- [`RangeError`](../../globals/RangeError/RangeError.mdx)
+ - : Thrown if `bits` is negative or greater than 253 - 1.
+
+## Description
+
+The `BigInt.asUintN` method clamps a `BigInt` value to the given number of bits, and interprets the result as an unsigned integer. Unsigned integers have no sign bits and are always non-negative. For example, for `BigInt.asUintN(4, 25n)`, the value `25n` is clamped to `9n`:
+
+```plain
+25n = 00011001 (base 2)
+ ^==== Clamp to four remaining bits
+===> 1001 (base 2) = 9n
+```
+
+> **Note:** `BigInt` values are always encoded as two's complement in binary.
+
+Unlike similar language APIs such as [`Number.prototype.toExponential()`](../Number/prototype/toExponential.mdx), `asUintN` is a static property of `BigInt`, so you always use it as `BigInt.asUintN()`, rather than as a method of a BigInt value. Exposing `asUintN()` as a "standard library function" allows [interop with asm.js](https://github.com/tc39/proposal-bigint/blob/master/ADVANCED.md#dont-break-asmjs).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/BigInt/prototype/toLocaleString.mdx b/documentation/versioned_docs/version-3.21.3/globals/BigInt/prototype/toLocaleString.mdx
new file mode 100644
index 0000000000..5fe60059b0
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/BigInt/prototype/toLocaleString.mdx
@@ -0,0 +1,49 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# BigInt.prototype.toLocaleString()
+
+The **`toLocaleString()`** method returns a string with a language-sensitive representation of this BigInt. In implementations with [`Intl.NumberFormat` API](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat) support, this method simply calls `Intl.NumberFormat`.
+
+## Syntax
+
+```js
+toLocaleString()
+toLocaleString(locales)
+toLocaleString(locales, options)
+```
+
+### Parameters
+
+The `locales` and `options` parameters customize the behavior of the function and let applications specify the language whose formatting conventions should be used.
+
+In implementations that support the [`Intl.NumberFormat` API](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat), these parameters correspond exactly to the [`Intl.NumberFormat()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat) constructor's parameters. Implementations without `Intl.NumberFormat` support are asked to ignore both parameters, making the locale used and the form of the string returned entirely implementation-dependent.
+
+- `locales` _**optional**_
+
+ - : A string with a BCP 47 language tag, or an array of such strings. Corresponds to the [`locales`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#locales) parameter of the `Intl.NumberFormat()` constructor.
+
+ In implementations without `Intl.NumberFormat` support, this parameter is ignored and the host's locale is usually used.
+
+- `options` _**optional**_
+
+ - : An object adjusting the output format. Corresponds to the [`options`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options) parameter of the `Intl.NumberFormat()` constructor.
+
+ In implementations without `Intl.NumberFormat` support, this parameter is ignored.
+
+See the [`Intl.NumberFormat()` constructor](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat) for details on these parameters and how to use them.
+
+### Return value
+
+A string with a language-sensitive representation of the given BigInt.
+
+In implementations with `Intl.NumberFormat`, this is equivalent to `new Intl.NumberFormat(locales, options).format(number)`.
+
+## Performance
+
+When formatting large numbers of numbers, it is better to create a
+`Intl.NumberFormat` object and use the function provided by its
+`format()` method.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/BigInt/prototype/toString.mdx b/documentation/versioned_docs/version-3.21.3/globals/BigInt/prototype/toString.mdx
new file mode 100644
index 0000000000..ca8dec3f10
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/BigInt/prototype/toString.mdx
@@ -0,0 +1,49 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# BigInt.prototype.toString()
+
+The **`toString()`** method returns a string representing the specified `BigInt` value. The trailing "n" is not part of the string.
+
+## Syntax
+
+```js
+toString()
+toString(radix)
+```
+
+### Parameters
+
+- `radix` _**optional**_
+ - : An integer in the range 2 through 36 specifying the base to use for representing the BigInt value. Defaults to 10.
+
+### Return value
+
+A string representing the specified `BigInt` value.
+
+### Exceptions
+
+- [`RangeError`](../../../globals/RangeError/RangeError.mdx)
+ - : Thrown if `radix` is less than 2 or greater than 36.
+
+## Description
+
+The `BigInt` object overrides the `toString` method of `Object`; it does not inherit
+[`Object.prototype.toString()`](../../Object/prototype/toString.mdx). For `BigInt` values, the `toString()` method returns a string representation of the value in the specified radix.
+
+For radixes above 10, the letters of the alphabet indicate digits greater than 9. For example, for hexadecimal numbers (base 16) `a` through `f` are used.
+
+If the specified BigInt value is negative, the sign is preserved. This is the case even if the radix is 2; the string returned is the positive binary representation of the BigInt value preceded by a `-` sign, **not** the two's complement of the BigInt value.
+
+The `toString()` method requires its `this` value to be a `BigInt` primitive or wrapper object. It throws a [`TypeError`](../../../globals/TypeError/TypeError.mdx) for other `this` values without attempting to coerce them to BigInt values.
+
+Because `BigInt` doesn't have a [`[Symbol.toPrimitive]()`](../../Symbol/toPrimitive.mdx) method, JavaScript calls the `toString()` method automatically when a `BigInt` _object_ is used in a context expecting a string, such as in a [template literal](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Template_literals). However, BigInt _primitive_ values do not consult the `toString()` method to be [coerced to strings](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String#string_coercion) — rather, they are directly converted using the same algorithm as the initial `toString()` implementation.
+
+```js
+BigInt.prototype.toString = () => "Overridden";
+console.log(`${1n}`); // "1"
+console.log(`${Object(1n)}`); // "Overridden"
+```
diff --git a/documentation/versioned_docs/version-3.21.3/globals/BigInt/prototype/valueOf.mdx b/documentation/versioned_docs/version-3.21.3/globals/BigInt/prototype/valueOf.mdx
new file mode 100644
index 0000000000..948a49f04d
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/BigInt/prototype/valueOf.mdx
@@ -0,0 +1,20 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# BigInt.prototype.valueOf()
+
+The **`valueOf()`** method returns the wrapped primitive value
+of a `BigInt` object.
+
+## Syntax
+
+```js
+bigIntObj.valueOf()
+```
+
+### Return value
+
+A BigInt representing the primitive value of the specified `BigInt` object.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/BigInt64Array/BigInt64Array.mdx b/documentation/versioned_docs/version-3.21.3/globals/BigInt64Array/BigInt64Array.mdx
new file mode 100644
index 0000000000..9ffaffe74b
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/BigInt64Array/BigInt64Array.mdx
@@ -0,0 +1,37 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# BigInt64Array()
+
+The **`BigInt64Array()`** typed array constructor creates a
+new `BigInt64Array` object, which is, an array of 64-bit signed integers
+in the platform byte order. If control over byte order is needed, use
+[`DataView`](../DataView/DataView.mdx) instead. The contents are initialized to `0n`. Once
+established, you can reference elements in the array using the object's methods, or by
+using standard array index syntax (that is, using bracket notation).
+
+## Syntax
+
+```js
+new BigInt64Array()
+new BigInt64Array(length)
+new BigInt64Array(typedArray)
+new BigInt64Array(object)
+
+new BigInt64Array(buffer)
+new BigInt64Array(buffer, byteOffset)
+new BigInt64Array(buffer, byteOffset, length)
+```
+
+> **Note:** `BigInt64Array()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+See [`TypedArray`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#parameters).
+
+### Exceptions
+
+See [`TypedArray`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#exceptions).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/BigUint64Array/BigUint64Array.mdx b/documentation/versioned_docs/version-3.21.3/globals/BigUint64Array/BigUint64Array.mdx
new file mode 100644
index 0000000000..3a5342647b
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/BigUint64Array/BigUint64Array.mdx
@@ -0,0 +1,37 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# BigUint64Array()
+
+The **`BigUint64Array()`** typed array constructor creates a
+new `BigUint64Array` object, which is, an array of 64-bit unsigned integers
+in the platform byte order. If control over byte order is needed, use
+[`DataView`](../DataView/DataView.mdx) instead. The contents are initialized to `0n`. Once
+established, you can reference elements in the array using the object's methods, or by
+using standard array index syntax (that is, using bracket notation).
+
+## Syntax
+
+```js
+new BigUint64Array()
+new BigUint64Array(length)
+new BigUint64Array(typedArray)
+new BigUint64Array(object)
+
+new BigUint64Array(buffer)
+new BigUint64Array(buffer, byteOffset)
+new BigUint64Array(buffer, byteOffset, length)
+```
+
+> **Note:** `BigUint64Array()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](..//TypeError/TypeError.mdx).
+
+### Parameters
+
+See [`TypedArray`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#parameters).
+
+### Exceptions
+
+See [`TypedArray`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#exceptions).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Boolean/Boolean.mdx b/documentation/versioned_docs/version-3.21.3/globals/Boolean/Boolean.mdx
new file mode 100644
index 0000000000..e10afd7266
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Boolean/Boolean.mdx
@@ -0,0 +1,37 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Boolean()
+
+The **`Boolean()`** constructor can create `Boolean` objects or return primitive values of type boolean.
+
+## Syntax
+
+```js
+new Boolean(value)
+Boolean(value)
+```
+
+> **Note:** `Boolean()` can be called with or without `new`, but with different effects. See [Return value](#return_value).
+
+### Parameters
+
+- `value`
+ - : The initial value of the `Boolean` object.
+
+### Return value
+
+When `Boolean()` is called as a constructor (with `new`), it creates a `Boolean` object, which is **not** a primitive.
+
+When `Boolean()` is called as a function (without `new`), it coerces the parameter to a boolean primitive.
+
+> **Warning:** You should rarely find yourself using `Boolean` as a constructor.
+
+## Description
+
+The value passed as the first parameter is [converted to a boolean value](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean#boolean_coercion). If the value is omitted or is `0`, `-0`, `0n`, [`null`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/null), `false`, [`NaN`](../NaN.mdx), [`undefined`](../undefined.mdx), or the empty string (`""`), then the object has an initial value of `false`. All other values, including any object, an empty array (`[]`), or the string `"false"`, create an object with an initial value of `true`.
+
+> **Note:** When the non-standard property [`document.all`](https://developer.mozilla.org/docs/Web/API/Document/all) is used as an argument for this constructor, the result is a `Boolean` object with the value `false`. This property is legacy and non-standard and should not be used.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Boolean/prototype/toString.mdx b/documentation/versioned_docs/version-3.21.3/globals/Boolean/prototype/toString.mdx
new file mode 100644
index 0000000000..4df09cfa65
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Boolean/prototype/toString.mdx
@@ -0,0 +1,34 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Boolean.prototype.toString()
+
+The **`toString()`** method returns a string representing the specified boolean value.
+
+## Syntax
+
+```js
+toString()
+```
+
+### Return value
+
+A string representing the specified boolean value.
+
+## Description
+
+The `Boolean` object overrides the `toString` method of `Object`; it does not inherit
+[`Object.prototype.toString()`](../../Object/prototype/toString.mdx). For `Boolean` values, the `toString` method returns a string representation of the boolean value, which is either `"true"` or `"false"`.
+
+The `toString()` method requires its `this` value to be a `Boolean` primitive or wrapper object. It throws a [`TypeError`](../../../globals/TypeError/TypeError.mdx) for other `this` values without attempting to coerce them to boolean values.
+
+Because `Boolean` doesn't have a [`[Symbol.toPrimitive]()`](../../Symbol/toPrimitive.mdx) method, JavaScript calls the `toString()` method automatically when a `Boolean` _object_ is used in a context expecting a string, such as in a [template literal](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Template_literals). However, boolean _primitive_ values do not consult the `toString()` method to be [coerced to strings](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String#string_coercion) — rather, they are directly converted using the same algorithm as the initial `toString()` implementation.
+
+```js
+Boolean.prototype.toString = () => "Overridden";
+console.log(`${true}`); // "true"
+console.log(`${new Boolean(true)}`); // "Overridden"
+```
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Boolean/prototype/valueOf.mdx b/documentation/versioned_docs/version-3.21.3/globals/Boolean/prototype/valueOf.mdx
new file mode 100644
index 0000000000..fa73f672c7
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Boolean/prototype/valueOf.mdx
@@ -0,0 +1,27 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Boolean.prototype.valueOf()
+
+The **`valueOf()`** method returns the primitive value of a
+`Boolean` object.
+
+## Syntax
+
+```js
+valueOf()
+```
+
+### Return value
+
+The primitive value of the given `Boolean` object.
+
+## Description
+
+The `valueOf()` method of `Boolean` returns the primitive value
+of a `Boolean` object or literal `Boolean` as a Boolean data type.
+
+This method is usually called internally by JavaScript and not explicitly in code.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/ByteLengthQueuingStrategy/ByteLengthQueuingStrategy.mdx b/documentation/versioned_docs/version-3.21.3/globals/ByteLengthQueuingStrategy/ByteLengthQueuingStrategy.mdx
new file mode 100644
index 0000000000..6e2b34a138
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/ByteLengthQueuingStrategy/ByteLengthQueuingStrategy.mdx
@@ -0,0 +1,31 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# ByteLengthQueuingStrategy()
+
+The **`ByteLengthQueuingStrategy()`**
+constructor creates and returns a `ByteLengthQueuingStrategy` object
+instance.
+
+## Syntax
+
+```js
+new ByteLengthQueuingStrategy(highWaterMark)
+```
+
+### Parameters
+
+An object with the following property:
+
+- `highWaterMark`
+
+ - : The total number of bytes that can be contained in the internal queue before backpressure is applied.
+
+ Unlike `CountQueuingStrategy()` where the `highWaterMark` parameter specifies a simple count of the number of chunks, with `ByteLengthQueuingStrategy()`, the `highWaterMark` parameter specifies a number of _bytes_ — specifically, given a stream of chunks, how many bytes worth of those chunks (rather than a count of how many of those chunks) can be contained in the internal queue before backpressure is applied.
+
+### Return value
+
+An instance of the `ByteLengthQueuingStrategy` object.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/ByteLengthQueuingStrategy/prototype/size.mdx b/documentation/versioned_docs/version-3.21.3/globals/ByteLengthQueuingStrategy/prototype/size.mdx
new file mode 100644
index 0000000000..17b0a1dce2
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/ByteLengthQueuingStrategy/prototype/size.mdx
@@ -0,0 +1,26 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# ByteLengthQueuingStrategy.size()
+
+The **`size()`** method of the
+`ByteLengthQueuingStrategy` interface returns the given chunk's
+`byteLength` property.
+
+## Syntax
+
+```js
+size(chunk)
+```
+
+### Parameters
+
+- `chunk`
+ - : A chunk of data being passed through the stream.
+
+### Return value
+
+An integer representing the byte length of the given chunk.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/CompressionStream/CompressionStream.mdx b/documentation/versioned_docs/version-3.21.3/globals/CompressionStream/CompressionStream.mdx
new file mode 100644
index 0000000000..a5594a88c5
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/CompressionStream/CompressionStream.mdx
@@ -0,0 +1,30 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# CompressionStream()
+
+The **`CompressionStream()`** constructor creates a new `CompressionStream` object which compresses a stream of data.
+
+## Syntax
+
+```js
+new CompressionStream(format)
+```
+
+### Parameters
+
+- `format`
+
+ - : One of the following allowed compression formats:
+
+ - `"gzip"`
+ - `"deflate"`
+ - `"deflate-raw"`
+
+## Exceptions
+
+- `TypeError`
+ - : Thrown if the format passed to the constructor is not supported.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/CompressionStream/prototype/readable.mdx b/documentation/versioned_docs/version-3.21.3/globals/CompressionStream/prototype/readable.mdx
new file mode 100644
index 0000000000..27a2f8900b
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/CompressionStream/prototype/readable.mdx
@@ -0,0 +1,13 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# CompressionStream.readable
+
+The **`readable`** read-only property of the `CompressionStream` interface returns a `ReadableStream`.
+
+## Value
+
+A `ReadableStream`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/CompressionStream/prototype/writable.mdx b/documentation/versioned_docs/version-3.21.3/globals/CompressionStream/prototype/writable.mdx
new file mode 100644
index 0000000000..b61ef0a458
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/CompressionStream/prototype/writable.mdx
@@ -0,0 +1,13 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# CompressionStream.writable
+
+The **`writable`** read-only property of the `CompressionStream` interface returns a `WritableStream`.
+
+## Value
+
+A `WritableStream`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/CryptoKey/CryptoKey.mdx b/documentation/versioned_docs/version-3.21.3/globals/CryptoKey/CryptoKey.mdx
new file mode 100644
index 0000000000..038ef515f0
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/CryptoKey/CryptoKey.mdx
@@ -0,0 +1,23 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# CryptoKey
+
+The **`CryptoKey`** interface represents a cryptographic key obtained from one of the [`SubtleCrypto`](../SubtleCrypto/SubtleCrypto.mdx) method [`importKey()`](../SubtleCrypto/prototype/importKey.mdx).
+
+## Instance properties
+
+- [`type`](./prototype/type.mdx) _**readonly**_
+ - : The type of key the object represents. It may take one of the following values: `"secret"`, `"private"` or `"public"`.
+
+- [`extractable`](./prototype/extractable.mdx) _**readonly**_
+ - : A boolean value indicating whether or not the key may be extracted.
+
+- [`algorithm`](./prototype/algorithm.mdx) _**readonly**_
+ - : An object describing the algorithm for which this key can be used and any associated extra parameters.
+
+- [`usages`](./prototype/usages.mdx) _**readonly**_
+ - : An `Array` of strings, indicating what can be done with the key. Possible values for array elements are `"encrypt"`, `"decrypt"`, `"sign"`, `"verify"`, `"deriveKey"`, `"deriveBits"`, `"wrapKey"`, and `"unwrapKey"`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/CryptoKey/prototype/algorithm.mdx b/documentation/versioned_docs/version-3.21.3/globals/CryptoKey/prototype/algorithm.mdx
new file mode 100644
index 0000000000..daf96415fd
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/CryptoKey/prototype/algorithm.mdx
@@ -0,0 +1,18 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# algorithm
+
+The read-only **`algorithm`** property of the [`CryptoKey`](../CryptoKey.mdx) interface returns an object describing the algorithm for which this key can be used, and any associated extra parameters.
+
+The object returned depends of the algorithm used to generate the key.
+
+## Value
+
+An object matching:
+
+- [`RsaHashedImportParams`](../../RsaHashedImportParams/RsaHashedImportParams.mdx) if the algorithm is any of the RSA variants.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/CryptoKey/prototype/extractable.mdx b/documentation/versioned_docs/version-3.21.3/globals/CryptoKey/prototype/extractable.mdx
new file mode 100644
index 0000000000..7d91cd2810
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/CryptoKey/prototype/extractable.mdx
@@ -0,0 +1,16 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# extractable
+
+The read-only **`extractable`** property indicates whether or not the key may be extracted.
+
+If the key cannot be exported, an exception will be thrown if an attempt to extract the key is made.
+
+## Value
+
+A boolean value that is `true` if the key can be exported and `false` if not.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/CryptoKey/prototype/type.mdx b/documentation/versioned_docs/version-3.21.3/globals/CryptoKey/prototype/type.mdx
new file mode 100644
index 0000000000..2c6cfdb868
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/CryptoKey/prototype/type.mdx
@@ -0,0 +1,18 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# type
+
+The read-only **`type`** property indicates which kind of key is represented by the object. It can have the following values:
+
+- `"secret"`: This key is a secret key for use with a symmetric algorithm.
+- `"private"`: This key is the private half of an asymmetric algorithm's key pair.
+- `"public"`: This key is the public half of an asymmetric algorithm's key pair.
+
+## Value
+
+One of the following strings: `"secret"`, `"private"`, or `"public"`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/CryptoKey/prototype/usages.mdx b/documentation/versioned_docs/version-3.21.3/globals/CryptoKey/prototype/usages.mdx
new file mode 100644
index 0000000000..43746ee711
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/CryptoKey/prototype/usages.mdx
@@ -0,0 +1,23 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# usages
+
+The read-only **`usages`** property indicates what can be done with the key.
+
+## Value
+
+An `Array` of strings from the following list:
+
+- `"encrypt"`: The key may be used to encrypt messages.
+- `"decrypt"`: The key may be used to decrypt messages.
+- `"sign"`: The key may be used to sign messages.
+- `"verify"`: The key may be used to verify signatures.
+- `"deriveKey"`: The key may be used in deriving a new key.
+- `"deriveBits"`: The key may be used in deriving bits.
+- `"wrapKey"`: The key may be used to wrap a key.
+- `"unwrapKey"`: The key may be used to unwrap a key.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DOMException/DOMException.mdx b/documentation/versioned_docs/version-3.21.3/globals/DOMException/DOMException.mdx
new file mode 100644
index 0000000000..160e40e774
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DOMException/DOMException.mdx
@@ -0,0 +1,107 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# DOMException()
+
+The **`DOMException()`** constructor returns a `DOMException` object with a specified message and name.
+
+## Syntax
+
+```js
+new DOMException()
+new DOMException(message)
+new DOMException(message, name)
+```
+
+### Parameters
+
+- `message` _optional_
+ - : A description of the exception. If not present, the empty string `''` is
+ used.
+- `name` _optional_
+ - : A string. If the specified name is a [standard error name](#error-names), then getting the [`code`](./code.mdx) property of the `DOMException` object will return the code number corresponding to the specified name.
+
+### Return value
+
+A newly created `DOMException` object.
+
+## Error names
+
+Common error names are listed here. Some APIs define their own sets of names, so this is not necessarily a complete list.
+
+Note that the following deprecated historical errors don't have an error name but instead have only a legacy constant code value and a legacy constant name:
+
+- Legacy code value: `2`, legacy constant name: `DOMSTRING_SIZE_ERR`
+- Legacy code value: `6`, legacy constant name: `NO_DATA_ALLOWED_ERR`
+- Legacy code value: `16`, legacy constant name: `VALIDATION_ERR`
+
+> **Note:** Because historically the errors were identified by a numeric value that corresponded with a named variable defined to have that value, some of the entries below indicate the legacy code value and constant name that were used in the past.
+
+- `IndexSizeError`
+ - : The index is not in the allowed range. (Legacy code value: `1` and legacy constant name: `INDEX_SIZE_ERR`)
+- `HierarchyRequestError`
+ - : The node tree hierarchy is not correct. (Legacy code value: `3` and legacy constant name: `HIERARCHY_REQUEST_ERR`)
+- `WrongDocumentError`
+ - : The object is in the wrong `Document`. (Legacy code value: `4` and legacy constant name: `WRONG_DOCUMENT_ERR`)
+- `InvalidCharacterError`
+ - : The string contains invalid characters. (Legacy code value: `5` and legacy constant name: `INVALID_CHARACTER_ERR`)
+- `NoModificationAllowedError`
+ - : The object cannot be modified. (Legacy code value: `7` and legacy constant name: `NO_MODIFICATION_ALLOWED_ERR`)
+- `NotFoundError`
+ - : The object cannot be found here. (Legacy code value: `8` and legacy constant name: `NOT_FOUND_ERR`)
+- `NotSupportedError`
+ - : The operation is not supported. (Legacy code value: `9` and legacy constant name: `NOT_SUPPORTED_ERR`)
+- `InvalidStateError`
+ - : The object is in an invalid state. (Legacy code value: `11` and legacy constant name: `INVALID_STATE_ERR`)
+- `InUseAttributeError`
+ - : The attribute is in use. (Legacy code value: `10` and legacy constant name: `INUSE_ATTRIBUTE_ERR`)
+- `SyntaxError`
+ - : The string did not match the expected pattern. (Legacy code value: `12` and legacy constant name: `SYNTAX_ERR`)
+- `InvalidModificationError`
+ - : The object cannot be modified in this way. (Legacy code value: `13` and legacy constant name: `INVALID_MODIFICATION_ERR`)
+- `NamespaceError`
+ - : The operation is not allowed by Namespaces in XML. (Legacy code value: `14` and legacy constant name: `NAMESPACE_ERR`)
+- `InvalidAccessError`
+ - : The object does not support the operation or argument. (Legacy code value: `15` and legacy constant name: `INVALID_ACCESS_ERR`)
+- `TypeMismatchError` *deprecated*
+ - : The type of the object does not match the expected type. (Legacy code value: `17` and legacy constant name: `TYPE_MISMATCH_ERR`) This value is deprecated; the JavaScript `TypeError` exception is now raised instead of a `DOMException` with this value.
+- `SecurityError`
+ - : The operation is insecure. (Legacy code value: `18` and legacy constant name: `SECURITY_ERR`)
+- `NetworkError`
+ - : A network error occurred. (Legacy code value: `19` and legacy constant name: `NETWORK_ERR`)
+- `AbortError`
+ - : The operation was aborted. (Legacy code value: `20` and legacy constant name: `ABORT_ERR`)
+- `URLMismatchError`
+ - : The given URL does not match another URL. (Legacy code value: `21` and legacy constant name: `URL_MISMATCH_ERR`)
+- `QuotaExceededError`
+ - : The quota has been exceeded. (Legacy code value: `22` and legacy constant name: `QUOTA_EXCEEDED_ERR`)
+- `TimeoutError`
+ - : The operation timed out. (Legacy code value: `23` and legacy constant name: `TIMEOUT_ERR`)
+- `InvalidNodeTypeError`
+ - : The node is incorrect or has an incorrect ancestor for this operation. (Legacy code value: `24` and legacy constant name: `INVALID_NODE_TYPE_ERR`)
+- `DataCloneError`
+ - : The object can not be cloned. (Legacy code value: `25` and legacy constant name: `DATA_CLONE_ERR`)
+- `EncodingError`
+ - : The encoding or decoding operation failed (No legacy code value and constant name).
+- `NotReadableError`
+ - : The input/output read operation failed (No legacy code value and constant name).
+- `UnknownError`
+ - : The operation failed for an unknown transient reason (e.g. out of memory) (No legacy code value and constant name).
+- `ConstraintError`
+ - : A mutation operation in a transaction failed because a constraint was not satisfied (No legacy code value and constant name).
+- `DataError`
+ - : Provided data is inadequate (No legacy code value and constant name).
+- `TransactionInactiveError`
+ - : A request was placed against a transaction that is currently not active or is finished (No legacy code value and constant name).
+- `ReadOnlyError`
+ - : The mutating operation was attempted in a "readonly" transaction (No legacy code value and constant name).
+- `VersionError`
+ - : An attempt was made to open a database using a lower version than the existing version (No legacy code value and constant name).
+- `OperationError`
+ - : The operation failed for an operation-specific reason (No legacy code value and constant name).
+- `NotAllowedError`
+ - : The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission (No legacy code value and constant name).
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DOMException/code.mdx b/documentation/versioned_docs/version-3.21.3/globals/DOMException/code.mdx
new file mode 100644
index 0000000000..21b9836fa4
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DOMException/code.mdx
@@ -0,0 +1,16 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# DOMException.prototype.code
+
+The **`code`** read-only property of the `DOMException` interface returns one of the legacy [error code constants](./DOMException.mdx#error-names), or `0` if none match.
+
+This field is used for historical reasons. New DOM exceptions don't use this anymore: they put this info in the [`name`](./name.mdx) attribute.
+
+## Value
+
+One of the [error code constants](./DOMException.mdx#error-names), or `0` if none match.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DOMException/message.mdx b/documentation/versioned_docs/version-3.21.3/globals/DOMException/message.mdx
new file mode 100644
index 0000000000..44d3c6b8da
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DOMException/message.mdx
@@ -0,0 +1,14 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# DOMException.prototype.message
+
+The **`message`** read-only property of the `DOMException` interface returns a string representing a message or description associated with the given [error name](./DOMException.mdx#error-names).
+
+## Value
+
+A string.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DOMException/name.mdx b/documentation/versioned_docs/version-3.21.3/globals/DOMException/name.mdx
new file mode 100644
index 0000000000..1dda11b92c
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DOMException/name.mdx
@@ -0,0 +1,14 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# DOMException.prototype.name
+
+The **`name`** read-only property of the `DOMException` interface returns a string that contains one of the strings associated with an [error name](./DOMException.mdx#error-names).
+
+## Value
+
+A string.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/DataView.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/DataView.mdx
new file mode 100644
index 0000000000..1145448be8
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/DataView.mdx
@@ -0,0 +1,46 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView()
+
+The **`DataView()`** constructor is used to create `DataView` objects.
+
+## Syntax
+
+```js
+new DataView(buffer)
+new DataView(buffer, byteOffset)
+new DataView(buffer, byteOffset, byteLength)
+```
+
+> **Note:** `DataView()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+- `buffer`
+ - : An existing `ArrayBuffer` to use as
+ the storage backing the new `DataView` object.
+- `byteOffset` _**optional**_
+ - : The offset, in bytes, to the first byte in the above buffer for the new view to
+ reference. If unspecified, the buffer view starts with the first byte.
+- `byteLength` _**optional**_
+ - : The number of elements in the byte array. If unspecified, the view's length will
+ match the buffer's length.
+
+### Return value
+
+A new `DataView` object representing the specified data buffer.
+
+### Exceptions
+
+- [`RangeError`](../RangeError/RangeError.mdx)
+
+ - : Thrown if the `byteOffset` or `byteLength` parameter values
+ result in the view extending past the end of the buffer.
+
+ For example, if the buffer is 16 bytes long, the `byteOffset` is 8, and
+ the `byteLength` is 10, this error is thrown because the resulting view
+ tries to extend 2 bytes past the total length of the buffer.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/buffer.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/buffer.mdx
new file mode 100644
index 0000000000..629d093b18
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/buffer.mdx
@@ -0,0 +1,13 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.buffer
+
+The **`buffer`** accessor property represents the `ArrayBuffer` referenced by the `DataView` at construction time.
+
+## Description
+
+The `buffer` property is an accessor property whose set accessor function is `undefined`, meaning that you can only read this property. The value is established when the `DataView` is constructed and cannot be changed.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/byteLength.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/byteLength.mdx
new file mode 100644
index 0000000000..4cfe1225d7
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/byteLength.mdx
@@ -0,0 +1,13 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.byteLength
+
+The **`byteLength`** accessor property represents the length (in bytes) of the dataview.
+
+## Description
+
+The `byteLength` property is an accessor property whose set accessor function is `undefined`, meaning that you can only read this property. The value is established when an `DataView` is constructed and cannot be changed. If the `DataView` is not specifying an offset or a `byteLength`, the `byteLength` of the referenced `ArrayBuffer` or `SharedArrayBuffer` will be returned.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/byteOffset.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/byteOffset.mdx
new file mode 100644
index 0000000000..df3ec4757f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/byteOffset.mdx
@@ -0,0 +1,13 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.byteOffset
+
+The **`byteOffset`** accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer`.
+
+## Description
+
+The `byteOffset` property is an accessor property whose set accessor function is `undefined`, meaning that you can only read this property. The value is established when an `DataView` is constructed and cannot be changed.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getBigInt64.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getBigInt64.mdx
new file mode 100644
index 0000000000..5890a661ac
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getBigInt64.mdx
@@ -0,0 +1,39 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.getBigInt64()
+
+The **`getBigInt64()`** method gets a signed 64-bit integer
+(long long) at the specified byte offset from the start of the [`DataView`](../../../globals/DataView/DataView.mdx).
+
+## Syntax
+
+```js
+getBigInt64(byteOffset)
+getBigInt64(byteOffset, littleEndian)
+```
+
+### Parameters
+
+- byteOffset
+ - : The offset, in bytes, from the start of the view to read the data from.
+- littleEndian
+ - : _**optional**_ Indicates whether the 64-bit int is stored in [little- or big-endian](https://developer.mozilla.org/docs/Glossary/Endianness) format. If
+ `false` or `undefined`, a big-endian value is read.
+
+### Return value
+
+A `BigInt`.
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such that it would read beyond the end
+ of the view.
+
+## Description
+
+There is no alignment constraint; multi-byte values may be fetched from any offset.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getBigUint64.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getBigUint64.mdx
new file mode 100644
index 0000000000..2f66aa0046
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getBigUint64.mdx
@@ -0,0 +1,40 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.getBigUint64()
+
+The **`getBigUint64()`** method gets an unsigned 64-bit integer
+(unsigned long long) at the specified byte offset from the start of the
+[`DataView`](../../../globals/DataView/DataView.mdx).
+
+## Syntax
+
+```js
+getBigUint64(byteOffset)
+getBigUint64(byteOffset, littleEndian)
+```
+
+### Parameters
+
+- byteOffset
+ - : The offset, in bytes, from the start of the view to read the data from.
+- littleEndian
+ - : _**optional**_ Indicates whether the 64-bit int is stored in [little- or big-endian](https://developer.mozilla.org/docs/Glossary/Endianness) format. If
+ `false` or `undefined`, a big-endian value is read.
+
+### Return value
+
+A `BigInt`.
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such that it would read beyond the end
+ of the view.
+
+## Description
+
+There is no alignment constraint; multi-byte values may be fetched from any offset.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getFloat32.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getFloat32.mdx
new file mode 100644
index 0000000000..e64d2581ae
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getFloat32.mdx
@@ -0,0 +1,40 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.getFloat32()
+
+The **`getFloat32()`** method gets a signed 32-bit float
+(float) at the specified byte offset from the start of the [`DataView`](../../../globals/DataView/DataView.mdx).
+
+## Syntax
+
+```js
+getFloat32(byteOffset)
+getFloat32(byteOffset, littleEndian)
+```
+
+### Parameters
+
+- `byteOffset`
+ - : The offset, in byte, from the start of the view where to read the data.
+- `littleEndian`
+ - : _**optional**_ Indicates whether the 32-bit float is stored in
+ little- or big-endian format. If `false` or
+ `undefined`, a big-endian value is read.
+
+### Return value
+
+A signed 32-bit float number.
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such as it would read beyond the end of
+ the view.
+
+## Description
+
+There is no alignment constraint; multi-byte values may be fetched from any offset.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getFloat64.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getFloat64.mdx
new file mode 100644
index 0000000000..628e98a3af
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getFloat64.mdx
@@ -0,0 +1,40 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.getFloat64()
+
+The **`getFloat64()`** method gets a signed 64-bit float
+(double) at the specified byte offset from the start of the [`DataView`](../../../globals/DataView/DataView.mdx).
+
+## Syntax
+
+```js
+getFloat64(byteOffset)
+getFloat64(byteOffset, littleEndian)
+```
+
+### Parameters
+
+- `byteOffset`
+ - : The offset, in byte, from the start of the view where to read the data.
+- `littleEndian`
+ - : _**optional**_ Indicates whether the 64-bit float is stored in
+ little- or big-endian format. If `false` or
+ `undefined`, a big-endian value is read.
+
+### Return value
+
+A signed 64-bit float number.
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such as it would read beyond the end of
+ the view.
+
+## Description
+
+There is no alignment constraint; multi-byte values may be fetched from any offset.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getInt16.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getInt16.mdx
new file mode 100644
index 0000000000..4befd3ab4b
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getInt16.mdx
@@ -0,0 +1,40 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.getInt16()
+
+The **`getInt16()`** method gets a signed 16-bit integer
+(short) at the specified byte offset from the start of the [`DataView`](../../../globals/DataView/DataView.mdx).
+
+## Syntax
+
+```js
+getInt16(byteOffset)
+getInt16(byteOffset, littleEndian)
+```
+
+### Parameters
+
+- `byteOffset`
+ - : The offset, in byte, from the start of the view where to read the data.
+- `littleEndian`
+ - : _**optional**_ Indicates whether the 16-bit int is stored in
+ little- or big-endian format. If `false` or
+ `undefined`, a big-endian value is read.
+
+### Return value
+
+A signed 16-bit integer number.
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such as it would read beyond the end of
+ the view.
+
+## Description
+
+There is no alignment constraint; multi-byte values may be fetched from any offset.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getInt32.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getInt32.mdx
new file mode 100644
index 0000000000..3bad1280e1
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getInt32.mdx
@@ -0,0 +1,40 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.getInt32()
+
+The **`getInt32()`** method gets a signed 32-bit integer (long)
+at the specified byte offset from the start of the [`DataView`](../../../globals/DataView/DataView.mdx).
+
+## Syntax
+
+```js
+getInt32(byteOffset)
+getInt32(byteOffset, littleEndian)
+```
+
+### Parameters
+
+- `byteOffset`
+ - : The offset, in bytes, from the start of the view where to read the data.
+- `littleEndian`
+ - : _**optional**_ Indicates whether the 32-bit int is stored in
+ little- or big-endian format. If `false` or
+ `undefined`, a big-endian value is read.
+
+### Return value
+
+A signed 32-bit integer number.
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such as it would read beyond the end of
+ the view.
+
+## Description
+
+There is no alignment constraint; multi-byte values may be fetched from any offset.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getInt8.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getInt8.mdx
new file mode 100644
index 0000000000..04ae5febf2
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getInt8.mdx
@@ -0,0 +1,35 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.getInt8()
+
+The **`getInt8()`** method gets a signed 8-bit integer (byte)
+at the specified byte offset from the start of the [`DataView`](../../../globals/DataView/DataView.mdx).
+
+## Syntax
+
+```js
+getInt8(byteOffset)
+```
+
+### Parameters
+
+- `byteOffset`
+ - : The offset, in byte, from the start of the view where to read the data.
+
+### Return value
+
+A signed 8-bit integer number.
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such as it would read beyond the end of
+ the view.
+
+## Description
+
+There is no alignment constraint; multi-byte values may be fetched from any offset.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getUint16.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getUint16.mdx
new file mode 100644
index 0000000000..def5906a6d
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getUint16.mdx
@@ -0,0 +1,43 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.getUint16()
+
+The **`getUint16()`** method gets an unsigned 16-bit integer
+(unsigned short) at the specified byte offset from the start of the
+[`DataView`](../../../globals/DataView/DataView.mdx).
+
+
+
+## Syntax
+
+```js
+getUint16(byteOffset)
+getUint16(byteOffset, littleEndian)
+```
+
+### Parameters
+
+- `byteOffset`
+ - : The offset, in byte, from the start of the view where to read the data.
+- `littleEndian`
+ - : _**optional**_ Indicates whether the 16-bit int is stored in
+ little- or big-endian format. If `false` or
+ `undefined`, a big-endian value is read.
+
+### Return value
+
+An unsigned 16-bit integer number.
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such as it would read beyond the end of
+ the view.
+
+## Description
+
+There is no alignment constraint; multi-byte values may be fetched from any offset.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getUint32.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getUint32.mdx
new file mode 100644
index 0000000000..9660ce01f2
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getUint32.mdx
@@ -0,0 +1,43 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.getUint32()
+
+The **`getUint32()`** method gets an unsigned 32-bit integer
+(unsigned long) at the specified byte offset from the start of the
+[`DataView`](../../../globals/DataView/DataView.mdx).
+
+
+
+## Syntax
+
+```js
+getUint32(byteOffset)
+getUint32(byteOffset, littleEndian)
+```
+
+### Parameters
+
+- `byteOffset`
+ - : The offset, in byte, from the start of the view where to read the data.
+- `littleEndian`
+ - : _**optional**_ Indicates whether the 32-bit int is stored in
+ little- or big-endian format. If `false` or
+ `undefined`, a big-endian value is read.
+
+### Return value
+
+An unsigned 32-bit integer number.
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such as it would read beyond the end of
+ the view.
+
+## Description
+
+There is no alignment constraint; multi-byte values may be fetched from any offset.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getUint8.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getUint8.mdx
new file mode 100644
index 0000000000..aebc4edfba
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/getUint8.mdx
@@ -0,0 +1,36 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.getUint8()
+
+The **`getUint8()`** method gets an unsigned 8-bit integer
+(unsigned byte) at the specified byte offset from the start of the
+[`DataView`](../../../globals/DataView/DataView.mdx).
+
+## Syntax
+
+```js
+getUint8(byteOffset)
+```
+
+### Parameters
+
+- `byteOffset`
+ - : The offset, in byte, from the start of the view where to read the data.
+
+### Return value
+
+An unsigned 8-bit integer number.
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such as it would read beyond the end of
+ the view.
+
+## Description
+
+There is no alignment constraint; multi-byte values may be fetched from any offset.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setBigInt64.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setBigInt64.mdx
new file mode 100644
index 0000000000..e3e55facf1
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setBigInt64.mdx
@@ -0,0 +1,41 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.setBigInt64()
+
+The **`setBigInt64()`** method stores a signed 64-bit integer
+(long long) value at the specified byte offset from the start of the
+[`DataView`](../../../globals/DataView/DataView.mdx).
+
+## Syntax
+
+```js
+setBigInt64(byteOffset, value)
+setBigInt64(byteOffset, value, littleEndian)
+```
+
+### Parameters
+
+- byteOffset
+ - : The offset, in bytes, from the start of the view to store the data from.
+- value
+ - : The value to set as a `BigInt`. The highest possible value that fits in
+ a signed 64-bit integer is
+ `2n ** (64n -1n) - 1n` (`9223372036854775807n`). Upon
+ overflow, it will be negative (`-9223372036854775808n`).
+- littleEndian
+ - : _**optional**_ Indicates whether the 64-bit int is stored in [little- or big-endian](https://developer.mozilla.org/docs/Glossary/Endianness) format. If
+ `false` or `undefined`, a big-endian value is written.
+
+### Return value
+
+[`undefined`](../../../globals/undefined.mdx).
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such that it would store beyond the end
+ of the view.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setBigUint64.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setBigUint64.mdx
new file mode 100644
index 0000000000..ca80ac9b35
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setBigUint64.mdx
@@ -0,0 +1,42 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.setBigUint64()
+
+The **`setBigUint64()`** method stores an unsigned 64-bit
+integer (unsigned long long) value at the specified byte offset from the start of the
+[`DataView`](../../../globals/DataView/DataView.mdx).
+
+## Syntax
+
+```js
+setBigUint64(byteOffset, value)
+setBigUint64(byteOffset, value, littleEndian)
+```
+
+### Parameters
+
+- byteOffset
+ - : The offset, in bytes, from the start of the view to store the data from.
+- value
+ - : The value to set as a `BigInt`. The highest possible value that fits in
+ an unsigned 64-bit integer is
+ `2n ** 64n - 1n`
+ (`18446744073709551615n`). Upon overflow, it will be zero
+ (`0n`).
+- littleEndian
+ - : _**optional**_ Indicates whether the 64-bit int is stored in [little- or big-endian](https://developer.mozilla.org/docs/Glossary/Endianness) format. If
+ `false` or `undefined`, a big-endian value is written.
+
+### Return value
+
+[`undefined`](../../../globals/undefined.mdx).
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such that it would store beyond the end
+ of the view.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setFloat32.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setFloat32.mdx
new file mode 100644
index 0000000000..91e9a90c7a
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setFloat32.mdx
@@ -0,0 +1,38 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.setFloat32()
+
+The **`setFloat32()`** method stores a signed 32-bit float
+(float) value at the specified byte offset from the start of the [`DataView`](../../../globals/DataView/DataView.mdx).
+
+## Syntax
+
+```js
+setFloat32(byteOffset, value)
+setFloat32(byteOffset, value, littleEndian)
+```
+
+### Parameters
+
+- `byteOffset`
+ - : The offset, in byte, from the start of the view where to store the data.
+- `value`
+ - : The value to set.
+- `littleEndian`
+ - : _**optional**_ Indicates whether the 32-bit float is stored in
+ little- or big-endian format. If `false` or
+ `undefined`, a big-endian value is written.
+
+### Return value
+
+[`undefined`](../../../globals/undefined.mdx).
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such as it would store beyond the end
+ of the view.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setFloat64.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setFloat64.mdx
new file mode 100644
index 0000000000..318332c029
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setFloat64.mdx
@@ -0,0 +1,39 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.setFloat64()
+
+The **`setFloat64()`** method stores a signed 64-bit float
+(double) value at the specified byte offset from the start of the
+[`DataView`](../../../globals/DataView/DataView.mdx).
+
+## Syntax
+
+```js
+setFloat64(byteOffset, value)
+setFloat64(byteOffset, value, littleEndian)
+```
+
+### Parameters
+
+- `byteOffset`
+ - : The offset, in byte, from the start of the view where to store the data.
+- `value`
+ - : The value to set.
+- `littleEndian`
+ - : _**optional**_ Indicates whether the 64-bit float is stored in
+ little- or big-endian format. If `false` or
+ `undefined`, a big-endian value is written.
+
+### Return value
+
+[`undefined`](../../../globals/undefined.mdx).
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such as it would store beyond the end
+ of the view.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setInt16.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setInt16.mdx
new file mode 100644
index 0000000000..f13bd8de34
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setInt16.mdx
@@ -0,0 +1,38 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.setInt16()
+
+The **`setInt16()`** method stores a signed 16-bit integer
+(short) value at the specified byte offset from the start of the [`DataView`](../../../globals/DataView/DataView.mdx).
+
+## Syntax
+
+```js
+setInt16(byteOffset, value)
+setInt16(byteOffset, value, littleEndian)
+```
+
+### Parameters
+
+- `byteOffset`
+ - : The offset, in byte, from the start of the view where to store the data.
+- `value`
+ - : The value to set.
+- `littleEndian`
+ - : _**optional**_ Indicates whether the 16-bit int is stored in
+ little- or big-endian format. If `false` or
+ `undefined`, a big-endian value is written.
+
+### Return value
+
+[`undefined`](../../../globals/undefined.mdx).
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such as it would store beyond the end
+ of the view.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setInt32.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setInt32.mdx
new file mode 100644
index 0000000000..07cc08d9a5
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setInt32.mdx
@@ -0,0 +1,38 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.setInt32()
+
+The **`setInt32()`** method stores a signed 32-bit integer
+(long) value at the specified byte offset from the start of the [`DataView`](../../../globals/DataView/DataView.mdx).
+
+## Syntax
+
+```js
+setInt32(byteOffset, value)
+setInt32(byteOffset, value, littleEndian)
+```
+
+### Parameters
+
+- `byteOffset`
+ - : The offset, in byte, from the start of the view where to store the data.
+- `value`
+ - : The value to set.
+- `littleEndian`
+ - : _**optional**_ Indicates whether the 32-bit int is stored in
+ little- or big-endian format. If `false` or
+ `undefined`, a big-endian value is written.
+
+### Return value
+
+[`undefined`](../../../globals/undefined.mdx).
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such as it would store beyond the end
+ of the view.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setInt8.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setInt8.mdx
new file mode 100644
index 0000000000..91b9201b0d
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setInt8.mdx
@@ -0,0 +1,33 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.setInt8()
+
+The **`setInt8()`** method stores a signed 8-bit integer (byte)
+value at the specified byte offset from the start of the [`DataView`](../../../globals/DataView/DataView.mdx).
+
+## Syntax
+
+```js
+setInt8(byteOffset, value)
+```
+
+### Parameters
+
+- `byteOffset`
+ - : The offset, in byte, from the start of the view where to store the data.
+- `value`
+ - : The value to set.
+
+### Return value
+
+[`undefined`](../../../globals/undefined.mdx).
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such as it would store beyond the end
+ of the view.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setUint16.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setUint16.mdx
new file mode 100644
index 0000000000..75da220d7d
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setUint16.mdx
@@ -0,0 +1,39 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.setUint16()
+
+The **`setUint16()`** method stores an unsigned 16-bit integer
+(unsigned short) value at the specified byte offset from the start of the
+[`DataView`](../../../globals/DataView/DataView.mdx).
+
+## Syntax
+
+```js
+setUint16(byteOffset, value)
+setUint16(byteOffset, value, littleEndian)
+```
+
+### Parameters
+
+- `byteOffset`
+ - : The offset, in byte, from the start of the view where to store the data.
+- `value`
+ - : The value to set.
+- `littleEndian`
+ - : _**optional**_ Indicates whether the 16-bit int is stored in
+ little- or big-endian format. If `false` or
+ `undefined`, a big-endian value is written.
+
+### Return value
+
+[`undefined`](../../../globals/undefined.mdx).
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such as it would store beyond the end
+ of the view.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setUint32.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setUint32.mdx
new file mode 100644
index 0000000000..a5956d9026
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setUint32.mdx
@@ -0,0 +1,39 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.setUint32()
+
+The **`setUint32()`** method stores an unsigned 32-bit integer
+(unsigned long) value at the specified byte offset from the start of the
+[`DataView`](../../../globals/DataView/DataView.mdx).
+
+## Syntax
+
+```js
+setUint32(byteOffset, value)
+setUint32(byteOffset, value, littleEndian)
+```
+
+### Parameters
+
+- `byteOffset`
+ - : The offset, in byte, from the start of the view where to store the data.
+- `value`
+ - : The value to set.
+- `littleEndian`
+ - : _**optional**_ Indicates whether the 32-bit int is stored in
+ little- or big-endian format. If `false` or
+ `undefined`, a big-endian value is written.
+
+### Return value
+
+[`undefined`](../../../globals/undefined.mdx).
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such as it would store beyond the end
+ of the view.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setUint8.mdx b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setUint8.mdx
new file mode 100644
index 0000000000..001859cf66
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DataView/prototype/setUint8.mdx
@@ -0,0 +1,33 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DataView.prototype.setUint8()
+
+The **`setUint8()`** method stores an unsigned 8-bit integer
+(byte) value at the specified byte offset from the start of the [`DataView`](../../../globals/DataView/DataView.mdx).
+
+## Syntax
+
+```js
+setUint8(byteOffset, value)
+```
+
+### Parameters
+
+- `byteOffset`
+ - : The offset, in byte, from the start of the view where to store the data.
+- `value`
+ - : The value to set.
+
+### Return value
+
+[`undefined`](../../../globals/undefined.mdx).
+
+### Errors thrown
+
+- [`RangeError`](../../RangeError/RangeError.mdx)
+ - : Thrown if the `byteOffset` is set such as it would store beyond the end
+ of the view.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/Date.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/Date.mdx
new file mode 100644
index 0000000000..bb636170d2
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/Date.mdx
@@ -0,0 +1,88 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date()
+
+The **`Date()`** constructor can create a `Date` instance or return a string representing the current time.
+
+## Syntax
+
+```js
+new Date()
+new Date(value)
+new Date(dateString)
+new Date(dateObject)
+
+new Date(year, monthIndex)
+new Date(year, monthIndex, day)
+new Date(year, monthIndex, day, hours)
+new Date(year, monthIndex, day, hours, minutes)
+new Date(year, monthIndex, day, hours, minutes, seconds)
+new Date(year, monthIndex, day, hours, minutes, seconds, milliseconds)
+
+Date()
+```
+
+> **Note:** `Date()` can be called with or without `new`, but with different effects. See [Return value](#return_value).
+
+### Parameters
+
+There are five basic forms for the `Date()` constructor:
+
+#### No parameters
+
+When no parameters are provided, the newly-created `Date` object represents the current date and time as of the time of instantiation.
+
+#### Time value or timestamp number
+
+- `value`
+ - : An integer value representing the number of milliseconds since January 1, 1970, 00:00:00 UTC (the ECMAScript epoch, equivalent to the UNIX epoch), with leap seconds ignored. Keep in mind that most [UNIX Timestamp](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_16) functions are only accurate to the nearest second.
+
+#### Date string
+
+- `dateString`
+
+ - : A string value representing a date, in a format recognized by the [`Date.parse()`](./parse.mdx) method. (The ECMA262 spec specifies a [simplified version of ISO 8601](https://tc39.es/ecma262/#sec-date-time-string-format), but other formats can be implementation-defined, which commonly include [IETF-compliant RFC 2822 timestamps](https://datatracker.ietf.org/doc/html/rfc2822#page-14).)
+
+ > **Note:** When parsing date strings with the `Date` constructor (and `Date.parse`, they are equivalent), always make sure that the input conforms to the ISO 8601 format (`YYYY-MM-DDTHH:mm:ss.sssZ`) — the parsing behavior with other formats is implementation-defined and may not work across all browsers. Support for [RFC 2822](https://datatracker.ietf.org/doc/html/rfc2822) format strings is by convention only. A library can help if many different formats are to be accommodated.
+ >
+ > Date-only strings (e.g. `"1970-01-01"`) are treated as UTC, while date-time strings (e.g. `"1970-01-01T12:00"`) are treated as local. You are therefore also advised to make sure the input format is consistent between the two types.
+
+#### Date object
+
+- `dateObject`
+ - : An existing `Date` object. This effectively makes a copy of the existing `Date` object with the same date and time. This is equivalent to `new Date(dateObject.valueOf())`, except the `valueOf()` method is not called.
+
+When one parameter is passed to the `Date()` constructor, `Date` instances are specially treated. All other values are [converted to primitives](https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#primitive_coercion). If the result is a string, it will be parsed as a date string. Otherwise, the resulting primitive is further coerced to a number and treated as a timestamp.
+
+#### Individual date and time component values
+
+Given at least a year and month, this form of `Date()` returns a `Date` object whose component values (year, month, day, hour, minute, second, and millisecond) all come from the following parameters. Any missing fields are given the lowest possible value (`1` for `day` and `0` for every other component). The parameter values are all evaluated against the local time zone, rather than UTC.
+
+If any parameter overflows its defined bounds, it "carries over". For example, if a `monthIndex` greater than `11` is passed in, those months will cause the year to increment; if a `minutes` greater than `59` is passed in, `hours` will increment accordingly, etc. Therefore, `new Date(1990, 12, 1)` will return January 1st, 1991; `new Date(2020, 5, 19, 25, 65)` will return 2:05 A.M. June 20th, 2020.
+
+Similarly, if any parameter underflows, it "borrows" from the higher positions. For example, `new Date(2020, 5, 0)` will return May 31st, 2020.
+
+- `year`
+ - : Integer value representing the year. Values from `0` to `99` map to the years `1900` to `1999`. All other values are the actual year. See the [example](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years).
+- `monthIndex`
+ - : Integer value representing the month, beginning with `0` for January to `11` for December.
+- `day` _**optional**_
+ - : Integer value representing the day of the month. The default is `1`.
+- `hours` _**optional**_
+ - : Integer value between `0` and `23` representing the hour of the day. Defaults to `0`.
+- `minutes` _**optional**_
+ - : Integer value representing the minute segment of a time. The default is `0` minutes past the hour.
+- `seconds` _**optional**_
+ - : Integer value representing the second segment of a time. The default is `0` seconds past the minute.
+- `milliseconds` _**optional**_
+ - : Integer value representing the millisecond segment of a time. The default is `0` milliseconds past the second.
+
+### Return value
+
+Calling `new Date()` (the `Date()` constructor) returns a [`Date`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date) object. If called with an invalid date string, or if the date to be constructed will have a UNIX timestamp less than `-8,640,000,000,000,000` or greater than `8,640,000,000,000,000` milliseconds, it returns a `Date` object whose [`toString()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/toString) method returns the literal string `Invalid Date`.
+
+Calling the `Date()` function (without the `new` keyword) returns a string representation of the current date and time, exactly as `new Date().toString()` does. Any arguments given in a `Date()` function call (without the `new` keyword) are ignored; regardless of whether it's called with an invalid date string — or even called with any arbitrary object or other primitive as an argument — it always returns a string representation of the current date and time.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/UTC.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/UTC.mdx
new file mode 100644
index 0000000000..472ad546cf
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/UTC.mdx
@@ -0,0 +1,84 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.UTC()
+
+The **`Date.UTC()`** method accepts parameters similar to the
+`Date` constructor, but treats them as UTC. It returns the number of
+milliseconds since January 1, 1970, 00:00:00 UTC.
+
+
+
+## Syntax
+
+```js
+Date.UTC(year)
+Date.UTC(year, monthIndex)
+Date.UTC(year, monthIndex, day)
+Date.UTC(year, monthIndex, day, hour)
+Date.UTC(year, monthIndex, day, hour, minute)
+Date.UTC(year, monthIndex, day, hour, minute, second)
+Date.UTC(year, monthIndex, day, hour, minute, second, millisecond)
+```
+
+- `year`
+
+ - : Integer value representing the year.
+
+ Values from `0` to `99` map to the years
+ `1900` to `1999`. All other values are the actual year.
+ See the [example](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years).
+
+- `monthIndex` _**optional**_
+ - : An integer between `0` (January) and `11` (December)
+ representing the month. Since ECMAScript 2017 it defaults to `0` if
+ omitted. _(Up until ECMAScript 2016, `monthIndex` was a required
+ parameter. As of ES2017, it no longer is.)_
+- `day` _**optional**_
+ - : An integer between `1` and `31` representing the day of the
+ month. If omitted, defaults to `1`.
+- `hour` _**optional**_
+ - : An integer between `0` and `23` representing the hours. If
+ omitted, defaults to `0`.
+- `minute` _**optional**_
+ - : An integer between `0` and `59` representing the minutes. If
+ omitted, defaults to `0`.
+- `second` _**optional**_
+ - : An integer between `0` and `59` representing the seconds. If
+ omitted, defaults to `0`.
+- `millisecond` _**optional**_
+ - : An integer between `0` and `999` representing the
+ milliseconds. If omitted, defaults to `0`.
+
+### Return value
+
+A number representing the number of milliseconds for the given date since January 1,
+1970, 00:00:00, UTC.
+
+## Description
+
+`UTC()` takes comma-delimited date and time parameters and returns the
+number of milliseconds between January 1, 1970, 00:00:00, universal time and the
+specified date and time.
+
+Years between `0` and `99` are converted to a year in the
+20th century `(1900 + year)`. For example, `95` is
+converted to the year `1995`.
+
+The `UTC()` method differs from the `Date` constructor in two
+ways:
+
+1. `Date.UTC()` uses universal time instead of the local time.
+2. `Date.UTC()` returns a time value as a number instead of creating a
+ `Date` object.
+
+If a parameter is outside of the expected range, the `UTC()` method updates
+the other parameters to accommodate the value. For example, if `15` is used
+for `monthIndex`, the year will be incremented by 1
+`(year + 1)` and `3` will be used for the month.
+
+`UTC()` is a static method of `Date`, so it's called as
+`Date.UTC()` rather than as a method of a `Date` instance.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/now.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/now.mdx
new file mode 100644
index 0000000000..369fba0f62
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/now.mdx
@@ -0,0 +1,19 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.now()
+
+The static **`Date.now()`** method returns the number of milliseconds elapsed since the [epoch](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date#the_ecmascript_epoch_and_timestamps), which is defined as the midnight at the beginning of January 1, 1970, UTC.
+
+## Syntax
+
+```js
+Date.now()
+```
+
+### Return value
+
+A number representing the number of milliseconds elapsed since the [epoch](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date#the_ecmascript_epoch_and_timestamps), which is defined as the midnight at the beginning of January 1, 1970, UTC.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/parse.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/parse.mdx
new file mode 100644
index 0000000000..e39b5c110d
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/parse.mdx
@@ -0,0 +1,123 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.parse()
+
+The **`Date.parse()`** method parses a string representation of
+a date, and returns the number of milliseconds since January 1, 1970, 00:00:00 UTC or
+`NaN` if the string is unrecognized or, in some cases, contains illegal date
+values (e.g. 2015-02-31).
+
+Only the [ISO 8601 format](https://tc39.es/ecma262/#sec-date-time-string-format) (`YYYY-MM-DDTHH:mm:ss.sssZ`) is explicitly specified to be supported. Other formats are implementation-defined and may not work across all browsers. A library can help if many different formats are to be accommodated.
+
+## Syntax
+
+```js
+Date.parse(dateString)
+```
+
+### Parameters
+
+- `dateString`
+ - : A string representing [a simplification of the ISO 8601 calendar date extended format](#date_time_string_format).
+ (Other formats may be used, but results are implementation-dependent.)
+
+### Return value
+
+A number representing the milliseconds elapsed since January 1, 1970, 00:00:00 UTC and
+the date obtained by parsing the given string representation of a date. If the argument
+doesn't represent a valid date, [`NaN`](../NaN.mdx) is returned.
+
+## Description
+
+The `parse()` method takes a date string (such as
+`"2011-10-10T14:48:00"`) and returns the number of milliseconds since January
+1, 1970, 00:00:00 UTC.
+
+This function is useful for setting date values based on string values, for example in
+conjunction with the [`setTime()`](./prototype/setTime.mdx) method and the
+`Date` object.
+
+### Date Time String Format
+
+The standard string representation of a date time string is a simplification of the ISO
+8601 calendar date extended format.
+(See the section [Date Time String Format](https://tc39.es/ecma262/#sec-date-time-string-format)
+in the ECMAScript specification for more details.)
+
+For example, `"2011-10-10"` (_date-only_ form),
+`"2011-10-10T14:48:00"` (_date-time_ form), or
+`"2011-10-10T14:48:00.000+09:00"` (_date-time_ form with milliseconds
+and time zone) can be passed and will be parsed. When the time zone offset is absent,
+date-only forms are interpreted as a UTC time and date-time forms are interpreted as
+local time.
+
+While time zone specifiers are used during date string parsing to interpret the
+argument, the value returned is always the number of milliseconds between January 1,
+1970 00:00:00 UTC and the point in time represented by the argument or `NaN`.
+
+Because `parse()` is a static method of `Date`, it is called as
+`Date.parse()` rather than as a method of a `Date` instance.
+
+### Fall-back to implementation-specific date formats
+
+> **Note:** This section contains implementation-specific behavior that can be inconsistent
+> across implementations.
+
+The ECMAScript specification states: If the String does not conform to the standard
+format the function may fall back to any implementation–specific heuristics or
+implementation–specific parsing algorithm. Unrecognizable strings or dates containing
+illegal element values in ISO formatted strings shall cause `Date.parse()` to
+return [`NaN`](../NaN.mdx).
+
+However, invalid values in date strings not recognized as simplified ISO format as
+defined by ECMA-262 may or may not result in [`NaN`](../NaN.mdx), depending on the browser
+and values provided, e.g.:
+
+```js
+// Non-ISO string with invalid date values
+new Date("23/25/2014");
+```
+
+will be treated as a local date of 25 November, 2015 in Firefox 30 and an invalid date
+in Safari 7.
+
+However, if the string is recognized as an ISO format string and it contains invalid
+values, it will return [`NaN`](../NaN.mdx):
+
+```js
+// ISO string with invalid values
+new Date("2014-25-23").toISOString();
+// throws "RangeError: invalid date"
+```
+
+SpiderMonkey's implementation-specific heuristic can be found in [`jsdate.cpp`](https://searchfox.org/mozilla-central/source/js/src/jsdate.cpp?rev=64553c483cd1#889).
+The string `"10 06 2014"` is an example of a non-conforming ISO format and
+thus falls back to a custom routine. See also this [rough outline](https://bugzilla.mozilla.org/show_bug.cgi?id=1023155#c6) on
+how the parsing works.
+
+```js
+new Date("10 06 2014");
+```
+
+will be treated as a local date of 6 October, 2014, and not 10 June, 2014.
+
+Other examples:
+
+```js
+new Date("foo-bar 2014").toString();
+// returns: "Invalid Date"
+
+Date.parse("foo-bar 2014");
+// returns: NaN
+```
+
+### Differences in assumed time zone
+
+> **Note:** This section contains implementation-specific behavior that can be inconsistent
+> across implementations.
+
+Given a non-standard date string of `"March 7, 2014"`, `parse()` assumes a local time zone, but given a simplification of the ISO 8601 calendar date extended format such as `"2014-03-07"`, it will assume a time zone of UTC. Therefore `Date` objects produced using those strings may represent different moments in time depending on the version of ECMAScript supported unless the system is set with a local time zone of UTC. This means that two date strings that appear equivalent may result in two different values depending on the format of the string that is being converted.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/@@toPrimitive.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/@@toPrimitive.mdx
new file mode 100644
index 0000000000..0c9c5443f1
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/@@toPrimitive.mdx
@@ -0,0 +1,40 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype\[Symbol.toPrimitive]
+
+The **`[Symbol.toPrimitive]()`** method converts a `Date`
+object to a primitive value.
+
+## Syntax
+
+```js
+Date()[Symbol.toPrimitive](hint)
+```
+
+### Return value
+
+The primitive value of the given `Date` object. Depending on the argument,
+the method can return either a string or a number.
+
+## Description
+
+The `[Symbol.toPrimitive]()` method of the `Date` object returns a
+primitive value, that is either of type number or of type string.
+
+If `hint` is `string` or `default`,
+`[Symbol.toPrimitive]()` tries to call the [`toString`](../../Object/prototype/toString.mdx) method. If the `toString` property does not exist, it tries to
+call the [`valueOf`](../../Object/prototype/valueOf.mdx) method and if the
+`valueOf` does not exist either, `[Symbol.toPrimitive]()` throws a
+[`TypeError`](../../../globals/TypeError/TypeError.mdx).
+
+If `hint` is `number`, `[Symbol.toPrimitive]()` first tries
+to call `valueOf`, and if that fails, it calls `toString`.
+
+JavaScript calls the `[Symbol.toPrimitive]()` method to convert an object to a
+primitive value. You rarely need to invoke the `[Symbol.toPrimitive]()` method
+yourself; JavaScript automatically invokes it when encountering an object where a
+primitive value is expected.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getDate.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getDate.mdx
new file mode 100644
index 0000000000..56d9107966
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getDate.mdx
@@ -0,0 +1,21 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getDate()
+
+The **`getDate()`** method returns the day of the month for the
+specified date according to local time.
+
+## Syntax
+
+```js
+getDate()
+```
+
+### Return value
+
+An integer number, between 1 and 31, representing the day of the month for the given
+date according to local time.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getDay.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getDay.mdx
new file mode 100644
index 0000000000..84e9c2ea49
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getDay.mdx
@@ -0,0 +1,22 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getDay()
+
+The **`getDay()`** method returns the
+day of the week for the specified date according to local time, where 0 represents
+Sunday. For the day of the month, see [`Date.prototype.getDate()`](./getDate.mdx).
+
+## Syntax
+
+```js
+getDay()
+```
+
+### Return value
+
+An integer number, between 0 and 6, corresponding to the day of the week for the given
+date, according to local time: 0 for Sunday, 1 for Monday, 2 for Tuesday, and so on.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getFullYear.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getFullYear.mdx
new file mode 100644
index 0000000000..595f659fa1
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getFullYear.mdx
@@ -0,0 +1,29 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getFullYear()
+
+The **`getFullYear()`** method returns the year of the
+specified date according to local time.
+
+Use this method instead of the [`Date.prototype.getYear()`](./getYear.mdx) method.
+
+## Syntax
+
+```js
+getFullYear()
+```
+
+### Return value
+
+A number corresponding to the year of the given date, according to local time.
+
+## Description
+
+The value returned by `getFullYear()` is an absolute number. For dates
+between the years 1000 and 9999, `getFullYear()` returns a four-digit number,
+for example, 1995. Use this function to make sure a year is compliant with years after
+2000\.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getHours.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getHours.mdx
new file mode 100644
index 0000000000..d5e84b9ad7
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getHours.mdx
@@ -0,0 +1,21 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getHours()
+
+The **`getHours()`** method returns the hour for the specified
+date, according to local time.
+
+## Syntax
+
+```js
+getHours()
+```
+
+### Return value
+
+An integer number, between 0 and 23, representing the hour for the given date according
+to local time.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getMilliseconds.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getMilliseconds.mdx
new file mode 100644
index 0000000000..612ffbf9da
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getMilliseconds.mdx
@@ -0,0 +1,21 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getMilliseconds()
+
+The **`getMilliseconds()`** method returns the milliseconds in
+the specified date according to local time.
+
+## Syntax
+
+```js
+getMilliseconds()
+```
+
+### Return value
+
+A number, between 0 and 999, representing the milliseconds for the given date according
+to local time.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getMinutes.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getMinutes.mdx
new file mode 100644
index 0000000000..aa332c8b95
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getMinutes.mdx
@@ -0,0 +1,21 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getMinutes()
+
+The **`getMinutes()`** method returns the minutes in the
+specified date according to local time.
+
+## Syntax
+
+```js
+getMinutes()
+```
+
+### Return value
+
+An integer number, between 0 and 59, representing the minutes in the given date
+according to local time.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getMonth.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getMonth.mdx
new file mode 100644
index 0000000000..be75f56fae
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getMonth.mdx
@@ -0,0 +1,22 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getMonth()
+
+The **`getMonth()`** method returns the month in the specified
+date according to local time, as a zero-based value (where zero indicates the first
+month of the year).
+
+## Syntax
+
+```js
+getMonth()
+```
+
+### Return value
+
+An integer number, between 0 and 11, representing the month in the given date according
+to local time. 0 corresponds to January, 1 to February, and so on.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getSeconds.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getSeconds.mdx
new file mode 100644
index 0000000000..bebafbcc9e
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getSeconds.mdx
@@ -0,0 +1,21 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getSeconds()
+
+The **`getSeconds()`** method returns the seconds in the
+specified date according to local time.
+
+## Syntax
+
+```js
+getSeconds()
+```
+
+### Return value
+
+An integer number, between 0 and 59, representing the seconds in the given date
+according to local time.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getTime.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getTime.mdx
new file mode 100644
index 0000000000..38c1c6c399
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getTime.mdx
@@ -0,0 +1,44 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getTime()
+
+The **`getTime()`** method returns the number of milliseconds since the [epoch](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date#the_ecmascript_epoch_and_timestamps), which is defined as the midnight at the beginning of January 1, 1970, UTC.
+
+You can use this method to help assign a date and time to another `Date`
+object. This method is functionally equivalent to the [`Date.prototype.valueOf()`](./valueOf.mdx) method.
+
+## Syntax
+
+```js
+getTime()
+```
+
+### Return value
+
+A number representing the milliseconds elapsed between 1 January 1970 00:00:00 UTC and
+the given date.
+
+## Description
+
+To offer protection against timing attacks and fingerprinting, the precision of
+`new Date().getTime()` might get rounded depending on browser settings.
+
+```js
+// reduced time precision (2ms) in Firefox 60
+new Date().getTime();
+// 1519211809934
+// 1519211810362
+// 1519211811670
+// …
+
+// reduced time precision with `privacy.resistFingerprinting` enabled
+new Date().getTime();
+// 1519129853500
+// 1519129858900
+// 1519129864400
+// …
+```
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getTimezoneOffset.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getTimezoneOffset.mdx
new file mode 100644
index 0000000000..f8d426d1a0
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getTimezoneOffset.mdx
@@ -0,0 +1,41 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getTimezoneOffset()
+
+The **`getTimezoneOffset()`** method returns the difference, in minutes, between a date as evaluated in the UTC time zone, and the same date as evaluated in the local time zone.
+
+## Syntax
+
+```js
+getTimezoneOffset()
+```
+
+### Return value
+
+The difference, in minutes, between the date as evaluated in the UTC time zone and as evaluated in the local time zone. The actual local time algorithm is implementation-defined, and the return value is allowed to be zero in runtimes without appropriate data.
+
+## Description
+
+`date.getTimezoneOffset()` returns the difference, in minutes, between `date` as evaluated in the UTC time zone and as evaluated in the local time zone — that is, the time zone of the host system in which the browser is being used (if the code is run from the Web in a browser), or otherwise the host system of whatever JavaScript runtime (for example, a Node.js environment) the code is executed in.
+
+### Negative values and positive values
+
+The number of minutes returned by `getTimezoneOffset()` is positive if the local time zone is behind UTC, and negative if the local time zone is ahead of UTC. For example, for UTC+10, `-600` will be returned.
+
+| Current time zone | Return value |
+| ----------------- | ------------ |
+| UTC-8 | 480 |
+| UTC | 0 |
+| UTC+3 | -180 |
+
+### Varied results in Daylight Saving Time (DST) regions
+
+In a region that annually shifts in and out of Daylight Saving Time (DST), as `date` varies, the number of minutes returned by calling `getTimezoneOffset()` can be non-uniform.
+
+> **Note:** `getTimezoneOffset()`'s behavior will never differ based on the time when the code is run — its behavior is always consistent when running in the same region. Only the value of `date` affects the result.
+
+In most implementations, the [IANA time zone database](https://en.wikipedia.org/wiki/Daylight_saving_time#IANA_time_zone_database) (tzdata) is used to precisely determine the offset of the local timezone at the moment of the `date`. However, if such information is unavailable, an implementation may return zero.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCDate.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCDate.mdx
new file mode 100644
index 0000000000..c78c56720a
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCDate.mdx
@@ -0,0 +1,24 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getUTCDate()
+
+The **`getUTCDate()`** method returns the day of the month (from
+1 to 31) in the specified date according to universal time.
+
+## Syntax
+
+```js
+getUTCDate()
+```
+
+### Return value
+
+A number.
+If the `Date` object represents a valid date, an integer number ranging from 1 to 31
+representing day of month for the given date, according to universal time.
+Otherwise, [`NaN`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number/NaN)
+if the `Date` object doesn't represent a valid date.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCDay.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCDay.mdx
new file mode 100644
index 0000000000..a8b8056934
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCDay.mdx
@@ -0,0 +1,25 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getUTCDay()
+
+The **`getUTCDay()`** method returns the day of the week in the
+specified date according to universal time, where 0 represents Sunday.
+
+## Syntax
+
+```js
+getUTCDay()
+```
+
+### Return value
+
+A number.
+If the `Date` object represents a valid date, an integer number corresponding to the day
+of the week for the given date, according to universal time: 0 for Sunday, 1 for Monday,
+2 for Tuesday, and so on.
+Otherwise, [`NaN`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number/NaN)
+if the `Date` object doesn't represent a valid date.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCFullYear.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCFullYear.mdx
new file mode 100644
index 0000000000..8fbb838eae
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCFullYear.mdx
@@ -0,0 +1,29 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getUTCFullYear()
+
+The **`getUTCFullYear()`** method returns the year in the
+specified date according to universal time.
+
+## Syntax
+
+```js
+getUTCFullYear()
+```
+
+### Return value
+
+A number.
+If the `Date` object represents a valid date, an integer representing the year in the given date
+according to universal time.
+Otherwise, [`NaN`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number/NaN)
+if the `Date` object doesn't represent a valid date.
+
+## Description
+
+The value returned by `getUTCFullYear()` is an absolute number that is
+compliant with year-2000, for example, 1995.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCHours.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCHours.mdx
new file mode 100644
index 0000000000..d5725c8dbd
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCHours.mdx
@@ -0,0 +1,24 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getUTCHours()
+
+The **`getUTCHours()`** method returns the hours in the
+specified date according to universal time.
+
+## Syntax
+
+```js
+getUTCHours()
+```
+
+### Return value
+
+A number.
+If the `Date` object represents a valid date, an integer between 0 and 23, representing the hours in the given date according
+to Coordinated Universal Time.
+Otherwise, [`NaN`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number/NaN)
+if the `Date` object doesn't represent a valid date.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCMilliseconds.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCMilliseconds.mdx
new file mode 100644
index 0000000000..1d50bf4591
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCMilliseconds.mdx
@@ -0,0 +1,27 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getUTCMilliseconds()
+
+The **`getUTCMilliseconds()`** method returns the milliseconds
+portion of the time object's value according to universal time.
+
+## Syntax
+
+```js
+getUTCMilliseconds()
+```
+
+### Return value
+
+A number.
+If the `Date` object represents a valid date, an integer between 0 and 999, representing
+the milliseconds portion of the given `Date` object according to universal time.
+Otherwise, [`NaN`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number/NaN)
+if the `Date` object doesn't represent a valid date.
+
+Not to be confused with Unix epoch time. To get the total milliseconds since 1970/01/01,
+use the [`getTime()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) method.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCMinutes.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCMinutes.mdx
new file mode 100644
index 0000000000..303b0d07f6
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCMinutes.mdx
@@ -0,0 +1,24 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getUTCMinutes()
+
+The **`getUTCMinutes()`** method returns the minutes in the
+specified date according to universal time.
+
+## Syntax
+
+```js
+getUTCMinutes()
+```
+
+### Return value
+
+A number.
+If the `Date` object represents a valid date, an integer between 0 and 59,
+representing the minutes in the given date according to universal time.
+Otherwise, [`NaN`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number/NaN)
+if the `Date` object doesn't represent a valid date.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCMonth.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCMonth.mdx
new file mode 100644
index 0000000000..056d3231ad
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCMonth.mdx
@@ -0,0 +1,24 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getUTCMonth()
+
+The **`getUTCMonth()`** returns the month of the specified date
+according to universal time, as a zero-based value (where zero indicates the first month
+of the year).
+
+## Syntax
+
+```js
+getUTCMonth()
+```
+
+### Return value
+
+A number. If the `Date` object represents a valid date, an integer number, between 0 and 11,
+corresponding to the month of the given date according to universal time. 0 for January,
+1 for February, 2 for March, and so on. Otherwise, [`NaN`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number/NaN)
+if the `Date` object doesn't represent a valid date.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCSeconds.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCSeconds.mdx
new file mode 100644
index 0000000000..0dab99e177
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getUTCSeconds.mdx
@@ -0,0 +1,24 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getUTCSeconds()
+
+The **`getUTCSeconds()`** method returns the seconds in the
+specified date according to universal time.
+
+## Syntax
+
+```js
+getUTCSeconds()
+```
+
+### Return value
+
+A number.
+If the `Date` object represents a valid date, an integer between 0 and 59, representing
+the seconds in the given date according to universal time.
+Otherwise, [`NaN`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number/NaN)
+if the `Date` object doesn't represent a valid date.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getYear.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getYear.mdx
new file mode 100644
index 0000000000..69c0c24aa0
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/getYear.mdx
@@ -0,0 +1,36 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.getYear()
+
+The **`getYear()`** method returns the year in the specified
+date according to local time. Because `getYear()` does not return full years
+("year 2000 problem"), it is no longer used and has been replaced by the
+[`Date.prototype.getFullYear()`](./getFullYear.mdx) method.
+
+## Syntax
+
+```js
+getYear()
+```
+
+### Return value
+
+A number representing the year of the given date, according to local time, minus 1900.
+
+## Description
+
+- For years greater than or equal to 2000, the value returned by
+ `getYear()` is 100 or greater. For example, if the year is 2026,
+ `getYear()` returns 126.
+- For years between and including 1900 and 1999, the value returned by
+ `getYear()` is between 0 and 99. For example, if the year is 1976,
+ `getYear()` returns 76.
+- For years less than 1900, the value returned by `getYear()` is less than 0. For example, if the year is 1800, `getYear()` returns -100.
+
+To take into account years before and after 2000, you should use
+[`Date.prototype.getFullYear()`](./getFullYear.mdx) instead of
+`getYear()` so that the year is specified in full.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setDate.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setDate.mdx
new file mode 100644
index 0000000000..b9b0e5ae63
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setDate.mdx
@@ -0,0 +1,35 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.setDate()
+
+The **`setDate()`** method changes the day of the month of a given `Date` instance, based on local time.
+
+To instead change the day of the month for a given `Date` instance based on UTC time, use the [`Date.prototype.setUTCDate()`](./setUTCDate.mdx) method.
+
+## Syntax
+
+```js
+setDate(dayValue)
+```
+
+### Parameters
+
+- `dayValue`
+ - : An integer representing the day of the month.
+
+### Return value
+
+The number of milliseconds between 1 January 1970 00:00:00 UTC and the given date (the
+`Date` object is also changed in place).
+
+## Description
+
+If the `dayValue` is outside of the range of date values for the month, `setDate()` will update the `Date` object accordingly.
+
+For example, if 0 is provided for `dayValue`, the date will be set to the last day of the previous month. If you use 40 for `dayValue`, and the month stored in the `Date` object is June, the day will be changed to 10 and the month will be incremented to July.
+
+If a negative number is provided for `dayValue`, the date will be set counting backwards from the last day of the previous month. -1 would result in the date being set to 1 day before the last day of the previous month.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setFullYear.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setFullYear.mdx
new file mode 100644
index 0000000000..9310a7cc84
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setFullYear.mdx
@@ -0,0 +1,47 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.setFullYear()
+
+The **`setFullYear()`** method sets the full year for a
+specified date according to local time. Returns new timestamp.
+
+## Syntax
+
+```js
+setFullYear(yearValue)
+setFullYear(yearValue, monthValue)
+setFullYear(yearValue, monthValue, dateValue)
+```
+
+### Parameters
+
+- `yearValue`
+ - : An integer specifying the numeric value of the year, for example, 1995.
+- `monthValue`
+ - : Optional. An integer between 0 and 11 representing the months January through
+ December.
+- `dateValue`
+ - : Optional. An integer between 1 and 31 representing the day of the month. If you
+ specify the `dateValue` parameter, you must also specify the
+ `monthValue`.
+
+### Return value
+
+The number of milliseconds between 1 January 1970 00:00:00 UTC and the updated date.
+
+## Description
+
+If you do not specify the `monthValue` and
+`dateValue` parameters, the values returned from the
+[`Date.prototype.getMonth()`](./getMonth.mdx) and
+[`Date.prototype.getDate()`](./getDate.mdx) methods are used.
+
+If a parameter you specify is outside of the expected range, `setFullYear()`
+attempts to update the other parameters and the date information in the
+`Date` object accordingly. For example, if you specify 15 for
+`monthValue`, the year is incremented by 1
+(`yearValue + 1`), and 3 is used for the month.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setHours.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setHours.mdx
new file mode 100644
index 0000000000..fed986942b
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setHours.mdx
@@ -0,0 +1,57 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.setHours()
+
+The **`setHours()`** method sets the hours for a specified date
+according to local time, and returns the number of milliseconds since January 1, 1970
+00:00:00 UTC until the time represented by the updated `Date` instance.
+
+## Syntax
+
+```js
+setHours(hoursValue)
+setHours(hoursValue, minutesValue)
+setHours(hoursValue, minutesValue, secondsValue)
+setHours(hoursValue, minutesValue, secondsValue, msValue)
+```
+
+### Parameters
+
+- `hoursValue`
+ - : Ideally, an integer between 0 and 23, representing the hour. If a value greater than
+ 23 is provided, the datetime will be incremented by the extra hours.
+- `minutesValue`
+ - : Optional. Ideally, an integer between 0 and 59, representing the minutes. If a value
+ greater than 59 is provided, the datetime will be incremented by the extra minutes.
+- `secondsValue`
+ - : Optional. Ideally, an integer between 0 and 59, representing the seconds. If a value
+ greater than 59 is provided, the datetime will be incremented by the extra seconds. If
+ you specify the `secondsValue` parameter, you must also specify
+ the `minutesValue`.
+- `msValue`
+ - : Optional. Ideally, a number between 0 and 999, representing the milliseconds. If a
+ value greater than 999 is provided, the datetime will be incremented by the extra
+ milliseconds. If you specify the `msValue` parameter, you must
+ also specify the `minutesValue` and `secondsValue`.
+
+### Return value
+
+The number of milliseconds between January 1, 1970 00:00:00 UTC and the updated date.
+
+## Description
+
+If you do not specify the `minutesValue`,
+`secondsValue`, and `msValue` parameters,
+the values returned from the [`Date.prototype.getMinutes()`](./getMinutes.mdx),
+[`Date.prototype.getSeconds()`](./getSeconds.mdx), and
+[`Date.prototype.getMilliseconds()`](./getMilliseconds.mdx) methods are used.
+
+If a parameter you specify is outside of the expected range, `setHours()`
+attempts to update the date information in the `Date` object accordingly.
+For example, if you use 100 for `secondsValue`, the minutes will
+be incremented by 1 (`minutesValue + 1`), and 40 will be used for
+seconds.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setMilliseconds.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setMilliseconds.mdx
new file mode 100644
index 0000000000..d5d59807e1
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setMilliseconds.mdx
@@ -0,0 +1,31 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.setMilliseconds()
+
+The **`setMilliseconds()`** method sets the milliseconds for a
+specified date according to local time.
+
+## Syntax
+
+```js
+setMilliseconds(millisecondsValue)
+```
+
+### Parameters
+
+- `millisecondsValue`
+ - : A number between 0 and 999, representing the milliseconds.
+
+### Return value
+
+The number of milliseconds between 1 January 1970 00:00:00 UTC and the updated date.
+
+## Description
+
+If you specify a number outside the expected range, the date information in the
+`Date` object is updated accordingly. For example, if you specify 1005, the
+number of seconds is incremented by 1, and 5 is used for the milliseconds.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setMinutes.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setMinutes.mdx
new file mode 100644
index 0000000000..8c4b41665a
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setMinutes.mdx
@@ -0,0 +1,48 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.setMinutes()
+
+The **`setMinutes()`** method sets the minutes for a specified
+date according to local time.
+
+## Syntax
+
+```js
+setMinutes(minutesValue)
+setMinutes(minutesValue, secondsValue)
+setMinutes(minutesValue, secondsValue, msValue)
+```
+
+### Parameters
+
+- `minutesValue`
+ - : An integer between 0 and 59, representing the minutes.
+- `secondsValue`
+ - : Optional. An integer between 0 and 59, representing the seconds. If you specify the
+ `secondsValue` parameter, you must also specify the
+ `minutesValue`.
+- `msValue`
+ - : Optional. A number between 0 and 999, representing the milliseconds. If you specify
+ the `msValue` parameter, you must also specify the
+ `minutesValue` and `secondsValue`.
+
+### Return value
+
+The number of milliseconds between 1 January 1970 00:00:00 UTC and the updated date.
+
+## Description
+
+If you do not specify the `secondsValue` and
+`msValue` parameters, the values returned from
+[`Date.prototype.getSeconds()`](./getSeconds.mdx) and
+[`Date.prototype.getMilliseconds()`](./getMilliseconds.mdx) methods are used.
+
+If a parameter you specify is outside of the expected range, `setMinutes()`
+attempts to update the date information in the `Date` object accordingly.
+For example, if you use 100 for `secondsValue`, the minutes will
+be incremented by 1 (`minutesValue + 1`), and 40 will be used for
+seconds.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setMonth.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setMonth.mdx
new file mode 100644
index 0000000000..6a62496e29
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setMonth.mdx
@@ -0,0 +1,45 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.setMonth()
+
+The **`setMonth()`** method sets the month for a specified date according to the currently set year.
+
+## Syntax
+
+```js
+setMonth(monthValue)
+setMonth(monthValue, dayValue)
+```
+
+### Parameters
+
+- `monthValue`
+ - : A zero-based integer representing the month of the year offset from the start of the
+ year. So, 0 represents January, 11 represents December, -1 represents December of the
+ previous year, and 12 represents January of the following year.
+- `dayValue`
+ - : Optional. An integer from 1 to 31, representing the day of the month.
+
+### Return value
+
+The number of milliseconds between 1 January 1970 00:00:00 UTC and the updated date.
+
+## Description
+
+If you do not specify the `dayValue` parameter, the value
+returned from the [`Date.prototype.getDate()`](./getDate.mdx) method is used.
+
+If a parameter you specify is outside of the expected range, `setMonth()`
+attempts to update the date information in the `Date` object accordingly.
+For example, if you use 15 for `monthValue`, the year will be
+incremented by 1, and 3 will be used for month.
+
+The current day of month will have an impact on the behavior of this method.
+Conceptually it will add the number of days given by the current day of the month to the
+1st day of the new month specified as the parameter, to return the new date.
+For example, if the current value is 31st January 2016, calling setMonth with a value of 1 will return 2nd March 2016.
+This is because in 2016 February had 29 days.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setSeconds.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setSeconds.mdx
new file mode 100644
index 0000000000..c851c0820a
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setSeconds.mdx
@@ -0,0 +1,40 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.setSeconds()
+
+The **`setSeconds()`** method sets the seconds for a specified
+date according to local time.
+
+## Syntax
+
+```js
+setSeconds(secondsValue)
+setSeconds(secondsValue, msValue)
+```
+
+### Parameters
+
+- `secondsValue`
+ - : An integer between 0 and 59, representing the seconds.
+- `msValue` _**optional**_
+ - : Optional. A number between 0 and 999, representing the milliseconds.
+
+### Return value
+
+The number of milliseconds between 1 January 1970 00:00:00 UTC and the updated date.
+
+## Description
+
+If you do not specify the `msValue` parameter, the value returned
+from the [`Date.prototype.getMilliseconds()`](./getMilliseconds.mdx) method is
+used.
+
+If a parameter you specify is outside of the expected range, `setSeconds()`
+attempts to update the date information in the `Date` object accordingly.
+For example, if you use 100 for `secondsValue`, the minutes stored
+in the `Date` object will be incremented by 1, and 40 will be used for
+seconds.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setTime.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setTime.mdx
new file mode 100644
index 0000000000..f614e2699b
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setTime.mdx
@@ -0,0 +1,32 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.setTime()
+
+The **`setTime()`** method sets the `Date` object
+to the time represented by a number of milliseconds since January 1, 1970, 00:00:00 UTC.
+
+## Syntax
+
+```js
+setTime(timeValue)
+```
+
+### Parameters
+
+- `timeValue`
+ - : An integer representing the number of milliseconds since 1 January 1970, 00:00:00
+ UTC.
+
+### Return value
+
+The number of milliseconds between 1 January 1970 00:00:00 UTC and the updated date
+(effectively, the value of the argument).
+
+## Description
+
+Use the `setTime()` method to help assign a date and time to another
+`Date` object.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCDate.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCDate.mdx
new file mode 100644
index 0000000000..8bca964139
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCDate.mdx
@@ -0,0 +1,34 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.setUTCDate()
+
+The **`setUTCDate()`** method changes the day of the month of a given `Date` instance, based on UTC time.
+
+To instead change the day of the month for a given `Date` instance based on local time, use the [`Date.prototype.setDate()`](././setDate.mdx) method.
+
+## Syntax
+
+```js
+setUTCDate(dayValue)
+```
+
+### Parameters
+
+- `dayValue`
+ - : An integer from 1 to 31, representing the day of the month.
+
+### Return value
+
+The number of milliseconds between 1 January 1970 00:00:00 UTC and the updated date.
+
+## Description
+
+If the `dayValue` is outside of the range of date values for the month, `setDate()` will update the `Date` object accordingly.
+
+For example, if 0 is provided for `dayValue`, the date will be set to the last day of the previous month. If you use 40 for `dayValue`, and the month stored in the `Date` object is June, the day will be changed to 10 and the month will be incremented to July.
+
+If a negative number is provided for `dayValue`, the date will be set counting backwards from the last day of the previous month. -1 would result in the date being set to 1 day before the last day of the previous month.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCFullYear.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCFullYear.mdx
new file mode 100644
index 0000000000..32a7209c7d
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCFullYear.mdx
@@ -0,0 +1,47 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.setUTCFullYear()
+
+The **`setUTCFullYear()`** method sets the full year for a
+specified date according to universal time.
+
+## Syntax
+
+```js
+setUTCFullYear(yearValue)
+setUTCFullYear(yearValue, monthValue)
+setUTCFullYear(yearValue, monthValue, dayValue)
+```
+
+### Parameters
+
+- `yearValue`
+ - : An integer specifying the numeric value of the year, for example, 1995.
+- `monthValue`
+ - : Optional. An integer between 0 and 11 representing the months January through
+ December.
+- `dayValue`
+ - : Optional. An integer between 1 and 31 representing the day of the month. If you
+ specify the `dayValue` parameter, you must also specify the
+ `monthValue`.
+
+### Return value
+
+The number of milliseconds between 1 January 1970 00:00:00 UTC and the updated date.
+
+## Description
+
+If you do not specify the `monthValue` and
+`dayValue` parameters, the values returned from the
+[`Date.prototype.getUTCMonth()`](./getUTCMonth.mdx) and
+[`Date.prototype.getUTCDate()`](./getUTCDate.mdx) methods are used.
+
+If a parameter you specify is outside of the expected range,
+`setUTCFullYear()` attempts to update the other parameters and the date
+information in the `Date` object accordingly. For example, if you specify 15
+for `monthValue`, the year is incremented by 1
+(`yearValue + 1`), and 3 is used for the month.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCHours.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCHours.mdx
new file mode 100644
index 0000000000..c4aac51b1b
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCHours.mdx
@@ -0,0 +1,53 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.setUTCHours()
+
+The **`setUTCHours()`** method sets the hour for a specified
+date according to universal time, and returns the number of milliseconds since January
+1, 1970 00:00:00 UTC until the time represented by the updated `Date`
+instance.
+
+## Syntax
+
+```js
+setUTCHours(hoursValue)
+setUTCHours(hoursValue, minutesValue)
+setUTCHours(hoursValue, minutesValue, secondsValue)
+setUTCHours(hoursValue, minutesValue, secondsValue, msValue)
+```
+
+### Parameters
+
+- `hoursValue`
+ - : An integer between 0 and 23, representing the hour.
+- `minutesValue`
+ - : Optional. An integer between 0 and 59, representing the minutes.
+- `secondsValue`
+ - : Optional. An integer between 0 and 59, representing the seconds. If you specify the
+ `secondsValue` parameter, you must also specify the
+ `minutesValue`.
+- `msValue`
+ - : Optional. A number between 0 and 999, representing the milliseconds. If you specify
+ the `msValue` parameter, you must also specify the
+ `minutesValue` and `secondsValue`.
+
+### Return value
+
+The number of milliseconds between January 1, 1970 00:00:00 UTC and the updated date.
+
+## Description
+
+If you do not specify the `minutesValue`,
+`secondsValue`, and `msValue` parameters,
+the values returned from the [`Date.prototype.getUTCMinutes()`](./getUTCMinutes.mdx), [`Date.prototype.getUTCSeconds()`](./getUTCSeconds.mdx),
+and [`Date.prototype.getUTCMilliseconds()`](./getUTCMilliseconds.mdx) methods
+are used.
+
+If a parameter you specify is outside of the expected range, `setUTCHours()`
+attempts to update the date information in the `Date` object accordingly.
+For example, if you use 100 for `secondsValue`, the minutes will
+be incremented by 1 (`minutesValue + 1`), and 40 will be used for seconds.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCMilliseconds.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCMilliseconds.mdx
new file mode 100644
index 0000000000..5e6b44fd66
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCMilliseconds.mdx
@@ -0,0 +1,33 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.setUTCMilliseconds()
+
+The **`setUTCMilliseconds()`** method sets the milliseconds for
+a specified date according to universal time.
+
+## Syntax
+
+```js
+setUTCMilliseconds(millisecondsValue)
+```
+
+### Parameters
+
+- `millisecondsValue`
+ - : A number between 0 and 999, representing the milliseconds.
+
+### Return value
+
+The number of milliseconds between 1 January 1970 00:00:00 UTC and the updated date.
+
+## Description
+
+If a parameter you specify is outside of the expected range,
+`setUTCMilliseconds()` attempts to update the date information in the
+`Date` object accordingly. For example, if you use 1100 for
+`millisecondsValue`, the seconds stored in the `Date`
+object will be incremented by 1, and 100 will be used for milliseconds.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCMinutes.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCMinutes.mdx
new file mode 100644
index 0000000000..fff98105a1
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCMinutes.mdx
@@ -0,0 +1,49 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.setUTCMinutes()
+
+The **`setUTCMinutes()`** method sets the minutes for a
+specified date according to universal time.
+
+## Syntax
+
+```js
+setUTCMinutes(minutesValue)
+setUTCMinutes(minutesValue, secondsValue)
+setUTCMinutes(minutesValue, secondsValue, msValue)
+```
+
+### Parameters
+
+- `minutesValue`
+ - : An integer between 0 and 59, representing the minutes.
+- `secondsValue`
+ - : Optional. An integer between 0 and 59, representing the seconds. If you specify the
+ `secondsValue` parameter, you must also specify the
+ `minutesValue`.
+- `msValue`
+ - : Optional. A number between 0 and 999, representing the milliseconds. If you specify
+ the `msValue` parameter, you must also specify the
+ `minutesValue` and `secondsValue`.
+
+### Return value
+
+The number of milliseconds between 1 January 1970 00:00:00 UTC and the updated date.
+
+## Description
+
+If you do not specify the `secondsValue` and
+`msValue` parameters, the values returned from
+[`Date.prototype.getUTCSeconds()`](./getUTCSeconds.mdx) and
+[`Date.prototype.getUTCMilliseconds()`](./getUTCMilliseconds.mdx) methods are
+used.
+
+If a parameter you specify is outside of the expected range,
+`setUTCMinutes()` attempts to update the date information in the
+`Date` object accordingly. For example, if you use 100 for
+`secondsValue`, the minutes will be incremented by 1
+(`minutesValue + 1`), and 40 will be used for seconds.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCMonth.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCMonth.mdx
new file mode 100644
index 0000000000..3d840bf321
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCMonth.mdx
@@ -0,0 +1,38 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.setUTCMonth()
+
+The **`setUTCMonth()`** method sets the month for a specified
+date according to universal time.
+
+## Syntax
+
+```js
+setUTCMonth(monthValue)
+setUTCMonth(monthValue, dayValue)
+```
+
+### Parameters
+
+- `monthValue`
+ - : An integer between 0 and 11, representing the months January through December.
+- `dayValue`
+ - : Optional. An integer from 1 to 31, representing the day of the month.
+
+### Return value
+
+The number of milliseconds between 1 January 1970 00:00:00 UTC and the updated date.
+
+## Description
+
+If you do not specify the `dayValue` parameter, the value returned from the
+[`Date.prototype.getUTCDate()`](./getUTCDate.mdx) method is used.
+
+If a parameter you specify is outside of the expected range, `setUTCMonth()`
+attempts to update the date information in the `Date` object accordingly.
+For example, if you use 15 for `monthValue`, the year will be incremented by
+1, and 3 will be used for month.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCSeconds.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCSeconds.mdx
new file mode 100644
index 0000000000..e14160259d
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setUTCSeconds.mdx
@@ -0,0 +1,40 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.setUTCSeconds()
+
+The **`setUTCSeconds()`** method sets the seconds for a
+specified date according to universal time.
+
+## Syntax
+
+```js
+setUTCSeconds(secondsValue)
+setUTCSeconds(secondsValue, msValue)
+```
+
+### Parameters
+
+- `secondsValue`
+ - : An integer between 0 and 59, representing the seconds.
+- `msValue`
+ - : Optional. A number between 0 and 999, representing the milliseconds.
+
+### Return value
+
+The number of milliseconds between 1 January 1970 00:00:00 UTC and the updated date.
+
+## Description
+
+If you do not specify the `msValue` parameter, the value returned from the
+[`Date.prototype.getUTCMilliseconds()`](./getUTCMilliseconds.mdx) method is
+used.
+
+If a parameter you specify is outside of the expected range,
+`setUTCSeconds()` attempts to update the date information in the
+`Date` object accordingly. For example, if you use 100 for
+`secondsValue`, the minutes stored in the `Date` object will be
+incremented by 1, and 40 will be used for seconds.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setYear.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setYear.mdx
new file mode 100644
index 0000000000..7882fc0d3f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/setYear.mdx
@@ -0,0 +1,38 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.setYear()
+
+The legacy **`setYear()`** method sets the year for a specified date according to local time.
+
+However, the way the legacy `setYear()` method sets year values is different from how the preferred [`Date.prototype.setFullYear()`](./setFullYear.mdx) method sets year values — and in some cases, also different from how `new Date()` and [`Date.parse()`](../parse.mdx) set year values. Specifically, given two-digit numbers, such as `22` and `61`:
+
+- `setYear()` interprets any two-digit number as an offset to `1900`; so `date.setYear(22)` results in the year value being set to `1922`, and `date.setYear(61)` results in the year value being set to `1961`. (In contrast, while `new Date(61, 1)` also results in the year value being set to `1961`, `new Date("2/1/22")` results in the year value being set to `2022`; and similarly for [`Date.parse()`](../parse.mdx)).
+
+- [`Date.prototype.setFullYear()`](./setFullYear.mdx) does no special interpretation but instead uses the literal two-digit value as-is to set the year; so `date.setFullYear(61)` results in the year value being set to `0061`, and `date.setFullYear(22)` results in the year value being set to `0022`.
+
+Because of those differences in behavior, you should no longer use the legacy `setYear()` method, but should instead use the preferred [`Date.prototype.setFullYear()`](./setFullYear.mdx) method.
+
+## Syntax
+
+```js
+setYear(yearValue)
+```
+
+### Parameters
+
+- `yearValue`
+ - : An integer.
+
+### Return value
+
+The number of milliseconds between 1 January 1970 00:00:00 UTC and the updated date.
+
+## Description
+
+If `yearValue` is a number between 0 and 99 (inclusive), then the year for
+`dateObj` is set to `1900 + yearValue`. Otherwise, the year for
+`dateObj` is set to `yearValue`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toDateString.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toDateString.mdx
new file mode 100644
index 0000000000..8cb862ba16
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toDateString.mdx
@@ -0,0 +1,35 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.toDateString()
+
+The **`toDateString()`** method returns the date portion of a `Date` object interpreted in the local timezone in English.
+
+## Syntax
+
+```js
+toDateString()
+```
+
+### Return value
+
+A string representing the date portion of the given `Date` object in human readable form in English.
+
+## Description
+
+`Date` instances refer to a specific point in time. `toDateString()` interprets the date in the local timezone and formats the _date_ part in English. It always uses the following format, separated by spaces:
+
+1. First three letters of the week day name
+2. First three letters of the month name
+3. Two-digit day of the month, padded on the left a zero if necessary
+4. Four-digit year (at least), padded on the left with zeros if necessary. May have a negative sign
+
+For example: "Thu Jan 01 1970".
+
+- If you want to get the _time_ part, use [`toTimeString()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/toTimeString).
+- If you want to get both the date and time, use [`toString()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/toString).
+- If you want to make the date interpreted as UTC instead of local timezone, use [`toUTCString()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString).
+- If you want to format the date in a more user-friendly format (e.g. localization), use [`toLocaleDateString()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toISOString.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toISOString.mdx
new file mode 100644
index 0000000000..e02d4f27e7
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toISOString.mdx
@@ -0,0 +1,19 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.toISOString()
+
+The **`toISOString()`** method returns a string in _simplified_ extended ISO format ([ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)), which is always 24 or 27 characters long (`YYYY-MM-DDTHH:mm:ss.sssZ` or `±YYYYYY-MM-DDTHH:mm:ss.sssZ`, respectively). The timezone is always zero UTC offset, as denoted by the suffix `Z`.
+
+## Syntax
+
+```js
+toISOString()
+```
+
+### Return value
+
+A string representing the given date in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format according to universal time. It's the same format as the one required to be recognized by [`Date.parse()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/parse#date_time_string_format).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toJSON.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toJSON.mdx
new file mode 100644
index 0000000000..12e72543db
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toJSON.mdx
@@ -0,0 +1,28 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.toJSON()
+
+The **`toJSON()`** method returns a string representation of
+the `Date` object.
+
+## Syntax
+
+```js
+toJSON()
+```
+
+### Return value
+
+A string representation of the given date.
+
+## Description
+
+`Date` instances refer to a specific point in time. `toJSON()` calls the object's [`Date.prototype.toISOString()`](./toISOString.mdx) method, which returns a string representing the `Date` object's value. This method is generally intended to, by default, usefully serialize `Date` objects during [JSON](https://developer.mozilla.org/docs/Glossary/JSON) serialization, which can then be deserialized using the [`Date()` constructor](../Date.mdx) or [`Date.parse()`](../parse.mdx) as the reviver of [`JSON.parse()`](../../JSON/parse.mdx).
+
+The method first attempts to convert its `this` value [to a primitive](https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#primitive_coercion) by calling its [`[Symbol.toPrimitive]()`](../../Symbol/toPrimitive.mdx) (with `"number"` as hint), [`valueOf()`](../../Object/prototype/valueOf.mdx), and [`toString()`](../../Object/prototype/toString.mdx) methods, in that order. If the result is a [non-finite](../../Number/isFinite.mdx) number, `null` is returned. (This generally corresponds to an invalid date, whose [`valueOf()`](./valueOf.mdx) returns [`NaN`](../../NaN.mdx).) Otherwise, if the converted primitive is not a number or is a finite number, the return value of `this.toISOString()` is returned.
+
+Note that the method does not check whether the `this` value is a valid `Date` object. However, calling `Date.prototype.toJSON()` on non-`Date` objects does not have well-defined semantics.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toLocaleDateString.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toLocaleDateString.mdx
new file mode 100644
index 0000000000..039939db24
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toLocaleDateString.mdx
@@ -0,0 +1,47 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.toLocaleDateString()
+
+The **`toLocaleDateString()`** method returns a string with a language-sensitive representation of the date portion of the specified date in the user agent's timezone. In implementations with [`Intl.DateTimeFormat` API](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) support, this method simply calls `Intl.DateTimeFormat`.
+
+## Syntax
+
+```js
+toLocaleDateString()
+toLocaleDateString(locales)
+toLocaleDateString(locales, options)
+```
+
+### Parameters
+
+The `locales` and `options` arguments customize the behavior of the function and let applications specify the language whose formatting conventions should be used.
+
+In implementations that support the [`Intl.DateTimeFormat` API](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat), these parameters correspond exactly to the [`Intl.DateTimeFormat()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat) constructor's parameters. Implementations without `Intl.DateTimeFormat` support are asked to ignore both parameters, making the locale used and the form of the string returned entirely implementation-dependent.
+
+- `locales` _**optional**_
+
+ - : A string with a BCP 47 language tag, or an array of such strings. Corresponds to the [`locales`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#locales) parameter of the `Intl.DateTimeFormat()` constructor.
+
+ In implementations without `Intl.DateTimeFormat` support, this parameter is ignored and the host's locale is usually used.
+
+- `options` _**optional**_
+
+ - : An object adjusting the output format. Corresponds to the [`options`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options) parameter of the `Intl.DateTimeFormat()` constructor. The `timeStyle` option must be undefined, or a [`TypeError`](../../../globals/TypeError/TypeError.mdx) would be thrown. If `weekday`, `year`, `month`, and `day` are all undefined, then `year`, `month`, and `day` will be set to `"numeric"`.
+
+ In implementations without `Intl.DateTimeFormat` support, this parameter is ignored.
+
+See the [`Intl.DateTimeFormat()` constructor](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat) for details on these parameters and how to use them.
+
+### Return value
+
+A string representing the date portion of the given `Date` instance according to language-specific conventions.
+
+In implementations with `Intl.DateTimeFormat`, this is equivalent to `new Intl.DateTimeFormat(locales, options).format(date)`, where `options` has been normalized as described above.
+
+## Performance
+
+When formatting large numbers of dates, it is better to create an [`Intl.DateTimeFormat`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) object and use its [`format()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format) method.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toLocaleString.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toLocaleString.mdx
new file mode 100644
index 0000000000..784e9d78a9
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toLocaleString.mdx
@@ -0,0 +1,43 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.toLocaleString()
+
+The **`toLocaleString()`** method returns a string with a language-sensitive representation of this date. In implementations with [`Intl.DateTimeFormat` API](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) support, this method simply calls `Intl.DateTimeFormat`.
+
+## Syntax
+
+```js
+toLocaleString()
+toLocaleString(locales)
+toLocaleString(locales, options)
+```
+
+### Parameters
+
+The `locales` and `options` arguments customize the behavior of the function and let applications specify the language whose formatting conventions should be used.
+
+In implementations that support the [`Intl.DateTimeFormat` API](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat), these parameters correspond exactly to the [`Intl.DateTimeFormat()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat) constructor's parameters. Implementations without `Intl.DateTimeFormat` support are asked to ignore both parameters, making the locale used and the form of the string returned entirely implementation-dependent.
+
+- `locales` _**optional**_
+
+ - : A string with a BCP 47 language tag, or an array of such strings. Corresponds to the [`locales`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#locales) parameter of the `Intl.DateTimeFormat()` constructor.
+
+ In implementations without `Intl.DateTimeFormat` support, this parameter is ignored and the host's locale is usually used.
+
+- `options` _**optional**_
+
+ - : An object adjusting the output format. Corresponds to the [`options`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options) parameter of the `Intl.DateTimeFormat()` constructor. If `weekday`, `year`, `month`, `day`, `dayPeriod`, `hour`, `minute`, `second`, and `fractionalSecondDigits` are all undefined, then `year`, `month`, `day`, `hour`, `minute`, `second` will be set to `"numeric"`.
+
+ In implementations without `Intl.DateTimeFormat` support, this parameter is ignored.
+
+See the [`Intl.DateTimeFormat()` constructor](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat) for details on these parameters and how to use them.
+
+### Return value
+
+A string representing the given date according to language-specific conventions.
+
+In implementations with `Intl.DateTimeFormat`, this is equivalent to `new Intl.DateTimeFormat(locales, options).format(date)`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toLocaleTimeString.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toLocaleTimeString.mdx
new file mode 100644
index 0000000000..19e3bce27a
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toLocaleTimeString.mdx
@@ -0,0 +1,47 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.toLocaleTimeString()
+
+The **`toLocaleTimeString()`** method returns a string with a language-sensitive representation of the time portion of the date. In implementations with [`Intl.DateTimeFormat` API](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) support, this method simply calls `Intl.DateTimeFormat`.
+
+## Syntax
+
+```js
+toLocaleTimeString()
+toLocaleTimeString(locales)
+toLocaleTimeString(locales, options)
+```
+
+### Parameters
+
+The `locales` and `options` arguments customize the behavior of the function and let applications specify the language whose formatting conventions should be used.
+
+In implementations that support the [`Intl.DateTimeFormat` API](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat), these parameters correspond exactly to the [`Intl.DateTimeFormat()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat) constructor's parameters. Implementations without `Intl.DateTimeFormat` support are asked to ignore both parameters, making the locale used and the form of the string returned entirely implementation-dependent.
+
+- `locales` _**optional**_
+
+ - : A string with a BCP 47 language tag, or an array of such strings. Corresponds to the [`locales`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#locales) parameter of the `Intl.DateTimeFormat()` constructor.
+
+ In implementations without `Intl.DateTimeFormat` support, this parameter is ignored and the host's locale is usually used.
+
+- `options` _**optional**_
+
+ - : An object adjusting the output format. Corresponds to the [`options`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options) parameter of the `Intl.DateTimeFormat()` constructor. If `dayPeriod`, `hour`, `minute`, `second`, and `fractionalSecondDigits` are all undefined, then `hour`, `minute`, `second` will be set to `"numeric"`.
+
+ In implementations without `Intl.DateTimeFormat` support, this parameter is ignored.
+
+See the [`Intl.DateTimeFormat()` constructor](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat) for details on these parameters and how to use them.
+
+### Return value
+
+A string representing the time portion of the given `Date` instance according to language-specific conventions.
+
+In implementations with `Intl.DateTimeFormat`, this is equivalent to `new Intl.DateTimeFormat(locales, options).format(date)`, where `options` has been normalized as described above.
+
+## Performance
+
+When formatting large numbers of dates, it is better to create an [`Intl.DateTimeFormat`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) object and use its [`format()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format) method.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toString.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toString.mdx
new file mode 100644
index 0000000000..9387bbe358
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toString.mdx
@@ -0,0 +1,34 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.toString()
+
+The **`toString()`** method returns a string representing the specified `Date` object interpreted in the local timezone.
+
+## Syntax
+
+```js
+toString()
+```
+
+### Return value
+
+A string representing the given date.
+
+## Description
+
+The `Date` object overrides the `toString()` method of `Object`. `Date.prototype.toString()` returns a string representation of the Date as interpreted in the local timezone, containing both the date and the time — it joins the string representation specified in [`toDateString()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/toDateString) and [`toTimeString()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/toTimeString) together, adding a space in between.
+
+For example: "Thu Jan 01 1970 04:42:04 GMT+0000 (Coordinated Universal Time)"
+
+The `toString()` method is automatically called when a date is coerced to a string, such as `const today = 'Today is ' + new Date()`.
+
+`Date.prototype.toString()` must be called on `Date` instances. If the `this` value does not inherit from `Date.prototype`, a [`TypeError`](../../../globals/TypeError/TypeError.mdx) is thrown.
+
+- If you only want to get the _date_ part, use [`toDateString()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/toDateString).
+- If you only want to get the _time_ part, use [`toTimeString()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/toTimeString).
+- If you want to make the date interpreted as UTC instead of local timezone, use [`toUTCString()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString).
+- If you want to format the date in a more user-friendly format (e.g. localization), use [`toLocaleString()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toTimeString.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toTimeString.mdx
new file mode 100644
index 0000000000..c7dd4e3ed6
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toTimeString.mdx
@@ -0,0 +1,38 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.toTimeString()
+
+The **`toTimeString()`** method returns the time portion of a `Date` object interpreted in the local timezone in English.
+
+## Syntax
+
+```js
+toTimeString()
+```
+
+### Return value
+
+A string representing the time portion of the given date in human readable form in English.
+
+## Description
+
+`Date` instances refer to a specific point in time. `toTimeString()` interprets the date in the local timezone and formats the _time_ part in English. It always uses the format of `hh:mm:ss GMT±xxxx (TZ)`, where:
+
+| Format String | Description |
+| ------------- | ----------------------------------------------------------------------------------------------------- |
+| `hh` | Hour, as two digits with leading zero if required |
+| `mm` | Minute, as two digits with leading zero if required |
+| `ss` | Seconds, as two digits with leading zero if required |
+| `±xxxx` | The local timezone's offset — two digits for hours and two digits for minutes (e.g. `-0500`, `+0800`) |
+| `TZ` | The timezone's name (e.g. `PDT`, `PST`) |
+
+For example: "04:42:04 GMT+0000 (Coordinated Universal Time)".
+
+- If you want to get the _date_ part, use [`toDateString()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/toDateString).
+- If you want to get both the date and time, use [`toString()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/toString).
+- If you want to make the date interpreted as UTC instead of local timezone, use [`toUTCString()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString).
+- If you want to format the date in a more user-friendly format (e.g. localization), use [`toLocaleTimeString()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toUTCString.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toUTCString.mdx
new file mode 100644
index 0000000000..8b04d6b5bf
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/toUTCString.mdx
@@ -0,0 +1,43 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.toUTCString()
+
+The **`toUTCString()`** method converts a date to a string, interpreting it in the UTC time zone. `toGMTString()` is an alias of this method.
+
+Based on [rfc7231](https://datatracker.ietf.org/doc/html/rfc7231#section-7.1.1.1) and modified according to [ECMA-262 toUTCString](https://tc39.es/ecma262/#sec-date.prototype.toutcstring), it can have negative values.
+
+## Syntax
+
+```js
+toUTCString()
+```
+
+### Return value
+
+A string representing the given date using the UTC time zone.
+
+## Description
+
+The value returned by `toUTCString()` is a string in the form `Www, dd Mmm yyyy hh:mm:ss GMT`, where:
+
+| Format String | Description |
+| ------------- | ------------------------------------------------------------ |
+| `Www` | Day of week, as three letters (e.g. `Sun`, `Mon`) |
+| `dd` | Day of month, as two digits with leading zero if required |
+| `Mmm` | Month, as three letters (e.g. `Jan`, `Feb`) |
+| `yyyy` | Year, as four or more digits with leading zeroes if required |
+| `hh` | Hour, as two digits with leading zero if required |
+| `mm` | Minute, as two digits with leading zero if required |
+| `ss` | Seconds, as two digits with leading zero if required |
+
+### Aliasing
+
+JavaScript's `Date` API was inspired by Java's `java.util.Date` library (while the latter had become de facto legacy since Java 1.1 in 1997). In particular, the Java `Date` class had a method called `toGMTString` — which was poorly named, because the [Greenwich Mean Time](https://en.wikipedia.org/wiki/Greenwich_Mean_Time) is not equivalent to the [Coordinated Universal Time](https://en.wikipedia.org/wiki/Coordinated_Universal_Time), while JavaScript dates always operate by UTC time. For web compatibility reasons, `toGMTString` remains as an alias to `toUTCString`, and they refer to the exact same function object. This means:
+
+```js
+Date.prototype.toGMTString.name === "toUTCString";
+```
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/valueOf.mdx b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/valueOf.mdx
new file mode 100644
index 0000000000..e8bd638df9
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Date/prototype/valueOf.mdx
@@ -0,0 +1,33 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Date.prototype.valueOf()
+
+The **`valueOf()`** method returns the primitive value of a
+`Date` object.
+
+
+
+## Syntax
+
+```js
+valueOf()
+```
+
+### Return value
+
+The number of milliseconds between 1 January 1970 00:00:00 UTC and the given date, or [`NaN`](../../NaN.mdx) in case of an invalid date.
+
+## Description
+
+The `valueOf()` method returns the primitive value of a `Date`
+object as a number data type, the number of milliseconds since midnight 01 January, 1970
+UTC.
+
+This method is functionally equivalent to the [`Date.prototype.getTime()`](./getTime.mdx)
+method.
+
+This method is usually called internally by JavaScript and not explicitly in code.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DecompressionStream/DecompressionStream.mdx b/documentation/versioned_docs/version-3.21.3/globals/DecompressionStream/DecompressionStream.mdx
new file mode 100644
index 0000000000..8195ef01d3
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DecompressionStream/DecompressionStream.mdx
@@ -0,0 +1,30 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DecompressionStream()
+
+The **`DecompressionStream()`** constructor creates a new `DecompressionStream` object which decompresses a stream of data.
+
+## Syntax
+
+```js
+new DecompressionStream(format)
+```
+
+### Parameters
+
+- `format`
+
+ - : One of the following compression formats:
+
+ - `"gzip"`
+ - `"deflate"`
+ - `"deflate-raw"`
+
+## Exceptions
+
+- `TypeError`
+ - : Thrown if the format passed to the constructor is not supported.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DecompressionStream/prototype/readable.mdx b/documentation/versioned_docs/version-3.21.3/globals/DecompressionStream/prototype/readable.mdx
new file mode 100644
index 0000000000..104213005d
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DecompressionStream/prototype/readable.mdx
@@ -0,0 +1,13 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DecompressionStream.readable
+
+The **`readable`** read-only property of the `DecompressionStream` interface returns a `ReadableStream`.
+
+## Value
+
+A `ReadableStream`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/DecompressionStream/prototype/writable.mdx b/documentation/versioned_docs/version-3.21.3/globals/DecompressionStream/prototype/writable.mdx
new file mode 100644
index 0000000000..90eea36e54
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/DecompressionStream/prototype/writable.mdx
@@ -0,0 +1,13 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# DecompressionStream.writable
+
+The **`writable`** read-only property of the `DecompressionStream` interface returns a `WritableStream`.
+
+## Value
+
+A `WritableStream`
diff --git a/documentation/versioned_docs/version-3.21.3/globals/EcKeyImportParams/EcKeyImportParams.mdx b/documentation/versioned_docs/version-3.21.3/globals/EcKeyImportParams/EcKeyImportParams.mdx
new file mode 100644
index 0000000000..ba566b82d2
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/EcKeyImportParams/EcKeyImportParams.mdx
@@ -0,0 +1,21 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# EcKeyImportParams
+
+The **`EcKeyImportParams`** dictionary represents the object that should be passed as the `algorithm` parameter into `SubtleCrypto.importKey()`, when generating any elliptic-curve-based key pair: that is, when the algorithm is identified as ECDSA.
+
+## Instance properties
+
+- `name`
+ - : A string. This should be set to `ECDSA`.
+- `namedCurve`
+
+ - : A string representing the name of the elliptic curve to use. This may be any of the following names for [NIST](https://www.nist.gov/)-approved curves:
+
+ - `P-256`
+ - `P-384`
+ - `P-521`
diff --git a/documentation/versioned_docs/version-3.21.3/globals/EcdsaParams/EcdsaParams.mdx b/documentation/versioned_docs/version-3.21.3/globals/EcdsaParams/EcdsaParams.mdx
new file mode 100644
index 0000000000..5594d480f9
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/EcdsaParams/EcdsaParams.mdx
@@ -0,0 +1,24 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+
+# EcdsaParams
+
+The **`EcdsaParams`** dictionary represents the object that should be passed as the `algorithm` parameter into `SubtleCrypto.sign()` or `SubtleCrypto.verify()` when using the ECDSA algorithm.
+
+## Instance properties
+
+- `name`
+ - : A string. This should be set to `ECDSA`.
+- `hash`
+
+ - : A string. An identifier for the digest algorithm to use. This should be one of the following:
+
+ - `SHA-256`: selects the SHA-256 algorithm.
+ - `SHA-384`: selects the SHA-384 algorithm.
+ - `SHA-512`: selects the SHA-512 algorithm.
+
+ > **Warning:** `SHA-1` is also supported here but the SHA-1 algorithm is considered vulnerable and should no longer be used.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Error/Error.mdx b/documentation/versioned_docs/version-3.21.3/globals/Error/Error.mdx
new file mode 100644
index 0000000000..427380bf3e
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Error/Error.mdx
@@ -0,0 +1,36 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Error
+
+The **`Error()`** constructor creates an error object.
+
+## Syntax
+
+```js
+new Error()
+new Error(message)
+new Error(message, options)
+new Error(message, fileName)
+new Error(message, fileName, lineNumber)
+
+Error()
+Error(message)
+Error(message, options)
+Error(message, fileName)
+Error(message, fileName, lineNumber)
+```
+
+> **Note:** `Error()` can be called with or without `new`. Both create a new `Error` instance.
+
+### Parameters
+
+- `message` _**optional**_
+ - : A human-readable description of the error.
+- `options` _**optional**_
+ - : An object that has the following properties:
+ - `cause` _**optional**_
+ - : A value indicating the specific cause of the error, reflected in the [`Error.prototype.cause`](./prototype/cause.mdx) property. When catching and re-throwing an error with a more-specific or useful error message, this property can be used to pass the original error.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Error/prototype/cause.mdx b/documentation/versioned_docs/version-3.21.3/globals/Error/prototype/cause.mdx
new file mode 100644
index 0000000000..89ded66920
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Error/prototype/cause.mdx
@@ -0,0 +1,19 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Error.prototype.cause
+
+The **`cause`** data property of an [`Error`](../../../globals/Error/Error.mdx) instance indicates the specific original cause of the error.
+
+It is used when catching and re-throwing an error with a more-specific or useful error message in order to still have access to the original error.
+
+## Value
+
+The value that was passed to the [`Error`](../Error.mdx) constructor in the `options.cause` argument. It may not be present.
+
+## Description
+
+The value of `cause` can be of any type. You should not make assumptions that the error you caught has an `Error` as its `cause`, in the same way that you cannot be sure the variable bound in the `catch` statement is an `Error` either. The "Providing structured data as the error cause" example below shows a case where a non-error is deliberately provided as the cause.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Error/prototype/message.mdx b/documentation/versioned_docs/version-3.21.3/globals/Error/prototype/message.mdx
new file mode 100644
index 0000000000..57040689de
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Error/prototype/message.mdx
@@ -0,0 +1,19 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Error.prototype.message
+
+The **`message`** data property of an [`Error`](../Error.mdx) instance is a human-readable description of the error.
+
+## Value
+
+A string corresponding to the value passed to the [`Error`](../Error.mdx) constructor as the first argument.
+
+## Description
+
+This property contains a brief description of the error if one is available or has been set. The `message` property combined with the [`name`](./name.mdx) property is used by the [`Error.prototype.toString()`](./toString.mdx) method to create a string representation of the Error.
+
+By default, the `message` property is an empty string, but this behavior can be overridden for an instance by specifying a message as the first argument to the [`Error`](../Error.mdx) constructor.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Error/prototype/name.mdx b/documentation/versioned_docs/version-3.21.3/globals/Error/prototype/name.mdx
new file mode 100644
index 0000000000..b12512f83e
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Error/prototype/name.mdx
@@ -0,0 +1,17 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Error.prototype.name
+
+The **`name`** data property of `Error.prototype` is shared by all [`Error`](../Error.mdx) instances. It represents the name for the type of error. For `Error.prototype.name`, the initial value is `"Error"`. Subclasses like [`TypeError`](../../../globals/TypeError/TypeError.mdx) and [`SyntaxError`](../../SyntaxError/SyntaxError.mdx) provide their own `name` properties.
+
+## Value
+
+A string. For `Error.prototype.name`, the initial value is `"Error"`.
+
+## Description
+
+By default, [`Error`](../Error.mdx) instances are given the name "Error". The `name` property, in addition to the [`message`](./message.mdx) property, is used by the [`Error.prototype.toString()`](./toString.mdx) method to create a string representation of the error.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Error/prototype/toString.mdx b/documentation/versioned_docs/version-3.21.3/globals/Error/prototype/toString.mdx
new file mode 100644
index 0000000000..2435b40b92
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Error/prototype/toString.mdx
@@ -0,0 +1,25 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Error.prototype.toString()
+
+The **`toString()`** method returns a string representing the
+specified [`Error`](../Error.mdx) object.
+
+## Syntax
+
+```js
+toString()
+```
+
+### Return value
+
+A string representing the specified [`Error`](../Error.mdx) object.
+
+## Description
+
+The [`Error`](../Error.mdx) object overrides the [`Object.prototype.toString()`](../../Object/prototype/toString.mdx)
+method inherited by all objects.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/EvalError/EvalError.mdx b/documentation/versioned_docs/version-3.21.3/globals/EvalError/EvalError.mdx
new file mode 100644
index 0000000000..47c459f170
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/EvalError/EvalError.mdx
@@ -0,0 +1,37 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# EvalError
+
+The **`EvalError()`** constructor creates a new `EvalError` instance.
+
+## Syntax
+
+```js
+new EvalError()
+new EvalError(message)
+new EvalError(message, options)
+new EvalError(message, fileName)
+new EvalError(message, fileName, lineNumber)
+
+EvalError()
+EvalError(message)
+EvalError(message, options)
+EvalError(message, fileName)
+EvalError(message, fileName, lineNumber)
+```
+
+> **Note:** `EvalError()` can be called with or without `new`. Both create a new `EvalError` instance.
+
+### Parameters
+
+- `message` _**optional**_
+ - : Human-readable description of the error.
+- `options` _**optional**_
+ - : An object that has the following properties:
+ - `cause` _**optional**_
+ - : A property indicating the specific cause of the error.
+ When catching and re-throwing an error with a more-specific or useful error message, this property can be used to pass the original error.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/FetchEvent/FetchEvent.mdx b/documentation/versioned_docs/version-3.21.3/globals/FetchEvent/FetchEvent.mdx
new file mode 100644
index 0000000000..06b09737dd
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/FetchEvent/FetchEvent.mdx
@@ -0,0 +1,42 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# FetchEvent
+
+This is the event type for `fetch` events. It contains information about the fetch, including the request and how the receiver will treat the response.
+It provides the [`event.respondWith()`](./prototype/respondWith.mdx) method, which allows us to provide a response to this fetch.
+
+## Instance properties
+
+- `FetchEvent.request` _**readonly**_
+ - : The `Request` that was received by the application.
+- `FetchEvent.client` _**readonly**_
+ - : Information about the downstream client that made the request.
+ - `FetchEvent.client.address` _**readonly**_
+ - : A string representation of the IPv4 or IPv6 address of the downstream client.
+ - `FetchEvent.client.geo` _**readonly**_
+ - : A [geolocation dictionary](../../fastly:geolocation/getGeolocationForIpAddress.mdx) corresponding to the IP address of the downstream client.
+ - `FetchEvent.client.tlsJA3MD5` _**readonly**_
+ - : A string representation of the JA3 hash of the TLS ClientHello message.
+ - `FetchEvent.client.tlsCipherOpensslName` _**readonly**_
+ - : A string representation of the cipher suite used to secure the client TLS connection.
+ - `FetchEvent.client.tlsProtocol` _**readonly**_
+ - : A string representation of the TLS protocol version used to secure the client TLS connection.
+ - `FetchEvent.client.tlsClientCertificate` _**readonly**_
+ - : An ArrayBuffer containing the raw client certificate in the mutual TLS handshake message. It is in PEM format. Returns an empty ArrayBuffer if this is not mTLS or available.
+ - `FetchEvent.client.tlsClientHello` _**readonly**_
+ - : An ArrayBuffer containing the raw bytes sent by the client in the TLS ClientHello message.
+- `FetchEvent.server` _**readonly**_
+ - : Information about the server receiving the request for the Fastly Compute service.
+ - `FetchEvent.server.address` _**readonly**_
+ - : A string representation of the IPv4 or IPv6 address of the server which received the request.
+
+## Instance methods
+
+- [`FetchEvent.respondWith()`](./prototype/respondWith.mdx)
+ - : Provide (a promise for) a response for this request.
+- [`FetchEvent.waitUntil()`](./prototype/waitUntil.mdx)
+ - : Extends the lifetime of the event. Used to notify the host environment of tasks that extend beyond the returning of a response, such as streaming and caching.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/FetchEvent/prototype/respondWith.mdx b/documentation/versioned_docs/version-3.21.3/globals/FetchEvent/prototype/respondWith.mdx
new file mode 100644
index 0000000000..4697c12843
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/FetchEvent/prototype/respondWith.mdx
@@ -0,0 +1,25 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# FetchEvent.respondWith()
+
+The **`respondWith()`** method allows you to provide a promise for a [`Response`](../../Response/Response.mdx) to send back to the client which made the incoming request to your application.
+
+## Syntax
+
+```js
+respondWith(response)
+```
+
+### Parameters
+
+- `response`
+ - : A [`Response`](../../Response/Response.mdx) or a [`Promise`](../../Promise/Promise.mdx) that resolves to a
+ [`Response`](../../Response/Response.mdx). Otherwise, a network error is returned to Fetch.
+
+### Return value
+
+Always returns `undefined`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/FetchEvent/prototype/waitUntil.mdx b/documentation/versioned_docs/version-3.21.3/globals/FetchEvent/prototype/waitUntil.mdx
new file mode 100644
index 0000000000..79b4af49c8
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/FetchEvent/prototype/waitUntil.mdx
@@ -0,0 +1,29 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# FetchEvent.waitUntil()
+
+
+The **`waitUntil()`** method tells the host environment that work is ongoing until the promise settles, and it shouldn't terminate
+the application if it wants that work to complete.
+
+The `waitUntil()` method must be initially called synchronously within the event callback,
+but after that it can be called multiple times, and will hold the process open until all the promises passed to it
+settle.
+
+## Syntax
+
+```js
+waitUntil(promise)
+```
+
+### Parameters
+
+A [`Promise`](../../Promise/Promise.mdx).
+
+### Return value
+
+None `undefined`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/FinalizationRegistry/FinalizationRegistry.mdx b/documentation/versioned_docs/version-3.21.3/globals/FinalizationRegistry/FinalizationRegistry.mdx
new file mode 100644
index 0000000000..a58418a70a
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/FinalizationRegistry/FinalizationRegistry.mdx
@@ -0,0 +1,29 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# FinalizationRegistry()
+
+The **`FinalizationRegistry`** constructor creates a `FinalizationRegistry` object that uses the given callback.
+
+## Syntax
+
+```js
+// Arrow callback function
+new FinalizationRegistry((heldValue) => { /* … */ })
+
+// Callback function
+new FinalizationRegistry(callbackFn)
+
+// Inline callback function
+new FinalizationRegistry(function(heldValue) { /* … */ })
+```
+
+> **Note:** `FinalizationRegistry()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+- `callback`
+ - : The callback function this registry should use.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/FinalizationRegistry/prototype/register.mdx b/documentation/versioned_docs/version-3.21.3/globals/FinalizationRegistry/prototype/register.mdx
new file mode 100644
index 0000000000..dcb476af8f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/FinalizationRegistry/prototype/register.mdx
@@ -0,0 +1,47 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# FinalizationRegistry.prototype.register()
+
+The `register()` method registers an object with a
+`FinalizationRegistry` instance so that if the object is garbage-collected,
+the registry's callback may get called.
+
+## Syntax
+
+```js
+register(target, heldValue)
+register(target, heldValue, unregisterToken)
+```
+
+### Parameters
+
+- `target`
+ - : The target object to register.
+- `heldValue`
+ - : The value to pass to the finalizer for this object. This cannot be the `target` object but can be anything else, including functions and primitives.
+- `unregisterToken` _**optional**_
+ - : A token that may be used with the `unregister` method later to unregister
+ the target object. If provided (and not `undefined`), this must be an
+ object. If not provided, the target cannot be unregistered.
+
+### Return value
+
+`undefined`.
+
+### Exceptions
+
+- [`TypeError`](../../../globals/TypeError/TypeError.mdx)
+ - : Thrown when one of the following condition is met:
+ - `target` is not an object (object as opposed to primitives; functions are objects as well)
+ - `target` is the same as `heldvalue` (`target === heldValue`)
+ - `unregisterToken` is not an object
+
+## Description
+
+See the [Avoid where possible](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry#avoid_where_possible)
+and [Notes on cleanup callbacks](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry#notes_on_cleanup_callbacks)
+sections of the `FinalizationRegistry` page for important caveats.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/FinalizationRegistry/prototype/unregister.mdx b/documentation/versioned_docs/version-3.21.3/globals/FinalizationRegistry/prototype/unregister.mdx
new file mode 100644
index 0000000000..fe3ca565b8
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/FinalizationRegistry/prototype/unregister.mdx
@@ -0,0 +1,37 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# FinalizationRegistry.prototype.unregister()
+
+The `unregister()` method unregisters a target object from a
+`FinalizationRegistry` instance.
+
+## Syntax
+
+```js
+unregister(unregisterToken)
+```
+
+### Parameters
+
+- `unregisterToken`
+ - : The token used with the [`FinalizationRegistry.prototype.register`](./register.mdx) method when registering the target object. Multiple cells registered with the same `unregisterToken` will be unregistered together.
+
+### Return value
+
+A boolean value that is `true` if at least one cell was unregistered and `false` if no cell was unregistered.
+
+### Exceptions
+
+- [`TypeError`](../../../globals/TypeError/TypeError.mdx)
+ - : Thrown when `unregisterToken` is not an object.
+
+## Description
+
+When a target object has been reclaimed, it is no longer registered in the registry.
+There is no need to call `unregister` in your cleanup callback. Only call
+`unregister` if you haven't received a cleanup callback and no longer need
+to receive one.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Float32Array/Float32Array.mdx b/documentation/versioned_docs/version-3.21.3/globals/Float32Array/Float32Array.mdx
new file mode 100644
index 0000000000..d776f9f448
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Float32Array/Float32Array.mdx
@@ -0,0 +1,38 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Float32Array()
+
+The **`Float32Array()`** typed array constructor creates a new
+`Float32Array` object, which is, an array of 32-bit floating point numbers
+(corresponding to the C `float` data type) in the platform byte order. If
+control over byte order is needed, use [`DataView`](../../globals/DataView/DataView.mdx) instead. The contents are
+initialized to `0`. Once established, you can reference elements in the array
+using the object's methods, or using standard array index syntax (that is, using bracket
+notation).
+
+## Syntax
+
+```js
+new Float32Array()
+new Float32Array(length)
+new Float32Array(typedArray)
+new Float32Array(object)
+
+new Float32Array(buffer)
+new Float32Array(buffer, byteOffset)
+new Float32Array(buffer, byteOffset, length)
+```
+
+> **Note:** `Float32Array()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+See [`TypedArray`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#parameters).
+
+### Exceptions
+
+See [`TypedArray`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#exceptions).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Float64Array/Float64Array.mdx b/documentation/versioned_docs/version-3.21.3/globals/Float64Array/Float64Array.mdx
new file mode 100644
index 0000000000..b31731985c
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Float64Array/Float64Array.mdx
@@ -0,0 +1,38 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Float64Array()
+
+The **`Float64Array()`** typed array constructor creates a new
+`Float64Array` object, which is, an array of 64-bit floating point numbers
+(corresponding to the C `double` data type) in the platform byte order. If
+control over byte order is needed, use [`DataView`](../../globals/DataView/DataView.mdx) instead. The contents are
+initialized to `0`. Once established, you can reference elements in the array
+using the object's methods, or using standard array index syntax (that is, using bracket
+notation).
+
+## Syntax
+
+```js
+new Float64Array()
+new Float64Array(length)
+new Float64Array(typedArray)
+new Float64Array(object)
+
+new Float64Array(buffer)
+new Float64Array(buffer, byteOffset)
+new Float64Array(buffer, byteOffset, length)
+```
+
+> **Note:** `Float64Array()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+See [`TypedArray`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#parameters).
+
+### Exceptions
+
+See [`TypedArray`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#exceptions).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Function/Function.mdx b/documentation/versioned_docs/version-3.21.3/globals/Function/Function.mdx
new file mode 100644
index 0000000000..78d41ae9be
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Function/Function.mdx
@@ -0,0 +1,75 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Function()
+
+The **`Function()`** constructor creates a new [`Function`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function) object. Calling the constructor directly can create functions dynamically, but suffers from security and similar (but far less significant) performance issues as `eval()`. However, unlike `eval` (which may have access to the local scope), the `Function` constructor creates functions which execute in the global scope only.
+
+
+
+## Syntax
+
+```js
+new Function(functionBody)
+new Function(arg0, functionBody)
+new Function(arg0, arg1, functionBody)
+new Function(arg0, arg1, /* … ,*/ argN, functionBody)
+
+Function(functionBody)
+Function(arg0, functionBody)
+Function(arg0, arg1, functionBody)
+Function(arg0, arg1, /* … ,*/ argN, functionBody)
+```
+
+> **Note:** `Function()` can be called with or without `new`. Both create a new `Function` instance.
+
+### Parameters
+
+- `argN` _**optional**_
+
+ - : Names to be used by the function as formal argument names. Each must be a string that corresponds to a valid JavaScript parameter (any of plain [identifier](https://developer.mozilla.org/docs/Glossary/Identifier), [rest parameter](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Functions/rest_parameters), or [destructured](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment) parameter, optionally with a [default](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Functions/Default_parameters)), or a list of such strings separated with commas.
+
+ As the parameters are parsed in the same way as function expressions, whitespace and comments are accepted. For example: `"x", "theValue = 42", "[a, b] /* numbers */"` — or `"x, theValue = 42, [a, b] /* numbers */"`. (`"x, theValue = 42", "[a, b]"` is also correct, though very confusing to read.)
+
+- `functionBody`
+ - : A string containing the JavaScript statements comprising the function definition.
+
+## Description
+
+`Function` objects created with the `Function` constructor are parsed when the function is created. This is less efficient than creating a function with a [function expression](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/function) or [function declaration](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function) and calling it within your code, because such functions are parsed with the rest of the code.
+
+All arguments passed to the function, except the last, are treated as the names of the identifiers of the parameters in the function to be created, in the order in which they are passed. The function will be dynamically compiled as a function expression, with the source assembled in the following fashion:
+
+```js
+`function anonymous(${args.join(",")}
+) {
+${functionBody}
+}`
+```
+
+This is observable by calling the function's [`toString()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/toString) method.
+
+However, unlike normal [function expressions](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/function), the name `anonymous` is not added to the `functionBody`'s scope, since `functionBody` only has access the global scope. If `functionBody` is not in [strict mode](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Strict_mode) (the body itself needs to have the `"use strict"` directive since it doesn't inherit the strictness from the context), you may use [`arguments.callee`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Functions/arguments/callee) to refer to the function itself. Alternatively, you can define the recursive part as an inner function:
+
+```js
+const recursiveFn = new Function("count", `
+(function recursiveFn(count) {
+ if (count < 0) {
+ return;
+ }
+ console.log(count);
+ recursiveFn(count - 1);
+})(count);
+`);
+```
+
+Note that the two dynamic parts of the assembled source — the parameters list `args.join(",")` and `functionBody` — will first be parsed separately to ensure they are each syntactically valid. This prevents injection-like attempts.
+
+```js
+new Function("/*", "*/) {");
+// SyntaxError: Unexpected end of arg string
+// Doesn't become "function anonymous(/*) {*/) {}"
+```
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/apply.mdx b/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/apply.mdx
new file mode 100644
index 0000000000..7684098326
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/apply.mdx
@@ -0,0 +1,37 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Function.prototype.apply()
+
+The **`apply()`** method calls the specified function with a given `this` value, and `arguments` provided as an array (or an [array-like object](https://developer.mozilla.org/docs/Web/JavaScript/Guide/Indexed_collections#working_with_array-like_objects)).
+
+
+
+## Syntax
+
+```js
+apply(thisArg)
+apply(thisArg, argsArray)
+```
+
+### Parameters
+
+- `thisArg`
+ - : The value of `this` provided for the call to `func`. If the function is not in [strict mode](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Strict_mode), [`null`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/null) and [`undefined`](../../../globals/undefined.mdx) will be replaced with the global object, and primitive values will be converted to objects.
+- `argsArray` _**optional**_
+ - : An array-like object, specifying the arguments with which `func` should be called, or [`null`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/null) or [`undefined`](../../../globals/undefined.mdx) if no arguments should be provided to the function.
+
+### Return value
+
+The result of calling the function with the specified `this` value and arguments.
+
+## Description
+
+> **Note:** This function is almost identical to [`Function.prototype.call()`](../../../globals/Function/prototype/call.mdx), except that `call()` accepts an **argument list**, while `apply()` accepts a **single array of arguments** — for example, `func.apply(this, ['eat', 'bananas'])` vs. `func.call(this, 'eat', 'bananas')`.
+
+Normally, when calling a function, the value of [`this`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/this) inside the function is the object that the function was accessed on. With `apply()`, you can assign an arbitrary value as `this` when calling an existing function, without first attaching the function to the object as a property. This allows you to use methods of one object as generic utility functions.
+
+> **Warning:** Do not use `apply()` to chain constructors (for example, to implement inheritance). This invokes the constructor function as a plain function, which means [`new.target`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/new.target) is `undefined`, and classes throw an error because they can't be called without `new`. Use [`Reflect.construct()`](../../../globals/Reflect/construct.mdx) or [`extends`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Classes/extends) instead.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/bind.mdx b/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/bind.mdx
new file mode 100644
index 0000000000..f4236e916c
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/bind.mdx
@@ -0,0 +1,87 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Function.prototype.bind()
+
+The **`bind()`** method creates a new function that, when called, has its `this` keyword set to the provided value, with a given sequence of arguments preceding any provided when the new function is called.
+
+
+
+## Syntax
+
+```js
+bind(thisArg)
+bind(thisArg, arg1)
+bind(thisArg, arg1, arg2)
+bind(thisArg, arg1, arg2, /* …, */ argN)
+```
+
+### Parameters
+
+- `thisArg`
+ - : The value to be passed as the `this` parameter to the target function `func` when the bound function is called. If the function is not in [strict mode](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Strict_mode), [`null`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/null) and [`undefined`](../../../globals/undefined.mdx) will be replaced with the global object, and primitive values will be converted to objects. The value is ignored if the bound function is constructed using the `new` operator.
+- `arg1, …, argN` _**optional**_
+ - : Arguments to prepend to arguments provided to the bound function when invoking `func`.
+
+### Return value
+
+A copy of the given function with the specified `this` value, and initial arguments (if provided).
+
+## Description
+
+The `bind()` function creates a new _bound function_. Calling the bound function generally results in the execution of the function it wraps, which is also called the _target function_. The bound function will store the parameters passed — which include the value of `this` and the first few arguments — as its internal state. These values are stored in advance, instead of being passed at call time. You can generally see `const boundFn = fn.bind(thisArg, arg1, arg2)` as being equivalent to `const boundFn = (...restArgs) => fn.call(thisArg, arg1, arg2, ...restArgs)` for the effect when it's called (but not when `boundFn` is constructed).
+
+A bound function can be further bound by calling `boundFn.bind(thisArg, /* more args */)`, which creates another bound function `boundFn2`. The newly bound `thisArg` value is ignored, because the target function of `boundFn2`, which is `boundFn`, already has a bound `this`. When `boundFn2` is called, it would call `boundFn`, which in turn calls `fn`. The arguments that `fn` ultimately receives are, in order: the arguments bound by `boundFn`, arguments bound by `boundFn2`, and the arguments received by `boundFn2`.
+
+```js
+"use strict"; // prevent `this` from being boxed into the wrapper object
+
+function log(...args) {
+ console.log(this, ...args);
+}
+const boundLog = log.bind("this value", 1, 2);
+const boundLog2 = boundLog.bind("new this value", 3, 4);
+boundLog2(5, 6); // "this value", 1, 2, 3, 4, 5, 6
+```
+
+A bound function may also be constructed using the `new` operator if its target function is constructable. Doing so acts as though the target function had instead been constructed. The prepended arguments are provided to the target function as usual, while the provided `this` value is ignored (because construction prepares its own `this`, as seen by the parameters of [`Reflect.construct`](../../../globals/Reflect/construct.mdx)). If the bound function is directly constructed, [`new.target`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/new.target) will be the target function instead. (That is, the bound function is transparent to `new.target`.)
+
+```js
+class Base {
+ constructor(...args) {
+ console.log(new.target === Base);
+ console.log(args);
+ }
+}
+
+const BoundBase = Base.bind(null, 1, 2);
+
+new BoundBase(3, 4); // true, [1, 2, 3, 4]
+```
+
+However, because a bound function does not have the [`prototype`](../../../globals/Function/prototype/) property, it cannot be used as a base class for [`extends`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Classes/extends).
+
+```js example-bad
+class Derived extends class {}.bind(null) {}
+// TypeError: Class extends value does not have valid prototype property undefined
+```
+
+When using a bound function as the right-hand side of [`instanceof`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/instanceof), `instanceof` would reach for the target function (which is stored internally in the bound function) and read its `prototype` instead.
+
+```js
+class Base {}
+const BoundBase = Base.bind(null, 1, 2);
+console.log(new Base() instanceof BoundBase); // true
+```
+
+The bound function has the following properties:
+
+- [`length`](../../../globals/Function/prototype/length.mdx)
+ - : The `length` of the target function minus the number of arguments being bound (not counting the `thisArg` parameter), with 0 being the minimum value.
+- [`name`](../../../globals/Function/prototype/name.mdx)
+ - : The `name` of the target function plus a `"bound "` prefix.
+
+The bound function also inherits the [prototype chain](https://developer.mozilla.org/docs/Web/JavaScript/Inheritance_and_the_prototype_chain) of the target function. However, it doesn't have other own properties of the target function (such as [static properties](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Classes/static) if the target function is a class).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/call.mdx b/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/call.mdx
new file mode 100644
index 0000000000..0fc144d942
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/call.mdx
@@ -0,0 +1,36 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Function.prototype.call()
+
+The **`call()`** method calls the function with a given `this` value and arguments provided individually.
+
+## Syntax
+
+```js
+call(thisArg)
+call(thisArg, arg1)
+call(thisArg, arg1, /* …, */ argN)
+```
+
+### Parameters
+
+- `thisArg`
+ - : The value to use as `this` when calling `func`. If the function is not in [strict mode](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Strict_mode), [`null`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/null) and [`undefined`](../../../globals/undefined.mdx) will be replaced with the global object, and primitive values will be converted to objects.
+- `arg1, …, argN` _**optional**_
+ - : Arguments for the function.
+
+### Return value
+
+The result of calling the function with the specified `this` value and arguments.
+
+## Description
+
+> **Note:** This function is almost identical to [`Function.prototype.apply()`](../../../globals/Function/prototype/apply.mdx), except that `call()` accepts an **argument list**, while `apply()` accepts a **single array of arguments** — for example, `func.apply(this, ['eat', 'bananas'])` vs. `func.call(this, 'eat', 'bananas')`.
+
+Normally, when calling a function, the value of [`this`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/this) inside the function is the object that the function was accessed on. With `call()`, you can assign an arbitrary value as `this` when calling an existing function, without first attaching the function to the object as a property. This allows you to use methods of one object as generic utility functions.
+
+> **Warning:** Do not use `call()` to chain constructors (for example, to implement inheritance). This invokes the constructor function as a plain function, which means [`new.target`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/new.target) is `undefined`, and classes throw an error because they can't be called without `new`. Use [`Reflect.construct()`](../../../globals/Reflect/construct.mdx) or [`extends`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Classes/extends) instead.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/index.mdx b/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/index.mdx
new file mode 100644
index 0000000000..beb35c2184
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/index.mdx
@@ -0,0 +1,71 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Function.prototype.prototype
+
+The **`prototype`** data property of a `Function` instance is used when the function is used as a constructor with the `new` operator. It will become the new object's prototype.
+
+> **Note:** Not all `Function` objects have the `prototype` property — see [description](#description).
+
+## Value
+
+An object.
+
+> **Note:** The `prototype` property of [classes](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Classes) is not writable.
+
+## Description
+
+When a function is called with `new`, the constructor's `prototype` property will become the resulting object's prototype.
+
+```js
+function Ctor() {}
+const inst = new Ctor();
+console.log(Object.getPrototypeOf(inst) === Ctor.prototype); // true
+```
+
+You can read [Inheritance and the prototype chain](https://developer.mozilla.org/docs/Web/JavaScript/Inheritance_and_the_prototype_chain#constructors) for more information about the interactions between a constructor function's `prototype` property and the resulting object's prototype.
+
+A function having a `prototype` property is not sufficient for it to be eligible as a constructor. [Generator functions](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function*) have a `prototype` property, but cannot be called with `new`:
+
+```js
+async function* asyncGeneratorFunction() {}
+function* generatorFunction() {}
+```
+
+Instead, generator functions' `prototype` property is used when they are called _without_ `new`. The `prototype` property will become the returned [`Generator`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Generator) object's prototype.
+
+In addition, some functions may have a `prototype` but throw unconditionally when called with `new`. For example, the [`Symbol()`](../../../globals/Symbol/Symbol.mdx) and [`BigInt`](../../../globals/BigInt/BigInt.mdx) functions throw when called with `new`, because `Symbol.prototype` and `BigInt.prototype` are only intended to provide methods for the primitive values, but the wrapper objects should not be directly constructed.
+
+The following functions do not have `prototype`, and are therefore ineligible as constructors, even if a `prototype` property is later manually assigned:
+
+```js
+const method = { foo() {} }.foo;
+const arrowFunction = () => {};
+async function asyncFunction() {}
+```
+
+The following are valid constructors that have `prototype`:
+
+```js
+class Class {}
+function fn() {}
+```
+
+A [bound function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind) does not have a `prototype` property, but may be constructable. When it's constructed, the target function is constructed instead, and if the target function is constructable, it would return a normal instance.
+
+```js
+const boundFunction = function () {}.bind(null);
+```
+
+A function's `prototype` property, by default, is a plain object with one property: (`constructor`)[../../../globals/Object/prototype/constructor.mdx), which is a reference to the function itself. The `constructor` property is writable, non-enumerable, and configurable.
+
+If the `prototype` of a function is reassigned with something other than an `Object`, when the function is called with `new`, the returned object's prototype would be `Object.prototype` instead. (In other words, `new` ignores the `prototype` property and constructs a plain object.)
+
+```js
+function Ctor() {}
+Ctor.prototype = 3;
+console.log(Object.getPrototypeOf(new Ctor()) === Object.prototype); // true
+```
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/length.mdx b/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/length.mdx
new file mode 100644
index 0000000000..bb38496519
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/length.mdx
@@ -0,0 +1,21 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Function.prototype.length
+
+The **`length`** data property of a `Function` instance indicates the number of parameters expected by the function.
+
+## Value
+
+A number.
+
+## Description
+
+A `Function` object's `length` property indicates how many arguments the function expects, i.e. the number of formal parameters.
+
+The `Function` constructor is itself a `Function` object. Its `length` data property has a value of `1`.
+
+Due to historical reasons, `Function.prototype` is a callable itself. The `length` property of `Function.prototype` has a value of `0`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/name.mdx b/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/name.mdx
new file mode 100644
index 0000000000..3f99cc3731
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/name.mdx
@@ -0,0 +1,214 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Function.prototype.name
+
+The **`name`** property of a `Function` instance indicates the function's name as specified when it was created, or it may be either `anonymous` or `''` (an empty string) for functions created anonymously.
+
+## Value
+
+A string.
+
+> **Note:** In non-standard, pre-ES2015 implementations the `configurable` attribute was `false` as well.
+
+## Description
+
+The function's `name` property can be used to identify the function in debugging tools or error messages. It has no semantic significance to the language itself.
+
+The `name` property is read-only and cannot be changed by the assignment operator:
+
+```js
+function someFunction() {}
+
+someFunction.name = 'otherFunction';
+console.log(someFunction.name); // someFunction
+```
+
+To change it, use [`Object.defineProperty()`](../../../globals/Object/defineProperty.mdx).
+
+The `name` property is typically inferred from how the function is defined. In the following sections, we will describe the various ways in which it can be inferred.
+
+### Function declaration
+
+The `name` property returns the name of a function declaration.
+
+```js
+function doSomething() {}
+doSomething.name; // "doSomething"
+```
+
+### Default-exported function declaration
+
+An [`export default`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/export) declaration exports the function as a declaration instead of an expression. If the declaration is anonymous, the name is `"default"`.
+
+```js
+// -- someModule.js --
+export default function () {};
+
+// -- main.js --
+import someModule from "./someModule.js";
+
+someModule.name; // "default"
+```
+
+### Function constructor
+
+Functions created with the [`Function()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/Function) constructor have name "anonymous".
+
+```js
+new Function().name; // "anonymous"
+```
+
+### Function expression
+
+If the function expression is named, that name is used as the `name` property.
+
+```js
+const someFunction = function someFunctionName() {};
+someFunction.name; // "someFunctionName"
+```
+
+Anonymous function expressions created using the keyword `function` or arrow functions would have `""` (an empty string) as their name.
+
+```js
+(function () {}).name; // ""
+(() => {}).name; // ""
+```
+
+However, such cases are rare — usually, in order to refer to the expression elsewhere, the function expression is attached to an identifier when it's created (such as in a variable declaration). In such cases, the name can be inferred, as the following few subsections demonstrate.
+
+One practical case where the name cannot be inferred is a function returned from another function:
+
+```js
+function getFoo() {
+ return () => {};
+}
+getFoo().name; // ""
+```
+
+### Variable declaration and method
+
+Variables and methods can infer the name of an anonymous function from its syntactic position.
+
+```js
+const f = function () {};
+const object = {
+ someMethod: function () {}
+};
+
+console.log(f.name); // "f"
+console.log(object.someMethod.name); // "someMethod"
+```
+
+The same applies to assignment:
+
+```js
+let f;
+f = () => {};
+f.name; // "f"
+```
+
+### Initializer and default value
+
+Functions in initializers (default values) of [destructuring](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#default_value), [default parameters](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Functions/Default_parameters), [class fields](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Classes/Public_class_fields), etc., will inherit the name of the bound identifier as their `name`.
+
+```js
+const [f = () => {}] = [];
+f.name; // "f"
+
+const { someMethod: m = () => {} } = {};
+m.name; // "m"
+
+function foo(f = () => {}) {
+ console.log(f.name);
+}
+foo(); // "f"
+
+class Foo {
+ static someMethod = () => {};
+}
+Foo.someMethod.name; // someMethod
+```
+
+### Shorthand method
+
+```js
+const o = {
+ foo() {},
+};
+o.foo.name; // "foo";
+```
+
+### Bound function
+
+[`Function.prototype.bind()`](../../../globals/Function/prototype/bind.mdx) produces a function whose name is "bound " plus the function name.
+
+```js
+function foo() {};
+foo.bind({}).name; // "bound foo"
+```
+
+### Getter and setter
+
+When using [`get`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Functions/get) and [`set`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Functions/set) accessor properties, "get" or "set" will appear in the function name.
+
+```js
+const o = {
+ get foo() {},
+ set foo(x) {},
+};
+
+const descriptor = Object.getOwnPropertyDescriptor(o, "foo");
+descriptor.get.name; // "get foo"
+descriptor.set.name; // "set foo";
+```
+
+### Class
+
+A class's name follows the same algorithm as function declarations and expressions.
+
+```js
+class Foo {}
+Foo.name; // "Foo"
+```
+
+> **Warning:** JavaScript will set the function's `name` property only if a function does not have an own property called `name`. However, classes' [static members](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Classes/static) will be set as own properties of the class constructor function, and thus prevent the built-in `name` from being applied. See [an example](#telling_the_constructor_name_of_an_object) below.
+
+### Symbol as function name
+
+If a `Symbol` is used a function name and the symbol has a description, the method's name is the description in square brackets.
+
+```js
+const sym1 = Symbol("foo");
+const sym2 = Symbol();
+
+const o = {
+ [sym1]() {},
+ [sym2]() {},
+};
+
+o[sym1].name; // "[foo]"
+o[sym2].name; // "[]"
+```
+
+### Private property
+
+Private fields and private methods have the hash (`#`) as part of their names.
+
+```js
+class Foo {
+ #field = () => {};
+ #method() {}
+ getNames() {
+ console.log(this.#field.name);
+ console.log(this.#method.name);
+ }
+}
+
+new Foo().getNames();
+// "#field"
+// "#method"
+```
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/toString.mdx b/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/toString.mdx
new file mode 100644
index 0000000000..c2b4572389
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Function/prototype/toString.mdx
@@ -0,0 +1,60 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Function.prototype.toString()
+
+The **`toString()`** method returns a string representing the source code of the specified `Function`.
+
+## Syntax
+
+```js
+toString()
+```
+
+### Return value
+
+A string representing the source code of the function.
+
+## Description
+
+The `Function` object overrides the `toString()` method
+inherited from `Object`; it does not inherit
+[`Object.prototype.toString()`](../../../globals/Object/prototype/toString.mdx). For user-defined `Function`
+objects, the `toString` method returns a string containing the source text
+segment which was used to define the function.
+
+JavaScript calls the `toString` method automatically when a
+`Function` is to be represented as a text value, e.g. when a function is
+concatenated with a string.
+
+The `toString()` method will throw a [`TypeError`](../../../globals/TypeError/TypeError.mdx) exception
+("Function.prototype.toString called on incompatible object"), if its
+`this` value object is not a `Function` object.
+
+```js example-bad
+Function.prototype.toString.call('foo'); // throws TypeError
+```
+
+If the `toString()` method is called on built-in function objects, a
+function created by [`Function.prototype.bind()`](../../../globals/Function/prototype/bind.mdx), or
+other non-JavaScript functions, then `toString()` returns a
+_native function string_ which looks like
+
+```js
+"function someName() { [native code] }"
+```
+
+For intrinsic object methods and functions, `someName` is the initial name of the function; otherwise its content may be implementation-defined, but will always be in property name syntax, like `[1 + 1]`, `someName`, or `1`.
+
+> **Note:** This means using [`eval()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/eval) on native function strings is a guaranteed syntax error.
+
+If the `toString()` method is called on a function created by the `Function` constructor, `toString()` returns the source code of a synthesized function declaration named "anonymous" using the provided parameters and function body. For example, `Function("a", "b", "return a + b").toString()` will return:
+
+```js
+"function anonymous(a,b\n) {\nreturn a + b\n}"
+```
+
+Since ES2018, the spec requires the return value of `toString()` to be the exact same source code as it was declared, including any whitespace and/or comments — or, if the host doesn't have the source code available for some reason, requires returning a native function string. Support for this revised behavior can be found in the [compatibility table](#browser_compatibility).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Headers/Headers.mdx b/documentation/versioned_docs/version-3.21.3/globals/Headers/Headers.mdx
new file mode 100644
index 0000000000..c1041a833e
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Headers/Headers.mdx
@@ -0,0 +1,24 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Headers()
+
+The **`Headers()`** constructor creates a new `Headers` object.
+
+## Syntax
+
+```js
+new Headers()
+new Headers(init)
+```
+
+### Parameters
+
+- `init` _**optional**_
+ - : An object containing any HTTP headers that you want to pre-populate your `Headers` object with. This can be a
+ simple object literal with `String` values, an array of name-value pairs, where each pair is a 2-element string array; or an existing
+ `Headers` object. In the last case, the new `Headers` object
+ copies its data from the existing `Headers` object.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/append.mdx b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/append.mdx
new file mode 100644
index 0000000000..07dd5dd31f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/append.mdx
@@ -0,0 +1,33 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Headers.append()
+
+The **`append()`** method of the `Headers`
+interface appends a new value onto an existing header inside a `Headers`
+object, or adds the header if it does not already exist.
+
+The difference between `Headers.prototype.set()` and `append()` is
+that if the specified header already exists and accepts multiple values,
+`set()` will overwrite the existing value with the new one, whereas
+`append()` will append the new value onto the end of the set of values.
+
+## Syntax
+
+```js
+append(name, value)
+```
+
+### Parameters
+
+- `name`
+ - : The name of the HTTP header you want to add to the `Headers` object.
+- `value`
+ - : The value of the HTTP header you want to add.
+
+### Return value
+
+None (`undefined`).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/delete.mdx b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/delete.mdx
new file mode 100644
index 0000000000..9ced8efa0b
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/delete.mdx
@@ -0,0 +1,29 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Headers.delete()
+
+The **`delete()`** method of the `Headers`
+interface deletes a header from the current `Headers` object.
+
+This method throws a `TypeError` for the following reasons:
+
+- The value of the name parameter is not the name of an HTTP header.
+
+## Syntax
+
+```js
+delete(name)
+```
+
+### Parameters
+
+- `name`
+ - : The name of the HTTP header you want to delete from the `Headers` object.
+
+### Return value
+
+None (`undefined`).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/entries.mdx b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/entries.mdx
new file mode 100644
index 0000000000..162bee914f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/entries.mdx
@@ -0,0 +1,24 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Headers.entries()
+
+The **`Headers.entries()`** method returns an iterator allowing to go through all key/value pairs
+contained in this object. The both the key and value of each pairs are `String` objects.
+
+## Syntax
+
+```js
+entries()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+Returns an iterator.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/forEach.mdx b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/forEach.mdx
new file mode 100644
index 0000000000..198a765361
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/forEach.mdx
@@ -0,0 +1,43 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Headers.forEach()
+
+The **`Headers.forEach()`** method executes a callback function once per each key/value pair in the `Headers` object.
+
+## Syntax
+
+```js
+// Arrow function
+forEach((value, key) => { /* … */ })
+forEach((value, key, object) => { /* … */ })
+
+// Inline callback function
+forEach(function (value, key) { /* … */ })
+forEach(function (value, key, object) { /* … */ })
+forEach(function (value, key) { /* … */ }, thisArg)
+```
+
+### Parameters
+
+- `callbackFn`
+ - : Function to execute for each entry in the map. It takes the following arguments:
+ - `value`
+ - : Value of the currently visited header entry.
+ - `key`
+ - : Name of the currently visited header entry.
+ - `object`
+ - : The Headers object being iterated.
+- `thisArg` _**optional**_
+ - : Value to use as `this` when executing `callback`.
+
+### Return value
+
+`undefined`.
+
+## Description
+
+The `Headers.forEach()` method executes the provided callback once for each key of the Headers which actually exist. It is not invoked for keys which have been deleted. However, it is executed for keys which are present but have the value undefined.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/get.mdx b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/get.mdx
new file mode 100644
index 0000000000..69def6a357
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/get.mdx
@@ -0,0 +1,30 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Headers.get()
+
+The **`get()`** method of the [`Headers`](../../../globals/Headers/Headers.mdx) interface
+returns a byte string of all the values of a header within a `Headers` object
+with a given name. If the requested header doesn't exist in the `Headers`
+object, it returns `null`.
+
+## Syntax
+
+```js
+get(name)
+```
+
+### Parameters
+
+- `name`
+ - : The name of the HTTP header whose values you want to retrieve from the
+ `Headers` object. If the given name is not the name of an HTTP header, this
+ method throws a `TypeError`. The name is case-insensitive.
+
+### Return value
+
+A [`String`](../../../globals/String/String.mdx) sequence representing the values of the retrieved header or
+`null` if this header is not set.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/getSetCookie.mdx b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/getSetCookie.mdx
new file mode 100644
index 0000000000..b7618675b8
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/getSetCookie.mdx
@@ -0,0 +1,21 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Headers.getSetCookie()
+
+The **`getSetCookie()`** method of the [`Headers`](../../../globals/Headers/Headers.mdx) interface
+returns an array of all the values of the `Set-Cookie` headers, returning
+an empty list if none are present.
+
+## Syntax
+
+```js
+getSetCookie()
+```
+
+### Return value
+
+`String[]` representing the list of `Set-Cookie` headers.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/has.mdx b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/has.mdx
new file mode 100644
index 0000000000..bd3436cd88
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/has.mdx
@@ -0,0 +1,27 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Headers.has()
+
+The **`has()`** method of the `Headers` interface
+returns a boolean stating whether a `Headers` object contains a certain
+header.
+
+## Syntax
+
+```js
+has(name)
+```
+
+### Parameters
+
+- `name`
+ - : The name of the HTTP header you want to test for. If the given name is not a valid
+ HTTP header name, this method throws a `TypeError`.
+
+### Return value
+
+A boolean value.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/keys.mdx b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/keys.mdx
new file mode 100644
index 0000000000..8e6e4ed4ad
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/keys.mdx
@@ -0,0 +1,24 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Headers.keys()
+
+The **`Headers.keys()`** method returns an iterator allowing to go through all keys contained
+in this object. The keys are `String` objects.
+
+## Syntax
+
+```js
+keys()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+Returns an iterator.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/set.mdx b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/set.mdx
new file mode 100644
index 0000000000..792a7b3127
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/set.mdx
@@ -0,0 +1,34 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Headers.set()
+
+The **`set()`** method of the `Headers` interface
+sets a new value for an existing header inside a `Headers` object, or adds
+the header if it does not already exist.
+
+The difference between `set()` and `Headers.append` is that if
+the specified header already exists and accepts multiple values, `set()`
+overwrites the existing value with the new one, whereas `Headers.append`
+appends the new value to the end of the set of values.
+
+## Syntax
+
+```js
+set(name, value)
+```
+
+### Parameters
+
+- `name`
+ - : The name of the HTTP header you want to set to a new value. If the given name is not
+ the name of an HTTP header, this method throws a `TypeError`.
+- `value`
+ - : The new value you want to set.
+
+### Return value
+
+None `undefined`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/values.mdx b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/values.mdx
new file mode 100644
index 0000000000..149f446f5c
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Headers/prototype/values.mdx
@@ -0,0 +1,24 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Headers.values()
+
+The **`Headers.values()`** method returns an iterator allowing to go through all values contained
+in this object. The values are `String` objects.
+
+## Syntax
+
+```js
+values()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+Returns an iterator.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/HmacImportParams/HmacImportParams.mdx b/documentation/versioned_docs/version-3.21.3/globals/HmacImportParams/HmacImportParams.mdx
new file mode 100644
index 0000000000..816aa2e7dc
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/HmacImportParams/HmacImportParams.mdx
@@ -0,0 +1,21 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# HmacImportParams
+
+The **`HmacImportParams`** dictionary represents the object that should be passed as the `algorithm` parameter into `SubtleCrypto.importKey`, when generating a key for the `HMAC` algorithm.
+
+## Instance properties
+
+- `name`
+ - : A string. This should be set to `HMAC`.
+- `hash`
+
+ - : A string representing the name of the digest function to use. The can take a value of `SHA-1`, `SHA-256`, `SHA-384`, or `SHA-512`.
+
+- `length` _optional_
+ - : A `Number` representing the length in bits of the key. If this is omitted the length of the key is equal to the length of the digest generated by the digest function you have chosen. Unless you have a good reason to use a different length, omit this property and use the default.
+
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Infinity.mdx b/documentation/versioned_docs/version-3.21.3/globals/Infinity.mdx
new file mode 100644
index 0000000000..9e0ebda58d
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Infinity.mdx
@@ -0,0 +1,21 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Infinity
+
+The global property **`Infinity`** is a numeric value representing infinity.
+
+## Value
+
+The same number value as `Number.POSITIVE_INFINITY`.
+
+## Description
+
+`Infinity` is a property of the _global object_. In other words, it is a variable in global scope.
+
+The value `Infinity` (positive infinity) is greater than any other number.
+
+This value behaves slightly differently than mathematical infinity; see `Number.POSITIVE_INFINITY` for details.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Int16Array/Int16Array.mdx b/documentation/versioned_docs/version-3.21.3/globals/Int16Array/Int16Array.mdx
new file mode 100644
index 0000000000..6da6f8fc85
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Int16Array/Int16Array.mdx
@@ -0,0 +1,37 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Int16Array()
+
+The **`Int16Array()`** typed array constructor creates an array
+of twos-complement 16-bit signed integers in the platform byte order. If control over
+byte order is needed, use [`DataView`](../../globals/DataView/DataView.mdx) instead. The contents are initialized
+to `0`. Once established, you can reference elements in the array using the
+object's methods, or using standard array index syntax (that is, using bracket
+notation).
+
+## Syntax
+
+```js
+new Int16Array()
+new Int16Array(length)
+new Int16Array(typedArray)
+new Int16Array(object)
+
+new Int16Array(buffer)
+new Int16Array(buffer, byteOffset)
+new Int16Array(buffer, byteOffset, length)
+```
+
+> **Note:** `Int16Array()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+See [`TypedArray`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#parameters).
+
+### Exceptions
+
+See [`TypedArray`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#exceptions).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Int32Array/Int32Array.mdx b/documentation/versioned_docs/version-3.21.3/globals/Int32Array/Int32Array.mdx
new file mode 100644
index 0000000000..d84839b895
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Int32Array/Int32Array.mdx
@@ -0,0 +1,37 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Int32Array()
+
+The **`Int32Array()`** typed array constructor creates an array
+of twos-complement 32-bit signed integers in the platform byte order. If control over
+byte order is needed, use [`DataView`](../../globals/DataView/DataView.mdx) instead. The contents are initialized
+to `0`. Once established, you can reference elements in the array using the
+object's methods, or using standard array index syntax (that is, using bracket
+notation).
+
+## Syntax
+
+```js
+new Int32Array()
+new Int32Array(length)
+new Int32Array(typedArray)
+new Int32Array(object)
+
+new Int32Array(buffer)
+new Int32Array(buffer, byteOffset)
+new Int32Array(buffer, byteOffset, length)
+```
+
+> **Note:** `Int32Array()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+See [`TypedArray`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#parameters).
+
+### Exceptions
+
+See [`TypedArray`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#exceptions).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Int8Array/Int8Array.mdx b/documentation/versioned_docs/version-3.21.3/globals/Int8Array/Int8Array.mdx
new file mode 100644
index 0000000000..1e33698ff7
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Int8Array/Int8Array.mdx
@@ -0,0 +1,35 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Int8Array()
+
+The **`Int8Array()`** constructor creates a typed array of
+twos-complement 8-bit signed integers. The contents are initialized to `0`.
+Once established, you can reference elements in the array using the object's methods, or
+using standard array index syntax (that is, using bracket notation).
+
+## Syntax
+
+```js
+new Int8Array()
+new Int8Array(length)
+new Int8Array(typedArray)
+new Int8Array(object)
+
+new Int8Array(buffer)
+new Int8Array(buffer, byteOffset)
+new Int8Array(buffer, byteOffset, length)
+```
+
+> **Note:** `Int8Array()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+See [`TypedArray`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#parameters).
+
+### Exceptions
+
+See [`TypedArray`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#exceptions).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/JSON/parse.mdx b/documentation/versioned_docs/version-3.21.3/globals/JSON/parse.mdx
new file mode 100644
index 0000000000..0acca523ee
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/JSON/parse.mdx
@@ -0,0 +1,50 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# JSON.parse()
+
+The **`JSON.parse()`** method parses a JSON string, constructing the JavaScript value or object described by the string. An optional _reviver_ function can be provided to perform a transformation on the resulting object before it is returned.
+
+## Syntax
+
+```js
+JSON.parse(text)
+JSON.parse(text, reviver)
+```
+
+### Parameters
+
+- `text`
+ - : The string to parse as JSON.
+- `reviver` _**optional**_
+ - : If a function, this prescribes how each value originally produced by parsing is transformed before being returned. Non-callable values are ignored. The function is called with the following arguments:
+ - `key`
+ - : The key associated with the value.
+ - `value`
+ - : The value produced by parsing.
+
+### Return value
+
+The `Object`, `Array`, string, number, boolean, or `null` value corresponding to the given JSON `text`.
+
+### Exceptions
+
+- [`SyntaxError`](../../globals/SyntaxError/SyntaxError.mdx)
+ - : Thrown if the string to parse is not valid JSON.
+
+## Description
+
+`JSON.parse()` parses a JSON string according to the [JSON grammar](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/JSON#full_json_grammar), then evaluates the string as if it's a JavaScript expression. The only instance where a piece of JSON text represents a different value from the same JavaScript expression is when dealing with the `"__proto__"` key — see [Object literal syntax vs. JSON](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Object_initializer#object_literal_syntax_vs._json).
+
+### The reviver parameter
+
+If a `reviver` is specified, the value computed by parsing is _transformed_ before being returned. Specifically, the computed value and all its properties (in a [depth-first](https://en.wikipedia.org/wiki/Depth-first_search) fashion, beginning with the most nested properties and proceeding to the original value itself) are individually run through the `reviver`.
+
+The `reviver` is called with the object containing the property being processed as `this`, and two arguments: `key` and `value`, representing the property name as a string (even for arrays) and the property value. If the `reviver` function returns [`undefined`](../../globals/undefined.mdx) (or returns no value — for example, if execution falls off the end of the function), the property is deleted from the object. Otherwise, the property is redefined to be the return value. If the `reviver` only transforms some values and not others, be certain to return all untransformed values as-is — otherwise, they will be deleted from the resulting object.
+
+Similar to the `replacer` parameter of [`JSON.stringify()`](../../globals/JSON/stringify.mdx), `reviver` will be last called on the root object with an empty string as the `key` and the root object as the `value`. For JSON text parsing to primitive values, `reviver` will be called once.
+
+Note that `reviver` is run after the value is parsed. So, for example, numbers in JSON text will have already been converted to JavaScript numbers, and may lose precision in the process. To transfer large numbers without loss of precision, serialize them as strings, and revive them to [BigInts](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/BigInt), or other appropriate arbitrary precision formats.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/JSON/stringify.mdx b/documentation/versioned_docs/version-3.21.3/globals/JSON/stringify.mdx
new file mode 100644
index 0000000000..28f40f8c23
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/JSON/stringify.mdx
@@ -0,0 +1,96 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# JSON.stringify()
+
+The **`JSON.stringify()`** method converts a JavaScript value to a JSON string, optionally replacing values if a replacer function is specified or optionally including only the specified properties if a replacer array is specified.
+
+## Syntax
+
+```js
+JSON.stringify(value)
+JSON.stringify(value, replacer)
+JSON.stringify(value, replacer, space)
+```
+
+### Parameters
+
+- `value`
+ - : The value to convert to a JSON string.
+- `replacer` _**optional**_
+ - : A function that alters the behavior of the stringification process, or an array of strings or numbers naming properties of `value` that should be included in the output. If `replacer` is an array, all elements that are not strings or numbers (can be either primitives or wrapper objects), including `Symbol` values, are completely ignored. If `replacer` is anything other than a function or an array (e.g. [`null`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/null) or not provided), all properties of the object are included in the resulting JSON string.
+- `space` _**optional**_
+
+ - : A string or number that's used to insert white space (including indentation, line break characters, etc.) into the output JSON string for readability purposes.
+
+ If this is a number, it indicates the number of space characters to be used as indentation, clamped to 10 (that is, any number greater than `10` is treated as if it were `10`). Values less than 1 indicate that no space should be used.
+
+ If this is a string, the string (or the first 10 characters of the string, if it's longer than that) is inserted before every nested object or array.
+
+ If `space` is anything other than a string or number (can be either a primitive or a wrapper object) — for example, is [`null`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/null) or not provided — no white space is used.
+
+### Return value
+
+A JSON string representing the given value, or undefined.
+
+### Exceptions
+
+- [`TypeError`](../../globals/TypeError/TypeError.mdx)
+ - : Thrown if one of the following is true:
+ - `value` contains a circular reference.
+ - A `BigInt` value is encountered.
+
+## Description
+
+`JSON.stringify()` converts a value to JSON notation representing it:
+
+- `Boolean`, `Number`, `String`, and `BigInt` (obtainable via [`Object()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/Object)) objects are converted to the corresponding primitive values during stringification, in accordance with the traditional conversion semantics. `Symbol` objects (obtainable via [`Object()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/Object)) are treated as plain objects.
+- Attempting to serialize `BigInt` values will throw. However, if the BigInt has a `toJSON()` method (through monkeypatching: `BigInt.prototype.toJSON = ...`), that method can provide the serialization result. This constraint ensures that a proper serialization (and, very likely, its accompanying deserialization) behavior is always explicitly provided by the user.
+- [`undefined`](../../globals/undefined.mdx), `Function`, and `Symbol` values are not valid JSON values. If any such values are encountered during conversion, they are either omitted (when found in an object) or changed to [`null`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/null) (when found in an array). `JSON.stringify()` can return `undefined` when passing in "pure" values like `JSON.stringify(() => {})` or `JSON.stringify(undefined)`.
+- The numbers [`Infinity`](../../globals/Infinity.mdx) and [`NaN`](../../globals/NaN.mdx), as well as the value [`null`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/null), are all considered `null`. (But unlike the values in the previous point, they would never be omitted.)
+- Arrays are serialized as arrays (enclosed by square brackets). Only array indices between 0 and `length - 1` (inclusive) are serialized; other properties are ignored.
+- For other objects:
+
+ - All `Symbol`-keyed properties will be completely ignored, even when using the [`replacer`](#the_replacer_parameter) parameter.
+
+ - If the value has a `toJSON()` method, it's responsible to define what data will be serialized. Instead of the object being serialized, the value returned by the `toJSON()` method when called will be serialized. `JSON.stringify()` calls `toJSON` with one parameter, the `key`, which has the same semantic as the `key` parameter of the [`replacer`](#the_replacer_parameter) function:
+
+ - if this object is a property value, the property name
+ - if it is in an array, the index in the array, as a string
+ - if `JSON.stringify()` was directly called on this object, an empty string
+
+ `Date` objects implement the [`toJSON()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON) method which returns a string (the same as [`date.toISOString()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)). Thus, they will be stringified as strings.
+
+ - Only [enumerable own properties](https://developer.mozilla.org/docs/Web/JavaScript/Enumerability_and_ownership_of_properties) are visited. This means [Map](../../globals/Map/Map.mdx), [Set](../../globals/Set/Set.mdx), etc. will become `"{}"`. You can use the [`replacer`](#the_replacer_parameter) parameter to serialize them to something more useful.
+
+ Properties are visited using the same algorithm as [`Object.keys()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/keys), which has a well-defined order and is stable across implementations. For example, `JSON.stringify` on the same object will always produce the same string, and `JSON.parse(JSON.stringify(obj))` would produce an object with the same key ordering as the original (assuming the object is completely JSON-serializable).
+
+### The replacer parameter
+
+The `replacer` parameter can be either a function or an array.
+
+As an array, its elements indicate the names of the properties in the object that should be included in the resulting JSON string. Only string and number values are taken into account; symbol keys are ignored.
+
+As a function, it takes two parameters: the `key` and the `value` being stringified. The object in which the key was found is provided as the `replacer`'s `this` context.
+
+The `replacer` function is called for the initial object being stringified as well, in which case the `key` is an empty string (`""`). It is then called for each property on the object or array being stringified. Array indices will be provided in its string form as `key`. The current property value will be replaced with the `replacer`'s return value for stringification. This means:
+
+- If you return a number, string, boolean, or `null`, that value is directly serialized and used as the property's value. (Returning a BigInt will throw as well.)
+- If you return a `Function`, `Symbol`, or [`undefined`](../../globals/undefined.mdx), the property is not included in the output.
+- If you return any other object, the object is recursively stringified, calling the `replacer` function on each property.
+
+> **Note:** When parsing JSON generated with `replacer` functions, you would likely want to use the [`reviver`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#using_the_reviver_parameter) parameter to perform the reverse operation.
+
+Typically, array elements' index would never shift (even when the element is an invalid value like a function, it will become `null` instead of omitted). Using the `replacer` function allows you to control the order of the array elements by returning a different array.
+
+### The space parameter
+
+The `space` parameter may be used to control spacing in the final string.
+
+- If it is a number, successive levels in the stringification will each be indented by this many space characters.
+- If it is a string, successive levels will be indented by this string.
+
+Each level of indentation will never be longer than 10. Number values of `space` are clamped to 10, and string values are truncated to 10 characters.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Map/@@species.mdx b/documentation/versioned_docs/version-3.21.3/globals/Map/@@species.mdx
new file mode 100644
index 0000000000..f7617a7f76
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Map/@@species.mdx
@@ -0,0 +1,25 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# get Map\[Symbol.species]
+
+The **`Map[Symbol.species]`** accessor property is an unused accessor property specifying how to copy `Map` objects.
+
+## Syntax
+
+```js
+Map[Symbol.species]
+```
+
+### Return value
+
+The value of the constructor (`this`) on which `get Symbol.species` was called. The return value is used to construct copied `Map` instances.
+
+## Description
+
+The `Symbol.species` accessor property returns the default constructor for `Map` objects. Subclass constructors may override it to change the constructor assignment.
+
+> **Note:** This property is currently unused by all `Map` methods.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Map/Map.mdx b/documentation/versioned_docs/version-3.21.3/globals/Map/Map.mdx
new file mode 100644
index 0000000000..3e7debd816
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Map/Map.mdx
@@ -0,0 +1,27 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Map()
+
+The **`Map()` constructor** creates [Map](../../globals/Map/Map.mdx) objects.
+
+## Syntax
+
+```js
+new Map()
+new Map(iterable)
+```
+
+> **Note:** `Map()` can only be constructed with `new`. Attempting to call it without `new` throws a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+### Parameters
+
+- `iterable` _**optional**_
+ - : An `Array` or other
+ [iterable](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Iteration_protocols) object
+ whose elements are key-value pairs. (For example, arrays with two elements,
+ such as `[[ 1, 'one' ],[ 2, 'two' ]]`.) Each key-value pair is added to the
+ new `Map`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/@@iterator.mdx b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/@@iterator.mdx
new file mode 100644
index 0000000000..336b32d519
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/@@iterator.mdx
@@ -0,0 +1,21 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Map.prototype\[Symbol.iterator]()
+
+The **`Symbol.iterator`** method of a `Map` object implements the [iterable protocol](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Iteration_protocols) and allows maps to be consumed by most syntaxes expecting iterables, such as the [spread syntax](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Spread_syntax) and [`for...of`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/for...of) loops. It returns an iterator that yields the key-value pairs of the map.
+
+The initial value of this property is the same function object as the initial value of the [`Map.prototype.entries`](../../../globals/Map/prototype/entries.mdx) property.
+
+## Syntax
+
+```js
+map[Symbol.iterator]()
+```
+
+### Return value
+
+The same return value as [`Map.prototype.entries()`](../../../globals/Map/prototype/entries.mdx): a new iterable iterator object that yields the key-value pairs of the map.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/clear.mdx b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/clear.mdx
new file mode 100644
index 0000000000..d5adc7625a
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/clear.mdx
@@ -0,0 +1,19 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Map.prototype.clear()
+
+The **`clear()`** method removes all elements from a `Map` object.
+
+## Syntax
+
+```js
+clear()
+```
+
+### Return value
+
+[`undefined`](../../../globals/undefined.mdx).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/delete.mdx b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/delete.mdx
new file mode 100644
index 0000000000..56bd947c11
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/delete.mdx
@@ -0,0 +1,26 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Map.prototype.delete()
+
+The **`delete()`** method removes the specified element from a `Map` object by
+key.
+
+## Syntax
+
+```js
+delete(key)
+```
+
+### Parameters
+
+- `key`
+ - : The key of the element to remove from the `Map` object.
+
+### Return value
+
+`true` if an element in the `Map` object existed and has been removed, or
+`false` if the element does not exist.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/entries.mdx b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/entries.mdx
new file mode 100644
index 0000000000..46d9efb386
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/entries.mdx
@@ -0,0 +1,24 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Map.prototype.entries()
+
+The **`entries()`** method returns a new
+_[iterator](https://developer.mozilla.org/docs/Web/JavaScript/Guide/Iterators_and_Generators)_ object
+that contains the `[key, value]` pairs for each element in the `Map` object in
+insertion order. In this particular case, this iterator object is also an
+iterable, so the for-of loop can be used. When the protocol `[Symbol.iterator]`
+is used, it returns a function that, when invoked, returns this iterator itself.
+
+## Syntax
+
+```js
+entries()
+```
+
+### Return value
+
+A new [Map](../../../globals/Map/Map.mdx) iterator object.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/forEach.mdx b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/forEach.mdx
new file mode 100644
index 0000000000..2cdf8024f1
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/forEach.mdx
@@ -0,0 +1,73 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Map.prototype.forEach()
+
+The **`forEach()`** method executes a provided function once per each key/value
+pair in the `Map` object, in insertion order.
+
+## Syntax
+
+```js
+// Arrow function
+forEach(() => { /* … */ } )
+forEach((value) => { /* … */ } )
+forEach((value, key) => { /* … */ } )
+forEach((value, key, map) => { /* … */ } )
+
+// Callback function
+forEach(callbackFn)
+forEach(callbackFn, thisArg)
+
+// Inline callback function
+forEach(function() { /* … */ })
+forEach(function(value) { /* … */ })
+forEach(function(value, key) { /* … */ })
+forEach(function(value, key, map) { /* … */ })
+forEach(function(value, key, map) { /* … */ }, thisArg)
+```
+
+### Parameters
+
+- `callbackFn`
+ - : Function to execute for each entry in the map. It takes the following
+ arguments:
+ - `value` _**optional**_
+ - : Value of each iteration.
+ - `key` _**optional**_
+ - : Key of each iteration.
+ - `map` _**optional**_
+ - : The map being iterated.
+- `thisArg` _**optional**_
+ - : Value to use as `this` when executing `callback`.
+
+### Return value
+
+[`undefined`](../../../globals/undefined.mdx).
+
+## Description
+
+The `forEach` method executes the provided `callback` once for each key of the
+map which actually exist. It is not invoked for keys which have been deleted.
+However, it is executed for values which are present but have the value
+`undefined`.
+
+`callback` is invoked with **three arguments**:
+
+- the entry's `value`
+- the entry's `key`
+- the **`Map` object** being traversed
+
+If a `thisArg` parameter is provided to `forEach`, it will be passed to
+`callback` when invoked, for use as its `this` value. Otherwise, the value
+`undefined` will be passed for use as its `this` value. The `this` value
+ultimately observable by `callback` is determined according to
+[the usual rules for determining the `this` seen by a function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/this).
+
+Each value is visited once, except in the case when it was deleted and re-added
+before `forEach` has finished. `callback` is not invoked for values deleted
+before being visited. New values added before `forEach` has finished will be
+visited.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/get.mdx b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/get.mdx
new file mode 100644
index 0000000000..1649763d9f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/get.mdx
@@ -0,0 +1,28 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Map.prototype.get()
+
+The **`get()`** method returns a specified element from a `Map` object. If the
+value that is associated to the provided key is an object, then you will get a
+reference to that object and any change made to that object will effectively
+modify it inside the `Map` object.
+
+## Syntax
+
+```js
+get(key)
+```
+
+### Parameters
+
+- `key`
+ - : The key of the element to return from the `Map` object.
+
+### Return value
+
+The element associated with the specified key, or
+[`undefined`](../../../globals/undefined.mdx) if the key can't be found in the `Map` object.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/has.mdx b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/has.mdx
new file mode 100644
index 0000000000..511508c2ef
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/has.mdx
@@ -0,0 +1,26 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Map.prototype.has()
+
+The **`has()`** method returns a boolean indicating whether an element with the
+specified key exists or not.
+
+## Syntax
+
+```js
+has(key)
+```
+
+### Parameters
+
+- `key`
+ - : The key of the element to test for presence in the `Map` object.
+
+### Return value
+
+`true` if an element with the specified key exists in the `Map` object;
+otherwise `false`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/keys.mdx b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/keys.mdx
new file mode 100644
index 0000000000..2c251fc4da
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/keys.mdx
@@ -0,0 +1,21 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Map.prototype.keys()
+
+The **`keys()`** method returns a new
+_[iterator](https://developer.mozilla.org/docs/Web/JavaScript/Guide/Iterators_and_Generators)_ object
+that contains the keys for each element in the `Map` object in insertion order. In this particular case, this iterator object is also an iterable, so a [for...of](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/for...of) loop can be used.
+
+## Syntax
+
+```js
+keys()
+```
+
+### Return value
+
+A new [Map](../../../globals/Map/Map.mdx) iterator object.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/set.mdx b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/set.mdx
new file mode 100644
index 0000000000..9d073fd7d5
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/set.mdx
@@ -0,0 +1,26 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Map.prototype.set()
+
+The **`set()`** method adds or updates an entry in a `Map` object with a specified key and a value.
+
+## Syntax
+
+```js
+set(key, value)
+```
+
+### Parameters
+
+- `key`
+ - : The key of the element to add to the `Map` object. The key may be any [JavaScript type](https://developer.mozilla.org/docs/Web/JavaScript/Data_structures) (any [primitive value](https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#primitive_values) or any type of [JavaScript object](https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#objects)).
+- `value`
+ - : The value of the element to add to the `Map` object. The value may be any [JavaScript type](https://developer.mozilla.org/docs/Web/JavaScript/Data_structures) (any [primitive value](https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#primitive_values) or any type of [JavaScript object](https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#objects)).
+
+### Return value
+
+The `Map` object.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/size.mdx b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/size.mdx
new file mode 100644
index 0000000000..704f9f3eb3
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/size.mdx
@@ -0,0 +1,16 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Map.prototype.size
+
+The **`size`** accessor property returns the number of elements in a
+[Map](../../../globals/Map/Map.mdx) object.
+
+## Description
+
+The value of `size` is an integer representing how many entries the `Map` object
+has. A set accessor function for `size` is `undefined`; you can not change this
+property.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/values.mdx b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/values.mdx
new file mode 100644
index 0000000000..ffb70b4daa
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Map/prototype/values.mdx
@@ -0,0 +1,22 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Map.prototype.values()
+
+The **`values()`** method returns a new
+_[iterator](https://developer.mozilla.org/docs/Web/JavaScript/Guide/Iterators_and_Generators)_ object
+that contains the values for each element in the `Map` object in insertion
+order.
+
+## Syntax
+
+```js
+values()
+```
+
+### Return value
+
+A new [Map](../../../globals/Map/Map.mdx) iterator object.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/E.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/E.mdx
new file mode 100644
index 0000000000..c0fed19f23
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/E.mdx
@@ -0,0 +1,17 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.E
+
+The **`Math.E`** property represents Euler's number, the base of natural logarithms, e, which is approximately 2.718.
+
+## Value
+
+`2.718281828459045`
+
+## Description
+
+Because `E` is a static property of `Math`, you always use it as `Math.E`, rather than as a property of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/LN10.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/LN10.mdx
new file mode 100644
index 0000000000..757fa119b2
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/LN10.mdx
@@ -0,0 +1,17 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.LN10
+
+The **`Math.LN10`** property represents the natural logarithm of 10, approximately 2.302.
+
+## Value
+
+`2.302585092994046`
+
+## Description
+
+Because `LN10` is a static property of `Math`, you always use it as `Math.LN10`, rather than as a property of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/LN2.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/LN2.mdx
new file mode 100644
index 0000000000..265a0ab9da
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/LN2.mdx
@@ -0,0 +1,17 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.LN2
+
+The **`Math.LN2`** property represents the natural logarithm of 2, approximately 0.693:
+
+## Value
+
+`0.6931471805599453`
+
+## Description
+
+Because `LN2` is a static property of `Math`, you always use it as `Math.LN2`, rather than as a property of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/LOG10e.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/LOG10e.mdx
new file mode 100644
index 0000000000..f1693ade26
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/LOG10e.mdx
@@ -0,0 +1,17 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.LOG10E
+
+The **`Math.LOG10E`** property represents the base 10 logarithm of [E](./E.mdx), approximately 0.434.
+
+## Value
+
+`0.4342944819032518`
+
+## Description
+
+Because `LOG10E` is a static property of `Math`, you always use it as `Math.LOG10E`, rather than as a property of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/LOG2e.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/LOG2e.mdx
new file mode 100644
index 0000000000..21e6b85f1b
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/LOG2e.mdx
@@ -0,0 +1,17 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.LOG2E
+
+The **`Math.LOG2E`** property represents the base 2 logarithm of [E](./E.mdx), approximately 1.442.
+
+## Value
+
+`1.4426950408889634`
+
+## Description
+
+Because `LOG2E` is a static property of `Math`, you always use it as `Math.LOG2E`, rather than as a property of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/PI.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/PI.mdx
new file mode 100644
index 0000000000..f50b7bdd4b
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/PI.mdx
@@ -0,0 +1,17 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.PI
+
+The **`Math.PI`** property represents the ratio of the circumference of a circle to its diameter, approximately 3.14159.
+
+## Value
+
+`3.141592653589793`
+
+## Description
+
+Because `PI` is a static property of `Math`, you always use it as `Math.PI`, rather than as a property of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/SQRT1_2.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/SQRT1_2.mdx
new file mode 100644
index 0000000000..d6c9659ec3
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/SQRT1_2.mdx
@@ -0,0 +1,19 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.SQRT1_2
+
+The **`Math.SQRT1_2`** property represents the square root of 1/2, which is approximately 0.707.
+
+## Value
+
+`0.7071067811865476`
+
+## Description
+
+`Math.SQRT1_2` is a constant and a more performant equivalent to [`Math.sqrt(0.5)`](./sqrt.mdx).
+
+Because `SQRT1_2` is a static property of `Math`, you always use it as `Math.SQRT1_2`, rather than as a property of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/SQRT2.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/SQRT2.mdx
new file mode 100644
index 0000000000..2d68428db6
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/SQRT2.mdx
@@ -0,0 +1,19 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.SQRT2
+
+The **`Math.SQRT2`** property represents the square root of 2, approximately 1.414.
+
+## Value
+
+`0.7071067811865476`
+
+## Description
+
+`Math.SQRT2` is a constant and a more performant equivalent to [`Math.sqrt(2)`](./sqrt.mdx).
+
+Because `SQRT2` is a static property of `Math`, you always use it as `Math.SQRT2`, rather than as a property of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/abs.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/abs.mdx
new file mode 100644
index 0000000000..309eeb3c94
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/abs.mdx
@@ -0,0 +1,29 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.abs()
+
+The **`Math.abs()`** function returns the absolute value of a number.
+
+
+## Syntax
+
+```js
+Math.abs(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number.
+
+### Return value
+
+The absolute value of `x`. If `x` is negative (including `-0`), returns `-x`. Otherwise, returns `x`. The result is therefore always a positive number or `0`.
+
+## Description
+
+Because `abs()` is a static method of `Math`, you always use it as `Math.abs()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/acos.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/acos.mdx
new file mode 100644
index 0000000000..c8aab407ee
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/acos.mdx
@@ -0,0 +1,28 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.acos()
+
+The **`Math.acos()`** function returns the inverse cosine (in radians) of a number.
+
+## Syntax
+
+```js
+Math.acos(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number between -1 and 1, inclusive, representing the angle's cosine value.
+
+### Return value
+
+The inverse cosine (angle in radians between 0 and π, inclusive) of `x`. If `x` is less than -1 or greater than 1, returns `NaN`.
+
+## Description
+
+Because `acos()` is a static method of `Math`, you always use it as `Math.acos()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/acosh.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/acosh.mdx
new file mode 100644
index 0000000000..e3a39478ab
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/acosh.mdx
@@ -0,0 +1,28 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.acosh()
+
+The **`Math.acosh()`** function returns the inverse hyperbolic cosine of a number.
+
+## Syntax
+
+```js
+Math.acosh(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number greater than or equal to 1.
+
+### Return value
+
+The inverse hyperbolic cosine of `x`. If `x` is less than 1, returns `NaN`.
+
+## Description
+
+Because `acosh()` is a static method of `Math`, you always use it as `Math.acosh()`, rather than as a method of a `Math` object you created (`Math` is no constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/asin.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/asin.mdx
new file mode 100644
index 0000000000..545b36497b
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/asin.mdx
@@ -0,0 +1,28 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.asin()
+
+The **`Math.asin()`** function returns the inverse sine (in radians) of a number.
+
+## Syntax
+
+```js
+Math.asin(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number between -1 and 1, inclusive, representing the angle's sine value.
+
+### Return value
+
+The inverse sine (angle in radians between and , inclusive) of `x`. If `x` is less than -1 or greater than 1, returns `NaN`.
+
+## Description
+
+Because `asin()` is a static method of `Math`, you always use it as `Math.asin()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/asinh.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/asinh.mdx
new file mode 100644
index 0000000000..ddeee67d31
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/asinh.mdx
@@ -0,0 +1,28 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.asinh()
+
+The **`Math.asinh()`** function returns the inverse hyperbolic sine of a number.
+
+## Syntax
+
+```js
+Math.asinh(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number.
+
+### Return value
+
+The inverse hyperbolic sine of `x`.
+
+## Description
+
+Because `asinh()` is a static method of `Math`, you always use it as `Math.asinh()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/atan.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/atan.mdx
new file mode 100644
index 0000000000..d9f2b6c31a
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/atan.mdx
@@ -0,0 +1,28 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.atan()
+
+The **`Math.atan()`** function returns the inverse tangent (in radians) of a number.
+
+## Syntax
+
+```js
+Math.atan(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number.
+
+### Return value
+
+The inverse tangent (angle in radians between and , inclusive) of `x`. If `x` is `Infinity`, it returns . If `x` is `-Infinity`, it returns .
+
+## Description
+
+Because `atan()` is a static method of `Math`, you always use it as `Math.atan()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/atan2.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/atan2.mdx
new file mode 100644
index 0000000000..69698c2805
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/atan2.mdx
@@ -0,0 +1,51 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.atan2()
+
+The **`Math.atan2()`** function returns the angle in the plane (in radians) between the positive x-axis and the ray from (0, 0) to the point (x, y), for `Math.atan2(y, x)`.
+
+## Syntax
+
+```js
+Math.atan2(y, x)
+```
+
+### Parameters
+
+- `y`
+ - : The y coordinate of the point.
+- `x`
+ - : The x coordinate of the point.
+
+### Return value
+
+The angle in radians (between -π and π, inclusive) between the positive x-axis and the ray from (0, 0) to the point (x, y).
+
+## Description
+
+The `Math.atan2()` method measures the counterclockwise angle θ, in radians, between the positive x-axis and the point `(x, y)`. Note that the arguments to this function pass the y-coordinate first and the x-coordinate second.
+
+`Math.atan2()` is passed separate `x` and `y` arguments, while [`Math.atan()`](./atan.mdx) is passed the ratio of those two arguments. `Math.atan2(y, x)` differs from `Math.atan(y / x)` in the following cases:
+
+| `x` | `y` | `Math.atan2(y, x)` | `Math.atan(y / x)` |
+| -------------------- | ----------- | ------------------ | ------------------ |
+| `Infinity` | `Infinity` | π / 4 | `NaN` |
+| `Infinity` | `-Infinity` | -π / 4 | `NaN` |
+| `-Infinity` | `Infinity` | 3π / 4 | `NaN` |
+| `-Infinity` | `-Infinity` | -3π / 4 | `NaN` |
+| 0 | 0 | 0 | `NaN` |
+| 0 | -0 | -0 | `NaN` |
+| < 0 (including `-0`) | 0 | π | 0 |
+| < 0 (including `-0`) | -0 | -π | 0 |
+| `-Infinity` | > 0 | π | -0 |
+| -0 | > 0 | π / 2 | -π / 2 |
+| `-Infinity` | < 0 | -π | 0 |
+| -0 | < 0 | -π / 2 | π / 2 |
+
+In addition, for points in the second and third quadrants (`x < 0`), `Math.atan2()` would output an angle less than or greater than .
+
+Because `atan2()` is a static method of `Math`, you always use it as `Math.atan2()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/atanh.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/atanh.mdx
new file mode 100644
index 0000000000..eb9085bdf1
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/atanh.mdx
@@ -0,0 +1,29 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.atanh()
+
+The **`Math.atanh()`** function returns the inverse hyperbolic tangent of a number.
+
+## Syntax
+
+```js
+Math.atanh(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number between -1 and 1, inclusive.
+
+### Return value
+
+The inverse hyperbolic tangent of `x`. If `x` is 1, returns `Infinity`. If `x` is -1, returns `-Infinity`. If `x` is less than -1 or greater than 1, returns `NaN`.
+
+## Description
+
+Because `atanh()` is a static method of `Math`, you always use it as `Math.atanh()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
+
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/cbrt.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/cbrt.mdx
new file mode 100644
index 0000000000..ad3006284c
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/cbrt.mdx
@@ -0,0 +1,28 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.cbrt()
+
+The **`Math.cbrt()`** function returns the cube root of a number.
+
+## Syntax
+
+```js
+Math.cbrt(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number.
+
+### Return value
+
+The cube root of `x`.
+
+## Description
+
+Because `cbrt()` is a static method of `Math`, you always use it as `Math.cbrt()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/ceil.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/ceil.mdx
new file mode 100644
index 0000000000..715c2d20b3
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/ceil.mdx
@@ -0,0 +1,28 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.ceil()
+
+The **`Math.ceil()`** function always rounds up and returns the smaller integer greater than or equal to a given number.
+
+## Syntax
+
+```js
+Math.ceil(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number.
+
+### Return value
+
+The smallest integer greater than or equal to `x`. It's the same value as [`-Math.floor(-x)`](./floor.mdx).
+
+## Description
+
+Because `ceil()` is a static method of `Math`, you always use it as `Math.ceil()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/clz32.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/clz32.mdx
new file mode 100644
index 0000000000..292e2ad9a2
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/clz32.mdx
@@ -0,0 +1,34 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.clz32()
+
+The **`Math.clz32()`** function returns the number of leading zero bits in the 32-bit binary representation of a number.
+
+## Syntax
+
+```js
+Math.clz32(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number.
+
+### Return value
+
+The number of leading zero bits in the 32-bit binary representation of `x`.
+
+## Description
+
+`clz32` is short for **C**ount**L**eading**Z**eros**32**.
+
+If `x` is not a number, it will be converted to a number first, then converted to a 32-bit unsigned integer.
+
+If the converted 32-bit unsigned integer is `0`, `32` is returned, because all bits are `0`. If the most significant bit is `1` (i.e. the number is greater than or equal to 231), `0` is returned.
+
+This function is particularly useful for systems that compile to JS, like [Emscripten](https://emscripten.org).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/cos.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/cos.mdx
new file mode 100644
index 0000000000..609c5df6a3
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/cos.mdx
@@ -0,0 +1,28 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.cos()
+
+The **`Math.cos()`** function returns the cosine of a number in radians.
+
+## Syntax
+
+```js
+Math.cos(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number representing an angle in radians.
+
+### Return value
+
+The cosine of `x`, between -1 and 1, inclusive. If `x` is `Infinity`, `-Infinity`, or `NaN`, returns `NaN`.
+
+## Description
+
+Because `cos()` is a static method of `Math`, you always use it as `Math.cos()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/cosh.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/cosh.mdx
new file mode 100644
index 0000000000..044ba1f98b
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/cosh.mdx
@@ -0,0 +1,28 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.cosh()
+
+The **`Math.cosh()`** function returns the hyperbolic cosine of a number.
+
+## Syntax
+
+```js
+Math.cosh(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number.
+
+### Return value
+
+The hyperbolic cosine of `x`.
+
+## Description
+
+Because `cosh()` is a static method of `Math`, you always use it as `Math.cosh()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
\ No newline at end of file
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/exp.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/exp.mdx
new file mode 100644
index 0000000000..88c7cf3aec
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/exp.mdx
@@ -0,0 +1,30 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.exp()
+
+The **`Math.exp()`** function returns [E](./E.mdx) raised to the power of a number.
+
+## Syntax
+
+```js
+Math.exp(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number.
+
+### Return value
+
+A nonnegative number representing ex, where e is [the base of the natural logarithm](./E.mdx).
+
+## Description
+
+Because `exp()` is a static method of `Math`, you always use it as `Math.exp()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
+
+Beware that `e` to the power of a number very close to 0 will be very close to 1 and suffer from loss of precision. In this case, you may want to use `Math.expm1` instead, and obtain a much higher-precision fractional part of the answer.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/expm1.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/expm1.mdx
new file mode 100644
index 0000000000..e08d94e4df
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/expm1.mdx
@@ -0,0 +1,32 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.expm1()
+
+The **`Math.expm1()`** function returns [E](./E.mdx) raised to the power of a number, subtracted by 1.
+
+## Syntax
+
+```js
+Math.expm1(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number.
+
+### Return value
+
+A number representing ex - 1, where e is [the base of the natural logarithm](./E.mdx).
+
+## Description
+
+For very small values of _x_, adding 1 can reduce or eliminate precision. The double floats used in JS give you about 15 digits of precision. 1 + 1e-15 \= 1.000000000000001, but 1 + 1e-16 = 1.000000000000000 and therefore exactly 1.0 in that arithmetic, because digits past 15 are rounded off.
+
+When you calculate where x is a number very close to 0, you should get an answer very close to 1 + x, because . If you calculate `Math.exp(1.1111111111e-15) - 1`, you should get an answer close to `1.1111111111e-15`. Instead, due to the highest significant figure in the result of `Math.exp` being the units digit `1`, the final value ends up being `1.1102230246251565e-15`, with only 3 correct digits. If, instead, you calculate `Math.exp1m(1.1111111111e-15)`, you will get a much more accurate answer `1.1111111111000007e-15`, with 11 correct digits of precision.
+
+Because `expm1()` is a static method of `Math`, you always use it as `Math.expm1()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/floor.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/floor.mdx
new file mode 100644
index 0000000000..9d5ddb0319
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/floor.mdx
@@ -0,0 +1,28 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.floor()
+
+The **`Math.floor()`** function always rounds down and returns the largest integer less than or equal to a given number.
+
+## Syntax
+
+```js
+Math.floor(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number.
+
+### Return value
+
+The largest integer smaller than or equal to `x`. It's the same value as [`-Math.ceil(-x)`](./ceil.mdx).
+
+## Description
+
+Because `floor()` is a static method of `Math`, you always use it as `Math.floor()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/fround.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/fround.mdx
new file mode 100644
index 0000000000..b2c6b227aa
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/fround.mdx
@@ -0,0 +1,32 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.fround()
+
+The **`Math.fround()`** function returns the nearest [32-bit single precision](https://en.wikipedia.org/wiki/Single-precision_floating-point_format) float representation of a number.
+
+## Syntax
+
+```js
+Math.fround(doubleFloat)
+```
+
+### Parameters
+
+- `doubleFloat`
+ - : A number.
+
+### Return value
+
+The nearest [32-bit single precision](https://en.wikipedia.org/wiki/Single-precision_floating-point_format) float representation of `x`.
+
+## Description
+
+JavaScript uses 64-bit double floating-point numbers internally, which offer a very high precision. However, sometimes you may be working with 32-bit floating-point numbers, for example if you are reading values from a `Float32Array`. This can create confusion: checking a 64-bit float and a 32-bit float for equality may fail even though the numbers are seemingly identical.
+
+To solve this, `Math.fround()` can be used to cast the 64-bit float to a 32-bit float. Internally, JavaScript continues to treat the number as a 64-bit float, it just performs a "round to even" on the 23rd bit of the mantissa, and sets all following mantissa bits to `0`. If the number is outside the range of a 32-bit float, `Infinity` or `-Infinity` is returned.
+
+Because `fround()` is a static method of `Math`, you always use it as `Math.fround()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/hypot.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/hypot.mdx
new file mode 100644
index 0000000000..f5424c447f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/hypot.mdx
@@ -0,0 +1,39 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.hypot()
+
+The **`Math.hypot()`** function returns the square root of the sum of squares of its arguments.
+
+## Syntax
+
+```js
+Math.hypot()
+Math.hypot(value0)
+Math.hypot(value0, value1)
+Math.hypot(value0, value1, /* … ,*/ valueN)
+```
+
+### Parameters
+
+- `value1`, …, `valueN`
+ - : Numbers.
+
+### Return value
+
+The square root of the sum of squares of the given arguments. Returns Infinity if any of the arguments is ±Infinity. Otherwise, if at least one of the arguments is or is converted to NaN, returns NaN. Returns `0` if no arguments are given or all arguments are ±0.
+
+## Description
+
+Calculating the hypotenuse of a right triangle, or the magnitude of a complex number, uses the formula `Math.sqrt(v1*v1 + v2*v2)`, where v1 and v2 are the lengths of the triangle's legs, or the complex number's real and complex components. The corresponding distance in 2 or more dimensions can be calculated by adding more squares under the square root: `Math.sqrt(v1*v1 + v2*v2 + v3*v3 + v4*v4)`.
+
+This function makes this calculation easier and faster; you call `Math.hypot(v1, v2)`, or `Math.hypot(v1, /* … ,*/, vN)`.
+
+`Math.hypot` also avoids overflow/underflow problems if the magnitude of your numbers is very large. The largest number you can represent in JS is [`Number.MAX_VALUE`](../Number/MAX_VALUE.mdx), which is around 10308. If your numbers are larger than about 10154, taking the square of them will result in Infinity. For example, `Math.sqrt(1e200*1e200 + 1e200*1e200) = Infinity`. If you use `hypot()` instead, you get a better answer: `Math.hypot(1e200, 1e200) = 1.4142...e+200` . This is also true with very small numbers. `Math.sqrt(1e-200*1e-200 + 1e-200*1e-200) = 0`, but `Math.hypot(1e-200, 1e-200) = 1.4142...e-200`.
+
+With one argument, `Math.hypot()` is equivalent to [`Math.abs()`](./abs.mdx). [`Math.hypot.length`](../Function/prototype/length.mdx) is 2, which weakly signals that it's designed to handle at least two parameters.
+
+Because `hypot()` is a static method of `Math`, you always use it as `Math.hypot()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/imul.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/imul.mdx
new file mode 100644
index 0000000000..5a93e5e4e9
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/imul.mdx
@@ -0,0 +1,35 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.imul()
+
+The **`Math.imul()`** function returns the result of the C-like 32-bit multiplication of the two parameters.
+
+
+## Syntax
+
+```js
+Math.imul(a, b)
+```
+
+### Parameters
+
+- `a`
+ - : First number.
+- `b`
+ - : Second number.
+
+### Return value
+
+The result of the C-like 32-bit multiplication of the given arguments.
+
+## Description
+
+`Math.imul()` allows for 32-bit integer multiplication with C-like semantics. This feature is useful for projects like [Emscripten](https://en.wikipedia.org/wiki/Emscripten).
+
+Because `imul()` is a static method of `Math`, you always use it as `Math.imul()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
+
+If you use normal JavaScript floating point numbers in `imul()`, you will experience a degrade in performance. This is because of the costly conversion from a floating point to an integer for multiplication, and then converting the multiplied integer back into a floating point.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/log.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/log.mdx
new file mode 100644
index 0000000000..4d20ddb905
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/log.mdx
@@ -0,0 +1,32 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.log()
+
+The **`Math.log()`** function returns the natural logarithm (base [E](./E.mdx)) of a number.
+
+## Syntax
+
+```js
+Math.log(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number greater than or equal to 0.
+
+### Return value
+
+The natural logarithm (base [E](./E.mdx)) of `x`. If `x` is ±0, returns [`-Infinity`](../Number/NEGATIVE_INFINITY.mdx). If `x < 0`, returns `NaN`.
+
+## Description
+
+Because `log()` is a static method of `Math`, you always use it as `Math.log()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
+
+If you need the natural log of 2 or 10, use the constants `Math.LN2` or `Math.LN10`. If you need a logarithm to base 2 or 10, use `Math.log2()` or `Math.log10()`. If you need a logarithm to other bases, use `Math.log(x) / Math.log(otherBase)` as in the example below; you might want to precalculate `1 / Math.log(otherBase)` since multiplication in `Math.log(x) * constant` is much faster.
+
+Beware that positive numbers very close to 1 can suffer from loss of precision and make its natural logarithm less accurate. In this case, you may want to use `Math.log1p` instead.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/log10.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/log10.mdx
new file mode 100644
index 0000000000..3a60f19992
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/log10.mdx
@@ -0,0 +1,30 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.log10()
+
+The **`Math.log10()`** function returns the base 10 logarithm of a number.
+
+## Syntax
+
+```js
+Math.log10(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number greater than or equal to 0.
+
+### Return value
+
+The base 10 logarithm of `x`. If `x < 0`, returns `NaN`.
+
+## Description
+
+Because `log10()` is a static method of `Math`, you always use it as `Math.log10()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
+
+This function is the equivalent of `Math.log(x) / Math.log(10)`. For `log10(e)`, use the constant `Math.LOG10E`, which is 1 / `Math.LN10`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/log1p.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/log1p.mdx
new file mode 100644
index 0000000000..5cc32349dc
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/log1p.mdx
@@ -0,0 +1,34 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.log1p()
+
+The **`Math.log1p()`** function returns the natural logarithm (base [E](./E.mdx)) of `1 + x`, where `x` is the argument.
+
+## Syntax
+
+```js
+Math.log1p(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number greater than or equal to -1.
+
+### Return value
+
+The natural logarithm (base [E](./E.mdx)) of `x + 1`. If `x` is -1, returns [`-Infinity`](../Number/NEGATIVE_INFINITY.mdx). If `x < -1`, returns `NaN`.
+
+## Description
+
+For very small values of _x_, adding 1 can reduce or eliminate precision. The double floats used in JS give you about 15 digits of precision. 1 + 1e-15 \= 1.000000000000001, but 1 + 1e-16 = 1.000000000000000 and therefore exactly 1.0 in that arithmetic, because digits past 15 are rounded off.
+
+When you calculate log(1 + _x_) where _x_ is a small positive number, you should get an answer very close to _x_, because . If you calculate `Math.log(1 + 1.1111111111e-15)`, you should get an answer close to `1.1111111111e-15`. Instead, you will end up taking the logarithm of `1.00000000000000111022` (the roundoff is in binary, so sometimes it gets ugly), and get the answer 1.11022…e-15, with only 3 correct digits. If, instead, you calculate `Math.log1p(1.1111111111e-15)`, you will get a much more accurate answer `1.1111111110999995e-15`, with 15 correct digits of precision (actually 16 in this case).
+
+If the value of `x` is less than -1, the return value is always `NaN`.
+
+Because `log1p()` is a static method of `Math`, you always use it as `Math.log1p()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/log2.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/log2.mdx
new file mode 100644
index 0000000000..0a5390de6f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/log2.mdx
@@ -0,0 +1,30 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.log2()
+
+The **`Math.log2()`** function returns the base 2 logarithm of a number.
+
+## Syntax
+
+```js
+Math.log2(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number greater than or equal to 0.
+
+### Return value
+
+The base 2 logarithm of `x`. If `x < 0`, returns `NaN`.
+
+## Description
+
+Because `log2()` is a static method of `Math`, you always use it as `Math.log2()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
+
+This function is the equivalent of `Math.log(x) / Math.log(2)`. For `log2(e)`, use the constant `Math.LOG2E`, which is 1 / `Math.LN2`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/max.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/max.mdx
new file mode 100644
index 0000000000..a1aa326338
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/max.mdx
@@ -0,0 +1,33 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.max()
+
+The **`Math.max()`** function returns the largest of the numbers given as input parameters, or `-Infinity` if there are no parameters.
+
+## Syntax
+
+```js
+Math.max()
+Math.max(value0)
+Math.max(value0, value1)
+Math.max(value0, value1, /* … ,*/ valueN)
+```
+
+### Parameters
+
+- `value1`, `value2`, … , `valueN`
+ - : Zero or more numbers among which the largest value will be selected and returned.
+
+### Return value
+
+The largest of the given numbers. Returns `NaN` if any of the parameters is or is converted into `NaN`. Returns `-Infinity` if no parameters are provided.
+
+## Description
+
+Because `max()` is a static method of `Math`, you always use it as `Math.max()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
+
+[`Math.max.length`](../Function/prototype/length.mdx) is 2, which weakly signals that it's designed to handle at least two parameters.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/min.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/min.mdx
new file mode 100644
index 0000000000..3da257c557
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/min.mdx
@@ -0,0 +1,33 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.min()
+
+The **`Math.min()`** function returns the smallest of the numbers given as input parameters, or `Infinity` if there are no parameters.
+
+## Syntax
+
+```js
+Math.min()
+Math.min(value0)
+Math.min(value0, value1)
+Math.min(value0, value1, /* … ,*/ valueN)
+```
+
+### Parameters
+
+- `value1`, …, `valueN`
+ - : Zero or more numbers among which the lowest value will be selected and returned.
+
+### Return value
+
+The smallest of the given numbers. Returns `NaN` if any of the parameters is or is converted into `NaN`. Returns `Infinity` if no parameters are provided.
+
+## Description
+
+Because `min()` is a static method of `Math`, you always use it as `Math.min()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
+
+[`Math.min.length`](../Function/prototype/length.mdx) is 2, which weakly signals that it's designed to handle at least two parameters.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/pow.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/pow.mdx
new file mode 100644
index 0000000000..a7696e1b44
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/pow.mdx
@@ -0,0 +1,39 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.pow()
+
+The **`Math.pow()`** method returns the value of a base raised to a power.
+
+## Syntax
+
+```js
+Math.pow(base, exponent)
+```
+
+### Parameters
+
+- `base`
+ - : The base number.
+- `exponent`
+ - : The exponent number.
+
+### Return value
+
+A number representing `base` taken to the power of `exponent`. Returns `NaN` in one of the following cases:
+
+- `exponent` is `NaN`.
+- `base` is `NaN` and `exponent` is not `0`.
+- `base` is ±1 and `exponent` is ±`Infinity`.
+- `base < 0` and `exponent` is not an integer.
+
+## Description
+
+`Math.pow()` is equivalent to the `**` operator, except `Math.pow()` only accepts numbers.
+
+`Math.pow(NaN, 0)` (and the equivalent `NaN ** 0`) is the only case where `NaN` doesn't propagate through mathematical operations — it returns `1` despite the operand being `NaN`. In addition, the behavior where `base` is 1 and `exponent` is non-finite (±Infinity or `NaN`) is different from IEEE 754, which specifies that the result should be 1, whereas JavaScript returns `NaN` to preserve backward compatibility with its original behavior.
+
+Because `pow()` is a static method of `Math`, use it as `Math.pow()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/random.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/random.mdx
new file mode 100644
index 0000000000..0a993fc445
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/random.mdx
@@ -0,0 +1,21 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.random()
+
+The **`Math.random()`** function returns a floating-point, pseudo-random number that's greater than or equal to 0 and less than 1, with approximately uniform distribution over that range — which you can then scale to your desired range. The implementation selects the initial seed to the random number generation algorithm; it cannot be chosen or reset by the user.
+
+> **Note:** `Math.random()` _does not_ provide cryptographically secure random numbers. Do not use them for anything related to security. Use the Web Crypto API instead, and more precisely the `crypto.getRandomValues()` method.
+
+## Syntax
+
+```js
+Math.random()
+```
+
+### Return value
+
+A floating-point, pseudo-random number between 0 (inclusive) and 1 (exclusive).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/round.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/round.mdx
new file mode 100644
index 0000000000..bb4e7cca69
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/round.mdx
@@ -0,0 +1,34 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.round()
+
+The **`Math.round()`** function returns the value of a number rounded to the nearest integer.
+
+## Syntax
+
+```js
+Math.round(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number.
+
+### Return value
+
+The value of `x` rounded to the nearest integer.
+
+## Description
+
+If the fractional portion of the argument is greater than 0.5, the argument is rounded to the integer with the next higher absolute value. If it is less than 0.5, the argument is rounded to the integer with the lower absolute value. If the fractional portion is exactly 0.5, the argument is rounded to the next integer in the direction of +∞.
+
+> **Note:** This differs from many languages' `round()` functions, which often round half-increments _away from zero_, giving a different result in the case of negative numbers with a fractional part of exactly 0.5.
+
+`Math.round(x)` is not exactly the same as [`Math.floor(x + 0.5)`](./floor.mdx). When `x` is -0, or -0.5 ≤ x < 0, `Math.round(x)` returns -0, while `Math.floor(x + 0.5)` returns 0. However, neglecting that difference and potential precision errors, `Math.round(x)` and `Math.floor(x + 0.5)` are generally equivalent.
+
+Because `round()` is a static method of `Math`, you always use it as `Math.round()`, rather than as a method of a `Math` object you created (`Math` has no constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/sign.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/sign.mdx
new file mode 100644
index 0000000000..d5d734e69b
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/sign.mdx
@@ -0,0 +1,34 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.sign()
+
+The **`Math.sign()`** function returns 1 or -1, indicating the sign of the number passed as argument. If the input is 0 or -0, it will be returned as-is.
+
+## Syntax
+
+```js
+Math.sign(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number.
+
+### Return value
+
+A number representing the sign of `x`:
+
+- If `x` is positive, returns `1`.
+- If `x` is negative, returns `-1`.
+- If `x` is positive zero, returns `0`.
+- If `x` is negative zero, returns `-0`.
+- Otherwise, returns `NaN`.
+
+## Description
+
+Because `sign()` is a static method of `Math`, you always use it as `Math.sign()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/sin.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/sin.mdx
new file mode 100644
index 0000000000..bec94a2afe
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/sin.mdx
@@ -0,0 +1,28 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.sin()
+
+The **`Math.sin()`** function returns the sine of a number in radians.
+
+## Syntax
+
+```js
+Math.sin(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number representing an angle in radians.
+
+### Return value
+
+The sine of `x`, between -1 and 1, inclusive. If `x` is `Infinity`, `-Infinity`, or `NaN`, returns `NaN`.
+
+## Description
+
+Because `sin()` is a static method of `Math`, you always use it as `Math.sin()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/sinh.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/sinh.mdx
new file mode 100644
index 0000000000..c9ee509799
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/sinh.mdx
@@ -0,0 +1,29 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.sinh()
+
+The **`Math.sinh()`** function returns the hyperbolic sine of a number.
+
+## Syntax
+
+```js
+Math.sinh(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number.
+
+### Return value
+
+The hyperbolic sine of `x`.
+
+## Description
+
+Because `sinh()` is a static method of `Math`, you always use it as `Math.sinh()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
+
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/sqrt.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/sqrt.mdx
new file mode 100644
index 0000000000..feb50bb4dd
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/sqrt.mdx
@@ -0,0 +1,29 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.sqrt()
+
+The **`Math.sqrt()`** function returns the square root of a number.
+
+## Syntax
+
+```js
+Math.sqrt(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number greater than or equal to 0.
+
+### Return value
+
+The square root of `x`, a nonnegative number. If `x < 0`, returns `NaN`.
+
+## Description
+
+Because `sqrt()` is a static method of `Math`, you always use it as `Math.sqrt()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
+
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/tan.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/tan.mdx
new file mode 100644
index 0000000000..905ed2fad5
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/tan.mdx
@@ -0,0 +1,31 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.tan()
+
+The **`Math.tan()`** function returns the tangent of a number in radians.
+
+
+## Syntax
+
+```js
+Math.tan(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number representing an angle in radians.
+
+### Return value
+
+The tangent of `x`. If `x` is `Infinity`, `-Infinity`, or `NaN`, returns `NaN`.
+
+> **Note:** Due to floating point precision, it's not possible to obtain the exact value π/2, so the result is always finite if not `NaN`.
+
+## Description
+
+Because `tan()` is a static method of `Math`, you always use it as `Math.tan()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/tanh.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/tanh.mdx
new file mode 100644
index 0000000000..593fa04c62
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/tanh.mdx
@@ -0,0 +1,28 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.tanh()
+
+The **`Math.tanh()`** function returns the hyperbolic tangent of a number.
+
+## Syntax
+
+```js
+Math.tanh(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number.
+
+### Return value
+
+The hyperbolic tangent of `x`.
+
+## Description
+
+Because `tanh()` is a static method of `Math`, you always use it as `Math.tanh()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Math/trunc.mdx b/documentation/versioned_docs/version-3.21.3/globals/Math/trunc.mdx
new file mode 100644
index 0000000000..1a8006a947
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Math/trunc.mdx
@@ -0,0 +1,30 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Math.trunc()
+
+The **`Math.trunc()`** function returns the integer part of a number by removing any fractional digits.
+
+## Syntax
+
+```js
+Math.trunc(x)
+```
+
+### Parameters
+
+- `x`
+ - : A number.
+
+### Return value
+
+The integer part of `x`.
+
+## Description
+
+Unlike the other three `Math` methods: `Math.floor()`, `Math.ceil()` and `Math.round()`, the way `Math.trunc()` works is very simple. It _truncates_ (cuts off) the dot and the digits to the right of it, no matter whether the argument is a positive or negative number.
+
+Because `trunc()` is a static method of `Math`, you always use it as `Math.trunc()`, rather than as a method of a `Math` object you created (`Math` is not a constructor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/NaN.mdx b/documentation/versioned_docs/version-3.21.3/globals/NaN.mdx
new file mode 100644
index 0000000000..75c5978802
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/NaN.mdx
@@ -0,0 +1,35 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# NaN
+
+The global **`NaN`** property is a value representing Not-A-Number.
+
+## Value
+
+The same number value as [`Number.NaN`](./Number/NaN.mdx).
+
+## Description
+
+`NaN` is a property of the _global object_. In other words, it is a variable in global scope.
+
+In modern browsers, `NaN` is a non-configurable, non-writable property. Even when this is not the case, avoid overriding it.
+
+There are five different types of operations that return `NaN`:
+
+- Failed number conversion (e.g. explicit ones like `parseInt("blabla")`, `Number(undefined)`, or implicit ones like `Math.abs(undefined)`)
+- Math operation where the result is not a real number (e.g. `Math.sqrt(-1)`)
+- Indeterminate form (e.g. `0 * Infinity`, `1 ** Infinity`, `Infinity / Infinity`, `Infinity - Infinity`)
+- A method or expression whose operand is or gets coerced to `NaN` (e.g. `7 ** NaN`, `7 * "blabla"`) — this means `NaN` is contagious
+- Other cases where an invalid value is to be represented as a number (e.g. an invalid `new Date("blabla").getTime()`, `"".charCodeAt(1)`)
+
+`NaN` and its behaviors are not invented by JavaScript. Its semantics in floating point arithmetic (including that `NaN !== NaN`) are specified by [IEEE 754](https://en.wikipedia.org/wiki/Double_precision_floating-point_format). `NaN`'s behaviors include:
+
+- If `NaN` is involved in a mathematical operation (but not [bitwise operations](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators#bitwise_shift_operators)), the result is usually also `NaN`. (See [counter-example](#silently_escaping_nan) below.)
+- When `NaN` is one of the operands of any relational comparison (`>`, `<`, `>=`, `<=`), the result is always `false`.
+- `NaN` compares unequal (via [`==`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Equality), [`!=`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Inequality), [`===`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Strict_equality), and [`!==`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Strict_inequality)) to any other value — including to another `NaN` value.
+
+`NaN` is also one of the [falsy](https://developer.mozilla.org/docs/Glossary/Falsy) values in JavaScript.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/MAX_SAFE_INTEGER.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/MAX_SAFE_INTEGER.mdx
new file mode 100644
index 0000000000..73c98ee36c
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/MAX_SAFE_INTEGER.mdx
@@ -0,0 +1,21 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.MAX_SAFE_INTEGER
+
+The **`Number.MAX_SAFE_INTEGER`** constant represents the maximum safe integer in JavaScript (253 – 1).
+
+For larger integers, consider using `BigInt`.
+
+## Value
+
+`9007199254740991` (9,007,199,254,740,991, or \~9 quadrillion).
+
+## Description
+
+[Double precision floating point format](https://en.wikipedia.org/wiki/Double_precision_floating-point_format) only has 52 bits to represent the [mantissa](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number#number_encoding), so it can only safely represent integers between -(253 – 1) and 253 – 1. "Safe" in this context refers to the ability to represent integers exactly and to compare them correctly. For example, `Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2` will evaluate to true, which is mathematically incorrect. See `Number.isSafeInteger()` for more information.
+
+Because `MAX_SAFE_INTEGER` is a static property of `Number`, you always use it as `Number.MAX_SAFE_INTEGER`, rather than as a property of a number value.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/MAX_VALUE.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/MAX_VALUE.mdx
new file mode 100644
index 0000000000..8d9e227047
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/MAX_VALUE.mdx
@@ -0,0 +1,19 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.MAX_VALUE
+
+The **`Number.MAX_VALUE`** property represents the maximum numeric value representable in JavaScript.
+
+## Value
+
+21024 - 1, or approximately `1.7976931348623157E+308`.
+
+## Description
+
+Values larger than `MAX_VALUE` are represented as [`Infinity`](../../globals/Infinity.mdx) and will lose their actual value.
+
+Because `MAX_VALUE` is a static property of `Number`, you always use it as `Number.MAX_VALUE`, rather than as a property of a number value.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/MIN_SAFE_INTEGER.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/MIN_SAFE_INTEGER.mdx
new file mode 100644
index 0000000000..cafc75993e
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/MIN_SAFE_INTEGER.mdx
@@ -0,0 +1,21 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.MIN_SAFE_INTEGER
+
+The **`Number.MIN_SAFE_INTEGER`** constant represents the minimum safe integer in JavaScript, or -(253 - 1).
+
+To represent integers smaller than this, consider using `BigInt`.
+
+## Value
+
+`-9007199254740991` (-9,007,199,254,740,991, or about -9 quadrillion).
+
+## Description
+
+[Double precision floating point format](https://en.wikipedia.org/wiki/Double_precision_floating-point_format) only has 52 bits to represent the [mantissa](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number#number_encoding), so it can only safely represent integers between -(253 – 1) and 253 – 1. Safe in this context refers to the ability to represent integers exactly and to correctly compare them. For example, `Number.MIN_SAFE_INTEGER - 1 === Number.MIN_SAFE_INTEGER - 2` will evaluate to true, which is mathematically incorrect. See `Number.isSafeInteger()` for more information.
+
+Because `MIN_SAFE_INTEGER` is a static property of `Number`, you always use it as `Number.MIN_SAFE_INTEGER`, rather than as a property of a number value.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/MIN_VALUE.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/MIN_VALUE.mdx
new file mode 100644
index 0000000000..390e406741
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/MIN_VALUE.mdx
@@ -0,0 +1,21 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.MIN_VALUE
+
+The **`Number.MIN_VALUE`** property represents the smallest positive numeric value representable in JavaScript.
+
+## Value
+
+2-1074, or `5E-324`.
+
+## Description
+
+`Number.MIN_VALUE` is the smallest positive number (not the most negative number) that can be represented within float precision — in other words, the number closest to 0. The ECMAScript spec doesn't define a precise value that implementations are required to support — instead the spec says, _"must be the smallest non-zero positive value that can actually be represented by the implementation"_. This is because small IEEE-754 floating point numbers are [denormalized](https://en.wikipedia.org/wiki/Subnormal_number), but implementations are not required to support this representation, in which case `Number.MIN_VALUE` may be larger.
+
+In practice, its precise value in mainstream engines like V8 (used by Chrome, Edge, Node.js), SpiderMonkey (used by Firefox), and JavaScriptCore (used by Safari) is 2-1074, or `5E-324`.
+
+Because `MIN_VALUE` is a static property of `Number`, you always use it as `Number.MIN_VALUE`, rather than as a property of a number value.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/NEGATIVE_INFINITY.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/NEGATIVE_INFINITY.mdx
new file mode 100644
index 0000000000..86674c08fb
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/NEGATIVE_INFINITY.mdx
@@ -0,0 +1,32 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.NEGATIVE_INFINITY
+
+The **`Number.NEGATIVE_INFINITY`** property represents the negative Infinity value.
+
+## Value
+
+The same as the negative value of the global [`Infinity`](../../globals/Infinity.mdx) property.
+
+## Description
+
+The `Number.NEGATIVE_INFINITY` value behaves slightly differently than mathematical infinity:
+
+- Any positive value, including `Number.POSITIVE_INFINITY`, multiplied by `Number.NEGATIVE_INFINITY` is `Number.NEGATIVE_INFINITY`.
+- Any negative value, including `Number.NEGATIVE_INFINITY`, multiplied by `Number.NEGATIVE_INFINITY` is `Number.POSITIVE_INFINITY`.
+- Any positive value divided by `Number.NEGATIVE_INFINITY` is [negative zero](https://en.wikipedia.org/wiki/Signed_zero) (as defined in [IEEE 754](https://en.wikipedia.org/wiki/IEEE_754)).
+- Any negative value divided by `Number.NEGATIVE_INFINITY` is [positive zero](https://en.wikipedia.org/wiki/Signed_zero) (as defined in [IEEE 754](https://en.wikipedia.org/wiki/IEEE_754)).
+- Zero multiplied by `Number.NEGATIVE_INFINITY` is [`NaN`](../../globals/NaN.mdx).
+- [`NaN`](../../globals/NaN.mdx) multiplied by `Number.NEGATIVE_INFINITY` is [`NaN`](../../globals/NaN.mdx).
+- `Number.NEGATIVE_INFINITY`, divided by any negative value except `Number.NEGATIVE_INFINITY`, is `Number.POSITIVE_INFINITY`.
+- `Number.NEGATIVE_INFINITY`, divided by any positive value except `Number.POSITIVE_INFINITY`, is `Number.NEGATIVE_INFINITY`.
+- `Number.NEGATIVE_INFINITY`, divided by either `Number.NEGATIVE_INFINITY` or `Number.POSITIVE_INFINITY`, is [`NaN`](../../globals/NaN.mdx).
+- `x > Number.NEGATIVE_INFINITY` is true for any number _x_ that isn't `Number.NEGATIVE_INFINITY`.
+
+You might use the `Number.NEGATIVE_INFINITY` property to indicate an error condition that returns a finite number in case of success. Note, however, that [`NaN`](../../globals/NaN.mdx) would be more appropriate in such a case.
+
+Because `Number.NEGATIVE_INFINITY` is a static property of `Number`, you always use it as `Number.NEGATIVE_INFINITY`, rather than as a property of a number value.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/NaN.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/NaN.mdx
new file mode 100644
index 0000000000..6a194ac882
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/NaN.mdx
@@ -0,0 +1,17 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.NaN
+
+The **`Number.NaN`** property represents Not-A-Number, which is equivalent to [description for the global property](../../globals/NaN.mdx). For more information about the behaviors of `NaN`, see the [`NaN`](../../globals/NaN.mdx).
+
+## Value
+
+The number value [`NaN`](../../globals/NaN.mdx).
+
+## Description
+
+Because `NaN` is a static property of `Number`, you always use it as `Number.NaN`, rather than as a property of a number value.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/Number.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/Number.mdx
new file mode 100644
index 0000000000..3816c592f5
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/Number.mdx
@@ -0,0 +1,31 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number() constructor
+
+The **`Number()` constructor** creates a `Number` object. When called instead as a function, it performs type conversion to a primitive number, which is usually more useful.
+
+## Syntax
+
+```js
+new Number(value)
+Number(value)
+```
+
+> **Note:** `Number()` can be called with or without `new`, but with different effects. See [Return value](#return_value).
+
+### Parameters
+
+- `value`
+ - : The numeric value of the object being created.
+
+### Return value
+
+When `Number` is called as a constructor (with `new`), it creates a `Number` object, which is **not** a primitive.
+
+When `Number` is called as a function, it [coerces the parameter to a number primitive](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number#number_coercion). [BigInts](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/BigInt) are converted to numbers. If the value can't be converted, it returns [`NaN`](../../globals/NaN.mdx).
+
+> **Warning:** You should rarely find yourself using `Number` as a constructor.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/POSITIVE_INFINITY.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/POSITIVE_INFINITY.mdx
new file mode 100644
index 0000000000..ca686c0ec1
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/POSITIVE_INFINITY.mdx
@@ -0,0 +1,32 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.POSITIVE_INFINITY
+
+The **`Number.POSITIVE_INFINITY`** property represents the positive Infinity value.
+
+## Value
+
+The same as the value of the global [`Infinity`](../../globals/Infinity.mdx) property.
+
+## Description
+
+The `Number.POSITIVE_INFINITY` value behaves slightly differently than mathematical infinity:
+
+- Any positive value, including `Number.POSITIVE_INFINITY`, multiplied by `Number.POSITIVE_INFINITY` is `Number.POSITIVE_INFINITY`.
+- Any negative value, including `Number.NEGATIVE_INFINITY`, multiplied by `Number.POSITIVE_INFINITY` is `Number.NEGATIVE_INFINITY`.
+- Any positive number divided by `Number.POSITIVE_INFINITY` is [positive zero](https://en.wikipedia.org/wiki/Signed_zero) (as defined in [IEEE 754](https://en.wikipedia.org/wiki/IEEE_754)).
+- Any negative number divided by `Number.POSITIVE_INFINITY` is [negative zero](https://en.wikipedia.org/wiki/Signed_zero) (as defined in [IEEE 754](https://en.wikipedia.org/wiki/IEEE_754).
+- Zero multiplied by `Number.POSITIVE_INFINITY` is [`NaN`](../../globals/NaN.mdx).
+- `NaN` multiplied by `Number.POSITIVE_INFINITY` is [`NaN`](../../globals/NaN.mdx).
+- `Number.POSITIVE_INFINITY`, divided by any negative value except `Number.NEGATIVE_INFINITY`, is `Number.NEGATIVE_INFINITY`.
+- `Number.POSITIVE_INFINITY`, divided by any positive value except `Number.POSITIVE_INFINITY`, is `Number.POSITIVE_INFINITY`.
+- `Number.POSITIVE_INFINITY`, divided by either `Number.NEGATIVE_INFINITY` or `Number.POSITIVE_INFINITY`, is [`NaN`](../../globals/NaN.mdx).
+- `Number.POSITIVE_INFINITY > x` is true for any number _x_ that isn't `Number.POSITIVE_INFINITY`.
+
+You might use the `Number.POSITIVE_INFINITY` property to indicate an error condition that returns a finite number in case of success. Note, however, that [`NaN`](../../globals/NaN.mdx) would be more appropriate in such a case.
+
+Because `Number.POSITIVE_INFINITY` is a static property of `Number`, you always use it as `Number.POSITIVE_INFINITY`, rather than as a property of a number value.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/epsilon.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/epsilon.mdx
new file mode 100644
index 0000000000..ff27e9f62f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/epsilon.mdx
@@ -0,0 +1,21 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.EPSILON
+
+The **`Number.EPSILON`** property represents the difference between 1 and the smallest floating point number greater than 1.
+
+## Value
+
+2-52, or approximately `2.2204460492503130808472633361816E-16`.
+
+## Description
+
+`Number.EPSILON` is the difference between 1 and the next greater number representable in the Number format, because [double precision floating point format](https://en.wikipedia.org/wiki/Double_precision_floating-point_format) only has 52 bits to represent the [mantissa](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number#number_encoding), and the lowest bit has a significance of 2-52.
+
+Note that the absolute accuracy of floating numbers decreases as the number gets larger, because the exponent grows while the mantissa's accuracy stays the same. `Number.MIN_VALUE` is the smallest representable positive number, which is much smaller than `Number.EPSILON`.
+
+Because `EPSILON` is a static property of `Number`, you always use it as `Number.EPSILON`, rather than as a property of a number value.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/isFinite.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/isFinite.mdx
new file mode 100644
index 0000000000..20313b5766
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/isFinite.mdx
@@ -0,0 +1,24 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.isFinite()
+
+The **`Number.isFinite()`** method determines whether the passed value is a finite number — that is, it checks that a given value is a number, and the number is neither positive [`Infinity`](../../globals/Infinity.mdx), negative `Infinity`, nor [`NaN`](../../globals/NaN.mdx).
+
+## Syntax
+
+```js
+Number.isFinite(value)
+```
+
+### Parameters
+
+- `value`
+ - : The value to be tested for finiteness.
+
+### Return value
+
+The boolean value `true` if the given value is a finite number. Otherwise `false`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/isInteger.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/isInteger.mdx
new file mode 100644
index 0000000000..06783b1524
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/isInteger.mdx
@@ -0,0 +1,32 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.isInteger()
+
+The **`Number.isInteger()`** method determines whether the passed value is an integer.
+
+## Syntax
+
+```js
+Number.isInteger(value)
+```
+
+### Parameters
+
+- `value`
+ - : The value to be tested for being an integer.
+
+### Return value
+
+The boolean value `true` if the given value is an integer. Otherwise `false`.
+
+## Description
+
+If the target value is an integer, return `true`, otherwise return `false`. If the value is [`NaN`](../../globals/NaN.mdx) or [`Infinity`](../../globals/Infinity.mdx), return `false`. The method will also return `true` for floating point numbers that can be represented as integer. It will always return `false` if the value is not a number.
+
+Note that some number literals, while looking like non-integers, actually represent integers — due to the precision limit of ECMAScript floating-point number encoding (IEEE-754). For example, `5.0000000000000001` only differs from `5` by `1e-16`, which is too small to be represented. (For reference, [`Number.EPSILON`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number/EPSILON) stores the distance between 1 and the next representable floating-point number greater than 1, and that is about `2.22e-16`.) Therefore, `5.0000000000000001` will be represented with the same encoding as `5`, thus making `Number.isInteger(5.0000000000000001)` return `true`.
+
+In a similar sense, numbers around the magnitude of [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER) will suffer from loss of precision and make `Number.isInteger` return `true` even when it's not an integer. (The actual threshold varies based on how many bits are needed to represent the decimal — for example, `Number.isInteger(4500000000000000.1)` is `true`, but `Number.isInteger(4500000000000000.5)` is `false`.)
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/isNaN.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/isNaN.mdx
new file mode 100644
index 0000000000..2244aabc9d
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/isNaN.mdx
@@ -0,0 +1,32 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.isNaN()
+
+The **`Number.isNaN()`** method determines whether the passed value is the number value [`NaN`](../../globals/NaN.mdx), and returns `false` if the input is not of the Number type. It is a more robust version of the original, global `isNaN()` function.
+
+## Syntax
+
+```js
+Number.isNaN(value)
+```
+
+### Parameters
+
+- `value`
+ - : The value to be tested for [`NaN`](../../globals/NaN.mdx).
+
+### Return value
+
+The boolean value `true` if the given value is a number with value [`NaN`](../../globals/NaN.mdx). Otherwise, `false`.
+
+## Description
+
+The function `Number.isNaN()` provides a convenient way to check for equality with `NaN`. Note that you cannot test for equality with `NaN` using either the [`==`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Equality) or [`===`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Strict_equality) operators, because unlike all other value comparisons in JavaScript, these evaluate to `false` whenever one operand is [`NaN`](../../globals/NaN.mdx), even if the other operand is also [`NaN`](../../globals/NaN.mdx).
+
+Since `x !== x` is only true for `NaN` among all possible JavaScript values, `Number.isNaN(x)` can also be replaced with a test for `x !== x`, despite the latter being less readable.
+
+As opposed to the global `isNaN()` function, the `Number.isNaN()` method doesn't force-convert the parameter to a number. This makes it safe to pass values that would normally convert to [`NaN`](../../globals/NaN.mdx) but aren't actually the same value as [`NaN`](../../globals/NaN.mdx). This also means that only values of the Number type that are also [`NaN`](../../globals/NaN.mdx) return `true`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/isSafeInteger.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/isSafeInteger.mdx
new file mode 100644
index 0000000000..afd3f5ff0f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/isSafeInteger.mdx
@@ -0,0 +1,37 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.isSafeInteger()
+
+The **`Number.isSafeInteger()`** method determines whether the provided value is a number that is a _safe integer_.
+
+## Syntax
+
+```js
+Number.isSafeInteger(testValue)
+```
+
+### Parameters
+
+- `testValue`
+ - : The value to be tested for being a safe integer.
+
+### Return value
+
+The boolean value `true` if the given value is a number that is a safe integer. Otherwise `false`.
+
+## Description
+
+The safe integers consist of all integers from -(253 - 1) to 253 - 1, inclusive (±9,007,199,254,740,991). A safe integer is an integer that:
+
+- can be exactly represented as an IEEE-754 double precision number, and
+- whose IEEE-754 representation cannot be the result of rounding any other integer to fit the IEEE-754 representation.
+
+For example, 253 - 1 is a safe integer: it can be exactly represented, and no other integer rounds to it under any IEEE-754 rounding mode. In contrast, 253 is _not_ a safe integer: it can be exactly represented in IEEE-754, but the integer 253 + 1 can't be directly represented in IEEE-754 but instead rounds to 253 under round-to-nearest and round-to-zero rounding.
+
+Handling values larger or smaller than \~9 quadrillion with full precision requires using an [arbitrary precision arithmetic library](https://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic). See [What Every Programmer Needs to Know about Floating Point Arithmetic](https://floating-point-gui.de/) for more information on floating point representations of numbers.
+
+For larger integers, consider using the `BigInt` type.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/parseFloat.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/parseFloat.mdx
new file mode 100644
index 0000000000..d0aaa18f89
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/parseFloat.mdx
@@ -0,0 +1,26 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.parseFloat()
+
+The **`Number.parseFloat()`** method parses an argument and returns a floating point number. If a number cannot be parsed from the argument, it returns [`NaN`](../../globals/NaN.mdx).
+
+## Syntax
+
+```js
+Number.parseFloat(string)
+```
+
+### Parameters
+
+- `string`
+ - : The value to parse, [coerced to a string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String#string_coercion). Leading whitespace in this argument is ignored.
+
+### Return value
+
+A floating point number parsed from the given `string`.
+
+Or [`NaN`](../../globals/NaN.mdx) when the first non-whitespace character cannot be converted to a number.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/parseInt.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/parseInt.mdx
new file mode 100644
index 0000000000..692735f789
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/parseInt.mdx
@@ -0,0 +1,37 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.parseInt()
+
+The **`Number.parseInt()`** method parses a string argument and
+returns an integer of the specified radix or base.
+
+## Syntax
+
+```js
+Number.parseInt(string)
+Number.parseInt(string, radix)
+```
+
+### Parameters
+
+- `string`
+ - : The value to parse, [coerced to a string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String#string_coercion). Leading whitespace in this argument is ignored.
+- `radix` _**optional**_
+
+ - : An integer between `2` and `36` that represents the
+ _radix_ (the base in mathematical numeral systems) of the
+ `string`.
+
+ If `radix` is undefined or `0`, it is assumed to be `10` except when the number begins with the code unit pairs `0x` or `0X`, in which case a radix of `16` is assumed.
+
+### Return value
+
+An integer parsed from the given `string`.
+
+If the `radix` is smaller than `2` or bigger than
+`36`, or the first non-whitespace character cannot be converted to a number,
+[`NaN`](../../globals/NaN.mdx) is returned.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toExponential.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toExponential.mdx
new file mode 100644
index 0000000000..f28f0480e5
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toExponential.mdx
@@ -0,0 +1,54 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.prototype.toExponential()
+
+The **`toExponential()`** method returns a string representing
+the `Number` object in exponential notation.
+
+## Syntax
+
+```js
+toExponential()
+toExponential(fractionDigits)
+```
+
+### Parameters
+
+- `fractionDigits` _**optional**_
+ - : Optional. An integer specifying the number of digits after the decimal point.
+ Defaults to as many digits as necessary to specify the number.
+
+### Return value
+
+A string representing the given `Number` object in exponential notation
+with one digit before the decimal point, rounded to
+`fractionDigits` digits after the decimal point.
+
+### Exceptions
+
+- [`RangeError`](../../../globals/RangeError/RangeError.mdx)
+ - : If `fractionDigits` is too small or too large. Values between
+ `0` and `100`, inclusive, will not cause a
+ [`RangeError`](../../../globals/RangeError/RangeError.mdx).
+- [`TypeError`](../../../globals/TypeError/TypeError.mdx)
+ - : If this method is invoked on an object that is not a `Number`.
+
+## Description
+
+If the `fractionDigits` argument is omitted, the number of digits
+after the decimal point defaults to the number of digits necessary to represent the
+value uniquely.
+
+If you use the `toExponential()` method for a numeric literal and the
+numeric literal has no exponent and no decimal point, leave whitespace(s) before the dot
+that precedes the method call to prevent the dot from being interpreted as a decimal
+point.
+
+If a number has more digits than requested by the
+`fractionDigits` parameter, the number is rounded to the nearest
+number represented by `fractionDigits` digits. See the discussion
+of rounding in the description of the [`Number.prototype.toFixed()`](../../../globals/Number/prototype/toFixed.mdx) method, which also applies to `toExponential()`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toFixed.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toFixed.mdx
new file mode 100644
index 0000000000..1cf54a210b
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toFixed.mdx
@@ -0,0 +1,51 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.prototype.toFixed()
+
+The **`toFixed()`** method formats a number using fixed-point notation.
+
+## Syntax
+
+```js
+toFixed()
+toFixed(digits)
+```
+
+### Parameters
+
+- `digits` _**optional**_
+ - : The number of digits to appear after the decimal point; should be a value between `0` and `100`, inclusive. If this argument is omitted, it is treated as `0`.
+
+### Return value
+
+A string representing the given number using fixed-point notation.
+
+### Exceptions
+
+- [`RangeError`](../../../globals/RangeError/RangeError.mdx)
+ - : If `digits` is smaller than `0`, larger than `100`, or is `NaN`.
+- [`TypeError`](../../../globals/TypeError/TypeError.mdx)
+ - : If this method is invoked on an object that is not a `Number`.
+
+## Description
+
+The `toFixed()` method returns a string representation of `numObj` that does not use exponential notation and has exactly `digits` digits after the decimal place. The number is rounded if necessary, and the fractional part is padded with zeros if necessary so that it has the specified length.
+
+If the absolute value of `numObj` is greater or equal to 1021, this method uses the same algorithm as [`Number.prototype.toString()`](../../../globals/Number/prototype/toString.mdx) and returns a string in exponential notation. `toFixed()` returns `"Infinity"`, `"NaN"`, or `"-Infinity"` if the value of `numObj` is non-finite.
+
+The output of `toFixed()` may be more precise than [`toString()`](../../../globals/Number/prototype/toString.mdx) for some values, because `toString()` only prints enough significant digits to distinguish the number from adjacent number values. For example:
+
+```js
+(1000000000000000128).toString(); // '1000000000000000100'
+(1000000000000000128).toFixed(0); // '1000000000000000128'
+```
+
+However, choosing a `digits` precision that's too high can return unexpected results, because decimal fractional numbers cannot be represented precisely in floating point. For example:
+
+```js
+0.3.toFixed(50); // '0.29999999999999998889776975374843459576368331909180'
+```
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toLocaleString.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toLocaleString.mdx
new file mode 100644
index 0000000000..af6320aee2
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toLocaleString.mdx
@@ -0,0 +1,49 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.prototype.toLocaleString()
+
+The **`toLocaleString()`** method returns a string with a language-sensitive representation of this number. In implementations with [`Intl.NumberFormat` API](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat) support, this method simply calls `Intl.NumberFormat`.
+
+## Syntax
+
+```js
+toLocaleString()
+toLocaleString(locales)
+toLocaleString(locales, options)
+```
+
+### Parameters
+
+The `locales` and `options` parameters customize the behavior of the function and let applications specify the language whose formatting conventions should be used.
+
+In implementations that support the [`Intl.NumberFormat` API](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat), these parameters correspond exactly to the [`Intl.NumberFormat()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat) constructor's parameters. Implementations without `Intl.NumberFormat` support are asked to ignore both parameters, making the locale used and the form of the string returned entirely implementation-dependent.
+
+- `locales` _**optional**_
+
+ - : A string with a BCP 47 language tag, or an array of such strings. Corresponds to the [`locales`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#locales) parameter of the `Intl.NumberFormat()` constructor.
+
+ In implementations without `Intl.NumberFormat` support, this parameter is ignored and the host's locale is usually used.
+
+- `options` _**optional**_
+
+ - : An object adjusting the output format. Corresponds to the [`options`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options) parameter of the `Intl.NumberFormat()` constructor.
+
+ In implementations without `Intl.NumberFormat` support, this parameter is ignored.
+
+See the [`Intl.NumberFormat()` constructor](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat) for details on these parameters and how to use them.
+
+### Return value
+
+A string with a language-sensitive representation of the given number.
+
+In implementations with `Intl.NumberFormat`, this is equivalent to `new Intl.NumberFormat(locales, options).format(number)`.
+
+## Performance
+
+When formatting large numbers of numbers, it is better to create a
+`Intl.NumberFormat` object and use the function provided by its
+`format` property.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toPrecision.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toPrecision.mdx
new file mode 100644
index 0000000000..5d606c4137
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toPrecision.mdx
@@ -0,0 +1,41 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.prototype.toPrecision()
+
+The **`toPrecision()`** method returns a string representing
+the `Number` object to the specified precision.
+
+## Syntax
+
+```js
+toPrecision()
+toPrecision(precision)
+```
+
+### Parameters
+
+- `precision` _**optional**_
+ - : An integer specifying the number of significant digits.
+
+### Return value
+
+A string representing a `Number` object in fixed-point or exponential
+notation rounded to `precision` significant digits. See the discussion of
+rounding in the description of the [`Number.prototype.toFixed()`](../../../globals/Number/prototype/toFixed.mdx) method,
+which also applies to `toPrecision()`.
+
+If the `precision` argument is omitted, behaves as
+[`Number.prototype.toString()`](../../../globals/Number/prototype/toString.mdx). If the `precision` argument is a
+non-integer value, it is rounded to the nearest integer.
+
+### Exceptions
+
+- `RangeError`
+ - : If `precision` is not between `1` and `100`
+ (inclusive), a [`RangeError`](../../../globals/RangeError/RangeError.mdx) is thrown. Implementations are allowed to
+ support larger and smaller values as well. ECMA-262 only requires a precision of up to
+ 21 significant digits.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toString.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toString.mdx
new file mode 100644
index 0000000000..1726687b9f
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/prototype/toString.mdx
@@ -0,0 +1,58 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.prototype.toString()
+
+The **`toString()`** method returns a string representing the specified number value.
+
+## Syntax
+
+```js
+toString()
+toString(radix)
+```
+
+### Parameters
+
+- `radix` _**optional**_
+ - : An integer in the range `2` through `36` specifying the base to use for representing the number value. Defaults to 10.
+
+### Return value
+
+A string representing the specified number value.
+
+### Exceptions
+
+- [`RangeError`](../../../globals/RangeError/RangeError.mdx)
+ - : Thrown if `radix` is less than 2 or greater than 36.
+
+## Description
+
+The `Number` object overrides the `toString` method of `Object`; it does not inherit
+[`Object.prototype.toString()`](../../../globals/Object/prototype/toString.mdx). For `Number` values, the `toString` method returns a string representation of the value in the specified radix.
+
+For radixes above 10, the letters of the alphabet indicate digits greater than 9. For example, for hexadecimal numbers (base 16) `a` through `f` are used.
+
+If the specified number value is negative, the sign is preserved. This is the case even if the radix is 2; the string returned is the positive binary representation of the number value preceded by a `-` sign, **not** the two's complement of the number value.
+
+Both `0` and `-0` have `"0"` as their string representation. [`Infinity`](../../../globals/Infinity.mdx) returns `"Infinity"` and [`NaN`](../../../globals/NaN.mdx) returns `"NaN"`.
+
+If the number is not a whole number, the decimal point `.` is used to separate the decimal places. [Scientific notation](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Lexical_grammar#exponential) is used if the radix is 10 and the number's magnitude (ignoring sign) is greater than or equal to 1021 or less than 10-6. In this case, the returned string always explicitly specifies the sign of the exponent.
+
+```js
+console.log((10 ** 21.5).toString()); // "3.1622776601683794e+21"
+console.log((10 ** 21.5).toString(8)); // "526665530627250154000000"
+```
+
+The `toString()` method requires its `this` value to be a `Number` primitive or wrapper object. It throws a [`TypeError`](../../../globals/TypeError/TypeError.mdx) for other `this` values without attempting to coerce them to number values.
+
+Because `Number` doesn't have a [`[Symbol.toPrimitive]()`](../../../globals/Symbol/toPrimitive.mdx) method, JavaScript calls the `toString()` method automatically when a `Number` _object_ is used in a context expecting a string, such as in a [template literal](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Template_literals). However, Number _primitive_ values do not consult the `toString()` method to be [coerced to strings](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String#string_coercion) — rather, they are directly converted using the same algorithm as the initial `toString()` implementation.
+
+```js
+Number.prototype.toString = () => "Overridden";
+console.log(`${1}`); // "1"
+console.log(`${new Number(1)}`); // "Overridden"
+```
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Number/prototype/valueOf.mdx b/documentation/versioned_docs/version-3.21.3/globals/Number/prototype/valueOf.mdx
new file mode 100644
index 0000000000..3a1eeb6e4b
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Number/prototype/valueOf.mdx
@@ -0,0 +1,24 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Number.prototype.valueOf()
+
+The **`valueOf()`** method returns the wrapped primitive value
+of a `Number` object.
+
+## Syntax
+
+```js
+valueOf()
+```
+
+### Return value
+
+A number representing the primitive value of the specified `Number` object.
+
+## Description
+
+This method is usually called internally by JavaScript and not explicitly in web code.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/Object.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/Object.mdx
new file mode 100644
index 0000000000..cbff96e7eb
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/Object.mdx
@@ -0,0 +1,27 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object()
+
+The **`Object` constructor** turns the input into an object. Its behavior depends on the input's type.
+
+- If the value is [`null`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/null) or [`undefined`](../../globals/undefined.mdx), it creates and returns an empty object.
+- Otherwise, it returns an object of a Type that corresponds to the given value.
+- If the value is an object already, it returns the value.
+
+## Syntax
+
+```js
+new Object(value)
+Object(value)
+```
+
+> **Note:** `Object()` can be called with or without `new`. Both create a new object.
+
+### Parameters
+
+- `value`
+ - : Any value.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/assign.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/assign.mdx
new file mode 100644
index 0000000000..ce32bec9fd
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/assign.mdx
@@ -0,0 +1,57 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.assign()
+
+The **`Object.assign()`** method
+copies all [enumerable](../../globals/Object/prototype/propertyIsEnumerable.mdx)
+[own properties](../../globals/Object/hasOwn.mdx) from one or more
+_source objects_ to a _target object_. It returns the modified target
+object.
+
+## Syntax
+
+```js
+Object.assign(target, ...sources)
+```
+
+### Parameters
+
+- `target`
+ - : The target object — what to apply the sources' properties to, which is returned
+ after it is modified.
+- `sources`
+ - : The source object(s) — objects containing the properties you want to apply.
+
+### Return value
+
+The target object.
+
+## Description
+
+Properties in the target object are overwritten by properties in the sources if they
+have the same "key". Later sources' properties overwrite earlier ones.
+
+The `Object.assign()` method only copies _enumerable_ and
+_own_ properties from a source object to a target object. It uses
+`[[Get]]` on the source and `[[Set]]` on the target, so it will
+invoke [getters](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Functions/get) and [setters](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Functions/set). Therefore it
+_assigns_ properties, versus copying or defining new properties. This may make it
+unsuitable for merging new properties into a prototype if the merge sources contain
+getters.
+
+For copying property definitions (including their enumerability) into prototypes, use
+[`Object.getOwnPropertyDescriptor()`](../../globals/Object/getOwnPropertyDescriptor.mdx) and
+[`Object.defineProperty()`](../../globals/Object/defineProperty.mdx) instead.
+
+Both `String` and `Symbol` properties are copied.
+
+In case of an error, for example if a property is non-writable, a
+[`TypeError`](../../globals/TypeError/TypeError.mdx) is raised, and the `target` object is
+changed if any properties are added before the error is raised.
+
+> **Note:** `Object.assign()` does not throw on
+> [`null`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/null) or [`undefined`](../../globals/undefined.mdx) sources.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/create.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/create.mdx
new file mode 100644
index 0000000000..80f632eed0
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/create.mdx
@@ -0,0 +1,32 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.create()
+
+The **`Object.create()`** method creates a new object, using an existing object as the prototype of the newly created object.
+
+## Syntax
+
+```js
+Object.create(proto)
+Object.create(proto, propertiesObject)
+```
+
+### Parameters
+
+- `proto`
+ - : The object which should be the prototype of the newly-created object.
+- `propertiesObject` _**optional**_
+ - : If specified and not [`undefined`](../../globals/undefined.mdx), an object whose [enumerable own properties](https://developer.mozilla.org/docs/Web/JavaScript/Enumerability_and_ownership_of_properties) specify property descriptors to be added to the newly-created object, with the corresponding property names. These properties correspond to the second argument of [`Object.defineProperties()`](../../globals/Object/defineProperties.mdx).
+
+### Return value
+
+A new object with the specified prototype object and properties.
+
+### Exceptions
+
+- [`TypeError`](../../globals/TypeError/TypeError.mdx)
+ - : Thrown if `proto` is neither [`null`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/null) nor an `Object`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/defineProperties.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/defineProperties.mdx
new file mode 100644
index 0000000000..e3b8525201
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/defineProperties.mdx
@@ -0,0 +1,71 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.defineProperties()
+
+The **`Object.defineProperties()`** method defines new or
+modifies existing properties directly on an object, returning the object.
+
+## Syntax
+
+```js
+Object.defineProperties(obj, props)
+```
+
+### Parameters
+
+- `obj`
+ - : The object on which to define or modify properties.
+- `props`
+
+ - : An object whose keys represent the names of properties to be defined or modified and
+ whose values are objects describing those properties. Each value in `props`
+ must be either a data descriptor or an accessor descriptor; it cannot be both (see
+ [`Object.defineProperty()`](../../globals/Object/defineProperty.mdx) for more details).
+
+ Data descriptors and accessor descriptors may optionally contain the following keys:
+
+ - `configurable`
+ - : `true` if and only if the type of this property descriptor may be
+ changed and if the property may be deleted from the corresponding object.
+ **Defaults to `false`.**
+ - `enumerable`
+ - : `true` if and only if this property shows up during enumeration of
+ the properties on the corresponding object.
+ **Defaults to `false`.**
+
+ A data descriptor also has the following optional keys:
+
+ - `value`
+ - : The value associated with the property. Can be any valid JavaScript value
+ (number, object, function, etc.).
+ **Defaults to [`undefined`](../../globals/undefined.mdx).**
+ - `writable`
+ - : `true` if and only if the value associated with the property may be
+ changed with an assignment operator.
+ **Defaults to `false`.**
+
+ An accessor descriptor also has the following optional keys:
+
+ - `get`
+ - : A function which serves as a getter for the property, or [`undefined`](../../globals/undefined.mdx)
+ if there is no getter. The function's return value will be used as the value of
+ the property.
+ **Defaults to [`undefined`](../../globals/undefined.mdx).**
+ - `set`
+ - : A function which serves as a setter for the property, or [`undefined`](../../globals/undefined.mdx)
+ if there is no setter. The function will receive as its only argument the new
+ value being assigned to the property.
+ **Defaults to [`undefined`](../../globals/undefined.mdx).**
+
+ If a descriptor has neither of `value`, `writable`,
+ `get` and `set` keys, it is treated as a data descriptor. If a
+ descriptor has both `value` or `writable` and `get`
+ or `set` keys, an exception is thrown.
+
+### Return value
+
+The object that was passed to the function.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/defineProperty.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/defineProperty.mdx
new file mode 100644
index 0000000000..a1f6c0fbb9
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/defineProperty.mdx
@@ -0,0 +1,149 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.defineProperty()
+
+The static method **`Object.defineProperty()`** defines a new
+property directly on an object, or modifies an existing property on an object, and
+returns the object.
+
+## Syntax
+
+```js
+Object.defineProperty(obj, prop, descriptor)
+```
+
+### Parameters
+
+- `obj`
+ - : The object on which to define the property.
+- `prop`
+ - : The name or `Symbol` of the property to be defined or modified.
+- `descriptor`
+ - : The descriptor for the property being defined or modified.
+
+### Return value
+
+The object that was passed to the function.
+
+## Description
+
+This method allows a precise addition to or modification of a property on an object.
+Normal property addition through assignment creates properties which show up during
+property enumeration (`for...in` loop or
+[`Object.keys`](../../globals/Object/keys.mdx) method), whose values may be changed, and which may be
+deleted. This method allows these extra details
+to be changed from their defaults. By default, properties added using
+`Object.defineProperty()` are not writable, not enumerable, and not configurable.
+
+Property descriptors present in objects come in two main flavors: data descriptors and
+accessor descriptors. A **data descriptor** is a property that has a
+value, which may or may not be writable. An **accessor descriptor** is a
+property described by a getter-setter pair of functions. A descriptor must be one of
+these two flavors; it cannot be both.
+
+Both data and accessor descriptors are objects. They share the following optional keys
+(please note: the **defaults** mentioned here are in the case of defining
+properties using `Object.defineProperty()`):
+
+- `configurable`
+
+ - : when this is set to `false`,
+
+ - the type of this property cannot be changed between data property and accessor property, and
+ - the property may not be deleted, and
+ - other attributes of its descriptor cannot be changed (however, if it's a data descriptor with `writable: true`, the `value` can be changed, and `writable` can be changed to `false`).
+
+ **Defaults to `false`.**
+
+- `enumerable`
+ - : `true` if and only if this property shows up during enumeration of the
+ properties on the corresponding object.
+ **Defaults to `false`.**
+
+A **data descriptor** also has the following optional keys:
+
+- `value`
+ - : The value associated with the property. Can be any valid JavaScript value (number,
+ object, function, etc.).
+ **Defaults to [`undefined`](../../globals/undefined.mdx).**
+- `writable`
+ - : `true` if the value associated with the property may be changed with an
+ assignment operator.
+ **Defaults to `false`.**
+
+An **accessor descriptor** also has the following optional keys:
+
+- `get`
+ - : A function which serves as a getter for the property, or [`undefined`](../../globals/undefined.mdx) if
+ there is no getter. When the property is accessed, this function is called without
+ arguments and with `this` set to the object through which the property is
+ accessed (this may not be the object on which the property is defined due to
+ inheritance). The return value will be used as the value of the property.
+ **Defaults to [`undefined`](../../globals/undefined.mdx).**
+- `set`
+ - : A function which serves as a setter for the property, or [`undefined`](../../globals/undefined.mdx) if
+ there is no setter. When the property is assigned, this function is called with one
+ argument (the value being assigned to the property) and with `this` set to
+ the object through which the property is assigned.
+ **Defaults to [`undefined`](../../globals/undefined.mdx).**
+
+If a descriptor has neither of `value`, `writable`,
+`get` and `set` keys, it is treated as a data descriptor. If a
+descriptor has both \[`value` or `writable`] and \[`get` or `set`] keys, an exception is thrown.
+
+Bear in mind that these attributes are not necessarily the descriptor's own properties.
+Inherited properties will be considered as well. In order to ensure these defaults are
+preserved, you might freeze existing objects in the descriptor object's prototype chain upfront, specify all
+options explicitly, or point to [`null`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/null) with [`Object.create(null)`](../../globals/Object/create.mdx).
+
+```js
+const obj = {};
+// 1. Using a null prototype: no inherited properties
+const descriptor = Object.create(null);
+descriptor.value = 'static';
+
+// not enumerable, not configurable, not writable as defaults
+Object.defineProperty(obj, 'key', descriptor);
+
+// 2. Being explicit by using a throw-away object literal with all attributes present
+Object.defineProperty(obj, 'key2', {
+ enumerable: false,
+ configurable: false,
+ writable: false,
+ value: 'static'
+});
+
+// 3. Recycling same object
+function withValue(value) {
+ const d = withValue.d || (
+ withValue.d = {
+ enumerable: false,
+ writable: false,
+ configurable: false,
+ value,
+ }
+ );
+
+ // avoiding duplicate operation for assigning value
+ if (d.value !== value) d.value = value;
+
+ return d;
+}
+// and
+Object.defineProperty(obj, 'key', withValue('static'));
+
+// if freeze is available, prevents adding or
+// removing the object prototype properties
+// (value, get, set, enumerable, writable, configurable)
+(Object.freeze || Object)(Object.prototype);
+```
+
+When the property already exists, `Object.defineProperty()` attempts to modify the property according to the values in the descriptor and the property's current configuration.
+
+If the old descriptor had its `configurable` attribute set to `false`, the property is said to be _non-configurable_. It is not possible to change any attribute of a non-configurable accessor property, and it is not possible to switch between data and accessor property types. For data properties with `writable: true`, it is possible to modify the value and change the `writable` attribute from `true` to `false`. A [`TypeError`](../../globals/TypeError/TypeError.mdx) is thrown when attempts are made to change non-configurable property attributes (except `value` and `writable`, if permitted), except when defining a value same as the original value on a data property.
+
+When the current property is configurable, defining an attribute to `undefined` effectively deletes it. For example, if `o.k` is an accessor property, `Object.defineProperty(o, "k", { set: undefined })` will remove the setter, making `k` only have a getter and become readonly. If an attribute is absent from the new descriptor, the old descriptor attribute's value is kept (it won't be implicitly re-defined to `undefined`). It is possible to toggle between data and accessor property by giving a descriptor of a different "flavor". For example, if the new descriptor is a data descriptor (with `value` or `writable`), the original descriptor's `get` and `set` attributes will both be dropped.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/entries.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/entries.mdx
new file mode 100644
index 0000000000..594508e6ab
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/entries.mdx
@@ -0,0 +1,30 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.entries()
+
+The **`Object.entries()`** method returns an array of a given object's own enumerable string-keyed property key-value pairs.
+
+## Syntax
+
+```js
+Object.entries(obj)
+```
+
+### Parameters
+
+- `obj`
+ - : An object.
+
+### Return value
+
+An array of the given object's own enumerable string-keyed property key-value pairs. Each key-value pair is an array with two elements: the first element is the property key (which is always a string), and the second element is the property value.
+
+## Description
+
+`Object.entries()` returns an array whose elements are arrays corresponding to the enumerable string-keyed property key-value pairs found directly upon `object`. This is the same as iterating with a `for...in` loop, except that a `for...in` loop enumerates properties in the prototype chain as well. The order of the array returned by `Object.entries()` is the same as that provided by a `for...in` loop.
+
+If you only need the property keys, use [`Object.keys()`](../../globals/Object/keys.mdx) instead. If you only need the property values, use [`Object.values()`](../../globals/Object/values.mdx) instead.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/freeze.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/freeze.mdx
new file mode 100644
index 0000000000..bbaaa59cce
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/freeze.mdx
@@ -0,0 +1,66 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.freeze()
+
+The **`Object.freeze()`** method _freezes_ an object. Freezing an object [prevents extensions](../../globals/Object/preventExtensions.mdx) and makes existing properties non-writable and non-configurable. A frozen object can no longer be changed: new properties cannot be added, existing properties cannot be removed, their enumerability, configurability, writability, or value cannot be changed, and the object's prototype cannot be re-assigned. `freeze()` returns the same object that was passed in.
+
+Freezing an object is the highest integrity level that JavaScript provides.
+
+## Syntax
+
+```js
+Object.freeze(obj)
+```
+
+### Parameters
+
+- `obj`
+ - : The object to freeze.
+
+### Return value
+
+The object that was passed to the function.
+
+## Description
+
+Freezing an object is equivalent to [preventing extensions](../../globals/Object/preventExtensions.mdx) and then changing all existing [properties' descriptors'](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty#description) `configurable` to `false` — and for data properties, `writable` to `false` as well. Nothing can be added to or removed from the properties set of a frozen object. Any attempt to do so will fail, either silently or by throwing a [`TypeError`](../../globals/TypeError/TypeError.mdx) exception (most commonly, but not exclusively, when in "strict mode").
+
+For data properties of a frozen object, their values cannot be changed since the writable and
+configurable attributes are set to false. Accessor properties (getters and setters) work the same — the property value returned by the getter may still change, and the setter can still be called without throwing errors when setting the property. Note that values
+that are objects can still be modified, unless they are also frozen. As an object, an
+array can be frozen; after doing so, its elements cannot be altered and no elements can
+be added to or removed from the array.
+
+`freeze()` returns the same object that was passed into the function. It
+_does not_ create a frozen copy.
+
+A `TypedArray` or a [`DataView`](../../globals/DataView/DataView.mdx) with elements will cause a [`TypeError`](../../globals/TypeError/TypeError.mdx),
+as they are views over memory and will definitely cause other possible issues:
+
+```js
+Object.freeze(new Uint8Array(0)) // No elements
+// Uint8Array []
+
+Object.freeze(new Uint8Array(1)) // Has elements
+// TypeError: Cannot freeze array buffer views with elements
+
+Object.freeze(new DataView(new ArrayBuffer(32))) // No elements
+// DataView {}
+
+Object.freeze(new Float64Array(new ArrayBuffer(64), 63, 0)) // No elements
+// Float64Array []
+
+Object.freeze(new Float64Array(new ArrayBuffer(64), 32, 2)) // Has elements
+// TypeError: Cannot freeze array buffer views with elements
+```
+
+Note that as the standard three properties (`buf.byteLength`,
+`buf.byteOffset` and `buf.buffer`) are read-only (as are those of
+an `ArrayBuffer`, there is no reason for
+attempting to freeze these properties.
+
+Unlike [`Object.seal()`](../../globals/Object/seal.mdx), existing properties in objects frozen with `Object.freeze()` are made immutable and data properties cannot be re-assigned.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/fromEntries.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/fromEntries.mdx
new file mode 100644
index 0000000000..ee66f8f527
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/fromEntries.mdx
@@ -0,0 +1,40 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.fromEntries()
+
+The **`Object.fromEntries()`** method transforms a list of key-value pairs into an object.
+
+## Syntax
+
+```js
+Object.fromEntries(iterable)
+```
+
+### Parameters
+
+- `iterable`
+
+ - : An [iterable](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Iteration_protocols#the_iterable_protocol), such as an `Array` or [Map](../../globals/Map/Map.mdx), containing a list of objects. Each object should have two properties:
+
+ - `0`
+ - : A string or `Symbol` representing the property key.
+ - `1`
+ - : The property value.
+
+ Typically, this object is implemented as a two-element array, with the first element being the property key and the second element being the property value.
+
+### Return value
+
+A new object whose properties are given by the entries of the iterable.
+
+## Description
+
+The `Object.fromEntries()` method takes a list of key-value pairs and returns a new object whose properties are given by those entries. The `iterable` argument is expected to be an object that implements an `@@iterator` method. The method returns an iterator object that produces two-element array-like objects. The first element is a value that will be used as a property key, and the second element is the value to associate with that property key.
+
+`Object.fromEntries()` performs the reverse of [`Object.entries()`](../../globals/Object/entries.mdx), except that `Object.entries()` only returns string-keyed properties, while `Object.fromEntries()` can also create symbol-keyed properties.
+
+> **Note:** Unlike [`Array.from()`](../../globals/Array/from.mdx), `Object.fromEntries()` does not use the value of `this`, so calling it on another constructor does not create objects of that type.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/getOwnPropertyDescriptor.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/getOwnPropertyDescriptor.mdx
new file mode 100644
index 0000000000..d5871721cf
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/getOwnPropertyDescriptor.mdx
@@ -0,0 +1,60 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.getOwnPropertyDescriptor()
+
+The **`Object.getOwnPropertyDescriptor()`** method returns an
+object describing the configuration of a specific property on a given object (that is,
+one directly present on an object and not in the object's prototype chain). The object
+returned is mutable but mutating it has no effect on the original property's
+configuration.
+
+## Syntax
+
+```js
+Object.getOwnPropertyDescriptor(obj, prop)
+```
+
+### Parameters
+
+- `obj`
+ - : The object in which to look for the property.
+- `prop`
+ - : The name or `Symbol` of the property whose description is to be
+ retrieved.
+
+### Return value
+
+A property descriptor of the given property if it exists on the object,
+[`undefined`](../../globals/undefined.mdx) otherwise.
+
+## Description
+
+This method permits examination of the precise description of a property. A
+_property_ in JavaScript consists of either a string-valued name or a
+`Symbol` and a property descriptor. Further information about property
+descriptor types and their attributes can be found in
+[`Object.defineProperty()`](../../globals/Object/defineProperty.mdx).
+
+A _property descriptor_ is a record with some of the following attributes:
+
+- `value`
+ - : The value associated with the property (data descriptors only).
+- `writable`
+ - : `true` if and only if the value associated with the property may be
+ changed (data descriptors only).
+- `get`
+ - : A function which serves as a getter for the property, or [`undefined`](../../globals/undefined.mdx) if
+ there is no getter (accessor descriptors only).
+- `set`
+ - : A function which serves as a setter for the property, or [`undefined`](../../globals/undefined.mdx) if
+ there is no setter (accessor descriptors only).
+- `configurable`
+ - : `true` if and only if the type of this property descriptor may be changed
+ and if the property may be deleted from the corresponding object.
+- `enumerable`
+ - : `true` if and only if this property shows up during enumeration of the
+ properties on the corresponding object.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/getOwnPropertyDescriptors.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/getOwnPropertyDescriptors.mdx
new file mode 100644
index 0000000000..cfe9c61c23
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/getOwnPropertyDescriptors.mdx
@@ -0,0 +1,54 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.getOwnPropertyDescriptors()
+
+The **`Object.getOwnPropertyDescriptors()`** method returns all
+own property descriptors of a given object.
+
+## Syntax
+
+```js
+Object.getOwnPropertyDescriptors(obj)
+```
+
+### Parameters
+
+- `obj`
+ - : The object for which to get all own property descriptors.
+
+### Return value
+
+An object containing all own property descriptors of an object. Might be an empty
+object, if there are no properties.
+
+## Description
+
+This method permits examination of the precise description of all own properties of an
+object. A _property_ in JavaScript consists of either a string-valued name or a
+`Symbol` and a property descriptor. Further information about property
+descriptor types and their attributes can be found in
+[`Object.defineProperty()`](../../globals/Object/defineProperty.mdx).
+
+A _property descriptor_ is a record with some of the following attributes:
+
+- `value`
+ - : The value associated with the property (data descriptors only).
+- `writable`
+ - : `true` if and only if the value associated with the property may be
+ changed (data descriptors only).
+- `get`
+ - : A function which serves as a getter for the property, or [`undefined`](../../globals/undefined.mdx) if
+ there is no getter (accessor descriptors only).
+- `set`
+ - : A function which serves as a setter for the property, or [`undefined`](../../globals/undefined.mdx) if
+ there is no setter (accessor descriptors only).
+- `configurable`
+ - : `true` if and only if the type of this property descriptor may be changed
+ and if the property may be deleted from the corresponding object.
+- `enumerable`
+ - : `true` if and only if this property shows up during enumeration of the
+ properties on the corresponding object.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/getOwnPropertyNames.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/getOwnPropertyNames.mdx
new file mode 100644
index 0000000000..b0995265ae
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/getOwnPropertyNames.mdx
@@ -0,0 +1,28 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.getOwnPropertyNames()
+
+The **`Object.getOwnPropertyNames()`** method returns an array of all properties (including non-enumerable properties except for those which use Symbol) found directly in a given object.
+
+## Syntax
+
+```js
+Object.getOwnPropertyNames(obj)
+```
+
+### Parameters
+
+- `obj`
+ - : The object whose enumerable and non-enumerable properties are to be returned.
+
+### Return value
+
+An array of strings that corresponds to the properties found directly in the given object.
+
+## Description
+
+`Object.getOwnPropertyNames()` returns an array whose elements are strings corresponding to the enumerable and non-enumerable properties found directly in a given object `obj`. The ordering of the enumerable properties in the array is consistent with the ordering exposed by a `for...in` loop (or by [`Object.keys()`](../../globals/Object/keys.mdx)) over the properties of the object. The non-negative integer keys of the object (both enumerable and non-enumerable) are added in ascending order to the array first, followed by the string keys in the order of insertion.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/getOwnPropertySymbols.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/getOwnPropertySymbols.mdx
new file mode 100644
index 0000000000..386c0e7773
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/getOwnPropertySymbols.mdx
@@ -0,0 +1,30 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.getOwnPropertySymbols()
+
+The **`Object.getOwnPropertySymbols()`** method returns an array of all symbol properties found directly upon a given object.
+
+## Syntax
+
+```js
+Object.getOwnPropertySymbols(obj)
+```
+
+### Parameters
+
+- `obj`
+ - : The object whose symbol properties are to be returned.
+
+### Return value
+
+An array of all symbol properties found directly upon the given object.
+
+## Description
+
+Similar to [`Object.getOwnPropertyNames()`](../../globals/Object/getOwnPropertyNames.mdx), you can get all symbol properties of a given object as an array of symbols. Note that [`Object.getOwnPropertyNames()`](../../globals/Object/getOwnPropertyNames.mdx) itself does not contain the symbol properties of an object and only the string properties.
+
+As all objects have no own symbol properties initially, `Object.getOwnPropertySymbols()` returns an empty array unless you have set symbol properties on your object.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/getPrototypeOf.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/getPrototypeOf.mdx
new file mode 100644
index 0000000000..81fc912bbe
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/getPrototypeOf.mdx
@@ -0,0 +1,26 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.getPrototypeOf()
+
+The **`Object.getPrototypeOf()`** method returns the prototype
+(i.e. the value of the internal `[[Prototype]]` property) of the specified
+object.
+
+## Syntax
+
+```js
+Object.getPrototypeOf(obj)
+```
+
+### Parameters
+
+- `obj`
+ - : The object whose prototype is to be returned.
+
+### Return value
+
+The prototype of the given object, which may be `null`.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/hasOwn.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/hasOwn.mdx
new file mode 100644
index 0000000000..5444736c40
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/hasOwn.mdx
@@ -0,0 +1,46 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.hasOwn()
+
+The **`Object.hasOwn()`** static method returns `true` if the specified object has the indicated property as its _own_ property.
+If the property is inherited, or does not exist, the method returns `false`.
+
+> **Note:** `Object.hasOwn()` is intended as a replacement for [`Object.prototype.hasOwnProperty()`](../../globals/Object/prototype/hasOwnProperty.mdx).
+
+
+
+## Syntax
+
+```js
+hasOwn(instance, prop)
+```
+
+### Parameters
+
+- `instance`
+ - : The JavaScript object instance to test.
+- `prop`
+ - : The `String` name or [Symbol](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Symbol) of the property to test.
+
+### Return value
+
+`true` if the specified object has directly defined the specified property.
+Otherwise `false`
+
+## Description
+
+The **`Object.hasOwn()`** method returns `true` if the specified property is a
+direct property of the object — even if the property value is `null` or `undefined`.
+The method returns `false` if the property is inherited, or has not been declared at all.
+Unlike the `in` operator, this
+method does not check for the specified property in the object's prototype chain.
+
+It is recommended over [`Object.prototype.hasOwnProperty()`](../../globals/Object/prototype/hasOwnProperty.mdx) because
+it works for objects created using `Object.create(null)` and with objects that
+have overridden the inherited `hasOwnProperty()` method. While it is possible to
+workaround these problems by calling `Object.prototype.hasOwnProperty()` on an
+external object, `Object.hasOwn()` is more intuitive.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/is.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/is.mdx
new file mode 100644
index 0000000000..751e793ba4
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/is.mdx
@@ -0,0 +1,48 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.is()
+
+The **`Object.is()`** method determines whether two values are [the same value](https://developer.mozilla.org/docs/Web/JavaScript/Equality_comparisons_and_sameness#same-value_equality_using_object.is).
+
+## Syntax
+
+```js
+Object.is(value1, value2)
+```
+
+### Parameters
+
+- `value1`
+ - : The first value to compare.
+- `value2`
+ - : The second value to compare.
+
+### Return value
+
+A boolean indicating whether or not the two arguments are the same value.
+
+## Description
+
+`Object.is()` determines whether two values are [the same value](https://developer.mozilla.org/docs/Web/JavaScript/Equality_comparisons_and_sameness#same-value_equality_using_object.is). Two values are the same if one of the following holds:
+
+- both [`undefined`](../../globals/undefined.mdx)
+- both `null`
+- both `true` or both `false`
+- both strings of the same length with the same characters in the same order
+- both the same object (meaning both values reference the same object in memory)
+- both `BigInts` with the same numeric value
+- both `Symbols` that reference the same symbol value
+- both numbers and
+
+ - both `+0`
+ - both `-0`
+ - both [`NaN`](../../globals/NaN.mdx)
+ - or both non-zero, not [`NaN`](../../globals/NaN.mdx), and have the same value
+
+`Object.is()` is not equivalent to the [`==`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Equality) operator. The `==` operator applies various coercions to both sides (if they are not the same type) before testing for equality (resulting in such behavior as `"" == false` being `true`), but `Object.is()` doesn't coerce either value.
+
+`Object.is()` is also _not_ equivalent to the [`===`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Strict_equality) operator. The only difference between `Object.is()` and `===` is in their treatment of signed zeros and `NaN` values. The `===` operator (and the `==` operator) treats the number values `-0` and `+0` as equal, but treats [`NaN`](../../globals/NaN.mdx) as not equal to each other.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/isExtensible.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/isExtensible.mdx
new file mode 100644
index 0000000000..685026d65c
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/isExtensible.mdx
@@ -0,0 +1,29 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.isExtensible()
+
+The **`Object.isExtensible()`** method determines if an object
+is extensible (whether it can have new properties added to it).
+
+## Syntax
+
+```js
+Object.isExtensible(obj)
+```
+
+### Parameters
+
+- `obj`
+ - : The object which should be checked.
+
+### Return value
+
+A `Boolean` indicating whether or not the given object is extensible.
+
+## Description
+
+Objects are extensible by default: they can have new properties added to them, and their `[[Prototype]]` can be re-assigned. An object can be marked as non-extensible using one of [`Object.preventExtensions()`](../../globals/Object/preventExtensions.mdx), [`Object.seal()`](../../globals/Object/seal.mdx), [`Object.freeze()`](../../globals/Object/freeze.mdx), or [`Reflect.preventExtensions()`](../../globals/Reflect/preventExtensions.mdx).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/isFrozen.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/isFrozen.mdx
new file mode 100644
index 0000000000..52e1d9eecf
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/isFrozen.mdx
@@ -0,0 +1,31 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.isFrozen()
+
+The **`Object.isFrozen()`** determines if an object is
+[frozen](../../globals/Object/freeze.mdx).
+
+## Syntax
+
+```js
+Object.isFrozen(obj)
+```
+
+### Parameters
+
+- `obj`
+ - : The object which should be checked.
+
+### Return value
+
+A `Boolean` indicating whether or not the given object is frozen.
+
+## Description
+
+An object is frozen if and only if it is not [extensible](../../globals/Object/isExtensible.mdx), all its properties are non-configurable, and all its data
+properties (that is, properties which are not accessor properties with getter or setter
+components) are non-writable.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/isSealed.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/isSealed.mdx
new file mode 100644
index 0000000000..f7996f6d0a
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/isSealed.mdx
@@ -0,0 +1,32 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.isSealed()
+
+The **`Object.isSealed()`** method determines if an object is
+sealed.
+
+## Syntax
+
+```js
+Object.isSealed(obj)
+```
+
+### Parameters
+
+- `obj`
+ - : The object which should be checked.
+
+### Return value
+
+A `Boolean` indicating whether or not the given object is sealed.
+
+## Description
+
+Returns `true` if the object is sealed, otherwise `false`. An
+object is sealed if it is not [extensible](../../globals/Object/isExtensible.mdx) and
+if all its properties are non-configurable and therefore not removable (but not
+necessarily non-writable).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/keys.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/keys.mdx
new file mode 100644
index 0000000000..266389bab1
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/keys.mdx
@@ -0,0 +1,30 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.keys()
+
+The **`Object.keys()`** method returns an array of a given object's own enumerable string-keyed property names.
+
+## Syntax
+
+```js
+Object.keys(obj)
+```
+
+### Parameters
+
+- `obj`
+ - : An object.
+
+### Return value
+
+An array of strings representing the given object's own enumerable string-keyed property keys.
+
+## Description
+
+`Object.keys()` returns an array whose elements are strings corresponding to the enumerable string-keyed property names found directly upon `object`. This is the same as iterating with a `for...in` loop, except that a `for...in` loop enumerates properties in the prototype chain as well. The order of the array returned by `Object.keys()` is the same as that provided by a `for...in` loop.
+
+If you need the property values, use [`Object.values()`](../../globals/Object/values.mdx) instead. If you need both the property keys and values, use [`Object.entries()`](../../globals/Object/entries.mdx) instead.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/preventExtensions.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/preventExtensions.mdx
new file mode 100644
index 0000000000..348efc0c8c
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/preventExtensions.mdx
@@ -0,0 +1,43 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.preventExtensions()
+
+The **`Object.preventExtensions()`** method prevents new
+properties from ever being added to an object (i.e. prevents future extensions to the
+object). It also prevents the object's prototype from being re-assigned.
+
+## Syntax
+
+```js
+Object.preventExtensions(obj)
+```
+
+### Parameters
+
+- `obj`
+ - : The object which should be made non-extensible.
+
+### Return value
+
+The object being made non-extensible.
+
+## Description
+
+An object is extensible if new properties can be added to it.
+`Object.preventExtensions()` marks an object as no longer extensible, so that
+it will never have properties beyond the ones it had at the time it was marked as
+non-extensible. Note that the properties of a non-extensible object, in general, may
+still be _deleted_. Attempting to add new properties to a non-extensible object
+will fail, either silently or, in [strict mode](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Strict_mode), throwing a [`TypeError`](../../globals/TypeError/TypeError.mdx).
+
+Unlike [`Object.seal()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/seal) and [`Object.freeze()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze), `Object.preventExtensions()` invokes an intrinsic JavaScript behavior and cannot be replaced with a composition of several other operations. It also has its `Reflect` counterpart (which only exists for intrinsic operations), [`Reflect.preventExtensions()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Reflect/preventExtensions).
+
+`Object.preventExtensions()` only prevents addition of own properties. Properties can still be added to the object prototype.
+
+This method makes the `[[Prototype]]` of the target immutable; any `[[Prototype]]` re-assignment will throw a `TypeError`. This behavior is specific to the internal `[[Prototype]]` property; other properties of the target object will remain mutable.
+
+There is no way to make an object extensible again once it has been made non-extensible.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/constructor.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/constructor.mdx
new file mode 100644
index 0000000000..fafba4d12d
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/constructor.mdx
@@ -0,0 +1,48 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.prototype.constructor
+
+The **`constructor`** data property of an `Object` instance returns a reference to the constructor function that created the instance object. Note that the value of this property is a reference to _the function itself_, not a string containing the function's name.
+
+> **Note:** This is a property of JavaScript objects. For the `constructor` method in classes, see [its own reference page](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Classes/constructor).
+
+## Value
+
+A reference to the constructor function that created the instance object.
+
+> **Note:** This property is created by default on the [`prototype`](../../../globals/Function/prototype/) property of every constructor function and is inherited by all objects created by that constructor.
+
+## Description
+
+Any object (with the exception of [`null` prototype objects](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object#null-prototype_objects)) will have a `constructor` property on its `[[Prototype]]`. Objects created with literals will also have a `constructor` property that points to the constructor type for that object — for example, array literals create `Array` objects, and [object literals](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Object_initializer) create plain objects.
+
+```js
+const o1 = {};
+o1.constructor === Object; // true
+
+const o2 = new Object();
+o2.constructor === Object; // true
+
+const a1 = [];
+a1.constructor === Array; // true
+
+const a2 = new Array();
+a2.constructor === Array; // true
+
+const n = 3;
+n.constructor === Number; // true
+```
+
+Note that `constructor` usually comes from the constructor's [`prototype`](../../../globals/Function/prototype/) property. If you have a longer prototype chain, you can usually expect every object in the chain to have a `constructor` property.
+
+```js
+const o = new TypeError(); // Inheritance: TypeError -> Error -> Object
+const proto = Object.getPrototypeOf;
+proto(o).constructor === TypeError; // true
+proto(proto(o)).constructor === Error; // true
+proto(proto(proto(o))).constructor === Object; // true
+```
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/hasOwnProperty.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/hasOwnProperty.mdx
new file mode 100644
index 0000000000..9925dc7b55
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/hasOwnProperty.mdx
@@ -0,0 +1,54 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.prototype.hasOwnProperty()
+
+The **`hasOwnProperty()`** method returns a boolean indicating whether the
+object has the specified property as its own property (as opposed to inheriting
+it).
+
+> **Note:** [`Object.hasOwn()`](../../../globals/Object/hasOwn.mdx) is recommended over
+> `hasOwnProperty()`, in browsers where it is supported.
+
+## Syntax
+
+```js
+hasOwnProperty(prop)
+```
+
+### Parameters
+
+- `prop`
+ - : The `String` name or `Symbol` of the property to test.
+
+### Return value
+
+Returns `true` if the object has the specified property as own property; `false`
+otherwise.
+
+## Description
+
+The **`hasOwnProperty()`** method returns `true` if the specified property is a
+direct property of the object — even if the value is `null` or `undefined`. The
+method returns `false` if the property is inherited, or has not been declared at
+all. Unlike the `in` operator, this
+method does not check for the specified property in the object's prototype
+chain.
+
+The method can be called on _most_ JavaScript objects, because most objects
+descend from `Object`, and hence inherit its methods. For
+example `Array` is an `Object`, so you can
+use `hasOwnProperty()` method to check whether an index exists:
+
+```js
+const fruits = ['Apple', 'Banana','Watermelon', 'Orange'];
+fruits.hasOwnProperty(3); // true ('Orange')
+fruits.hasOwnProperty(4); // false - not defined
+```
+
+The method will not be available in objects where it is reimplemented, or on
+objects created using `Object.create(null)` (as these don't inherit from
+`Object.prototype`). Examples for these cases are given below.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/isPrototypeOf.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/isPrototypeOf.mdx
new file mode 100644
index 0000000000..1344f7bbc8
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/isPrototypeOf.mdx
@@ -0,0 +1,35 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.prototype.isPrototypeOf()
+
+The **`isPrototypeOf()`** method checks if an object exists in another object's prototype chain.
+
+> **Note:** `isPrototypeOf()` differs from the [`instanceof`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/instanceof) operator. In the expression `object instanceof AFunction`, `object`'s prototype chain is checked against `AFunction.prototype`, not against `AFunction` itself.
+
+## Syntax
+
+```js
+isPrototypeOf(object)
+```
+
+### Parameters
+
+- `object`
+ - : The object whose prototype chain will be searched.
+
+### Return value
+
+A boolean indicating whether the calling object (`this`) lies in the prototype chain of `object`. Directly returns `false` when `object` is not an object (i.e. a primitive).
+
+### Errors thrown
+
+- [`TypeError`](../../../globals/TypeError/TypeError.mdx)
+ - : Thrown if `this` is `null` or `undefined` (because it can't be [converted to an object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object#object_coercion)).
+
+## Description
+
+All objects that inherit from `Object.prototype` (that is, all except [`null`-prototype objects](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object#null-prototype_objects)) inherit the `isPrototypeOf()` method. This method allows you to check whether or not the object exists within another object's prototype chain. If the `object` passed as the parameter is not an object (i.e. a primitive), the method directly returns `false`. Otherwise, the `this` value is [converted to an object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object#object_coercion), and the prototype chain of `object` is searched for the `this` value, until the end of the chain is reached or the `this` value is found.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/propertyIsEnumerable.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/propertyIsEnumerable.mdx
new file mode 100644
index 0000000000..487e300f20
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/propertyIsEnumerable.mdx
@@ -0,0 +1,30 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.prototype.propertyIsEnumerable()
+
+The **`propertyIsEnumerable()`** method returns a boolean indicating whether the specified property is the object's [enumerable own](https://developer.mozilla.org/docs/Web/JavaScript/Enumerability_and_ownership_of_properties) property.
+
+## Syntax
+
+```js
+propertyIsEnumerable(prop)
+```
+
+### Parameters
+
+- `prop`
+ - : The name of the property to test. Can be a string or a `Symbol`.
+
+### Return value
+
+A boolean value indicating whether the specified property is enumerable and is the object's own property.
+
+## Description
+
+All objects that inherit from `Object.prototype` (that is, all except [`null`-prototype objects](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object#null-prototype_objects)) inherit the `propertyIsEnumerable()` method. This method determines if the specified property, string or symbol, is an enumerable own property of the object. If the object does not have the specified property, this method returns `false`.
+
+This method is equivalent to [`Object.getOwnPropertyDescriptor(obj, prop)?.enumerable ?? false`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor).
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/toLocaleString.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/toLocaleString.mdx
new file mode 100644
index 0000000000..ffa47cd767
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/toLocaleString.mdx
@@ -0,0 +1,34 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.prototype.toLocaleString()
+
+The **`toLocaleString()`** method returns a string representing the object. This method is meant to be overridden by derived objects for locale-specific purposes.
+
+## Syntax
+
+```js
+toLocaleString()
+```
+
+### Parameters
+
+None. However, all objects that override this method are expected to accept at most two parameters, corresponding to `locales` and `options`, such as [`Date.prototype.toLocaleString()`](../../../globals/Date/prototype/toLocaleString.mdx). The parameter positions should not be used for any other purpose.
+
+### Return value
+
+The return value of calling `this.toString()`.
+
+## Description
+
+All objects that inherit from `Object.prototype` (that is, all except [`null`-prototype objects](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object#null-prototype_objects)) inherit the `toLocaleString()` method. `Object`'s `toLocaleString` returns the result of calling [`this.toString()`](../../../globals/Object/prototype/toString.mdx).
+
+This function is provided to give objects a generic `toLocaleString` method, even though not all may use it. In the core language, these built-in objects override `toLocaleString` to provide locale-specific formatting:
+
+- `Array`: [`Array.prototype.toLocaleString()`](../../../globals/Array/prototype/toLocaleString.mdx)
+- `Number`: [`Number.prototype.toLocaleString()`](../../../globals/Number/prototype/toLocaleString.mdx)
+- `Date`: [`Date.prototype.toLocaleString()`](../../../globals/Date/prototype/toLocaleString.mdx)
+- `BigInt`: [`BigInt.prototype.toLocaleString()`](../../../globals/BigInt/prototype/toLocaleString.mdx)
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/toString.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/toString.mdx
new file mode 100644
index 0000000000..946e0ce728
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/toString.mdx
@@ -0,0 +1,55 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.prototype.toString()
+
+The **`toString()`** method returns a string representing the object. This method is meant to be overridden by derived objects for custom [type conversion](https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#type_coercion) logic.
+
+## Syntax
+
+```js
+toString()
+```
+
+### Parameters
+
+By default `toString()` takes no parameters. However, objects that inherit from `Object` may override it with their own implementations that do take parameters. For example, the [`Number.prototype.toString()`](../../../globals/Number/prototype/toString.mdx) and [`BigInt.prototype.toString()`](../../../globals/BigInt/prototype/toString.mdx) methods take an optional `radix` parameter.
+
+### Return value
+
+A string representing the object.
+
+## Description
+
+JavaScript calls the `toString` method to [convert an object to a primitive value](https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#type_coercion). You rarely need to invoke the `toString` method yourself; JavaScript automatically invokes it when encountering an object where a primitive value is expected.
+
+This method is called in priority by [string conversion](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String#string_coercion), but [numeric conversion](https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#numeric_coercion) and [primitive conversion](https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#primitive_coercion) call `valueOf()` in priority. However, because the base [`valueOf()`](../../../globals/Object/prototype/valueOf.mdx) method returns an object, the `toString()` method is usually called in the end, unless the object overrides `valueOf()`. For example, `+[1]` returns `1`, because its [`toString`](../../../globals/Array/prototype/toString.mdx) method returns `"1"`, which is then converted to a number.
+
+All objects that inherit from `Object.prototype` (that is, all except [`null`-prototype objects](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object#null-prototype_objects)) inherit the `toString()` method. When you create a custom object, you can override `toString()` to call a custom method, so that your custom object can be converted to a string value. Alternatively, you can add a [`Symbol.toPrimitive`](../../../globals/Symbol/toPrimitive.mdx) method, which allows even more control over the conversion process, and will always be preferred over `valueOf` or `toString` for any type conversion.
+
+To use the base `Object.prototype.toString()` with an object that has it overridden (or to invoke it on `null` or `undefined`), you need to call [`Function.prototype.call()`](../../../globals/Function/prototype/call.mdx) or [`Function.prototype.apply()`](../../../globals/Function/prototype/apply.mdx) on it, passing the object you want to inspect as the first parameter (called `thisArg`).
+
+```js
+const arr = [1, 2, 3];
+
+arr.toString(); // "1,2,3"
+Object.prototype.toString.call(arr); // "[object Array]"
+```
+
+`Object.prototype.toString()` returns `"[object Type]"`, where `Type` is the object type. If the object has a [`Symbol.toStringTag`](../../../globals/Symbol/toStringTag.mdx) property whose value is a string, that value will be used as the `Type`. Many built-in objects, including [`Map`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Map) and [`Symbol`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Symbol), have a `Symbol.toStringTag`. Some objects predating ES6 do not have `Symbol.toStringTag`, but have a special tag nonetheless. They include (the tag is the same as the type name given below):
+
+- [`Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)
+- [`Function`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Functions) (anything whose [`typeof`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/typeof) returns `"function"`)
+- [`Error`](../../../globals/Error/Error.mdx)
+- [`Boolean`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)
+- [`Number`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)
+- [`String`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)
+- [`Date`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date)
+- [`RegExp`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/RegExp)
+
+The [`arguments`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Functions/arguments) object returns `"[object Arguments]"`. Everything else, including user-defined classes, unless with a custom `Symbol.toStringTag`, will return `"[object Object]"`.
+
+`Object.prototype.toString()` invoked on [`null`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/null) and [`undefined`](../../../globals/undefined.mdx) returns `[object Null]` and `[object Undefined]`, respectively.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/valueOf.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/valueOf.mdx
new file mode 100644
index 0000000000..6c900d49e0
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/prototype/valueOf.mdx
@@ -0,0 +1,35 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.prototype.valueOf()
+
+The **`valueOf()`** method of `Object` converts the `this` value [to an object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object#object_coercion). This method is meant to be overridden by derived objects for custom [type conversion](https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#type_coercion) logic.
+
+
+
+## Syntax
+
+```js
+valueOf()
+```
+
+### Parameters
+
+None.
+
+### Return value
+
+The `this` value, converted to an object.
+
+> **Note:** In order for `valueOf` to be useful during type conversion, it must return a primitive. Because all primitive types have their own `valueOf()` methods, calling `aPrimitiveValue.valueOf()` generally does not invoke `Object.prototype.valueOf()`.
+
+## Description
+
+JavaScript calls the `valueOf` method to [convert an object to a primitive value](https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#type_coercion). You rarely need to invoke the `valueOf` method yourself; JavaScript automatically invokes it when encountering an object where a primitive value is expected.
+
+This method is called in priority by [numeric conversion](https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#numeric_coercion) and [primitive conversion](https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#primitive_coercion), but [string conversion](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String#string_coercion) calls `toString()` in priority, and `toString()` is very likely to return a string value (even for the [`Object.prototype.toString()`](../../../globals/Object/prototype/toString.mdx) base implementation), so `valueOf()` is usually not called in this case.
+
+All objects that inherit from `Object.prototype` (that is, all except [`null`-prototype objects](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object#null-prototype_objects)) inherit the `toString()` method. The `Object.prototype.valueOf()` base implementation is deliberately useless: by returning an object, its return value will never be used by any [primitive conversion algorithm](https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#type_coercion). Many built-in objects override this method to return an appropriate primitive value. When you create a custom object, you can override `valueOf()` to call a custom method, so that your custom object can be converted to a primitive value. Generally, `valueOf()` is used to return a value that is most meaningful for the object — unlike `toString()`, it does not need to be a string. Alternatively, you can add a [`Symbol.toPrimitive`](../../../globals/Symbol/toPrimitive.mdx) method, which allows even more control over the conversion process, and will always be preferred over `valueOf` or `toString` for any type conversion.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/seal.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/seal.mdx
new file mode 100644
index 0000000000..c91fa05d43
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/seal.mdx
@@ -0,0 +1,38 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.seal()
+
+The **`Object.seal()`** method _seals_ an object. Sealing an object [prevents extensions](../../globals/Object/preventExtensions.mdx) and makes existing properties non-configurable. A sealed object has a fixed set of properties: new properties cannot be added, existing properties cannot be removed, their enumerability and configurability cannot be changed, and its prototype cannot be re-assigned. Values of existing properties can still be changed as long as they are writable. `seal()` returns the same object that was passed in.
+
+## Syntax
+
+```js
+Object.seal(obj)
+```
+
+### Parameters
+
+- `obj`
+ - : The object which should be sealed.
+
+### Return value
+
+The object being sealed.
+
+## Description
+
+Sealing an object is equivalent to [preventing extensions](../../globals/Object/preventExtensions.mdx) and then changing all existing properties' descriptors to `configurable: false`. This has the effect of making the set of properties on the object fixed. Making all properties non-configurable
+also prevents them from being converted from data properties to accessor properties and
+vice versa, but it does not prevent the values of data properties from being changed.
+Attempting to delete or add properties to a sealed object, or to convert a data property
+to accessor or vice versa, will fail, either silently or by throwing a
+[`TypeError`](../../globals/TypeError/TypeError.mdx) (most commonly, although not exclusively, when in "strict mode" code).
+
+The prototype chain remains untouched. However, due to the effect of [preventing extensions](../../globals/Object/preventExtensions.mdx), the `[[Prototype]]` cannot be reassigned.
+
+Unlike [`Object.freeze()`](../../globals/Object/freeze.mdx), objects sealed with `Object.seal()` may have their existing
+properties changed, as long as they are writable.
diff --git a/documentation/versioned_docs/version-3.21.3/globals/Object/setPrototypeOf.mdx b/documentation/versioned_docs/version-3.21.3/globals/Object/setPrototypeOf.mdx
new file mode 100644
index 0000000000..bacad49a46
--- /dev/null
+++ b/documentation/versioned_docs/version-3.21.3/globals/Object/setPrototypeOf.mdx
@@ -0,0 +1,50 @@
+---
+hide_title: false
+hide_table_of_contents: false
+pagination_next: null
+pagination_prev: null
+---
+# Object.setPrototypeOf()
+
+The **`Object.setPrototypeOf()`** method sets the prototype (i.e., the internal `[[Prototype]]` property) of a specified object to another object or [`null`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/null).
+
+> **Warning:** Changing the `[[Prototype]]` of an object is, by the nature of how modern JavaScript engines optimize property accesses, currently a very slow operation in every browser and JavaScript engine. In addition, the effects of altering inheritance are subtle and far-flung, and are not limited to the time spent in the `Object.setPrototypeOf(...)` statement, but may extend to **_any_** code that has access to any object whose `[[Prototype]]` has been altered. You can read more in [JavaScript engine fundamentals: optimizing prototypes](https://mathiasbynens.be/notes/prototypes).
+>
+> Because this feature is a part of the language, it is still the burden on engine developers to implement that feature performantly (ideally). Until engine developers address this issue, if you are concerned about performance, you should avoid setting the `[[Prototype]]` of an object. Instead, create a new object with the desired `[[Prototype]]` using [`Object.create()`](../../globals/Object/create.mdx).
+
+## Syntax
+
+```js
+Object.setPrototypeOf(obj, prototype)
+```
+
+### Parameters
+
+- `obj`
+ - : The object which is to have its prototype set.
+- `prototype`
+ - : The object's new prototype (an object or [`null`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/null)).
+
+### Return value
+
+The specified object.
+
+### Exceptions
+
+- [`TypeError`](../../globals/TypeError/TypeError.mdx)
+ - : Thrown if one of the following conditions is met:
+ - The `obj` parameter is [non-extensible](../../globals/Object/isExtensible.mdx), or it's an [immutable prototype exotic object](https://tc39.es/ecma262/#sec-immutable-prototype-exotic-objects), such as `Object.prototype`.
+ - The `prototype` parameter is not an object or [`null`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/null).
+
+## Description
+
+`Object.setPrototypeOf()` is generally considered the proper way to set the prototype of an object.
+
+If the `obj` parameter is not an object (e.g. number, string, etc.), this method does nothing.
+
+For security concerns, there are certain built-in objects that are designed to have an _immutable prototype_. This prevents prototype pollution attacks, especially [proxy-related ones](https://github.com/tc39/ecma262/issues/272). The core language only specifies `Object.prototype` as an immutable prototype exotic object, whose prototype is always `null`.
+
+```js
+Object.isExtensible(Object.prototype); // true; you can add more properties
+Object.setPrototypeOf(Object.prototype, {}); // TypeError: Immutable prototype object '#