babel-plugin-essor 0.0.5 → 0.0.6-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/dist/index.cjs +818 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +18 -0
- package/dist/index.d.ts +17 -3
- package/dist/index.js +816 -4
- package/dist/index.js.map +1 -1
- package/package.json +21 -41
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export const one = 1;\nexport const two = 2;\n"],"mappings":";AAAO,IAAM,MAAM;AACZ,IAAM,MAAM;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/jsx/server.ts","../src/program.ts","../src/jsx/constants.ts","../src/jsx/client.ts","../src/jsx/index.ts","../src/signal/symbol.ts","../src/signal/import.ts","../src/index.ts"],"sourcesContent":["import { types as t } from '@babel/core';\nimport { imports } from '../program';\nimport { selfClosingTags, svgTags } from './constants';\nimport { getAttrName, getTagName, isComponent, isTextChild } from './client';\nimport type { State } from '../types';\nimport type { NodePath } from '@babel/core';\ntype JSXElement = t.JSXElement | t.JSXFragment;\ninterface Result {\n index: number;\n isLastChild: boolean;\n parentIndex: number;\n props: Record<string, any>;\n template: string[];\n}\n\ntype JSXChild =\n | t.JSXElement\n | t.JSXFragment\n | t.JSXExpressionContainer\n | t.JSXSpreadChild\n | t.JSXText;\n\nexport function transformJSXService(path: NodePath<JSXElement>): void {\n const result: Result = {\n index: 0,\n isLastChild: false,\n parentIndex: 0,\n props: {},\n template: [], // 修改为数组\n };\n transformJSXServiceElement(path, result, true);\n path.replaceWith(createEssorNode(path, result));\n}\n\nfunction createEssorNode(path: NodePath<JSXElement>, result: Result): t.CallExpression {\n const state: State = path.state;\n\n let tmpl: t.Identifier;\n if (path.isJSXElement() && isComponent(getTagName(path.node))) {\n tmpl = t.identifier(getTagName(path.node));\n } else {\n tmpl = path.scope.generateUidIdentifier('_tmpl$');\n const template = t.callExpression(state.ssrtmpl, [\n t.arrayExpression(result.template.map(t.stringLiteral)),\n ]);\n const declarator = t.variableDeclarator(tmpl, template);\n state.tmplDeclaration.declarations.push(declarator);\n\n imports.add('ssrtmpl');\n }\n\n const args = [tmpl, createProps(result.props)];\n const key = result.props.key || result.props[0]?.key;\n if (key) {\n args.push(key);\n }\n imports.add('ssr');\n return t.callExpression(state.ssr, args);\n}\n\nfunction createProps(props: Record<string, any>): t.ObjectExpression {\n const result: (t.ObjectProperty | t.SpreadElement)[] = [];\n\n for (const prop in props) {\n let value = props[prop];\n\n if (prop === 'key') {\n continue;\n }\n\n if (Array.isArray(value)) {\n value = t.arrayExpression(value);\n }\n\n if (typeof value === 'object' && value !== null && !t.isNode(value)) {\n value = createProps(value);\n }\n\n if (typeof value === 'string') {\n value = t.stringLiteral(value);\n }\n\n if (typeof value === 'number') {\n value = t.numericLiteral(value);\n }\n\n if (typeof value === 'boolean') {\n value = t.booleanLiteral(value);\n }\n\n if (value === undefined) {\n value = t.tsUndefinedKeyword();\n }\n\n if (value === null) {\n value = t.nullLiteral();\n }\n\n if (prop === '_$spread$') {\n result.push(t.spreadElement(value));\n } else {\n result.push(t.objectProperty(t.stringLiteral(prop), value));\n }\n }\n\n return t.objectExpression(result);\n}\nfunction transformJSXServiceElement(\n path: NodePath<JSXElement>,\n result: Result,\n isRoot: boolean = false,\n): void {\n if (path.isJSXElement()) {\n const tagName = getTagName(path.node);\n const tagIsComponent = isComponent(tagName);\n const isSelfClose = !tagIsComponent && selfClosingTags.includes(tagName);\n const isSvg = svgTags.includes(tagName) && result.index === 1;\n const { props, hasExpression } = getAttrProps(path);\n if (tagIsComponent) {\n if (isRoot) {\n result.props = props;\n const children = getChildren(path) as any;\n if (children.length > 0) {\n const childrenGenerator =\n children.length === 1 ? children[0] : t.arrayExpression(children);\n result.props.children = childrenGenerator;\n }\n } else {\n transformJSXService(path);\n replaceChild(path.node, result);\n }\n } else {\n if (isSvg) {\n result.template.push('<svg _svg_>');\n }\n result.template.push(`<${tagName}`);\n handleAttributes(props, result);\n\n if (hasExpression) {\n result.template.push(isSelfClose ? '/>' : '>');\n result.props ||= {};\n } else {\n result.template[result.template.length - 1] += isSelfClose ? '/>' : '>';\n }\n transformChildren(path, result);\n\n if (!isSelfClose) {\n result.template.push(`</${tagName}>`);\n }\n }\n } else {\n result.index--;\n transformChildren(path, result);\n }\n}\n\nfunction transformChildren(path: NodePath<JSXElement>, result: Result): void {\n const parentIndex = result.template.length;\n path\n .get('children')\n .reduce((pre, cur) => {\n if (isValidChild(cur)) {\n const lastChild = pre.at(-1);\n if (lastChild && isTextChild(cur) && isTextChild(lastChild)) {\n setNodeText(lastChild, getNodeText(lastChild) + getNodeText(cur));\n } else {\n pre.push(cur);\n }\n }\n return pre;\n }, [] as NodePath<JSXChild>[])\n .forEach((child, i, arr) => {\n result.parentIndex = parentIndex;\n result.isLastChild = i === arr.length - 1;\n transformChild(child, result);\n });\n}\n\nfunction transformChild(child: NodePath<JSXChild>, result: Result): void {\n if (child.isJSXElement() || child.isJSXFragment()) {\n transformJSXServiceElement(child, result, false);\n } else if (child.isJSXExpressionContainer()) {\n const expression = child.get('expression');\n if (expression.isStringLiteral() || expression.isNumericLiteral()) {\n result.template[result.template.length - 1] += String(expression.node.value);\n } else if (expression.isExpression()) {\n replaceChild(expression.node, result);\n } else {\n throw new Error('Unsupported child type');\n }\n } else if (child.isJSXText()) {\n result.template.push(String(child.node.value));\n } else {\n throw new Error('Unsupported child type');\n }\n}\n\nfunction getNodeText(path: NodePath<JSXChild>): string {\n if (path.isJSXText()) {\n return path.node.value;\n }\n if (path.isJSXExpressionContainer()) {\n const expression = path.get('expression');\n if (expression.isStringLiteral() || expression.isNumericLiteral()) {\n return String(expression.node.value);\n }\n }\n return '';\n}\nfunction setNodeText(path: NodePath<JSXChild>, text: string): void {\n if (path.isJSXText()) {\n path.node.value = text;\n }\n if (path.isJSXExpressionContainer()) {\n const expression = path.get('expression');\n if (expression.isStringLiteral() || expression.isNumericLiteral()) {\n expression.replaceWith(t.stringLiteral(text));\n }\n }\n}\n\nfunction handleAttributes(props: Record<string, any>, result: Result): void {\n let klass = '';\n let style = '';\n\n for (const prop in props) {\n const value = props[prop];\n\n if (prop === 'class' && typeof value === 'string') {\n klass += ` ${value}`;\n delete props[prop];\n continue;\n }\n if (prop.indexOf('class:') === 0) {\n if (value === true) {\n const name = prop.replace(/^class:/, '');\n klass += ` ${name}`;\n delete props[prop];\n continue;\n }\n if (value === false) {\n delete props[prop];\n continue;\n }\n }\n\n if (prop === 'style' && typeof value === 'string') {\n style += `${value}${value.at(-1) === ';' ? '' : ';'}`;\n delete props[prop];\n continue;\n }\n if (prop.indexOf('style:') === 0 && (typeof value === 'string' || typeof value === 'number')) {\n const name = prop.replace(/^style:/, '');\n style += `${name}:${value};`;\n delete props[prop];\n continue;\n }\n\n if (value === true) {\n result.template[result.template.length - 1] += ` ${prop}`;\n delete props[prop];\n }\n if (value === false) {\n delete props[prop];\n }\n if (typeof value === 'string' || typeof value === 'number') {\n result.template[result.template.length - 1] += ` ${prop}=\"${value}\"`;\n delete props[prop];\n }\n }\n\n if (Object.keys(props).length > 0) {\n result.props[result.index] = props;\n }\n\n klass = klass.trim();\n style = style.trim();\n\n if (klass) {\n result.template[result.template.length - 1] += ` class=\"${klass}\"`;\n }\n if (style) {\n result.template[result.template.length - 1] += ` style=\"${style}\"`;\n }\n}\n\nfunction replaceChild(node: t.Expression, result: Result): void {\n if (result.isLastChild) {\n result.index--;\n }\n result.props[result.parentIndex] ??= {};\n result.props[result.parentIndex].children ??= [];\n result.props[result.parentIndex].children.push(\n t.arrayExpression([\n t.arrowFunctionExpression([], node),\n t.identifier(String(result.template.length)),\n ]),\n );\n}\n\nfunction getChildren(path: NodePath<JSXElement>): JSXChild[] {\n return path\n .get('children')\n .filter(child => isValidChild(child))\n .map(child => {\n if (child.isJSXElement() || child.isJSXFragment()) {\n transformJSXService(child);\n } else if (child.isJSXExpressionContainer()) {\n child.replaceWith(child.get('expression'));\n } else if (child.isJSXText()) {\n child.replaceWith(t.stringLiteral(child.node.value));\n } else {\n throw new Error('Unsupported child type');\n }\n return child.node;\n });\n}\n\nfunction isValidChild(path: NodePath<JSXChild>): boolean {\n const regex = /^\\s*$/;\n if (path.isStringLiteral() || path.isJSXText()) {\n return !regex.test(path.node.value);\n }\n return Object.keys(path.node).length > 0;\n}\nfunction getAttrProps(path: NodePath<t.JSXElement>): Record<string, any> {\n const props: Record<string, any> = {};\n let hasExpression = false;\n path\n .get('openingElement')\n .get('attributes')\n .forEach(attribute => {\n if (attribute.isJSXAttribute()) {\n const name = getAttrName(attribute.node);\n const value = attribute.get('value');\n\n if (!value.node) {\n props[name] = true;\n } else if (value.isStringLiteral()) {\n props[name] = value.node.value;\n } else {\n if (value.isJSXExpressionContainer()) {\n const expression = value.get('expression');\n\n if (expression.isStringLiteral()) {\n props[name] = expression.node.value;\n } else if (expression.isNumericLiteral()) {\n props[name] = expression.node.value;\n } else if (expression.isJSXElement() || expression.isJSXFragment()) {\n transformJSXService(expression);\n props[name] = expression.node;\n } else if (expression.isExpression()) {\n hasExpression = true;\n if (/^key|ref|on.+$/.test(name)) {\n props[name] = expression.node;\n } else if (/^bind:.+/.test(name)) {\n props[name] = t.arrowFunctionExpression([], expression.node);\n } else {\n if (expression.isConditionalExpression()) {\n props[name] = t.arrowFunctionExpression([], expression.node);\n } else {\n props[name] = expression.node;\n }\n }\n }\n } else if (value.isJSXElement() || value.isJSXFragment()) {\n transformJSXService(value);\n props[name] = value.node;\n }\n }\n } else if (attribute.isJSXSpreadAttribute()) {\n props._$spread$ = attribute.get('argument').node;\n hasExpression = true;\n } else {\n throw new Error('Unsupported attribute type');\n }\n });\n\n return {\n props,\n hasExpression,\n };\n}\n","import { type NodePath, types as t } from '@babel/core';\nimport type { State } from './types';\nexport const imports = new Set<string>();\n\nexport const transformProgram = {\n enter(path: NodePath<t.Program>, state) {\n path.state = {\n h: path.scope.generateUidIdentifier('h$'),\n ssrtmpl: path.scope.generateUidIdentifier('ssrtmpl$'),\n ssr: path.scope.generateUidIdentifier('ssr$'),\n template: path.scope.generateUidIdentifier('template$'),\n\n useSignal: path.scope.generateUidIdentifier('signal$'),\n useComputed: path.scope.generateUidIdentifier('computed$'),\n\n tmplDeclaration: t.variableDeclaration('const', []),\n opts: state.opts,\n } as State;\n },\n exit(path: NodePath<t.Program>) {\n const state: State = path.state;\n if (state.tmplDeclaration.declarations.length > 0) {\n const index = path.node.body.findIndex(\n node => !t.isImportDeclaration(node) && !t.isExportDeclaration(node),\n );\n path.node.body.splice(index, 0, state.tmplDeclaration);\n }\n if (imports.size > 0) {\n path.node.body.unshift(createImport(state, 'essor'));\n }\n },\n};\nfunction createImport(state: State, from: string) {\n const ImportSpecifier: t.ImportSpecifier[] = [];\n imports.forEach(name => {\n const local = t.identifier(state[name].name);\n const imported = t.identifier(name);\n ImportSpecifier.push(t.importSpecifier(local, imported));\n });\n\n const importSource = t.stringLiteral(from);\n return t.importDeclaration(ImportSpecifier, importSource);\n}\n","export const selfClosingTags = [\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n];\n\nexport const svgTags = [\n 'circle',\n 'clipPath',\n 'defs',\n 'ellipse',\n 'filter',\n 'g',\n 'line',\n 'linearGradient',\n 'mask',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialGradient',\n 'rect',\n 'stop',\n 'symbol',\n 'text',\n 'use',\n];\n","import { types as t } from '@babel/core';\nimport { imports } from '../program';\nimport { selfClosingTags, svgTags } from './constants';\nimport type { State } from '../types';\nimport type { NodePath } from '@babel/core';\ntype JSXElement = t.JSXElement | t.JSXFragment;\ninterface Result {\n index: number;\n isLastChild: boolean;\n parentIndex: number;\n props: Record<string, any>;\n template: string;\n}\n\ntype JSXChild =\n | t.JSXElement\n | t.JSXFragment\n | t.JSXExpressionContainer\n | t.JSXSpreadChild\n | t.JSXText;\n\nexport function transformJSXClient(path: NodePath<JSXElement>): void {\n const result: Result = {\n index: 1,\n isLastChild: false,\n parentIndex: 0,\n props: {},\n template: '',\n };\n transformJSXElement(path, result, true);\n\n path.replaceWith(createEssorNode(path, result));\n}\n\nfunction createEssorNode(path: NodePath<JSXElement>, result: Result): t.CallExpression {\n const state: State = path.state;\n\n let tmpl: t.Identifier;\n if (path.isJSXElement() && isComponent(getTagName(path.node))) {\n tmpl = t.identifier(getTagName(path.node));\n } else {\n tmpl = path.scope.generateUidIdentifier('_tmpl$');\n const template = t.callExpression(state.template, [t.stringLiteral(result.template)]);\n const declarator = t.variableDeclarator(tmpl, template);\n state.tmplDeclaration.declarations.push(declarator);\n imports.add('template');\n }\n\n const args = [tmpl, createProps(result.props)];\n const key = result.props.key || result.props[0]?.key;\n if (key) {\n args.push(key);\n }\n imports.add('h');\n return t.callExpression(state.h, args);\n}\n\nfunction createProps(props) {\n const toAstNode = value => {\n if (Array.isArray(value)) {\n return t.arrayExpression(value.map(toAstNode));\n }\n if (value && typeof value === 'object' && !t.isNode(value)) {\n return createProps(value);\n }\n\n switch (typeof value) {\n case 'string':\n return t.stringLiteral(value);\n case 'number':\n return t.numericLiteral(value);\n case 'boolean':\n return t.booleanLiteral(value);\n case 'undefined':\n return t.tsUndefinedKeyword();\n case undefined:\n return t.tsUndefinedKeyword();\n case null:\n return t.nullLiteral();\n default:\n return value;\n }\n };\n\n const result = Object.keys(props)\n .filter(prop => prop !== 'key')\n .map(prop => {\n const value = toAstNode(props[prop]);\n return prop === '_$spread$'\n ? t.spreadElement(value)\n : t.objectProperty(t.stringLiteral(prop), value);\n });\n\n return t.objectExpression(result);\n}\nfunction transformJSXElement(\n path: NodePath<JSXElement>,\n result: Result,\n isRoot: boolean = false,\n): void {\n if (path.isJSXElement()) {\n const tagName = getTagName(path.node);\n const tagIsComponent = isComponent(tagName);\n const isSelfClose = !tagIsComponent && selfClosingTags.includes(tagName);\n const isSvg = svgTags.includes(tagName) && result.index === 1;\n const props = getAttrProps(path);\n if (tagIsComponent) {\n if (isRoot) {\n result.props = props;\n const children = getChildren(path) as any;\n if (children.length > 0) {\n const childrenGenerator =\n children.length === 1 ? children[0] : t.arrayExpression(children);\n result.props.children = childrenGenerator;\n }\n } else {\n transformJSXClient(path);\n replaceChild(path.node, result);\n }\n } else {\n if (isSvg) {\n result.template = '<svg _svg_>';\n }\n result.template += `<${tagName}`;\n handleAttributes(props, result);\n result.template += isSelfClose ? '/>' : '>';\n if (!isSelfClose) {\n transformChildren(path, result);\n result.template += `</${tagName}>`;\n }\n }\n } else {\n result.index--;\n transformChildren(path, result);\n }\n}\n\nfunction transformChildren(path: NodePath<JSXElement>, result: Result): void {\n const parentIndex = result.index;\n path\n .get('children')\n .reduce((pre, cur) => {\n if (isValidChild(cur)) {\n const lastChild = pre.at(-1);\n if (lastChild && isTextChild(cur) && isTextChild(lastChild)) {\n setNodeText(lastChild, getNodeText(lastChild) + getNodeText(cur));\n } else {\n pre.push(cur);\n }\n }\n return pre;\n }, [] as NodePath<JSXChild>[])\n .forEach((child, i, arr) => {\n result.parentIndex = parentIndex;\n result.isLastChild = i === arr.length - 1;\n transformChild(child, result);\n });\n}\n\nfunction transformChild(child: NodePath<JSXChild>, result: Result): void {\n result.index++;\n if (child.isJSXElement() || child.isJSXFragment()) {\n transformJSXElement(child, result, false);\n } else if (child.isJSXExpressionContainer()) {\n const expression = child.get('expression');\n if (expression.isStringLiteral() || expression.isNumericLiteral()) {\n result.template += String(expression.node.value);\n } else if (expression.isExpression()) {\n replaceChild(expression.node, result);\n } else {\n throw new Error('Unsupported child type');\n }\n } else if (child.isJSXText()) {\n result.template += String(child.node.value);\n } else {\n throw new Error('Unsupported child type');\n }\n}\n\nfunction getNodeText(path: NodePath<JSXChild>): string {\n if (path.isJSXText()) {\n return path.node.value;\n }\n if (path.isJSXExpressionContainer()) {\n const expression = path.get('expression');\n if (expression.isStringLiteral() || expression.isNumericLiteral()) {\n return String(expression.node.value);\n }\n }\n return '';\n}\nfunction setNodeText(path: NodePath<JSXChild>, text: string): void {\n if (path.isJSXText()) {\n path.node.value = text;\n }\n if (path.isJSXExpressionContainer()) {\n const expression = path.get('expression');\n if (expression.isStringLiteral() || expression.isNumericLiteral()) {\n expression.replaceWith(t.stringLiteral(text));\n }\n }\n}\n\nexport function isTextChild(path: NodePath<JSXChild>): boolean {\n if (path.isJSXExpressionContainer()) {\n const expression = path.get('expression');\n if (expression.isJSXText() || expression.isStringLiteral() || expression.isNumericLiteral()) {\n return true;\n }\n }\n if (path.isJSXText() || path.isStringLiteral() || path.isNullLiteral()) {\n return true;\n }\n return false;\n}\n\nfunction handleAttributes(props: Record<string, any>, result: Result): void {\n let klass = '';\n let style = '';\n\n for (const prop in props) {\n const value = props[prop];\n\n if (prop === 'class' && typeof value === 'string') {\n klass += ` ${value}`;\n delete props[prop];\n continue;\n }\n if (prop.indexOf('class:') === 0) {\n if (value === true) {\n const name = prop.replace(/^class:/, '');\n klass += ` ${name}`;\n delete props[prop];\n continue;\n }\n if (value === false) {\n delete props[prop];\n continue;\n }\n }\n\n if (prop === 'style' && typeof value === 'string') {\n style += `${value}${value.at(-1) === ';' ? '' : ';'}`;\n delete props[prop];\n continue;\n }\n if (prop.indexOf('style:') === 0 && (typeof value === 'string' || typeof value === 'number')) {\n const name = prop.replace(/^style:/, '');\n style += `${name}:${value};`;\n delete props[prop];\n continue;\n }\n\n if (value === true) {\n result.template += ` ${prop}`;\n delete props[prop];\n }\n if (value === false) {\n delete props[prop];\n }\n if (typeof value === 'string' || typeof value === 'number') {\n result.template += ` ${prop}=\"${value}\"`;\n delete props[prop];\n }\n }\n\n if (Object.keys(props).length > 0) {\n result.props[result.index] = props;\n }\n\n klass = klass.trim();\n style = style.trim();\n\n if (klass) {\n result.template += ` class=\"${klass}\"`;\n }\n if (style) {\n result.template += ` style=\"${style}\"`;\n }\n}\n\nfunction replaceChild(node: t.Expression, result: Result): void {\n if (result.isLastChild) {\n result.index--;\n } else {\n result.template += '<!-->';\n }\n result.props[result.parentIndex] ??= {};\n result.props[result.parentIndex].children ??= [];\n result.props[result.parentIndex].children.push(\n t.arrayExpression([\n t.arrowFunctionExpression([], node),\n result.isLastChild ? t.nullLiteral() : t.identifier(String(result.index)),\n ]),\n );\n}\n\nfunction getChildren(path: NodePath<JSXElement>): JSXChild[] {\n return path\n .get('children')\n .filter(child => isValidChild(child))\n .map(child => {\n if (child.isJSXElement() || child.isJSXFragment()) {\n transformJSXClient(child);\n } else if (child.isJSXExpressionContainer()) {\n child.replaceWith(child.get('expression'));\n } else if (child.isJSXText()) {\n child.replaceWith(t.stringLiteral(child.node.value));\n } else {\n throw new Error('Unsupported child type');\n }\n return child.node;\n });\n}\n\nexport function isValidChild(path: NodePath<JSXChild>): boolean {\n const regex = /^\\s*$/;\n if (path.isStringLiteral() || path.isJSXText()) {\n return !regex.test(path.node.value);\n }\n return Object.keys(path.node).length > 0;\n}\nexport function getAttrProps(path: NodePath<t.JSXElement>): Record<string, any> {\n const props: Record<string, any> = {};\n\n path\n .get('openingElement')\n .get('attributes')\n .forEach(attribute => {\n if (attribute.isJSXAttribute()) {\n const name = getAttrName(attribute.node);\n const value = attribute.get('value');\n\n if (!value.node) {\n props[name] = true;\n } else if (value.isStringLiteral()) {\n props[name] = value.node.value;\n } else {\n if (value.isJSXExpressionContainer()) {\n const expression = value.get('expression');\n\n if (expression.isStringLiteral()) {\n props[name] = expression.node.value;\n } else if (expression.isNumericLiteral()) {\n props[name] = expression.node.value;\n } else if (expression.isJSXElement() || expression.isJSXFragment()) {\n transformJSXClient(expression);\n props[name] = expression.node;\n } else if (expression.isExpression()) {\n if (/^key|ref|on.+$/.test(name)) {\n props[name] = expression.node;\n } else if (/^bind:.+/.test(name)) {\n props[name] = t.arrowFunctionExpression([], expression.node);\n } else {\n if (expression.isConditionalExpression()) {\n props[name] = t.arrowFunctionExpression([], expression.node);\n } else {\n props[name] = expression.node;\n }\n }\n }\n } else if (value.isJSXElement() || value.isJSXFragment()) {\n transformJSXClient(value);\n props[name] = value.node;\n }\n }\n } else if (attribute.isJSXSpreadAttribute()) {\n props._$spread$ = attribute.get('argument').node;\n } else {\n throw new Error('Unsupported attribute type');\n }\n });\n\n return props;\n}\nexport function getAttrName(attribute: t.JSXAttribute): string {\n if (t.isJSXIdentifier(attribute.name)) {\n return attribute.name.name;\n }\n if (t.isJSXNamespacedName(attribute.name)) {\n return `${attribute.name.namespace.name}:${attribute.name.name.name}`;\n }\n throw new Error('Unsupported attribute type');\n}\n/**\n * Determines if the given tagName is a component.\n *\n * case1: <MyComponent />\n * case2: <SomeLibrary.SomeComponent />;\n * case3: <_component />;\n *\n * @param {string} tagName - The name of the tag to check.\n * @return {boolean} True if the tagName is a component, false otherwise.\n */\nexport function isComponent(tagName: string): boolean {\n return (\n (tagName[0] && tagName[0].toLowerCase() !== tagName[0]) ||\n tagName.includes('.') ||\n /[^A-Za-z]/.test(tagName[0])\n );\n}\n\nexport function getTagName(node: t.JSXElement): string {\n const tag = node.openingElement.name;\n return jsxElementNameToString(tag);\n}\n\n/**\n * Converts a JSX element name to a string representation.\n *\n * case1: <MyComponent />\n * case2: <SomeLibrary.SomeComponent />;\n * case3: <namespace:ComponentName />;\n * case4: <SomeLibrary.Nested.ComponentName />;\n *\n * @param {t.JSXMemberExpression | t.JSXIdentifier | t.JSXNamespacedName} node The JSX element name to convert.\n * @returns {string} The string representation of the JSX element name.\n */\nexport function jsxElementNameToString(\n node: t.JSXMemberExpression | t.JSXIdentifier | t.JSXNamespacedName,\n) {\n if (t.isJSXMemberExpression(node)) {\n return `${jsxElementNameToString(node.object)}.${jsxElementNameToString(node.property)}`;\n }\n\n if (t.isJSXIdentifier(node) || t.isIdentifier(node)) {\n return node.name;\n }\n\n return `${node.namespace.name}:${node.name.name}`;\n}\n","import { transformJSXService } from './server';\nimport { transformJSXClient } from './client';\nimport type { NodePath, types as t } from '@babel/core';\nimport type { State } from '../types';\ntype JSXElement = t.JSXElement | t.JSXFragment;\nexport function transformJSX(path: NodePath<JSXElement>) {\n const state: State = path.state;\n const isSsr = state.opts.ssr;\n return isSsr ? transformJSXService(path) : transformJSXClient(path);\n}\n","import { types as t } from '@babel/core';\nimport { type Identifier, type VariableDeclarator, cloneNode } from '@babel/types';\nimport { imports } from '../program';\nimport type { NodePath } from '@babel/core';\n\nexport function replaceSymbol(path: NodePath<VariableDeclarator>) {\n const init = path.node.init;\n const variableName = (path.node.id as Identifier).name;\n\n if (t.isObjectPattern(path.node.id) || t.isArrayPattern(path.node.id)) {\n return;\n }\n\n if (!variableName.startsWith('$')) {\n return;\n }\n\n if (\n init &&\n (t.isFunctionExpression(init) || t.isArrowFunctionExpression(init)) &&\n (path.parent as t.VariableDeclaration).kind === 'const'\n ) {\n // 处理箭头函数表达式,将其转换为 _computed 调用\n const newInit = t.callExpression(t.identifier(path.state.useComputed.name), init ? [init] : []);\n imports.add('useComputed');\n path.node.init = newInit; // 直接替换 AST 节点\n } else {\n // 判断参数是否是基本数据类型 ,也可能没有参数\n const originalImportDeclarationNodes = cloneNode(path.get('id').node, true);\n\n const newInit = t.callExpression(t.identifier(path.state.useSignal.name), init ? [init] : []);\n imports.add('useSignal');\n path.node.init = newInit;\n\n path.scope.rename(variableName, `${variableName}.value`);\n\n path.get('id').replaceWith(originalImportDeclarationNodes);\n\n // // 这里需要确保只修改在当前作用域中的变量名\n // path.scope.traverse(path.scope.block, {\n // Identifier(innerPath) {\n // if (t.isExportSpecifier(innerPath.parent)) {\n // const { name } = innerPath.node;\n // if (name.endsWith('.value')) {\n // innerPath.node.name = name.slice(0, -6); // 删除 '.value' 部分\n // }\n // }\n // },\n // });\n }\n}\n","import { type NodePath, types as t } from '@babel/core';\nimport type { ImportDeclaration } from '@babel/types';\n\nfunction isVariableUsedAsObject(path: NodePath<ImportDeclaration>, variableName: string) {\n const binding = path.scope.getBinding(variableName);\n let isUsedObject = false;\n if (!binding || !binding.referencePaths) {\n return isUsedObject;\n }\n\n for (const referencePath of binding.referencePaths) {\n if (t.isMemberExpression(referencePath.parent)) {\n // const memberExprParent = referencePath.parent;\n\n // if (memberExprParent.object && memberExprParent.property) {\n // const newMemberExpr = t.memberExpression(\n // memberExprParent.object,\n // t.identifier(`${(memberExprParent.property as t.Identifier).name}.value`),\n // );\n // referencePath.parentPath?.replaceWith(newMemberExpr);\n isUsedObject = true;\n // }\n }\n }\n\n return isUsedObject;\n}\n// TODO: 暂时不支持对象\nexport function replaceImportDeclaration(path: NodePath<ImportDeclaration>) {\n const imports = path.node.specifiers;\n imports.forEach(specifier => {\n const variableName = specifier.local.name;\n\n if (variableName.indexOf('$') === 0 && !isVariableUsedAsObject(path, variableName)) {\n path.scope.rename(variableName, `${variableName}.value`);\n specifier.local.name = `${variableName}`;\n }\n });\n}\n","import { transformJSX } from './jsx';\nimport { transformProgram } from './program';\nimport { replaceSymbol } from './signal/symbol';\nimport { replaceImportDeclaration } from './signal/import';\nimport type { PluginObj } from '@babel/core';\nexport { Options, State } from './types';\nexport default function (): PluginObj {\n return {\n name: 'babel-plugin-essor',\n manipulateOptions({ filename }, parserOpts) {\n if (filename.endsWith('.ts') || filename.endsWith('.tsx')) {\n parserOpts.plugins.push('typescript');\n }\n parserOpts.plugins.push('jsx');\n },\n visitor: {\n Program: transformProgram,\n JSXElement: transformJSX,\n JSXFragment: transformJSX,\n VariableDeclarator: replaceSymbol,\n ImportDeclaration: replaceImportDeclaration,\n },\n };\n}\n"],"mappings":"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","names":["t","t","t","createEssorNode","t","createProps","getAttrProps","getChildren","replaceChild","handleAttributes","transformChildren","isValidChild","setNodeText","getNodeText","transformChild","t","t","t","imports"]}
|
package/package.json
CHANGED
|
@@ -1,63 +1,43 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "babel-plugin-essor",
|
|
3
|
-
"
|
|
4
|
-
"
|
|
5
|
-
"packageManager": "pnpm@7.2.1",
|
|
3
|
+
"version": "0.0.6-beta.2",
|
|
4
|
+
"packageManager": "pnpm@8.15.8",
|
|
6
5
|
"description": "",
|
|
7
|
-
"
|
|
8
|
-
"license": "MIT",
|
|
9
|
-
"funding": "https://github.com/sponsors/estjs",
|
|
10
|
-
"homepage": "https://github.com/estjs/vipassana#readme",
|
|
11
|
-
"repository": {
|
|
12
|
-
"type": "git",
|
|
13
|
-
"url": "git+https://github.com/estjs/vipassana.git"
|
|
14
|
-
},
|
|
15
|
-
"bugs": "https://github.com/estjs/vipassana/issues",
|
|
6
|
+
"type": "module",
|
|
16
7
|
"keywords": [],
|
|
17
|
-
"
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"author": "jiangxd <jiangxd2016@gmail.com>",
|
|
10
|
+
"files": [
|
|
11
|
+
"dist"
|
|
12
|
+
],
|
|
13
|
+
"main": "./dist/index.js",
|
|
14
|
+
"module": "./dist/index.js",
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
18
16
|
"exports": {
|
|
19
17
|
".": {
|
|
20
18
|
"types": "./dist/index.d.ts",
|
|
21
|
-
"
|
|
22
|
-
"
|
|
19
|
+
"require": "./dist/index.cjs",
|
|
20
|
+
"import": "./dist/index.js"
|
|
23
21
|
}
|
|
24
22
|
},
|
|
25
|
-
"main": "./dist/index.mjs",
|
|
26
|
-
"module": "./dist/index.mjs",
|
|
27
|
-
"types": "./dist/index.d.ts",
|
|
28
23
|
"typesVersions": {
|
|
29
24
|
"*": {
|
|
30
25
|
"*": [
|
|
31
|
-
"./dist/*",
|
|
32
26
|
"./dist/index.d.ts"
|
|
33
27
|
]
|
|
34
28
|
}
|
|
35
29
|
},
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
"sideEffects": false,
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@babel/core": "^7.24.5",
|
|
33
|
+
"@babel/types": "^7.24.5"
|
|
34
|
+
},
|
|
39
35
|
"devDependencies": {
|
|
40
|
-
"@
|
|
41
|
-
"
|
|
42
|
-
"bumpp": "^9.1.0",
|
|
43
|
-
"dayjs": "^1.11.7",
|
|
44
|
-
"eslint": "^8.38.0",
|
|
45
|
-
"pnpm": "^8.2.0",
|
|
46
|
-
"tsup": "^6.7.0",
|
|
47
|
-
"typescript": "^5.0.4",
|
|
48
|
-
"vitest": "^0.30.1"
|
|
36
|
+
"@types/babel__core": "^7.20.5",
|
|
37
|
+
"typescript": "^5.4.5"
|
|
49
38
|
},
|
|
50
39
|
"scripts": {
|
|
51
|
-
"dev": "tsup --watch",
|
|
52
40
|
"build": "tsup",
|
|
53
|
-
"
|
|
54
|
-
"test": "vitest -r test",
|
|
55
|
-
"play": "pnpm run -C playground dev",
|
|
56
|
-
"play:build": "pnpm run -C playground build",
|
|
57
|
-
"play:test": "pnpm run -C playground test -u",
|
|
58
|
-
"play:preview": "pnpm run -C playground preview",
|
|
59
|
-
"typecheck": "tsc --noEmit",
|
|
60
|
-
"coverage": "vitest run --coverage",
|
|
61
|
-
"release": " pnpm publish --access public"
|
|
41
|
+
"dev": "cross-env BUILD_ENV=production tsup --watch"
|
|
62
42
|
}
|
|
63
43
|
}
|