Index: imaps-frontend/node_modules/es-to-primitive/.editorconfig
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/.editorconfig	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/es-to-primitive/.editorconfig	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -0,0 +1,20 @@
+root = true
+
+[*]
+indent_style = tab
+indent_size = 4
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+max_line_length = 150
+
+[CHANGELOG.md]
+indent_style = space
+indent_size = 2
+
+[*.json]
+max_line_length = off
+
+[Makefile]
+max_line_length = off
Index: imaps-frontend/node_modules/es-to-primitive/.eslintignore
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/.eslintignore	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/es-to-primitive/.eslintignore	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -0,0 +1,1 @@
+coverage/
Index: imaps-frontend/node_modules/es-to-primitive/.eslintrc
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/.eslintrc	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/es-to-primitive/.eslintrc	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -5,8 +5,6 @@
 
 	"rules": {
-		"complexity": [2, 14],
 		"func-name-matching": 0,
 		"id-length": [2, { "min": 1, "max": 24, "properties": "never" }],
-		"max-statements": [2, 20],
 		"new-cap": [2, { "capIsNewExceptions": ["GetMethod"] }]
 	},
@@ -16,5 +14,5 @@
 			"files": "test/**",
 			"rules": {
-				"max-lines-per-function": [2, { "max": 68 }],
+				"max-lines-per-function": 0,
 			},
 		}
