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(
/**
* 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) {
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()
}
}
- // 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)
node.type === 'ClassDeclaration'
) {
processDeclaration(node)
- } else if (removeInternal(node)) {
- throw new Error(
- `unhandled export type marked as @internal: ${node.type}`
- )
}
}
}
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)) {