@xyd-js/sources 0.0.0-build
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/CHANGELOG.md +9 -0
- package/ISSUES.md +10 -0
- package/LICENSE +21 -0
- package/README.md +3 -0
- package/TODO.md +9 -0
- package/__fixtures__/-1.typescript/package.json +5 -0
- package/__fixtures__/-1.typescript/src/index.ts +0 -0
- package/__fixtures__/-1.typescript/src/settings.ts +592 -0
- package/__fixtures__/-1.typescript/tsconfig.json +8 -0
- package/__fixtures__/-2.react.basic/1.flat-interface.output.json +114 -0
- package/__fixtures__/-2.react.basic/2.file-connect-interface.output.json +60 -0
- package/__fixtures__/-2.react.basic/2a.file-connect-interface-advanced.output.json +92 -0
- package/__fixtures__/-2.react.basic/3.props-as-variants.output.json +166 -0
- package/__fixtures__/-2.react.basic/4.outside-interface.output.json +60 -0
- package/__fixtures__/-2.react.basic/5.inline-props.output.json +60 -0
- package/__fixtures__/-2.react.basic/5.outside-inline-props.output.json +60 -0
- package/__fixtures__/-2.react.basic/5a.inline-props+outside.output.json +60 -0
- package/__fixtures__/-2.react.basic/5b.inline-props+interfaces.output.json +92 -0
- package/__fixtures__/-2.react.basic/package.json +4 -0
- package/__fixtures__/-2.react.basic/src/1.flat-interface.tsx +41 -0
- package/__fixtures__/-2.react.basic/src/2.file-connect-interface.tsx +28 -0
- package/__fixtures__/-2.react.basic/src/2a.file-connect-interace+advanced.tsx +54 -0
- package/__fixtures__/-2.react.basic/src/3.props-as-variants.tsx +67 -0
- package/__fixtures__/-2.react.basic/src/4.outside-interface.tsx +13 -0
- package/__fixtures__/-2.react.basic/src/4.outside-interface2.ts +15 -0
- package/__fixtures__/-2.react.basic/src/5.inline-props.tsx +19 -0
- package/__fixtures__/-2.react.basic/src/5a.inline-props+outside.tsx +19 -0
- package/__fixtures__/-2.react.basic/src/5b.inline-props+interfaces.tsx +62 -0
- package/__fixtures__/-2.react.basic/src/index.ts +0 -0
- package/__fixtures__/-2.react.basic/tsconfig.json +8 -0
- package/__tests__/sourcesToUniform.test.ts +167 -0
- package/__tests__/testResolvePropertySymbol.ts +838 -0
- package/__tests__/types.ts +12 -0
- package/__tests__/utils.ts +108 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/react.cjs +237 -0
- package/dist/react.cjs.map +1 -0
- package/dist/react.d.cts +6 -0
- package/dist/react.d.ts +6 -0
- package/dist/react.js +212 -0
- package/dist/react.js.map +1 -0
- package/dist/ts.cjs +1794 -0
- package/dist/ts.cjs.map +1 -0
- package/dist/ts.d.cts +14 -0
- package/dist/ts.d.ts +14 -0
- package/dist/ts.js +1760 -0
- package/dist/ts.js.map +1 -0
- package/package.json +41 -0
- package/packages/react/index.ts +1 -0
- package/packages/react/uniformToReactUniform.ts +275 -0
- package/packages/ts/SignatureText.ts +233 -0
- package/packages/ts/TypeDocTransformer.ts +1519 -0
- package/packages/ts/__fixtures__/packages/package-a/package.json +4 -0
- package/packages/ts/__fixtures__/packages/package-a/src/index.ts +56 -0
- package/packages/ts/__fixtures__/packages/package-a/tsconfig.json +23 -0
- package/packages/ts/__fixtures__/packages/package-b/package.json +7 -0
- package/packages/ts/__fixtures__/packages/package-b/src/billing.ts +193 -0
- package/packages/ts/__fixtures__/packages/package-b/src/index.ts +8 -0
- package/packages/ts/__fixtures__/packages/package-b/tsconfig.json +20 -0
- package/packages/ts/__fixtures__/packages2/package-a/package.json +4 -0
- package/packages/ts/__fixtures__/packages2/package-a/src/index.ts +496 -0
- package/packages/ts/__fixtures__/packages2/package-a/tsconfig.json +6 -0
- package/packages/ts/__fixtures__/packages3/package-a/package.json +4 -0
- package/packages/ts/__fixtures__/packages3/package-a/src/index.ts +488 -0
- package/packages/ts/__fixtures__/packages3/package-a/tsconfig.json +6 -0
- package/packages/ts/__fixtures__/packages3/project.json +171 -0
- package/packages/ts/__fixtures__/react/react-a/package.json +5 -0
- package/packages/ts/__fixtures__/react/react-a/src/TestAbc.tsx +90 -0
- package/packages/ts/__fixtures__/react/react-a/src/TestBasic.tsx +27 -0
- package/packages/ts/__fixtures__/react/react-a/src/TestNamedParameters.tsx +27 -0
- package/packages/ts/__fixtures__/react/react-a/src/TestNamedParameters2.tsx +26 -0
- package/packages/ts/__fixtures__/react/react-a/src/TestUnion.tsx +32 -0
- package/packages/ts/__fixtures__/react/react-a/src/index.ts +1 -0
- package/packages/ts/__fixtures__/react/react-a/tsconfig.json +8 -0
- package/packages/ts/__fixtures__/references-output-project.json +344 -0
- package/packages/ts/__fixtures__/references-output-react.json +68 -0
- package/packages/ts/__fixtures__/references-output.json +129 -0
- package/packages/ts/__tests__/sourcesToUniform.test.ts +106 -0
- package/packages/ts/context.ts +0 -0
- package/packages/ts/converterts/ts-class.ts +0 -0
- package/packages/ts/converterts/ts-enum.ts +0 -0
- package/packages/ts/converterts/ts-function.ts +0 -0
- package/packages/ts/converterts/ts-interface.ts +0 -0
- package/packages/ts/converterts/ts-type.ts +0 -0
- package/packages/ts/index.ts +129 -0
- package/packages/ts/ts-core.ts +0 -0
- package/packages/ts/uniformToMiniUniform.ts +486 -0
- package/src/index.ts +0 -0
- package/test-cmd/index.ts +62 -0
- package/tsconfig.json +38 -0
- package/tsup.config.ts +39 -0
- package/vitest.config.ts +34 -0
package/dist/ts.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../packages/ts/index.ts","../packages/ts/TypeDocTransformer.ts","../packages/ts/SignatureText.ts","../packages/ts/uniformToMiniUniform.ts"],"sourcesContent":["import * as path from 'node:path';\nimport {resolve} from \"path\";\nimport ts from \"typescript\";\n\nimport * as TypeDoc from 'typedoc';\nimport type {NormalizedPath, TypeDocOptions} from \"typedoc\";\n\nimport type {Reference, ReferenceContext} from \"@xyd-js/uniform\";\nimport {\n typedocToUniform\n} from \"./TypeDocTransformer\"\n\nexport {\n uniformToMiniUniform\n} from \"./uniformToMiniUniform\"\n\nconst importedFiles = new Set<string>();\n\n// TODO: SUPPORT GET FROM URL + VIRTUAL FS (OR NO FS JUST SET NEEDED OPTIONS VIA CODE)\n// TODO: in the future typedoc options?\nexport async function sourcesToUniformV2(\n root: string,\n entryPoints: string[]\n): Promise<{\n references: Reference<ReferenceContext>[];\n projectJson: TypeDoc.JSONOutput.ProjectReflection;\n} | undefined> {\n // TODO: support another strategies\n // TODO: support entry points from github?\n const commonOptions: Partial<TypeDocOptions> = {\n // entryPoints,\n // entryPointStrategy: TypeDoc.EntryPointStrategy.Packages,\n exclude: [\"**/*.test.ts\", \"**/*.test.tsx\"],\n // @ts-ignore // TODO: for some reason on build types mismatch\n excludePrivate: true,\n // @ts-ignore\n excludeProtected: true,\n // @ts-ignore\n excludeExternals: true,\n // @ts-ignore\n includeVersion: true,\n // @ts-ignore\n // hideGenerator: true,\n // @ts-ignore\n skipErrorChecking: true,\n\n // @ts-ignore\n sort: ['source-order'],\n // @ts-ignore\n sortEntryPoints: false,\n }\n\n const options = {\n ...commonOptions,\n }\n const everySingleFile = entryPoints?.every(ep => !!path.extname(ep))\n\n if (everySingleFile) {\n entryPoints.map(ep => {\n findImports(root, path.resolve(root, ep));\n })\n const fileImported = Array.from(importedFiles) || []\n options.entryPoints = [\n ...[\n ...entryPoints,\n ...fileImported\n ]?.map(ep => path.resolve(root, ep))\n ]\n } else {\n options.entryPointStrategy = TypeDoc.EntryPointStrategy.Packages\n options.entryPoints = entryPoints\n options.packageOptions = {\n ...commonOptions,\n }\n }\n\n // TOOD: if react will not work then add []\n const app = await TypeDoc.Application.bootstrapWithPlugins(options);\n const project = await app.convert()\n if (!project) {\n console.error('Failed to generate documentation.');\n return\n }\n\n const jsonOutput = await app.serializer.projectToObject(project, root as NormalizedPath);\n const projectJson = jsonOutput as unknown as TypeDoc.JSONOutput.ProjectReflection;\n\n if (!projectJson.schemaVersion || !projectJson.children || !projectJson.children.length) {\n console.error('Failed to generate documentation.');\n return\n }\n\n const references = typedocToUniform(root, projectJson)\n if (!references) {\n console.error('Failed to generate documentation.');\n return\n }\n return {\n references,\n projectJson\n }\n}\n\n// TODO: nested strategy\n// TODO: better mechanism?\nfunction findImports(root: string, file: string, seen = new Set()) {\n if (seen.has(file)) return;\n seen.add(file);\n\n const source = ts.createSourceFile(\n file,\n ts.sys.readFile(file) || \"\",\n ts.ScriptTarget.Latest,\n true\n );\n\n for (const stmt of source.statements) {\n if (ts.isImportDeclaration(stmt) && stmt.moduleSpecifier) {\n const importPath = stmt.moduleSpecifier.getText().replace(/['\"]/g, \"\");\n if (importPath.startsWith(\".\")) {\n const resolved = resolve(file, \"..\", importPath + \".ts\"); // TODO: support .tsx also + aliases\n const relativePath = path.relative(root, resolved);\n importedFiles.add(relativePath);\n findImports(root, resolved, seen);\n }\n }\n }\n}\n\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n\nimport type {\n JSONOutput,\n ContainerReflection,\n DeclarationReflection,\n SomeType,\n ReflectionSymbolId,\n Comment,\n} from 'typedoc';\nimport {ReflectionKind} from \"typedoc\";\n\nimport {\n Reference,\n Definition,\n TypeDocReferenceContext,\n DefinitionProperty,\n DefinitionTypeDocMeta,\n SymbolDef, DefinitionPropertyMeta,\n TypeDocReferenceContextMeta\n} from \"@xyd-js/uniform\";\nimport {DEFINED_DEFINITION_PROPERTY_TYPE} from \"@xyd-js/uniform\";\n\nimport {\n MultiSignatureLoader,\n signatureTextByLine,\n signatureSourceCodeByLine\n} from \"./SignatureText\";\n\nclass TypeDocSignatureTextLoader extends MultiSignatureLoader {\n constructor(\n private project: JSONOutput.ProjectReflection,\n private packagePathMap: { [id: number]: string }\n ) {\n super();\n }\n\n public signatureText(\n id: number,\n line: number,\n options?: any // TODO: fix options\n ) {\n const loader = this.getSignatuerLoader(id)\n if (!loader) {\n return\n }\n\n const signTxt = signatureTextByLine(loader, line, options)\n if (!signTxt) {\n console.warn('(TypeDocSignatureTextLoader.signatureText): Signature text is empty', id)\n return\n }\n\n return signTxt\n }\n\n public signatureSourceCode(\n id: number,\n line: number\n ) {\n const loader = this.getSignatuerLoader(id)\n if (!loader) {\n return\n }\n\n const sourceCode = signatureSourceCodeByLine(loader, line)\n if (!sourceCode) {\n console.warn('(TypeDocSignatureTextLoader.signatureSourceCode): Source code is empty', id)\n return\n }\n\n return sourceCode\n }\n\n private getSignatuerLoader(id: number) {\n const symbolMap = this.project.symbolIdMap[id] as ReflectionSymbolId\n if (!symbolMap) {\n console.warn('(TypeDocSignatureTextLoader.getSignatuerLoader): Symbol not found', id)\n return\n }\n\n const fullPath = this.packagePathMap[id]\n if (!fullPath) {\n console.warn('(TypeDocSignatureTextLoader.getSignatuerLoader): Package path not found for symbol', symbolMap.packageName)\n return\n }\n\n const loader = this.load(fullPath)\n if (!loader) {\n console.warn('(TypeDocSignatureTextLoader.getSignatuerLoader): Loader not found', fullPath)\n return\n }\n\n return loader\n }\n}\n\nclass Transformer {\n public packagePathMap: { [id: number]: string } = {};\n public signatureTextLoader!: TypeDocSignatureTextLoader;\n\n constructor(\n private rootPath: string,\n protected project: JSONOutput.ProjectReflection,\n protected references: Reference[] = []\n ) {\n const packagePathMap = this.createPackagePathMap()\n if (packagePathMap) {\n this.packagePathMap = packagePathMap\n }\n }\n\n private createPackagePathMap() {\n const packagePathMap: { [id: number]: string } = {};\n const packageJsonPaths = this.findPackageJsonPaths(this.rootPath);\n\n if (!packageJsonPaths.length) {\n console.warn('(Transformer.createPackagePathMap): No package.json found in rootPath', this.rootPath)\n return {packageMap: null, moduleRootMap: null}\n }\n\n for (const packageJsonPath of packageJsonPaths) {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));\n const packageName = packageJson.name;\n const moduleRoot = path.dirname(packageJsonPath);\n\n if (!packageName) {\n console.warn('(Transformer.createPackagePathMap): Package name not found in package.json', packageJsonPath)\n continue\n }\n\n for (const id in this.project.symbolIdMap) {\n const symbolMap = this.project.symbolIdMap[id] as ReflectionSymbolId;\n\n if (symbolMap.packageName === packageName) {\n const fullPath = path.join(moduleRoot, symbolMap.packagePath);\n packagePathMap[Number.parseInt(id)] = fullPath;\n }\n }\n }\n\n return packagePathMap\n }\n\n private findPackageJsonPaths(dir: string): string[] {\n let results: string[] = [];\n const list = fs.readdirSync(dir);\n\n for (const file of list) {\n const filePath = path.join(dir, file);\n const stat = fs.statSync(filePath);\n if (stat && stat.isDirectory()) {\n // Skip node_modules directory\n if (file === 'node_modules') {\n continue;\n }\n results = results.concat(this.findPackageJsonPaths(filePath));\n } else if (file === 'package.json') {\n results.push(filePath);\n }\n }\n return results;\n }\n}\n\nexport function typedocToUniform(\n rootPath: string,\n project: JSONOutput.ProjectReflection\n): Reference[] {\n const references: Reference[] = []\n const transformer = new Transformer(\n rootPath,\n project,\n references\n )\n const signatureTextLoader = new TypeDocSignatureTextLoader(\n project,\n transformer.packagePathMap,\n )\n transformer.signatureTextLoader = signatureTextLoader\n\n // TODO: in the future abstraction?\n if (project.kind !== ReflectionKind.Project) {\n throw new Error('Project reflection expected');\n }\n\n for (const child of project.children || []) {\n if (!(\"kind\" in child)) {\n throw new Error('(typedocToUniform): Child reflection expected in project childrens');\n }\n\n if (typeof child.kind != \"number\") {\n throw new Error('(typedocToUniform): Child reflection kind expected to be a number');\n }\n\n if (!(child.kind satisfies ReflectionKind)) {\n throw new Error('(typedocToUniform): Child reflection kind expected to be a valid ReflectionKind');\n }\n\n const kind = child.kind as ReflectionKind\n\n switch (kind) {\n case ReflectionKind.Module: {\n const container = child as ContainerReflection\n\n for (const group of container.children || []) {\n const ref = typedocGroupToUniform.call(\n transformer,\n group\n )\n\n if (!ref) {\n continue\n }\n\n ref.context = {\n ...ref.context,\n packageName: container.name,\n } as TypeDocReferenceContext;\n\n references.push(ref)\n }\n\n break\n }\n\n case ReflectionKind.Function:\n case ReflectionKind.Class:\n case ReflectionKind.Interface: {\n if (!('kind' in child) || child.kind !== ReflectionKind.Function &&\n child.kind !== ReflectionKind.Class &&\n child.kind !== ReflectionKind.Interface) {\n throw new Error('(typedocToUniform): Function/Class/Interface reflection expected to be a DeclarationReflection');\n }\n\n const ref = typedocGroupToUniform.call(\n transformer,\n child as DeclarationReflection\n )\n\n if (!ref) {\n break\n }\n\n ref.context = {\n ...ref.context,\n packageName: project.name,\n } as TypeDocReferenceContext;\n references.push(ref)\n\n break\n }\n\n case ReflectionKind.TypeAlias: {\n if (!('kind' in child) || child.kind !== ReflectionKind.TypeAlias) {\n throw new Error('(typedocToUniform): Type alias reflection expected to be a DeclarationReflection');\n }\n\n const ref = jsTypeAliasToUniformRef.call(\n transformer,\n child as DeclarationReflection\n )\n\n if (!ref) {\n break\n }\n\n ref.context = {\n ...ref.context,\n packageName: project.name,\n } as TypeDocReferenceContext;\n references.push(ref)\n\n break\n }\n\n case ReflectionKind.Enum: {\n if (!('kind' in child) || child.kind !== ReflectionKind.Enum) {\n throw new Error('(typedocToUniform): Enum reflection expected to be a DeclarationReflection');\n }\n\n const ref = jsEnumToUniformRef.call(\n transformer,\n child as DeclarationReflection\n )\n\n if (!ref) {\n break\n }\n\n ref.context = {\n ...ref.context,\n packageName: project.name,\n } as TypeDocReferenceContext;\n\n references.push(ref)\n\n break\n }\n\n default: {\n console.warn(\"(typedocToUniform): Another children project kind not supported\", child.kind)\n }\n }\n }\n\n // Sort references by file path and line number to preserve the original order in the source files\n references.sort((a, b) => {\n // First sort by file pathc\n const contextA = a.context as unknown as TypeDocReferenceContext | undefined;\n const contextB = b.context as unknown as TypeDocReferenceContext | undefined;\n\n const filePathA = contextA?.fileFullPath || '';\n const filePathB = contextB?.fileFullPath || '';\n\n if (filePathA !== filePathB) {\n return filePathA.localeCompare(filePathB);\n }\n\n // Then sort by line number\n const lineA = contextA?.line || 0;\n const lineB = contextB?.line || 0;\n\n return lineA - lineB;\n });\n\n return references\n}\n\nfunction typedocGroupToUniform(\n this: Transformer,\n group: DeclarationReflection\n) {\n let ref: Reference | undefined\n\n switch (group.kind) {\n case ReflectionKind.Class: {\n ref = jsClassToUniformRef.call(this, group)\n\n break\n }\n\n case ReflectionKind.Function: {\n ref = jsFunctionToUniformRef.call(this, group)\n\n break\n }\n\n case ReflectionKind.Interface: {\n ref = jsInterfaceToUniformRef.call(this, group)\n\n break\n }\n\n case ReflectionKind.Enum: {\n ref = jsEnumToUniformRef.call(this, group)\n\n break\n }\n\n case ReflectionKind.TypeAlias: {\n ref = jsTypeAliasToUniformRef.call(this, group)\n\n break\n }\n default: {\n console.warn('(typedocGroupToUniform): Unhandled reflection kind', group.kind)\n }\n }\n\n return ref\n}\n\nfunction jsClassToUniformRef(\n this: Transformer,\n dec: DeclarationReflection\n) {\n const definitions: Definition[] = []\n\n const ref: Reference = {\n title: `Class ${dec.name}`,\n canonical: \"\",\n description: '',\n context: undefined,\n examples: {\n groups: []\n },\n definitions\n }\n\n const declarationCtx = declarationUniformContext.call(this, dec)\n if (declarationCtx) {\n ref.context = {\n ...ref.context,\n ...declarationCtx\n }\n }\n ref.canonical = uniformCanonical(dec, declarationCtx)\n\n if (dec.comment) {\n const description = commentToUniformDescription(dec.comment)\n const group = uniformGroup(declarationCtx)\n\n if (ref.context) {\n ref.context.group = [\n ...group,\n \"Classes\"\n ]\n }\n\n ref.description = description\n }\n\n // handle constructor\n {\n const constructor = dec.children?.find(child => child.name === 'constructor')\n if (constructor?.signatures?.[0]) {\n const constructorDef: Definition = {\n title: 'Constructor',\n properties: []\n }\n\n const constructorSign = constructor.signatures[0]\n for (const param of constructorSign.parameters || []) {\n if (!param.type) {\n console.warn('(jsClassToUniformRef): Constructor parameter type not found', param.name)\n continue\n }\n\n let description = \"\"\n if (param.comment) {\n description = commentToUniformDescription(param.comment)\n }\n let uniformType = someTypeToUniform.call(this, param.type)\n let someTypeProps = {}\n if (typeof uniformType === \"object\") {\n delete uniformType.ofType\n someTypeProps = uniformType\n }\n\n constructorDef.properties.push({\n name: param.name,\n type: typeof uniformType === \"string\" ? uniformType : \"\",\n description,\n ...someTypeProps\n })\n }\n definitions.push(constructorDef)\n }\n }\n\n // handle methods\n {\n const methods = dec.children?.filter(child =>\n child.kind === ReflectionKind.Method && child.name !== 'constructor'\n ) || []\n\n if (methods.length > 0) {\n const methodsDef: Definition = {\n title: 'Methods',\n properties: []\n }\n\n for (const method of methods) {\n if (!method.signatures?.[0]) continue\n\n const methodSign = method.signatures[0]\n let methodDesc = \"\"\n if (methodSign.comment) {\n methodDesc = commentToUniformDescription(methodSign.comment)\n }\n let type = \"\"\n let someTypeProps = {}\n if (methodSign.type) {\n if (typeof methodSign.type === \"object\") {\n someTypeProps = methodSign.type\n }\n\n type = typeof methodSign.type === \"string\" ? methodSign.type : \"\"\n } else {\n type = \"void\"\n }\n\n const property: DefinitionProperty = {\n name: method.name,\n type,\n description: methodDesc,\n ...someTypeProps\n }\n\n if (method.comment) {\n const examples = commentToUniformExamples(method.comment)\n if (examples.length > 0) {\n property.examples = examples\n }\n }\n\n methodsDef.properties.push(property)\n }\n\n definitions.push(methodsDef)\n }\n }\n\n return ref\n}\n\nfunction jsFunctionToUniformRef(\n this: Transformer,\n dec: DeclarationReflection\n) {\n const definitions: Definition[] = []\n const ref: Reference = {\n title: `Function ${dec.name}`,\n canonical: \"\",\n description: '',\n context: undefined,\n examples: {\n groups: [],\n },\n definitions,\n }\n\n const declarationCtx = declarationUniformContext.call(this, dec)\n if (declarationCtx) {\n ref.context = {\n ...ref.context,\n ...declarationCtx\n }\n }\n ref.canonical = uniformCanonical(dec, declarationCtx)\n\n const signatures = dec.signatures || []\n if (signatures.length > 1) {\n console.error('(jsFunctionToUniformRef): Multiple signatures not supported for function declaration', dec.name)\n return\n }\n\n for (const sign of dec.signatures || []) {\n {\n if (sign.comment) {\n const description = commentToUniformDescription(sign.comment)\n const group = uniformGroup(declarationCtx)\n\n if (ref.context) {\n ref.context.group = [\n ...group,\n \"Functions\"\n ]\n }\n\n ref.description = description\n }\n }\n\n // handle returns\n {\n const meta: DefinitionTypeDocMeta[] = [\n {\n name: \"type\",\n value: \"returns\"\n }\n ]\n\n const returnsUniformDef: Definition = {\n title: 'Returns',\n properties: [],\n meta\n }\n\n if (sign.type) {\n let desc = \"\"\n\n if (sign.comment) {\n desc = returnCommentToUniform(sign.comment) || \"\"\n }\n\n const uniformType = someTypeToUniform.call(this, sign.type)\n let someTypeProps = {}\n if (typeof uniformType === \"object\") {\n delete uniformType.ofType\n someTypeProps = uniformType\n }\n\n returnsUniformDef.properties.push({\n name: \"\",\n type: typeof uniformType === \"string\" ? uniformType : \"\",\n description: desc,\n ...someTypeProps\n })\n }\n\n ref.definitions.push(returnsUniformDef)\n }\n\n // handle parameters\n {\n const meta: DefinitionTypeDocMeta[] = [\n {\n name: \"type\",\n value: \"parameters\"\n }\n ]\n\n const parametersUniformDef: Definition = {\n title: 'Parameters',\n properties: [],\n meta\n }\n\n for (const param of sign.parameters || []) {\n if (!param.type) {\n console.warn('(jsFunctionToUniformRef): Parameter type not found', param.name)\n continue\n }\n\n let description = \"\"\n if (param.comment) {\n description = commentToUniformDescription(param.comment)\n }\n\n const uniformType = someTypeToUniform.call(this, param.type)\n let someTypeProps = {}\n if (typeof uniformType === \"object\") {\n delete uniformType.ofType\n someTypeProps = uniformType\n }\n\n const prop: DefinitionProperty = {\n name: param.name,\n type: typeof uniformType === \"string\" ? uniformType : \"\",\n description,\n ...someTypeProps\n }\n\n switch (prop.name) {\n case \"__namedParameters\": {\n prop.name = \"\"\n prop.type = DEFINED_DEFINITION_PROPERTY_TYPE.UNION\n // prop.type = \"param\"\n break\n }\n }\n\n if (param.comment) {\n const examples = commentToUniformExamples(param.comment)\n if (examples.length > 0) {\n prop.examples = examples\n }\n }\n\n parametersUniformDef.properties.push(prop)\n }\n\n ref.definitions.push(parametersUniformDef)\n }\n }\n\n return ref\n}\n\nfunction jsInterfaceToUniformRef(\n this: Transformer,\n dec: DeclarationReflection\n) {\n const definitions: Definition[] = []\n\n const ref: Reference = {\n title: `Interface ${dec.name}`,\n canonical: \"\",\n description: '',\n context: undefined,\n examples: {\n groups: []\n },\n definitions\n }\n\n const declarationCtx = declarationUniformContext.call(this, dec)\n if (declarationCtx) {\n ref.context = {\n ...ref.context,\n ...declarationCtx\n }\n }\n ref.canonical = uniformCanonical(dec, declarationCtx)\n\n if (dec.comment) {\n const description = commentToUniformDescription(dec.comment)\n const group = uniformGroup(declarationCtx)\n\n if (ref.context) {\n ref.context.group = [\n ...group,\n \"Interfaces\"\n ]\n }\n\n ref.description = description\n }\n\n // handle properties\n {\n const properties = dec.children?.filter(child =>\n child.kind === ReflectionKind.Property\n ) || []\n\n if (properties.length > 0) {\n const propertiesDef: Definition = {\n title: 'Properties',\n properties: []\n }\n\n for (const prop of properties) {\n if (!prop.type) {\n console.warn('(jsInterfaceToUniformRef): Property type not found', prop.name)\n continue\n }\n\n let description = \"\"\n if (prop.comment) {\n description = commentToUniformDescription(prop.comment)\n }\n\n const uniformType = someTypeToUniform.call(this, prop.type)\n let someTypeProps = {}\n let meta: DefinitionPropertyMeta[] = []\n if (typeof uniformType === \"object\") {\n delete uniformType.ofType\n someTypeProps = uniformType\n meta = uniformType.meta || []\n }\n\n // TODO: unify interfaceToUniformRef with uniformProperties\n if (!prop.flags?.isOptional) {\n meta.push({\n name: \"required\",\n value: \"true\"\n })\n }\n if (Array.isArray(prop.comment?.modifierTags) && prop.comment?.modifierTags?.includes(\"@internal\")) {\n meta.push({\n name: \"internal\",\n value: \"true\"\n })\n }\n\n const property: DefinitionProperty = {\n name: prop.name,\n type: typeof uniformType === \"string\" ? uniformType : \"\",\n description,\n ...someTypeProps,\n meta\n }\n\n if (prop.comment) {\n const examples = commentToUniformExamples(prop.comment)\n if (examples.length > 0) {\n property.examples = examples\n }\n }\n\n propertiesDef.properties.push(property)\n }\n\n definitions.push(propertiesDef)\n }\n }\n\n // handle methods\n {\n const methods = dec.children?.filter(child =>\n child.kind === ReflectionKind.Method\n ) || []\n\n if (methods.length > 0) {\n const methodsDef: Definition = {\n title: 'Methods',\n properties: []\n }\n\n for (const method of methods) {\n if (!method.signatures?.[0]) continue\n\n const methodSign = method.signatures[0]\n let methodDesc = \"\"\n if (methodSign.comment) {\n methodDesc = commentToUniformDescription(methodSign.comment)\n }\n\n let type = \"\"\n let someTypeProps = {}\n if (methodSign.type) {\n if (typeof methodSign.type === \"object\") {\n someTypeProps = methodSign.type\n }\n\n type = typeof methodSign.type === \"string\" ? methodSign.type : \"\"\n } else {\n type = \"void\"\n }\n\n const property: DefinitionProperty = {\n name: method.name,\n type,\n description: methodDesc,\n ...someTypeProps\n }\n\n if (method.comment) {\n const examples = commentToUniformExamples(method.comment)\n if (examples.length > 0) {\n property.examples = examples\n }\n }\n\n methodsDef.properties.push(property)\n }\n\n definitions.push(methodsDef)\n }\n }\n\n return ref\n}\n\nfunction jsTypeAliasToUniformRef(\n this: Transformer,\n dec: DeclarationReflection\n) {\n const definitions: Definition[] = []\n\n const ref: Reference = {\n title: `Type ${dec.name}`,\n canonical: \"\",\n description: '',\n context: undefined,\n examples: {\n groups: []\n },\n definitions,\n }\n\n const declarationCtx = declarationUniformContext.call(this, dec)\n if (declarationCtx) {\n ref.context = {\n ...ref.context,\n ...declarationCtx\n }\n }\n ref.canonical = uniformCanonical(dec, declarationCtx)\n\n if (dec.comment) {\n const description = commentToUniformDescription(dec.comment)\n const group = uniformGroup(declarationCtx)\n\n if (ref.context) {\n ref.context.group = [\n ...group,\n \"Types\"\n ]\n }\n\n ref.description = description\n }\n\n if (dec.type && dec.children?.length) {\n console.warn(\"(jsTypeAliasToUniformRef): Type alias with children is not fully supported, only type definition will be handled\", dec.name)\n }\n\n // handle type definition\n {\n const typeDef: Definition = {\n title: 'Type Definition',\n properties: []\n }\n\n let comment = \"\"\n\n if (dec.comment) {\n comment = commentToUniformDescription(dec.comment)\n }\n\n\n if (dec.type) {\n const uniformType = someTypeToUniform.call(this, dec.type)\n let someTypeProps = {}\n if (typeof uniformType === \"object\") {\n delete uniformType.ofType\n someTypeProps = uniformType\n }\n\n const propDefinition: DefinitionProperty = {\n name: \"\",\n type: typeof uniformType === \"string\" ? uniformType : \"\",\n description: comment,\n ...someTypeProps\n }\n\n typeDef.rootProperty = propDefinition\n } else if (dec?.children?.length) {\n const properties = uniformProperties.call(this, dec)\n\n typeDef.properties = properties\n }\n\n definitions.push(typeDef)\n }\n\n return ref\n}\n\nfunction jsEnumToUniformRef(\n this: Transformer,\n dec: DeclarationReflection\n) {\n const definitions: Definition[] = []\n\n const ref: Reference = {\n title: `Enum ${dec.name}`,\n canonical: \"\",\n description: '',\n context: undefined,\n examples: {\n groups: []\n },\n definitions\n }\n\n const declarationCtx = declarationUniformContext.call(this, dec)\n if (declarationCtx) {\n ref.context = {\n ...ref.context,\n ...declarationCtx\n }\n }\n ref.canonical = uniformCanonical(dec, declarationCtx)\n\n if (dec.comment) {\n const description = commentToUniformDescription(dec.comment)\n const group = uniformGroup(declarationCtx)\n\n if (ref.context) {\n ref.context.group = [\n ...group,\n \"Enums\"\n ]\n }\n\n ref.description = description\n }\n\n // handle enum members\n {\n const members = dec.children?.filter(child =>\n child.kind === ReflectionKind.EnumMember\n ) || []\n\n if (members.length > 0) {\n const membersDef: Definition = {\n title: 'Members',\n properties: []\n }\n\n // Sort members by their line number to preserve the original order in the source code\n const sortedMembers = [...members].sort((a, b) => {\n if (!a.sources?.[0]?.line || !b.sources?.[0]?.line) {\n return 0;\n }\n return a.sources[0].line - b.sources[0].line;\n });\n\n for (const member of sortedMembers) {\n let description = \"\"\n if (member.comment) {\n description = commentToUniformDescription(member.comment)\n }\n\n // Extract the enum member value\n let value = \"\";\n let type = \"number\";\n\n // Check if the member has a type property with a literal value\n if (member.type && typeof member.type === 'object' && member.type.type === 'literal' && member.type.value !== null) {\n // If the value is a string, it's a string enum\n if (typeof member.type.value === 'string') {\n value = member.type.value;\n type = \"string\";\n } else {\n // Otherwise it's a number enum\n value = member.type.value.toString();\n type = \"number\";\n }\n }\n // Fallback to defaultValue if type is not available\n else if (member.defaultValue !== undefined) {\n value = member.defaultValue.toString();\n // Check if the value is a string (enclosed in quotes)\n if (value.startsWith('\"') && value.endsWith('\"')) {\n type = \"string\";\n // Remove the quotes for display\n value = value.substring(1, value.length - 1);\n }\n }\n\n const formattedName = `${member.name} (${value})`;\n\n membersDef.properties.push({\n name: formattedName,\n type: type,\n description\n })\n }\n\n definitions.push(membersDef)\n }\n }\n\n return ref\n}\n\nfunction declarationUniformContext(\n this: Transformer,\n dec: DeclarationReflection,\n): TypeDocReferenceContext | undefined {\n if (!dec.sources || !dec.sources.length) {\n return\n }\n\n if (dec.sources.length > 1) {\n console.warn('(declarationUniformContext): Multiple sources not supported for function declaration', dec.name)\n }\n\n const source = dec.sources[0]\n\n const signTxt = this.signatureTextLoader.signatureText(\n dec.id,\n source?.line\n ) || \"\"\n\n const sourceCode = this.signatureTextLoader.signatureSourceCode(\n dec.id,\n source?.line\n ) || \"\"\n\n // Get the symbol map to find the package path\n const symbolMap = this.project.symbolIdMap[dec.id] as ReflectionSymbolId\n\n // Use the packagePath directly as it's already relative to the module root\n const fileFullPath = symbolMap.packagePath\n\n const meta: TypeDocReferenceContextMeta[] = []\n\n if (Array.isArray(dec.comment?.modifierTags) && dec.comment?.modifierTags?.includes(\"@internal\")) {\n meta.push({\n name: \"internal\",\n value: \"true\"\n })\n }\n\n const ctx: TypeDocReferenceContext = {\n symbolId: dec.id?.toString(),\n symbolName: dec.name,\n symbolKind: dec.kind,\n packageName: symbolMap?.packageName,\n fileName: source.fileName,\n fileFullPath,\n line: source.line,\n col: source.character,\n signatureText: {\n code: signTxt,\n lang: \"ts\",\n },\n sourcecode: {\n code: sourceCode,\n lang: \"ts\"\n },\n meta,\n }\n\n const category = uniformCategory(dec)\n if (category) {\n ctx.category = category\n }\n\n return ctx\n}\n\ntype SomeTypeUniform = string | {\n type?: string;\n ofType?: string;\n symbolDef?: SymbolDef;\n ofProperty?: DefinitionProperty;\n properties?: DefinitionProperty[];\n meta?: DefinitionPropertyMeta[];\n}\n\nfunction someTypeToUniform(\n this: Transformer,\n someType: SomeType\n): SomeTypeUniform | string {\n const meta: DefinitionPropertyMeta[] = []\n\n if (\"target\" in someType) {\n // TODO: better data structure - is there any map for this?\n for (const child of this?.project?.children || []) {\n if (String(child.id) === String(someType.target)) {\n if (Array.isArray(child.comment?.modifierTags) && child.comment?.modifierTags?.includes(\"@internal\")) {\n meta.push({\n name: \"internal\",\n value: \"true\"\n })\n }\n }\n }\n }\n\n switch (someType.type) {\n case \"reference\": { // e.g ReferenceType\n let refType = `${someType.qualifiedName || someType.name}`\n\n if (\"target\" in someType && typeof someType.target === \"number\") {\n return {\n type: refType,\n symbolDef: {\n id: someType.target?.toString()\n },\n meta\n }\n }\n\n // Handle generic types like Record with typeArguments\n if (\"typeArguments\" in someType && someType.typeArguments) {\n const typeArgs = someType.typeArguments.map(arg => {\n const argType = someTypeToUniform.call(this, arg)\n return typeof argType === \"string\" ? argType : argType.type || \"\"\n })\n refType = `${refType}<${typeArgs.join(\", \")}>`\n }\n\n return refType\n }\n\n case \"union\": { // e.g type | type2\n const resp = unionLikeSomeType.call(this, someType.types)\n\n if (typeof resp === \"string\") {\n return resp\n }\n\n return {\n ...resp,\n meta: [\n ...(resp.meta || []),\n ...meta\n ]\n }\n }\n\n case \"literal\": { // primitive types or string literals\n if (typeof someType.value === \"string\") { // e.g `\"opener\"`\n return `\"${someType.value}\"`\n }\n\n return (someType.value || \"\").toString() // e.g `123` or `true`\n }\n\n case \"reflection\": { // inline like {something: true}\n const properties = uniformProperties.call(this, someType.declaration)\n\n let type = \"\"\n\n if (someType.declaration.indexSignatures?.length || someType.declaration.children?.length) {\n type = this.signatureTextLoader.signatureText(\n someType.declaration.id,\n someType.declaration.sources?.[0]?.line || 0,\n {\n typeOnly: true,\n }\n ) || \"\"\n }\n\n if (someType.declaration.indexSignatures?.length) {\n if (properties.length > 1) {\n console.warn('(someTypeToUniform): Reflection type with multiple properties, using first one as ofProperty', someType.declaration.name)\n }\n\n return {\n type: DEFINED_DEFINITION_PROPERTY_TYPE.UNION,\n properties: [],\n meta,\n ofProperty: {\n name: \"\",\n type,\n description: \"\",\n }\n }\n }\n\n return {\n type,\n properties,\n meta\n }\n }\n\n case \"array\": { // e.g type[]\n const arrayItemType = someTypeToUniform.call(this, someType.elementType)\n\n if (typeof arrayItemType === \"string\") {\n return {\n type: arrayItemType + \"[]\",\n meta,\n }\n }\n\n return {\n ofType: (arrayItemType.type || \"\") + \"[]\",\n type: DEFINED_DEFINITION_PROPERTY_TYPE.ARRAY,\n ofProperty: {\n name: \"\",\n description: \"\",\n type: (arrayItemType.type || \"\"),\n properties: [],\n symbolDef: arrayItemType.symbolDef\n },\n meta,\n }\n }\n\n case \"tuple\": { // e.g [type, type2]\n const elements = someType.elements || []\n const elementTypes = elements.map(element => someTypeToUniform.call(this, element))\n\n const tupleType = `[${elementTypes.map(t => typeof t === \"string\" ? t : t.type || \"\").join(\", \")}]`\n\n // 1. collect all symbol definitions from tuple elements\n const symbolIds: string[] = []\n for (const t of elementTypes) {\n if (typeof t === \"object\" && t.symbolDef?.id) {\n if (Array.isArray(t.symbolDef.id)) {\n symbolIds.push(...t.symbolDef.id)\n } else {\n symbolIds.push(t.symbolDef.id)\n }\n }\n }\n\n return {\n type: tupleType,\n symbolDef: symbolIds.length > 0 ? {id: symbolIds} : undefined,\n meta\n }\n }\n\n case \"intersection\": { // e.g type & type2\n const resp = unionLikeSomeType.call(this, someType.types)\n\n if (typeof resp === \"string\") {\n return resp\n }\n\n return {\n ...resp,\n meta: [\n ...(resp.meta || []),\n ...meta\n ]\n }\n }\n\n case \"rest\": {\n const resp = someTypeToUniform.call(this, someType.elementType)\n\n if (typeof resp === \"string\") {\n return `${resp}[]`\n }\n\n return {\n ...resp,\n type: `${resp.type || \"\"}[]`,\n }\n }\n\n default: {\n if (!(\"name\" in someType)) {\n console.warn('SomeType does not have name property', someType.type)\n return \"\"\n }\n\n return someType.name\n }\n }\n\n return \"\"\n}\n\nfunction unionLikeSomeType(this: Transformer, someTypes: SomeType[]): SomeTypeUniform | string {\n let types: string[] = []\n const symbolIds: string[] = []\n\n for (const t of someTypes) {\n const tUniform = someTypeToUniform.call(this, t)\n\n if (typeof tUniform === \"object\") {\n // TODO: IN THE FUTURE CREATE AUDIENCES TO UNLOCK INTERNAL TYPES\n if (tUniform.meta?.some(m => m.name === \"internal\" && m.value === \"true\")) {\n continue\n }\n // If it's a tuple type, don't split it\n if (tUniform.type?.startsWith('[') && tUniform.type?.endsWith(']')) {\n types.push(tUniform.type)\n } else {\n types.push(tUniform.ofType || tUniform.type || \"\")\n }\n\n if (tUniform?.symbolDef?.id) {\n if (Array.isArray(tUniform?.symbolDef?.id)) {\n symbolIds.push(...tUniform.symbolDef?.id)\n } else {\n symbolIds.push(tUniform.symbolDef.id)\n }\n }\n\n delete tUniform.ofType\n } else {\n types.push(tUniform)\n }\n }\n\n return {\n type: types.filter(Boolean).join(\" | \"),\n symbolDef: {\n id: symbolIds,\n },\n }\n}\n\nfunction commentToUniformDescription(comment: Comment): string {\n let desc = \"\"\n\n for (const summary of comment?.summary || []) {\n desc += `${summary.text}\\n`\n }\n\n return desc\n}\n\nfunction commentToUniformExamples(comment: Comment): string[] {\n if (!comment.blockTags || !comment.blockTags.length) {\n return []\n }\n\n const examples: string[] = []\n\n for (const tag of comment.blockTags) {\n if (tag.tag === \"@example\") {\n for (const content of tag.content || []) {\n if (content.kind === \"code\") {\n // Remove the ```ts and ``` markers from the code block\n const code = content.text.replace(/```ts\\n|\\n```/g, '')\n examples.push(code)\n }\n }\n }\n }\n\n return examples\n}\n\nfunction uniformCategory(dec?: DeclarationReflection): string {\n if (!dec) {\n return \"\"\n }\n\n let category = \"\"\n for (const signature of dec.signatures || []) {\n if (signature.comment) {\n const comment = signature.comment\n if (comment.blockTags) {\n for (const tag of comment.blockTags) {\n if (tag.tag === \"@category\") {\n for (const content of tag.content || []) {\n category += content.text\n }\n }\n }\n }\n }\n }\n\n return category\n}\n\nfunction returnCommentToUniform(comment: Comment): string {\n if (!comment.blockTags || !comment.blockTags.length) {\n return \"\"\n }\n\n let desc = \"\"\n for (const tag of comment.blockTags) {\n if (tag.tag === \"@returns\") {\n for (const content of tag.content || []) {\n desc += `${content.text}\\n`\n }\n }\n }\n\n return desc\n}\n\nfunction uniformProperties(\n this: Transformer,\n dec: DeclarationReflection\n): DefinitionProperty[] {\n const properties: DefinitionProperty[] = []\n\n for (const prop of dec.children || []) {\n if (!prop.type) {\n console.warn('(uniformProperties): Property type not found', prop.name)\n continue\n }\n\n let description = \"\"\n if (prop.comment) {\n description = commentToUniformDescription(prop.comment)\n }\n\n const uniformType = someTypeToUniform.call(this, prop.type)\n let meta: DefinitionPropertyMeta[] = []\n\n let someTypeProps = {}\n if (typeof uniformType === \"object\") {\n delete uniformType.ofType\n someTypeProps = uniformType\n\n meta = uniformType.meta || []\n }\n\n if (!prop.flags?.isOptional) {\n meta.push({\n name: \"required\",\n value: \"true\"\n })\n }\n\n if (Array.isArray(prop.comment?.modifierTags) && prop.comment?.modifierTags?.includes(\"@internal\")) {\n meta.push({\n name: \"internal\",\n value: \"true\"\n })\n }\n\n const property: DefinitionProperty = {\n name: prop.name,\n type: typeof uniformType === \"string\" ? uniformType : \"\",\n description,\n ...someTypeProps,\n meta\n }\n\n if (prop.comment) {\n const examples = commentToUniformExamples(prop.comment)\n if (examples.length > 0) {\n property.examples = examples\n }\n }\n\n properties.push(property)\n }\n\n return properties\n}\n\nfunction uniformGroup(ctx?: TypeDocReferenceContext): string[] {\n if (!ctx) {\n return []\n }\n\n const group = ctx.packageName.split(\"/\")\n\n return group\n}\n\nfunction uniformCanonical(dec: DeclarationReflection, ctx?: TypeDocReferenceContext): string {\n const parts: string[] = []\n if (ctx?.packageName) {\n parts.push(ctx.packageName)\n }\n\n switch (dec.kind) {\n case ReflectionKind.Class: {\n parts.push(\"classes\", dec.name)\n break\n }\n case ReflectionKind.Interface: {\n parts.push(\"interfaces\", dec.name)\n break\n }\n case ReflectionKind.Function: {\n parts.push(\"functions\", dec.name)\n break\n }\n case ReflectionKind.TypeAlias: {\n parts.push(\"types\", dec.name)\n break\n }\n case ReflectionKind.Enum: {\n parts.push(\"enums\", dec.name)\n break\n }\n default: {\n return \"\"\n }\n }\n\n return parts.join(\"/\")\n}","import * as ts from 'typescript';\nimport * as fs from \"node:fs\";\n\n// TODO: in the future more lightweight solution ??? - currently it's fine cuz it uses battle-tested TypeScript API\n\nconst printer = ts.createPrinter({removeComments: true});\n\nexport class SignatureTextLoader {\n protected sourceFile: ts.SourceFile;\n\n constructor(sourcePath: string) {\n const source = fs.readFileSync(sourcePath, 'utf-8');\n\n this.sourceFile = ts.createSourceFile(\n sourcePath,\n source,\n ts.ScriptTarget.Latest,\n true\n );\n }\n}\n\nexport class MultiSignatureLoader {\n private loaders: Map<string, SignatureTextLoader>\n\n constructor() {\n this.loaders = new Map<string, SignatureTextLoader>()\n }\n\n protected load(path: string) {\n if (this.loaders.has(path)) {\n return this.loaders.get(path)\n }\n\n const loader = new SignatureTextLoader(path)\n this.loaders.set(path, loader)\n\n return loader\n }\n}\n\n/**\n * Get the signature text of a function, class, interface, enum, or type alias at a specific line.\n *\n * @param sign - instance of SignatureText\n * @param targetLine - the line number of the signature in source code\n *\n * @returns code friendly signature text\n */\nexport function signatureTextByLine(\n sign: SignatureTextLoader,\n targetLine: number,\n options?: any // TODO: fix any\n) {\n return signatureText.call(sign, targetLine, options)\n}\n\n/**\n * Get the source code of a function, class, interface, enum, or type alias at a specific line.\n *\n * @param sign - instance of SignatureText\n * @param targetLine - the line number of the signature in source code\n *\n * @returns source code of the signature\n */\nexport function signatureSourceCodeByLine(\n sign: SignatureTextLoader,\n targetLine: number\n) {\n return signatureSourceCode.call(sign, targetLine)\n}\n\nfunction signatureText(\n this: SignatureTextLoader,\n targetLine: number,\n options?: any // TODO: fix any\n) {\n const sourceFile = this.sourceFile;\n const signatureNode = findSignatureNode.call(\n this,\n sourceFile,\n [targetLine]\n );\n\n if (!signatureNode) {\n console.error(\"(signatureText): `signatureNode` is empty, something went wrong\");\n return\n }\n\n const printableSignatureNode = nodeToPrintableSignatureNode(signatureNode, options?.typeOnly);\n if (!printableSignatureNode) {\n console.error(\"(signatureText): cannot convert `signatureNode` to `printableSignatureNode`\");\n return\n }\n\n return printer.printNode(ts.EmitHint.Unspecified, printableSignatureNode, sourceFile).trim()\n}\n\n// TODO: this function is probably not optimized well (recursion when not needed)\nfunction findSignatureNode(\n this: SignatureTextLoader,\n node: ts.Node,\n targetLines: number[]\n) {\n let isSourceFile = false\n if (node === node.getSourceFile()) {\n isSourceFile = true\n }\n\n if (!isSourceFile && isNodeAtLine(node, targetLines, this.sourceFile)) {\n return node\n }\n\n let signatureNode: ts.Node | undefined;\n\n ts.forEachChild(node, (n) => {\n if (signatureNode) {\n return\n }\n signatureNode = findSignatureNode.call(this, n, targetLines)\n });\n\n return signatureNode\n}\n\n\nfunction signatureSourceCode(\n this: SignatureTextLoader,\n targetLine: number\n) {\n const sourceFile = this.sourceFile;\n const signatureNode = findSignatureNode.call(\n this,\n sourceFile,\n [targetLine]\n );\n\n if (!signatureNode) {\n console.error(\"(signatureSourceCode): `signatureNode` is empty, something went wrong\");\n return\n }\n\n // Get the start and end positions of the node\n const start = signatureNode.getStart(sourceFile);\n const end = signatureNode.getEnd();\n\n // Get the source text between start and end\n return sourceFile.text.substring(start, end).trim();\n}\n\nfunction nodeToPrintableSignatureNode(node: ts.Node, typeOnly: boolean = false): ts.Node | undefined {\n if (typeOnly) {\n if (\"type\" in node) {\n return node.type as ts.Node\n }\n\n return\n }\n\n let resp: ts.Node | undefined;\n\n if (ts.isFunctionDeclaration(node)) {\n resp = ts.factory.updateFunctionDeclaration(\n node,\n node.modifiers,\n node.asteriskToken,\n node.name,\n node.typeParameters,\n node.parameters,\n node.type,\n undefined\n );\n } else if (ts.isClassDeclaration(node)) {\n resp = ts.factory.updateClassDeclaration(\n node,\n node.modifiers,\n node.name,\n node.typeParameters,\n node.heritageClauses,\n []\n );\n } else if (ts.isInterfaceDeclaration(node)) {\n resp = ts.factory.updateInterfaceDeclaration(\n node,\n node.modifiers,\n node.name,\n node.typeParameters,\n node.heritageClauses,\n []\n );\n } else if (ts.isEnumDeclaration(node)) {\n resp = ts.factory.updateEnumDeclaration(\n node,\n node.modifiers,\n node.name,\n []\n );\n } else if (ts.isTypeAliasDeclaration(node)) {\n resp = ts.factory.updateTypeAliasDeclaration(\n node,\n node.modifiers,\n node.name,\n node.typeParameters,\n node.type\n );\n } else if (ts.isPropertySignature(node)) {\n resp = ts.factory.updatePropertySignature(\n node,\n node.modifiers,\n node.name,\n node.questionToken,\n node.type\n );\n } else {\n resp = node\n }\n\n if (!resp) {\n console.error(\"(nodeToPrintableSignatureNode): resp is empty, something went wrong\");\n return;\n }\n\n return resp\n}\n\nfunction isNodeAtLine(node: ts.Node, lines: number[], sf: ts.SourceFile): boolean {\n const {line: startLine} = sf.getLineAndCharacterOfPosition(node.getStart());\n\n return lines.includes(startLine + 1); // lines are 0-based internally\n}\n\n\n\n","import {\n DEFINED_DEFINITION_PROPERTY_TYPE,\n Definition, DefinitionProperty,\n Reference,\n TypeDocReferenceContext\n} from \"@xyd-js/uniform\";\n\n// TODO: in the future translation system\nconst TXT = {\n Properties: \"Properties\",\n}\n\n// TODO: primite types for different langauges\n// Map of primitive types that can be merged\nconst PRIMITIVE_TYPES = new Set(['string', 'number', 'boolean']);\n\ntype RefsBySymbolId = { [symbolId: string]: Reference };\n\n// TODO: name it eager and move to uniform plugins\n/**\n * `uniformToMiniUniform` converts a list of references into a mini uniform format.\n */\nexport function uniformToMiniUniform(\n rootSymbolName: string,\n references: Reference<TypeDocReferenceContext>[],\n): Reference[] {\n const output: Reference[] = []\n const refBySymbolId: RefsBySymbolId = {}\n\n // 1. collect all references by symbolId\n for (const reference of references) {\n const ctx = reference.context\n\n if (ctx?.symbolId) {\n if (reference.context?.meta?.some(m => m.name === \"internal\" && m.value === \"true\")) {\n continue // Skip internal references\n }\n\n // TODO: check if still has issues with circular references\n refBySymbolId[ctx.symbolId] = JSON.parse(JSON.stringify(reference)); // Deep clone to avoid circular references\n }\n }\n\n // 2. process references by rootSymbolName\n for (const reference of references) {\n const ctx = reference.context\n\n if (ctx?.symbolName !== rootSymbolName) {\n continue\n }\n\n const miniRef: Reference = {\n ...reference,\n title: ctx?.symbolName || reference.title,\n canonical: \"\",\n context: ctx,\n definitions: [],\n }\n\n for (const def of reference.definitions) {\n const miniDef: Definition = {\n ...def,\n title: TXT.Properties,\n properties: [],\n symbolDef: {\n ...def.symbolDef || {},\n canonical: \"\", // TODO: support canonical in the future\n }\n }\n\n const defProperties = def?.rootProperty ? [def.rootProperty] : def.properties || []\n\n definitionMiniPropsPassThrough(\n refBySymbolId,\n defProperties,\n miniDef,\n )\n\n miniRef.definitions.push(miniDef)\n }\n\n output.push(miniRef)\n }\n\n return output\n}\n\n/**\n * `definitionMiniPropsPassThrough` processes the properties of a definition and resolves them into a mini definition.\n */\nfunction definitionMiniPropsPassThrough(\n refBySymbolId: RefsBySymbolId,\n defProperties: DefinitionProperty[],\n miniDef: Definition,\n options?: {\n paramProps?: boolean,\n }\n) {\n for (let property of defProperties) {\n property = {\n ...property,\n symbolDef: {\n ...property.symbolDef || {},\n canonical: \"\", // TODO: support canonical in the future\n }\n }\n\n // 1. resolve the property and all its nested properties\n const resolvedProperty = resolveProperty(refBySymbolId, property, options)\n\n miniDef.properties.push({\n ...resolvedProperty,\n symbolDef: {\n ...resolvedProperty.symbolDef || {},\n canonical: \"\", // TODO: support canonical in the future\n }\n })\n }\n}\n\n/**\n * `resolveProperty` recursively resolves a property and its nested properties.\n */\nfunction resolveProperty(\n refBySymbolId: { [symbolId: string]: Reference },\n property: DefinitionProperty,\n options?: {\n paramProps?: boolean,\n depth?: number,\n visited?: Set<string>\n }\n): DefinitionProperty {\n property = {\n ...property,\n symbolDef: {\n ...property.symbolDef || {},\n canonical: \"\", // TODO: support canonical in the future\n }\n }\n // Initialize depth and visited set if not provided\n const depth = options?.depth || 0;\n const visited = options?.visited || new Set<string>();\n\n // Prevent infinite recursion by limiting depth and tracking visited types\n if (depth > 10) {\n console.warn('Maximum recursion depth reached for property:', property.name);\n return property;\n }\n\n if (property?.properties?.length) {\n return property\n }\n\n const resolvedPropertyProps: DefinitionProperty[] = []\n const resolvedProperty: DefinitionProperty = {\n ...property,\n properties: resolvedPropertyProps,\n }\n\n // 1. handle array types\n if (property.type === DEFINED_DEFINITION_PROPERTY_TYPE.ARRAY) {\n if (property.ofProperty) {\n const resolvedRootProperty = resolveProperty(\n refBySymbolId,\n property.ofProperty,\n options\n )\n\n resolvedProperty.ofProperty = resolvedRootProperty\n\n return resolvedProperty\n } else {\n console.warn(`Property ${property.name} is an array but has no ofProperty defined, using type only`);\n }\n\n return property\n }\n\n // 2. handle symbolDef.id references\n const symbolId = property?.symbolDef?.id;\n if (symbolId) {\n // 3. if symbolId is a string, resolve the reference\n if (typeof symbolId === 'string') {\n if (visited.has(symbolId)) {\n return resolvedProperty;\n }\n visited.add(symbolId);\n\n const refSymbol = refBySymbolId[symbolId];\n const refSymbolDefinition = refSymbol?.definitions?.[0];\n const refSymbolDefinitionProps = refSymbolDefinition?.properties || [];\n\n if (!refSymbol) {\n console.warn(`Reference for symbol ${symbolId} not found, using type only`);\n return resolvedProperty;\n }\n\n // If the referenced type has properties, resolve them\n if (refSymbolDefinitionProps.length) {\n // Recursively resolve each property\n for (const prop of refSymbolDefinitionProps) {\n const resolvedProp = resolveProperty(refBySymbolId, prop, {\n ...options,\n depth: depth + 1,\n visited: new Set(visited)\n });\n resolvedPropertyProps.push(resolvedProp);\n }\n\n } else if (refSymbolDefinition.rootProperty) {\n const resolvedProp = resolveProperty(refBySymbolId, refSymbolDefinition.rootProperty, {\n ...options,\n depth: depth + 1,\n visited: new Set(visited)\n });\n\n resolvedProperty.ofProperty = resolvedProp;\n } else {\n console.warn(`Reference for symbol ${symbolId} has no properties, using type and description only`);\n }\n\n if (!resolvedProperty.description) {\n resolvedProperty.description = refSymbol.description || '';\n }\n\n return resolvedProperty;\n }\n\n // TODO: in the future only symbolId as []? but currently it handles a cases when e.g: `string | Settings`\n // 4. if property is resolve union type\n const isResolveUnion = isResolveUnionRef(property)\n if (isResolveUnion) {\n resolvedProperty.type = DEFINED_DEFINITION_PROPERTY_TYPE.UNION;\n const unionProps = handleUnionTypes(\n refBySymbolId,\n property,\n options\n );\n\n if (unionProps.length > 1) {\n resolvedProperty.properties = unionProps;\n } else {\n resolvedProperty.ofProperty = unionProps[0];\n }\n\n // Try to create a short merged type\n const shortType = shortMergedType(resolvedProperty);\n\n if (shortType) {\n return shortType;\n }\n\n return resolvedProperty\n }\n }\n\n return property\n}\n\n/**\n * `shortMergedType` attempts to simplify a union type by merging properties into a single type string.\n */\nfunction shortMergedType(property: DefinitionProperty): DefinitionProperty | null {\n property = {\n ...property,\n symbolDef: {\n ...property.symbolDef || {},\n canonical: \"\", // TODO: support canonical in the future\n }\n }\n // 1. only handle union types\n if (property.type !== DEFINED_DEFINITION_PROPERTY_TYPE.UNION) {\n return null;\n }\n\n const properties = property.ofProperty ? [property.ofProperty] : property.properties || [];\n\n // 2. process nested properties first\n const processedProperties = properties.map(prop => {\n // 3. if this property is also a union, try to simplify it\n if (prop.type === DEFINED_DEFINITION_PROPERTY_TYPE.UNION) {\n const shortType = shortMergedType(prop);\n if (shortType) {\n return shortType;\n }\n }\n\n // 4. check one level of prop.properties e.g {type: \"Example\": properties: [{name: \"a\", type: \"string\"}, {name: \"b\", type: \"number\"}]}\n const shortType = shortMergedType({\n name: \"\",\n description: \"\",\n type: DEFINED_DEFINITION_PROPERTY_TYPE.UNION,\n properties: prop.properties,\n ofProperty: prop.ofProperty,\n })\n\n if (shortType) {\n return shortType\n }\n\n return prop;\n });\n\n if (!processedProperties?.length) {\n return null\n }\n\n // 5. check if all properties are either string literals or primitive types\n const hasOnlySimpleTypes = processedProperties.every(prop => {\n // 6. check for string literals (type starts and ends with quotes)\n if (isLiteralValues(prop.type)) {\n return true\n }\n\n // 7. check for primitive types also\n return PRIMITIVE_TYPES.has(prop.type);\n });\n\n if (!hasOnlySimpleTypes) {\n return null;\n }\n\n // 8. create merged type string\n const types = processedProperties.map(prop => prop.type);\n const mergedType = types.join(' | ');\n\n return {\n ...property,\n type: mergedType,\n properties: []\n };\n}\n\n/**\n * @todo: in the future typedoc uniform should handle more union types like `$$union`\n *\n * `handleUnionTypes` processes union types from a definition property.\n */\nfunction handleUnionTypes(\n refBySymbolId: { [symbolId: string]: Reference },\n property: DefinitionProperty,\n options?: {\n depth?: number,\n }\n): DefinitionProperty[] {\n property = {\n ...property,\n symbolDef: {\n ...property.symbolDef || {},\n canonical: \"\", // TODO: support canonical in the future\n }\n }\n const symbolIds = Array.isArray(property.symbolDef?.id) ? property.symbolDef.id : [];\n const typeString = property.type\n\n const properties: DefinitionProperty[] = [];\n const unionTypeStringsMap: { [key: string]: boolean } = (typeString || \"\").split(\"|\")\n .map(t => t.trim())\n .reduce((acc, type) => ({\n ...acc,\n [type]: true\n }), {});\n\n // 1. if we have symbolDef.id array, process those firsi\n if (symbolIds.length > 0) {\n for (const symbolId of symbolIds) {\n const refSymbol = refBySymbolId[symbolId];\n const refSymbolDefinition = refSymbol?.definitions?.[0];\n const ctx = refSymbol?.context as TypeDocReferenceContext;\n\n if (refSymbolDefinition) {\n unionTypeStringsMap[ctx.symbolName] = false\n\n const propProperties: DefinitionProperty[] = [];\n const prop: DefinitionProperty = {\n name: ctx.symbolName || '',\n type: ctx.symbolName || '',\n description: refSymbol.description || '',\n properties: propProperties,\n symbolDef: {\n id: symbolId,\n canonical: \"\", // TODO: support canonical in the future\n },\n }\n\n if (refSymbolDefinition.properties.length) {\n for (const prop of refSymbolDefinition.properties) {\n const resolvedProp = resolveProperty(\n refBySymbolId,\n prop,\n options\n )\n\n propProperties.push(resolvedProp)\n }\n } else if (refSymbolDefinition.rootProperty) {\n const resolvedProp = resolveProperty(\n refBySymbolId,\n refSymbolDefinition.rootProperty,\n options\n )\n\n const shouldMergeUnion = resolvedProp.type === DEFINED_DEFINITION_PROPERTY_TYPE.UNION &&\n resolvedProp.ofProperty?.type &&\n !resolvedProp.properties?.length\n\n if (shouldMergeUnion) {\n prop.ofProperty = resolvedProp.ofProperty\n } else {\n prop.ofProperty = resolvedProp\n }\n }\n\n properties.push(prop)\n\n if (!prop.description) {\n prop.description = refSymbol.description || '';\n }\n }\n }\n }\n\n // TODO: in the future it should be done via uniform in xyd-sources?\n // 2. then process any remaining types from the type string\n for (const type of Object.keys(unionTypeStringsMap)) {\n const ok = unionTypeStringsMap[type]\n if (!ok) {\n continue;\n }\n\n properties.push({\n name: type,\n type: type,\n description: '',\n properties: []\n });\n }\n\n return properties\n}\n\n/**\n * `isResolveUnionRef` checks if the property should be resolved as a union type.\n * It checks if the symbolDef.id is an array or if the type contains a union string to resolve, except literal values.\n *\n * @example: {symbolDef: {id: []}, type: `string | number`}\n * @example: {symbolDef: {id: [\"1\"]}, type: `string | Logo`}\n * @example: {symbolDef: {id: [\"1\", \"2\"]}, type: `Icon | Logo`}\n */\nfunction isResolveUnionRef(property: DefinitionProperty): boolean {\n const symbolId = property?.symbolDef?.id\n\n const symbolIsArr = (Array.isArray(symbolId) && symbolId.length)\n if (symbolIsArr) {\n return true\n }\n\n const hasUnionString = (property.type && property.type.includes(\"|\"))\n\n if (hasUnionString) {\n const literalValues = isLiteralValues(property.type)\n\n if (literalValues) {\n return false // If all types are literal values, do not resolve as union\n }\n\n return true\n }\n\n return false\n}\n\n/**\n * `isLiteralValues` checks if the type is a literal value like: `\"opener\" | \"cosmo\" | \"picasso\"`\n *\n * @example: `\"opener\" | \"cosmo\" | \"picasso\"` - returns true\n * @example: `string | \"number` - returns false\n */\nfunction isLiteralValues(type: string) {\n const types = type.split(\"|\").map(t => t.trim())\n\n return types.every(t =>\n (t.startsWith('\"') && t.endsWith('\"')) ||\n (t.startsWith(\"'\") && t.endsWith(\"'\"))\n )\n}\n"],"mappings":"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","names":["path","fs","path","_a","import_uniform","shortType","prop","ts"]}
|
package/dist/ts.d.cts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as TypeDoc from 'typedoc';
|
|
2
|
+
import { Reference, TypeDocReferenceContext, ReferenceContext } from '@xyd-js/uniform';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* `uniformToMiniUniform` converts a list of references into a mini uniform format.
|
|
6
|
+
*/
|
|
7
|
+
declare function uniformToMiniUniform(rootSymbolName: string, references: Reference<TypeDocReferenceContext>[]): Reference[];
|
|
8
|
+
|
|
9
|
+
declare function sourcesToUniformV2(root: string, entryPoints: string[]): Promise<{
|
|
10
|
+
references: Reference<ReferenceContext>[];
|
|
11
|
+
projectJson: TypeDoc.JSONOutput.ProjectReflection;
|
|
12
|
+
} | undefined>;
|
|
13
|
+
|
|
14
|
+
export { sourcesToUniformV2, uniformToMiniUniform };
|
package/dist/ts.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as TypeDoc from 'typedoc';
|
|
2
|
+
import { Reference, TypeDocReferenceContext, ReferenceContext } from '@xyd-js/uniform';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* `uniformToMiniUniform` converts a list of references into a mini uniform format.
|
|
6
|
+
*/
|
|
7
|
+
declare function uniformToMiniUniform(rootSymbolName: string, references: Reference<TypeDocReferenceContext>[]): Reference[];
|
|
8
|
+
|
|
9
|
+
declare function sourcesToUniformV2(root: string, entryPoints: string[]): Promise<{
|
|
10
|
+
references: Reference<ReferenceContext>[];
|
|
11
|
+
projectJson: TypeDoc.JSONOutput.ProjectReflection;
|
|
12
|
+
} | undefined>;
|
|
13
|
+
|
|
14
|
+
export { sourcesToUniformV2, uniformToMiniUniform };
|