Skip to content

Commit

Permalink
split docs into separate packages
Browse files Browse the repository at this point in the history
  • Loading branch information
EwanLyon committed Feb 1, 2024
1 parent 0b7455c commit 698d43d
Show file tree
Hide file tree
Showing 93 changed files with 1,922 additions and 923 deletions.
43 changes: 43 additions & 0 deletions admin/copyUntypedFiles.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of the docusaurus repository.
*
* Modified by Ewan Lyon for the Speedrun-Docs project
*
*/

const fs = require('fs-extra');
const path = require('path');
const chokidar = require('chokidar');

const srcDir = path.join(process.cwd(), 'src');
const libDir = path.join(process.cwd(), 'lib');

const ignoredPattern = /(?:__tests__|\.tsx?$)/;

async function copy() {
await fs.copy(srcDir, libDir, {
filter(testedPath) {
return !ignoredPattern.test(testedPath);
},
});
}

async function runCopy() {
if (process.argv.includes('--watch')) {
const watcher = chokidar.watch(srcDir, {
ignored: ignoredPattern,
ignoreInitial: true,
persistent: true,
});
['add', 'change', 'unlink', 'addDir', 'unlinkDir'].forEach((event) =>
watcher.on(event, copy),
);
} else {
await copy();
}
}

runCopy();
Empty file.
1 change: 1 addition & 0 deletions packages/speedrun-preset/lib/.tsbuildinfo

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions packages/speedrun-preset/lib/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import type { Preset, LoadContext } from "@docusaurus/types";
import type { Options, ThemeConfig } from "./options";
export default function preset(context: LoadContext, opts?: Options): Preset;
export type { Options, ThemeConfig };
56 changes: 56 additions & 0 deletions packages/speedrun-preset/lib/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const speedrun_theme_1 = require("speedrun-theme");
function makePluginConfig(source, options) {
if (options) {
return [require.resolve(source), options];
}
return require.resolve(source);
}
function preset(context, opts = {}) {
const isProd = process.env.NODE_ENV === "production";
const { debug, docs, blog, pages, sitemap, theme, googleAnalytics, gtag, googleTagManager, localSearch, ...rest } = opts;
const themes = [];
themes.push(makePluginConfig("@docusaurus/theme-classic", theme));
themes.push(makePluginConfig("speedrun-theme"));
if (localSearch !== false) {
themes.push(makePluginConfig("@easyops-cn/docusaurus-search-local", localSearch));
}
const plugins = [];
if (docs !== false) {
// Default docs settings
const docOptions = {
remarkPlugins: [
speedrun_theme_1.videoLinkerRemark
],
...docs,
};
plugins.push(makePluginConfig("@docusaurus/plugin-content-docs", docOptions));
}
if (blog !== false) {
plugins.push(makePluginConfig("@docusaurus/plugin-content-blog", blog));
}
if (pages !== false) {
plugins.push(makePluginConfig("@docusaurus/plugin-content-pages", pages));
}
if (googleAnalytics) {
plugins.push(makePluginConfig("@docusaurus/plugin-google-analytics", googleAnalytics));
}
if (debug || (debug === undefined && !isProd)) {
plugins.push(require.resolve("@docusaurus/plugin-debug"));
}
if (gtag) {
plugins.push(makePluginConfig("@docusaurus/plugin-google-gtag", gtag));
}
if (googleTagManager) {
plugins.push(makePluginConfig("@docusaurus/plugin-google-tag-manager", googleTagManager));
}
if (isProd && sitemap !== false) {
plugins.push(makePluginConfig("@docusaurus/plugin-sitemap", sitemap));
}
if (Object.keys(rest).length > 0) {
throw new Error(`Unrecognized keys ${Object.keys(rest).join(", ")} found in preset-classic configuration. The allowed keys are localSearch, debug, docs, blog, pages, sitemap, theme, googleAnalytics, gtag, and googleTagManager.`);
}
return { themes, plugins };
}
exports.default = preset;
46 changes: 46 additions & 0 deletions packages/speedrun-preset/lib/options.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import type { Options as DocsPluginOptions } from "@docusaurus/plugin-content-docs";
import type { Options as BlogPluginOptions } from "@docusaurus/plugin-content-blog";
import type { Options as PagesPluginOptions } from "@docusaurus/plugin-content-pages";
import type { Options as SitemapPluginOptions } from "@docusaurus/plugin-sitemap";
import type { Options as GAPluginOptions } from "@docusaurus/plugin-google-analytics";
import type { Options as GtagPluginOptions } from "@docusaurus/plugin-google-gtag";
import type { Options as GTMPluginOptions } from "@docusaurus/plugin-google-tag-manager";
import type { PluginOptions as LocalSearchThemeConfig } from "@easyops-cn/docusaurus-search-local";
import type { Options as ClassicThemeOptions } from "@docusaurus/theme-classic";
import type { ThemeConfig as BaseThemeConfig } from "@docusaurus/types";
import type { UserThemeConfig as ClassicThemeConfig } from "@docusaurus/theme-common";
interface LocalSearchConfig extends LocalSearchThemeConfig {
[key: string]: unknown;
}
/**
* Options for `@ewanlyon/speedrun-preset`.
*/
export type Options = {
/**
* Options for `@docusaurus/plugin-debug`. Use `false` to disable, or `true` to enable even in production.
*/
debug?: boolean;
/** Options for `@docusaurus/plugin-content-docs`. Use `false` to disable. */
docs?: false | DocsPluginOptions;
/** Options for `@docusaurus/plugin-content-blog`. Use `false` to disable. */
blog?: false | BlogPluginOptions;
/** Options for `@docusaurus/plugin-content-pages`. Use `false` to disable. */
pages?: false | PagesPluginOptions;
/** Options for `@docusaurus/plugin-sitemap`. Use `false` to disable. */
sitemap?: false | SitemapPluginOptions;
/** Options for `@docusaurus/theme-classic`. */
theme?: ClassicThemeOptions;
/** Options for `@easyops-cn/docusaurus-search-local`. */
localSearch?: false | LocalSearchConfig;
/**
* Options for `@docusaurus/plugin-google-analytics`. Only enabled when the key is present.
*/
googleAnalytics?: GAPluginOptions;
/**
* Options for `@docusaurus/plugin-google-gtag`. Only enabled when the key is present.
*/
gtag?: GtagPluginOptions;
googleTagManager?: GTMPluginOptions;
};
export type ThemeConfig = BaseThemeConfig & ClassicThemeConfig;
export {};
2 changes: 2 additions & 0 deletions packages/speedrun-preset/lib/options.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
36 changes: 36 additions & 0 deletions packages/speedrun-preset/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"name": "speedrun-preset",
"version": "0.1.0",
"description": "Docusaurus Preset for the Speedrun-Docs project",
"main": "lib/index.js",
"repository": "https://github.com/EwanLyon/speedrun-docs",
"author": "Ewan Lyon",
"license": "MIT",
"dependencies": {
"@easyops-cn/docusaurus-search-local": "^0.40.1",
"@docusaurus/core": "3.1.1",
"@docusaurus/plugin-content-blog": "3.1.1",
"@docusaurus/plugin-content-docs": "3.1.1",
"@docusaurus/plugin-content-pages": "3.1.1",
"@docusaurus/plugin-debug": "3.1.1",
"@docusaurus/plugin-google-analytics": "3.1.1",
"@docusaurus/plugin-google-gtag": "3.1.1",
"@docusaurus/plugin-google-tag-manager": "3.1.1",
"@docusaurus/plugin-sitemap": "3.1.1",
"@docusaurus/theme-classic": "3.1.1",
"@docusaurus/theme-common": "3.1.1",
"@docusaurus/theme-search-algolia": "3.1.1",
"@docusaurus/types": "3.1.1"
},
"peerDependencies": {
"react": "^18.0.0",
"react-dom": "^18.0.0"
},
"engines": {
"node": ">=18.0"
},
"scripts": {
"build": "tsc",
"watch": "tsc --watch"
}
}
80 changes: 80 additions & 0 deletions packages/speedrun-preset/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import type { Preset, LoadContext, PluginConfig, PluginOptions } from "@docusaurus/types";
import type { Options, ThemeConfig } from "./options";
import { videoLinkerRemark } from "speedrun-theme";

