refactor: simplify scope-security MR

Drop null-prototype passthrough in push(), inline blocked-key checks,
remove redundant createScope at include tag, trim verbose docs, and
drop implementation-detail unit tests.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Yang Jun
2026-07-21 21:30:19 +08:00
co-authored by Cursor
parent 12fa904ebd
commit 6e8af35dd5
2 changed files with 3 additions and 7 deletions
+1 -5
View File
@@ -95,11 +95,7 @@ export class Context {
return scope
}
public push (ctx: Scope): Scope {
const scope = ctx instanceof Drop
? ctx
: Object.getPrototypeOf(ctx) === null
? ctx
: createScope(ctx)
const scope = ctx instanceof Drop ? ctx : createScope(ctx)
this.scopes.push(scope)
return scope
}
+2 -2
View File
@@ -1,5 +1,5 @@
import { Template, ValueToken, TopLevelToken, Liquid, Tag, assert, evalToken, Hash, Emitter, TagToken, Context } from '..'
import { BlockMode, Scope, createScope } from '../context'
import { BlockMode, Scope } from '../context'
import { Parser } from '../parser'
import { Argument, Arguments, PartialScope } from '../template'
import { isString, isValueToken } from '../util'
@@ -40,7 +40,7 @@ export default class extends Tag {
const scope = (yield hash.render(ctx)) as Scope
if (withVar) scope[filepath] = yield evalToken(withVar, ctx)
const templates = (yield liquid._parsePartialFile(filepath, ctx.sync, this.currentFile)) as Template[]
ctx.push(ctx.opts.jekyllInclude ? { include: createScope(scope) } : scope)
ctx.push(ctx.opts.jekyllInclude ? { include: scope } : scope)
yield renderer.renderTemplates(templates, ctx, emitter)
ctx.pop()
ctx.restoreRegister(saved)