perf: check allowPropertyNames

This commit is contained in:
lisonge
2024-01-18 21:45:34 +08:00
parent 04cb5362de
commit 70af6e10ee
3 changed files with 444 additions and 506 deletions

View File

@@ -1,5 +1,40 @@
import { CommonSelector } from '@gkd-kit/selector';
export const parseSelector = (source: string) => {
return CommonSelector.Companion.parse(source);
const selector = CommonSelector.Companion.parse(source);
selector.propertyNames.forEach((name) => {
if (!allowPropertyNames.has(name)) {
throw new Error(`Property ${name} is not allowed in selector`);
}
});
};
const allowPropertyNames = new Set([
'id',
'vid',
'name',
'text',
'text.length',
'desc',
'desc.length',
'clickable',
'focusable',
'checkable',
'checked',
'editable',
'longClickable',
'visibleToUser',
'left',
'top',
'right',
'bottom',
'width',
'height',
'index',
'depth',
'childCount',
]);