|
|
@@ -3,7 +3,6 @@ import { parse } from '@babel/parser'
|
|
|
import { existsSync, readdirSync, readFileSync, writeFileSync } from 'fs'
|
|
|
import MagicString from 'magic-string'
|
|
|
import dts from 'rollup-plugin-dts'
|
|
|
-import { walk } from 'estree-walker'
|
|
|
|
|
|
if (!existsSync('temp/packages')) {
|
|
|
console.warn(
|
|
|
@@ -41,12 +40,11 @@ export default targetPackages.map(pkg => {
|
|
|
|
|
|
/**
|
|
|
* Patch the dts generated by rollup-plugin-dts
|
|
|
- * 1. remove exports marked as @internal
|
|
|
- * 2. Convert all types to inline exports
|
|
|
+ * 1. Convert all types to inline exports
|
|
|
* and remove them from the big export {} declaration
|
|
|
* otherwise it gets weird in vitepress `defineComponent` call with
|
|
|
* "the inferred type cannot be named without a reference"
|
|
|
- * 3. Append custom augmentations (jsx, macros)
|
|
|
+ * 2. Append custom augmentations (jsx, macros)
|
|
|
* @returns {import('rollup').Plugin}
|
|
|
*/
|
|
|
function patchTypes(pkg) {
|
|
|
@@ -73,64 +71,12 @@ function patchTypes(pkg) {
|
|
|
return
|
|
|
}
|
|
|
shouldRemoveExport.add(name)
|
|
|
- if (!removeInternal(parentDecl || node)) {
|
|
|
- if (isExported.has(name)) {
|
|
|
- // @ts-ignore
|
|
|
- s.prependLeft((parentDecl || node).start, `export `)
|
|
|
- }
|
|
|
- // traverse further for internal properties
|
|
|
- if (
|
|
|
- node.type === 'TSInterfaceDeclaration' ||
|
|
|
- node.type === 'ClassDeclaration'
|
|
|
- ) {
|
|
|
- node.body.body.forEach(removeInternal)
|
|
|
- } else if (node.type === 'TSTypeAliasDeclaration') {
|
|
|
- // @ts-ignore
|
|
|
- walk(node.typeAnnotation, {
|
|
|
- enter(node) {
|
|
|
- // @ts-ignore
|
|
|
- if (removeInternal(node)) this.skip()
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
+ if (isExported.has(name)) {
|
|
|
+ // @ts-ignore
|
|
|
+ s.prependLeft((parentDecl || node).start, `export `)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * @param {import('@babel/types').Node} node
|
|
|
- * @returns {boolean}
|
|
|
- */
|
|
|
- function removeInternal(node) {
|
|
|
- if (
|
|
|
- node.leadingComments &&
|
|
|
- node.leadingComments.some(c => {
|
|
|
- return c.type === 'CommentBlock' && /@internal\b/.test(c.value)
|
|
|
- })
|
|
|
- ) {
|
|
|
- /** @type {any} */
|
|
|
- const n = node
|
|
|
- let id
|
|
|
- if (n.id && n.id.type === 'Identifier') {
|
|
|
- id = n.id.name
|
|
|
- } else if (n.key && n.key.type === 'Identifier') {
|
|
|
- id = n.key.name
|
|
|
- }
|
|
|
- if (id) {
|
|
|
- s.overwrite(
|
|
|
- // @ts-ignore
|
|
|
- node.leadingComments[0].start,
|
|
|
- node.end,
|
|
|
- `/* removed internal: ${id} */`
|
|
|
- )
|
|
|
- } else {
|
|
|
- // @ts-ignore
|
|
|
- s.remove(node.leadingComments[0].start, node.end)
|
|
|
- }
|
|
|
- return true
|
|
|
- }
|
|
|
- return false
|
|
|
- }
|
|
|
-
|
|
|
const isExported = new Set()
|
|
|
const shouldRemoveExport = new Set()
|
|
|
|
|
|
@@ -146,7 +92,7 @@ function patchTypes(pkg) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // pass 1: remove internals + add exports
|
|
|
+ // pass 1: add exports
|
|
|
for (const node of ast.program.body) {
|
|
|
if (node.type === 'VariableDeclaration') {
|
|
|
processDeclaration(node.declarations[0], node)
|
|
|
@@ -167,10 +113,6 @@ function patchTypes(pkg) {
|
|
|
node.type === 'ClassDeclaration'
|
|
|
) {
|
|
|
processDeclaration(node)
|
|
|
- } else if (removeInternal(node)) {
|
|
|
- throw new Error(
|
|
|
- `unhandled export type marked as @internal: ${node.type}`
|
|
|
- )
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -213,12 +155,6 @@ function patchTypes(pkg) {
|
|
|
}
|
|
|
code = s.toString()
|
|
|
|
|
|
- if (/@internal/.test(code)) {
|
|
|
- throw new Error(
|
|
|
- `unhandled @internal declarations detected in ${chunk.fileName}.`
|
|
|
- )
|
|
|
- }
|
|
|
-
|
|
|
// append pkg specific types
|
|
|
const additionalTypeDir = `packages/${pkg}/types`
|
|
|
if (existsSync(additionalTypeDir)) {
|