Merge pull request #3 from tauri-apps/i18n

I18n
This commit is contained in:
Lorenzo Lewis
2022-01-16 22:57:40 +00:00
committed by GitHub
15 changed files with 178 additions and 1697 deletions

View File

@@ -2,15 +2,13 @@ name: Typedocusaurus Update
on:
workflow_dispatch
# on:
# workflow_dispatch:
# inputs:
# sourcePath:
# required: true
# targetPath:
# required: true
jobs:
update-docs:
runs-on: ubuntu-latest
steps:
- run: echo "Test!"
- run: echo "Beginning job..."
- name: Check out repository code
uses: actions/checkout@v2
- run: echo "Repo has been cloned..."
- run: yarn && yarn build

3
.gitignore vendored
View File

@@ -1,2 +1,3 @@
node_modules
/index.js
docs
api

View File

@@ -1,14 +0,0 @@
name: 'typedocusaurus'
description: 'Generate Typedoc to Docusaurus.'
inputs:
originPath:
required: true
sidebarFile:
required: true
targetPath:
required: true
docusaurusPath:
required: true
runs:
using: 'node12'
main: 'dist/index.js'

1047
dist/index.js vendored

File diff suppressed because it is too large Load Diff

View File

@@ -4,17 +4,12 @@
"main": "index.js",
"license": "MIT",
"scripts": {
"run-source": "node index.js",
"pkg": "ncc build src/index.ts -o dist -e typedoc -e typedoc-plugin-markdown"
"build": "typedoc --plugin typedoc-plugin-markdown --out docs api/src --tsconfig api/tsconfig.json --hideInPageTOC true --hideBreadcrumbs true"
},
"devDependencies": {
"@types/node": "^14.14.35",
"@vercel/ncc": "^0.28.5",
"override-require": "^1.1.1",
"tslib": "^2.1.0",
"typescript": "^4.2.3"
},
"dependencies": {
"@actions/core": "^1.2.6"
"docusaurus-plugin-typedoc": "^0.16.7",
"typedoc": "^0.22.10",
"typedoc-plugin-markdown": "^3.11.11",
"typescript": "^4.5.4"
}
}

View File

@@ -1,132 +0,0 @@
import * as path from 'path';
// @ts-ignore
import { BindOption } from 'typedoc';
// @ts-ignore
import { Component } from 'typedoc/dist/lib/converter/components';
// @ts-ignore
import { RendererComponent } from 'typedoc/dist/lib/output/components';
// @ts-ignore
import { PageEvent } from 'typedoc/dist/lib/output/events';
import { FrontMatter, Sidebar } from './types';
// @ts-ignore
import { reflectionTitle } from 'typedoc-plugin-markdown/dist/resources/helpers/reflection-title';
export interface FrontMatterVars {
[key: string]: string | number | boolean;
}
/**
* Prepends YAML block to a string
* @param contents - the string to prepend
* @param vars - object of required front matter variables
*/
export const prependYAML = (contents: string, vars: FrontMatterVars) => {
return contents
.replace(/^/, toYAML(vars) + '\n\n')
.replace(/[\r\n]{3,}/g, '\n\n');
};
/**
* Returns the page title as rendered in the document h1(# title)
* @param page
*/
export const getPageTitle = (page: PageEvent) => {
return reflectionTitle.call(page, false);
};
/**
* Converts YAML object to a YAML string
* @param vars
*/
const toYAML = (vars: FrontMatterVars) => {
const yaml = `---
${Object.entries(vars)
.map(
([key, value]) =>
`${key}: ${
typeof value === 'string' ? `"${escapeString(value)}"` : value
}`,
)
.join('\n')}
---`;
return yaml;
};
// prettier-ignore
const escapeString=(str: string) => str.replace(/([^\\])'/g, '$1\\\'');
@Component({ name: 'front-matter' })
export class FrontMatterComponent extends RendererComponent {
@BindOption('out')
out!: string;
@BindOption('sidebar')
sidebar!: Sidebar;
@BindOption('globalsTitle')
globalsTitle!: string;
@BindOption('readmeTitle')
readmeTitle!: string;
@BindOption('entryDocument')
entryDocument!: string;
globalsFile = 'modules.md';
initialize() {
super.initialize();
// @ts-ignore
this.listenTo(this.application.renderer, {
[PageEvent.END]: this.onPageEnd,
});
}
onPageEnd(page: PageEvent) {
if (page.contents) {
page.contents = prependYAML(page.contents, this.getYamlItems(page));
}
}
getYamlItems(page: PageEvent): any {
const pageTitle = this.getTitle(page);
const sidebarLabel = this.getSidebarLabel(page);
let items: FrontMatter = {
title: pageTitle,
};
if (sidebarLabel && sidebarLabel !== pageTitle) {
items = { ...items, sidebar_label: sidebarLabel };
}
return {
...items,
custom_edit_url: null,
hide_title: true,
};
}
getSidebarLabel(page: PageEvent) {
if (!this.sidebar) {
return null;
}
if (page.url === this.entryDocument) {
return page.url === page.project.url
? this.sidebar.indexLabel
: this.sidebar.readmeLabel;
}
if (page.url === this.globalsFile) {
return this.sidebar.indexLabel;
}
return this.sidebar.fullNames ? page.model.getFullName() : page.model.name;
}
getId(page: PageEvent) {
return path.basename(page.url, path.extname(page.url));
}
getTitle(page: PageEvent) {
const readmeTitle = this.readmeTitle || page.project.name;
if (page.url === this.entryDocument && page.url !== page.project.url) {
return readmeTitle;
}
return getPageTitle(page);
}
}

