Skip to content

Commit 39fb0d6

Browse files
committed
fix: use closure, prevent repl_internal to be access by user
1 parent d15ea21 commit 39fb0d6

File tree

1 file changed

+45
-45
lines changed

1 file changed

+45
-45
lines changed

cli/tools/repl/session.rs

+45-45
Original file line numberDiff line numberDiff line change
@@ -90,53 +90,53 @@ thread_local! {
9090
pub static REPL_INTERNAL_OBJECT_ID: RefCell<Option<RemoteObjectId>> = const { RefCell::new(None) };
9191
}
9292
fn get_prelude() -> String {
93-
r#"
94-
const repl_internal = {
95-
lastEvalResult: undefined,
96-
lastThrownError: undefined,
97-
inspectArgs: Deno[Deno.internal].inspectArgs,
98-
noColor: Deno.noColor,
99-
get closed() {
100-
try {
101-
return typeof globalThis.closed === 'undefined' ? false : globalThis.closed;
102-
} catch {
103-
return false;
93+
r#"(() => {
94+
const repl_internal = {
95+
lastEvalResult: undefined,
96+
lastThrownError: undefined,
97+
inspectArgs: Deno[Deno.internal].inspectArgs,
98+
noColor: Deno.noColor,
99+
get closed() {
100+
try {
101+
return typeof globalThis.closed === 'undefined' ? false : globalThis.closed;
102+
} catch {
103+
return false;
104+
}
104105
}
105106
}
106-
}
107-
Object.defineProperty(globalThis, "_", {
108-
configurable: true,
109-
get: () => repl_internal.lastEvalResult,
110-
set: (value) => {
111-
Object.defineProperty(globalThis, "_", {
112-
value: value,
113-
writable: true,
114-
enumerable: true,
115-
configurable: true,
116-
});
117-
console.log("Last evaluation result is no longer saved to _.");
118-
},
119-
});
120-
121-
Object.defineProperty(globalThis, "_error", {
122-
configurable: true,
123-
get: () => repl_internal.lastThrownError,
124-
set: (value) => {
125-
Object.defineProperty(globalThis, "_error", {
126-
value: value,
127-
writable: true,
128-
enumerable: true,
129-
configurable: true,
130-
});
131-
132-
console.log("Last thrown error is no longer saved to _error.");
133-
},
134-
});
135-
136-
globalThis.clear = console.clear.bind(console);
137-
138-
repl_internal
139-
"#.to_string()
107+
Object.defineProperty(globalThis, "_", {
108+
configurable: true,
109+
get: () => repl_internal.lastEvalResult,
110+
set: (value) => {
111+
Object.defineProperty(globalThis, "_", {
112+
value: value,
113+
writable: true,
114+
enumerable: true,
115+
configurable: true,
116+
});
117+
console.log("Last evaluation result is no longer saved to _.");
118+
},
119+
});
120+
121+
Object.defineProperty(globalThis, "_error", {
122+
configurable: true,
123+
get: () => repl_internal.lastThrownError,
124+
set: (value) => {
125+
Object.defineProperty(globalThis, "_error", {
126+
value: value,
127+
writable: true,
128+
enumerable: true,
129+
configurable: true,
130+
});
131+
132+
console.log("Last thrown error is no longer saved to _error.");
133+
},
134+
});
135+
136+
globalThis.clear = console.clear.bind(console);
137+
138+
return repl_internal
139+
})()"#.to_string()
140140
}
141141

142142
pub enum EvaluationOutput {

0 commit comments

Comments
 (0)