1 | import * as tsm from 'ts-morph';
|
2 | import { DeclarationSource } from '../types/module-declarations';
|
3 | import { getFilename } from './get-filename';
|
4 | import { getStartLineNumber } from './get-start-line-number';
|
5 | import { RepositoryFileURLProvider } from './repository-file-url-provider';
|
6 | import { UnpkgFileURLProvider } from './unpkg-file-url-provider';
|
7 |
|
8 | export type SourceProvider = ({
|
9 | declaration,
|
10 | }: {
|
11 | declaration: tsm.Node;
|
12 | }) => DeclarationSource;
|
13 |
|
14 | export 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 | }
|