View File

@@ -1,54 +0,0 @@
let core = require("@actions/core");
const { rmdir } = require("fs").promises;
const path = require("path");
const overrideRequire = require("override-require");
if (process.env.DEV) {
core = {
getInput: (variable) => process.env[variable],
setFailed: (message) => console.log(message)
};
}
(async () => {
try {
// Where your docs live, should be the folder containing the crates docs
const originPath = core.getInput("originPath"); // e.g. "/path/to/project/src/";
const sidebarFile = core.getInput("sidebarFile");
// Where you'll save your MD files
const targetPath = core.getInput("targetPath"); // e.g. "/path/to/docusaurus/website/docs/api/js/";
const docusaurusPath = core.getInput("docusaurusPath");
const overrideCondition = (request) => request.startsWith("typedoc");
const resolveRequest = (request) =>
require(path.normalize(
process.cwd().replace("/dist/typedocusaurus", "") + `/${originPath}node_modules/${request}`
));
overrideRequire(overrideCondition, resolveRequest);
const { default: generate } = require("./plugin");
await rmdir(targetPath, { recursive: true });
await generate(docusaurusPath, {
entryPoints: originPath + "src",
out: targetPath,
entryDocument: "index.md",
hideInPageTOC: true,
hideBreadcrumbs: true,
watch: false,
tsconfig: originPath + "tsconfig.json",
sidebar: {
sidebarFile,
},
readme: "none",
});
console.log("Tasks completed!");
} catch (error) {
core.setFailed(error.message);
}
})();

View File

@@ -1,120 +0,0 @@
import * as path from 'path';
import {
// @ts-ignore
Application,
// @ts-ignore
MixedDeclarationOption,
// @ts-ignore
ParameterType,
// @ts-ignore
StringDeclarationOption,
// @ts-ignore
TSConfigReader,
// @ts-ignore
TypeDocReader,
// @ts-ignore
} from 'typedoc';
import { PluginOptions, SidebarOptions } from './types';
/**
* Default plugin options
*/
const DEFAULT_PLUGIN_OPTIONS: PluginOptions = {
id: 'default',
docsRoot: 'docs',
out: 'api',
entryDocument: 'index.md',
hideInPageTOC: true,
hideBreadcrumbs: true,
sidebar: {
fullNames: false,
sidebarFile: 'typedoc-sidebar.js',
indexLabel: 'Table of contents',
readmeLabel: 'Readme',
sidebarPath: '',
},
plugin: ['none'],
outputDirectory: '',
siteDir: '',
watch: false,
};
/**
* Merge default with user options
* @param opts
*/
export const getOptions = (
siteDir: string,
opts: Partial<PluginOptions>,
): PluginOptions => {
// base options
let options = {
...DEFAULT_PLUGIN_OPTIONS,
...opts,
};
// sidebar
if (opts.sidebar === null) {
options = { ...options, sidebar: null };
} else {
const sidebar = {
...DEFAULT_PLUGIN_OPTIONS.sidebar,
...opts.sidebar,
} as SidebarOptions;
options = {
...options,
sidebar: {
...sidebar,
sidebarPath: path.resolve(siteDir, sidebar.sidebarFile),
},
};
}
// additional
options = {
...options,
siteDir,
outputDirectory: path.resolve(siteDir, options.docsRoot, options.out),
};
return options;
};
/**
* Add docusaurus options to converter
* @param app
*/
export const addOptions = (app: Application) => {
// configure deault typedoc options
app.options.addReader(new TypeDocReader());
app.options.addReader(new TSConfigReader());
// expose plugin options to typedoc so we can access if required
app.options.addDeclaration({
name: 'id',
} as StringDeclarationOption);
app.options.addDeclaration({
name: 'docsRoot',
} as StringDeclarationOption);
app.options.addDeclaration({
name: 'siteDir',
} as MixedDeclarationOption);
app.options.addDeclaration({
name: 'outputDirectory',
} as StringDeclarationOption);
app.options.addDeclaration({
name: 'globalsTitle',
} as StringDeclarationOption);
app.options.addDeclaration({
name: 'readmeTitle',
} as StringDeclarationOption);
app.options.addDeclaration({
name: 'sidebar',
type: ParameterType.Mixed,
} as MixedDeclarationOption);
};

