diff --git a/cli/tests/unit/webstorage_test.ts b/cli/tests/unit/webstorage_test.ts new file mode 100644 index 0000000000..df32e9edb6 --- /dev/null +++ b/cli/tests/unit/webstorage_test.ts @@ -0,0 +1,13 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. +// deno-lint-ignore-file no-explicit-any + +import { assert } from "./test_util.ts"; + +Deno.test({ permissions: "none" }, function webStoragesReassignable() { + // Can reassign to web storages + globalThis.localStorage = 1 as any; + globalThis.sessionStorage = 1 as any; + // The actual values don't change + assert(globalThis.localStorage instanceof globalThis.Storage); + assert(globalThis.sessionStorage instanceof globalThis.Storage); +}); diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js index 9b4a9e8572..c7faefcdda 100644 --- a/runtime/js/99_main.js +++ b/runtime/js/99_main.js @@ -587,11 +587,15 @@ delete Intl.v8BreakIterator; configurable: true, enumerable: true, get: webStorage.localStorage, + // Makes this reassignable to make astro work + set: () => {}, }, sessionStorage: { configurable: true, enumerable: true, get: webStorage.sessionStorage, + // Makes this reassignable to make astro work + set: () => {}, }, Storage: util.nonEnumerable(webStorage.Storage), };