Skip to content

Commit

Permalink
refactor(runtime): seal ES module namespace object instead of feezing (
Browse files Browse the repository at this point in the history
  • Loading branch information
sheremet-va authored Feb 14, 2024
1 parent 63a39c2 commit 4172f02
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,22 @@ describe('vite-runtime initialization', async () => {

it('exports is not modifiable', async ({ runtime }) => {
const mod = await runtime.executeUrl('/fixtures/simple.js')
expect(Object.isSealed(mod)).toBe(true)
expect(() => {
mod.test = 'I am modified'
}).toThrowErrorMatchingInlineSnapshot(
`[TypeError: Cannot set property test of [object Module] which has only a getter]`,
)
expect(() => {
delete mod.test
}).toThrowErrorMatchingInlineSnapshot(
`[TypeError: Cannot delete property 'test' of [object Module]]`,
)
expect(() => {
Object.defineProperty(mod, 'test', { value: 'I am modified' })
}).toThrowErrorMatchingInlineSnapshot(
`[TypeError: Cannot redefine property: test]`,
)
expect(() => {
mod.other = 'I am added'
}).toThrowErrorMatchingInlineSnapshot(
Expand Down
2 changes: 1 addition & 1 deletion packages/vite/src/node/ssr/runtime/esmRunner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export class ESModulesRunner implements ViteModuleRunner {
context[ssrExportAllKey],
)

Object.freeze(context[ssrModuleExportsKey])
Object.seal(context[ssrModuleExportsKey])
}

runExternalModule(filepath: string): Promise<any> {
Expand Down

0 comments on commit 4172f02

Please sign in to comment.