View File

@@ -1,56 +0,0 @@
// @ts-ignore
import { Application } from 'typedoc';
// @ts-ignore
import { load } from 'typedoc-plugin-markdown';
import { FrontMatterComponent } from './front-matter';
import { addOptions, getOptions } from './options';
import { render } from './render';
import { SidebarComponent } from './sidebar';
import { PluginOptions } from './types';
export default async function generate(
siteDir: string,
opts: Partial<PluginOptions>,
) {
// we need to generate an empty sidebar up-front so it can be resolved from sidebars.js
const options = getOptions(siteDir, opts);
// if (options.sidebar) {
// writeSidebar(options.sidebar, 'module.exports=[];');
// }
// initialize and build app
const app = new Application();
// load the markdown plugin
load(app);
// customise render
app.renderer.render = render;
// add plugin options
addOptions(app);
// bootstrap typedoc app
app.bootstrap(options);
// add frontmatter component to typedoc renderer
// @ts-ignore
app.renderer.addComponent('fm', new FrontMatterComponent(app.renderer));
// add sidebar component to typedoc renderer
// @ts-ignore
app.renderer.addComponent('sidebar', new SidebarComponent(app.renderer));
// return the generated reflections
const project = app.convert();
// if project is undefined typedoc has a problem - error logging will be supplied by typedoc.
if (!project) {
return;
}
// generate or watch app
return app.generateDocs(project, options.outputDirectory);
}

View File

@@ -1,35 +0,0 @@
// @ts-ignore
import { ProjectReflection, UrlMapping } from 'typedoc';
// @ts-ignore
import { RendererEvent } from 'typedoc/dist/lib/output/events';
export async function render(
project: ProjectReflection,
outputDirectory: string,
) {
if (!this.prepareTheme() || !this.prepareOutputDirectory(outputDirectory)) {
return;
}
const output = new RendererEvent(
RendererEvent.BEGIN,
outputDirectory,
project,
);
output.settings = this.application.options.getRawValues();
output.urls = this.theme!.getUrls(project);
this.trigger(output);
if (!output.isDefaultPrevented) {
output.urls?.forEach((mapping: UrlMapping, i) => {
this.renderDocument(output.createPageEvent(mapping));
console.log(
`\rGenerated ${i + 1} of ${output.urls?.length} TypeDoc docs`,
);
});
console.log(`\n`);
this.trigger(RendererEvent.END, output);
}
}

View File