function makePluginConfig(source: string, options?: PluginOptions): string | [string, PluginOptions] {
if (options) {
return [require.resolve(source), options];
}
return require.resolve(source);
}

export default function preset(context: LoadContext, opts: Options = {}): Preset {
const isProd = process.env.NODE_ENV === "production";
const { debug, docs, blog, pages, sitemap, theme, googleAnalytics, gtag, googleTagManager, localSearch, ...rest } =
opts;

const themes: PluginConfig[] = [];

themes.push(makePluginConfig("@docusaurus/theme-classic", theme));
themes.push(makePluginConfig("speedrun-theme"));

if (localSearch !== false) {
themes.push(makePluginConfig("@easyops-cn/docusaurus-search-local", localSearch));
}

const plugins: PluginConfig[] = [];

if (docs !== false) {

// Default docs settings
const docOptions: Options['docs'] = {
remarkPlugins: [
videoLinkerRemark
],
...docs,
}

plugins.push(makePluginConfig("@docusaurus/plugin-content-docs", docOptions));
}

if (blog !== false) {
plugins.push(makePluginConfig("@docusaurus/plugin-content-blog", blog));
}

if (pages !== false) {
plugins.push(makePluginConfig("@docusaurus/plugin-content-pages", pages));
}

if (googleAnalytics) {
plugins.push(makePluginConfig("@docusaurus/plugin-google-analytics", googleAnalytics));
}

if (debug || (debug === undefined && !isProd)) {
plugins.push(require.resolve("@docusaurus/plugin-debug"));
}

if (gtag) {
plugins.push(makePluginConfig("@docusaurus/plugin-google-gtag", gtag));
}

if (googleTagManager) {
plugins.push(makePluginConfig("@docusaurus/plugin-google-tag-manager", googleTagManager));
}

if (isProd && sitemap !== false) {
plugins.push(makePluginConfig("@docusaurus/plugin-sitemap", sitemap));
}

if (Object.keys(rest).length > 0) {
throw new Error(
`Unrecognized keys ${Object.keys(rest).join(
", "
)} found in preset-classic configuration. The allowed keys are localSearch, debug, docs, blog, pages, sitemap, theme, googleAnalytics, gtag, and googleTagManager.`
);
}

return { themes, plugins };
}

