@tobi-or-not/docpress 0.1.0

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.
Files changed (54) hide show
  1. package/README.md +74 -0
  2. package/bin/docpress.js +5 -0
  3. package/dist/commands/build.js +16 -0
  4. package/dist/commands/build.js.map +1 -0
  5. package/dist/commands/fetch.js +25 -0
  6. package/dist/commands/fetch.js.map +1 -0
  7. package/dist/commands/global.js +6 -0
  8. package/dist/commands/global.js.map +1 -0
  9. package/dist/commands/prepare.js +46 -0
  10. package/dist/commands/prepare.js.map +1 -0
  11. package/dist/index.js +31 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/lib/fetch.js +92 -0
  14. package/dist/lib/fetch.js.map +1 -0
  15. package/dist/lib/git.js +33 -0
  16. package/dist/lib/git.js.map +1 -0
  17. package/dist/lib/prepare.js +128 -0
  18. package/dist/lib/prepare.js.map +1 -0
  19. package/dist/lib/vitepress.js +50 -0
  20. package/dist/lib/vitepress.js.map +1 -0
  21. package/dist/schemas/build.js +3 -0
  22. package/dist/schemas/build.js.map +1 -0
  23. package/dist/schemas/fetch.js +24 -0
  24. package/dist/schemas/fetch.js.map +1 -0
  25. package/dist/schemas/global.js +16 -0
  26. package/dist/schemas/global.js.map +1 -0
  27. package/dist/schemas/prepare.js +22 -0
  28. package/dist/schemas/prepare.js.map +1 -0
  29. package/dist/utils/commands.js +21 -0
  30. package/dist/utils/commands.js.map +1 -0
  31. package/dist/utils/const.js +8 -0
  32. package/dist/utils/const.js.map +1 -0
  33. package/dist/utils/functions.js +107 -0
  34. package/dist/utils/functions.js.map +1 -0
  35. package/dist/utils/regex.js +20 -0
  36. package/dist/utils/regex.js.map +1 -0
  37. package/package.json +62 -0
  38. package/types/commands/build.d.ts +3 -0
  39. package/types/commands/fetch.d.ts +4 -0
  40. package/types/commands/global.d.ts +1 -0
  41. package/types/commands/prepare.d.ts +4 -0
  42. package/types/index.d.ts +1 -0
  43. package/types/lib/fetch.d.ts +19 -0
  44. package/types/lib/git.d.ts +241 -0
  45. package/types/lib/prepare.d.ts +55 -0
  46. package/types/lib/vitepress.d.ts +3 -0
  47. package/types/schemas/build.d.ts +3 -0
  48. package/types/schemas/fetch.d.ts +21 -0
  49. package/types/schemas/global.d.ts +64 -0
  50. package/types/schemas/prepare.d.ts +18 -0
  51. package/types/utils/commands.d.ts +82 -0
  52. package/types/utils/const.d.ts +6 -0
  53. package/types/utils/functions.d.ts +21 -0
  54. package/types/utils/regex.d.ts +2 -0