@@ -1,111 +0,0 @@
import * as fs from 'fs';
import * as path from 'path';
// @ts-ignore
import { BindOption } from 'typedoc';
// @ts-ignore
import { Component } from 'typedoc/dist/lib/converter/components';
// @ts-ignore
import { RendererComponent } from 'typedoc/dist/lib/output/components';
// @ts-ignore
import { RendererEvent } from 'typedoc/dist/lib/output/events';
import { SidebarItem, SidebarOptions } from './types';
@Component({ name: 'sidebar' })
export class SidebarComponent extends RendererComponent {
@BindOption('sidebar')
sidebar!: SidebarOptions;
@BindOption('siteDir')
siteDir!: string;
@BindOption('out')
out!: string;
initialize() {
// @ts-ignore
this.listenTo(this.application.renderer, {
[RendererEvent.BEGIN]: this.onRendererBegin,
});
}
async onRendererBegin(renderer: RendererEvent) {
// @ts-ignore
const navigation = this.application.renderer.theme?.getNavigation(
renderer.project,
);
const out = this.out.match(/(?:.*)en\/(.*)/)![1];
// map the navigation object to a Docuaurus sidebar format
const sidebarItems = navigation?.children
? navigation.children.map((navigationItem) => {
if (navigationItem.isLabel) {
const sidebarCategoryItems = navigationItem.children
? navigationItem.children.map((navItem) => {
const url = this.getUrlKey(out, navItem.url);
if (navItem.children && navItem.children.length > 0) {
const sidebarCategoryChildren = navItem.children.map(
(childGroup) =>
this.getSidebarCategory(
childGroup.title,
childGroup.children
? childGroup.children.map((childItem) =>
this.getUrlKey(out, childItem.url),
)
: [],
),
);
return this.getSidebarCategory(navItem.title, [
url,
...sidebarCategoryChildren,
]);
}
return url;
})
: [];
return this.getSidebarCategory(
navigationItem.title,
sidebarCategoryItems,
);
}
return this.getUrlKey(out, navigationItem.url);
})
: [];
const sidebarPath = this.sidebar.sidebarPath;
fs.writeFileSync(sidebarPath, JSON.stringify(sidebarItems, null, 2));
// @ts-ignore
this.application.logger.success(
`TypeDoc sidebar written to ${sidebarPath}`,
);
}
/**
* returns a sidebar category node
*/
getSidebarCategory(title: string, items: SidebarItem[]) {
return {
items,
type: 'category',
label: title,
};
}
/**
* returns the url key for relevant doc
*/
getUrlKey(out: string, url: string) {
const urlKey = url.replace('.md', '');
return out ? out + '/' + urlKey : urlKey;
}
}
/**
* Write content to sidebar file
*/
export const writeSidebar = (sidebar: SidebarOptions, content: string) => {
if (!fs.existsSync(path.dirname(sidebar.sidebarPath))) {
fs.mkdirSync(path.dirname(sidebar.sidebarPath));
}
fs.writeFileSync(sidebar.sidebarPath, content);
};

View File

@@ -1,46 +0,0 @@
export interface PluginOptions {
id: string;
docsRoot: string;
out: string;
sidebar: SidebarOptions | null;
readmeTitle?: string;
globalsTitle?: string;
plugin: string[];
readme?: string;
disableOutputCheck?: boolean;
entryPoints?: string[];
entryDocument: string;
hideInPageTOC: boolean;
hideBreadcrumbs: boolean;
siteDir: string;
outputDirectory: string;
watch: boolean;
}
export interface FrontMatter {
id?: string;
title: string;
slug?: string;
sidebar_label?: string;
hide_title?: boolean;
}
export interface SidebarOptions {
fullNames?: boolean;
sidebarFile: string;
sidebarPath: string;
indexLabel?: string;
readmeLabel?: string;
}
export interface Sidebar {
[sidebarId: string]: SidebarItem[];
}
export interface SidebarCategory {
type: string;
label: string;
items: SidebarItem[];
}
export type SidebarItem = SidebarCategory | string;

View File

@@ -1,23 +0,0 @@
import * as fs from 'fs';
import * as path from 'path';
// @ts-ignore
import { Application } from 'typedoc';
import { PluginOptions } from './types';
/**
* Calls TypeDoc's `convertAndWatch` and force trigger sidebars refresh.
*/
export const convertAndWatch = (app: Application, options: PluginOptions) => {
const sidebarsJsPath = path.resolve(options.siteDir, 'sidebars.js');
app.convertAndWatch(async (project) => {
if (options.sidebar) {
// remove typedoc sidebar from require cache
delete require.cache[options.sidebar.sidebarPath];
// force trigger a sidebars.js refresh
const sidebarJsContent = fs.readFileSync(sidebarsJsPath);
fs.writeFileSync(sidebarsJsPath, sidebarJsContent);
}
await app.generateDocs(project, options.outputDirectory);
});
};

View File

@@ -1,16 +0,0 @@
{
"compilerOptions": {
"declaration": false,
"experimentalDecorators": true,
"lib": ["es2018", "dom"],
"module": "commonjs",
"moduleResolution": "node",
"noImplicitAny": false,
"noUnusedLocals": true,
"removeComments": false,
"sourceMap": false,
"strictNullChecks": true,
"target": "es2018",
"outDir": "dist"
}
}

189
yarn.lock
View File