Index: imaps-frontend/node_modules/es-to-primitive/.nycrc
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/.nycrc	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/es-to-primitive/.nycrc	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -0,0 +1,9 @@
+{
+	"all": true,
+	"check-coverage": false,
+	"reporter": ["text-summary", "text", "html", "json"],
+	"exclude": [
+		"coverage",
+		"test"
+	]
+}
Index: imaps-frontend/node_modules/es-to-primitive/.travis.yml
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/.travis.yml	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ 	(revision )
@@ -1,15 +1,0 @@
-version: ~> 1.0
-language: node_js
-cache:
-  directories:
-    - "$(nvm cache dir)"
-os:
- - linux
-import:
- - ljharb/travis-ci:node/all.yml
- - ljharb/travis-ci:node/pretest.yml
- - ljharb/travis-ci:node/posttest.yml
- - ljharb/travis-ci:node/coverage.yml
-matrix:
-  allow_failures:
-    - env: COVERAGE=true
Index: imaps-frontend/node_modules/es-to-primitive/CHANGELOG.md
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/CHANGELOG.md	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/es-to-primitive/CHANGELOG.md	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -1,2 +1,54 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v1.3.0](https://github.com/ljharb/es-to-primitive/compare/v1.2.1...v1.3.0) - 2024-11-26
+
+### Commits
+
+- [actions] reuse common workflows [`bb72efc`](https://github.com/ljharb/es-to-primitive/commit/bb72efc7e04ae11b84e4aecf120a4e9063e34428)
+- [Tests] use `es-value-fixtures` [`a912f7b`](https://github.com/ljharb/es-to-primitive/commit/a912f7b675333735c1c980cda88772ac1870395b)
+- [Tests] migrate tests to Github Actions [`510baf0`](https://github.com/ljharb/es-to-primitive/commit/510baf092633a62d59866fbf56836ce42c717c70)
+- [New] add types [`69ba1fd`](https://github.com/ljharb/es-to-primitive/commit/69ba1fdcac834b03698739990ba98fe6007024dc)
+- [meta] remove unused Makefile [`4ea66e6`](https://github.com/ljharb/es-to-primitive/commit/4ea66e62ef4afa0102eb8335ba3e003e8332f664)
+- [actions] use `node/install` instead of `node/run`; use `codecov` action [`3c31937`](https://github.com/ljharb/es-to-primitive/commit/3c31937119ca24fd6d00e362d6435a28cfe9e91c)
+- [meta] do not publish github action workflow files [`389567e`](https://github.com/ljharb/es-to-primitive/commit/389567e8523b65b90b529f1029d215fd4f12ac14)
+- [meta] use `npmignore` to autogenerate an npmignore file [`9f3aa76`](https://github.com/ljharb/es-to-primitive/commit/9f3aa7651791ab9386408035491a1ba4fec4c432)
+- [actions] split out node 10-20, and 20+ [`c60d7d8`](https://github.com/ljharb/es-to-primitive/commit/c60d7d822a36880bce0535335c70fdc2a8da232d)
+- [Tests] run `nyc` on all tests; use `tape` runner [`29cbb89`](https://github.com/ljharb/es-to-primitive/commit/29cbb89800b5cfef9bef3ae7e0e779c782e1bbb9)
+- [meta] add `auto-changelog` [`ea744b2`](https://github.com/ljharb/es-to-primitive/commit/ea744b2a0bda788b0d957c1787e41434e98b0155)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `function.prototype.name`, `has-symbols`, `object-inspect`, `object-is`, `tape` [`e5c3c79`](https://github.com/ljharb/es-to-primitive/commit/e5c3c792f67685a9647e817e7582d4c76a876f69)
+- [actions] add automatic rebasing / merge commit blocking [`a5a6f00`](https://github.com/ljharb/es-to-primitive/commit/a5a6f0066540c91c8aa45a4921f1cd2349f435ba)
+- [Dev Deps] update `@ljharb/eslint-config`, `es-value-fixtures`, `function.prototype.name`, `npmignore`, `object-inspect`, `object-is`, `tape` [`7941fd5`](https://github.com/ljharb/es-to-primitive/commit/7941fd530fb3a73f923b76c739335ffc21793ad6)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `es-value-fixtures`, `foreach`, `object-inspect`, `tape` [`eb1c79c`](https://github.com/ljharb/es-to-primitive/commit/eb1c79c288c89154014634b94f64308344901eaf)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `function.prototype.name`, `object-inspect`, `safe-publish-latest`, `tape` [`249b42f`](https://github.com/ljharb/es-to-primitive/commit/249b42f1ce069ea78a032f10414d1c1c0b6c6345)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `function.prototype.name`, `object-inspect`, `object-is`, `tape` [`d57d5e9`](https://github.com/ljharb/es-to-primitive/commit/d57d5e9ea5ea4778f383e2f1aa637be0be80dd78)
+- [actions] update codecov uploader [`003b62c`](https://github.com/ljharb/es-to-primitive/commit/003b62c483372d5eac38f51925b6cbdf5d7a0665)
+- [actions] add "Allow Edits" workflow [`75ee990`](https://github.com/ljharb/es-to-primitive/commit/75ee99083626dc14558ae294c127e4aaf925d214)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape`, `object-is`; add `safe-publish-latest` [`ba5da7b`](https://github.com/ljharb/es-to-primitive/commit/ba5da7bffd93c3cc2e079ad751a3e678333a973e)
+- [readme] remove travis badge [`6f7aec7`](https://github.com/ljharb/es-to-primitive/commit/6f7aec78e4f1ebfca74c384a837063f4099e7b9b)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `object-inspect`, `tape` [`3291fd5`](https://github.com/ljharb/es-to-primitive/commit/3291fd567695b45bddc58e5ec3da2dcce0e5ccc7)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `function.prototype.name`, `has-symbols`, `object-inspect` [`53007f2`](https://github.com/ljharb/es-to-primitive/commit/53007f25d1f26e301b4f41d070c423723bed1690)
+- [actions] update checkout action [`69640db`](https://github.com/ljharb/es-to-primitive/commit/69640dbb9ddafe05527388fe72bda1aca08d07b5)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `object-is`, `tape`; add `aud` [`c9d644e`](https://github.com/ljharb/es-to-primitive/commit/c9d644ef3c6b2210e86ce2d3aa8e8b1668f6801d)
+- [Tests] use `for-each` instead of `foreach` [`e9117bb`](https://github.com/ljharb/es-to-primitive/commit/e9117bb055417cb721dbf5dbe1d23b058a8241f2)
+- [readme] add github actions/codecov badges [`53cd375`](https://github.com/ljharb/es-to-primitive/commit/53cd375ab22a25d4bada35000473e30c22ee2028)
+- [Deps] update `is-callable`, `is-date-object`, `is-symbol` [`8116c68`](https://github.com/ljharb/es-to-primitive/commit/8116c68a8ba555f8daaf1d71a60c974d3439c94b)
+- [Tests] fix test skipping for `Symbol.toPrimitive` [`e6268ef`](https://github.com/ljharb/es-to-primitive/commit/e6268ef31b34cb5263501ba9735ccce78a07e504)
+- [actions] switch Automatic Rebase workflow to `pull_request_target` event [`da41c40`](https://github.com/ljharb/es-to-primitive/commit/da41c40399c2a574f74a59b85800d9934b91d49a)
+- [Deps] update `is-callable`, `is-date-object` [`96fe13f`](https://github.com/ljharb/es-to-primitive/commit/96fe13ff3c486c7857c2ca69ac70161ef0e5b4a1)
+- [Tests] replace `aud` with `npm audit` [`0b53154`](https://github.com/ljharb/es-to-primitive/commit/0b531546081427cb8a4fc06fde5540ba0b287b5b)
+- [meta] use `prepublishOnly` script for npm 7+ [`9d7d485`](https://github.com/ljharb/es-to-primitive/commit/9d7d4856d4b5f28c68de2aba068522b9a85ee669)
+- [Deps] update `is-callable` [`3c990b6`](https://github.com/ljharb/es-to-primitive/commit/3c990b646813e2470b19460e32801113f9acc13b)
+- [Deps] update `is-callable` [`9bcfff2`](https://github.com/ljharb/es-to-primitive/commit/9bcfff276ce078034404b6b27e4f74beb530002c)
+- [Deps] update `is-callable` [`1eb5478`](https://github.com/ljharb/es-to-primitive/commit/1eb5478e0c93b230b7bc67f9fef963d94a391117)
+- [meta] only run `aud` on prod deps [`1fcd896`](https://github.com/ljharb/es-to-primitive/commit/1fcd89684a4351c15fec2cb289ecc331f917b80e)
+- [Deps] update `is-symbol` [`7174a47`](https://github.com/ljharb/es-to-primitive/commit/7174a474f4f9f07319c81f046b10446caf9b3af0)
+
+<!-- auto-changelog-above -->
+
 1.2.1 / 2019-11-08
 =================
Index: imaps-frontend/node_modules/es-to-primitive/Makefile
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/Makefile	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ 	(revision )
@@ -1,61 +1,0 @@
-# Since we rely on paths relative to the makefile location, abort if make isn't being run from there.
-$(if $(findstring /,$(MAKEFILE_LIST)),$(error Please only invoke this makefile from the directory it resides in))
-
-	# The files that need updating when incrementing the version number.
-VERSIONED_FILES := *.js *.json README*
-
-
-# Add the local npm packages' bin folder to the PATH, so that `make` can find them, when invoked directly.
-# Note that rather than using `$(npm bin)` the 'node_modules/.bin' path component is hard-coded, so that invocation works even from an environment
-# where npm is (temporarily) unavailable due to having deactivated an nvm instance loaded into the calling shell in order to avoid interference with tests.
-export PATH := $(shell printf '%s' "$$PWD/node_modules/.bin:$$PATH")
-UTILS := semver
-# Make sure that all required utilities can be located.
-UTIL_CHECK := $(or $(shell PATH="$(PATH)" which $(UTILS) >/dev/null && echo 'ok'),$(error Did you forget to run `npm install` after cloning the repo? At least one of the required supporting utilities not found: $(UTILS)))
-
-# Default target (by virtue of being the first non '.'-prefixed in the file).
-.PHONY: _no-target-specified
-_no-target-specified:
-	$(error Please specify the target to make - `make list` shows targets. Alternatively, use `npm test` to run the default tests; `npm run` shows all tests)
-
-# Lists all targets defined in this makefile.
-.PHONY: list
-list:
-	@$(MAKE) -pRrn : -f $(MAKEFILE_LIST) 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | command grep -v -e '^[^[:alnum:]]' -e '^$@$$command ' | sort
-
-# All-tests target: invokes the specified test suites for ALL shells defined in $(SHELLS).
-.PHONY: test
-test:
-	@npm test
-
-.PHONY: _ensure-tag
-_ensure-tag:
-ifndef TAG
-	$(error Please invoke with `make TAG=<new-version> release`, where <new-version> is either an increment specifier (patch, minor, major, prepatch, preminor, premajor, prerelease), or an explicit major.minor.patch version number)
-endif
-
-CHANGELOG_ERROR = $(error No CHANGELOG specified)
-.PHONY: _ensure-changelog
-_ensure-changelog:
-	@ (git status -sb --porcelain | command grep -E '^( M|[MA] ) CHANGELOG.md' > /dev/null) || (echo no CHANGELOG.md specified && exit 2)
-
-# Ensures that the git workspace is clean.
-.PHONY: _ensure-clean
-_ensure-clean:
-	@[ -z "$$((git status --porcelain --untracked-files=no || echo err) | command grep -v 'CHANGELOG.md')" ] || { echo "Workspace is not clean; please commit changes first." >&2; exit 2; }
-
-# Makes a release; invoke with `make TAG=<versionOrIncrementSpec> release`.
-.PHONY: release
-release: _ensure-tag _ensure-changelog _ensure-clean
-	@old_ver=`git describe --abbrev=0 --tags --match 'v[0-9]*.[0-9]*.[0-9]*'` || { echo "Failed to determine current version." >&2; exit 1; }; old_ver=$${old_ver#v}; \
-	 new_ver=`echo "$(TAG)" | sed 's/^v//'`; new_ver=$${new_ver:-patch}; \
-	 if printf "$$new_ver" | command grep -q '^[0-9]'; then \
-	   semver "$$new_ver" >/dev/null || { echo 'Invalid version number specified: $(TAG) - must be major.minor.patch' >&2; exit 2; }; \
-	   semver -r "> $$old_ver" "$$new_ver" >/dev/null || { echo 'Invalid version number specified: $(TAG) - must be HIGHER than current one.' >&2; exit 2; } \
-	 else \
-	   new_ver=`semver -i "$$new_ver" "$$old_ver"` || { echo 'Invalid version-increment specifier: $(TAG)' >&2; exit 2; } \
-	 fi; \
-	 printf "=== Bumping version **$$old_ver** to **$$new_ver** before committing and tagging:\n=== TYPE 'proceed' TO PROCEED, anything else to abort: " && read response && [ "$$response" = 'proceed' ] || { echo 'Aborted.' >&2; exit 2; };  \
-	 replace "$$old_ver" "$$new_ver" -- $(VERSIONED_FILES) && \
-	 git commit -m "v$$new_ver" $(VERSIONED_FILES) CHANGELOG.md && \
-	 git tag -a -m "v$$new_ver" "v$$new_ver"
Index: imaps-frontend/node_modules/es-to-primitive/README.md
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/README.md	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/es-to-primitive/README.md	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -1,5 +1,6 @@
 # es-to-primitive <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
 
-[![Build Status][travis-svg]][travis-url]
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
 [![dependency status][deps-svg]][deps-url]
 [![dev dependency status][dev-deps-svg]][dev-deps-url]
@@ -36,7 +37,5 @@
 
 [package-url]: https://npmjs.org/package/es-to-primitive
-[npm-version-svg]: http://versionbadg.es/ljharb/es-to-primitive.svg
-[travis-svg]: https://travis-ci.org/ljharb/es-to-primitive.svg
-[travis-url]: https://travis-ci.org/ljharb/es-to-primitive
+[npm-version-svg]: https://versionbadg.es/ljharb/es-to-primitive.svg
 [deps-svg]: https://david-dm.org/ljharb/es-to-primitive.svg
 [deps-url]: https://david-dm.org/ljharb/es-to-primitive
@@ -44,6 +43,10 @@
 [dev-deps-url]: https://david-dm.org/ljharb/es-to-primitive#info=devDependencies
 [npm-badge-png]: https://nodei.co/npm/es-to-primitive.png?downloads=true&stars=true
-[license-image]: http://img.shields.io/npm/l/es-to-primitive.svg
+[license-image]: https://img.shields.io/npm/l/es-to-primitive.svg
 [license-url]: LICENSE
-[downloads-image]: http://img.shields.io/npm/dm/es-to-primitive.svg
-[downloads-url]: http://npm-stat.com/charts.html?package=es-to-primitive
+[downloads-image]: https://img.shields.io/npm/dm/es-to-primitive.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=es-to-primitive
+[codecov-image]: https://codecov.io/gh/ljharb/es-to-primitive/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/ljharb/es-to-primitive/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/es-to-primitive
+[actions-url]: https://github.com/ljharb/es-to-primitive/actions
Index: imaps-frontend/node_modules/es-to-primitive/es2015.d.ts
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/es2015.d.ts	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/es-to-primitive/es2015.d.ts	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -0,0 +1,5 @@
+type primitive = null | undefined | string | symbol | number | boolean | bigint;
+
+declare function ToPrimitive(input: unknown, hint?: StringConstructor | NumberConstructor): primitive;
+
+export = ToPrimitive;
Index: imaps-frontend/node_modules/es-to-primitive/es2015.js
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/es2015.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/es-to-primitive/es2015.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -8,4 +8,5 @@
 var isSymbol = require('is-symbol');
 
+/** @type {(O: { valueOf?: () => unknown, toString?: () => unknown }, hint: 'number' | 'string' | 'default') => null | undefined | string | symbol | number | boolean | bigint} */
 var ordinaryToPrimitive = function OrdinaryToPrimitive(O, hint) {
 	if (typeof O === 'undefined' || O === null) {
@@ -15,4 +16,5 @@
 		throw new TypeError('hint must be "string" or "number"');
 	}
+	/** @type {('toString' | 'valueOf')[]} */
 	var methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString'];
 	var method, result, i;
@@ -29,9 +31,10 @@
 };
 
+/** @type {<K extends PropertyKey>(O: Record<K, unknown>, P: K) => Function | undefined} */
 var GetMethod = function GetMethod(O, P) {
 	var func = O[P];
 	if (func !== null && typeof func !== 'undefined') {
 		if (!isCallable(func)) {
-			throw new TypeError(func + ' returned for property ' + P + ' of object ' + O + ' is not a function');
+			throw new TypeError(func + ' returned for property ' + String(P) + ' of object ' + O + ' is not a function');
 		}
 		return func;
@@ -40,4 +43,5 @@
 };
 
+/** @type {import('./es2015')} */
 // http://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive
 module.exports = function ToPrimitive(input) {
@@ -45,4 +49,5 @@
 		return input;
 	}
+	/** @type {'default' | 'string' | 'number'} */
 	var hint = 'default';
 	if (arguments.length > 1) {
@@ -57,5 +62,6 @@
 	if (hasSymbols) {
 		if (Symbol.toPrimitive) {
-			exoticToPrim = GetMethod(input, Symbol.toPrimitive);
+			// eslint-disable-next-line no-extra-parens
+			exoticToPrim = GetMethod(/** @type {Record<PropertyKey, unknown>} */ (input), Symbol.toPrimitive);
 		} else if (isSymbol(input)) {
 			exoticToPrim = Symbol.prototype.valueOf;
@@ -72,4 +78,5 @@
 		hint = 'string';
 	}
-	return ordinaryToPrimitive(input, hint === 'default' ? 'number' : hint);
+	// eslint-disable-next-line no-extra-parens
+	return ordinaryToPrimitive(/** @type {object} */ (input), hint === 'default' ? 'number' : hint);
 };
Index: imaps-frontend/node_modules/es-to-primitive/es5.d.ts
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/es5.d.ts	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/es-to-primitive/es5.d.ts	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -0,0 +1,3 @@
+declare function ToPrimitive(input: unknown, hint?: StringConstructor | NumberConstructor): null | undefined | string | symbol | number | boolean | bigint;
+
+export = ToPrimitive;
Index: imaps-frontend/node_modules/es-to-primitive/es5.js
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/es5.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/es-to-primitive/es5.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -7,4 +7,5 @@
 var isCallable = require('is-callable');
 
+/** @type {{ [k in `[[${string}]]`]: (O: { toString?: unknown, valueOf?: unknown }, actualHint?: StringConstructor | NumberConstructor) => null | undefined | string | symbol | number | boolean | bigint; }} */
 // http://ecma-international.org/ecma-262/5.1/#sec-8.12.8
 var ES5internalSlots = {
@@ -18,9 +19,12 @@
 
 		if (actualHint === String || actualHint === Number) {
+			/** @type {('toString' | 'valueOf')[]} */
 			var methods = actualHint === String ? ['toString', 'valueOf'] : ['valueOf', 'toString'];
 			var value, i;
 			for (i = 0; i < methods.length; ++i) {
-				if (isCallable(O[methods[i]])) {
-					value = O[methods[i]]();
+				var method = methods[i];
+				if (isCallable(O[method])) {
+					// eslint-disable-next-line no-extra-parens
+					value = /** @type {Function} */ (O[method])();
 					if (isPrimitive(value)) {
 						return value;
@@ -34,4 +38,5 @@
 };
 
+/** @type {import('./es5')} */
 // http://ecma-international.org/ecma-262/5.1/#sec-9.1
 module.exports = function ToPrimitive(input) {
@@ -40,6 +45,8 @@
 	}
 	if (arguments.length > 1) {
-		return ES5internalSlots['[[DefaultValue]]'](input, arguments[1]);
+		// eslint-disable-next-line no-extra-parens
+		return ES5internalSlots['[[DefaultValue]]'](/** @type {object} */ (input), arguments[1]);
 	}
-	return ES5internalSlots['[[DefaultValue]]'](input);
+	// eslint-disable-next-line no-extra-parens
+	return ES5internalSlots['[[DefaultValue]]'](/** @type {object} */ (input));
 };
Index: imaps-frontend/node_modules/es-to-primitive/es6.d.ts
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/es6.d.ts	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/es-to-primitive/es6.d.ts	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -0,0 +1,3 @@
+import ES2015 from './es2015';
+
+export = ES2015;
Index: imaps-frontend/node_modules/es-to-primitive/es6.js
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/es6.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/es-to-primitive/es6.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -1,3 +1,4 @@
 'use strict';
 
+/** @type {import('./es2015')} */
 module.exports = require('./es2015');
Index: imaps-frontend/node_modules/es-to-primitive/helpers/isPrimitive.js
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/helpers/isPrimitive.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/es-to-primitive/helpers/isPrimitive.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -1,4 +1,5 @@
 'use strict';
 
+/** @type {(value: unknown) => value is null | undefined | string | symbol | number | boolean | bigint} */
 module.exports = function isPrimitive(value) {
 	return value === null || (typeof value !== 'function' && typeof value !== 'object');
Index: imaps-frontend/node_modules/es-to-primitive/index.d.ts
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/index.d.ts	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/es-to-primitive/index.d.ts	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -0,0 +1,11 @@
+import ES5 from './es5';
+import ES6 from './es6';
+import ES2015 from './es2015';
+
+declare const ToPrimitive: typeof ES2015 & {
+    readonly ES5: typeof ES5;
+    /** @deprecated */
+    readonly ES6: typeof ES6;
+    readonly ES2015: typeof ES2015;
+};
+export = ToPrimitive;
Index: imaps-frontend/node_modules/es-to-primitive/index.js
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/index.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/es-to-primitive/index.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -10,8 +10,12 @@
 	Object.defineProperty(ES2015, 'ES2015', { enumerable: false, value: ES2015 });
 } else {
-	ES6.ES5 = ES5;
-	ES6.ES6 = ES6;
-	ES6.ES2015 = ES2015;
+	// @ts-expect-error TODO
+	ES2015.ES5 = ES5;
+	// @ts-expect-error TODO
+	ES2015.ES6 = ES6;
+	// @ts-expect-error TODO
+	ES2015.ES2015 = ES2015;
 }
 
+/** @type {import('.')} */
 module.exports = ES2015;
Index: imaps-frontend/node_modules/es-to-primitive/package.json
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/package.json	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/es-to-primitive/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -1,5 +1,5 @@
 {
 	"name": "es-to-primitive",
-	"version": "1.2.1",
+	"version": "1.3.0",
 	"author": "Jordan Harband <ljharb@gmail.com>",
 	"funding": {
@@ -10,11 +10,15 @@
 	"main": "index.js",
 	"scripts": {
-		"pretest": "npm run --silent lint",
-		"test": "npm run --silent tests-only",
-		"posttest": "npx aud",
-		"tests-only": "node --es-staging test",
-		"coverage": "covert test/*.js",
-		"coverage-quiet": "covert test/*.js --quiet",
-		"lint": "eslint ."
+		"prepack": "npmignore --auto --commentLines=autogenerated",
+		"prepublish": "not-in-publish || npm run prepublishOnly",
+		"prepublishOnly": "safe-publish-latest",
+		"pretest": "npm run lint",
+		"test": "npm run tests-only",
+		"posttest": "npx npm@'>=10.2' audit --production",
+		"tests-only": "nyc tape 'test/**/*.js'",
+		"lint": "eslint --ext=js,mjs .",
+		"postlint": "tsc && attw -P",
+		"version": "auto-changelog && git add CHANGELOG.md",
+		"postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
 	},
 	"repository": {
@@ -41,41 +45,53 @@
 	],
 	"dependencies": {
-		"is-callable": "^1.1.4",
-		"is-date-object": "^1.0.1",
-		"is-symbol": "^1.0.2"
+		"is-callable": "^1.2.7",
+		"is-date-object": "^1.0.5",
+		"is-symbol": "^1.0.4"
 	},
 	"devDependencies": {
-		"@ljharb/eslint-config": "^15.0.0",
-		"covert": "^1.1.1",
-		"eslint": "^6.6.0",
-		"foreach": "^2.0.5",
-		"function.prototype.name": "^1.1.1",
-		"has-symbols": "^1.0.0",
-		"object-inspect": "^1.6.0",
-		"object-is": "^1.0.1",
-		"replace": "^1.1.1",
-		"semver": "^6.3.0",
-		"tape": "^4.11.0"
+		"@arethetypeswrong/cli": "^0.17.0",
+		"@ljharb/eslint-config": "^21.1.1",
+		"@ljharb/tsconfig": "^0.2.0",
+		"@types/for-each": "^0.3.3",
+		"@types/function.prototype.name": "^1.1.3",
+		"@types/is-callable": "^1.1.2",
+		"@types/is-date-object": "^1.0.4",
+		"@types/is-symbol": "^1.0.2",
+		"@types/object-inspect": "^1.13.0",
+		"@types/object-is": "^1.1.0",
+		"@types/tape": "^5.6.4",
+		"auto-changelog": "^2.5.0",
+		"encoding": "^0.1.13",
+		"es-value-fixtures": "^1.5.0",
+		"eslint": "=8.8.0",
+		"for-each": "^0.3.3",
+		"function.prototype.name": "^1.1.6",
+		"npmignore": "^0.3.1",
+		"nyc": "^10.3.2",
+		"object-inspect": "^1.13.3",
+		"object-is": "^1.1.6",
+		"safe-publish-latest": "^2.0.0",
+		"tape": "^5.9.0",
+		"typescript": "next"
 	},
 	"testling": {
-		"files": "test",
-		"browsers": [
-			"iexplore/6.0..latest",
-			"firefox/3.0..6.0",
-			"firefox/15.0..latest",
-			"firefox/nightly",
-			"chrome/4.0..10.0",
-			"chrome/20.0..latest",
-			"chrome/canary",
-			"opera/10.0..latest",
-			"opera/next",
-			"safari/4.0..latest",
-			"ipad/6.0..latest",
-			"iphone/6.0..latest",
-			"android-browser/4.2"
-		]
+		"files": "test/index.js"
 	},
 	"engines": {
 		"node": ">= 0.4"
+	},
+	"auto-changelog": {
+		"output": "CHANGELOG.md",
+		"template": "keepachangelog",
+		"unreleased": false,
+		"commitLimit": false,
+		"backfillLimit": false,
+		"hideCredit": true,
+		"startingVersion": "1.2.2"
+	},
+	"publishConfig": {
+		"ignore": [
+			".github/workflows"
+		]
 	}
 }
Index: imaps-frontend/node_modules/es-to-primitive/test/es2015.js
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/test/es2015.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/es-to-primitive/test/es2015.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -4,10 +4,10 @@
 var toPrimitive = require('../es2015');
 var is = require('object-is');
-var forEach = require('foreach');
+var forEach = require('for-each');
 var functionName = require('function.prototype.name');
 var debug = require('object-inspect');
+var v = require('es-value-fixtures');
 
-var hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';
-var hasSymbolToPrimitive = hasSymbols && typeof Symbol.toPrimitive === 'symbol';
+/** @typedef {{ toString?: unknown, valueOf?: unknown, [Symbol.toPrimitive]?: unknown }} Coercible */
 
 test('function properties', function (t) {
@@ -18,8 +18,6 @@
 });
 
-var primitives = [null, undefined, true, false, 0, -0, 42, NaN, Infinity, -Infinity, '', 'abc'];
-
 test('primitives', function (t) {
-	forEach(primitives, function (i) {
+	forEach(v.primitives, function (i) {
 		t.ok(is(toPrimitive(i), i), 'toPrimitive(' + debug(i) + ') returns the same value');
 		t.ok(is(toPrimitive(i, String), i), 'toPrimitive(' + debug(i) + ', String) returns the same value');
@@ -29,11 +27,6 @@
 });
 
-test('Symbols', { skip: !hasSymbols }, function (t) {
-	var symbols = [
-		Symbol('foo'),
-		Symbol.iterator,
-		Symbol['for']('foo') // eslint-disable-line no-restricted-properties
-	];
-	forEach(symbols, function (sym) {
+test('Symbols', { skip: !v.hasSymbols }, function (t) {
+	forEach(v.symbols, function (sym) {
 		t.equal(toPrimitive(sym), sym, 'toPrimitive(' + debug(sym) + ') returns the same value');
 		t.equal(toPrimitive(sym, String), sym, 'toPrimitive(' + debug(sym) + ', String) returns the same value');
@@ -69,25 +62,12 @@
 });
 
-var coercibleObject = { valueOf: function () { return 3; }, toString: function () { return 42; } };
-var valueOfOnlyObject = { valueOf: function () { return 4; }, toString: function () { return {}; } };
-var toStringOnlyObject = { valueOf: function () { return {}; }, toString: function () { return 7; } };
-var coercibleFnObject = {
-	valueOf: function () { return function valueOfFn() {}; },
-	toString: function () { return 42; }
-};
-var uncoercibleObject = { valueOf: function () { return {}; }, toString: function () { return {}; } };
-var uncoercibleFnObject = {
-	valueOf: function () { return function valueOfFn() {}; },
-	toString: function () { return function toStrFn() {}; }
-};
+test('Objects', function (t) {
+	t.equal(toPrimitive(v.coercibleObject), v.coercibleObject.valueOf(), 'coercibleObject with no hint coerces to valueOf');
+	t.equal(toPrimitive(v.coercibleObject, Number), v.coercibleObject.valueOf(), 'coercibleObject with hint Number coerces to valueOf');
+	t.equal(toPrimitive(v.coercibleObject, String), v.coercibleObject.toString(), 'coercibleObject with hint String coerces to non-stringified toString');
 
-test('Objects', function (t) {
-	t.equal(toPrimitive(coercibleObject), coercibleObject.valueOf(), 'coercibleObject with no hint coerces to valueOf');
-	t.equal(toPrimitive(coercibleObject, Number), coercibleObject.valueOf(), 'coercibleObject with hint Number coerces to valueOf');
-	t.equal(toPrimitive(coercibleObject, String), coercibleObject.toString(), 'coercibleObject with hint String coerces to non-stringified toString');
-
-	t.equal(toPrimitive(coercibleFnObject), coercibleFnObject.toString(), 'coercibleFnObject coerces to non-stringified toString');
-	t.equal(toPrimitive(coercibleFnObject, Number), coercibleFnObject.toString(), 'coercibleFnObject with hint Number coerces to non-stringified toString');
-	t.equal(toPrimitive(coercibleFnObject, String), coercibleFnObject.toString(), 'coercibleFnObject with hint String coerces to non-stringified toString');
+	t.equal(toPrimitive(v.coercibleFnObject), v.coercibleFnObject.toString(), 'coercibleFnObject coerces to non-stringified toString');
+	t.equal(toPrimitive(v.coercibleFnObject, Number), v.coercibleFnObject.toString(), 'coercibleFnObject with hint Number coerces to non-stringified toString');
+	t.equal(toPrimitive(v.coercibleFnObject, String), v.coercibleFnObject.toString(), 'coercibleFnObject with hint String coerces to non-stringified toString');
 
 	t.equal(toPrimitive({}), '[object Object]', '{} with no hint coerces to Object#toString');
@@ -95,15 +75,18 @@
 	t.equal(toPrimitive({}, String), '[object Object]', '{} with hint String coerces to Object#toString');
 
-	t.equal(toPrimitive(toStringOnlyObject), toStringOnlyObject.toString(), 'toStringOnlyObject returns non-stringified toString');
-	t.equal(toPrimitive(toStringOnlyObject, Number), toStringOnlyObject.toString(), 'toStringOnlyObject with hint Number returns non-stringified toString');
-	t.equal(toPrimitive(toStringOnlyObject, String), toStringOnlyObject.toString(), 'toStringOnlyObject with hint String returns non-stringified toString');
+	t.equal(toPrimitive(v.toStringOnlyObject), v.toStringOnlyObject.toString(), 'toStringOnlyObject returns non-stringified toString');
+	t.equal(toPrimitive(v.toStringOnlyObject, Number), v.toStringOnlyObject.toString(), 'toStringOnlyObject with hint Number returns non-stringified toString');
+	t.equal(toPrimitive(v.toStringOnlyObject, String), v.toStringOnlyObject.toString(), 'toStringOnlyObject with hint String returns non-stringified toString');
 
-	t.equal(toPrimitive(valueOfOnlyObject), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject returns valueOf');
-	t.equal(toPrimitive(valueOfOnlyObject, Number), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint Number returns valueOf');
-	t.equal(toPrimitive(valueOfOnlyObject, String), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint String returns non-stringified valueOf');
+	t.equal(toPrimitive(v.valueOfOnlyObject), v.valueOfOnlyObject.valueOf(), 'valueOfOnlyObject returns valueOf');
+	t.equal(toPrimitive(v.valueOfOnlyObject, Number), v.valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint Number returns valueOf');
+	t.equal(toPrimitive(v.valueOfOnlyObject, String), v.valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint String returns non-stringified valueOf');
 
-	t.test('Symbol.toPrimitive', { skip: !hasSymbolToPrimitive }, function (st) {
+	t.test('Symbol.toPrimitive', { skip: !v.hasSymbols || !Symbol.toPrimitive }, function (st) {
+		/** @type {Coercible} */
 		var overriddenObject = { toString: st.fail, valueOf: st.fail };
-		overriddenObject[Symbol.toPrimitive] = function (hint) { return String(hint); };
+		overriddenObject[Symbol.toPrimitive] = /** @type {(hint: string) => unknown} */ function (hint) {
+			return String(hint);
+		};
 
 		st.equal(toPrimitive(overriddenObject), 'default', 'object with Symbol.toPrimitive + no hint invokes that');
@@ -111,23 +94,29 @@
 		st.equal(toPrimitive(overriddenObject, String), 'string', 'object with Symbol.toPrimitive + hint String invokes that');
 
-		var nullToPrimitive = { toString: coercibleObject.toString, valueOf: coercibleObject.valueOf };
+		/** @type {Coercible} */
+		var nullToPrimitive = { toString: v.coercibleObject.toString, valueOf: v.coercibleObject.valueOf };
 		nullToPrimitive[Symbol.toPrimitive] = null;
-		st.equal(toPrimitive(nullToPrimitive), toPrimitive(coercibleObject), 'object with no hint + null Symbol.toPrimitive ignores it');
-		st.equal(toPrimitive(nullToPrimitive, Number), toPrimitive(coercibleObject, Number), 'object with hint Number + null Symbol.toPrimitive ignores it');
-		st.equal(toPrimitive(nullToPrimitive, String), toPrimitive(coercibleObject, String), 'object with hint String + null Symbol.toPrimitive ignores it');
+		st.equal(toPrimitive(nullToPrimitive), toPrimitive(v.coercibleObject), 'object with no hint + null Symbol.toPrimitive ignores it');
+		st.equal(toPrimitive(nullToPrimitive, Number), toPrimitive(v.coercibleObject, Number), 'object with hint Number + null Symbol.toPrimitive ignores it');
+		st.equal(toPrimitive(nullToPrimitive, String), toPrimitive(v.coercibleObject, String), 'object with hint String + null Symbol.toPrimitive ignores it');
 
 		st.test('exceptions', function (sst) {
+			/** @type {Coercible} */
 			var nonFunctionToPrimitive = { toString: sst.fail, valueOf: sst.fail };
 			nonFunctionToPrimitive[Symbol.toPrimitive] = {};
 			sst['throws'](toPrimitive.bind(null, nonFunctionToPrimitive), TypeError, 'Symbol.toPrimitive returning a non-function throws');
 
+			/** @type {Coercible} */
 			var uncoercibleToPrimitive = { toString: sst.fail, valueOf: sst.fail };
-			uncoercibleToPrimitive[Symbol.toPrimitive] = function (hint) {
+			uncoercibleToPrimitive[Symbol.toPrimitive] = /** @type {(hint: string) => unknown} */ function (hint) {
 				return { toString: function () { return hint; } };
 			};
 			sst['throws'](toPrimitive.bind(null, uncoercibleToPrimitive), TypeError, 'Symbol.toPrimitive returning an object throws');
 
+			/** @type {Coercible} */
 			var throwingToPrimitive = { toString: sst.fail, valueOf: sst.fail };
-			throwingToPrimitive[Symbol.toPrimitive] = function (hint) { throw new RangeError(hint); };
+			throwingToPrimitive[Symbol.toPrimitive] = /** @type {(hint: string) => unknown} */ function (hint) {
+				throw new RangeError(hint);
+			};
 			sst['throws'](toPrimitive.bind(null, throwingToPrimitive), RangeError, 'Symbol.toPrimitive throwing throws');
 
@@ -139,11 +128,11 @@
 
 	t.test('exceptions', function (st) {
-		st['throws'](toPrimitive.bind(null, uncoercibleObject), TypeError, 'uncoercibleObject throws a TypeError');
-		st['throws'](toPrimitive.bind(null, uncoercibleObject, Number), TypeError, 'uncoercibleObject with hint Number throws a TypeError');
-		st['throws'](toPrimitive.bind(null, uncoercibleObject, String), TypeError, 'uncoercibleObject with hint String throws a TypeError');
+		st['throws'](toPrimitive.bind(null, v.uncoercibleObject), TypeError, 'uncoercibleObject throws a TypeError');
+		st['throws'](toPrimitive.bind(null, v.uncoercibleObject, Number), TypeError, 'uncoercibleObject with hint Number throws a TypeError');
+		st['throws'](toPrimitive.bind(null, v.uncoercibleObject, String), TypeError, 'uncoercibleObject with hint String throws a TypeError');
 
-		st['throws'](toPrimitive.bind(null, uncoercibleFnObject), TypeError, 'uncoercibleFnObject throws a TypeError');
-		st['throws'](toPrimitive.bind(null, uncoercibleFnObject, Number), TypeError, 'uncoercibleFnObject with hint Number throws a TypeError');
-		st['throws'](toPrimitive.bind(null, uncoercibleFnObject, String), TypeError, 'uncoercibleFnObject with hint String throws a TypeError');
+		st['throws'](toPrimitive.bind(null, v.uncoercibleFnObject), TypeError, 'uncoercibleFnObject throws a TypeError');
+		st['throws'](toPrimitive.bind(null, v.uncoercibleFnObject, Number), TypeError, 'uncoercibleFnObject with hint Number throws a TypeError');
+		st['throws'](toPrimitive.bind(null, v.uncoercibleFnObject, String), TypeError, 'uncoercibleFnObject with hint String throws a TypeError');
 		st.end();
 	});
Index: imaps-frontend/node_modules/es-to-primitive/test/es5.js
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/test/es5.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/es-to-primitive/test/es5.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -4,8 +4,8 @@
 var toPrimitive = require('../es5');
 var is = require('object-is');
-var forEach = require('foreach');
+var forEach = require('for-each');
 var functionName = require('function.prototype.name');
 var debug = require('object-inspect');
-var hasSymbols = require('has-symbols')();
+var v = require('es-value-fixtures');
 
 test('function properties', function (t) {
@@ -16,8 +16,6 @@
 });
 
-var primitives = [null, undefined, true, false, 0, -0, 42, NaN, Infinity, -Infinity, '', 'abc'];
-
 test('primitives', function (t) {
-	forEach(primitives, function (i) {
+	forEach(v.primitives, function (i) {
 		t.ok(is(toPrimitive(i), i), 'toPrimitive(' + debug(i) + ') returns the same value');
 		t.ok(is(toPrimitive(i, String), i), 'toPrimitive(' + debug(i) + ', String) returns the same value');
@@ -27,11 +25,6 @@
 });
 
-test('Symbols', { skip: !hasSymbols }, function (t) {
-	var symbols = [
-		Symbol('foo'),
-		Symbol.iterator,
-		Symbol['for']('foo') // eslint-disable-line no-restricted-properties
-	];
-	forEach(symbols, function (sym) {
+test('Symbols', { skip: !v.hasSymbols }, function (t) {
+	forEach(v.symbols, function (sym) {
 		t.equal(toPrimitive(sym), sym, 'toPrimitive(' + debug(sym) + ') returns the same value');
 		t.equal(toPrimitive(sym, String), sym, 'toPrimitive(' + debug(sym) + ', String) returns the same value');
@@ -70,25 +63,12 @@
 });
 
-var coercibleObject = { valueOf: function () { return 3; }, toString: function () { return 42; } };
-var valueOfOnlyObject = { valueOf: function () { return 4; }, toString: function () { return {}; } };
-var toStringOnlyObject = { valueOf: function () { return {}; }, toString: function () { return 7; } };
-var coercibleFnObject = {
-	valueOf: function () { return function valueOfFn() {}; },
-	toString: function () { return 42; }
-};
-var uncoercibleObject = { valueOf: function () { return {}; }, toString: function () { return {}; } };
-var uncoercibleFnObject = {
-	valueOf: function () { return function valueOfFn() {}; },
-	toString: function () { return function toStrFn() {}; }
-};
+test('Objects', function (t) {
+	t.equal(toPrimitive(v.coercibleObject), v.coercibleObject.valueOf(), 'coercibleObject with no hint coerces to valueOf');
+	t.equal(toPrimitive(v.coercibleObject, String), v.coercibleObject.toString(), 'coercibleObject with hint String coerces to toString');
+	t.equal(toPrimitive(v.coercibleObject, Number), v.coercibleObject.valueOf(), 'coercibleObject with hint Number coerces to valueOf');
 
-test('Objects', function (t) {
-	t.equal(toPrimitive(coercibleObject), coercibleObject.valueOf(), 'coercibleObject with no hint coerces to valueOf');
-	t.equal(toPrimitive(coercibleObject, String), coercibleObject.toString(), 'coercibleObject with hint String coerces to toString');
-	t.equal(toPrimitive(coercibleObject, Number), coercibleObject.valueOf(), 'coercibleObject with hint Number coerces to valueOf');
-
-	t.equal(toPrimitive(coercibleFnObject), coercibleFnObject.toString(), 'coercibleFnObject coerces to toString');
-	t.equal(toPrimitive(coercibleFnObject, String), coercibleFnObject.toString(), 'coercibleFnObject with hint String coerces to toString');
-	t.equal(toPrimitive(coercibleFnObject, Number), coercibleFnObject.toString(), 'coercibleFnObject with hint Number coerces to toString');
+	t.equal(toPrimitive(v.coercibleFnObject), v.coercibleFnObject.toString(), 'coercibleFnObject coerces to toString');
+	t.equal(toPrimitive(v.coercibleFnObject, String), v.coercibleFnObject.toString(), 'coercibleFnObject with hint String coerces to toString');
+	t.equal(toPrimitive(v.coercibleFnObject, Number), v.coercibleFnObject.toString(), 'coercibleFnObject with hint Number coerces to toString');
 
 	t.ok(is(toPrimitive({}), '[object Object]'), '{} with no hint coerces to Object#toString');
@@ -96,20 +76,20 @@
 	t.ok(is(toPrimitive({}, Number), '[object Object]'), '{} with hint Number coerces to Object#toString');
 
-	t.equal(toPrimitive(toStringOnlyObject), toStringOnlyObject.toString(), 'toStringOnlyObject returns toString');
-	t.equal(toPrimitive(toStringOnlyObject, String), toStringOnlyObject.toString(), 'toStringOnlyObject with hint String returns toString');
-	t.equal(toPrimitive(toStringOnlyObject, Number), toStringOnlyObject.toString(), 'toStringOnlyObject with hint Number returns toString');
+	t.equal(toPrimitive(v.toStringOnlyObject), v.toStringOnlyObject.toString(), 'toStringOnlyObject returns toString');
+	t.equal(toPrimitive(v.toStringOnlyObject, String), v.toStringOnlyObject.toString(), 'toStringOnlyObject with hint String returns toString');
+	t.equal(toPrimitive(v.toStringOnlyObject, Number), v.toStringOnlyObject.toString(), 'toStringOnlyObject with hint Number returns toString');
 
-	t.equal(toPrimitive(valueOfOnlyObject), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject returns valueOf');
-	t.equal(toPrimitive(valueOfOnlyObject, String), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint String returns valueOf');
-	t.equal(toPrimitive(valueOfOnlyObject, Number), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint Number returns valueOf');
+	t.equal(toPrimitive(v.valueOfOnlyObject), v.valueOfOnlyObject.valueOf(), 'valueOfOnlyObject returns valueOf');
+	t.equal(toPrimitive(v.valueOfOnlyObject, String), v.valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint String returns valueOf');
+	t.equal(toPrimitive(v.valueOfOnlyObject, Number), v.valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint Number returns valueOf');
 
 	t.test('exceptions', function (st) {
-		st['throws'](toPrimitive.bind(null, uncoercibleObject), TypeError, 'uncoercibleObject throws a TypeError');
-		st['throws'](toPrimitive.bind(null, uncoercibleObject, String), TypeError, 'uncoercibleObject with hint String throws a TypeError');
-		st['throws'](toPrimitive.bind(null, uncoercibleObject, Number), TypeError, 'uncoercibleObject with hint Number throws a TypeError');
+		st['throws'](toPrimitive.bind(null, v.uncoercibleObject), TypeError, 'uncoercibleObject throws a TypeError');
+		st['throws'](toPrimitive.bind(null, v.uncoercibleObject, String), TypeError, 'uncoercibleObject with hint String throws a TypeError');
+		st['throws'](toPrimitive.bind(null, v.uncoercibleObject, Number), TypeError, 'uncoercibleObject with hint Number throws a TypeError');
 
-		st['throws'](toPrimitive.bind(null, uncoercibleFnObject), TypeError, 'uncoercibleFnObject throws a TypeError');
-		st['throws'](toPrimitive.bind(null, uncoercibleFnObject, String), TypeError, 'uncoercibleFnObject with hint String throws a TypeError');
-		st['throws'](toPrimitive.bind(null, uncoercibleFnObject, Number), TypeError, 'uncoercibleFnObject with hint Number throws a TypeError');
+		st['throws'](toPrimitive.bind(null, v.uncoercibleFnObject), TypeError, 'uncoercibleFnObject throws a TypeError');
+		st['throws'](toPrimitive.bind(null, v.uncoercibleFnObject, String), TypeError, 'uncoercibleFnObject with hint String throws a TypeError');
+		st['throws'](toPrimitive.bind(null, v.uncoercibleFnObject, Number), TypeError, 'uncoercibleFnObject with hint Number throws a TypeError');
 		st.end();
 	});
Index: imaps-frontend/node_modules/es-to-primitive/test/es6.js
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/test/es6.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/es-to-primitive/test/es6.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -4,10 +4,10 @@
 var toPrimitive = require('../es6');
 var is = require('object-is');
-var forEach = require('foreach');
+var forEach = require('for-each');
 var functionName = require('function.prototype.name');
 var debug = require('object-inspect');
+var v = require('es-value-fixtures');
 
-var hasSymbols = require('has-symbols')();
-var hasSymbolToPrimitive = hasSymbols && typeof Symbol.toPrimitive === 'symbol';
+/** @typedef {{ toString?: unknown, valueOf?: unknown, [Symbol.toPrimitive]?: unknown }} Coercible */
 
 test('function properties', function (t) {
@@ -18,8 +18,6 @@
 });
 
-var primitives = [null, undefined, true, false, 0, -0, 42, NaN, Infinity, -Infinity, '', 'abc'];
-
 test('primitives', function (t) {
-	forEach(primitives, function (i) {
+	forEach(v.primitives, function (i) {
 		t.ok(is(toPrimitive(i), i), 'toPrimitive(' + debug(i) + ') returns the same value');
 		t.ok(is(toPrimitive(i, String), i), 'toPrimitive(' + debug(i) + ', String) returns the same value');
@@ -29,11 +27,6 @@
 });
 
-test('Symbols', { skip: !hasSymbols }, function (t) {
-	var symbols = [
-		Symbol('foo'),
-		Symbol.iterator,
-		Symbol['for']('foo') // eslint-disable-line no-restricted-properties
-	];
-	forEach(symbols, function (sym) {
+test('Symbols', { skip: !v.hasSymbols }, function (t) {
+	forEach(v.symbols, function (sym) {
 		t.equal(toPrimitive(sym), sym, 'toPrimitive(' + debug(sym) + ') returns the same value');
 		t.equal(toPrimitive(sym, String), sym, 'toPrimitive(' + debug(sym) + ', String) returns the same value');
@@ -69,25 +62,12 @@
 });
 
-var coercibleObject = { valueOf: function () { return 3; }, toString: function () { return 42; } };
-var valueOfOnlyObject = { valueOf: function () { return 4; }, toString: function () { return {}; } };
-var toStringOnlyObject = { valueOf: function () { return {}; }, toString: function () { return 7; } };
-var coercibleFnObject = {
-	valueOf: function () { return function valueOfFn() {}; },
-	toString: function () { return 42; }
-};
-var uncoercibleObject = { valueOf: function () { return {}; }, toString: function () { return {}; } };
-var uncoercibleFnObject = {
-	valueOf: function () { return function valueOfFn() {}; },
-	toString: function () { return function toStrFn() {}; }
-};
+test('Objects', function (t) {
+	t.equal(toPrimitive(v.coercibleObject), v.coercibleObject.valueOf(), 'coercibleObject with no hint coerces to valueOf');
+	t.equal(toPrimitive(v.coercibleObject, Number), v.coercibleObject.valueOf(), 'coercibleObject with hint Number coerces to valueOf');
+	t.equal(toPrimitive(v.coercibleObject, String), v.coercibleObject.toString(), 'coercibleObject with hint String coerces to non-stringified toString');
 
-test('Objects', function (t) {
-	t.equal(toPrimitive(coercibleObject), coercibleObject.valueOf(), 'coercibleObject with no hint coerces to valueOf');
-	t.equal(toPrimitive(coercibleObject, Number), coercibleObject.valueOf(), 'coercibleObject with hint Number coerces to valueOf');
-	t.equal(toPrimitive(coercibleObject, String), coercibleObject.toString(), 'coercibleObject with hint String coerces to non-stringified toString');
-
-	t.equal(toPrimitive(coercibleFnObject), coercibleFnObject.toString(), 'coercibleFnObject coerces to non-stringified toString');
-	t.equal(toPrimitive(coercibleFnObject, Number), coercibleFnObject.toString(), 'coercibleFnObject with hint Number coerces to non-stringified toString');
-	t.equal(toPrimitive(coercibleFnObject, String), coercibleFnObject.toString(), 'coercibleFnObject with hint String coerces to non-stringified toString');
+	t.equal(toPrimitive(v.coercibleFnObject), v.coercibleFnObject.toString(), 'coercibleFnObject coerces to non-stringified toString');
+	t.equal(toPrimitive(v.coercibleFnObject, Number), v.coercibleFnObject.toString(), 'coercibleFnObject with hint Number coerces to non-stringified toString');
+	t.equal(toPrimitive(v.coercibleFnObject, String), v.coercibleFnObject.toString(), 'coercibleFnObject with hint String coerces to non-stringified toString');
 
 	t.equal(toPrimitive({}), '[object Object]', '{} with no hint coerces to Object#toString');
@@ -95,15 +75,18 @@
 	t.equal(toPrimitive({}, String), '[object Object]', '{} with hint String coerces to Object#toString');
 
-	t.equal(toPrimitive(toStringOnlyObject), toStringOnlyObject.toString(), 'toStringOnlyObject returns non-stringified toString');
-	t.equal(toPrimitive(toStringOnlyObject, Number), toStringOnlyObject.toString(), 'toStringOnlyObject with hint Number returns non-stringified toString');
-	t.equal(toPrimitive(toStringOnlyObject, String), toStringOnlyObject.toString(), 'toStringOnlyObject with hint String returns non-stringified toString');
+	t.equal(toPrimitive(v.toStringOnlyObject), v.toStringOnlyObject.toString(), 'toStringOnlyObject returns non-stringified toString');
+	t.equal(toPrimitive(v.toStringOnlyObject, Number), v.toStringOnlyObject.toString(), 'toStringOnlyObject with hint Number returns non-stringified toString');
+	t.equal(toPrimitive(v.toStringOnlyObject, String), v.toStringOnlyObject.toString(), 'toStringOnlyObject with hint String returns non-stringified toString');
 
-	t.equal(toPrimitive(valueOfOnlyObject), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject returns valueOf');
-	t.equal(toPrimitive(valueOfOnlyObject, Number), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint Number returns valueOf');
-	t.equal(toPrimitive(valueOfOnlyObject, String), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint String returns non-stringified valueOf');
+	t.equal(toPrimitive(v.valueOfOnlyObject), v.valueOfOnlyObject.valueOf(), 'valueOfOnlyObject returns valueOf');
+	t.equal(toPrimitive(v.valueOfOnlyObject, Number), v.valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint Number returns valueOf');
+	t.equal(toPrimitive(v.valueOfOnlyObject, String), v.valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint String returns non-stringified valueOf');
 
-	t.test('Symbol.toPrimitive', { skip: !hasSymbolToPrimitive }, function (st) {
+	t.test('Symbol.toPrimitive', { skip: !v.hasSymbols || !Symbol.toPrimitive }, function (st) {
+		/** @type {Coercible} */
 		var overriddenObject = { toString: st.fail, valueOf: st.fail };
-		overriddenObject[Symbol.toPrimitive] = function (hint) { return String(hint); };
+		overriddenObject[Symbol.toPrimitive] = /** @type {(hint: string) => unknown} */ function (hint) {
+			return String(hint);
+		};
 
 		st.equal(toPrimitive(overriddenObject), 'default', 'object with Symbol.toPrimitive + no hint invokes that');
@@ -111,23 +94,29 @@
 		st.equal(toPrimitive(overriddenObject, String), 'string', 'object with Symbol.toPrimitive + hint String invokes that');
 
-		var nullToPrimitive = { toString: coercibleObject.toString, valueOf: coercibleObject.valueOf };
+		/** @type {Coercible} */
+		var nullToPrimitive = { toString: v.coercibleObject.toString, valueOf: v.coercibleObject.valueOf };
 		nullToPrimitive[Symbol.toPrimitive] = null;
-		st.equal(toPrimitive(nullToPrimitive), toPrimitive(coercibleObject), 'object with no hint + null Symbol.toPrimitive ignores it');
-		st.equal(toPrimitive(nullToPrimitive, Number), toPrimitive(coercibleObject, Number), 'object with hint Number + null Symbol.toPrimitive ignores it');
-		st.equal(toPrimitive(nullToPrimitive, String), toPrimitive(coercibleObject, String), 'object with hint String + null Symbol.toPrimitive ignores it');
+		st.equal(toPrimitive(nullToPrimitive), toPrimitive(v.coercibleObject), 'object with no hint + null Symbol.toPrimitive ignores it');
+		st.equal(toPrimitive(nullToPrimitive, Number), toPrimitive(v.coercibleObject, Number), 'object with hint Number + null Symbol.toPrimitive ignores it');
+		st.equal(toPrimitive(nullToPrimitive, String), toPrimitive(v.coercibleObject, String), 'object with hint String + null Symbol.toPrimitive ignores it');
 
 		st.test('exceptions', function (sst) {
+			/** @type {Coercible} */
 			var nonFunctionToPrimitive = { toString: sst.fail, valueOf: sst.fail };
 			nonFunctionToPrimitive[Symbol.toPrimitive] = {};
 			sst['throws'](toPrimitive.bind(null, nonFunctionToPrimitive), TypeError, 'Symbol.toPrimitive returning a non-function throws');
 
+			/** @type {Coercible} */
 			var uncoercibleToPrimitive = { toString: sst.fail, valueOf: sst.fail };
-			uncoercibleToPrimitive[Symbol.toPrimitive] = function (hint) {
+			uncoercibleToPrimitive[Symbol.toPrimitive] = /** @type {(hint: string) => unknown} */ function (hint) {
 				return { toString: function () { return hint; } };
 			};
 			sst['throws'](toPrimitive.bind(null, uncoercibleToPrimitive), TypeError, 'Symbol.toPrimitive returning an object throws');
 
+			/** @type {Coercible} */
 			var throwingToPrimitive = { toString: sst.fail, valueOf: sst.fail };
-			throwingToPrimitive[Symbol.toPrimitive] = function (hint) { throw new RangeError(hint); };
+			throwingToPrimitive[Symbol.toPrimitive] = /** @type {(hint: string) => unknown} */ function (hint) {
+				throw new RangeError(hint);
+			};
 			sst['throws'](toPrimitive.bind(null, throwingToPrimitive), RangeError, 'Symbol.toPrimitive throwing throws');
 
@@ -139,11 +128,11 @@
 
 	t.test('exceptions', function (st) {
-		st['throws'](toPrimitive.bind(null, uncoercibleObject), TypeError, 'uncoercibleObject throws a TypeError');
-		st['throws'](toPrimitive.bind(null, uncoercibleObject, Number), TypeError, 'uncoercibleObject with hint Number throws a TypeError');
-		st['throws'](toPrimitive.bind(null, uncoercibleObject, String), TypeError, 'uncoercibleObject with hint String throws a TypeError');
+		st['throws'](toPrimitive.bind(null, v.uncoercibleObject), TypeError, 'uncoercibleObject throws a TypeError');
+		st['throws'](toPrimitive.bind(null, v.uncoercibleObject, Number), TypeError, 'uncoercibleObject with hint Number throws a TypeError');
+		st['throws'](toPrimitive.bind(null, v.uncoercibleObject, String), TypeError, 'uncoercibleObject with hint String throws a TypeError');
 
-		st['throws'](toPrimitive.bind(null, uncoercibleFnObject), TypeError, 'uncoercibleFnObject throws a TypeError');
-		st['throws'](toPrimitive.bind(null, uncoercibleFnObject, Number), TypeError, 'uncoercibleFnObject with hint Number throws a TypeError');
-		st['throws'](toPrimitive.bind(null, uncoercibleFnObject, String), TypeError, 'uncoercibleFnObject with hint String throws a TypeError');
+		st['throws'](toPrimitive.bind(null, v.uncoercibleFnObject), TypeError, 'uncoercibleFnObject throws a TypeError');
+		st['throws'](toPrimitive.bind(null, v.uncoercibleFnObject, Number), TypeError, 'uncoercibleFnObject with hint Number throws a TypeError');
+		st['throws'](toPrimitive.bind(null, v.uncoercibleFnObject, String), TypeError, 'uncoercibleFnObject with hint String throws a TypeError');
 		st.end();
 	});
Index: imaps-frontend/node_modules/es-to-primitive/tsconfig.json
===================================================================
--- imaps-frontend/node_modules/es-to-primitive/tsconfig.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/es-to-primitive/tsconfig.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -0,0 +1,9 @@
+{
+	"extends": "@ljharb/tsconfig",
+	"compilerOptions": {
+		"target": "es2021",
+	},
+	"exclude": [
+		"coverage",
+	],
+}
