-
Notifications
You must be signed in to change notification settings - Fork 4
Description
Файл
src/compiler/EndorphinContext.ts, см. TODO на строке 25
Чтобы создать компонент и какие-то особые внутренние примитивы используются специальные символы из модуля endorphin:
import { defineComponent, html } from 'endorphin';
export default defineComponent(() => {
return html`<div>...</div>`;
});Однако учитывая, что мы пишем в JS, пользователь может написать вот так:
import { defineComponent def, html as h } from 'endorphin';
export default def(() => {
return h`<div>...</div>`;
});То есть он может переименовать специальные символы (defineComponent, html) в свои (def, h) и использовать для описания компонент.
Класс EndorphinContext как раз отвечает за то, чтобы проверить, что какой-то узел AST является специальным, требующим особой обработки. Но он сейчас понимает только стандартные названия символов. Нужно научить его собирать реальные символы, которые используются в указанном AST модуля. Как минимум нужно это сделать для импортов. Максимум — понимать вот такие записи в том числе (лучше отдельным PR):
import { defineComponent, html } from 'endorphin';
const def = defineComponent;
export default def(() => {
return html`<div>...</div>`;
});