@@ -2,32 +2,173 @@
# yarn lockfile v1
"@actions/core@^1.2.6":
version "1.2.6"
resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.2.6.tgz#a78d49f41a4def18e88ce47c2cac615d5694bf09"
integrity sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA==
balanced-match@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
"@types/node@^14.14.35":
version "14.14.35"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.35.tgz#42c953a4e2b18ab931f72477e7012172f4ffa313"
integrity sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
"@vercel/ncc@^0.28.5":
version "0.28.5"
resolved "https://registry.yarnpkg.com/@vercel/ncc/-/ncc-0.28.5.tgz#6d735379f81b70b708a9c3d2196507b2a841824f"
integrity sha512-ZSwD4EDCon2EsnPZ2/Qcigx4N2DiuBLV/rDnF04giEPFuDeBeUDdnSTyYYfX8KNic/prrJuS1vUEmAOHmj+fRg==
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
override-require@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/override-require/-/override-require-1.1.1.tgz#6ae22fadeb1f850ffb0cf4c20ff7b87e5eb650df"
integrity sha1-auIvresfhQ/7DPTCD/e4fl62UN8=
docusaurus-plugin-typedoc@^0.16.7:
version "0.16.7"
resolved "https://registry.yarnpkg.com/docusaurus-plugin-typedoc/-/docusaurus-plugin-typedoc-0.16.7.tgz#b23f22b8ec93d25d8d3e204684ab05e4636a6873"
integrity sha512-4V/Nw+cJDbcmA6getpweAKuu1tTyky3/gHliL75DLJntk2pR5wM/x4jNFaYiHOPsnP3d5CkBfK+mSSo4M9jtvA==
tslib@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
typescript@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.3.tgz#39062d8019912d43726298f09493d598048c1ce3"
integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==
glob@^7.2.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.4"
once "^1.3.0"
path-is-absolute "^1.0.0"
handlebars@^4.7.7:
version "4.7.7"
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==
dependencies:
minimist "^1.2.5"
neo-async "^2.6.0"
source-map "^0.6.1"
wordwrap "^1.0.0"
optionalDependencies:
uglify-js "^3.1.4"
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
dependencies:
once "^1.3.0"
wrappy "1"
inherits@2:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
jsonc-parser@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22"
integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==
lunr@^2.3.9:
version "2.3.9"
resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1"
integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==
marked@^3.0.8:
version "3.0.8"
resolved "https://registry.yarnpkg.com/marked/-/marked-3.0.8.tgz#2785f0dc79cbdc6034be4bb4f0f0a396bd3f8aeb"
integrity sha512-0gVrAjo5m0VZSJb4rpL59K1unJAMb/hm8HRXqasD8VeC8m91ytDPMritgFSlKonfdt+rRYYpP/JfLxgIX8yoSw==
minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
dependencies:
brace-expansion "^1.1.7"
minimist@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
neo-async@^2.6.0:
version "2.6.2"
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
dependencies:
wrappy "1"
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
shiki@^0.9.12:
version "0.9.15"
resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.9.15.tgz#2481b46155364f236651319d2c18e329ead6fa44"
integrity sha512-/Y0z9IzhJ8nD9nbceORCqu6NgT9X6I8Fk8c3SICHI5NbZRLdZYFaB233gwct9sU0vvSypyaL/qaKvzyQGJBZSw==
dependencies:
jsonc-parser "^3.0.0"
vscode-oniguruma "^1.6.1"
vscode-textmate "5.2.0"
source-map@^0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
typedoc-plugin-markdown@^3.11.11:
version "3.11.11"
resolved "https://registry.yarnpkg.com/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.11.11.tgz#5a7cdac2ebf4a11a622c2947484893decbbe54df"
integrity sha512-LyephgG2yHiSqJppuDVKy3dPLSbzP+ke/VBxGvH4I/+31NXzuEhLFhxx/X4UMqzh2XbUB44ttABtGd11biKr4Q==
dependencies:
handlebars "^4.7.7"
typedoc@^0.22.10:
version "0.22.10"
resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.22.10.tgz#221e1a2b17bcb71817ef027dc4c4969d572e7620"
integrity sha512-hQYZ4WtoMZ61wDC6w10kxA42+jclWngdmztNZsDvIz7BMJg7F2xnT+uYsUa7OluyKossdFj9E9Ye4QOZKTy8SA==
dependencies:
glob "^7.2.0"
lunr "^2.3.9"
marked "^3.0.8"
minimatch "^3.0.4"
shiki "^0.9.12"
typescript@^4.5.4:
version "4.5.4"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8"
integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==
uglify-js@^3.1.4:
version "3.14.5"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.5.tgz#cdabb7d4954231d80cb4a927654c4655e51f4859"
integrity sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==
vscode-oniguruma@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.6.1.tgz#2bf4dfcfe3dd2e56eb549a3068c8ee39e6c30ce5"
integrity sha512-vc4WhSIaVpgJ0jJIejjYxPvURJavX6QG41vu0mGhqywMkQqulezEqEQ3cO3gc8GvcOpX6ycmKGqRoROEMBNXTQ==
vscode-textmate@5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.2.0.tgz#01f01760a391e8222fe4f33fbccbd1ad71aed74e"
integrity sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==
wordwrap@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=