UNPKG

992 BPlain TextView Raw
1import * as tsm from 'ts-morph';
2import { DeclarationSource } from '../types/module-declarations';
3import { getFilename } from './get-filename';
4import { getStartLineNumber } from './get-start-line-number';
5import { RepositoryFileURLProvider } from './repository-file-url-provider';
6import { UnpkgFileURLProvider } from './unpkg-file-url-provider';
7
8export type SourceProvider = ({
9 declaration,
10}: {
11 declaration: tsm.Node;
12}) => DeclarationSource;
13
14export function getSourceProvider({
15 getRepositoryFileURL,
16 getUnpkgFileURL,
17}: {
18 getRepositoryFileURL: RepositoryFileURLProvider;
19 getUnpkgFileURL: UnpkgFileURLProvider;
20}): SourceProvider {
21 return ({ declaration }) => {
22 const filename = getFilename({ declaration });
23 const line = getStartLineNumber({ declaration });
24 const url = getRepositoryFileURL({ filename, line });
25 const unpkgURL = getUnpkgFileURL({ filename, line });
26 return { filename, line, url, unpkgURL };
27 };
28}