package/README.md ADDED
@@ -0,0 +1,74 @@
1
+ # Docpress :robot:
2
+
3
+ This project aims to automate the construction of documentation website based on a Github username and optionally a list of repositories.
4
+
5
+ ## Explanation
6
+
7
+ The package will download the documentation files for the given repository list, to do this it will check if a `docs/` folder is present at root level and download this entire folder or only the `README.md` file if this is not the case.
8
+ After downloading all project documentation files, it will build a static website using [vitepress](https://vitepress.dev/).
9
+
10
+ > If a `docs/` folder is present, all files in it will be sorted and renamed without the prefix number so it will not appeared inside the generated website. Example: `docs/01-get-started.md` will become `get-started.md`.
11
+
12
+ ## Quickstart
13
+
14
+ ```sh
15
+ git clone https://github.com/this-is-tobi/docpress.git
16
+ cd ./docpress
17
+ docker build --tag robots/docpress --target prod .
18
+ docker run --publish 8080:8080 --name docpress --rm -v $(pwd)/docpress:/app/docpress:rw robots/docpress -u <username>
19
+ ```
20
+
21
+ ## Advanced usage
22
+
23
+ ```txt
24
+ Usage: docpress [options] [command]
25
+
26
+ Build your doc website faster than light ⚡️⚡️⚡️
27
+
28
+ Options:
29
+ -b, --branch <string> Branch used to collect Git provider data. (default: "main")
30
+ -c, --extra-public-content <string> List of comma separated additional files or directories to process Vitepress public folder.
31
+ -C, --config <string> Path to the docpress configuration file.
32
+ -g, --git-provider <string> Git provider used to retrieve data. Values should be one of "github" or "gitlab". (default: "github")
33
+ -h, --help display help for command
34
+ -p, --extra-header-pages <string> List of comma separated additional files or directories to process Vitepress header pages.
35
+ -r, --repos-filter <string> List of comma separated repositories to retrieve from Git provider. Default to all user's public repositories.
36
+ -t, --extra-theme <string> List of comma separated additional files or directories to process Vitepress public folder.
37
+ -T, --token <string> Git provider token used to collect data.
38
+ -u, --username <string> Git provider username used to collect data.
39
+ -v, --vitepress-config <string> Path to the vitepress configuration file.
40
+ -V, --version output the version number
41
+
42
+ Commands:
43
+ build [options] Build vitepress website.
44
+ fetch [options] Fetch docs with the given username and git provider.
45
+ prepare [options] Transform doc to the target vitepress format.
46
+ ```
47
+
48
+ ## Development
49
+
50
+ ### Prerequisites
51
+
52
+ To run the application in development mode, install :
53
+ - [nodejs](https://nodejs.org/) *- javascript runtime.*
54
+ - [pnpm](https://pnpm.io/) *- powerful, space efficient node package manager.*
55
+
56
+ ### Use CLI
57
+
58
+ 1. Install project nodejs dependencies.
59
+ ```sh
60
+ pnpm install
61
+ ```
62
+ 2. Fetch and build website.
63
+ ```sh
64
+ pnpm run dev -u <username>
65
+ ```
66
+ 3. Preview website.
67
+ ```sh
68
+ pnpm run vp:dev
69
+ ```
70
+
71
+ Preview website is available at <http://localhost:8080>.
72
+
73
+ > [!TIP]
74
+ > Use command `pnpm run dev -h` to print options.
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env -S NODE_OPTIONS=--no-warnings node
2
+
3
+ import main from '../dist/index.js'
4
+
5
+ main()
@@ -0,0 +1,16 @@
1
+ import { build as vitepressBuild } from 'vitepress';
2
+ import { createCommand } from 'commander';
3
+ import { addOptions } from '../utils/commands.js';
4
+ import { DOCPRESS_DIR } from '../utils/const.js';
5
+ import { globalOpts } from './global.js';
6
+ const cmdName = 'build';
7
+ export const buildOpts = [];
8
+ export const buildCmd = addOptions(createCommand(cmdName), globalOpts)
9
+ .description('Build vitepress website.')
10
+ .action(async (_opts) => {
11
+ await main();
12
+ });
13
+ export async function main() {
14
+ await vitepressBuild(DOCPRESS_DIR);
15
+ }
16
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,OAAO,GAAG,OAAO,CAAA;AAEvB,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAA;AAE3B,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;KACnE,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;IACtB,MAAM,IAAI,EAAE,CAAA;AACd,CAAC,CAAC,CAAA;AAEJ,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,cAAc,CAAC,YAAY,CAAC,CAAA;AACpC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { createCommand, createOption } from 'commander';
2
+ import { addOptions, parseOptions } from '../utils/commands.js';
3
+ import { fetchOptsSchema } from '../schemas/fetch.js';
4
+ import { fetchDoc } from '../lib/fetch.js';
5
+ import { globalOpts } from './global.js';
6
+ const cmdName = 'fetch';
7
+ export const fetchOpts = [
8
+ createOption('-b, --branch <string>', fetchOptsSchema.shape.branch._def.description)
9
+ .default(fetchOptsSchema.shape.branch._def.defaultValue()),
10
+ createOption('-g, --git-provider <string>', fetchOptsSchema.shape.gitProvider._def.description)
11
+ .default(fetchOptsSchema.shape.gitProvider._def.defaultValue()),
12
+ createOption('-r, --repos-filter <string>', fetchOptsSchema.shape.reposFilter._def.description),
13
+ createOption('-T, --token <string>', fetchOptsSchema.shape.token._def.description),
14
+ createOption('-u, --username <string>', fetchOptsSchema.shape.username._def.description),
15
+ ];
16
+ export const fetchCmd = addOptions(createCommand(cmdName), [...fetchOpts, ...globalOpts])
17
+ .description('Fetch docs with the given username and git provider.')
18
+ .action(async (opts) => {
19
+ await main(opts);
20
+ });
21
+ export async function main(opts) {
22
+ const { username, reposFilter, token, branch, gitProvider } = parseOptions(cmdName, opts);
23
+ await fetchDoc({ username, branch, reposFilter, gitProvider, token });
24
+ }
25
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/commands/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,OAAO,GAAG,OAAO,CAAA;AAEvB,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,YAAY,CAAC,uBAAuB,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;SACjF,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5D,YAAY,CAAC,6BAA6B,EAAE,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;SAC5F,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IACjE,YAAY,CAAC,6BAA6B,EAAE,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;IAC/F,YAAY,CAAC,sBAAsB,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;IAClF,YAAY,CAAC,yBAAyB,EAAE,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;CACzF,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC;KACtF,WAAW,CAAC,sDAAsD,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,IAAI,CAAC,IAAI,CAAC,CAAA;AAClB,CAAC,CAAC,CAAA;AAEJ,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAY;IACrC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAEzF,MAAM,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAA;AACvE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { createOption } from 'commander';
2
+ import { globalOptsSchema } from '../schemas/global.js';
3
+ export const globalOpts = [
4
+ createOption('-C, --config <string>', globalOptsSchema.shape.config._def.description),
5
+ ];
6
+ //# sourceMappingURL=global.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.js","sourceRoot":"","sources":["../../src/commands/global.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,YAAY,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;CACtF,CAAA"}
@@ -0,0 +1,46 @@
1
+ import { resolve } from 'node:path';
2
+ import { createCommand, createOption } from 'commander';
3
+ import { DOCPRESS_DIR } from '../utils/const.js';
4
+ import { getUserInfos, getUserRepos } from '../utils/functions.js';
5
+ import { addOptions, parseOptions } from '../utils/commands.js';
6
+ import { getVitepressConfig } from '../lib/vitepress.js';
7
+ import { addContent, addExtraPages, generateVitepressFiles, transformDoc } from '../lib/prepare.js';
8
+ import { prepareOptsSchema } from '../schemas/prepare.js';
9
+ import { globalOpts } from './global.js';
10
+ const cmdName = 'prepare';
11
+ export const prepareOpts = [
12
+ createOption('-c, --extra-public-content <string>', prepareOptsSchema.shape.extraPublicContent._def.description),
13
+ createOption('-p, --extra-header-pages <string>', prepareOptsSchema.shape.extraHeaderPages._def.description),
14
+ createOption('-t, --extra-theme <string>', prepareOptsSchema.shape.extraTheme._def.description),
15
+ createOption('-v, --vitepress-config <string>', prepareOptsSchema.shape.vitepressConfig._def.description),
16
+ ];
17
+ export const prepareCmd = addOptions(createCommand(cmdName), [...prepareOpts, ...globalOpts])
18
+ .description('Transform doc to the target vitepress format.')
19
+ .action(async (opts) => {
20
+ await main(opts);
21
+ });
22
+ export async function main(opts) {
23
+ const { extraHeaderPages, extraPublicContent, extraTheme, vitepressConfig } = parseOptions(cmdName, opts);
24
+ const user = getUserInfos();
25
+ const repositories = getUserRepos()
26
+ .reduce((acc, cur) => {
27
+ if (cur.clone_url && !cur.fork && !cur.private && cur.docpress.includes.length && !cur.docpress.filtered) {
28
+ return [...acc, cur];
29
+ }
30
+ return acc;
31
+ }, []);
32
+ const { sidebar, index } = transformDoc(repositories, user);
33
+ const nav = [];
34
+ if (extraHeaderPages) {
35
+ nav.push(...addExtraPages(extraHeaderPages));
36
+ }
37
+ if (extraPublicContent) {
38
+ addContent(extraPublicContent, resolve(DOCPRESS_DIR, 'public'));
39
+ }
40
+ if (extraTheme) {
41
+ addContent(extraTheme, resolve(DOCPRESS_DIR, '.vitepress/theme'));
42
+ }
43
+ const config = getVitepressConfig(sidebar, nav, vitepressConfig);
44
+ generateVitepressFiles(config, index);
45
+ }
46
+ //# sourceMappingURL=prepare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/commands/prepare.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,31 @@
1
+ import { program } from 'commander';
2
+ import pkg from '../package.json' with { type: 'json' };
3
+ import { fetchCmd, main as fetchFn, fetchOpts } from './commands/fetch.js';
4
+ import { buildCmd, main as buildFn } from './commands/build.js';
5
+ import { prepareCmd, main as prepareFn, prepareOpts } from './commands/prepare.js';
6
+ import { addOptions } from './utils/commands.js';
7
+ import { globalOpts } from './commands/global.js';
8
+ export default function main() {
9
+ const pm = program
10
+ .name('docpress')
11
+ .description('Build your doc website faster than light ⚡️⚡️⚡️')
12
+ .version(`${pkg.version}`)
13
+ .addCommand((fetchCmd))
14
+ .addCommand(prepareCmd)
15
+ .addCommand(buildCmd)
16
+ .action(async (opts, _cmd) => {
17
+ await fetchFn(opts);
18
+ await prepareFn(opts);
19
+ await buildFn();
20
+ })
21
+ .configureHelp({
22
+ sortSubcommands: true,
23
+ sortOptions: true,
24
+ showGlobalOptions: true,
25
+ })
26
+ .enablePositionalOptions()
27
+ .passThroughOptions();
28
+ addOptions(pm, [...fetchOpts, ...prepareOpts, ...globalOpts]);
29
+ pm.parseAsync();
30
+ }
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,IAAI,IAAI,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC1E,OAAO,EAAE,QAAQ,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,IAAI,IAAI,SAAS,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,MAAM,CAAC,OAAO,UAAU,IAAI;IAC1B,MAAM,EAAE,GAAG,OAAO;SACf,IAAI,CAAC,UAAU,CAAC;SAChB,WAAW,CAAC,iDAAiD,CAAC;SAC9D,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;SACzB,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;SACtB,UAAU,CAAC,UAAU,CAAC;SACtB,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;QACnB,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;QACrB,MAAM,OAAO,EAAE,CAAA;IACjB,CAAC,CAAC;SACD,aAAa,CAAC;QACb,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,IAAI;QACjB,iBAAiB,EAAE,IAAI;KACxB,CAAC;SACD,uBAAuB,EAAE;SACzB,kBAAkB,EAAE,CAAA;IAEvB,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,WAAW,EAAE,GAAG,UAAU,CAAC,CAAC,CAAA;IAE7D,EAAE,CAAC,UAAU,EAAE,CAAA;AACjB,CAAC"}
@@ -0,0 +1,92 @@
1
+ import { resolve } from 'node:path';
2
+ import { writeFileSync } from 'node:fs';
3
+ import { checkHttpStatus, createDir } from '../utils/functions.js';
4
+ import { DOCPRESS_DIR, DOCS_DIR, USER_INFOS, USER_REPOS_INFOS } from '../utils/const.js';
5
+ import { cloneRepo, getInfos } from './git.js';
6
+ export async function checkDoc(repoOwner, repoName, branch) {
7
+ const rootReadmeUrl = `https://github.com/${repoOwner}/${repoName}/tree/${branch}/README.md`;
8
+ const docsFolderUrl = `https://github.com/${repoOwner}/${repoName}/tree/${branch}/docs`;
9
+ const docsReadmeUrl = `https://github.com/${repoOwner}/${repoName}/tree/${branch}/docs/01-readme.md`;
10
+ const rootReadmeStatus = await checkHttpStatus(rootReadmeUrl);
11
+ const docsFolderStatus = await checkHttpStatus(docsFolderUrl);
12
+ const docsReadmeStatus = await checkHttpStatus(docsReadmeUrl);
13
+ return {
14
+ rootReadmeStatus,
15
+ docsFolderStatus,
16
+ docsReadmeStatus,
17
+ };
18
+ }
19
+ export async function fetchDoc({ username, branch, reposFilter, token }) {
20
+ createDir(DOCPRESS_DIR, { clean: true });
21
+ await getInfos({ username, token, branch })
22
+ .then(async ({ user, repos, branch }) => generateInfos(user, repos, branch, reposFilter))
23
+ .then(async ({ repos }) => getDoc(repos, reposFilter));
24
+ }
25
+ async function enhanceRepositories(repos, branch, reposFilter) {
26
+ const enhancedRepos = [];
27
+ await Promise.all(repos.map(async (repo) => {
28
+ const computedBranch = branch ?? repo.default_branch ?? 'main';
29
+ const projectPath = resolve(DOCS_DIR, repo.name);
30
+ const filtered = isRepoFiltered(repo, reposFilter);
31
+ let includes = [];
32
+ if (!repo.fork && !repo.private && !filtered) {
33
+ includes = await getSparseCheckout(repo, computedBranch);
34
+ }
35
+ enhancedRepos.push({
36
+ ...repo,
37
+ docpress: {
38
+ filtered,
39
+ branch: computedBranch,
40
+ includes,
41
+ projectPath,
42
+ raw_url: `https://raw.githubusercontent.com/${repo.owner.login}/${repo.name}/${computedBranch}`,
43
+ replace_url: `https://github.com/${repo.owner.login}/${repo.name}/tree/${computedBranch}`,
44
+ },
45
+ });
46
+ }));
47
+ return enhancedRepos;
48
+ }
49
+ async function getSparseCheckout(repo, branch) {
50
+ const docsStatus = await checkDoc(repo.owner.login, repo.name, branch);
51
+ const includes = [];
52
+ if (Object.values(docsStatus).every(status => status === 404) || !repo.size) {
53
+ return [];
54
+ }
55
+ if (docsStatus.docsFolderStatus !== 404) {
56
+ includes.push('docs/*');
57
+ }
58
+ if (docsStatus.docsFolderStatus === 404 || docsStatus.docsReadmeStatus === 404) {
59
+ includes.push('README.md', '!*/**/README.md');
60
+ }
61
+ return includes;
62
+ }
63
+ async function generateInfos(user, repos, branch, reposFilter) {
64
+ writeFileSync(USER_INFOS, JSON.stringify(user, null, 2));
65
+ const enhancedRepos = await enhanceRepositories(repos, branch, reposFilter);
66
+ writeFileSync(USER_REPOS_INFOS, JSON.stringify(enhancedRepos, null, 2));
67
+ return { user, repos: enhancedRepos };
68
+ }
69
+ async function getDoc(repos, reposFilter) {
70
+ if (!repos) {
71
+ console.warn('No repository respect docpress rules.');
72
+ return;
73
+ }
74
+ await Promise.all(repos
75
+ .filter(repo => !isRepoFiltered(repo, reposFilter))
76
+ .map(async (repo) => cloneRepo(repo.clone_url, repo.docpress.projectPath, repo.docpress.branch, repo.docpress.includes)));
77
+ }
78
+ export function isRepoFiltered(repo, reposFilter) {
79
+ const isExcluded = reposFilter?.filter(filter => filter.startsWith('!'))
80
+ .some(filter => repo.name === filter.substring(1));
81
+ const isIncluded = !reposFilter || reposFilter?.filter(filter => !filter.startsWith('!'))
82
+ .includes(repo.name);
83
+ const isFiltered = isExcluded || !isIncluded;
84
+ if ('docpress' in repo && !repo.docpress.includes.length) {
85
+ return true;
86
+ }
87
+ if (!!repo.clone_url && !repo.fork && !repo.private && !isFiltered) {
88
+ return false;
89
+ }
90
+ return true;
91
+ }
92
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/lib/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEvC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACxF,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAa9C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,SAAgC,EAAE,QAAgB,EAAE,MAA2B;IAC5G,MAAM,aAAa,GAAG,sBAAsB,SAAS,IAAI,QAAQ,SAAS,MAAM,YAAY,CAAA;IAC5F,MAAM,aAAa,GAAG,sBAAsB,SAAS,IAAI,QAAQ,SAAS,MAAM,OAAO,CAAA;IACvF,MAAM,aAAa,GAAG,sBAAsB,SAAS,IAAI,QAAQ,SAAS,MAAM,oBAAoB,CAAA;IAEpG,MAAM,gBAAgB,GAAG,MAAM,eAAe,CAAC,aAAa,CAAC,CAAA;IAC7D,MAAM,gBAAgB,GAAG,MAAM,eAAe,CAAC,aAAa,CAAC,CAAA;IAC7D,MAAM,gBAAgB,GAAG,MAAM,eAAe,CAAC,aAAa,CAAC,CAAA;IAE7D,OAAO;QACL,gBAAgB;QAChB,gBAAgB;QAChB,gBAAgB;KACjB,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAa;IAChF,SAAS,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAExC,MAAM,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;SACxC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;SACxF,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAA;AAC1D,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,KAAoD,EAAE,MAA4B,EAAE,WAAsC;IAC3J,MAAM,aAAa,GAAyB,EAAE,CAAA;IAE9C,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACzC,MAAM,cAAc,GAAG,MAAM,IAAI,IAAI,CAAC,cAAc,IAAI,MAAM,CAAA;QAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAChD,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QAClD,IAAI,QAAQ,GAAa,EAAE,CAAA;QAE3B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7C,QAAQ,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;QAC1D,CAAC;QAED,aAAa,CAAC,IAAI,CAAC;YACjB,GAAG,IAAI;YACP,QAAQ,EAAE;gBACR,QAAQ;gBACR,MAAM,EAAE,cAAc;gBACtB,QAAQ;gBACR,WAAW;gBACX,OAAO,EAAE,qCAAqC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,cAAc,EAAE;gBAC/F,WAAW,EAAE,sBAAsB,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,SAAS,cAAc,EAAE;aAC1F;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAC,CAAA;IAEH,OAAO,aAAa,CAAA;AACtB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,IAA2D,EAAE,MAA2B;IACvH,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAEtE,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5E,OAAO,EAAE,CAAA;IACX,CAAC;IACD,IAAI,UAAU,CAAC,gBAAgB,KAAK,GAAG,EAAE,CAAC;QACxC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACzB,CAAC;IACD,IAAI,UAAU,CAAC,gBAAgB,KAAK,GAAG,IAAI,UAAU,CAAC,gBAAgB,KAAK,GAAG,EAAE,CAAC;QAC/E,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAA;IAC/C,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAkD,EAAE,KAAoD,EAAE,MAA4B,EAAE,WAAsC;IACzM,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAExD,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;IAC3E,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAEvE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA;AACvC,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,KAA4B,EAAE,WAAsC;IACxF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;QACrD,OAAM;IACR,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CACf,KAAK;SACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;SAClD,GAAG,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAmB,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CACnI,CAAA;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAgF,EAAE,WAAsC;IACrJ,MAAM,UAAU,GAAG,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACrE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,CAAC,WAAW,IAAI,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACtF,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEtB,MAAM,UAAU,GAAG,UAAU,IAAI,CAAC,UAAU,CAAA;IAE5C,IAAI,UAAU,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACzD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;QACnE,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { appendFileSync, cpSync, rmSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import { Octokit } from 'octokit';
4
+ import { simpleGit } from 'simple-git';
5
+ import { createDir } from '../utils/functions.js';
6
+ export async function getInfos({ username, token, branch }) {
7
+ const octokit = new Octokit({ auth: token });
8
+ const { data: user } = await octokit.request('GET /users/{username}', { username });
9
+ const { data: repos } = await octokit.request('GET /users/{username}/repos', { username, sort: 'full_name' });
10
+ return { user, repos, branch };
11
+ }
12
+ export async function cloneRepo(url, projectDir, branch, includes) {
13
+ createDir(projectDir, { clean: true });
14
+ try {
15
+ const git = simpleGit({ baseDir: projectDir });
16
+ await git.init()
17
+ .addConfig('core.sparseCheckout', 'true', true, 'local')
18
+ .addRemote('origin', url);
19
+ for (const item of includes) {
20
+ appendFileSync(resolve(projectDir, '.git/info/sparse-checkout'), `${item}\n`, 'utf8');
21
+ }
22
+ await git.pull('origin', branch);
23
+ if (includes.some(item => item.includes('docs'))) {
24
+ cpSync(resolve(projectDir, 'docs'), projectDir, { recursive: true });
25
+ rmSync(resolve(projectDir, 'docs'), { recursive: true });
26
+ }
27
+ rmSync(resolve(projectDir, '.git'), { recursive: true });
28
+ }
29
+ catch (e) {
30
+ console.error(e);
31
+ }
32
+ }
33
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAGjD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAoD;IAC1G,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC5C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;IACnF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;IAE7G,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,UAAkB,EAAE,MAAc,EAAE,QAAkB;IACjG,SAAS,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAEtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAA;QAC9C,MAAM,GAAG,CAAC,IAAI,EAAE;aACb,SAAS,CAAC,qBAAqB,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;aACvD,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;QAE3B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,2BAA2B,CAAC,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,CAAC,CAAA;QACvF,CAAC;QAED,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAEhC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACpE,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1D,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,128 @@
1
+ import { basename, dirname, parse, resolve } from 'node:path';
2
+ import { appendFileSync, cpSync, readdirSync, readFileSync, renameSync, statSync, writeFileSync } from 'node:fs';
3
+ import YAML from 'yaml';
4
+ import { createDir, extractFiles, getMdFiles, prettify } from '../utils/functions.js';
5
+ import { DOCS_DIR, INDEX_FILE, VITEPRESS_CONFIG } from '../utils/const.js';
6
+ import { replaceReadmePath, replaceRelativePath } from '../utils/regex.js';
7
+ function addSources(repoUrl, outputPath) {
8
+ const fileName = basename(outputPath);
9
+ const title = fileName === 'readme.md' ? '\n## Sources' : '# Sources';
10
+ const sourcesContent = `${title}\n\nTake a look at the [project sources](${repoUrl}).\n`;
11
+ appendFileSync(outputPath, sourcesContent, 'utf8');
12
+ }
13
+ // export function addContribution(outputPath: string) {
14
+ // const sourcesContent = `
15
+ // If you'd like to improve or fix the code, check out the [contribution guidelines](/contribute).
16
+ // `
17
+ // appendFileSync(outputPath, sourcesContent, 'utf8')
18
+ // }
19
+ export function generateIndex(features, user) {
20
+ const { name, login, bio } = user;
21
+ return {
22
+ layout: 'home',
23
+ hero: {
24
+ name: name ? `${name}'s projects` : `${login}'s projects`,
25
+ tagline: bio ?? 'Robots are everywhere 🤖', // \U0001F916
26
+ },
27
+ features,
28
+ };
29
+ }
30
+ export function generateFeatures(repoName, description, features) {
31
+ const content = {
32
+ title: prettify(repoName, { mode: 'capitalize', replaceDash: true }),
33
+ details: description,
34
+ link: `/${repoName}/readme`,
35
+ };
36
+ return features ? [...features, content] : [content];
37
+ }
38
+ export function generateSidebarProject(repoName, sidebarPages) {
39
+ return {
40
+ text: prettify(repoName, { mode: 'capitalize', replaceDash: true }),
41
+ collapsed: true,
42
+ items: sidebarPages,
43
+ };
44
+ }
45
+ export function generateSidebarPages(repoName, fileName, sidebarPages) {
46
+ const content = {
47
+ text: fileName === 'readme' ? 'Introduction' : prettify(fileName, { mode: 'capitalize', replaceDash: true }),
48
+ link: `/${repoName}/${fileName}`,
49
+ };
50
+ return sidebarPages ? [...sidebarPages, content] : [content];
51
+ }
52
+ export function transformDoc(repositories, user) {
53
+ const features = [];
54
+ const sidebar = [];
55
+ for (const repository of repositories) {
56
+ getMdFiles([repository.docpress.projectPath]).forEach((file) => {
57
+ replaceRelativePath(file, `https://github.com/${repository.owner.login}/${repository.name}/tree/${repository.docpress.branch}`);
58
+ if (basename(file).toLowerCase() === 'readme.md') {
59
+ replaceReadmePath(file, `https://github.com/${repository.owner.login}/${repository.name}/tree/${repository.docpress.branch}`);
60
+ }
61
+ });
62
+ const sidebarItems = readdirSync(repository.docpress.projectPath)
63
+ .filter((file) => {
64
+ return statSync(resolve(repository.docpress.projectPath, file)).isFile()
65
+ && basename(resolve(repository.docpress.projectPath, file)).endsWith('.md');
66
+ })
67
+ .sort((a, b) => a.localeCompare(b))
68
+ .reduce((acc, cur, idx, arr) => {
69
+ const file = resolve(repository.docpress.projectPath, cur);
70
+ const filename = prettify(basename(file), { mode: 'lowercase', removeIdx: true });
71
+ if (filename !== basename(file)) {
72
+ renameSync(file, resolve(dirname(file), filename));
73
+ }
74
+ if (idx === arr.length - 1) {
75
+ let sourceFile;
76
+ if (arr.length > 1) {
77
+ sourceFile = resolve(repository.docpress.projectPath, 'sources.md');
78
+ addSources(repository.html_url, sourceFile);
79
+ return generateSidebarPages(repository.name, parse(sourceFile).name, generateSidebarPages(repository.name, parse(filename).name, acc));
80
+ }
81
+ sourceFile = resolve(repository.docpress.projectPath, 'readme.md');
82
+ addSources(repository.html_url, sourceFile);
83
+ }
84
+ return generateSidebarPages(repository.name, parse(filename).name, acc);
85
+ }, []);
86
+ sidebar.push(generateSidebarProject(repository.name, sidebarItems));
87
+ features.push(...generateFeatures(repository.name, repository.description || ''));
88
+ }
89
+ const index = generateIndex(features.sort((a, b) => a.title.localeCompare(b.title)), user);
90
+ return {
91
+ sidebar: sidebar.sort((a, b) => a.text.localeCompare(b.text)),
92
+ index,
93
+ };
94
+ }
95
+ export function addExtraPages(paths) {
96
+ const files = getMdFiles(paths);
97
+ const nav = [];
98
+ for (const file of files) {
99
+ const src = resolve(process.cwd(), file);
100
+ const dest = resolve(DOCS_DIR, prettify(basename(file), { mode: 'lowercase', removeIdx: true }));
101
+ cpSync(src, dest);
102
+ nav.push({
103
+ text: prettify(parse(src).name, { replaceDash: true, removeIdx: true }),
104
+ link: `/${prettify(parse(src).name, { removeIdx: true })}`,
105
+ });
106
+ }
107
+ return nav;
108
+ }
109
+ export function addContent(path, dir, fn) {
110
+ const files = extractFiles(path);
111
+ for (const file of files) {
112
+ const src = resolve(process.cwd(), file);
113
+ const dest = resolve(dir, basename(file));
114
+ if (fn) {
115
+ fn();
116
+ }
117
+ cpSync(src, dest);
118
+ }
119
+ }
120
+ export function parseVitepressConfig(path) {
121
+ return JSON.parse(readFileSync(resolve(process.cwd(), path)).toString());
122
+ }
123
+ export function generateVitepressFiles(vitepressConfig, index) {
124
+ createDir(dirname(VITEPRESS_CONFIG));
125
+ writeFileSync(VITEPRESS_CONFIG, `import { defineConfig } from 'vitepress'\n\nexport default defineConfig(${JSON.stringify(vitepressConfig, null, 2)})\n`);
126
+ writeFileSync(INDEX_FILE, '---\n'.concat(YAML.stringify(index)));
127
+ }
128
+ //# sourceMappingURL=prepare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/lib/prepare.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { deepMerge } from '../utils/functions.js';
2
+ const defaultVitepressConfig = {
3
+ base: '/',
4
+ lang: 'en-US',
5
+ vite: {
6
+ publicDir: '../public',
7
+ },
8
+ title: 'Home',
9
+ description: 'Docpress',
10
+ srcDir: './docs',
11
+ cleanUrls: true,
12
+ ignoreDeadLinks: 'localhostLinks',
13
+ themeConfig: {
14
+ outline: [2, 3],
15
+ search: {
16
+ provider: 'local',
17
+ options: {
18
+ translations: {
19
+ button: {
20
+ buttonText: 'Search...',
21
+ buttonAriaLabel: 'Search',
22
+ },
23
+ modal: {
24
+ backButtonTitle: 'erase search',
25
+ displayDetails: 'show details',
26
+ noResultsText: 'No results for : ',
27
+ resetButtonTitle: 'cancel search',
28
+ footer: {
29
+ selectText: 'go to',
30
+ navigateText: 'navigate in results',
31
+ closeText: 'close',
32
+ },
33
+ },
34
+ },
35
+ },
36
+ },
37
+ },
38
+ };
39
+ export function getVitepressConfig(sidebar, nav, vitepressConfig) {
40
+ const mergedConfig = deepMerge(defaultVitepressConfig, vitepressConfig ?? {});
41
+ return {
42
+ ...mergedConfig,
43
+ themeConfig: {
44
+ ...mergedConfig.themeConfig,
45
+ sidebar,
46
+ nav,
47
+ },
48
+ };
49
+ }
50
+ //# sourceMappingURL=vitepress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitepress.js","sourceRoot":"","sources":["../../src/lib/vitepress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAGjD,MAAM,sBAAsB,GAAoC;IAC9D,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,OAAO;IACb,IAAI,EAAE;QACJ,SAAS,EAAE,WAAW;KACvB;IACD,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,UAAU;IACvB,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,gBAAgB;IACjC,WAAW,EAAE;QACX,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,MAAM,EAAE;YACN,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE;gBACP,YAAY,EAAE;oBACZ,MAAM,EAAE;wBACN,UAAU,EAAE,WAAW;wBACvB,eAAe,EAAE,QAAQ;qBAC1B;oBACD,KAAK,EAAE;wBACL,eAAe,EAAE,cAAc;wBAC/B,cAAc,EAAE,cAAc;wBAC9B,aAAa,EAAE,mBAAmB;wBAClC,gBAAgB,EAAE,eAAe;wBACjC,MAAM,EAAE;4BACN,UAAU,EAAE,OAAO;4BACnB,YAAY,EAAE,qBAAqB;4BACnC,SAAS,EAAE,OAAO;yBACnB;qBACF;iBACF;aACF;SACF;KACF;CACF,CAAA;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAyB,EAAE,GAAW,EAAE,eAAiD;IAC1H,MAAM,YAAY,GAAG,SAAS,CAAC,sBAAsB,EAAE,eAAe,IAAI,EAAE,CAAC,CAAA;IAE7E,OAAO;QACL,GAAG,YAAY;QACf,WAAW,EAAE;YACX,GAAG,YAAY,CAAC,WAAW;YAC3B,OAAO;YACP,GAAG;SACJ;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+ export const buildOptsSchema = z.object({});
3
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/schemas/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA"}
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ import { prettifyEnum } from '../utils/functions.js';
3
+ const providers = ['github', 'gitlab'];
4
+ export const fetchOptsSchema = z.object({
5
+ branch: z.string()
6
+ .describe('Branch used to collect Git provider data.')
7
+ .optional()
8
+ .default('main'),
9
+ gitProvider: z.enum(providers)
10
+ .describe(`Git provider used to retrieve data. Values should be one of ${prettifyEnum(providers)}.`)
11
+ .optional()
12
+ .default('github'),
13
+ reposFilter: z.string()
14
+ .transform(repos => repos.split(','))
15
+ .or(z.string().array())
16
+ .describe('List of comma separated repositories to retrieve from Git provider. Default to all user\'s public repositories.')
17
+ .optional(),
18
+ token: z.string()
19
+ .describe('Git provider token used to collect data.')
20
+ .optional(),
21
+ username: z.string()
22
+ .describe('Git provider username used to collect data.'),
23
+ });
24
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/schemas/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEpD,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAU,CAAA;AAE/C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACf,QAAQ,CAAC,2CAA2C,CAAC;SACrD,QAAQ,EAAE;SACV,OAAO,CAAC,MAAM,CAAC;IAClB,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;SAC3B,QAAQ,CAAC,+DAA+D,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;SACnG,QAAQ,EAAE;SACV,OAAO,CAAC,QAAQ,CAAC;IACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;SACpB,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACpC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;SACtB,QAAQ,CAAC,iHAAiH,CAAC;SAC3H,QAAQ,EAAE;IACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;SACd,QAAQ,CAAC,0CAA0C,CAAC;SACpD,QAAQ,EAAE;IACb,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;SACjB,QAAQ,CAAC,6CAA6C,CAAC;CAC3D,CAAC,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import { z } from 'zod';
4
+ import { buildOptsSchema } from './build.js';
5
+ import { fetchOptsSchema } from './fetch.js';
6
+ import { prepareOptsSchema } from './prepare.js';
7
+ export const globalOptsSchema = z.object({
8
+ config: z.string()
9
+ .describe('Path to the docpress configuration file.')
10
+ .transform(path => JSON.parse(readFileSync(resolve(process.cwd(), path)).toString()))
11
+ .optional(),
12
+ });
13
+ export const configSchema = fetchOptsSchema
14
+ .merge(prepareOptsSchema)
15
+ .merge(buildOptsSchema);
16
+ //# sourceMappingURL=global.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.js","sourceRoot":"","sources":["../../src/schemas/global.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACf,QAAQ,CAAC,0CAA0C,CAAC;SACpD,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAA4B,CAAC;SAC/G,QAAQ,EAAE;CACd,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe;KACxC,KAAK,CAAC,iBAAiB,CAAC;KACxB,KAAK,CAAC,eAAe,CAAC,CAAA"}