export type { Options, ThemeConfig };
49 changes: 49 additions & 0 deletions packages/speedrun-preset/src/options.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import type { Options as DocsPluginOptions } from "@docusaurus/plugin-content-docs";
import type { Options as BlogPluginOptions } from "@docusaurus/plugin-content-blog";
import type { Options as PagesPluginOptions } from "@docusaurus/plugin-content-pages";
import type { Options as SitemapPluginOptions } from "@docusaurus/plugin-sitemap";
import type { Options as GAPluginOptions } from "@docusaurus/plugin-google-analytics";
import type { Options as GtagPluginOptions } from "@docusaurus/plugin-google-gtag";
import type { Options as GTMPluginOptions } from "@docusaurus/plugin-google-tag-manager";
import type { PluginOptions as LocalSearchThemeConfig } from "@easyops-cn/docusaurus-search-local";
import type { Options as ClassicThemeOptions } from "@docusaurus/theme-classic";
import type { ThemeConfig as BaseThemeConfig } from "@docusaurus/types";
import type { UserThemeConfig as ClassicThemeConfig } from "@docusaurus/theme-common";

// Key string unknown is required for some reason...
interface LocalSearchConfig extends LocalSearchThemeConfig {
[key: string]: unknown;
}

/**
* Options for `@ewanlyon/speedrun-preset`.
*/
export type Options = {
/**
* Options for `@docusaurus/plugin-debug`. Use `false` to disable, or `true` to enable even in production.
*/
debug?: boolean;
/** Options for `@docusaurus/plugin-content-docs`. Use `false` to disable. */
docs?: false | DocsPluginOptions;
/** Options for `@docusaurus/plugin-content-blog`. Use `false` to disable. */
blog?: false | BlogPluginOptions;
/** Options for `@docusaurus/plugin-content-pages`. Use `false` to disable. */
pages?: false | PagesPluginOptions;
/** Options for `@docusaurus/plugin-sitemap`. Use `false` to disable. */
sitemap?: false | SitemapPluginOptions;
/** Options for `@docusaurus/theme-classic`. */
theme?: ClassicThemeOptions;
/** Options for `@easyops-cn/docusaurus-search-local`. */
localSearch?: false | LocalSearchConfig; // Local search essentially behaves like a plugin but is technically used in themes
/**
* Options for `@docusaurus/plugin-google-analytics`. Only enabled when the key is present.
*/
googleAnalytics?: GAPluginOptions;
/**
* Options for `@docusaurus/plugin-google-gtag`. Only enabled when the key is present.
*/
gtag?: GtagPluginOptions;
googleTagManager?: GTMPluginOptions;
};

export type ThemeConfig = BaseThemeConfig & ClassicThemeConfig;
12 changes: 12 additions & 0 deletions packages/speedrun-preset/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"noEmit": false,
"incremental": true,
"tsBuildInfoFile": "./lib/.tsbuildinfo",
"rootDir": "src",
"outDir": "lib"
},
"include": ["src"],
"exclude": ["**/__tests__/**"]
}
3 changes: 3 additions & 0 deletions packages/speedrun-template/babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
};
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file.
13 changes: 13 additions & 0 deletions packages/speedrun-template/docs/guides/any/level-1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
sidebar_position: 1
sidebar_custom_props:
category_image: /speedrun-docs/img/run-man.svg
---

# Level 1

## Overview

## Glitches used

## Steps
9 changes: 9 additions & 0 deletions packages/speedrun-template/docs/guides/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
sidebar_position: 1
---

# Docs

## Speedrun Rules

- Speedrun submissions require video proof
20 changes: 20 additions & 0 deletions packages/speedrun-template/docs/resources/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Splits

:::note Example File

This is just to showcase the Resources tab of a Speedrun-docs site.

:::

## Any%

[Any% Splits Example Link](<./Speedrun Docs Example - Livesplit Split Asset Example.lss>)

| Splits |
| ------- |
| Level 1 |
| Level 2 |
| Level 3 |
| Level 4 |
| Level 5 |
| Level 6 |
Loading

0 comments on commit 698d43d

Please sign in to comment.