-
Notifications
You must be signed in to change notification settings - Fork 118
/
config.ts
84 lines (72 loc) · 2.27 KB
/
config.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import type { SourceUnit } from 'solidity-ast';
import type { DocItem } from './doc-item';
import type { PageAssigner, PageStructure } from './site';
export interface UserConfig {
/**
* The directory where rendered pages will be written.
* Defaults to 'docs'.
*/
outputDir?: string;
/**
* A directory of custom templates that should take precedence over the
* theme's templates.
*/
templates?: string;
/**
* The name of the built-in templates that will be used by default.
* Defaults to 'markdown'.
*/
theme?: string;
/**
* The way documentable items (contracts, functions, custom errors, etc.)
* will be organized in pages. Built in options are:
* - 'single': all items in one page
* - 'items': one page per item
* - 'files': one page per input Solidity file
* More customization is possible by defining a function that returns a page
* path given the AST node for the item and the source unit where it is
* defined.
* Defaults to 'single'.
*/
pages?: 'single' | 'items' | 'files' | PageAssigner;
/**
* An array of sources subdirectories that should be excluded from
* documentation, relative to the contract sources directory.
*/
exclude?: string[];
/**
* Clean up the output by collapsing 3 or more contiguous newlines into only 2.
* Enabled by default.
*/
collapseNewlines?: boolean;
/**
* The extension for generated pages.
* Defaults to '.md'.
*/
pageExtension?: string;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
// Other config parameters that will be provided by the environment (e.g. Hardhat)
// rather than by the user manually, unless using the library directly.
export interface Config extends UserConfig {
/**
* The root directory relative to which 'outputDir', 'sourcesDir', and
* 'templates' are specified. Defaults to the working directory.
*/
root?: string;
/**
* The Solidity sources directory.
*/
sourcesDir?: string;
}
export type FullConfig = Required<Config>;
export const defaults: Omit<FullConfig, 'templates'> = {
root: process.cwd(),
sourcesDir: 'contracts',
outputDir: 'docs',
pages: 'single',
exclude: [],
theme: 'markdown',
collapseNewlines: true,
pageExtension: '.md',
};