From a1da03ba9029c5fb0629f929a9b0e52362b480ba Mon Sep 17 00:00:00 2001 From: Don McCurdy Date: Mon, 8 May 2023 13:11:22 -0400 Subject: [PATCH] Clean up JSDoc for non-TypeDoc consumption. Clean up Documentation: Add Transforms category. RM TypeDoc, add docs package. Set up all the things. Remove docs/ Clean up local development. Testing deployment Fix page titles. Fix CLI help output. Update vercelignore Remove untracked remove .env Test only Node.js v18 work around syntax highlighting incompatibility Fix source links Fix OG tag domains, add rel=canonical. Improve nav layout. Clean up main.css Use dynamic imports for pages. Fix syntax highlighting. Reorganize CLI pages Reorganize sidebar intro, rewrite functions page. Fix CLI help output, improve CLI page. Clean up --- .github/workflows/ci.yml | 2 +- .vercelignore | 7 +- docs/_CREDITS.md | 5 - docs/_UNRATIFIED_EXTENSIONS.md | 3 - docs/_VENDOR_EXTENSIONS.md | 3 - docs/pages.ts | 102 - docs/theme/assets/css/main.css | 1892 ----------------- docs/theme/layouts/default.hbs | 389 ---- docs/theme/partials/analytics.hbs | 11 - docs/theme/partials/breadcrumb.hbs | 16 - docs/theme/partials/comment.hbs | 22 - docs/theme/partials/footer.hbs | 10 - docs/theme/partials/header.hbs | 57 - docs/theme/partials/hierarchy.hbs | 17 - docs/theme/partials/index.hbs | 0 docs/theme/partials/member.declaration.hbs | 36 - docs/theme/partials/member.getterSetter.hbs | 37 - docs/theme/partials/member.hbs | 27 - docs/theme/partials/member.reference.hbs | 11 - docs/theme/partials/member.signature.body.hbs | 10 - .../theme/partials/member.signature.title.hbs | 32 - docs/theme/partials/member.signatures.hbs | 13 - docs/theme/partials/member.sources.hbs | 23 - docs/theme/partials/members.group.hbs | 21 - docs/theme/partials/members.hbs | 20 - docs/theme/partials/navigation.hbs | 26 - docs/theme/partials/parameter.hbs | 83 - docs/theme/partials/toc.hbs | 10 - docs/theme/partials/toc.root.hbs | 18 - docs/theme/partials/type.hbs | 215 -- docs/theme/partials/typeAndParent.hbs | 42 - docs/theme/partials/typeParameters.hbs | 14 - docs/theme/templates/index.hbs | 16 - docs/tsconfig.json | 5 - package.json | 10 +- packages/cli/README.md | 6 +- packages/core/README.md | 69 +- packages/core/src/document.ts | 2 - packages/core/src/extension.ts | 2 - packages/core/src/io/deno-io.ts | 2 - packages/core/src/io/node-io.ts | 6 +- packages/core/src/io/platform-io.ts | 2 - packages/core/src/io/reader-context.ts | 2 +- packages/core/src/io/web-io.ts | 2 - packages/core/src/io/writer-context.ts | 2 +- packages/core/src/io/writer.ts | 5 +- packages/core/src/json-document.ts | 2 - packages/core/src/properties/accessor.ts | 22 +- .../core/src/properties/animation-channel.ts | 4 +- .../core/src/properties/animation-sampler.ts | 4 +- packages/core/src/properties/animation.ts | 4 +- packages/core/src/properties/buffer.ts | 2 - packages/core/src/properties/camera.ts | 2 - .../src/properties/extensible-property.ts | 2 - .../core/src/properties/extension-property.ts | 4 +- packages/core/src/properties/material.ts | 49 +- packages/core/src/properties/mesh.ts | 2 - packages/core/src/properties/node.ts | 2 - .../core/src/properties/primitive-target.ts | 4 +- packages/core/src/properties/primitive.ts | 2 - packages/core/src/properties/property.ts | 14 +- packages/core/src/properties/root.ts | 2 - packages/core/src/properties/scene.ts | 2 - packages/core/src/properties/skin.ts | 2 - packages/core/src/properties/texture-info.ts | 2 - packages/core/src/properties/texture.ts | 4 +- packages/core/src/utils/buffer-utils.ts | 2 - packages/core/src/utils/color-utils.ts | 2 - packages/core/src/utils/file-utils.ts | 2 - packages/core/src/utils/http-utils.ts | 2 - packages/core/src/utils/image-utils.ts | 2 - packages/core/src/utils/logger.ts | 2 - packages/docs/.eslintignore | 13 + packages/docs/.eslintrc.cjs | 30 + packages/docs/.gitignore | 10 + packages/docs/.npmrc | 2 + packages/docs/.prettierignore | 13 + packages/docs/.prettierrc | 9 + packages/docs/README.md | 38 + packages/docs/package.json | 31 + packages/docs/src/app.d.ts | 12 + packages/docs/src/app.html | 18 + .../docs/src/lib/pages/cli-configuration.md | 66 + packages/docs/src/lib/pages/cli.md | 121 ++ .../docs/src/lib/pages/concepts.md | 19 +- .../docs/src/lib/pages/contributing.md | 7 +- .../docs/src/lib/pages/credits.md | 5 + .../docs/src/lib/pages/extensions.md | 78 +- packages/docs/src/lib/pages/functions.md | 57 + packages/docs/src/lib/server/model/index.ts | 46 + packages/docs/src/routes/+layout.server.ts | 160 ++ packages/docs/src/routes/+layout.svelte | 142 ++ .../docs/src/routes/+page.md | 17 +- packages/docs/src/routes/+page.server.ts | 8 + .../docs/src/routes/[slug]/+page.server.ts | 18 + packages/docs/src/routes/[slug]/+page.svelte | 7 + .../classes/[slug]/+page.server.ts | 18 + .../[moduleSlug]/classes/[slug]/+page.svelte | 7 + .../[moduleSlug]/enums/[slug]/+page.server.ts | 18 + .../[moduleSlug]/enums/[slug]/+page.svelte | 7 + .../functions/[slug]/+page.server.ts | 18 + .../functions/[slug]/+page.svelte | 7 + .../interfaces/[slug]/+page.server.ts | 18 + .../interfaces/[slug]/+page.svelte | 7 + packages/docs/static/main.css | 1390 ++++++++++++ .../docs/static/media/cli-help.txt | 0 .../docs/static}/media/concepts.png | Bin .../khr-material-pbr-specular-glossiness.png | Bin .../extensions/khr-materials-clearcoat.png | Bin .../media/extensions/khr-materials-sheen.png | Bin .../media/extensions/khr-materials-unlit.png | Bin .../extensions/khr-materials-variants.jpg | Bin .../media/extensions/khr-materials-volume.png | Bin {docs => packages/docs/static}/media/hero.jpg | Bin .../docs/static}/media/kicker.jpg | Bin packages/docs/svelte.config.js | 25 + packages/docs/tsconfig.json | 17 + packages/docs/vercel.json | 1 + packages/docs/vite.config.ts | 7 + packages/extensions/README.md | 67 - .../ext-mesh-gpu-instancing/instanced-mesh.ts | 2 - .../mesh-gpu-instancing.ts | 2 - .../meshopt-compression.ts | 2 - .../src/ext-texture-avif/texture-avif.ts | 2 - .../src/ext-texture-webp/texture-webp.ts | 2 - .../draco-mesh-compression.ts | 2 - .../src/khr-lights-punctual/light.ts | 2 - .../khr-lights-punctual/lights-punctual.ts | 2 - .../khr-materials-anisotropy/anisotropy.ts | 4 +- .../materials-anisotropy.ts | 2 - .../src/khr-materials-clearcoat/clearcoat.ts | 29 +- .../materials-clearcoat.ts | 2 - .../emissive-strength.ts | 2 - .../materials-emissive-strength.ts | 2 - .../extensions/src/khr-materials-ior/ior.ts | 2 - .../src/khr-materials-ior/materials-ior.ts | 2 - .../khr-materials-iridescence/iridescence.ts | 13 +- .../materials-iridescence.ts | 2 - .../materials-pbr-specular-glossiness.ts | 2 - .../pbr-specular-glossiness.ts | 8 +- .../khr-materials-sheen/materials-sheen.ts | 2 - .../src/khr-materials-sheen/sheen.ts | 8 +- .../materials-specular.ts | 2 - .../src/khr-materials-specular/specular.ts | 18 +- .../materials-transmission.ts | 2 - .../transmission.ts | 8 +- .../khr-materials-unlit/materials-unlit.ts | 2 - .../src/khr-materials-unlit/unlit.ts | 2 - .../khr-materials-variants/mapping-list.ts | 2 - .../src/khr-materials-variants/mapping.ts | 2 - .../materials-variants.ts | 4 +- .../src/khr-materials-variants/variant.ts | 2 - .../khr-materials-volume/materials-volume.ts | 2 - .../src/khr-materials-volume/volume.ts | 2 - .../mesh-quantization.ts | 2 - .../src/khr-texture-basisu/texture-basisu.ts | 4 +- .../texture-transform.ts | 2 - .../src/khr-texture-transform/transform.ts | 2 - .../extensions/src/khr-xmp-json-ld/packet.ts | 2 - .../extensions/src/khr-xmp-json-ld/xmp.ts | 2 - packages/functions/README.md | 73 +- packages/functions/src/center.ts | 2 + packages/functions/src/dedup.ts | 2 + packages/functions/src/dequantize.ts | 2 + packages/functions/src/draco.ts | 2 + packages/functions/src/flatten.ts | 2 + packages/functions/src/instance.ts | 2 + packages/functions/src/join.ts | 2 + .../functions/src/list-texture-channels.ts | 1 + packages/functions/src/meshopt.ts | 2 + packages/functions/src/metal-rough.ts | 2 + packages/functions/src/normals.ts | 2 + packages/functions/src/partition.ts | 2 + packages/functions/src/prune.ts | 2 + packages/functions/src/quantize.ts | 2 + packages/functions/src/reorder.ts | 7 +- packages/functions/src/resample.ts | 2 + packages/functions/src/sequence.ts | 27 +- packages/functions/src/simplify.ts | 2 + packages/functions/src/sparse.ts | 1 + packages/functions/src/tangents.ts | 2 + packages/functions/src/texture-compress.ts | 2 + packages/functions/src/texture-resize.ts | 6 +- packages/functions/src/unlit.ts | 3 + packages/functions/src/unpartition.ts | 2 + packages/functions/src/unweld.ts | 3 +- packages/functions/src/vertex-color-space.ts | 2 + packages/functions/src/weld.ts | 2 + renovate.json | 9 +- vercel.json | 22 - yarn.lock | 716 ++++++- 191 files changed, 3239 insertions(+), 3809 deletions(-) delete mode 100644 docs/_CREDITS.md delete mode 100644 docs/_UNRATIFIED_EXTENSIONS.md delete mode 100644 docs/_VENDOR_EXTENSIONS.md delete mode 100644 docs/pages.ts delete mode 100644 docs/theme/assets/css/main.css delete mode 100644 docs/theme/layouts/default.hbs delete mode 100644 docs/theme/partials/analytics.hbs delete mode 100644 docs/theme/partials/breadcrumb.hbs delete mode 100644 docs/theme/partials/comment.hbs delete mode 100644 docs/theme/partials/footer.hbs delete mode 100644 docs/theme/partials/header.hbs delete mode 100644 docs/theme/partials/hierarchy.hbs delete mode 100644 docs/theme/partials/index.hbs delete mode 100644 docs/theme/partials/member.declaration.hbs delete mode 100644 docs/theme/partials/member.getterSetter.hbs delete mode 100644 docs/theme/partials/member.hbs delete mode 100644 docs/theme/partials/member.reference.hbs delete mode 100644 docs/theme/partials/member.signature.body.hbs delete mode 100644 docs/theme/partials/member.signature.title.hbs delete mode 100644 docs/theme/partials/member.signatures.hbs delete mode 100644 docs/theme/partials/member.sources.hbs delete mode 100644 docs/theme/partials/members.group.hbs delete mode 100644 docs/theme/partials/members.hbs delete mode 100644 docs/theme/partials/navigation.hbs delete mode 100644 docs/theme/partials/parameter.hbs delete mode 100644 docs/theme/partials/toc.hbs delete mode 100644 docs/theme/partials/toc.root.hbs delete mode 100644 docs/theme/partials/type.hbs delete mode 100644 docs/theme/partials/typeAndParent.hbs delete mode 100644 docs/theme/partials/typeParameters.hbs delete mode 100644 docs/theme/templates/index.hbs delete mode 100644 docs/tsconfig.json create mode 100644 packages/docs/.eslintignore create mode 100644 packages/docs/.eslintrc.cjs create mode 100644 packages/docs/.gitignore create mode 100644 packages/docs/.npmrc create mode 100644 packages/docs/.prettierignore create mode 100644 packages/docs/.prettierrc create mode 100644 packages/docs/README.md create mode 100644 packages/docs/package.json create mode 100644 packages/docs/src/app.d.ts create mode 100644 packages/docs/src/app.html create mode 100644 packages/docs/src/lib/pages/cli-configuration.md create mode 100644 packages/docs/src/lib/pages/cli.md rename docs/CONCEPTS.md => packages/docs/src/lib/pages/concepts.md (66%) rename docs/CONTRIBUTING.md => packages/docs/src/lib/pages/contributing.md (93%) rename docs/CREDITS.md => packages/docs/src/lib/pages/credits.md (71%) rename docs/EXTENSIONS.md => packages/docs/src/lib/pages/extensions.md (61%) create mode 100644 packages/docs/src/lib/pages/functions.md create mode 100644 packages/docs/src/lib/server/model/index.ts create mode 100644 packages/docs/src/routes/+layout.server.ts create mode 100644 packages/docs/src/routes/+layout.svelte rename docs/INDEX.md => packages/docs/src/routes/+page.md (76%) create mode 100644 packages/docs/src/routes/+page.server.ts create mode 100644 packages/docs/src/routes/[slug]/+page.server.ts create mode 100644 packages/docs/src/routes/[slug]/+page.svelte create mode 100644 packages/docs/src/routes/modules/[moduleSlug]/classes/[slug]/+page.server.ts create mode 100644 packages/docs/src/routes/modules/[moduleSlug]/classes/[slug]/+page.svelte create mode 100644 packages/docs/src/routes/modules/[moduleSlug]/enums/[slug]/+page.server.ts create mode 100644 packages/docs/src/routes/modules/[moduleSlug]/enums/[slug]/+page.svelte create mode 100644 packages/docs/src/routes/modules/[moduleSlug]/functions/[slug]/+page.server.ts create mode 100644 packages/docs/src/routes/modules/[moduleSlug]/functions/[slug]/+page.svelte create mode 100644 packages/docs/src/routes/modules/[moduleSlug]/interfaces/[slug]/+page.server.ts create mode 100644 packages/docs/src/routes/modules/[moduleSlug]/interfaces/[slug]/+page.svelte create mode 100644 packages/docs/static/main.css rename docs/CLI_HELP.md => packages/docs/static/media/cli-help.txt (100%) rename {docs => packages/docs/static}/media/concepts.png (100%) rename {docs => packages/docs/static}/media/extensions/khr-material-pbr-specular-glossiness.png (100%) rename {docs => packages/docs/static}/media/extensions/khr-materials-clearcoat.png (100%) rename {docs => packages/docs/static}/media/extensions/khr-materials-sheen.png (100%) rename {docs => packages/docs/static}/media/extensions/khr-materials-unlit.png (100%) rename {docs => packages/docs/static}/media/extensions/khr-materials-variants.jpg (100%) rename {docs => packages/docs/static}/media/extensions/khr-materials-volume.png (100%) rename {docs => packages/docs/static}/media/hero.jpg (100%) rename {docs => packages/docs/static}/media/kicker.jpg (100%) create mode 100644 packages/docs/svelte.config.js create mode 100644 packages/docs/tsconfig.json create mode 100644 packages/docs/vercel.json create mode 100644 packages/docs/vite.config.ts delete mode 100644 vercel.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b2c4363ed..2095ab447 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [14.x, 18.x] + node-version: [18.x] env: CI: true steps: diff --git a/.vercelignore b/.vercelignore index 575ac62a9..651c781ed 100644 --- a/.vercelignore +++ b/.vercelignore @@ -1,3 +1,8 @@ -packages +packages/core +packages/extensions +packages/functions +packages/cli +packages/test-utils node_modules test +.svelte-kit diff --git a/docs/_CREDITS.md b/docs/_CREDITS.md deleted file mode 100644 index 824b1822d..000000000 --- a/docs/_CREDITS.md +++ /dev/null @@ -1,5 +0,0 @@ - - -The glTF-Transform project is developed and maintained by [Don McCurdy](https://github.com/donmccurdy). Thanks to the individuals and companies who have supported the project through [GitHub Sponsors](https://github.com/sponsors/donmccurdy/) or by [contributing to the codebase](https://github.com/donmccurdy/glTF-Transform/graphs/contributors). Additional thanks to the following supporters: - -- [The Khronos Group](https://www.khronos.org/), for funding support of XMP metadata diff --git a/docs/_UNRATIFIED_EXTENSIONS.md b/docs/_UNRATIFIED_EXTENSIONS.md deleted file mode 100644 index 9f90e7a3e..000000000 --- a/docs/_UNRATIFIED_EXTENSIONS.md +++ /dev/null @@ -1,3 +0,0 @@ -> _**EXPERIMENTAL:** This extension is not yet ratified by Khronos, and its API within -> glTF-Transform is subject to breaking changes without semver-compliant -> major version updates._ diff --git a/docs/_VENDOR_EXTENSIONS.md b/docs/_VENDOR_EXTENSIONS.md deleted file mode 100644 index 42d6189ed..000000000 --- a/docs/_VENDOR_EXTENSIONS.md +++ /dev/null @@ -1,3 +0,0 @@ -> _**NOTICE:** Multi-vendor extensions (`EXT_*`) should be considered last-mile optimizations for an -> application known to support their use. Files using these extensions may not be widely -> portable in other software, and are not officially endorsed by the Khronos Group._ diff --git a/docs/pages.ts b/docs/pages.ts deleted file mode 100644 index 92ee14017..000000000 --- a/docs/pages.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** @module pages */ - -/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-namespace */ - -// Generates standalone documentation pages not related to any particular class. -// May want to consider using `typedoc-plugin-pages` for this in the future, but -// it appears to be unmaintained now. - -/** [[include:CONCEPTS.md]] */ -export namespace Concepts {} - -/** [[include:EXTENSIONS.md]] */ -export namespace Extensions {} - -/** [[include:CONTRIBUTING.md]] */ -export namespace Contributing {} - -/** [[include:CREDITS.md]] */ -export namespace Credits {} - -/** - * # CLI - * - * For easier access to its library, glTF-Transform offers a command-line interface (CLI). The - * CLI supports many of the features of the `@gltf-transform/functions` package, and some general - * tools for inspecting and packing/unpacking glTF or GLB files. - * - * Installation: - * - * ```bash - * npm install --global @gltf-transform/cli - * ``` - * - * Help output: - * - * ```text - * [[include:CLI_HELP.md]] - * ``` - * - * ## Configuration - * - * > _**EXPERIMENTAL:** Support for command-line configuration is experimental, and may have - * > breaking changes in non-major releases. Please provide feedback on GitHub if this feature - * > could be helpful to you._ - * - * Configuration installs custom commands or extensions in the CLI. Extensions will be - * available to any commands executed by the CLI, allowing operations on glTF files that would - * otherwise be unsupported — unofficial compression, texture formats, materials, and other features. - * Extensions must be implemented using the {@link Extension} API. - * - * Usage: - * - * ```text - * gltf-transform --help --config path/to/gltf-transform.config.mjs - * ``` - * - * Example configuration: - * - * ```javascript - * // gltf-transform.config.mjs - * import { Extension } from '@gltf-transform/core'; - * import { ALL_EXTENSIONS } from '@gltf-transform/extensions'; - * - * // NOTE: The minimal implementation below does not read or write any data - * // associated with the extension. See the Extension documentation and - * // official implementations in the /examples package for full usage. - * class GizmoExtension extends Extension { - * static EXTENSION_NAME = 'ACME_gizmo'; - * extensionName = 'ACME_gizmo'; - * write(context) { return this; } - * read(context) { return this; } - * } - * - * export default { - * extensions: [...ALL_EXTENSIONS, GizmoExtension], - * onProgramReady: ({ program, io, Session }) => { - * // Usage: https://caporal.io/ - * program - * .command('custom', 'Custom command') - * .help('Lorem ipsum dolorem...') - * .argument('', 'Path to read glTF 2.0 (.glb, .gltf) model') - * .argument('', 'Path to write output') - * .action(({ args, options, logger }) => - * Session.create(io, logger, args.input, args.output).transform(customTransform(options)) - * ); - * }, - * }; - * - * // Custom transform example; clears materials. - * function customTransform(options) { - * return async (document) => { - * for (const material of document.getRoot().listMaterials()) { - * material.dispose(); - * } - * }; - * } - * ``` - * - * Writing extensions in TypeScript is strongly encouraged. However, `gltf-transform.config.mjs` must be - * written in, or compiled to, plain JavaScript. - */ -export namespace CLI {} diff --git a/docs/theme/assets/css/main.css b/docs/theme/assets/css/main.css deleted file mode 100644 index 12b4160cf..000000000 --- a/docs/theme/assets/css/main.css +++ /dev/null @@ -1,1892 +0,0 @@ -/* ========================================================================== -* * Base -* * ========================================================================== */ -/** -* * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using -* * `em` units. -* * 2. Prevent iOS text size adjust after orientation change, without disabling -* * user zoom. */ -html { - font-size: 100%; - /* 1 */ - -ms-text-size-adjust: 100%; - /* 2 */ - -webkit-text-size-adjust: 100%; - /* 2 */ - font-family: sans-serif; -} - -/** -* * Address `font-family` inconsistency between `textarea` and other form -* * elements. */ -button, input, select, textarea { - font-family: sans-serif; -} - -/** -* * Address margins handled incorrectly in IE 6/7. */ -body { - margin: 0; -} - -/* ========================================================================== -* * Links -* * ========================================================================== */ -/** -* * Address `outline` inconsistency between Chrome and other browsers. */ -a:focus { - outline: thin dotted; -} -a:active, a:hover { - outline: 0; -} - -/** -* * Improve readability when focused and also mouse hovered in all browsers. */ -/* ========================================================================== -* * Typography -* * ========================================================================== */ -/** -* * Address font sizes and margins set differently in IE 6/7. -* * Address font sizes within `section` and `article` in Firefox 4+, Safari 5, -* * and Chrome. */ -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -h2 { - font-size: 1.5em; - margin: 2em 0 .83em; -} - -h3 { - font-size: 1.17em; - margin: 1em 0; -} - -h4, .tsd-index-panel h3 { - font-size: 1em; - margin: 1.33em 0; -} - -h5 { - font-size: 0.83em; - margin: 1.67em 0; -} - -h6 { - font-size: 0.67em; - margin: 2.33em 0; -} - -/** -* * Address styling not present in IE 7/8/9, Safari 5, and Chrome. */ -abbr[title] { - border-bottom: 1px dotted; -} - -/** -* * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. */ -b, strong { - font-weight: bold; -} - -blockquote { - margin: 1em 40px; -} - -/** -* * Address styling not present in Safari 5 and Chrome. */ -dfn { - font-style: italic; -} - -/** -* * Address differences between Firefox and other browsers. -* * Known issue: no IE 6/7 normalization. */ -hr { - box-sizing: content-box; - height: 0; -} - -/** -* * Address styling not present in IE 6/7/8/9. */ -mark { - background: #ff8; - color: #000; -} - -/** -* * Address margins set differently in IE 6/7. */ -p, pre { - margin: 1em 0; -} - -/** -* * Correct font family set oddly in IE 6, Safari 4/5, and Chrome. */ -code, kbd, pre, samp { - font-family: monospace, serif; - _font-family: "courier new", monospace; - font-size: 1em; -} - -/** -* * Improve readability of pre-formatted text in all browsers. */ -pre { - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; -} - -/** -* * Address CSS quotes not supported in IE 6/7. */ -q { - quotes: none; -} -q:before, q:after { - content: ""; - content: none; -} - -/** -* * Address `quotes` property not supported in Safari 4. */ -/** -* * Address inconsistent and variable font size in all browsers. */ -small { - font-size: 80%; -} - -/** -* * Prevent `sub` and `sup` affecting `line-height` in all browsers. */ -sub { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/* ========================================================================== -* * Lists -* * ========================================================================== */ -/** -* * Address margins set differently in IE 6/7. */ -dl, menu, ol, ul { - margin: 1em 0; -} - -dd { - margin: 0 0 0 40px; -} - -/** -* * Address paddings set differently in IE 6/7. */ -menu, ol, ul { - padding: 0 0 0 40px; -} - -/** -* * Correct list images handled incorrectly in IE 7. */ -nav ul, nav ol { - list-style: none; - list-style-image: none; -} - -/* ========================================================================== -* * Embedded content -* * ========================================================================== */ -/** -* * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3. -* * 2. Improve image quality when scaled in IE 7. */ -img { - border: 0; - /* 1 */ - -ms-interpolation-mode: bicubic; -} - -/* 2 */ -/** -* * Correct overflow displayed oddly in IE 9. */ -svg:not(:root) { - overflow: hidden; -} - -/* ========================================================================== -* * Figures -* * ========================================================================== */ -/** -* * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11. */ -figure, form { - margin: 0; -} - -/* ========================================================================== -* * Forms -* * ========================================================================== */ -/** -* * Correct margin displayed oddly in IE 6/7. */ -/** -* * Define consistent border, margin, and padding. */ -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -/** -* * 1. Correct color not being inherited in IE 6/7/8/9. -* * 2. Correct text not wrapping in Firefox 3. -* * 3. Correct alignment displayed oddly in IE 6/7. */ -legend { - border: 0; - /* 1 */ - padding: 0; - white-space: normal; - /* 2 */ - *margin-left: -7px; -} - -/* 3 */ -/** -* * 1. Correct font size not being inherited in all browsers. -* * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5, -* * and Chrome. -* * 3. Improve appearance and consistency in all browsers. */ -button, input, select, textarea { - font-size: 100%; - /* 1 */ - margin: 0; - /* 2 */ - vertical-align: baseline; - /* 3 */ - *vertical-align: middle; -} - -/* 3 */ -/** -* * Address Firefox 3+ setting `line-height` on `input` using `!important` in -* * the UA stylesheet. */ -button, input { - line-height: normal; -} - -/** -* * Address inconsistent `text-transform` inheritance for `button` and `select`. -* * All other form control elements do not inherit `text-transform` values. -* * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+. -* * Correct `select` style inheritance in Firefox 4+ and Opera. */ -button, select { - text-transform: none; -} - -/** -* * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` -* * and `video` controls. -* * 2. Correct inability to style clickable `input` types in iOS. -* * 3. Improve usability and consistency of cursor style between image-type -* * `input` and others. -* * 4. Remove inner spacing in IE 7 without affecting normal text inputs. -* * Known issue: inner spacing remains in IE 6. */ -button, html input[type=button] { - -webkit-appearance: button; - /* 2 */ - cursor: pointer; - /* 3 */ - *overflow: visible; -} - -/* 4 */ -input[type=reset], input[type=submit] { - -webkit-appearance: button; - /* 2 */ - cursor: pointer; - /* 3 */ - *overflow: visible; -} - -/* 4 */ -/** -* * Re-set default cursor for disabled elements. */ -button[disabled], html input[disabled] { - cursor: default; -} - -/** -* * 1. Address box sizing set to content-box in IE 8/9. -* * 2. Remove excess padding in IE 8/9. -* * 3. Remove excess padding in IE 7. -* * Known issue: excess padding remains in IE 6. */ -input { - /* 3 */ -} -input[type=checkbox], input[type=radio] { - box-sizing: border-box; - /* 1 */ - padding: 0; - /* 2 */ - *height: 13px; - /* 3 */ - *width: 13px; -} -input[type=search] { - -webkit-appearance: textfield; - /* 1 */ - /* 2 */ - box-sizing: content-box; -} -input[type=search]::-webkit-search-cancel-button, input[type=search]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** -* * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. -* * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome -* * (include `-moz` to future-proof). */ -/** -* * Remove inner padding and search cancel button in Safari 5 and Chrome -* * on OS X. */ -/** -* * Remove inner padding and border in Firefox 3+. */ -button::-moz-focus-inner, input::-moz-focus-inner { - border: 0; - padding: 0; -} - -/** -* * 1. Remove default vertical scrollbar in IE 6/7/8/9. -* * 2. Improve readability and alignment in all browsers. */ -textarea { - overflow: auto; - /* 1 */ - vertical-align: top; -} - -/* 2 */ -/* ========================================================================== -* * Tables -* * ========================================================================== */ -/** -* * Remove most spacing between table cells. */ -table { - border-collapse: collapse; - border-spacing: 0; -} - -/* * -* *Visual Studio-like style based on original C# coloring by Jason Diamond */ -.hljs { - display: inline-block; - padding: 0.5em; - background: white; - color: black; -} - -.hljs-comment, .hljs-annotation, .hljs-template_comment, .diff .hljs-header, .hljs-chunk, .apache .hljs-cbracket { - color: #008000; -} - -.hljs-keyword, .hljs-id, .hljs-built_in, .css .smalltalk .hljs-class, .hljs-winutils, .bash .hljs-variable, .tex .hljs-command, .hljs-request, .hljs-status, .nginx .hljs-title { - color: #00f; -} - -.xml .hljs-tag { - color: #00f; -} -.xml .hljs-tag .hljs-value { - color: #00f; -} - -.hljs-string, .hljs-title, .hljs-parent, .hljs-tag .hljs-value, .hljs-rules .hljs-value { - color: #a31515; -} - -.ruby .hljs-symbol { - color: #a31515; -} -.ruby .hljs-symbol .hljs-string { - color: #a31515; -} - -.hljs-template_tag, .django .hljs-variable, .hljs-addition, .hljs-flow, .hljs-stream, .apache .hljs-tag, .hljs-date, .tex .hljs-formula, .coffeescript .hljs-attribute { - color: #a31515; -} - -.ruby .hljs-string, .hljs-decorator, .hljs-filter .hljs-argument, .hljs-localvars, .hljs-array, .hljs-attr_selector, .hljs-pseudo, .hljs-pi, .hljs-doctype, .hljs-deletion, .hljs-envvar, .hljs-shebang, .hljs-preprocessor, .hljs-pragma, .userType, .apache .hljs-sqbracket, .nginx .hljs-built_in, .tex .hljs-special, .hljs-prompt { - color: #2b91af; -} - -.hljs-phpdoc, .hljs-javadoc, .hljs-xmlDocTag { - color: #808080; -} - -.vhdl .hljs-typename { - font-weight: bold; -} -.vhdl .hljs-string { - color: #666666; -} -.vhdl .hljs-literal { - color: #a31515; -} -.vhdl .hljs-attribute { - color: #00b0e8; -} - -.xml .hljs-attribute { - color: #f00; -} - -ul.tsd-descriptions > li > :first-child, .tsd-panel > :first-child, .col > :first-child, .col-11 > :first-child, .col-10 > :first-child, .col-9 > :first-child, .col-8 > :first-child, .col-7 > :first-child, .col-6 > :first-child, .col-5 > :first-child, .col-4 > :first-child, .col-3 > :first-child, .col-2 > :first-child, .col-1 > :first-child, -ul.tsd-descriptions > li > :first-child > :first-child, -.tsd-panel > :first-child > :first-child, -.col > :first-child > :first-child, -.col-11 > :first-child > :first-child, -.col-10 > :first-child > :first-child, -.col-9 > :first-child > :first-child, -.col-8 > :first-child > :first-child, -.col-7 > :first-child > :first-child, -.col-6 > :first-child > :first-child, -.col-5 > :first-child > :first-child, -.col-4 > :first-child > :first-child, -.col-3 > :first-child > :first-child, -.col-2 > :first-child > :first-child, -.col-1 > :first-child > :first-child, -ul.tsd-descriptions > li > :first-child > :first-child > :first-child, -.tsd-panel > :first-child > :first-child > :first-child, -.col > :first-child > :first-child > :first-child, -.col-11 > :first-child > :first-child > :first-child, -.col-10 > :first-child > :first-child > :first-child, -.col-9 > :first-child > :first-child > :first-child, -.col-8 > :first-child > :first-child > :first-child, -.col-7 > :first-child > :first-child > :first-child, -.col-6 > :first-child > :first-child > :first-child, -.col-5 > :first-child > :first-child > :first-child, -.col-4 > :first-child > :first-child > :first-child, -.col-3 > :first-child > :first-child > :first-child, -.col-2 > :first-child > :first-child > :first-child, -.col-1 > :first-child > :first-child > :first-child { - margin-top: 0; -} -ul.tsd-descriptions > li > :last-child, .tsd-panel > :last-child, .col > :last-child, .col-11 > :last-child, .col-10 > :last-child, .col-9 > :last-child, .col-8 > :last-child, .col-7 > :last-child, .col-6 > :last-child, .col-5 > :last-child, .col-4 > :last-child, .col-3 > :last-child, .col-2 > :last-child, .col-1 > :last-child, -ul.tsd-descriptions > li > :last-child > :last-child, -.tsd-panel > :last-child > :last-child, -.col > :last-child > :last-child, -.col-11 > :last-child > :last-child, -.col-10 > :last-child > :last-child, -.col-9 > :last-child > :last-child, -.col-8 > :last-child > :last-child, -.col-7 > :last-child > :last-child, -.col-6 > :last-child > :last-child, -.col-5 > :last-child > :last-child, -.col-4 > :last-child > :last-child, -.col-3 > :last-child > :last-child, -.col-2 > :last-child > :last-child, -.col-1 > :last-child > :last-child, -ul.tsd-descriptions > li > :last-child > :last-child > :last-child, -.tsd-panel > :last-child > :last-child > :last-child, -.col > :last-child > :last-child > :last-child, -.col-11 > :last-child > :last-child > :last-child, -.col-10 > :last-child > :last-child > :last-child, -.col-9 > :last-child > :last-child > :last-child, -.col-8 > :last-child > :last-child > :last-child, -.col-7 > :last-child > :last-child > :last-child, -.col-6 > :last-child > :last-child > :last-child, -.col-5 > :last-child > :last-child > :last-child, -.col-4 > :last-child > :last-child > :last-child, -.col-3 > :last-child > :last-child > :last-child, -.col-2 > :last-child > :last-child > :last-child, -.col-1 > :last-child > :last-child > :last-child { - margin-bottom: 0; -} - -.container { - max-width: 1200px; - margin: 0 auto; - padding: 0 40px; -} -@media (max-width: 640px) { - .container { - padding: 0 20px; - } -} - -.container-main { - padding-bottom: 200px; -} - -.row { - display: -ms-flexbox; - display: flex; - position: relative; - margin: 0 -10px; -} -.row:after { - visibility: hidden; - display: block; - content: ""; - clear: both; - height: 0; -} - -.col, .col-11, .col-10, .col-9, .col-8, .col-7, .col-6, .col-5, .col-4, .col-3, .col-2, .col-1 { - box-sizing: border-box; - float: left; - padding: 0 10px; -} - -.col-1 { - width: 8.3333333333%; -} - -.offset-1 { - margin-left: 8.3333333333%; -} - -.col-2 { - width: 16.6666666667%; -} - -.offset-2 { - margin-left: 16.6666666667%; -} - -.col-3 { - width: 25%; -} - -.offset-3 { - margin-left: 25%; -} - -.col-4 { - width: 33.3333333333%; -} - -.offset-4 { - margin-left: 33.3333333333%; -} - -.col-5 { - width: 41.6666666667%; -} - -.offset-5 { - margin-left: 41.6666666667%; -} - -.col-6 { - width: 50%; -} - -.offset-6 { - margin-left: 50%; -} - -.col-7 { - width: 58.3333333333%; -} - -.offset-7 { - margin-left: 58.3333333333%; -} - -.col-8 { - width: 66.6666666667%; -} - -.offset-8 { - margin-left: 66.6666666667%; -} - -.col-9 { - width: 75%; -} - -.offset-9 { - margin-left: 75%; -} - -.col-10 { - width: 83.3333333333%; -} - -.offset-10 { - margin-left: 83.3333333333%; -} - -.col-11 { - width: 91.6666666667%; -} - -.offset-11 { - margin-left: 91.6666666667%; -} - -@keyframes fade-in { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -@keyframes fade-out { - from { - opacity: 1; - visibility: visible; - } - to { - opacity: 0; - } -} -@keyframes fade-in-delayed { - 0% { - opacity: 0; - } - 33% { - opacity: 0; - } - 100% { - opacity: 1; - } -} -@keyframes fade-out-delayed { - 0% { - opacity: 1; - visibility: visible; - } - 66% { - opacity: 0; - } - 100% { - opacity: 0; - } -} -@keyframes shift-to-left { - from { - transform: translate(0, 0); - } - to { - transform: translate(-25%, 0); - } -} -@keyframes unshift-to-left { - from { - transform: translate(-25%, 0); - } - to { - transform: translate(0, 0); - } -} -@keyframes pop-in-from-right { - from { - transform: translate(100%, 0); - } - to { - transform: translate(0, 0); - } -} -@keyframes pop-out-to-right { - from { - transform: translate(0, 0); - visibility: visible; - } - to { - transform: translate(100%, 0); - } -} -body { - background: #fdfdfd; - font-family: "Segoe UI", sans-serif; - font-size: 16px; - color: #222; -} - -a { - color: #4da6ff; - text-decoration: none; -} -a:hover { - text-decoration: underline; -} - -code, pre { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - padding: 0.2em; - margin: 0; - font-size: 14px; - background-color: rgba(0, 0, 0, 0.04); -} - -pre { - padding: 2em; -} -pre code { - padding: 0; - font-size: 100%; - background-color: transparent; -} - -.tsd-typography { - line-height: 1.333em; -} -.tsd-typography ul { - list-style: square; - padding: 0 0 0 20px; - margin: 0; -} -.tsd-typography h4, .tsd-typography .tsd-index-panel h3, .tsd-index-panel .tsd-typography h3, .tsd-typography h5, .tsd-typography h6 { - font-size: 1em; - margin: 0; -} -.tsd-typography h5, .tsd-typography h6 { - font-weight: normal; -} -.tsd-typography p, .tsd-typography ul, .tsd-typography ol { - margin: 1em 0; -} - -@media (min-width: 901px) and (max-width: 1024px) { - html.default .col-content { - width: 72%; - } - html.default .col-menu { - width: 28%; - } - html.default .tsd-navigation { - padding-left: 10px; - } -} -@media (max-width: 900px) { - html.default .col-content { - float: none; - width: 100%; - } - html.default .col-menu { - position: fixed !important; - overflow: auto; - -webkit-overflow-scrolling: touch; - z-index: 1024; - top: 0 !important; - bottom: 0 !important; - left: auto !important; - right: 0 !important; - width: 100%; - padding: 20px 20px 0 0; - max-width: 450px; - visibility: hidden; - background-color: #fff; - transform: translate(100%, 0); - } - html.default .col-menu > *:last-child { - padding-bottom: 20px; - } - html.default .overlay { - content: ""; - display: block; - position: fixed; - z-index: 1023; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(0, 0, 0, 0.75); - visibility: hidden; - } - html.default.to-has-menu .overlay { - animation: fade-in 0.4s; - } - html.default.to-has-menu header, - html.default.to-has-menu footer, - html.default.to-has-menu .col-content { - animation: shift-to-left 0.4s; - } - html.default.to-has-menu .col-menu { - animation: pop-in-from-right 0.4s; - } - html.default.from-has-menu .overlay { - animation: fade-out 0.4s; - } - html.default.from-has-menu header, - html.default.from-has-menu footer, - html.default.from-has-menu .col-content { - animation: unshift-to-left 0.4s; - } - html.default.from-has-menu .col-menu { - animation: pop-out-to-right 0.4s; - } - html.default.has-menu body { - overflow: hidden; - } - html.default.has-menu .overlay { - visibility: visible; - } - html.default.has-menu header, - html.default.has-menu footer, - html.default.has-menu .col-content { - transform: translate(-25%, 0); - } - html.default.has-menu .col-menu { - visibility: visible; - transform: translate(0, 0); - } -} - -.tsd-page-title { - padding: 70px 0 20px 0; - margin: 0 0 40px 0; - background: #fff; - box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); -} -.tsd-page-title h1 { - margin: 0; -} - -.tsd-breadcrumb { - margin: 0; - padding: 0; - color: #808080; -} -.tsd-breadcrumb a { - color: #808080; - text-decoration: none; -} -.tsd-breadcrumb a:hover { - text-decoration: underline; -} -.tsd-breadcrumb li { - display: inline; -} -.tsd-breadcrumb li:after { - content: " / "; -} - -html.minimal .container { - margin: 0; -} -html.minimal .container-main { - padding-top: 50px; - padding-bottom: 0; -} -html.minimal .content-wrap { - padding-left: 300px; -} -html.minimal .tsd-navigation { - position: fixed !important; - overflow: auto; - -webkit-overflow-scrolling: touch; - box-sizing: border-box; - z-index: 1; - left: 0; - top: 40px; - bottom: 0; - width: 300px; - padding: 20px; - margin: 0; -} -html.minimal .tsd-member .tsd-member { - margin-left: 0; -} -html.minimal .tsd-page-toolbar { - position: fixed; - z-index: 2; -} -html.minimal #tsd-filter .tsd-filter-group { - right: 0; - transform: none; -} -html.minimal footer { - background-color: transparent; -} -html.minimal footer .container { - padding: 0; -} -html.minimal .tsd-generator { - padding: 0; -} -@media (max-width: 900px) { - html.minimal .tsd-navigation { - display: none; - } - html.minimal .content-wrap { - padding-left: 0; - } -} - -dl.tsd-comment-tags { - overflow: hidden; -} -dl.tsd-comment-tags dt { - float: left; - padding: 1px 5px; - margin: 0 10px 0 0; - border-radius: 4px; - border: 1px solid #808080; - color: #808080; - font-size: 0.8em; - font-weight: normal; -} -dl.tsd-comment-tags dd { - margin: 0 0 10px 0; -} -dl.tsd-comment-tags dd:before, dl.tsd-comment-tags dd:after { - display: table; - content: " "; -} -dl.tsd-comment-tags dd pre, dl.tsd-comment-tags dd:after { - clear: both; -} -dl.tsd-comment-tags p { - margin: 0; -} - -.tsd-panel.tsd-comment .lead { - font-size: 1.1em; - line-height: 1.333em; - margin-bottom: 2em; -} -.tsd-panel.tsd-comment .lead:last-child { - margin-bottom: 0; -} - -.toggle-protected .tsd-is-private { - display: none; -} - -.toggle-public .tsd-is-private, -.toggle-public .tsd-is-protected, -.toggle-public .tsd-is-private-protected { - display: none; -} - -.toggle-inherited .tsd-is-inherited { - display: none; -} - -.toggle-only-exported .tsd-is-not-exported { - display: none; -} - -.toggle-externals .tsd-is-external { - display: none; -} - -#tsd-filter { - position: relative; - display: inline-block; - height: 40px; - vertical-align: bottom; -} -.no-filter #tsd-filter { - display: none; -} -#tsd-filter .tsd-filter-group { - display: inline-block; - height: 40px; - vertical-align: bottom; - white-space: nowrap; -} -#tsd-filter input { - display: none; -} -@media (max-width: 900px) { - #tsd-filter .tsd-filter-group { - display: block; - position: absolute; - top: 40px; - right: 20px; - height: auto; - background-color: #fff; - visibility: hidden; - transform: translate(50%, 0); - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); - } - .has-options #tsd-filter .tsd-filter-group { - visibility: visible; - } - .to-has-options #tsd-filter .tsd-filter-group { - animation: fade-in 0.2s; - } - .from-has-options #tsd-filter .tsd-filter-group { - animation: fade-out 0.2s; - } - #tsd-filter label, - #tsd-filter .tsd-select { - display: block; - padding-right: 20px; - } -} - -footer { - border-top: 1px solid #eee; - background-color: #fff; -} -footer.with-border-bottom { - border-bottom: 1px solid #eee; -} -footer .tsd-legend-group { - font-size: 0; -} -footer .tsd-legend { - display: inline-block; - width: 25%; - padding: 0; - font-size: 16px; - list-style: none; - line-height: 1.333em; - vertical-align: top; -} -@media (max-width: 900px) { - footer .tsd-legend { - width: 50%; - } -} - -.tsd-hierarchy { - list-style: square; - padding: 0 0 0 20px; - margin: 0; -} -.tsd-hierarchy .target { - font-weight: bold; -} - -.tsd-index-panel .tsd-index-content { - margin-bottom: -30px !important; -} -.tsd-index-panel .tsd-index-section { - margin-bottom: 30px !important; -} -.tsd-index-panel h3 { - margin: 0 -20px 10px -20px; - padding: 0 20px 10px 20px; - border-bottom: 1px solid #eee; -} -.tsd-index-panel ul.tsd-index-list { - -moz-column-count: 3; - -ms-column-count: 3; - -o-column-count: 3; - column-count: 3; - -moz-column-gap: 20px; - -ms-column-gap: 20px; - -o-column-gap: 20px; - column-gap: 20px; - padding: 0; - list-style: none; - line-height: 1.333em; -} -@media (max-width: 900px) { - .tsd-index-panel ul.tsd-index-list { - -moz-column-count: 1; - -ms-column-count: 1; - -o-column-count: 1; - column-count: 1; - } -} -@media (min-width: 901px) and (max-width: 1024px) { - .tsd-index-panel ul.tsd-index-list { - -moz-column-count: 2; - -ms-column-count: 2; - -o-column-count: 2; - column-count: 2; - } -} -.tsd-index-panel ul.tsd-index-list li { - -webkit-page-break-inside: avoid; - -moz-page-break-inside: avoid; - -ms-page-break-inside: avoid; - -o-page-break-inside: avoid; - page-break-inside: avoid; -} -.tsd-index-panel a, -.tsd-index-panel .tsd-parent-kind-module a { - color: #9600ff; -} -.tsd-index-panel .tsd-parent-kind-interface a { - color: #7da01f; -} -.tsd-index-panel .tsd-parent-kind-enum a { - color: #cc9900; -} -.tsd-index-panel .tsd-parent-kind-class a { - color: #4da6ff; -} -.tsd-index-panel .tsd-kind-module a { - color: #9600ff; -} -.tsd-index-panel .tsd-kind-interface a { - color: #7da01f; -} -.tsd-index-panel .tsd-kind-enum a { - color: #cc9900; -} -.tsd-index-panel .tsd-kind-class a { - color: #4da6ff; -} -.tsd-index-panel .tsd-is-private a { - color: #808080; -} - -.tsd-flag { - display: inline-block; - padding: 1px 5px; - border-radius: 4px; - color: #fff; - background-color: #808080; - text-indent: 0; - font-size: 14px; - font-weight: normal; -} - -.tsd-anchor { - position: absolute; - top: -100px; -} - -.tsd-member { - position: relative; -} -.tsd-member .tsd-anchor + h3 { - margin-top: 0; - margin-bottom: 0; - border-bottom: none; -} - -.tsd-navigation { - margin: 0 0 0 40px; -} -.tsd-navigation a { - display: block; - padding-top: 2px; - padding-bottom: 2px; - border-left: 2px solid transparent; - color: #222; - text-decoration: none; - transition: border-left-color 0.1s; -} -.tsd-navigation a:hover { - text-decoration: underline; -} -.tsd-navigation ul { - margin: 0; - padding: 0; - list-style: none; -} -.tsd-navigation li { - padding: 0; -} - -.tsd-navigation.primary { - padding-bottom: 40px; -} -.tsd-navigation.primary a { - display: block; - padding-top: 6px; - padding-bottom: 6px; -} -.tsd-navigation.primary ul li a { - padding-left: 5px; -} -.tsd-navigation.primary ul li li a { - padding-left: 25px; -} -.tsd-navigation.primary ul li li li a { - padding-left: 45px; -} -.tsd-navigation.primary ul li li li li a { - padding-left: 65px; -} -.tsd-navigation.primary ul li li li li li a { - padding-left: 85px; -} -.tsd-navigation.primary ul li li li li li li a { - padding-left: 105px; -} -.tsd-navigation.primary > ul { - border-bottom: 1px solid #eee; -} -.tsd-navigation.primary li { - border-top: 1px solid #eee; -} -.tsd-navigation.primary li.current > a { - font-weight: bold; -} -.tsd-navigation.primary li.label span { - display: block; - padding: 20px 0 6px 5px; - color: #808080; -} -.tsd-navigation.primary li.globals + li > span, .tsd-navigation.primary li.globals + li > a { - padding-top: 20px; -} - -.tsd-navigation.secondary { - max-height: calc(100vh - 1rem - 40px); - overflow: auto; - position: -webkit-sticky; - position: sticky; - top: calc(.5rem + 40px); - transition: 0.3s; -} -.tsd-navigation.secondary.tsd-navigation--toolbar-hide { - max-height: calc(100vh - 1rem); - top: 0.5rem; -} -.tsd-navigation.secondary ul { - transition: opacity 0.2s; -} -.tsd-navigation.secondary ul li a { - padding-left: 25px; -} -.tsd-navigation.secondary ul li li a { - padding-left: 45px; -} -.tsd-navigation.secondary ul li li li a { - padding-left: 65px; -} -.tsd-navigation.secondary ul li li li li a { - padding-left: 85px; -} -.tsd-navigation.secondary ul li li li li li a { - padding-left: 105px; -} -.tsd-navigation.secondary ul li li li li li li a { - padding-left: 125px; -} -.tsd-navigation.secondary ul.current a { - border-left-color: #eee; -} -.tsd-navigation.secondary li.focus > a, -.tsd-navigation.secondary ul.current li.focus > a { - border-left-color: #000; -} -.tsd-navigation.secondary li.current { - margin-top: 20px; - margin-bottom: 20px; - border-left-color: #eee; -} -.tsd-navigation.secondary li.current > a { - font-weight: bold; -} - -@media (min-width: 901px) { - .menu-sticky-wrap { - position: static; - } -} - -.tsd-panel { - margin: 20px 0; - padding: 20px; - background-color: #fff; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); -} -.tsd-panel:empty { - display: none; -} -.tsd-panel > h1, .tsd-panel > h2, .tsd-panel > h3 { - margin: 1.5em -20px 10px -20px; - padding: 0 20px 10px 20px; - border-bottom: 1px solid #eee; -} -.tsd-panel > h1.tsd-before-signature, .tsd-panel > h2.tsd-before-signature, .tsd-panel > h3.tsd-before-signature { - margin-bottom: 0; - border-bottom: 0; -} -.tsd-panel table { - display: block; - width: 100%; - overflow: auto; - margin-top: 10px; - word-break: normal; - word-break: keep-all; -} -.tsd-panel table th { - font-weight: bold; -} -.tsd-panel table th, .tsd-panel table td { - padding: 6px 13px; - border: 1px solid #ddd; -} -.tsd-panel table tr { - background-color: #fff; - border-top: 1px solid #ccc; -} -.tsd-panel table tr:nth-child(2n) { - background-color: #f8f8f8; -} - -.tsd-panel-group { - margin: 60px 0; -} -.tsd-panel-group > h1, .tsd-panel-group > h2, .tsd-panel-group > h3 { - padding-left: 20px; - padding-right: 20px; -} - -#tsd-search { - transition: background-color 0.2s; -} -#tsd-search .title { - position: relative; - z-index: 2; -} -#tsd-search .field { - position: absolute; - left: 0; - top: 0; - right: 40px; - height: 40px; -} -#tsd-search .field input { - box-sizing: border-box; - position: relative; - top: -50px; - z-index: 1; - width: 100%; - padding: 0 10px; - opacity: 0; - outline: 0; - border: 0; - background: transparent; - color: #222; -} -#tsd-search .field label { - position: absolute; - overflow: hidden; - right: -40px; -} -#tsd-search .field input, -#tsd-search .title { - transition: opacity 0.2s; -} -#tsd-search .results { - position: absolute; - visibility: hidden; - top: 40px; - width: 100%; - margin: 0; - padding: 0; - list-style: none; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); -} -#tsd-search .results li { - padding: 0 10px; - background-color: #fdfdfd; -} -#tsd-search .results li:nth-child(even) { - background-color: #fff; -} -#tsd-search .results li.state { - display: none; -} -#tsd-search .results li.current, -#tsd-search .results li:hover { - background-color: #eee; -} -#tsd-search .results a { - display: block; -} -#tsd-search .results a:before { - top: 10px; -} -#tsd-search .results span.parent { - color: #808080; - font-weight: normal; -} -#tsd-search.has-focus { - background-color: #eee; -} -#tsd-search.has-focus .field input { - top: 0; - opacity: 1; -} -#tsd-search.has-focus .title { - z-index: 0; - opacity: 0; -} -#tsd-search.has-focus .results { - visibility: visible; -} -#tsd-search.loading .results li.state.loading { - display: block; -} -#tsd-search.failure .results li.state.failure { - display: block; -} - -.tsd-signature { - margin: 0 0 1em 0; - padding: 10px; - border: 1px solid #eee; - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - font-size: 14px; - overflow-x: auto; -} -.tsd-signature.tsd-kind-icon { - padding-left: 30px; -} -.tsd-signature.tsd-kind-icon:before { - top: 10px; - left: 10px; -} -.tsd-panel > .tsd-signature { - margin-left: -20px; - margin-right: -20px; - border-width: 1px 0; -} -.tsd-panel > .tsd-signature.tsd-kind-icon { - padding-left: 40px; -} -.tsd-panel > .tsd-signature.tsd-kind-icon:before { - left: 20px; -} - -.tsd-signature-symbol { - color: #808080; - font-weight: normal; -} - -.tsd-signature-type { - font-style: italic; - font-weight: normal; -} - -.tsd-signatures { - padding: 0; - margin: 0 0 1em 0; - border: 1px solid #eee; -} -.tsd-signatures .tsd-signature { - margin: 0; - border-width: 1px 0 0 0; - transition: background-color 0.1s; -} -.tsd-signatures .tsd-signature:first-child { - border-top-width: 0; -} -.tsd-signatures .tsd-signature.current { - background-color: #eee; -} -.tsd-signatures.active > .tsd-signature { - cursor: pointer; -} -.tsd-panel > .tsd-signatures { - margin-top: -20px; - margin-left: -20px; - margin-right: -20px; - border-width: 1px 0; -} -.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon { - padding-left: 40px; -} -.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon:before { - left: 20px; -} -.tsd-panel > a.anchor + .tsd-signatures { - border-top-width: 0; - margin-top: -20px; -} - -ul.tsd-descriptions { - position: relative; - overflow: hidden; - padding: 0; - list-style: none; -} -ul.tsd-descriptions.active > .tsd-description { - display: none; -} -ul.tsd-descriptions.active > .tsd-description.current { - display: block; -} -ul.tsd-descriptions.active > .tsd-description.fade-in { - animation: fade-in-delayed 0.3s; -} -ul.tsd-descriptions.active > .tsd-description.fade-out { - animation: fade-out-delayed 0.3s; - position: absolute; - display: block; - top: 0; - left: 0; - right: 0; - opacity: 0; - visibility: hidden; -} -ul.tsd-descriptions h4, ul.tsd-descriptions .tsd-index-panel h3, .tsd-index-panel ul.tsd-descriptions h3 { - font-size: 16px; - margin: 1em 0 0.5em 0; -} - -ul.tsd-parameters, -ul.tsd-type-parameters { - list-style: square; - margin: 0; - padding-left: 20px; -} -ul.tsd-parameters > li.tsd-parameter-signature, -ul.tsd-type-parameters > li.tsd-parameter-signature { - list-style: none; - margin-left: -20px; -} -ul.tsd-parameters h5, -ul.tsd-type-parameters h5 { - font-size: 16px; - margin: 1em 0 0.5em 0; -} -ul.tsd-parameters .tsd-comment, -ul.tsd-type-parameters .tsd-comment { - margin-top: -0.5em; -} - -.tsd-sources { - font-size: 14px; - color: #808080; - margin: 0 0 1em 0; -} -.tsd-sources a { - color: #808080; - text-decoration: underline; -} -.tsd-sources ul, .tsd-sources p { - margin: 0 !important; -} -.tsd-sources ul { - list-style: none; - padding: 0; -} - -.tsd-page-toolbar { - position: fixed; - z-index: 1; - top: 0; - left: 0; - width: 100%; - height: 40px; - color: #333; - background: #fff; - border-bottom: 1px solid #eee; - transition: transform 0.3s linear; -} -.tsd-page-toolbar a { - color: #333; - text-decoration: none; -} -.tsd-page-toolbar a.title { - font-weight: bold; -} -.tsd-page-toolbar a.title:hover { - text-decoration: underline; -} -.tsd-page-toolbar .table-wrap { - display: table; - width: 100%; - height: 40px; -} -.tsd-page-toolbar .table-cell { - display: table-cell; - position: relative; - white-space: nowrap; - line-height: 40px; -} -.tsd-page-toolbar .table-cell:first-child { - width: 100%; -} - -.tsd-page-toolbar--hide { - transform: translateY(-100%); -} - -.tsd-select .tsd-select-list li:before, .tsd-select .tsd-select-label:before, .tsd-widget:before { - content: ""; - display: inline-block; - width: 40px; - height: 40px; - margin: 0 -8px 0 0; - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAAAoCAQAAAAlSeuiAAABp0lEQVR4Ae3aUa3jQAyF4QNhIBTCQiiEQlgIhRAGhTAQBkIgBEIgDITZZGXNjZTePiSWYqn/54dGfbAq+SiTutWXAgAAAAAAAAAAAAA8NCz1UFSD2lKDS5d3NVzZj/BVNasaLoRZRUmj2lLrVVHWMUntQ13Wj/i1pWa9lprX6xMRnH4dx6Rjsn26+v+12ms+EcB37P0r+qH+DNQGXgMFcHzbregQ78B8eQCTJk0e979ZW7PdA2O49ceDsYexKgUNoI3EKYDWL3D8miaPh/uXtl6BHqEHFQvgXau/FsCiIWAAbST2fpQRT0sl70j3z5ZiBdD7CG5WZX8kxwmgjbiP5GQA9/3O2XaxnnHi53AEE0AbRh+JQwC3/fzC4hcb6xPvS4i3QaMdwX+0utsRPEY6gm2wNhKHAG77eUi7SIcK4G4NY4GMIan2u2Cxqzncl5DUn7Q8ArjvZ8JFOsl/Ed0jyBom+BomQKSto+9PcblHMM4iuu4X0QQw5hrGQY/gUxFkjZuf4m4alXVU+1De/VhEn5CvDSB/RsBzqWgAAAAAAAAAAAAAAACAfyyYJ5nhVuwIAAAAAElFTkSuQmCC); - background-repeat: no-repeat; - text-indent: -1024px; - vertical-align: bottom; -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { - .tsd-select .tsd-select-list li:before, .tsd-select .tsd-select-label:before, .tsd-widget:before { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAABQCAMAAAC+sjQXAAAAM1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACjBUbJAAAAEXRSTlMA3/+/UCBw7xCPYIBAMM+vn1qYQ7QAAALCSURBVHgB7MGBAAAAAICg/akXqQIAAAAAAAAAAAAAAAAAAJids9mdE4bhoDNZCITP93/aSmhV/9uwPWyi8jtkblws2IxsYpz9LwSAaJW8AreE16PxOsMYE6Q4DiYKF7X+8ZHXc/E608xv5snEyIuZrVwMZjbnujR6T3gsXmcLOIRNzD+Ig2UuVtt2+NbAiX/wVLzOlviD9L2BOfGBlL/3D1I+uDjGBJArBPxU3x+K15kCQFo2s21JAOHrKpz4SPrWv4IKA+uFaR6vMwMcb+emA2DWEfDglrkLqEBOKVslA8Dx14oPMiV4CtywWxdQgAwkq2QE0uTXUwJGk2G9s3mTFNBzAkC7HKPsX72AEVjMnAWIpsPCRRjXdQxcjCYpoOcEgHY5Rtk/slWSgM3M2aSeeVgjAOeVpKcdgGMdNAXMuIAqOcZzqF8L+WcAsi8wkTeheCWMegL6mgCorHHyEJ5TVfxrLWDrTUjZdhnhjYqAnlN8TaoELOLVC0gucmoz/3RKcPs2jAs4+J5ET8AEZF+TSgGLeC1V8YuGQQU2IV1Asq9JCwE9XitZVPxr34bpJRj8PqsFLOK108W9aVrWZRrR7Sm2HL4JCToCujHZ6gUs4jUz0P1TEvD+U5wMa363YeziBODIq1YbJrsv9QKW8Ry1nNp+GAHvuingRTfmYcjBf0QpAS37bdUL6PFKtHJq63EsZ5cxcKMkDVIClu1dAK1PcJ5TFQ0M9wZKDCPs3BD7MIJGTs3WfiTfDVQYx5q5ZekCauTU3P5Q0ukGCgh49oFURdobWBY9N/CxEuwGjpGLuPhTdwH1x7HqDDxNgRP2zQ8lraFyF/yJ9vH6QGqtgSbBOU8/j2VORz+Wqfle2d5Ae4R+ML0z7Y+W4P7XHN3AU+tzyK/24EAGAAAAYJC/9T2+CgAAAAAAAAAAAAAAAAAAAADgJpfzHyIKFFBKAAAAAElFTkSuQmCC); - background-size: 320px 40px; - } -} - -.tsd-widget { - display: inline-block; - overflow: hidden; - opacity: 0.6; - height: 40px; - transition: opacity 0.1s, background-color 0.2s; - vertical-align: bottom; - cursor: pointer; -} -.tsd-widget:hover { - opacity: 0.8; -} -.tsd-widget.active { - opacity: 1; - background-color: #eee; -} -.tsd-widget.no-caption { - width: 40px; -} -.tsd-widget.no-caption:before { - margin: 0; -} -.tsd-widget.search:before { - background-position: 0 0; -} -.tsd-widget.menu:before { - background-position: -40px 0; -} -.tsd-widget.options:before { - background-position: -80px 0; -} -.tsd-widget.options, .tsd-widget.menu { - display: none; -} -@media (max-width: 900px) { - .tsd-widget.options, .tsd-widget.menu { - display: inline-block; - } -} -input[type=checkbox] + .tsd-widget:before { - background-position: -120px 0; -} -input[type=checkbox]:checked + .tsd-widget:before { - background-position: -160px 0; -} - -.tsd-select { - position: relative; - display: inline-block; - height: 40px; - transition: opacity 0.1s, background-color 0.2s; - vertical-align: bottom; - cursor: pointer; -} -.tsd-select .tsd-select-label { - opacity: 0.6; - transition: opacity 0.2s; -} -.tsd-select .tsd-select-label:before { - background-position: -240px 0; -} -.tsd-select.active .tsd-select-label { - opacity: 0.8; -} -.tsd-select.active .tsd-select-list { - visibility: visible; - opacity: 1; - transition-delay: 0s; -} -.tsd-select .tsd-select-list { - position: absolute; - visibility: hidden; - top: 40px; - left: 0; - margin: 0; - padding: 0; - opacity: 0; - list-style: none; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); - transition: visibility 0s 0.2s, opacity 0.2s; -} -.tsd-select .tsd-select-list li { - padding: 0 20px 0 0; - background-color: #fdfdfd; -} -.tsd-select .tsd-select-list li:before { - background-position: 40px 0; -} -.tsd-select .tsd-select-list li:nth-child(even) { - background-color: #fff; -} -.tsd-select .tsd-select-list li:hover { - background-color: #eee; -} -.tsd-select .tsd-select-list li.selected:before { - background-position: -200px 0; -} -@media (max-width: 900px) { - .tsd-select .tsd-select-list { - top: 0; - left: auto; - right: 100%; - margin-right: -5px; - } - .tsd-select .tsd-select-label:before { - background-position: -280px 0; - } -} - -img { - max-width: 100%; -} - -/* ========================================================================== - * * Customizations - * * ========================================================================== */ - -body { - font-family: Iowan Old Style,Apple Garamond,Palatino Linotype,Times New Roman,"Droid Serif",Times,serif; -} - -.header-badge img { - vertical-align: sub; - margin-left: 0.5em; -} - -.tsd-typography { - line-height: 1.6em; -} - -.tsd-navigation h4 { - margin-bottom: .5em; -} - -.tsd-navigation.secondary ul li a { - padding-left: 1em; - overflow: hidden; - text-overflow: ellipsis; -} - -.tsd-navigation.secondary ul li a.active { - text-decoration: underline; -} - -.tsd-panel { - box-shadow: none; -} - -pre { - padding: 20px; - white-space: pre; - overflow: auto; -} - -.tsd-signature { - color: #4da6ff; -} - -html.minimal .tsd-generator, -.tsd-panel > .tsd-signature.tsd-kind-icon, -.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon { - padding-left: 20px; -} - -.tsd-select .tsd-select-label, -.tsd-widget { - opacity: .8; -} - -.tsd-select.active .tsd-select-label, -.tsd-widget:hover { - opacity: 1; -} - -.tsd-navigation a[target=_blank]::after { - content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAQElEQVR42qXKwQkAIAxDUUdxtO6/RBQkQZvSi8I/pL4BoGw/XPkh4XigPmsUgh0626AjRsgxHTkUThsG2T/sIlzdTsp52kSS1wAAAABJRU5ErkJggg==); - margin: 0 3px 0 5px; -} - -/** Enum styles are too sprawling. */ -.tsd-parent-kind-object-literal { - padding-bottom: 0; - margin-bottom: 0; - margin-top: 0; - padding-top: 0; -} - -.tsd-parent-kind-object-literal .tsd-sources { - display: none; -} - -.tsd-parent-kind-object-literal .tsd-signature.tsd-kind-icon { - border-bottom: none; - padding-bottom: 0; -} - -.tsd-parent-kind-object-literal .tsd-comment.tsd-typography p { - margin-bottom: 0.3em; -} - -blockquote { - border-left: 6px solid #ccc; - padding-left: 1em; - margin-left: 0; - color: #606060; - font-style: italic; -} - -html.minimal .tsd-generator { - text-align: center; - padding-left: 0; -} - -.tsd-generator img { - max-width: 40%; -} - -details[open] { - padding-left: 1em; - margin-bottom: 1em; -} - -details[open] > summary { - margin-left: -1em; -} - -details > summary { - cursor: pointer; -} - -@media (max-width: 900px) { - html.minimal .tsd-navigation { - display: block; - top: 0; - left: -305px; /* Additional 5px for box-shadow blur. */ - max-height: none; - padding-top: 40px; - background: #fff; - box-shadow: 1px 1px 3px 0 rgba(0,0,0,0.16); - transition: left 0.2s ease; - } - - html.minimal .toggle-nav .tsd-navigation { - left: 0; - } - - #tsd-filter { - display: none; - } - - .tsd-generator img { - max-width: 60%; - } - - .tsd-generator .line { - display: block; - line-height: 2em; - } - - .tsd-generator .divider { - display: none; - } -} diff --git a/docs/theme/layouts/default.hbs b/docs/theme/layouts/default.hbs deleted file mode 100644 index 8bf4b91c9..000000000 --- a/docs/theme/layouts/default.hbs +++ /dev/null @@ -1,389 +0,0 @@ - - - - - - {{#ifCond model.name '===' project.name}}{{else}}{{model.name}} | {{/ifCond}}{{project.name}} - - - - - - - - - - - - - - - - - - - - - - - - - - - -{{> header}} - - - -
-
- {{#if model.readme}} -
- {{#markdown}}{{{model.readme}}}{{/markdown}} -
- {{/if}} - - {{{contents}}} - {{> footer}} -
-
- -{{> analytics}} - - - diff --git a/docs/theme/partials/analytics.hbs b/docs/theme/partials/analytics.hbs deleted file mode 100644 index 2c4ec9bb7..000000000 --- a/docs/theme/partials/analytics.hbs +++ /dev/null @@ -1,11 +0,0 @@ -{{#if settings.gaID}} - -{{/if}} \ No newline at end of file diff --git a/docs/theme/partials/breadcrumb.hbs b/docs/theme/partials/breadcrumb.hbs deleted file mode 100644 index 319741831..000000000 --- a/docs/theme/partials/breadcrumb.hbs +++ /dev/null @@ -1,16 +0,0 @@ -{{#if parent}} - {{#with parent}}{{> breadcrumb}}{{/with}} -
  • - {{#if url}} - {{name}} - {{else}} - {{name}} - {{/if}} -
  • -{{else}} - {{#if url}} -
  • - Globals -
  • - {{/if}} -{{/if}} \ No newline at end of file diff --git a/docs/theme/partials/comment.hbs b/docs/theme/partials/comment.hbs deleted file mode 100644 index f790c3e1c..000000000 --- a/docs/theme/partials/comment.hbs +++ /dev/null @@ -1,22 +0,0 @@ -{{#with comment}} - {{#if hasVisibleComponent}} -
    - {{#if shortText}} -
    - {{#markdown}}{{{shortText}}}{{/markdown}} -
    - {{/if}} - {{#if text}} - {{#markdown}}{{{text}}}{{/markdown}} - {{/if}} - {{#if tags}} -
    - {{#each tags}} -
    {{tagName}}
    -
    {{#markdown}}{{{text}}}{{/markdown}}
    - {{/each}} -
    - {{/if}} -
    - {{/if}} -{{/with}} diff --git a/docs/theme/partials/footer.hbs b/docs/theme/partials/footer.hbs deleted file mode 100644 index 0aeb49da4..000000000 --- a/docs/theme/partials/footer.hbs +++ /dev/null @@ -1,10 +0,0 @@ -
    - Function symbol, f(📦) → 📦, where the argument and output are a box labeled 'glTF'. -

    - Made by Don McCurdy - - TypeDoc documentation - - Copyright 2023, MIT license -

    -
    diff --git a/docs/theme/partials/header.hbs b/docs/theme/partials/header.hbs deleted file mode 100644 index f8ec4e145..000000000 --- a/docs/theme/partials/header.hbs +++ /dev/null @@ -1,57 +0,0 @@ -
    -
    -
    -
    - -
    -
    - Options -
    - - -
    -
    - Menu -
    -
    -
    -
    - -
    diff --git a/docs/theme/partials/hierarchy.hbs b/docs/theme/partials/hierarchy.hbs deleted file mode 100644 index c8166bb2c..000000000 --- a/docs/theme/partials/hierarchy.hbs +++ /dev/null @@ -1,17 +0,0 @@ -
      - {{#each types}} -
    • - {{#if ../isTarget}} - {{this}} - {{else}} - {{#compact}}{{> type}}{{/compact}} - {{/if}} - - {{#if @last}} - {{#with ../next}} - {{> hierarchy}} - {{/with}} - {{/if}} -
    • - {{/each}} -
    diff --git a/docs/theme/partials/index.hbs b/docs/theme/partials/index.hbs deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/theme/partials/member.declaration.hbs b/docs/theme/partials/member.declaration.hbs deleted file mode 100644 index 7404f0e8d..000000000 --- a/docs/theme/partials/member.declaration.hbs +++ /dev/null @@ -1,36 +0,0 @@ -
    {{#compact}} - {{{wbr name}}} - {{#if typeParameters}} - < - {{#each typeParameters}} - {{#if @index}}, {{/if}} - {{name}} - {{/each}} - > - {{/if}} - {{#if isOptional}}?{{/if}}: {{#with type}}{{>type}}{{/with}} - {{#if defaultValue}} - -  =  - {{defaultValue}} - - {{/if}} -{{/compact}}
    - -{{> comment}} - -{{> member.sources}} - -{{#if typeParameters}} -

    Type parameters

    - {{> typeParameters}} -{{/if}} - -{{#if type.declaration}} -
    -

    Type declaration

    - {{#with type.declaration}} - {{> parameter}} - {{/with}} -
    -{{/if}} diff --git a/docs/theme/partials/member.getterSetter.hbs b/docs/theme/partials/member.getterSetter.hbs deleted file mode 100644 index 902ea4cc2..000000000 --- a/docs/theme/partials/member.getterSetter.hbs +++ /dev/null @@ -1,37 +0,0 @@ -
      - {{#if getSignature}} - {{#with getSignature}} -
    • {{#compact}} - get  - {{../name}} - {{> member.signature.title hideName=true }} - {{/compact}}
    • - {{/with}} - {{/if}} - {{#if setSignature}} - {{#with setSignature}} -
    • {{#compact}} - set  - {{../name}} - {{> member.signature.title hideName=true }} - {{/compact}}
    • - {{/with}} - {{/if}} -
    - -
      - {{#if getSignature}} - {{#with getSignature}} -
    • - {{> member.signature.body }} -
    • - {{/with}} - {{/if}} - {{#if setSignature}} - {{#with setSignature}} -
    • - {{> member.signature.body }} -
    • - {{/with}} - {{/if}} -
    diff --git a/docs/theme/partials/member.hbs b/docs/theme/partials/member.hbs deleted file mode 100644 index 067a0e72a..000000000 --- a/docs/theme/partials/member.hbs +++ /dev/null @@ -1,27 +0,0 @@ -
    - - - {{#if signatures}} - {{> member.signatures}} - {{else}}{{#if hasGetterOrSetter}} - {{> member.getterSetter}} - {{else}}{{#if tryGetTargetReflectionDeep}} - {{> member.reference}} - {{else}} - {{> member.declaration}} - {{/if}}{{/if}}{{/if}} - - {{#unless isContainer}} - {{#each groups}} - {{#each children}} - {{#unless hasOwnDocument}} - {{> member}} - {{/unless}} - {{/each}} - {{/each}} - {{/unless}} -
    - -{{#if isContainer}} - {{> members}} -{{/if}} diff --git a/docs/theme/partials/member.reference.hbs b/docs/theme/partials/member.reference.hbs deleted file mode 100644 index 13aa3cc32..000000000 --- a/docs/theme/partials/member.reference.hbs +++ /dev/null @@ -1,11 +0,0 @@ -{{#with tryGetTargetReflectionDeep}} - {{#ifCond ../name '===' name}} - Re-exports {{name}} - {{else if flags.isExported}} - Renames and re-exports {{name}} - {{else}} - Renames and exports {{name}} - {{/ifCond}} -{{else}} - Re-exports {{name}} -{{/with}} diff --git a/docs/theme/partials/member.signature.body.hbs b/docs/theme/partials/member.signature.body.hbs deleted file mode 100644 index 9637fe4f9..000000000 --- a/docs/theme/partials/member.signature.body.hbs +++ /dev/null @@ -1,10 +0,0 @@ -{{> comment}} - -{{#unless hideSources}} - {{> member.sources}} -{{/unless}} - -{{#if typeParameters}} -

    Type parameters

    - {{> typeParameters}} -{{/if}} diff --git a/docs/theme/partials/member.signature.title.hbs b/docs/theme/partials/member.signature.title.hbs deleted file mode 100644 index 035c4cae3..000000000 --- a/docs/theme/partials/member.signature.title.hbs +++ /dev/null @@ -1,32 +0,0 @@ -{{#unless hideName}}{{{wbr name}}}{{/unless}} -{{#if typeParameters}} - < - {{#each typeParameters}} - {{#if @index}}, {{/if}} - {{name}} - {{/each}} - > -{{/if}} -( -{{#each parameters}} - {{#if @index}}, {{/if}} - {{#if flags.isRest}}...{{/if}} - {{name}} - - {{#if flags.isOptional}}?{{/if}} - {{#if defaultValue}}?{{/if}} - :  - - {{#with type}}{{>type}}{{/with}} -{{/each}} -) -{{#if type}} - {{#if arrowStyle}} - => - {{else}} - : - {{/if}} - {{#with type}} - {{>type}} - {{/with}} -{{/if}} diff --git a/docs/theme/partials/member.signatures.hbs b/docs/theme/partials/member.signatures.hbs deleted file mode 100644 index b549f98a0..000000000 --- a/docs/theme/partials/member.signatures.hbs +++ /dev/null @@ -1,13 +0,0 @@ -
      - {{#each signatures}} -
    • {{#compact}}{{> member.signature.title }}{{/compact}}
    • - {{/each}} -
    - -
      - {{#each signatures}} -
    • - {{> member.signature.body }} -
    • - {{/each}} -
    diff --git a/docs/theme/partials/member.sources.hbs b/docs/theme/partials/member.sources.hbs deleted file mode 100644 index 9afae8008..000000000 --- a/docs/theme/partials/member.sources.hbs +++ /dev/null @@ -1,23 +0,0 @@ - diff --git a/docs/theme/partials/members.group.hbs b/docs/theme/partials/members.group.hbs deleted file mode 100644 index 18b82d6c8..000000000 --- a/docs/theme/partials/members.group.hbs +++ /dev/null @@ -1,21 +0,0 @@ -{{#if categories}} - {{#each categories}} -
    -

    {{#if title}}{{title}} {{/if}}{{../title}}

    - {{#each children}} - {{#unless hasOwnDocument}} - {{> member}} - {{/unless}} - {{/each}} -
    - {{/each}} -{{else}} -
    -

    {{title}}

    - {{#each children}} - {{#unless hasOwnDocument}} - {{> member}} - {{/unless}} - {{/each}} -
    -{{/if}} \ No newline at end of file diff --git a/docs/theme/partials/members.hbs b/docs/theme/partials/members.hbs deleted file mode 100644 index 5b415231d..000000000 --- a/docs/theme/partials/members.hbs +++ /dev/null @@ -1,20 +0,0 @@ -{{#if categories}} - {{#each categories}} - {{#unless allChildrenHaveOwnDocument}} -
    -

    {{title}}

    - {{#each children}} - {{#unless hasOwnDocument}} - {{> member}} - {{/unless}} - {{/each}} -
    - {{/unless}} - {{/each}} -{{else}} - {{#each groups}} - {{#unless allChildrenHaveOwnDocument}} - {{> members.group}} - {{/unless}} - {{/each}} -{{/if}} \ No newline at end of file diff --git a/docs/theme/partials/navigation.hbs b/docs/theme/partials/navigation.hbs deleted file mode 100644 index b1f91e4e9..000000000 --- a/docs/theme/partials/navigation.hbs +++ /dev/null @@ -1,26 +0,0 @@ -{{#if isVisible}} - {{#if isLabel}} -
  • - {{{wbr title}}} -
  • - {{else}} - {{#if isGlobals}} -
  • - {{{wbr title}}} -
  • - {{else}} -
  • - {{{wbr title}}} - {{#if isInPath}} - {{#if children}} -
      - {{#each children}} - {{> navigation}} - {{/each}} -
    - {{/if}} - {{/if}} -
  • - {{/if}} - {{/if}} -{{/if}} diff --git a/docs/theme/partials/parameter.hbs b/docs/theme/partials/parameter.hbs deleted file mode 100644 index b4e9ac6f9..000000000 --- a/docs/theme/partials/parameter.hbs +++ /dev/null @@ -1,83 +0,0 @@ -
      - {{#if signatures}} -
    • -
        - {{#each signatures}} -
      • {{#compact}} - {{> member.signature.title hideName=true }} - {{/compact}}
      • - {{/each}} -
      - -
        - {{#each signatures}} -
      • {{> member.signature.body hideSources=true }}
      • - {{/each}} -
      -
    • - {{/if}} - {{#if indexSignature}} -
    • -
      {{#compact}} - [ - {{#each indexSignature.parameters}} - {{#if flags.isRest}}...{{/if}}{{name}}: {{#with type}}{{>type}}{{/with}} - {{/each}} - ]:  - {{#with indexSignature.type}}{{>type}}{{/with}} - {{/compact}}
      - - {{#with indexSignature}} - {{> comment}} - {{/with}} - - {{#if indexSignature.type.declaration}} - {{#with indexSignature.type.declaration}} - {{> parameter}} - {{/with}} - {{/if}} -
    • - {{/if}} - {{#each children}} -
    • - {{#if signatures}} -
      {{#compact}} - {{#if flags.isRest}}...{{/if}} - {{{wbr name}}} - - {{#if isOptional}}?{{/if}} - :  - - function - {{/compact}}
      - - {{> member.signatures}} - {{else}} -
      {{#compact}} - {{#each flags}} - {{this}}  - {{/each}} - {{#if flags.isRest}}...{{/if}} - {{{wbr name}}} - - {{#if flags.isOptional}}?{{/if}} - :  - - {{#with type}}{{>type}}{{/with}} - {{/compact}}
      - - {{> comment}} - - {{#if children}} - {{> parameter}} - {{/if}} - - {{#if type.declaration}} - {{#with type.declaration}} - {{> parameter}} - {{/with}} - {{/if}} - {{/if}} -
    • - {{/each}} -
    diff --git a/docs/theme/partials/toc.hbs b/docs/theme/partials/toc.hbs deleted file mode 100644 index 56b1d7487..000000000 --- a/docs/theme/partials/toc.hbs +++ /dev/null @@ -1,10 +0,0 @@ -
  • - {{{wbr title}}} - {{#if children}} -
      - {{#each children}} - {{> toc}} - {{/each}} -
    - {{/if}} -
  • diff --git a/docs/theme/partials/toc.root.hbs b/docs/theme/partials/toc.root.hbs deleted file mode 100644 index cba0d6637..000000000 --- a/docs/theme/partials/toc.root.hbs +++ /dev/null @@ -1,18 +0,0 @@ -{{#if isInPath}} - -
      -{{/if}} -
    • - {{{wbr title}}} - {{#if children}} -
        - {{#each children}} - {{> toc}} - {{/each}} -
      - {{/if}} -
    • -{{#if isInPath}} -
    -
      -{{/if}} diff --git a/docs/theme/partials/type.hbs b/docs/theme/partials/type.hbs deleted file mode 100644 index e7a8034d4..000000000 --- a/docs/theme/partials/type.hbs +++ /dev/null @@ -1,215 +0,0 @@ -{{! Each type gets its own inline helper to determine how it is rendered. }} -{{! The name of the helper is the value of the 'type' property on the type.}} - -{{! -The type helper accepts an optional needsParens parameter that is checked -if an inner type may result in invalid output without them. For example: -1 | 2[] !== (1 | 2)[] -() => 1 | 2 !== (() => 1) | 2 -}} - -{{#*inline 'array'}} - {{#with elementType}} - {{> type needsParens=true}} - [] - {{/with}} -{{/inline}} - -{{#*inline 'conditional'}} - {{#if needsParens}} - ( - {{/if}} - {{#with checkType}} - {{> type needsParens=true}} - {{/with}} - extends - {{#with extendsType}} - {{> type}} - {{/with}} - ? - {{#with trueType}} - {{> type}} - {{/with}} - : - {{#with falseType}} - {{> type}} - {{/with}} - {{#if needsParens}} - ) - {{/if}} -{{/inline}} - -{{#*inline 'indexedAccess'}} - {{#with objectType}} - {{> type}} - {{/with}} - [ - {{#with indexType}} - {{> type}} - {{/with}} - ] -{{/inline}} - -{{#*inline 'inferred'}} - infer {{name}} -{{/inline}} - -{{#*inline 'intersection'}} - {{#if needsParens}} - ( - {{/if}} - {{#each types}} - {{#unless @first}} - & - {{/unless}} - {{> type}} - {{/each}} - {{#if needsParens}} - ) - {{/if}} -{{/inline}} - -{{#*inline 'intrinsic'}} - {{name}} -{{/inline}} - -{{#*inline 'literal'}} - {{stringify value}} -{{/inline}} - -{{#*inline 'predicate'}} - {{#if asserts}} - asserts - {{/if}} - {{name}} - {{#if targetType}} - is - {{#with targetType}} - {{>type}} - {{/with}} - {{/if}} -{{/inline}} - -{{#*inline 'query'}} - typeof - {{#with queryType}} - {{> type}} - {{/with}} -{{/inline}} - -{{#*inline 'reference'}} - {{#if reflection}} - - {{reflection.name}} - - {{else}} - {{name}} - {{/if}} - {{#if typeArguments}} - < - {{#each typeArguments}} - {{#unless @first}} - , - {{/unless}} - {{> type}} - {{/each}} - > - {{/if}} -{{/inline}} - -{{#*inline 'reflection'}} - {{#if declaration.children}} {{! object literal }} - { - {{#each declaration.children}} - {{#unless @first}} - ; - {{/unless}} - {{name}} - {{#if flags.isOptional }} - ?: - {{else}} - : - {{/if}} - {{#with type}} - {{> type}} - {{else}} - any - {{/with}} - {{/each}} - } - {{else if declaration.signatures}} - {{#if (lookup declaration.signatures 1) }} {{! more than one signature}} - { - {{#each declaration.signatures}} - {{> member.signature.title hideName=true}} - {{#unless @last}} - ; - {{/unless}} - {{/each}} - } - {{else}} - {{#if needsParens}} - ( - {{/if}} - {{#with (lookup declaration.signatures '0') }} - {{> member.signature.title hideName=true arrowStyle=true}} - {{/with}} - {{#if needsParens}} - ) - {{/if}} - {{/if}} - {{else}} - {} - {{/if}} -{{/inline}} - -{{#*inline 'stringLiteral'}} - "{{value}}" -{{/inline}} - -{{#*inline 'tuple'}} - [ - {{#each elements}} - {{#unless @first}} - , - {{/unless}} - {{> type}} - {{/each}} - ] -{{/inline}} - -{{#*inline 'typeOperator'}} - {{operator}} - {{#with target}} - {{> type}} - {{/with}} -{{/inline}} - -{{#*inline 'typeParameter'}} - {{name}} -{{/inline}} - -{{#*inline 'union'}} - {{#if needsParens}} - ( - {{/if}} - {{#each types}} - {{#unless @first}} - | - {{/unless}} - {{> type needsParens=true}} - {{/each}} - {{#if needsParens}} - ) - {{/if}} -{{/inline}} - -{{#*inline 'unknown'}} - {{name}} -{{/inline}} - -{{#if this}} - {{> (lookup . 'type') }} -{{else}} - void -{{/if}} diff --git a/docs/theme/partials/typeAndParent.hbs b/docs/theme/partials/typeAndParent.hbs deleted file mode 100644 index 02b25f557..000000000 --- a/docs/theme/partials/typeAndParent.hbs +++ /dev/null @@ -1,42 +0,0 @@ -{{#compact}} - {{#if this}} - {{#if elementType}} - {{#with elementType}} - {{> typeAndParent}} - {{/with}} - [] - {{else}} - {{#if reflection}} - {{#ifSignature reflection}} - {{#if reflection.parent.parent.url}} - {{reflection.parent.parent.name}} - {{else}} - {{reflection.parent.parent.name}} - {{/if}} - . - {{#if reflection.parent.url}} - {{reflection.parent.name}} - {{else}} - {{reflection.parent.name}} - {{/if}} - {{else}} - {{#if reflection.parent.url}} - {{reflection.parent.name}} - {{else}} - {{reflection.parent.name}} - {{/if}} - . - {{#if reflection.url}} - {{reflection.name}} - {{else}} - {{reflection.name}} - {{/if}} - {{/ifSignature}} - {{else}} - {{this}} - {{/if}} - {{/if}} - {{else}} - void - {{/if}} -{{/compact}} \ No newline at end of file diff --git a/docs/theme/partials/typeParameters.hbs b/docs/theme/partials/typeParameters.hbs deleted file mode 100644 index a0adf8073..000000000 --- a/docs/theme/partials/typeParameters.hbs +++ /dev/null @@ -1,14 +0,0 @@ -
        - {{#each typeParameters}} -
      • -

        {{#compact}} - {{name}} - {{#if type}} - - {{#with type}}{{> type}}{{/with}} - {{/if}} - {{/compact}}

        - {{> comment}} -
      • - {{/each}} -
      diff --git a/docs/theme/templates/index.hbs b/docs/theme/templates/index.hbs deleted file mode 100644 index 70d288d24..000000000 --- a/docs/theme/templates/index.hbs +++ /dev/null @@ -1,16 +0,0 @@ -{{#with model}} - {{> comment}} -{{/with}} - -{{#if model.typeHierarchy}} -
      -

      Hierarchy

      - {{#with model.typeHierarchy}}{{> hierarchy}}{{/with}} -
      -{{/if}} - -{{#with model}} -
      - {{> index}} - {{> members}} -{{/with}} diff --git a/docs/tsconfig.json b/docs/tsconfig.json deleted file mode 100644 index 035245340..000000000 --- a/docs/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "../tsconfig.json", - // typedoc 0.21.2 does not build with 'nodenext' resolution. - "compilerOptions": { "moduleResolution": "node" } -} diff --git a/package.json b/package.json index 55f1c659c..785079709 100644 --- a/package.json +++ b/package.json @@ -20,11 +20,10 @@ "lint": "eslint \"packages/*/{src,test}/**/*.ts\"", "validate": "scripts/validate.js", "preversion": "yarn run test", - "version": "yarn clean:dist && lerna run dist && gltf-transform -h > docs/CLI_HELP.md && git add -u docs", - "postpublish": "git push && git push --tags && yarn run docs:deploy", - "docs": "typedoc packages/core/src/core.ts packages/extensions/src/extensions.ts packages/functions/src/index.ts docs/pages.ts --out docs/dist/ --name glTF-Transform --excludeInternal --excludeNotDocumented --theme docs/theme --media docs/media --readme docs/INDEX.md --includes docs --tsconfig docs/tsconfig.json", - "docs:watch": "concurrently \"yarn docs --watch\" \"vercel dev\"", - "docs:deploy": "yarn docs && vercel --prod" + "version": "yarn clean:dist && lerna run dist && yarn run docs:cli && git add -u docs", + "postpublish": "git push && git push --tags && yarn run docs:deploy --prod", + "docs:cli": "export CLI_HELP=\"$(gltf-transform -h)\" && perl -i -0pe 's/\\Q\\E.*\\Q\\E/\n\\`\\`\\`plaintext$ENV{'CLI_HELP'}\\n\\`\\`\\`\n/gmsi' packages/docs/src/lib/pages/cli.md", + "docs:deploy": "yarn dist && vercel" }, "devDependencies": { "@types/command-exists": "1.2.0", @@ -53,7 +52,6 @@ "source-map-support": "0.5.21", "suppress-experimental-warnings": "1.1.17", "ts-node": "10.9.1", - "typedoc": "0.21.2", "typescript": "5.0.4" }, "ava": { diff --git a/packages/cli/README.md b/packages/cli/README.md index 303e4cbf3..b3ddd933a 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -7,7 +7,7 @@ Part of the glTF-Transform project. - GitHub: https://github.com/donmccurdy/glTF-Transform - Project Documentation: https://gltf-transform.donmccurdy.com/ -- CLI Documentation: https://gltf-transform.donmccurdy.com/cli.html +- CLI Documentation: https://gltf-transform.donmccurdy.com/cli ## Quickstart @@ -57,11 +57,11 @@ gltf-transform uastc input.glb output1.glb \ gltf-transform etc1s output1.glb output2.glb --quality 255 --verbose ``` -... [and much more](https://gltf-transform.donmccurdy.com/cli.html). +... [and much more](https://gltf-transform.donmccurdy.com/cli). ## Credits -See [*Credits*](https://gltf-transform.donmccurdy.com/credits.html). +See [*Credits*](https://gltf-transform.donmccurdy.com/credits). ## License diff --git a/packages/core/README.md b/packages/core/README.md index 2e0f129dd..7dc5dbeb5 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -9,76 +9,9 @@ Part of the glTF-Transform project. - GitHub: https://github.com/donmccurdy/glTF-Transform - Documentation: https://gltf-transform.donmccurdy.com/ -## Quickstart - -Install the scripting packages: - -```bash -npm install --save @gltf-transform/core @gltf-transform/extensions @gltf-transform/functions -``` - -Read and write glTF scenes with platform I/O utilities [WebIO](https://gltf-transform.donmccurdy.com/classes/core.webio.html), [NodeIO](https://gltf-transform.donmccurdy.com/classes/core.nodeio.html), or [DenoIO](https://gltf-transform.donmccurdy.com/classes/core.denoio.html): - -```typescript -import { Document, NodeIO } from '@gltf-transform/core'; -import { KHRONOS_EXTENSIONS } from '@gltf-transform/extensions'; -import draco3d from 'draco3dgltf'; - -// Configure I/O. -const io = new NodeIO() - .registerExtensions(KHRONOS_EXTENSIONS) - .registerDependencies({ - 'draco3d.decoder': await draco3d.createDecoderModule(), // Optional. - 'draco3d.encoder': await draco3d.createEncoderModule(), // Optional. - }); - -// Read from URL. -const document = await io.read('path/to/model.glb'); - -// Write to byte array (Uint8Array). -const glb = await io.writeBinary(document); -``` - -To perform changes to an existing glTF [Document](https://gltf-transform.donmccurdy.com/classes/core.document.html), import off-the-shelf scripts from the [Functions](https://gltf-transform.donmccurdy.com/functions.html) package, or write your own using API classes like [Material](https://gltf-transform.donmccurdy.com/classes/core.material.html), [Primitive](https://gltf-transform.donmccurdy.com/classes/core.primitive.html), and [Texture](https://gltf-transform.donmccurdy.com/classes/core.texture.html). - -```typescript -import { resample, prune, dedup, draco, textureCompress } from '@gltf-transform/functions'; -import * as sharp from 'sharp'; // Node.js only. - -await document.transform( - // Losslessly resample animation frames. - resample(), - // Remove unused nodes, textures, or other data. - prune(), - // Remove duplicate vertex or texture data, if any. - dedup(), - // Compress mesh geometry with Draco. - draco(), - // Convert textures to WebP (Requires glTF Transform v3 and Node.js). - textureCompress({ - encoder: sharp, - targetFormat: 'webp', - resize: [1024, 2024], - }), - // Custom transform. - backfaceCulling({cull: true}), -); - -// Custom transform: enable/disable backface culling. -function backfaceCulling(options) { - return (document) => { - for (const material of document.getRoot().listMaterials()) { - material.setDoubleSided(!options.cull); - } - }; -} -``` - -To learn how glTF-Transform works, and the architecture of the scripting API, start with [Concepts](https://gltf-transform.donmccurdy.com/concepts.html). To try out the scripting API without installing anything, visit [gltf.report/](https://gltf.report/), load a glTF model, and open the *Script* tab. - ## Credits -See [*Credits*](https://gltf-transform.donmccurdy.com/credits.html). +See [*Credits*](https://gltf-transform.donmccurdy.com/credits). ## License diff --git a/packages/core/src/document.ts b/packages/core/src/document.ts index afe99df16..317195e4e 100644 --- a/packages/core/src/document.ts +++ b/packages/core/src/document.ts @@ -28,8 +28,6 @@ export interface TransformContext { export type Transform = (doc: Document, context?: TransformContext) => void; /** - * # Document - * * *Wraps a glTF asset and its resources for easier modification.* * * Documents manage glTF assets and the relationships among dependencies. The document wrapper diff --git a/packages/core/src/extension.ts b/packages/core/src/extension.ts index bdae66b3e..533ab3546 100644 --- a/packages/core/src/extension.ts +++ b/packages/core/src/extension.ts @@ -5,8 +5,6 @@ import type { ReaderContext, WriterContext } from './io/index.js'; import { ExtensionProperty } from './properties/index.js'; /** - * # Extension - * * *Base class for all Extensions.* * * Extensions enhance a glTF {@link Document} with additional features and schema, beyond the core diff --git a/packages/core/src/io/deno-io.ts b/packages/core/src/io/deno-io.ts index 27379c9a9..ae24355ae 100644 --- a/packages/core/src/io/deno-io.ts +++ b/packages/core/src/io/deno-io.ts @@ -6,8 +6,6 @@ interface Path { } /** - * # DenoIO - * * *I/O service for [Deno](https://deno.land/).* * * The most common use of the I/O service is to read/write a {@link Document} with a given path. diff --git a/packages/core/src/io/node-io.ts b/packages/core/src/io/node-io.ts index d5034b88d..c8203b389 100644 --- a/packages/core/src/io/node-io.ts +++ b/packages/core/src/io/node-io.ts @@ -5,8 +5,6 @@ import { PlatformIO } from './platform-io.js'; import { HTTPUtils } from '../utils/index.js'; /** - * # NodeIO - * * *I/O service for Node.js.* * * The most common use of the I/O service is to read/write a {@link Document} with a given path. @@ -32,7 +30,7 @@ import { HTTPUtils } from '../utils/index.js'; * * By default, NodeIO can only read/write paths on disk. To enable HTTP requests, provide a Fetch * API implementation (such as [`node-fetch`](https://www.npmjs.com/package/node-fetch)) and enable - * {@link setAllowHTTP}. HTTP requests may optionally be configured with + * {@link NodeIO.setAllowHTTP setAllowHTTP}. HTTP requests may optionally be configured with * [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/fetch#parameters) parameters. * * ```typescript @@ -57,7 +55,7 @@ export class NodeIO extends PlatformIO { /** * Constructs a new NodeIO service. Instances are reusable. By default, only NodeIO can only * read/write paths on disk. To enable HTTP requests, provide a Fetch API implementation and - * enable {@link setAllowHTTP}. + * enable {@link NodeIO.setAllowHTTP setAllowHTTP}. * * @param fetch Implementation of Fetch API. * @param fetchConfig Configuration object for Fetch API. diff --git a/packages/core/src/io/platform-io.ts b/packages/core/src/io/platform-io.ts index 4d4b5daf4..396aaaa26 100644 --- a/packages/core/src/io/platform-io.ts +++ b/packages/core/src/io/platform-io.ts @@ -15,8 +15,6 @@ enum ChunkType { type PublicWriterOptions = Partial>; /** - * # PlatformIO - * * *Abstract I/O service.* * * The most common use of the I/O service is to read/write a {@link Document} with a given path. diff --git a/packages/core/src/io/reader-context.ts b/packages/core/src/io/reader-context.ts index 4dc3657d0..dcbeb61ce 100644 --- a/packages/core/src/io/reader-context.ts +++ b/packages/core/src/io/reader-context.ts @@ -16,7 +16,7 @@ import type { GLTF } from '../types/gltf.js'; /** * Model class providing glTF-Transform objects representing each definition in the glTF file, used - * by a {@link Writer} and its {@link Extension} implementations. Indices of all properties will be + * by a {@link GLTFReader} and its {@link Extension} implementations. Indices of all properties will be * consistent with the glTF file. * * @hidden diff --git a/packages/core/src/io/web-io.ts b/packages/core/src/io/web-io.ts index 1898176f9..3baa59acf 100644 --- a/packages/core/src/io/web-io.ts +++ b/packages/core/src/io/web-io.ts @@ -2,8 +2,6 @@ import { PlatformIO } from './platform-io.js'; import { HTTPUtils } from '../utils/index.js'; /** - * # WebIO - * * *I/O service for Web.* * * The most common use of the I/O service is to read/write a {@link Document} with a given path. diff --git a/packages/core/src/io/writer-context.ts b/packages/core/src/io/writer-context.ts index 856e9b86f..fd01173ae 100644 --- a/packages/core/src/io/writer-context.ts +++ b/packages/core/src/io/writer-context.ts @@ -27,7 +27,7 @@ enum BufferViewTarget { } /** - * Model class providing writing state to a {@link Writer} and its {@link Extension} + * Model class providing writing state to a {@link GLTFWriter} and its {@link Extension} * implementations. * * @hidden diff --git a/packages/core/src/io/writer.ts b/packages/core/src/io/writer.ts index c0dc94989..cd52c98a2 100644 --- a/packages/core/src/io/writer.ts +++ b/packages/core/src/io/writer.ts @@ -28,7 +28,10 @@ export interface WriterOptions { extensions?: (typeof Extension)[]; } -/** @internal */ +/** + * @internal + * @hidden + */ export class GLTFWriter { public static write(doc: Document, options: Required): JSONDocument { const root = doc.getRoot(); diff --git a/packages/core/src/json-document.ts b/packages/core/src/json-document.ts index c99b93f59..9515d36ec 100644 --- a/packages/core/src/json-document.ts +++ b/packages/core/src/json-document.ts @@ -1,8 +1,6 @@ import type { GLTF } from './types/gltf.js'; /** - * # JSONDocument - * * *Raw glTF asset, with its JSON and binary resources.* * * A JSONDocument is a plain object containing the raw JSON of a glTF file, and any binary or image diff --git a/packages/core/src/properties/accessor.ts b/packages/core/src/properties/accessor.ts index d8b777aad..689866ba2 100644 --- a/packages/core/src/properties/accessor.ts +++ b/packages/core/src/properties/accessor.ts @@ -15,8 +15,6 @@ interface IAccessor extends IExtensibleProperty { } /** - * # Accessor - * * *Accessors store lists of numeric, vector, or matrix elements in a typed array.* * * All large data for {@link Mesh}, {@link Skin}, and {@link Animation} properties is stored in @@ -25,15 +23,15 @@ interface IAccessor extends IExtensibleProperty { * * *Elements* are the logical divisions of the data into useful types: `"SCALAR"`, `"VEC2"`, * `"VEC3"`, `"VEC4"`, `"MAT3"`, or `"MAT4"`. The element type can be determined with the - * {@link getType}() method, and the number of elements in the accessor determine its - * {@link getCount}(). The number of components in an element — e.g. 9 for `"MAT3"` — are its - * {@link getElementSize}(). See {@link Accessor.Type}. + * {@link Accessor.getType getType}() method, and the number of elements in the accessor determine its + * {@link Accessor.getCount getCount}(). The number of components in an element — e.g. 9 for `"MAT3"` — are its + * {@link Accessor.getElementSize getElementSize}(). See {@link Accessor.Type}. * * *Components* are the numeric values within an element — e.g. `.x` and `.y` for `"VEC2"`. Various * component types are available: `BYTE`, `UNSIGNED_BYTE`, `SHORT`, `UNSIGNED_SHORT`, * `UNSIGNED_INT`, and `FLOAT`. The component type can be determined with the - * {@link getComponentType} method, and the number of bytes in each component determine its - * {@link getComponentSize}. See {@link Accessor.ComponentType}. + * {@link Accessor.getComponentType getComponentType} method, and the number of bytes in each component determine its + * {@link Accessor.getComponentSize getComponentSize}. See {@link Accessor.ComponentType}. * * Usage: * @@ -51,10 +49,10 @@ interface IAccessor extends IExtensibleProperty { * accessor.setElement(0, [10, 20, 30]); * ``` * - * Data access through the {@link getElement} and {@link setElement} methods reads or overwrites - * the content of the underlying typed array. These methods use element arrays intended to be - * compatible with the [gl-matrix](https://github.com/toji/gl-matrix) library, or with the - * `toArray`/`fromArray` methods of libraries like three.js and babylon.js. + * Data access through the {@link Accessor.getElement getElement} and {@link Accessor.setElement setElement} + * methods reads or overwrites the content of the underlying typed array. These methods use + * element arrays intended to be compatible with the [gl-matrix](https://github.com/toji/gl-matrix) + * library, or with the `toArray`/`fromArray` methods of libraries like three.js and babylon.js. * * Each Accessor must be assigned to a {@link Buffer}, which determines where the accessor's data * is stored in the final file. Assigning Accessors to different Buffers allows the data to be @@ -316,7 +314,7 @@ export class Accessor extends ExtensibleProperty { /** * Number of components in each element of the accessor. For example, the element size of a * `VEC2` accessor is 2. This value is determined automatically based on array length and - * accessor type, specified with {@link setType}(). + * accessor type, specified with {@link Accessor.setType setType()}. */ public getElementSize(): number { return Accessor.getElementSize(this.get('type')); diff --git a/packages/core/src/properties/animation-channel.ts b/packages/core/src/properties/animation-channel.ts index 3ef72d7e1..31f242dd7 100644 --- a/packages/core/src/properties/animation-channel.ts +++ b/packages/core/src/properties/animation-channel.ts @@ -11,8 +11,6 @@ interface IAnimationChannel extends IExtensibleProperty { } /** - * # AnimationChannel - * * *A target-path pair within a larger {@link Animation}, which refers to an * {@link AnimationSampler} storing the keyframe data for that pair.* * @@ -38,6 +36,8 @@ interface IAnimationChannel extends IExtensibleProperty { * * Reference * - [glTF → Animations](https://github.com/KhronosGroup/gltf/blob/main/specification/2.0/README.md#animations) + * + * @category Properties */ export class AnimationChannel extends ExtensibleProperty { public declare propertyType: PropertyType.ANIMATION_CHANNEL; diff --git a/packages/core/src/properties/animation-sampler.ts b/packages/core/src/properties/animation-sampler.ts index aa9f2e04e..251a4f78e 100644 --- a/packages/core/src/properties/animation-sampler.ts +++ b/packages/core/src/properties/animation-sampler.ts @@ -10,8 +10,6 @@ interface IAnimationSampler extends IExtensibleProperty { } /** - * # AnimationSampler - * * *Reusable collection of keyframes affecting particular property of an object.* * * Each AnimationSampler refers to an input and an output {@link Accessor}. Input contains times @@ -49,6 +47,8 @@ interface IAnimationSampler extends IExtensibleProperty { * * Reference * - [glTF → Animations](https://github.com/KhronosGroup/gltf/blob/main/specification/2.0/README.md#animations) + * + * @category Properties */ export class AnimationSampler extends ExtensibleProperty { public declare propertyType: PropertyType.ANIMATION_SAMPLER; diff --git a/packages/core/src/properties/animation.ts b/packages/core/src/properties/animation.ts index c72437ea8..666248b81 100644 --- a/packages/core/src/properties/animation.ts +++ b/packages/core/src/properties/animation.ts @@ -9,8 +9,6 @@ interface IAnimation extends IExtensibleProperty { } /** - * # Animation - * * *Reusable collections of {@link AnimationChannel}s, together representing a discrete animation * clip.* * @@ -43,6 +41,8 @@ interface IAnimation extends IExtensibleProperty { * * Reference * - [glTF → Animations](https://github.com/KhronosGroup/gltf/blob/main/specification/2.0/README.md#animations) + * + * @category Properties */ export class Animation extends ExtensibleProperty { public declare propertyType: PropertyType.ANIMATION; diff --git a/packages/core/src/properties/buffer.ts b/packages/core/src/properties/buffer.ts index f184d8d6a..57081d755 100644 --- a/packages/core/src/properties/buffer.ts +++ b/packages/core/src/properties/buffer.ts @@ -6,8 +6,6 @@ interface IBuffer extends IExtensibleProperty { } /** - * # Buffer - * * *Buffers are low-level storage units for binary data.* * * glTF 2.0 has three concepts relevant to binary storage: accessors, buffer views, and buffers. diff --git a/packages/core/src/properties/camera.ts b/packages/core/src/properties/camera.ts index cb180b6f4..ebed381e0 100644 --- a/packages/core/src/properties/camera.ts +++ b/packages/core/src/properties/camera.ts @@ -13,8 +13,6 @@ interface ICamera extends IExtensibleProperty { } /** - * # Camera - * * *Cameras are perspectives through which the {@link Scene} may be viewed.* * * Projection can be perspective or orthographic. Cameras are contained in nodes and thus can be diff --git a/packages/core/src/properties/extensible-property.ts b/packages/core/src/properties/extensible-property.ts index e9ad95bb4..7fc60d788 100644 --- a/packages/core/src/properties/extensible-property.ts +++ b/packages/core/src/properties/extensible-property.ts @@ -7,8 +7,6 @@ export interface IExtensibleProperty extends IProperty { } /** - * # ExtensibleProperty - * * *A {@link Property} that can have {@link ExtensionProperty} instances attached.* * * Most properties are extensible. See the {@link Extension} documentation for information about diff --git a/packages/core/src/properties/extension-property.ts b/packages/core/src/properties/extension-property.ts index 5b510df83..7a23fba2e 100644 --- a/packages/core/src/properties/extension-property.ts +++ b/packages/core/src/properties/extension-property.ts @@ -2,8 +2,6 @@ import type { ExtensibleProperty } from './extensible-property.js'; import { Property, IProperty } from './property.js'; /** - * # ExtensionProperty - * * *Base class for all {@link Property} types that can be attached by an {@link Extension}.* * * After an {@link Extension} is attached to a glTF {@link Document}, the Extension may be used to @@ -16,6 +14,8 @@ import { Property, IProperty } from './property.js'; * * Reference: * - [glTF → Extensions](https://github.com/KhronosGroup/gltf/blob/main/specification/2.0/README.md#specifying-extensions) + * + * @category Properties */ export abstract class ExtensionProperty extends Property { public static EXTENSION_NAME: string; diff --git a/packages/core/src/properties/material.ts b/packages/core/src/properties/material.ts index 218c55627..85d45f981 100644 --- a/packages/core/src/properties/material.ts +++ b/packages/core/src/properties/material.ts @@ -30,8 +30,6 @@ interface IMaterial extends IExtensibleProperty { } /** - * # Material - * * *Materials describe a surface's appearance and response to light.* * * Each {@link Primitive} within a {@link Mesh} may be assigned a single Material. The number of @@ -173,7 +171,7 @@ export class Material extends ExtensibleProperty { return this.get('alphaMode'); } - /** Sets the mode of the material's alpha channels. See {@link getAlphaMode} for details. */ + /** Sets the mode of the material's alpha channels. See {@link Material.getAlphaMode getAlphaMode} for details. */ public setAlphaMode(alphaMode: GLTF.MaterialAlphaMode): this { return this.set('alphaMode', alphaMode); } @@ -192,25 +190,31 @@ export class Material extends ExtensibleProperty { * Base color. */ - /** Base color / albedo factor; Linear-sRGB components. See {@link getBaseColorTexture}. */ + /** + * Base color / albedo factor; Linear-sRGB components. + * See {@link Material.getBaseColorTexture getBaseColorTexture}. + */ public getBaseColorFactor(): vec4 { return this.get('baseColorFactor'); } - /** Base color / albedo factor; Linear-sRGB components. See {@link getBaseColorTexture}. */ + /** + * Base color / albedo factor; Linear-sRGB components. + * See {@link Material.getBaseColorTexture getBaseColorTexture}. + */ public setBaseColorFactor(baseColorFactor: vec4): this { return this.set('baseColorFactor', baseColorFactor); } /** - * Base color / albedo; sRGB hexadecimal color. See {@link getBaseColorTexture}. + * Base color / albedo; sRGB hexadecimal color. See {@link Material.getBaseColorTexture getBaseColorTexture}. */ public getBaseColorHex(): number { return ColorUtils.factorToHex(this.get('baseColorFactor')); } /** - * Base color / albedo; sRGB hexadecimal color. See {@link getBaseColorTexture}. + * Base color / albedo; sRGB hexadecimal color. See {@link Material.getBaseColorTexture getBaseColorTexture}. */ public setBaseColorHex(hex: number): this { const factor = this.get('baseColorFactor').slice() as vec4; @@ -222,7 +226,7 @@ export class Material extends ExtensibleProperty { * light would be a linear combination (multiplication) of its vertex colors, base color * factor, and base color texture. Lighting, and reflections in metallic or smooth surfaces, * also effect the final color. The alpha (`.a`) channel of base color factors and textures - * will have varying effects, based on the setting of {@link getAlphaMode}. + * will have varying effects, based on the setting of {@link Material.getAlphaMode getAlphaMode}. * * Reference: * - [glTF → material.pbrMetallicRoughness.baseColorFactor](https://github.com/KhronosGroup/gltf/blob/main/specification/2.0/README.md#pbrmetallicroughnessbasecolorfactor) @@ -239,7 +243,7 @@ export class Material extends ExtensibleProperty { return this.getRef('baseColorTexture') ? this.getRef('baseColorTextureInfo') : null; } - /** Sets base color / albedo texture. See {@link getBaseColorTexture}. */ + /** Sets base color / albedo texture. See {@link Material.getBaseColorTexture getBaseColorTexture}. */ public setBaseColorTexture(texture: Texture | null): this { return this.setRef('baseColorTexture', texture, { channels: R | G | B | A, isColor: true }); } @@ -248,22 +252,22 @@ export class Material extends ExtensibleProperty { * Emissive. */ - /** Emissive color; Linear-sRGB components. See {@link getEmissiveTexture}. */ + /** Emissive color; Linear-sRGB components. See {@link Material.getEmissiveTexture getEmissiveTexture}. */ public getEmissiveFactor(): vec3 { return this.get('emissiveFactor'); } - /** Emissive color; Linear-sRGB components. See {@link getEmissiveTexture}. */ + /** Emissive color; Linear-sRGB components. See {@link Material.getEmissiveTexture getEmissiveTexture}. */ public setEmissiveFactor(emissiveFactor: vec3): this { return this.set('emissiveFactor', emissiveFactor); } - /** Emissive; sRGB hexadecimal color. See {@link getBaseColorTexture}. */ + /** Emissive; sRGB hexadecimal color. See {@link Material.getBaseColorTexture getBaseColorTexture}. */ public getEmissiveHex(): number { return ColorUtils.factorToHex(this.get('emissiveFactor')); } - /** Emissive; sRGB hexadecimal color. See {@link getEmissiveTexture}. */ + /** Emissive; sRGB hexadecimal color. See {@link Material.getEmissiveTexture getEmissiveTexture}. */ public setEmissiveHex(hex: number): this { const factor = this.get('emissiveFactor').slice() as vec3; return this.set('emissiveFactor', ColorUtils.hexToFactor(hex, factor)); @@ -290,7 +294,7 @@ export class Material extends ExtensibleProperty { return this.getRef('emissiveTexture') ? this.getRef('emissiveTextureInfo') : null; } - /** Sets emissive texture. See {@link getEmissiveTexture}. */ + /** Sets emissive texture. See {@link Material.getEmissiveTexture getEmissiveTexture}. */ public setEmissiveTexture(texture: Texture | null): this { return this.setRef('emissiveTexture', texture, { channels: R | G | B, isColor: true }); } @@ -332,7 +336,7 @@ export class Material extends ExtensibleProperty { return this.getRef('normalTexture') ? this.getRef('normalTextureInfo') : null; } - /** Sets normal (surface detail) texture. See {@link getNormalTexture}. */ + /** Sets normal (surface detail) texture. See {@link Material.getNormalTexture getNormalTexture}. */ public setNormalTexture(texture: Texture | null): this { return this.setRef('normalTexture', texture, { channels: R | G | B }); } @@ -375,7 +379,7 @@ export class Material extends ExtensibleProperty { return this.getRef('occlusionTexture') ? this.getRef('occlusionTextureInfo') : null; } - /** Sets (ambient) occlusion texture. See {@link getOcclusionTexture}. */ + /** Sets (ambient) occlusion texture. See {@link Material.getOcclusionTexture getOcclusionTexture}. */ public setOcclusionTexture(texture: Texture | null): this { return this.setRef('occlusionTexture', texture, { channels: R }); } @@ -386,7 +390,7 @@ export class Material extends ExtensibleProperty { /** * Roughness factor; linear multiplier. Affects roughness channel of - * `metallicRoughnessTexture`. See {@link getMetallicRoughnessTexture}. + * `metallicRoughnessTexture`. See {@link Material.getMetallicRoughnessTexture getMetallicRoughnessTexture}. */ public getRoughnessFactor(): number { return this.get('roughnessFactor'); @@ -394,7 +398,7 @@ export class Material extends ExtensibleProperty { /** * Sets roughness factor; linear multiplier. Affects roughness channel of - * `metallicRoughnessTexture`. See {@link getMetallicRoughnessTexture}. + * `metallicRoughnessTexture`. See {@link Material.getMetallicRoughnessTexture getMetallicRoughnessTexture}. */ public setRoughnessFactor(factor: number): this { return this.set('roughnessFactor', factor); @@ -402,7 +406,7 @@ export class Material extends ExtensibleProperty { /** * Metallic factor; linear multiplier. Affects roughness channel of - * `metallicRoughnessTexture`. See {@link getMetallicRoughnessTexture}. + * `metallicRoughnessTexture`. See {@link Material.getMetallicRoughnessTexture getMetallicRoughnessTexture}. */ public getMetallicFactor(): number { return this.get('metallicFactor'); @@ -410,7 +414,7 @@ export class Material extends ExtensibleProperty { /** * Sets metallic factor; linear multiplier. Affects roughness channel of - * `metallicRoughnessTexture`. See {@link getMetallicRoughnessTexture}. + * `metallicRoughnessTexture`. See {@link Material.getMetallicRoughnessTexture getMetallicRoughnessTexture}. */ public setMetallicFactor(factor: number): this { return this.set('metallicFactor', factor); @@ -437,7 +441,10 @@ export class Material extends ExtensibleProperty { return this.getRef('metallicRoughnessTexture') ? this.getRef('metallicRoughnessTextureInfo') : null; } - /** Sets metallic/roughness texture. See {@link getMetallicRoughnessTexture}. */ + /** + * Sets metallic/roughness texture. + * See {@link Material.getMetallicRoughnessTexture getMetallicRoughnessTexture}. + */ public setMetallicRoughnessTexture(texture: Texture | null): this { return this.setRef('metallicRoughnessTexture', texture, { channels: G | B }); } diff --git a/packages/core/src/properties/mesh.ts b/packages/core/src/properties/mesh.ts index 941ba4183..c0afb08f6 100644 --- a/packages/core/src/properties/mesh.ts +++ b/packages/core/src/properties/mesh.ts @@ -8,8 +8,6 @@ interface IMesh extends IExtensibleProperty { } /** - * # Mesh - * * *Meshes define reusable geometry (triangles, lines, or points) and are instantiated by * {@link Node}s.* * diff --git a/packages/core/src/properties/node.ts b/packages/core/src/properties/node.ts index 61de5a687..c17fd46be 100644 --- a/packages/core/src/properties/node.ts +++ b/packages/core/src/properties/node.ts @@ -20,8 +20,6 @@ interface INode extends IExtensibleProperty { } /** - * # Node - * * *Nodes are the objects that comprise a {@link Scene}.* * * Each node may have one or more children, and a transform (position, rotation, and scale) that diff --git a/packages/core/src/properties/primitive-target.ts b/packages/core/src/properties/primitive-target.ts index 62c0a876b..406c0479f 100644 --- a/packages/core/src/properties/primitive-target.ts +++ b/packages/core/src/properties/primitive-target.ts @@ -8,8 +8,6 @@ interface IPrimitiveTarget extends IExtensibleProperty { } /** - * # PrimitiveTarget - * * *Morph target or shape key used to deform one {@link Primitive} in a {@link Mesh}.* * * A PrimitiveTarget contains a `POSITION` attribute (and optionally `NORMAL` and `TANGENT`) that @@ -21,6 +19,8 @@ interface IPrimitiveTarget extends IExtensibleProperty { * * Reference: * - [glTF → Morph Targets](https://github.com/KhronosGroup/gltf/blob/main/specification/2.0/README.md#morph-targets) + * + * @category Properties */ export class PrimitiveTarget extends Property { public declare propertyType: PropertyType.PRIMITIVE_TARGET; diff --git a/packages/core/src/properties/primitive.ts b/packages/core/src/properties/primitive.ts index 74d7db3e4..a3678c74d 100644 --- a/packages/core/src/properties/primitive.ts +++ b/packages/core/src/properties/primitive.ts @@ -14,8 +14,6 @@ interface IPrimitive extends IExtensibleProperty { } /** - * # Primitive - * * *Primitives are individual GPU draw calls comprising a {@link Mesh}.* * * Meshes typically have only a single Primitive, although various cases may require more. Each diff --git a/packages/core/src/properties/property.ts b/packages/core/src/properties/property.ts index 190061a29..a692b264e 100644 --- a/packages/core/src/properties/property.ts +++ b/packages/core/src/properties/property.ts @@ -10,7 +10,15 @@ import { isRefMap, LiteralKeys, } from 'property-graph'; -import { equalsArray, equalsObject, equalsRef, equalsRefList, equalsRefMap, isArray, isPlainObject } from '../utils/index.js'; +import { + equalsArray, + equalsObject, + equalsRef, + equalsRefList, + equalsRefMap, + isArray, + isPlainObject, +} from '../utils/index.js'; import type { Ref, RefMap, UnknownRef } from '../utils/index.js'; export type PropertyResolver = (p: T) => T; @@ -24,14 +32,12 @@ export interface IProperty { const EMPTY_SET = new Set(); /** - * # Property - * * *Properties represent distinct resources in a glTF asset, referenced by other properties.* * * For example, each material and texture is a property, with material properties holding * references to the textures. All properties are created with factory methods on the * {@link Document} in which they should be constructed. Properties are destroyed by calling - * {@link dispose}(). + * {@link Property.dispose}(). * * Usage: * diff --git a/packages/core/src/properties/root.ts b/packages/core/src/properties/root.ts index 022fea0b7..1d4f0e5b7 100644 --- a/packages/core/src/properties/root.ts +++ b/packages/core/src/properties/root.ts @@ -40,8 +40,6 @@ interface IRoot extends IExtensibleProperty { } /** - * # Root - * * *Root property of a glTF asset.* * * Any properties to be exported with a particular asset must be referenced (directly or diff --git a/packages/core/src/properties/scene.ts b/packages/core/src/properties/scene.ts index 71fe74421..28555e64e 100644 --- a/packages/core/src/properties/scene.ts +++ b/packages/core/src/properties/scene.ts @@ -8,8 +8,6 @@ interface IScene extends IExtensibleProperty { } /** - * # Scene - * * *Scenes represent a set of visual objects to render.* * * Typically a glTF file contains only a single Scene, although more are allowed and useful in some diff --git a/packages/core/src/properties/skin.ts b/packages/core/src/properties/skin.ts index 8b3bd3940..64dcf3c72 100644 --- a/packages/core/src/properties/skin.ts +++ b/packages/core/src/properties/skin.ts @@ -10,8 +10,6 @@ interface ISkin extends IExtensibleProperty { } /** - * # Skin - * * *Collection of {@link Node} joints and inverse bind matrices used with skinned {@link Mesh} * instances.* * diff --git a/packages/core/src/properties/texture-info.ts b/packages/core/src/properties/texture-info.ts index 3496f4ab9..2de234b74 100644 --- a/packages/core/src/properties/texture-info.ts +++ b/packages/core/src/properties/texture-info.ts @@ -13,8 +13,6 @@ interface ITextureInfo extends IExtensibleProperty { } /** - * # TextureInfo - * * *Settings associated with a particular use of a {@link Texture}.* * * Different materials may reuse the same texture but with different texture coordinates, diff --git a/packages/core/src/properties/texture.ts b/packages/core/src/properties/texture.ts index e55182115..3d14510d9 100644 --- a/packages/core/src/properties/texture.ts +++ b/packages/core/src/properties/texture.ts @@ -9,13 +9,11 @@ interface ITexture extends IExtensibleProperty { } /** - * # Texture - * * *Texture, or images, referenced by {@link Material} properties.* * * Textures in glTF-Transform are a combination of glTF's `texture` and `image` properties, and * should be unique within a document, such that no other texture contains the same - * {@link getImage}() data. Where duplicates may already exist, the `dedup({textures: true})` + * {@link Texture.getImage getImage()} data. Where duplicates may already exist, the `dedup({textures: true})` * transform can remove them. A {@link Document} with N texture properties will be exported to a * glTF file with N `image` properties, and the minimum number of `texture` properties necessary * for the materials that use it. diff --git a/packages/core/src/utils/buffer-utils.ts b/packages/core/src/utils/buffer-utils.ts index 429cf3c9b..cd012c1a9 100644 --- a/packages/core/src/utils/buffer-utils.ts +++ b/packages/core/src/utils/buffer-utils.ts @@ -1,8 +1,6 @@ import type { TypedArray } from '../constants.js'; /** - * # BufferUtils - * * *Common utilities for working with Uint8Array and Buffer objects.* * * @category Utilities diff --git a/packages/core/src/utils/color-utils.ts b/packages/core/src/utils/color-utils.ts index 603801c6d..ea134d477 100644 --- a/packages/core/src/utils/color-utils.ts +++ b/packages/core/src/utils/color-utils.ts @@ -1,8 +1,6 @@ import type { vec3, vec4 } from '../constants.js'; /** - * # ColorUtils - * * *Common utilities for working with colors in vec3, vec4, or hexadecimal form.* * * Provides methods to convert linear components (vec3, vec4) to sRGB hex values. All colors in diff --git a/packages/core/src/utils/file-utils.ts b/packages/core/src/utils/file-utils.ts index 11fc1504f..1123da0e8 100644 --- a/packages/core/src/utils/file-utils.ts +++ b/packages/core/src/utils/file-utils.ts @@ -1,8 +1,6 @@ import { ImageUtils } from './image-utils.js'; /** - * # FileUtils - * * *Utility class for working with file systems and URI paths.* * * @category Utilities diff --git a/packages/core/src/utils/http-utils.ts b/packages/core/src/utils/http-utils.ts index 2b0d6bfd1..1489fce43 100644 --- a/packages/core/src/utils/http-utils.ts +++ b/packages/core/src/utils/http-utils.ts @@ -5,8 +5,6 @@ import { FileUtils } from './file-utils.js'; const NULL_DOMAIN = 'https://null.example'; /** - * # HTTPUtils - * * *Utility class for working with URLs.* * * @category Utilities diff --git a/packages/core/src/utils/image-utils.ts b/packages/core/src/utils/image-utils.ts index 3cead3de1..5868833fa 100644 --- a/packages/core/src/utils/image-utils.ts +++ b/packages/core/src/utils/image-utils.ts @@ -83,8 +83,6 @@ class PNGImageUtils implements ImageUtilsFormat { } /** - * # ImageUtils - * * *Common utilities for working with image data.* * * @category Utilities diff --git a/packages/core/src/utils/logger.ts b/packages/core/src/utils/logger.ts index f687924d5..0d4b2a2e7 100644 --- a/packages/core/src/utils/logger.ts +++ b/packages/core/src/utils/logger.ts @@ -24,8 +24,6 @@ export interface ILogger { } /** - * # Logger - * * *Logger utility class.* * * @category Utilities diff --git a/packages/docs/.eslintignore b/packages/docs/.eslintignore new file mode 100644 index 000000000..38972655f --- /dev/null +++ b/packages/docs/.eslintignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/packages/docs/.eslintrc.cjs b/packages/docs/.eslintrc.cjs new file mode 100644 index 000000000..ebc19589f --- /dev/null +++ b/packages/docs/.eslintrc.cjs @@ -0,0 +1,30 @@ +module.exports = { + root: true, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:svelte/recommended', + 'prettier' + ], + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint'], + parserOptions: { + sourceType: 'module', + ecmaVersion: 2020, + extraFileExtensions: ['.svelte'] + }, + env: { + browser: true, + es2017: true, + node: true + }, + overrides: [ + { + files: ['*.svelte'], + parser: 'svelte-eslint-parser', + parserOptions: { + parser: '@typescript-eslint/parser' + } + } + ] +}; diff --git a/packages/docs/.gitignore b/packages/docs/.gitignore new file mode 100644 index 000000000..6635cf554 --- /dev/null +++ b/packages/docs/.gitignore @@ -0,0 +1,10 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/packages/docs/.npmrc b/packages/docs/.npmrc new file mode 100644 index 000000000..0c05da457 --- /dev/null +++ b/packages/docs/.npmrc @@ -0,0 +1,2 @@ +engine-strict=true +resolution-mode=highest diff --git a/packages/docs/.prettierignore b/packages/docs/.prettierignore new file mode 100644 index 000000000..38972655f --- /dev/null +++ b/packages/docs/.prettierignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/packages/docs/.prettierrc b/packages/docs/.prettierrc new file mode 100644 index 000000000..a77fddea9 --- /dev/null +++ b/packages/docs/.prettierrc @@ -0,0 +1,9 @@ +{ + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100, + "plugins": ["prettier-plugin-svelte"], + "pluginSearchDirs": ["."], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] +} diff --git a/packages/docs/README.md b/packages/docs/README.md new file mode 100644 index 000000000..5c91169b0 --- /dev/null +++ b/packages/docs/README.md @@ -0,0 +1,38 @@ +# create-svelte + +Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npm create svelte@latest + +# create a new project in my-app +npm create svelte@latest my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. diff --git a/packages/docs/package.json b/packages/docs/package.json new file mode 100644 index 000000000..752f22f64 --- /dev/null +++ b/packages/docs/package.json @@ -0,0 +1,31 @@ +{ + "name": "@gltf-transform/docs", + "version": "0.0.1", + "private": true, + "scripts": { + "watch": "vite dev", + "dist": "vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "prettier --plugin-search-dir . --check . && eslint .", + "format": "prettier --plugin-search-dir . --write ." + }, + "devDependencies": { + "@greendoc/parse": "^0.1.5", + "@greendoc/svelte": "^0.1.5", + "@sveltejs/adapter-static": "^2.0.2", + "@sveltejs/kit": "^1.5.0", + "eslint-plugin-svelte": "^2.26.0", + "he": "^1.2.0", + "highlight.js": "^11.8.0", + "mdsvex": "^0.10.6", + "prettier-plugin-svelte": "^2.8.1", + "svelte": "^3.54.0", + "svelte-check": "^3.0.1", + "ts-morph": "^18.0.0", + "tslib": "^2.4.1", + "vite": "^4.3.0" + }, + "type": "module" +} diff --git a/packages/docs/src/app.d.ts b/packages/docs/src/app.d.ts new file mode 100644 index 000000000..f59b884c5 --- /dev/null +++ b/packages/docs/src/app.d.ts @@ -0,0 +1,12 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface Platform {} + } +} + +export {}; diff --git a/packages/docs/src/app.html b/packages/docs/src/app.html new file mode 100644 index 000000000..97b0c9500 --- /dev/null +++ b/packages/docs/src/app.html @@ -0,0 +1,18 @@ + + + + + + + + %sveltekit.head% + + + +
      %sveltekit.body%
      + + diff --git a/packages/docs/src/lib/pages/cli-configuration.md b/packages/docs/src/lib/pages/cli-configuration.md new file mode 100644 index 000000000..e6fe776dd --- /dev/null +++ b/packages/docs/src/lib/pages/cli-configuration.md @@ -0,0 +1,66 @@ +--- +title: Command-line configuration | glTF Transform +snippet: Configuration installs custom commands or extensions in the CLI. Extensions will be available to any commands executed… +--- + +# Command-line configuration + +> _**EXPERIMENTAL:** Support for command-line configuration is experimental, and may have +> breaking changes in non-major releases. Please provide feedback on GitHub if this feature +> could be helpful to you._ + +Configuration installs custom commands or extensions in the CLI. Extensions will be +available to any commands executed by the CLI, allowing operations on glTF files that would +otherwise be unsupported — unofficial compression, texture formats, materials, and other features. +Extensions must be implemented using the [Extension](/extensions) API. + +Usage: + +```text +gltf-transform --help --config path/to/gltf-transform.config.mjs +``` + +Example configuration: + +```javascript +// gltf-transform.config.mjs +import { Extension } from '@gltf-transform/core'; +import { ALL_EXTENSIONS } from '@gltf-transform/extensions'; + +// NOTE: The minimal implementation below does not read or write any data +// associated with the extension. See the Extension documentation and +// official implementations in the /examples package for full usage. +class GizmoExtension extends Extension { + static EXTENSION_NAME = 'ACME_gizmo'; + extensionName = 'ACME_gizmo'; + write(context) { return this; } + read(context) { return this; } +} + +export default { + extensions: [...ALL_EXTENSIONS, GizmoExtension], + onProgramReady: ({ program, io, Session }) => { + // Usage: https://caporal.io/ + program + .command('custom', 'Custom command') + .help('Lorem ipsum dolorem...') + .argument('', 'Path to read glTF 2.0 (.glb, .gltf) model') + .argument('', 'Path to write output') + .action(({ args, options, logger }) => + Session.create(io, logger, args.input, args.output).transform(customTransform(options)) + ); + }, +}; + +// Custom transform example; clears materials. +function customTransform(options) { + return async (document) => { + for (const material of document.getRoot().listMaterials()) { + material.dispose(); + } + }; +} +``` + +Writing extensions in TypeScript is strongly encouraged. However, `gltf-transform.config.mjs` must be +written in, or compiled to, plain JavaScript. diff --git a/packages/docs/src/lib/pages/cli.md b/packages/docs/src/lib/pages/cli.md new file mode 100644 index 000000000..c9c30e426 --- /dev/null +++ b/packages/docs/src/lib/pages/cli.md @@ -0,0 +1,121 @@ +--- +title: Command-line quickstart | glTF Transform +snippet: For easier access to its library, glTF-Transform offers a command-line interface (CLI). The CLI supports many of the features of the… +--- + +# Command-line quickstart + +For easier access to its library, glTF-Transform offers a command-line interface (CLI). The +CLI supports many of the features of the `@gltf-transform/functions` package, and some general +tools for inspecting and packing/unpacking glTF or GLB files. + +Installation: + +```bash +npm install --global @gltf-transform/cli +``` + +To run the most common optimizations in one easy step, use the `optimize` command: + +```bash +gltf-transform optimize input.glb output.glb --compress draco --texture-compress webp +``` + +Defaults in the `optimize` command may not be ideal for all scenes. Some of +its features can be configured (`optimize -h`), or more advanced users +may wish to inspect their scenes then pick and choose optimizations. + +```bash +gltf-transform inspect input.glb +``` + +The report printed by the `inspect` command should identify validation issues, +and whether the scene is generally geometry-heavy, texture-heavy, +has too many draw calls, etc. Apply individual commands below to deal with any of +these issues as needed. + +Full command list: + + +```plaintext + gltf-transform 3.2.1 — Command-line interface (CLI) for the glTF Transform SDK. + + USAGE + + ▸ gltf-transform [ARGUMENTS...] [OPTIONS...] + + + COMMANDS — Type 'gltf-transform help ' to get some help about a command + + + + 🔎 INSPECT ────────────────────────────────────────── + inspect Inspect contents of the model + validate Validate model against the glTF spec + + + 📦 PACKAGE ────────────────────────────────────────── + copy Copy model with minimal changes + optimize ✨ Optimize model by all available methods + merge Merge two or more models into one + partition Partition binary data into separate .bin files + dedup Deduplicate accessors and textures + prune Remove unreferenced properties from the file + gzip Compress model with lossless gzip + xmp Add or modify XMP metadata + + + 🌍 SCENE ──────────────────────────────────────────── + center Center the scene at the origin, or above/below it + instance Create GPU instances from shared mesh references + flatten ✨ Flatten scene graph + join ✨ Join meshes and reduce draw calls + + + 🕋 GEOMETRY ───────────────────────────────────────── + draco Compress geometry with Draco + meshopt Compress geometry and animation with Meshopt + quantize Quantize geometry, reducing precision and memory + dequantize Dequantize geometry + weld Index geometry and optionally merge similar vertices + unweld De-index geometry, disconnecting any shared vertices + tangents Generate MikkTSpace vertex tangents + reorder Optimize vertex data for locality of reference + simplify Simplify mesh, reducing number of vertices + + + 🎨 MATERIAL ───────────────────────────────────────── + metalrough Convert materials from spec/gloss to metal/rough + unlit Convert materials from metal/rough to unlit + + + 🖼 TEXTURE ────────────────────────────────────────── + resize Resize PNG or JPEG textures + etc1s KTX + Basis ETC1S texture compression + uastc KTX + Basis UASTC texture compression + ktxfix Fixes common issues in KTX texture metadata + avif ✨ AVIF texture compression + webp WebP texture compression + png PNG texture compression + jpeg JPEG texture compression + + + ⏯ ANIMATION ──────────────────────────────────────── + resample Resample animations, losslessly deduplicating keyframes + sequence Animate node visibilities as a flipboard sequence + sparse ✨ Reduces storage for zero-filled arrays + + GLOBAL OPTIONS + + -h, --help Display global help or command-related help. + -V, --version Display version. + -v, --verbose Verbose mode: will also output debug messages. + --allow-http Allows reads from HTTP requests. + boolean + --vertex-layout Vertex buffer layout preset. + one of "interleaved","separate", default: "interleaved" + --config Installs custom commands or extensions. (EXPERIMENTAL) +``` + + +The commandline also supports configuration to install custom commands or support for custom glTF extensions. See [configuration](/cli-configuration) for details. diff --git a/docs/CONCEPTS.md b/packages/docs/src/lib/pages/concepts.md similarity index 66% rename from docs/CONCEPTS.md rename to packages/docs/src/lib/pages/concepts.md index 856301d96..b7126c148 100644 --- a/docs/CONCEPTS.md +++ b/packages/docs/src/lib/pages/concepts.md @@ -1,9 +1,14 @@ +--- +title: Concepts | glTF Transform +snippet: The glTF format defines high-level abstractions for concepts like scenes, nodes, meshes, and all other properties of a runtime 3D model… +--- + # Concepts The glTF format defines high-level abstractions for concepts like scenes, nodes, meshes, and all other properties of a runtime 3D model. The [glTF 2.0 Quick Reference Guide](https://www.khronos.org/files/gltf20-reference-guide.pdf), provides a solid introduction to those concepts. A simplified overview (skipping some orthogonal details of animation, cameras, and lights) is presented here, for reference in writing scripts using the glTF-Transform APIs.
      -glTF concept diagram +glTF concept diagram
      Figure: Concept diagram showing most of the glTF 2.0 format. Greyed-out properties (Sampler, Image, BufferView) are managed automatically (or nearly so) by the glTF-Transform API, and are not discussed in detail here.
      @@ -13,7 +18,7 @@ The glTF format defines high-level abstractions for concepts like scenes, nodes, In a runtime-ready glTF file, any properties available for use (and reuse) are listed in top-level JSON arrays at the root of the asset: -```js +```javascript { "scenes": [...], "meshes": [...], @@ -25,7 +30,7 @@ In a runtime-ready glTF file, any properties available for use (and reuse) are l Throughout the asset, those properties are referenced by indices into the top-level array. For example, a node defined as `{"mesh": 0}` will instantiate the mesh found at index `0` of the top-level `meshes` array. These indexed arrays are useful for efficient loading, which is the primary goal of glTF 2.0, but are cumbersome for direct editing — which, to be fair, is generally the domain of interchange formats like COLLADA or USD. -In glTF-Transform, the conceptual model of these {@link Root}-level arrays is preserved, but all index-based pointers are managed by references and an internal graph structure, instead. For example, to list each {@link Mesh} available for reuse in a glTF document: +In glTF-Transform, the conceptual model of these [Root](/modules/core/classes/Root)-level arrays is preserved, but all index-based pointers are managed by references and an internal graph structure, instead. For example, to list each [Mesh](/modules/core/classes/Mesh) available for reuse in a glTF document: ```typescript doc.getRoot() @@ -55,15 +60,15 @@ doc.listScenes()[0] mesh.listParents(); // → [cogNode, ...] ``` -The same approach applies to any property that can hold references or be referenced within a glTF file. As the {@link Mesh} above can identify each {@link Node} that holds a reference to it, low-level properties like {@link Texture} and {@link Accessor} instances can similarly look up the locations in which they are used. A directed graph structure maintains these references automatically. +The same approach applies to any property that can hold references or be referenced within a glTF file. As the [Mesh](/modules/core/classes/Mesh) above can identify each [Node](/modules/core/classes/Node) that holds a reference to it, low-level properties like [Texture](/modules/core/classes/Texture) and [Accessor](/modules/core/classes/Accessor) instances can similarly look up the locations in which they are used. A directed graph structure maintains these references automatically. -To remove all uses of a {@link Property}, simply `.detach()` or `dispose()` the object. Properties that are detached but not disposed are still exported, although — without any references to them from a {@link Scene} — you may need to write client logic to load them individually. +To remove all uses of a [Property](/modules/core/classes/Property), simply `.detach()` or `dispose()` the object. Properties that are detached but not disposed are still exported, although — without any references to them from a [Scene](/modules/core/classes/Scene) — you may need to write client logic to load them individually. ## Binary data Similarly, the binary data in an exported glTF file is laid out tightly packed for GPU upload, with the JSON metadata of the file providing byte offsets and byte lengths for each vertex attribute or animation sampler. These byte offsets are described by Accessors and BufferViews. While this structure is ideal for efficient loading, it would normally present a challenge for directly editing a file: adding a single vertex to a Mesh might shift byte offsets used throughout the Buffer, requiring updates to any other Mesh or Animation referencing that Buffer. -glTF-Transform maintains the concept of an {@link Accessor}, but simplifies its use: the typed array is isolated during editing, and can be resized or deleted without affecting other data. Each Accessor has a reference to a {@link Buffer}, but that reference is only used to tell the exporter where to put the Accessor's data, when the model is finally written. Assigning Accessors to specific Buffers allows the data to be grouped for lazy-loading — if all Accessors for a specific Mesh are stored in an independent Buffer, the client does not need to fetch that Buffer until it needs to load that particular Mesh. +glTF-Transform maintains the concept of an [Accessor](/modules/core/classes/Accessor), but simplifies its use: the typed array is isolated during editing, and can be resized or deleted without affecting other data. Each Accessor has a reference to a [Buffer](/modules/core/classes/Buffer), but that reference is only used to tell the exporter where to put the Accessor's data, when the model is finally written. Assigning Accessors to specific Buffers allows the data to be grouped for lazy-loading — if all Accessors for a specific Mesh are stored in an independent Buffer, the client does not need to fetch that Buffer until it needs to load that particular Mesh. > **NOTICE:** The concept of a BufferView is not visible in glTF-Transform: the library creates an interleaved BufferView for each mesh at export, and automatically generates additional BufferViews for any remaining data. @@ -93,4 +98,4 @@ accessor.setArray(nextArray); Most internal glTF properies are handled automatically when changing the array. In some cases (when setting uint- or int-typed arrays) you will need to pay attention to the glTF schema's allowed component types, and normalize your data where necessary. The KHR_mesh_quantization extension provides additional flexibility on data types. -For a deeper look at the glTF-Transform API, refer to the documentation for the {@link Document} class and its associated {@link Property} types. +For a deeper look at the glTF-Transform API, refer to the documentation for the [Document](/modules/core/classes/Document) class and its associated [Property](/modules/core/classes/Property) types. diff --git a/docs/CONTRIBUTING.md b/packages/docs/src/lib/pages/contributing.md similarity index 93% rename from docs/CONTRIBUTING.md rename to packages/docs/src/lib/pages/contributing.md index fd2856df4..d71223b8e 100644 --- a/docs/CONTRIBUTING.md +++ b/packages/docs/src/lib/pages/contributing.md @@ -1,3 +1,8 @@ +--- +title: Contributing | glTF Transform +snippet: This project consists of multiple NPM packages, managed in one repository with Lerna. All code, excluding Node.js-based tests, is written in TypeScript… +--- + # Contributing This project consists of multiple NPM packages, managed in one repository with @@ -72,7 +77,7 @@ Certain JSDoc tags have notable meanings within this project: glTF-Transform supports the complete glTF 2.0 core format, and some extensions. Most official Khronos Group extensions (those prefixed with `KHR_`) will be implemented on a rolling basis — pull requests are very welcome. Multi-vendor extensions (prefixed with `EXT_`) may be included on a case-by-case basis. Single-vendor extensions (any other prefix) are unlikely to be included directly in the project, although glTF-Transform does provide APIs to build and maintain implementations for those extensions externally. -Suggestions and PRs for new [Functions](/functions.html) are also generally welcome. +Suggestions and PRs for new [Functions](/functions) are also generally welcome. ### Releasing diff --git a/docs/CREDITS.md b/packages/docs/src/lib/pages/credits.md similarity index 71% rename from docs/CREDITS.md rename to packages/docs/src/lib/pages/credits.md index 385f4b2eb..4b4834495 100644 --- a/docs/CREDITS.md +++ b/packages/docs/src/lib/pages/credits.md @@ -1,3 +1,8 @@ +--- +title: Credits | glTF Transform +snippet: The glTF-Transform project is developed and maintained by Don McCurdy. Thanks to the individuals and companies who have supported the project through GitHub Sponsors or by… +--- + # Credits diff --git a/docs/EXTENSIONS.md b/packages/docs/src/lib/pages/extensions.md similarity index 61% rename from docs/EXTENSIONS.md rename to packages/docs/src/lib/pages/extensions.md index cf1bf2274..15b05cd1f 100644 --- a/docs/EXTENSIONS.md +++ b/packages/docs/src/lib/pages/extensions.md @@ -1,51 +1,55 @@ +--- +title: Extensions | glTF Transform +snippet: Extensions enhance a glTF Document with additional features and schema, beyond the core glTF specification. For example, extensions to… +--- + + # Extensions -Extensions enhance a glTF {@link Document} with additional features and schema, beyond the core -glTF specification. For example, extensions to {@link Material} properties might include additional +Extensions enhance a glTF [Document](/modules/core/classes/Document) with additional features and schema, beyond the core +glTF specification. For example, extensions to [Material](/modules/core/classes/Material) properties might include additional textures or scalar properties affecting the Material's appearance in a specific way. Common extensions may be imported from the `@gltf-transform/extensions` package, or custom -extensions may be created by extending the {@link Extension} base class. No extensions are included +extensions may be created by extending the [Extension](/modules/core/classes/Extension) base class. No extensions are included in the default `@gltf-transform/core` package, in order to (1) minimize the code size, and (2) ensure that any extension can be implemented externally. Because extensions rely on the same underlying graph structure as the core specification, -references to {@link Texture}, {@link Accessor}, and other resources will be managed +references to [Texture](/modules/core/classes/Texture), [Accessor](/modules/core/classes/Accessor), and other resources will be managed automatically, even by scripts or transforms written without prior knowledge of the extension. -An extension is added to a Document by calling {@link Document.createExtension} with the +An extension is added to a Document by calling [Document.createExtension](/modules/core/classes/Document#createExtension) with the extension constructor. The extension object may then be used to construct -{@link ExtensionProperty} instances, which are attached to properties throughout the Document +[ExtensionProperty](/modules/core/classes/ExtensionProperty) instances, which are attached to properties throughout the Document as prescribed by the extension itself. ## Khronos Extensions -> _**NOTICE:** Khronos extensions are widely supported and recommended for general use._ - -- {@link KHRDracoMeshCompression KHR_draco_mesh_compression} -- {@link KHRLightsPunctual KHR_lights_punctual} -- {@link KHRMaterialsAnisotropy KHR_materials_anisotropy} *(🧪 experimental)* -- {@link KHRMaterialsClearcoat KHR_materials_clearcoat} -- {@link KHRMaterialsEmissiveStrength KHR_materials_emissive_strength} -- {@link KHRMaterialsIOR KHR_materials_ior} -- {@link KHRMaterialsIridescence KHR_materials_iridescence} -- {@link KHRMaterialsPBRSpecularGlossiness KHR_materials_pbrSpecularGlossiness} -- {@link KHRMaterialsSheen KHR_materials_sheen} -- {@link KHRMaterialsSpecular KHR_materials_specular} -- {@link KHRMaterialsTransmission KHR_materials_transmission} -- {@link KHRMaterialsUnlit KHR_materials_unlit} -- {@link KHRMaterialsVariants KHR_materials_variants} -- {@link KHRMaterialsVolume KHR_materials_volume} -- {@link KHRMeshQuantization KHR_mesh_quantization} -- {@link KHRTextureBasisu KHR_texture_basisu} -- {@link KHRTextureTransform KHR_texture_transform} -- {@link KHRXMP KHR_xmp_json_ld} +- [KHR_draco_mesh_compression](/modules/extensions/classes/KHRDracoMeshCompression) +- [KHR_lights_punctual](/modules/extensions/classes/KHRLightsPunctual) +- [KHR_materials_anisotropy](/modules/extensions/classes/KHRMaterialsAnisotropy) *(🧪 experimental)* +- [KHR_materials_clearcoat](/modules/extensions/classes/KHRMaterialsClearcoat) +- [KHR_materials_emissive_strength](/modules/extensions/classes/KHRMaterialsEmissiveStrength) +- [KHR_materials_ior](/modules/extensions/classes/KHRMaterialsIOR) +- [KHR_materials_iridescence](/modules/extensions/classes/KHRMaterialsIridescence) +- [KHR_materials_pbrSpecularGlossiness](/modules/extensions/classes/KHRMaterialsPBRSpecularGlossiness) +- [KHR_materials_sheen](/modules/extensions/classes/KHRMaterialsSheen) +- [KHR_materials_specular](/modules/extensions/classes/KHRMaterialsSpecular) +- [KHR_materials_transmission](/modules/extensions/classes/KHRMaterialsTransmission) +- [KHR_materials_unlit](/modules/extensions/classes/KHRMaterialsUnlit) +- [KHR_materials_variants](/modules/extensions/classes/KHRMaterialsVariants) +- [KHR_materials_volume](/modules/extensions/classes/KHRMaterialsVolume) +- [KHR_mesh_quantization](/modules/extensions/classes/KHRMeshQuantization) +- [KHR_texture_basisu](/modules/extensions/classes/KHRTextureBasisu) +- [KHR_texture_transform](/modules/extensions/classes/KHRTextureTransform) +- [KHR_xmp_json_ld](/modules/extensions/classes/KHRXMP) ## Vendor Extensions -- {@link EXTTextureAVIF EXT_texture_avif} -- {@link EXTTextureWebP EXT_texture_webp} -- {@link EXTMeshGPUInstancing EXT_mesh_gpu_instancing} -- {@link EXTMeshoptCompression EXT_meshopt_compression} +- [EXT_texture_avif](/modules/extensions/classes/EXTTextureAVIF) +- [EXT_texture_webp](/modules/extensions/classes/EXTTextureWebP) +- [EXT_mesh_gpu_instancing](/modules/extensions/classes/EXTMeshGPUInstancing) +- [EXT_meshopt_compression](/modules/extensions/classes/EXTMeshoptCompression) ## Installation @@ -55,8 +59,8 @@ To use extensions, first install the `@gltf-transform/extensions` package: npm install --save @gltf-transform/extensions ``` -To open files containing an {@link Extension}, the Extension constructor must be registered with -the {@link PlatformIO} instance used to read the file. +To open files containing an [Extension](/modules/core/classes/Extension), the Extension constructor must be registered with +the [PlatformIO](/modules/core/classes/PlatformIO) instance used to read the file. ```typescript // Register all Khronos Group (KHR_) extensions. @@ -103,12 +107,13 @@ modifications to the core codebase. Any extension implemented correctly and regi instance may be read from a file, modified programmatically, and written back to a file. For implementation examples, see [packages/extensions](https://github.com/donmccurdy/glTF-Transform/tree/master/packages/extensions). -For further details on the general Extension API, see {@link Extension} and -{@link ExtensionProperty}. +For further details on the general Extension API, see [Extension](/modules/core/classes/Extension) and +[ExtensionProperty](/modules/core/classes/ExtensionProperty). Custom extensions can be registered +locally with the `@gltf-transform/cli` package using [custom CLI configuration](/cli-configuration). ### Writing a custom extension -Custom extensions must define a {@link Extension} subclass, optionally implementing read/write operations. By convention, the name of this class is an uppercase adaptation of the full extension name, e.g. `ACME_particle_emitter` → ParticleEmitter. Authors of custom extensions are encouraged to follow the Khronos [extension naming guidelines](https://github.com/KhronosGroup/glTF/tree/main/extensions#naming), and to [reserve a prefix](https://github.com/KhronosGroup/glTF/blob/main/extensions/Prefixes.md) if necessary. However, glTF-Transform's implementation does not depend on any particular naming rules for classes or extensions. +Custom extensions must define a [Extension](/modules/core/classes/Extension) subclass, optionally implementing read/write operations. By convention, the name of this class is an uppercase adaptation of the full extension name, e.g. `ACME_particle_emitter` → ParticleEmitter. Authors of custom extensions are encouraged to follow the Khronos [extension naming guidelines](https://github.com/KhronosGroup/glTF/tree/main/extensions#naming), and to [reserve a prefix](https://github.com/KhronosGroup/glTF/blob/main/extensions/Prefixes.md) if necessary. However, glTF-Transform's implementation does not depend on any particular naming rules for classes or extensions. ```javascript class ParticleEmitter extends Extension { @@ -134,7 +139,7 @@ class ParticleEmitter extends Extension { Both `read()` and `write()` must be implemented in order to support round-trip processing of glTF files relying on the extension; otherwise they can be left stubbed. Refer to the implementations of existing extensions, and to the [`ReaderContext`](https://github.com/donmccurdy/glTF-Transform/blob/main/packages/core/src/io/reader-context.ts) and [`WriterContext`](https://github.com/donmccurdy/glTF-Transform/blob/main/packages/core/src/io/writer-context.ts) structures, for examples implementing read/write operations in similar extensions. -By defining an Extension implementation, we've ensured that the `ACME_particle_emitter` extension will be added to `extensionsUsed` and (optionally) `extensionsRequired` in an output glTF file. Most extensions also define one or more properties within the file. To define those properties, we'll create subclasses of the {@link ExtensionProperty} class. These properties can be attached to other glTF properties like {@link Node} or {@link Material} instances, modifying their behavior. Alternatively, custom properties may be stored at the {@link Document} level, without being referenced by anything in the scene. +By defining an Extension implementation, we've ensured that the `ACME_particle_emitter` extension will be added to `extensionsUsed` and (optionally) `extensionsRequired` in an output glTF file. Most extensions also define one or more properties within the file. To define those properties, we'll create subclasses of the [ExtensionProperty](/modules/core/classes/ExtensionProperty) class. These properties can be attached to other glTF properties like [Node](/modules/core/classes/Node) or [Material](/modules/core/classes/Material) instances, modifying their behavior. Alternatively, custom properties may be stored at the [Document](/modules/core/classes/Document) level, without being referenced by anything in the scene. ```javascript class Emitter extends ExtensionProperty { @@ -207,4 +212,3 @@ const emitter = emitterExtension.createEmitter('MyEmitter'); node.setExtension('ACME_particle_emitter', emitter); ``` -> **NOTICE:** Custom extensions cannot currently be registered locally with the `@gltf-transform/cli` package. If you need this feature, please upvote and track [glTF-Transform#85](https://github.com/donmccurdy/glTF-Transform/issues/85). In the meantime, custom extensions must be used through glTF-Transform's programmatic APIs instead. diff --git a/packages/docs/src/lib/pages/functions.md b/packages/docs/src/lib/pages/functions.md new file mode 100644 index 000000000..b491193a2 --- /dev/null +++ b/packages/docs/src/lib/pages/functions.md @@ -0,0 +1,57 @@ +--- +title: Functions | glTF Transform +snippet: Common glTF modifications, written using the core API. Most of these functions are Transforms, applying a modification to the Document… +--- + +# Functions + +Common operations on glTF data are implemented by the `@gltf-transform/functions` module, and are organized in two categories: _Transforms_ and _Functions_. + +Installation: + +```shell +npm install --save @gltf-transform/functions +``` + +## Transforms + +_Transforms_ apply a modification to the [Document](/modules/core/classes/Document), and are applied with the +[Document.transform](/modules/core/classes/Document#transform) method. glTF Transform includes many expressive transforms already, and +others can be implemented easily using the same APIs. + +```typescript +import { NodeIO } from '@gltf-transform/core'; +import { KHRONOS_EXTENSIONS } from '@gltf-transform/extensions'; +import { weld, quantize, dedup } from '@gltf-transform/functions'; + +const io = new NodeIO().registerExtensions(KHRONOS_EXTENSIONS); +const document = await io.read('input.glb'); + +await document.transform( + weld(), + quantize(), + dedup(), + + // Custom transform. + backfaceCulling({cull: true}), +); + +// Custom transform: enable/disable backface culling. +function backfaceCulling(options) { + return (document) => { + for (const material of document.getRoot().listMaterials()) { + material.setDoubleSided(!options.cull); + } + }; +} + +await io.write('output.glb', document); +``` + +For a complete list of available transforms, see the navigation sidebar. + +## Functions + +Other functions, like [getBounds](/modules/functions/functions/getBounds) or [compressTexture](/modules/functions/functions/compressTexture), are utility functions for general-purpose use. When making changes narrowly to a specific Texture or Material, these offer more targeted alternatives Transforms affecting the entire Document. + +For a complete list of available functions, see the navigation sidebar. diff --git a/packages/docs/src/lib/server/model/index.ts b/packages/docs/src/lib/server/model/index.ts new file mode 100644 index 000000000..1bdec8272 --- /dev/null +++ b/packages/docs/src/lib/server/model/index.ts @@ -0,0 +1,46 @@ +import { Encoder, GD, Parser } from '@greendoc/parse'; +import { Project } from 'ts-morph'; +import he from 'he'; + +const BASE = new URL('../../../../../../', import.meta.url).pathname.replace(/\/$/, ''); + +const corePath = `${BASE}/packages/core/src/core.ts`; +const extensionsPath = `${BASE}/packages/extensions/src/extensions.ts`; +const functionsPath = `${BASE}/packages/functions/src/index.ts`; + +const project = new Project({ + compilerOptions: { + paths: { + '@gltf-transform/core': [corePath], + '@gltf-transform/extensions': [extensionsPath], + '@gltf-transform/functions': [functionsPath] + } + } +}); + +export const parser = new Parser(project) + .addModule({ name: '@gltf-transform/core', slug: 'core', entry: corePath }) + .addModule({ name: '@gltf-transform/extensions', slug: 'extensions', entry: extensionsPath }) + .addModule({ name: '@gltf-transform/functions', slug: 'functions', entry: functionsPath }) + .setRootPath(BASE) + .setBaseURL('https://github.com/donmccurdy/glTF-Transform/tree/main') + .init(); + +export const encoder = new Encoder(); + +export function getMetadata(item: GD.ApiClass | GD.ApiInterface | GD.ApiEnum | GD.ApiFunction): { + title: string; + snippet: string; +} { + return { + title: item.name + ' | glTF Transform', + snippet: item.comment ? getSnippet(item.comment) : '' + }; +} + +export function getSnippet(html: string): string { + const text = he.decode(html.replace(/(<([^>]+)>)/gi, '')); + const words = text.split(/\s+/); + if (words.length < 30) return text; + return words.slice(0, 30).join(' ') + '…'; +} diff --git a/packages/docs/src/routes/+layout.server.ts b/packages/docs/src/routes/+layout.server.ts new file mode 100644 index 000000000..0158ae950 --- /dev/null +++ b/packages/docs/src/routes/+layout.server.ts @@ -0,0 +1,160 @@ +import type { LayoutServerLoad } from './$types'; +import { parser } from '$lib/server/model'; +import type { Node } from 'ts-morph'; + +export const prerender = true; + +const coreExports = parser + .getModuleExports('@gltf-transform/core') + .map(createExport) + .sort((a: Export, b: Export) => (a.text > b.text ? 1 : -1)); +const extensionsExports = parser + .getModuleExports('@gltf-transform/extensions') + .map(createExport) + .sort((a: Export, b: Export) => (a.text > b.text ? 1 : -1)); +const functionsExports = parser + .getModuleExports('@gltf-transform/functions') + .map(createExport) + .sort((a: Export, b: Export) => (a.text > b.text ? 1 : -1)); + +interface Export { + text: string; + href: string; + kind: string; + category?: string; + external?: boolean; +} + +function createExport(item: Node): Export { + return { + text: parser.getName(item), + href: parser.getPath(item), + kind: item.getKindName(), + category: parser.getTag(item, 'category') || undefined + }; +} + +export const load: LayoutServerLoad = () => { + return { + metadata: { + title: 'glTF Transform', + snippet: '' + }, + navigation: { + sections: [ + { + title: 'Introduction', + items: [ + { text: 'Home ', href: '/' }, + { text: 'Concepts', href: '/concepts' }, + { text: 'Extensions', href: '/extensions' }, + { text: 'Functions', href: '/functions' } + ], + subsections: [] + }, + { + title: 'Resources', + items: [ + { text: 'Contributing ', href: '/contributing' }, + { text: 'Credits ', href: '/credits' }, + { + text: 'GitHub', + external: true, + href: 'https://github.com/donmccurdy/glTF-Transform' + }, + { + text: 'NPM', + external: true, + href: 'https://www.npmjs.com/search?q=%40gltf-transform' + }, + { + text: 'Discussions', + external: true, + href: 'https://github.com/donmccurdy/glTF-Transform/discussions' + }, + { + text: 'Changelog', + external: true, + href: 'https://github.com/donmccurdy/glTF-Transform/blob/main/CHANGELOG.md' + } + ], + subsections: [] + }, + { + title: '@gltf-transform/cli', + items: [], + subsections: [ + { + title: 'Command-line', + items: [ + { text: 'Quickstart', href: '/cli' }, + { text: 'Configuration ', href: '/cli-configuration' } + ] + } + ] + }, + { + title: '@gltf-transform/core', + items: [], + subsections: [ + { + title: 'Documents', + items: coreExports.filter(({ category }) => category === 'Documents') + }, + { + title: 'I/O', + items: coreExports.filter(({ category }) => category === 'I/O') + }, + { + title: 'Properties', + items: coreExports.filter(({ category }) => category === 'Properties') + }, + { + title: 'Utilities', + items: coreExports.filter(({ category }) => category === 'Utilities') + } + ] + }, + { + title: '@gltf-transform/extensions', + items: [], + subsections: [ + { + title: 'Khronos Extensions', + items: extensionsExports.filter( + ({ text, kind }) => + text.startsWith('KHR') && kind === 'ClassDeclaration' + ) + }, + { + title: 'Vendor Extensions', + items: extensionsExports.filter( + ({ text, kind }) => + text.startsWith('EXT') && kind === 'ClassDeclaration' + ) + } + ] + }, + { + title: '@gltf-transform/functions', + items: [], + subsections: [ + { + title: 'Transforms', + items: functionsExports.filter( + ({ category }) => category === 'Transforms' + ) + }, + { + title: 'Functions', + items: functionsExports.filter( + ({ category, kind }) => + category !== 'Transforms' && kind === 'FunctionDeclaration' + ) + } + ] + } + ] + } + }; +}; diff --git a/packages/docs/src/routes/+layout.svelte b/packages/docs/src/routes/+layout.svelte new file mode 100644 index 000000000..4bbed2d6d --- /dev/null +++ b/packages/docs/src/routes/+layout.svelte @@ -0,0 +1,142 @@ + + + + {$page.data.metadata.title} + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      + +
      + +
      +
      +
      +
      +
      + + +
      +
      + +
      + Function symbol, where the argument and output are a box labeled 'glTF'. +

      + Made by Don McCurdy + + Documented with greendoc + + © 2023 MIT License +

      +
      +
      +
      diff --git a/docs/INDEX.md b/packages/docs/src/routes/+page.md similarity index 76% rename from docs/INDEX.md rename to packages/docs/src/routes/+page.md index a2b13f9a8..3bd142159 100644 --- a/docs/INDEX.md +++ b/packages/docs/src/routes/+page.md @@ -15,9 +15,9 @@ glTF-Transform supports reading, editing, and writing 3D models in glTF 2.0 form Packages: - `@gltf-transform/core`: Core SDK, providing an expressive API to read, edit, and write glTF files. -- `@gltf-transform/extensions`: [Extensions](/extensions.html) (optional glTF features) for the Core SDK. -- `@gltf-transform/functions`: [Functions](/functions.html) for common glTF modifications, written using the core API. -- `@gltf-transform/cli`: [Command-line interface (CLI)](/cli.html) to apply functions to glTF files quickly or in batch. +- `@gltf-transform/extensions`: [Extensions](/extensions) (optional glTF features) for the Core SDK. +- `@gltf-transform/functions`: [Functions](/functions) for common glTF modifications, written using the core API. +- `@gltf-transform/cli`: [Command-line interface (CLI)](/cli) to apply functions to glTF files quickly or in batch. ## Scripting API @@ -27,7 +27,7 @@ Install the scripting packages: npm install --save @gltf-transform/core @gltf-transform/extensions @gltf-transform/functions ``` -Read and write glTF scenes with platform I/O utilities [WebIO](https://gltf-transform.donmccurdy.com/classes/core.webio.html), [NodeIO](https://gltf-transform.donmccurdy.com/classes/core.nodeio.html), or [DenoIO](https://gltf-transform.donmccurdy.com/classes/core.denoio.html): +Read and write glTF scenes with platform I/O utilities [WebIO](/modules/core/classes/WebIO), [NodeIO](/modules/core/classes/NodeIO), or [DenoIO](/modules/core/classes/DenoIO): ```typescript import { Document, NodeIO } from '@gltf-transform/core'; @@ -49,7 +49,7 @@ const document = await io.read('path/to/model.glb'); const glb = await io.writeBinary(document); ``` -To perform changes to an existing glTF [Document](https://gltf-transform.donmccurdy.com/classes/core.document.html), import off-the-shelf scripts from the [Functions](https://gltf-transform.donmccurdy.com/functions.html) package, or write your own using API classes like [Material](https://gltf-transform.donmccurdy.com/classes/core.material.html), [Primitive](https://gltf-transform.donmccurdy.com/classes/core.primitive.html), and [Texture](https://gltf-transform.donmccurdy.com/classes/core.texture.html). +To perform changes to an existing glTF [Document](/modules/core/classes/Document), import off-the-shelf scripts from the [Functions](/functions) package or write your own using API classes like [Material](/modules/core/classes/Material), [Primitive](/modules/core/classes/Primitive), and [Texture](/modules/core/classes/Texture). ```typescript import { resample, prune, dedup, draco, textureCompress } from '@gltf-transform/functions'; @@ -84,7 +84,7 @@ function backfaceCulling(options) { } ``` -To learn how glTF-Transform works, and the architecture of the scripting API, start with [Concepts](https://gltf-transform.donmccurdy.com/concepts.html). To try out the scripting API without installing anything, visit [gltf.report/](https://gltf.report/), load a glTF model, and open the *Script* tab. +To learn how glTF-Transform works, and the architecture of the scripting API, start with [Concepts](/concepts). To try out the scripting API without installing anything, visit [gltf.report/](https://gltf.report/), load a glTF model, and open the *Script* tab. ## Command-line API @@ -134,8 +134,5 @@ gltf-transform uastc input.glb output1.glb \ gltf-transform etc1s output1.glb output2.glb --quality 255 --verbose ``` -... [and much more](/cli.html). +... [and much more](/cli). -## Credits - -[[include:_CREDITS.md]] diff --git a/packages/docs/src/routes/+page.server.ts b/packages/docs/src/routes/+page.server.ts new file mode 100644 index 000000000..b900f2703 --- /dev/null +++ b/packages/docs/src/routes/+page.server.ts @@ -0,0 +1,8 @@ +import type { PageServerLoad } from './$types'; + +export const load: PageServerLoad = async () => ({ + metadata: { + title: 'glTF Transform', + snippet: 'glTF 2.0 SDK for JavaScript and TypeScript, on Web and Node.js.' + } +}); diff --git a/packages/docs/src/routes/[slug]/+page.server.ts b/packages/docs/src/routes/[slug]/+page.server.ts new file mode 100644 index 000000000..d7b8953b3 --- /dev/null +++ b/packages/docs/src/routes/[slug]/+page.server.ts @@ -0,0 +1,18 @@ +import { error } from '@sveltejs/kit'; + +export const load = async ({ params }) => { + let html = ''; + let metadata; + + try { + const page = await import(`../../lib/pages/${params.slug}.md`); + html = page.default.render().html; + metadata = page.metadata; + } catch (e) { + // + } + + if (!html) throw error(404, 'Not found'); + + return { html, metadata }; +}; diff --git a/packages/docs/src/routes/[slug]/+page.svelte b/packages/docs/src/routes/[slug]/+page.svelte new file mode 100644 index 000000000..e82d1ee1a --- /dev/null +++ b/packages/docs/src/routes/[slug]/+page.svelte @@ -0,0 +1,7 @@ + + +
      + {@html data.html} +
      diff --git a/packages/docs/src/routes/modules/[moduleSlug]/classes/[slug]/+page.server.ts b/packages/docs/src/routes/modules/[moduleSlug]/classes/[slug]/+page.server.ts new file mode 100644 index 000000000..2a2e1ee41 --- /dev/null +++ b/packages/docs/src/routes/modules/[moduleSlug]/classes/[slug]/+page.server.ts @@ -0,0 +1,18 @@ +import { error } from '@sveltejs/kit'; +import type { PageServerLoad } from './$types'; +import { parser, encoder, getMetadata } from '$lib/server/model'; +import type { GD } from '@greendoc/parse'; +import type { ClassDeclaration } from 'ts-morph'; + +export const load: PageServerLoad<{ export: GD.ApiClass }> = async ({ params }) => { + const slug = params.slug.replace(/\.html$/, ''); + const item = parser.getItemBySlug(slug) as ClassDeclaration; + const encodedItem = encoder.encodeItem(parser, item); + if (item && encodedItem) { + return { + metadata: getMetadata(encodedItem), + export: encodedItem + }; + } + throw error(404, 'Not found'); +}; diff --git a/packages/docs/src/routes/modules/[moduleSlug]/classes/[slug]/+page.svelte b/packages/docs/src/routes/modules/[moduleSlug]/classes/[slug]/+page.svelte new file mode 100644 index 000000000..7370b383f --- /dev/null +++ b/packages/docs/src/routes/modules/[moduleSlug]/classes/[slug]/+page.svelte @@ -0,0 +1,7 @@ + + + diff --git a/packages/docs/src/routes/modules/[moduleSlug]/enums/[slug]/+page.server.ts b/packages/docs/src/routes/modules/[moduleSlug]/enums/[slug]/+page.server.ts new file mode 100644 index 000000000..b08812c4d --- /dev/null +++ b/packages/docs/src/routes/modules/[moduleSlug]/enums/[slug]/+page.server.ts @@ -0,0 +1,18 @@ +import { error } from '@sveltejs/kit'; +import type { PageServerLoad } from './$types'; +import { parser, encoder, getMetadata } from '$lib/server/model'; +import type { GD } from '@greendoc/parse'; +import type { EnumDeclaration } from 'ts-morph'; + +export const load: PageServerLoad<{ export: GD.ApiEnum }> = async ({ params }) => { + const slug = params.slug.replace(/\.html$/, ''); + const item = parser.getItemBySlug(slug) as EnumDeclaration; + const encodedItem = encoder.encodeItem(parser, item); + if (item && encodedItem) { + return { + metadata: getMetadata(encodedItem), + export: encodedItem + }; + } + throw error(404, 'Not found'); +}; diff --git a/packages/docs/src/routes/modules/[moduleSlug]/enums/[slug]/+page.svelte b/packages/docs/src/routes/modules/[moduleSlug]/enums/[slug]/+page.svelte new file mode 100644 index 000000000..660f5d999 --- /dev/null +++ b/packages/docs/src/routes/modules/[moduleSlug]/enums/[slug]/+page.svelte @@ -0,0 +1,7 @@ + + + diff --git a/packages/docs/src/routes/modules/[moduleSlug]/functions/[slug]/+page.server.ts b/packages/docs/src/routes/modules/[moduleSlug]/functions/[slug]/+page.server.ts new file mode 100644 index 000000000..e1ee7f39e --- /dev/null +++ b/packages/docs/src/routes/modules/[moduleSlug]/functions/[slug]/+page.server.ts @@ -0,0 +1,18 @@ +import { error } from '@sveltejs/kit'; +import type { PageServerLoad } from './$types'; +import { parser, encoder, getMetadata } from '$lib/server/model'; +import type { GD } from '@greendoc/parse'; +import type { FunctionDeclaration } from 'ts-morph'; + +export const load: PageServerLoad<{ export: GD.ApiFunction }> = async ({ params }) => { + const slug = params.slug.replace(/\.html$/, ''); + const item = parser.getItemBySlug(slug) as FunctionDeclaration; + const encodedItem = encoder.encodeItem(parser, item); + if (item && encodedItem) { + return { + metadata: getMetadata(encodedItem), + export: encodedItem + }; + } + throw error(404, 'Not found'); +}; diff --git a/packages/docs/src/routes/modules/[moduleSlug]/functions/[slug]/+page.svelte b/packages/docs/src/routes/modules/[moduleSlug]/functions/[slug]/+page.svelte new file mode 100644 index 000000000..148928a3b --- /dev/null +++ b/packages/docs/src/routes/modules/[moduleSlug]/functions/[slug]/+page.svelte @@ -0,0 +1,7 @@ + + + diff --git a/packages/docs/src/routes/modules/[moduleSlug]/interfaces/[slug]/+page.server.ts b/packages/docs/src/routes/modules/[moduleSlug]/interfaces/[slug]/+page.server.ts new file mode 100644 index 000000000..515ba1efa --- /dev/null +++ b/packages/docs/src/routes/modules/[moduleSlug]/interfaces/[slug]/+page.server.ts @@ -0,0 +1,18 @@ +import { error } from '@sveltejs/kit'; +import type { PageServerLoad } from './$types'; +import { parser, encoder, getMetadata } from '$lib/server/model'; +import type { GD } from '@greendoc/parse'; +import type { InterfaceDeclaration } from 'ts-morph'; + +export const load: PageServerLoad<{ export: GD.ApiInterface }> = async ({ params }) => { + const slug = params.slug.replace(/\.html$/, ''); + const item = parser.getItemBySlug(slug) as InterfaceDeclaration; + const encodedItem = encoder.encodeItem(parser, item); + if (item && encodedItem) { + return { + metadata: getMetadata(encodedItem), + export: encodedItem + }; + } + throw error(404, 'Not found'); +}; diff --git a/packages/docs/src/routes/modules/[moduleSlug]/interfaces/[slug]/+page.svelte b/packages/docs/src/routes/modules/[moduleSlug]/interfaces/[slug]/+page.svelte new file mode 100644 index 000000000..44d95cb65 --- /dev/null +++ b/packages/docs/src/routes/modules/[moduleSlug]/interfaces/[slug]/+page.svelte @@ -0,0 +1,7 @@ + + + diff --git a/packages/docs/static/main.css b/packages/docs/static/main.css new file mode 100644 index 000000000..b595ad2ce --- /dev/null +++ b/packages/docs/static/main.css @@ -0,0 +1,1390 @@ +/* ========================================================================== +* * Base +* * ========================================================================== */ +html { + font-size: 100%; +} + +body { + font-family: Iowan Old Style, Apple Garamond, Palatino Linotype, Times New Roman, 'Droid Serif', Times, serif; + background: #fdfdfd; + font-size: 16px; + color: #222; +} +/* ========================================================================== +* * Links +* * ========================================================================== */ +/** +* * Address `outline` inconsistency between Chrome and other browsers. */ +a:focus { + outline: thin dotted; +} +a:active, +a:hover { + outline: 0; +} + +/** +* * Improve readability when focused and also mouse hovered in all browsers. */ +/* ========================================================================== +* * Typography +* * ========================================================================== */ +/** +* * Address font sizes and margins set differently in IE 6/7. +* * Address font sizes within `section` and `article` in Firefox 4+, Safari 5, +* * and Chrome. */ +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +h2 { + font-size: 1.5em; + margin: 2em 0 0.83em; +} + +h3 { + font-size: 1.17em; + margin: 1em 0; +} + +h4 { + font-size: 1em; + margin: 1.33em 0; +} + +h5 { + font-size: 0.83em; + margin: 1.67em 0; +} + +h6 { + font-size: 0.67em; + margin: 2.33em 0; +} + +/** +* * Address styling not present in IE 7/8/9, Safari 5, and Chrome. */ +abbr[title] { + border-bottom: 1px dotted; +} + +/** +* * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. */ +b, +strong { + font-weight: bold; +} + +blockquote { + margin: 1em 40px; +} + +/** +* * Address styling not present in Safari 5 and Chrome. */ +dfn { + font-style: italic; +} + +/** +* * Address differences between Firefox and other browsers. +* * Known issue: no IE 6/7 normalization. */ +hr { + box-sizing: content-box; + height: 0; +} + +/** +* * Address styling not present in IE 6/7/8/9. */ +mark { + background: #ff8; + color: #000; +} + +/** +* * Address margins set differently in IE 6/7. */ +p, +pre { + margin: 1em 0; +} + +/** +* * Correct font family set oddly in IE 6, Safari 4/5, and Chrome. */ +code, +kbd, +pre, +samp { + font-family: monospace, serif; + _font-family: 'courier new', monospace; + font-size: 1em; +} + +/** +* * Improve readability of pre-formatted text in all browsers. */ +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +/** +* * Address CSS quotes not supported in IE 6/7. */ +q { + quotes: none; +} +q:before, +q:after { + content: ''; + content: none; +} + +/** +* * Address `quotes` property not supported in Safari 4. */ +/** +* * Address inconsistent and variable font size in all browsers. */ +small { + font-size: 80%; +} + +/** +* * Prevent `sub` and `sup` affecting `line-height` in all browsers. */ +sub { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* ========================================================================== +* * Lists +* * ========================================================================== */ +/** +* * Address margins set differently in IE 6/7. */ +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +/** +* * Address paddings set differently in IE 6/7. */ +menu, +ol, +ul { + padding: 0 0 0 40px; +} + +/** +* * Correct list images handled incorrectly in IE 7. */ +nav ul, +nav ol { + list-style: none; + list-style-image: none; +} + +/* ========================================================================== +* * Figures +* * ========================================================================== */ +/** +* * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11. */ +figure, +form { + margin: 0; +} + +/* 2 */ +/* ========================================================================== +* * Tables +* * ========================================================================== */ +/** +* * Remove most spacing between table cells. */ +table { + border-collapse: collapse; + border-spacing: 0; +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 0 40px; +} +@media (max-width: 640px) { + .container { + padding: 0 20px; + } +} + +.container-main { + padding-bottom: 200px; +} + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes fade-out { + from { + opacity: 1; + visibility: visible; + } + to { + opacity: 0; + } +} +@keyframes fade-in-delayed { + 0% { + opacity: 0; + } + 33% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fade-out-delayed { + 0% { + opacity: 1; + visibility: visible; + } + 66% { + opacity: 0; + } + 100% { + opacity: 0; + } +} +@keyframes shift-to-left { + from { + transform: translate(0, 0); + } + to { + transform: translate(-25%, 0); + } +} +@keyframes unshift-to-left { + from { + transform: translate(-25%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } +} + +a { + color: #4da6ff; + text-decoration: none; +} +a:hover { + text-decoration: underline; +} + +code, +pre { + font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; + padding: 0.2em; + margin: 0; + font-size: 14px; + line-height: 1.5em; + background-color: rgba(0, 0, 0, 0.04); +} + +pre { + padding: 2em; +} +pre code { + padding: 0; + font-size: 100%; + background-color: transparent; +} + +.greendoc-typography { + line-height: 1.333em; +} +.greendoc-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; +} +.greendoc-typography h4, +.greendoc-typography h5, +.greendoc-typography h6 { + font-size: 1em; + margin: 0; +} +.greendoc-typography h5, +.greendoc-typography h6 { + font-weight: normal; +} +.greendoc-typography p, +.greendoc-typography ul, +.greendoc-typography ol { + margin: 1em 0; +} + +@media (min-width: 901px) and (max-width: 1024px) { + html.default .col-content { + width: 72%; + } + html.default .col-menu { + width: 28%; + } + html.default .greendoc-navigation { + padding-left: 10px; + } +} +@media (max-width: 900px) { + html.default .col-content { + float: none; + width: 100%; + } + html.default .col-menu { + position: fixed !important; + overflow: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + width: 100%; + padding: 20px 20px 0 0; + max-width: 450px; + visibility: hidden; + background-color: #fff; + transform: translate(100%, 0); + } + html.default .col-menu > *:last-child { + padding-bottom: 20px; + } + html.default .overlay { + content: ''; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; + } + html.default.to-has-menu .overlay { + animation: fade-in 0.4s; + } + html.default.to-has-menu header, + html.default.to-has-menu footer, + html.default.to-has-menu .col-content { + animation: shift-to-left 0.4s; + } + html.default.to-has-menu .col-menu { + animation: pop-in-from-right 0.4s; + } + html.default.from-has-menu .overlay { + animation: fade-out 0.4s; + } + html.default.from-has-menu header, + html.default.from-has-menu footer, + html.default.from-has-menu .col-content { + animation: unshift-to-left 0.4s; + } + html.default.from-has-menu .col-menu { + animation: pop-out-to-right 0.4s; + } + html.default.has-menu body { + overflow: hidden; + } + html.default.has-menu .overlay { + visibility: visible; + } + html.default.has-menu header, + html.default.has-menu footer, + html.default.has-menu .col-content { + transform: translate(-25%, 0); + } + html.default.has-menu .col-menu { + visibility: visible; + transform: translate(0, 0); + } +} + +.greendoc-page-title { + padding: 70px 0 20px 0; + margin: 0 0 40px 0; + background: #fff; + box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); +} +.greendoc-page-title h1 { + margin: 0; +} + +.greendoc-breadcrumb { + margin: 0; + padding: 0; + color: #808080; +} +.greendoc-breadcrumb a { + color: #808080; + text-decoration: none; +} +.greendoc-breadcrumb a:hover { + text-decoration: underline; +} +.greendoc-breadcrumb li { + display: inline; +} +.greendoc-breadcrumb li:after { + content: ' / '; +} + +html.minimal .container { + margin: 0; +} +html.minimal .container-main { + padding-top: 50px; + padding-bottom: 0; +} +html.minimal .content-wrap { + padding-left: 300px; +} +html.minimal .greendoc-navigation { + position: fixed !important; + overflow: auto; + -webkit-overflow-scrolling: touch; + box-sizing: border-box; + z-index: 1; + left: 0; + top: 40px; + bottom: 0; + width: 300px; + padding: 20px; + margin: 0; +} +html.minimal .greendoc-member .greendoc-member { + margin-left: 0; +} +html.minimal .greendoc-page-toolbar { + position: fixed; + z-index: 2; +} +html.minimal footer { + background-color: transparent; +} +html.minimal footer .container { + padding: 0; +} +html.minimal .greendoc-generator { + padding: 0; +} +@media (max-width: 900px) { + html.minimal .greendoc-navigation { + display: none; + } + html.minimal .content-wrap { + padding-left: 0; + } +} + +dl.greendoc-comment-tags { + overflow: hidden; +} +dl.greendoc-comment-tags dt { + float: left; + padding: 1px 5px; + margin: 0 10px 0 0; + border-radius: 4px; + border: 1px solid #808080; + color: #808080; + font-size: 0.8em; + font-weight: normal; +} +dl.greendoc-comment-tags dd { + margin: 0 0 10px 0; +} +dl.greendoc-comment-tags dd:before, +dl.greendoc-comment-tags dd:after { + display: table; + content: ' '; +} +dl.greendoc-comment-tags dd pre, +dl.greendoc-comment-tags dd:after { + clear: both; +} +dl.greendoc-comment-tags p { + margin: 0; +} + +.greendoc-comment .lead p:first-child { + margin-top: 0; +} +.greendoc-comment .lead:last-child { + margin-bottom: 0; +} + +.toggle-protected .greendoc-is-private { + display: none; +} + +.toggle-public .greendoc-is-private, +.toggle-public .greendoc-is-protected, +.toggle-public .greendoc-is-private-protected { + display: none; +} + +.toggle-inherited .greendoc-is-inherited { + display: none; +} + +.toggle-only-exported .greendoc-is-not-exported { + display: none; +} + +.toggle-externals .greendoc-is-external { + display: none; +} + +footer { + border-top: 1px solid #eee; + background-color: #fff; +} +footer.with-border-bottom { + border-bottom: 1px solid #eee; +} +footer .greendoc-legend-group { + font-size: 0; +} +footer .greendoc-legend { + display: inline-block; + width: 25%; + padding: 0; + font-size: 16px; + list-style: none; + line-height: 1.333em; + vertical-align: top; +} +@media (max-width: 900px) { + footer .greendoc-legend { + width: 50%; + } +} + +.greendoc-hierarchy { + list-style: square; + padding: 0 0 0 20px; + margin: 0; +} +.greendoc-hierarchy .target { + font-weight: bold; +} + +.greendoc-flag { + display: inline-block; + padding: 1px 5px; + border-radius: 4px; + color: #fff; + background-color: #808080; + text-indent: 0; + font-size: 14px; + font-weight: normal; +} + +.greendoc-anchor { + position: absolute; + top: -100px; +} + +.greendoc-member { + position: relative; +} +.greendoc-member .greendoc-anchor + h3 { + margin-top: 0; + margin-bottom: 0; + border-bottom: none; +} + +.greendoc-navigation { + margin: 0 0 0 40px; +} +.greendoc-navigation a { + display: block; + padding-top: 2px; + padding-bottom: 2px; + color: #222; + text-decoration: none; +} +.greendoc-navigation a:hover { + text-decoration: underline; +} +.greendoc-navigation ul { + margin: 0; + padding: 0; + list-style: none; +} +.greendoc-navigation li { + padding: 0; +} + +.greendoc-navigation.secondary { + max-height: calc(100vh - 1rem - 40px); + overflow: auto; + position: -webkit-sticky; + position: sticky; + top: calc(0.5rem + 40px); + transition: 0.3s; +} +.greendoc-navigation.secondary.greendoc-navigation--toolbar-hide { + max-height: calc(100vh - 1rem); + top: 0.5rem; +} + +@media (min-width: 901px) { + .menu-sticky-wrap { + position: static; + } +} + +.greendoc-panel { + margin: 20px 0; + padding: 20px; + background-color: #fff; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +.greendoc-panel:empty { + display: none; +} +.greendoc-panel > h1, +.greendoc-panel > h2, +.greendoc-panel > h3 { + margin: 1.5em -20px 10px -20px; + padding: 0 20px 10px 20px; + border-bottom: 1px solid #eee; +} +.greendoc-panel > h1.greendoc-before-signature, +.greendoc-panel > h2.greendoc-before-signature, +.greendoc-panel > h3.greendoc-before-signature { + margin-bottom: 0; + border-bottom: 0; +} +.greendoc-panel table { + display: block; + width: 100%; + overflow: auto; + margin-top: 10px; + word-break: normal; + word-break: keep-all; +} +.greendoc-panel table th { + font-weight: bold; +} +.greendoc-panel table th, +.greendoc-panel table td { + padding: 6px 13px; + border: 1px solid #ddd; +} +.greendoc-panel table tr { + background-color: #fff; + border-top: 1px solid #ccc; +} +.greendoc-panel table tr:nth-child(2n) { + background-color: #f8f8f8; +} + +.greendoc-panel-group { + margin: 60px 0; +} +.greendoc-panel-group > h1, +.greendoc-panel-group > h2, +.greendoc-panel-group > h3 { + padding-left: 20px; + padding-right: 20px; +} + +#greendoc-search { + transition: background-color 0.2s; +} +#greendoc-search .title { + position: relative; + z-index: 2; +} +#greendoc-search .field { + position: absolute; + left: 0; + top: 0; + right: 40px; + height: 40px; +} +#greendoc-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: #222; +} +#greendoc-search .field label { + position: absolute; + overflow: hidden; + right: -40px; +} +#greendoc-search .field input, +#greendoc-search .title { + transition: opacity 0.2s; +} +#greendoc-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +#greendoc-search .results li { + padding: 0 10px; + background-color: #fdfdfd; +} +#greendoc-search .results li:nth-child(even) { + background-color: #fff; +} +#greendoc-search .results li.state { + display: none; +} +#greendoc-search .results li.current, +#greendoc-search .results li:hover { + background-color: #eee; +} +#greendoc-search .results a { + display: block; +} +#greendoc-search .results a:before { + top: 10px; +} +#greendoc-search .results span.parent { + color: #808080; + font-weight: normal; +} +#greendoc-search.has-focus { + background-color: #eee; +} +#greendoc-search.has-focus .field input { + top: 0; + opacity: 1; +} +#greendoc-search.has-focus .title { + z-index: 0; + opacity: 0; +} +#greendoc-search.has-focus .results { + visibility: visible; +} +#greendoc-search.loading .results li.state.loading { + display: block; +} +#greendoc-search.failure .results li.state.failure { + display: block; +} + +.greendoc-signature { + margin: 0 0 1em 0; + padding: 10px; + border: 1px solid #eee; + font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; + font-size: 14px; + overflow-x: auto; +} +.greendoc-signature.greendoc-kind-icon { + padding-left: 30px; +} +.greendoc-signature.greendoc-kind-icon:before { + top: 10px; + left: 10px; +} +.greendoc-panel > .greendoc-signature { + margin-left: -20px; + margin-right: -20px; + border-width: 1px 0; +} +.greendoc-panel > .greendoc-signature.greendoc-kind-icon { + padding-left: 40px; +} +.greendoc-panel > .greendoc-signature.greendoc-kind-icon:before { + left: 20px; +} + +.greendoc-signature-symbol { + color: #808080; + font-weight: normal; +} + +.greendoc-signature-type { + font-style: italic; + font-weight: normal; +} + +.greendoc-signatures { + padding: 0; + margin: 0 0 1em 0; + border: 1px solid #eee; +} +.greendoc-signatures .greendoc-signature { + margin: 0; + border-width: 1px 0 0 0; + transition: background-color 0.1s; +} +.greendoc-signatures .greendoc-signature:first-child { + border-top-width: 0; +} +.greendoc-signatures .greendoc-signature.current { + background-color: #eee; +} +.greendoc-signatures.active > .greendoc-signature { + cursor: pointer; +} +.greendoc-panel > .greendoc-signatures { + margin-top: -20px; + margin-left: -20px; + margin-right: -20px; + border-width: 1px 0; +} +.greendoc-panel > .greendoc-signatures .greendoc-signature.greendoc-kind-icon { + padding-left: 40px; +} +.greendoc-panel > .greendoc-signatures .greendoc-signature.greendoc-kind-icon:before { + left: 20px; +} +.greendoc-panel > a.anchor + .greendoc-signatures { + border-top-width: 0; + margin-top: -20px; +} + +ul.greendoc-descriptions { + position: relative; + overflow: hidden; + padding: 0; + margin-bottom: 0; + list-style: none; +} +ul.greendoc-descriptions.active > .greendoc-description { + display: none; +} +ul.greendoc-descriptions.active > .greendoc-description.current { + display: block; +} +ul.greendoc-descriptions.active > .greendoc-description.fade-in { + animation: fade-in-delayed 0.3s; +} +ul.greendoc-descriptions.active > .greendoc-description.fade-out { + animation: fade-out-delayed 0.3s; + position: absolute; + display: block; + top: 0; + left: 0; + right: 0; + opacity: 0; + visibility: hidden; +} +ul.greendoc-descriptions h4, +ul.greendoc-descriptions .greendoc-index-panel h3, +.greendoc-index-panel ul.greendoc-descriptions h3 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} + +ul.greendoc-parameters, +ul.greendoc-type-parameters { + list-style: square; + margin: 0; + padding-left: 20px; +} +ul.greendoc-parameters > li.greendoc-parameter-signature, +ul.greendoc-type-parameters > li.greendoc-parameter-signature { + list-style: none; + margin-left: -20px; +} +ul.greendoc-parameters h5, +ul.greendoc-type-parameters h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} +ul.greendoc-parameters .greendoc-comment, +ul.greendoc-type-parameters .greendoc-comment { + margin-top: -0.5em; +} + +.greendoc-sources { + font-size: 14px; + color: #808080; + margin: 0 0 1em 0; +} +.greendoc-sources a { + color: #808080; + text-decoration: underline; +} +.greendoc-sources ul, +.greendoc-sources p { + margin: 0 !important; +} +.greendoc-sources ul { + list-style: none; + padding: 0; +} + +.greendoc-page-toolbar { + position: fixed; + z-index: 1; + top: 0; + left: 0; + width: 100%; + height: 40px; + color: #333; + background: #fff; + border-bottom: 1px solid #eee; + transition: transform 0.3s linear; +} +.greendoc-page-toolbar a { + color: #333; + text-decoration: none; +} +.greendoc-page-toolbar a.title { + font-weight: bold; +} +.greendoc-page-toolbar a.title:hover { + text-decoration: underline; +} +.greendoc-page-toolbar .table-wrap { + display: table; + width: 100%; + height: 40px; +} +.greendoc-page-toolbar .table-cell { + display: table-cell; + position: relative; + white-space: nowrap; + line-height: 40px; +} +.greendoc-page-toolbar .table-cell:first-child { + width: 100%; +} + +.greendoc-page-toolbar--hide { + transform: translateY(-100%); +} + +.greendoc-widget:before { + content: ''; + display: inline-block; + width: 40px; + height: 40px; + margin: 0 -8px 0 0; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAAAoCAQAAAAlSeuiAAABp0lEQVR4Ae3aUa3jQAyF4QNhIBTCQiiEQlgIhRAGhTAQBkIgBEIgDITZZGXNjZTePiSWYqn/54dGfbAq+SiTutWXAgAAAAAAAAAAAAA8NCz1UFSD2lKDS5d3NVzZj/BVNasaLoRZRUmj2lLrVVHWMUntQ13Wj/i1pWa9lprX6xMRnH4dx6Rjsn26+v+12ms+EcB37P0r+qH+DNQGXgMFcHzbregQ78B8eQCTJk0e979ZW7PdA2O49ceDsYexKgUNoI3EKYDWL3D8miaPh/uXtl6BHqEHFQvgXau/FsCiIWAAbST2fpQRT0sl70j3z5ZiBdD7CG5WZX8kxwmgjbiP5GQA9/3O2XaxnnHi53AEE0AbRh+JQwC3/fzC4hcb6xPvS4i3QaMdwX+0utsRPEY6gm2wNhKHAG77eUi7SIcK4G4NY4GMIan2u2Cxqzncl5DUn7Q8ArjvZ8JFOsl/Ed0jyBom+BomQKSto+9PcblHMM4iuu4X0QQw5hrGQY/gUxFkjZuf4m4alXVU+1De/VhEn5CvDSB/RsBzqWgAAAAAAAAAAAAAAACAfyyYJ5nhVuwIAAAAAElFTkSuQmCC); + background-repeat: no-repeat; + text-indent: -1024px; + vertical-align: bottom; +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { + .greendoc-widget:before { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAABQCAMAAAC+sjQXAAAAM1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACjBUbJAAAAEXRSTlMA3/+/UCBw7xCPYIBAMM+vn1qYQ7QAAALCSURBVHgB7MGBAAAAAICg/akXqQIAAAAAAAAAAAAAAAAAAJids9mdE4bhoDNZCITP93/aSmhV/9uwPWyi8jtkblws2IxsYpz9LwSAaJW8AreE16PxOsMYE6Q4DiYKF7X+8ZHXc/E608xv5snEyIuZrVwMZjbnujR6T3gsXmcLOIRNzD+Ig2UuVtt2+NbAiX/wVLzOlviD9L2BOfGBlL/3D1I+uDjGBJArBPxU3x+K15kCQFo2s21JAOHrKpz4SPrWv4IKA+uFaR6vMwMcb+emA2DWEfDglrkLqEBOKVslA8Dx14oPMiV4CtywWxdQgAwkq2QE0uTXUwJGk2G9s3mTFNBzAkC7HKPsX72AEVjMnAWIpsPCRRjXdQxcjCYpoOcEgHY5Rtk/slWSgM3M2aSeeVgjAOeVpKcdgGMdNAXMuIAqOcZzqF8L+WcAsi8wkTeheCWMegL6mgCorHHyEJ5TVfxrLWDrTUjZdhnhjYqAnlN8TaoELOLVC0gucmoz/3RKcPs2jAs4+J5ET8AEZF+TSgGLeC1V8YuGQQU2IV1Asq9JCwE9XitZVPxr34bpJRj8PqsFLOK108W9aVrWZRrR7Sm2HL4JCToCujHZ6gUs4jUz0P1TEvD+U5wMa363YeziBODIq1YbJrsv9QKW8Ry1nNp+GAHvuingRTfmYcjBf0QpAS37bdUL6PFKtHJq63EsZ5cxcKMkDVIClu1dAK1PcJ5TFQ0M9wZKDCPs3BD7MIJGTs3WfiTfDVQYx5q5ZekCauTU3P5Q0ukGCgh49oFURdobWBY9N/CxEuwGjpGLuPhTdwH1x7HqDDxNgRP2zQ8lraFyF/yJ9vH6QGqtgSbBOU8/j2VORz+Wqfle2d5Ae4R+ML0z7Y+W4P7XHN3AU+tzyK/24EAGAAAAYJC/9T2+CgAAAAAAAAAAAAAAAAAAAADgJpfzHyIKFFBKAAAAAElFTkSuQmCC); + background-size: 320px 40px; + } +} + +.greendoc-widget { + display: inline-block; + overflow: hidden; + opacity: 0.6; + height: 40px; + transition: opacity 0.1s, background-color 0.2s; + vertical-align: bottom; + cursor: pointer; +} +.greendoc-widget:hover { + opacity: 0.8; +} +.greendoc-widget.active { + opacity: 1; + background-color: #eee; +} +.greendoc-widget.no-caption { + width: 40px; +} +.greendoc-widget.no-caption:before { + margin: 0; +} +.greendoc-widget.search:before { + background-position: 0 0; +} +.greendoc-widget.menu:before { + background-position: -40px 0; +} +.greendoc-widget.options:before { + background-position: -80px 0; +} +.greendoc-widget.options, +.greendoc-widget.menu { + display: none; + background: none; + outline: none; + border: none; +} +@media (max-width: 900px) { + .greendoc-widget.options, + .greendoc-widget.menu { + display: inline-block; + } +} +input[type='checkbox'] + .greendoc-widget:before { + background-position: -120px 0; +} +input[type='checkbox']:checked + .greendoc-widget:before { + background-position: -160px 0; +} + +.greendoc-select { + position: relative; + display: inline-block; + height: 40px; + transition: opacity 0.1s, background-color 0.2s; + vertical-align: bottom; + cursor: pointer; +} +.greendoc-select .greendoc-select-label { + opacity: 0.6; + transition: opacity 0.2s; +} +.greendoc-select .greendoc-select-label:before { + background-position: -240px 0; +} +.greendoc-select.active .greendoc-select-label { + opacity: 0.8; +} +.greendoc-select.active .greendoc-select-list { + visibility: visible; + opacity: 1; + transition-delay: 0s; +} +.greendoc-select .greendoc-select-list { + position: absolute; + visibility: hidden; + top: 40px; + left: 0; + margin: 0; + padding: 0; + opacity: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); + transition: visibility 0s 0.2s, opacity 0.2s; +} +.greendoc-select .greendoc-select-list li { + padding: 0 20px 0 0; + background-color: #fdfdfd; +} +.greendoc-select .greendoc-select-list li:before { + background-position: 40px 0; +} +.greendoc-select .greendoc-select-list li:nth-child(even) { + background-color: #fff; +} +.greendoc-select .greendoc-select-list li:hover { + background-color: #eee; +} +.greendoc-select .greendoc-select-list li.selected:before { + background-position: -200px 0; +} +@media (max-width: 900px) { + .greendoc-select .greendoc-select-list { + top: 0; + left: auto; + right: 100%; + margin-right: -5px; + } + .greendoc-select .greendoc-select-label:before { + background-position: -280px 0; + } +} + +img { + max-width: 100%; +} + +/* ========================================================================== + * * Highlight.js + * * Based on C# theme by Jason Diamond + * * ========================================================================== */ + +.hljs { + display: inline-block; + padding: 0.5em; + background: white; + color: black; +} + +.hljs-comment, +.hljs-annotation, +.hljs-template_comment, +.hljs-chunk { + color: #008000; +} + +.hljs-keyword, +.hljs-id, +.hljs-built_in, +.hljs-winutils, +.bash .hljs-variable, +.hljs-request, +.hljs-status, +.xml .hljs-tag, +.xml .hljs-tag .hljs-value { + color: #00f; +} + +.hljs-string, +.hljs-title, +.hljs-parent, +.hljs-tag .hljs-value, +.hljs-rules .hljs-value, +.hljs-template_tag, +.hljs-addition, +.hljs-flow, +.hljs-stream, +.hljs-date { + color: #a31515; +} + +.hljs-decorator, +.hljs-filter .hljs-argument, +.hljs-localvars, +.hljs-array, +.hljs-attr_selector, +.hljs-pseudo, +.hljs-pi, +.hljs-doctype, +.hljs-deletion, +.hljs-envvar, +.hljs-shebang, +.hljs-preprocessor, +.hljs-pragma, +.userType, +.hljs-prompt { + color: #2b91af; +} + +.hljs-phpdoc, +.hljs-javadoc, +.hljs-xmlDocTag { + color: #808080; +} + +.xml .hljs-attribute { + color: #f00; +} + +/* ========================================================================== + * * Customizations + * * ========================================================================== */ + +.header-badge img { + vertical-align: sub; + margin-left: 0.5em; +} + +.greendoc-typography { + line-height: 1.6em; +} + +.greendoc-navigation > section { + padding: 1em 0; + border-bottom: 1px solid #eee; +} + +.greendoc-navigation > section:first-child { + padding-top: 0; +} + +.greendoc-navigation > section:last-child { + padding-bottom: 0; + border-bottom: 0; +} + +.greendoc-navigation h4, +.greendoc-navigation h5 { + font-size: 0.8em; + font-style: italic; + opacity: 0.6; +} + +.greendoc-navigation h4 { + margin: 0 0 1em; +} + +.greendoc-navigation h5 { + margin-bottom: 0.2em; +} + +.greendoc-navigation a { + text-overflow: ellipsis; + overflow: hidden; +} + +.greendoc-navigation.secondary ul li a.active { + text-decoration: underline; +} + +.greendoc-panel { + box-shadow: none; +} + +pre { + padding: 20px; + white-space: pre; + overflow: auto; +} + +.greendoc-signature { + color: #4da6ff; +} + +html.minimal .greendoc-generator, +.greendoc-panel > .greendoc-signature.greendoc-kind-icon, +.greendoc-panel > .greendoc-signatures .greendoc-signature.greendoc-kind-icon { + padding-left: 20px; +} + +.greendoc-select .greendoc-select-label, +.greendoc-widget { + opacity: 0.8; +} + +.greendoc-select.active .greendoc-select-label, +.greendoc-widget:hover { + opacity: 1; +} + +.greendoc-navigation a[target='_blank']::after { + content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAQElEQVR42qXKwQkAIAxDUUdxtO6/RBQkQZvSi8I/pL4BoGw/XPkh4XigPmsUgh0626AjRsgxHTkUThsG2T/sIlzdTsp52kSS1wAAAABJRU5ErkJggg==); + margin: 0 3px 0 5px; +} + +/** Enum styles are too sprawling. */ +.greendoc-parent-kind-object-literal { + padding-bottom: 0; + margin-bottom: 0; + margin-top: 0; + padding-top: 0; +} + +.greendoc-parent-kind-object-literal .greendoc-sources { + display: none; +} + +.greendoc-parent-kind-object-literal .greendoc-signature.greendoc-kind-icon { + border-bottom: none; + padding-bottom: 0; +} + +.greendoc-parent-kind-object-literal .greendoc-comment.greendoc-typography p { + margin-bottom: 0.3em; +} + +blockquote { + border-left: 6px solid #ccc; + padding-left: 1em; + margin-left: 0; + color: #606060; + font-style: italic; +} + +html.minimal .greendoc-generator { + text-align: center; + padding-left: 0; +} + +.greendoc-generator img { + max-width: 40%; +} + +details[open] { + padding-left: 1em; + margin-bottom: 1em; +} + +details[open] > summary { + margin-left: -1em; +} + +details > summary { + cursor: pointer; +} + +@media (max-width: 900px) { + html.minimal .greendoc-navigation { + display: block; + top: 0; + left: -305px; /* Additional 5px for box-shadow blur. */ + max-height: none; + padding-top: 40px; + background: #fff; + box-shadow: 1px 1px 3px 0 rgba(0, 0, 0, 0.16); + transition: left 0.2s ease; + } + + html.minimal .toggle-nav .greendoc-navigation { + left: 0; + } + + .greendoc-generator img { + max-width: 60%; + } + + .greendoc-generator .line { + display: block; + line-height: 2em; + } + + .greendoc-generator .divider { + display: none; + } +} diff --git a/docs/CLI_HELP.md b/packages/docs/static/media/cli-help.txt similarity index 100% rename from docs/CLI_HELP.md rename to packages/docs/static/media/cli-help.txt diff --git a/docs/media/concepts.png b/packages/docs/static/media/concepts.png similarity index 100% rename from docs/media/concepts.png rename to packages/docs/static/media/concepts.png diff --git a/docs/media/extensions/khr-material-pbr-specular-glossiness.png b/packages/docs/static/media/extensions/khr-material-pbr-specular-glossiness.png similarity index 100% rename from docs/media/extensions/khr-material-pbr-specular-glossiness.png rename to packages/docs/static/media/extensions/khr-material-pbr-specular-glossiness.png diff --git a/docs/media/extensions/khr-materials-clearcoat.png b/packages/docs/static/media/extensions/khr-materials-clearcoat.png similarity index 100% rename from docs/media/extensions/khr-materials-clearcoat.png rename to packages/docs/static/media/extensions/khr-materials-clearcoat.png diff --git a/docs/media/extensions/khr-materials-sheen.png b/packages/docs/static/media/extensions/khr-materials-sheen.png similarity index 100% rename from docs/media/extensions/khr-materials-sheen.png rename to packages/docs/static/media/extensions/khr-materials-sheen.png diff --git a/docs/media/extensions/khr-materials-unlit.png b/packages/docs/static/media/extensions/khr-materials-unlit.png similarity index 100% rename from docs/media/extensions/khr-materials-unlit.png rename to packages/docs/static/media/extensions/khr-materials-unlit.png diff --git a/docs/media/extensions/khr-materials-variants.jpg b/packages/docs/static/media/extensions/khr-materials-variants.jpg similarity index 100% rename from docs/media/extensions/khr-materials-variants.jpg rename to packages/docs/static/media/extensions/khr-materials-variants.jpg diff --git a/docs/media/extensions/khr-materials-volume.png b/packages/docs/static/media/extensions/khr-materials-volume.png similarity index 100% rename from docs/media/extensions/khr-materials-volume.png rename to packages/docs/static/media/extensions/khr-materials-volume.png diff --git a/docs/media/hero.jpg b/packages/docs/static/media/hero.jpg similarity index 100% rename from docs/media/hero.jpg rename to packages/docs/static/media/hero.jpg diff --git a/docs/media/kicker.jpg b/packages/docs/static/media/kicker.jpg similarity index 100% rename from docs/media/kicker.jpg rename to packages/docs/static/media/kicker.jpg diff --git a/packages/docs/svelte.config.js b/packages/docs/svelte.config.js new file mode 100644 index 000000000..09f557447 --- /dev/null +++ b/packages/docs/svelte.config.js @@ -0,0 +1,25 @@ +import adapter from '@sveltejs/adapter-static'; +import { vitePreprocess } from '@sveltejs/kit/vite'; +import { mdsvex } from 'mdsvex'; +import hljs from 'highlight.js'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + extensions: ['.svelte', '.md'], + preprocess: [ + vitePreprocess(), + mdsvex({ + extensions: ['.md'], + highlight: { + highlighter: function (code, lang) { + const language = hljs.getLanguage(lang) ? lang : 'plaintext'; + const html = hljs.highlight(code, { language }).value; + return `
      {@html \`${html}\`}
      `; + } + } + }) + ], + kit: { adapter: adapter() } +}; + +export default config; diff --git a/packages/docs/tsconfig.json b/packages/docs/tsconfig.json new file mode 100644 index 000000000..c4b67c703 --- /dev/null +++ b/packages/docs/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": false, + } + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/packages/docs/vercel.json b/packages/docs/vercel.json new file mode 100644 index 000000000..0640980f9 --- /dev/null +++ b/packages/docs/vercel.json @@ -0,0 +1 @@ +{"cleanUrls": true} diff --git a/packages/docs/vite.config.ts b/packages/docs/vite.config.ts new file mode 100644 index 000000000..a1ecffc3a --- /dev/null +++ b/packages/docs/vite.config.ts @@ -0,0 +1,7 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vite'; + +export default defineConfig({ + plugins: [sveltekit()], + server: { port: 3000 } +}); diff --git a/packages/extensions/README.md b/packages/extensions/README.md index 1a9fb2a5c..e5a54fbe0 100644 --- a/packages/extensions/README.md +++ b/packages/extensions/README.md @@ -10,73 +10,6 @@ Part of the glTF-Transform project. - Project Documentation: https://gltf-transform.donmccurdy.com/ - Package Documentation: https://gltf-transform.donmccurdy.com/extensions.html -## Quickstart - -Install the scripting packages: - -```bash -npm install --save @gltf-transform/core @gltf-transform/extensions @gltf-transform/functions -``` - -Read and write glTF scenes with platform I/O utilities [WebIO](https://gltf-transform.donmccurdy.com/classes/core.webio.html), [NodeIO](https://gltf-transform.donmccurdy.com/classes/core.nodeio.html), or [DenoIO](https://gltf-transform.donmccurdy.com/classes/core.denoio.html): - -```typescript -import { Document, NodeIO } from '@gltf-transform/core'; -import { KHRONOS_EXTENSIONS } from '@gltf-transform/extensions'; -import draco3d from 'draco3dgltf'; - -// Configure I/O. -const io = new NodeIO() - .registerExtensions(KHRONOS_EXTENSIONS) - .registerDependencies({ - 'draco3d.decoder': await draco3d.createDecoderModule(), // Optional. - 'draco3d.encoder': await draco3d.createEncoderModule(), // Optional. - }); - -// Read from URL. -const document = await io.read('path/to/model.glb'); - -// Write to byte array (Uint8Array). -const glb = await io.writeBinary(document); -``` - -To perform changes to an existing glTF [Document](https://gltf-transform.donmccurdy.com/classes/core.document.html), import off-the-shelf scripts from the [Functions](https://gltf-transform.donmccurdy.com/functions.html) package, or write your own using API classes like [Material](https://gltf-transform.donmccurdy.com/classes/core.material.html), [Primitive](https://gltf-transform.donmccurdy.com/classes/core.primitive.html), and [Texture](https://gltf-transform.donmccurdy.com/classes/core.texture.html). - -```typescript -import { resample, prune, dedup, draco, textureCompress } from '@gltf-transform/functions'; -import * as sharp from 'sharp'; // Node.js only. - -await document.transform( - // Losslessly resample animation frames. - resample(), - // Remove unused nodes, textures, or other data. - prune(), - // Remove duplicate vertex or texture data, if any. - dedup(), - // Compress mesh geometry with Draco. - draco(), - // Convert textures to WebP (Requires glTF Transform v3 and Node.js). - textureCompress({ - encoder: sharp, - targetFormat: 'webp', - resize: [1024, 2024], - }), - // Custom transform. - backfaceCulling({cull: true}), -); - -// Custom transform: enable/disable backface culling. -function backfaceCulling(options) { - return (document) => { - for (const material of document.getRoot().listMaterials()) { - material.setDoubleSided(!options.cull); - } - }; -} -``` - -To learn how glTF-Transform works, and the architecture of the scripting API, start with [Concepts](https://gltf-transform.donmccurdy.com/concepts.html). To try out the scripting API without installing anything, visit [gltf.report/](https://gltf.report/), load a glTF model, and open the *Script* tab. - ## Credits See [*Credits*](https://gltf-transform.donmccurdy.com/credits.html). diff --git a/packages/extensions/src/ext-mesh-gpu-instancing/instanced-mesh.ts b/packages/extensions/src/ext-mesh-gpu-instancing/instanced-mesh.ts index 2ac967099..bf1bf41ee 100644 --- a/packages/extensions/src/ext-mesh-gpu-instancing/instanced-mesh.ts +++ b/packages/extensions/src/ext-mesh-gpu-instancing/instanced-mesh.ts @@ -9,8 +9,6 @@ interface IInstancedMesh extends IProperty { export const INSTANCE_ATTRIBUTE = 'INSTANCE_ATTRIBUTE'; /** - * # InstancedMesh - * * Defines GPU instances of a {@link Mesh} under one {@link Node}. See {@link EXTMeshGPUInstancing}. */ export class InstancedMesh extends ExtensionProperty { diff --git a/packages/extensions/src/ext-mesh-gpu-instancing/mesh-gpu-instancing.ts b/packages/extensions/src/ext-mesh-gpu-instancing/mesh-gpu-instancing.ts index 4d8a4c76c..942c2181b 100644 --- a/packages/extensions/src/ext-mesh-gpu-instancing/mesh-gpu-instancing.ts +++ b/packages/extensions/src/ext-mesh-gpu-instancing/mesh-gpu-instancing.ts @@ -11,8 +11,6 @@ interface InstancedMeshDef { } /** - * # EXTMeshGPUInstancing - * * [`EXT_mesh_gpu_instancing`](https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_mesh_gpu_instancing/) * prepares mesh data for efficient GPU instancing. * diff --git a/packages/extensions/src/ext-meshopt-compression/meshopt-compression.ts b/packages/extensions/src/ext-meshopt-compression/meshopt-compression.ts index 61d361d63..cd087198e 100644 --- a/packages/extensions/src/ext-meshopt-compression/meshopt-compression.ts +++ b/packages/extensions/src/ext-meshopt-compression/meshopt-compression.ts @@ -29,8 +29,6 @@ type MeshoptBufferView = { extensions: { [NAME]: MeshoptBufferViewExtension } }; type EncodedBufferView = GLTF.IBufferView & MeshoptBufferView; /** - * # EXTMeshoptCompression - * * [`EXT_meshopt_compression`](https://github.com/KhronosGroup/gltf/blob/main/extensions/2.0/Vendor/EXT_meshopt_compression/) * provides compression and fast decoding for geometry, morph targets, and animations. * diff --git a/packages/extensions/src/ext-texture-avif/texture-avif.ts b/packages/extensions/src/ext-texture-avif/texture-avif.ts index f18022996..8181d1a58 100644 --- a/packages/extensions/src/ext-texture-avif/texture-avif.ts +++ b/packages/extensions/src/ext-texture-avif/texture-avif.ts @@ -55,8 +55,6 @@ class AVIFImageUtils implements ImageUtilsFormat { } /** - * # TextureAVIF - * * [`EXT_texture_avif`](https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_avif/) * enables AVIF images for any material texture. * diff --git a/packages/extensions/src/ext-texture-webp/texture-webp.ts b/packages/extensions/src/ext-texture-webp/texture-webp.ts index 1dcf1d3db..545f90d66 100644 --- a/packages/extensions/src/ext-texture-webp/texture-webp.ts +++ b/packages/extensions/src/ext-texture-webp/texture-webp.ts @@ -60,8 +60,6 @@ class WEBPImageUtils implements ImageUtilsFormat { } /** - * # EXTTextureWebP - * * [`EXT_texture_webp`](https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp/) * enables WebP images for any material texture. * diff --git a/packages/extensions/src/khr-draco-mesh-compression/draco-mesh-compression.ts b/packages/extensions/src/khr-draco-mesh-compression/draco-mesh-compression.ts index d73f6c0ca..f800ea0db 100644 --- a/packages/extensions/src/khr-draco-mesh-compression/draco-mesh-compression.ts +++ b/packages/extensions/src/khr-draco-mesh-compression/draco-mesh-compression.ts @@ -38,8 +38,6 @@ interface DracoWriterContext { } /** - * # KHRDracoMeshCompression - * * [`KHR_draco_mesh_compression`](https://github.com/KhronosGroup/gltf/blob/main/extensions/2.0/Khronos/KHR_draco_mesh_compression/) * provides advanced compression for mesh geometry. * diff --git a/packages/extensions/src/khr-lights-punctual/light.ts b/packages/extensions/src/khr-lights-punctual/light.ts index f34fd8beb..d47a2b784 100644 --- a/packages/extensions/src/khr-lights-punctual/light.ts +++ b/packages/extensions/src/khr-lights-punctual/light.ts @@ -14,8 +14,6 @@ interface ILight extends IProperty { type PunctualLightType = 'point' | 'spot' | 'directional'; /** - * # Light - * * Defines a light attached to a {@link Node}. See {@link KHRLightsPunctual}. */ export class Light extends ExtensionProperty { diff --git a/packages/extensions/src/khr-lights-punctual/lights-punctual.ts b/packages/extensions/src/khr-lights-punctual/lights-punctual.ts index 469b5f6d5..4c73a9ef6 100644 --- a/packages/extensions/src/khr-lights-punctual/lights-punctual.ts +++ b/packages/extensions/src/khr-lights-punctual/lights-punctual.ts @@ -25,8 +25,6 @@ interface LightDef { } /** - * # KHRLightsPunctual - * * [`KHR_lights_punctual`](https://github.com/KhronosGroup/gltf/blob/main/extensions/2.0/Khronos/KHR_lights_punctual/) defines three "punctual" light types: directional, point and * spot. * diff --git a/packages/extensions/src/khr-materials-anisotropy/anisotropy.ts b/packages/extensions/src/khr-materials-anisotropy/anisotropy.ts index 7a80bdad8..92e063bd9 100644 --- a/packages/extensions/src/khr-materials-anisotropy/anisotropy.ts +++ b/packages/extensions/src/khr-materials-anisotropy/anisotropy.ts @@ -19,8 +19,6 @@ interface IAnisotropy extends IProperty { const { R, G, B } = TextureChannel; /** - * # Anisotropy - * * Defines anisotropy (directionally-dependent reflections) on a PBR {@link Material}. See * {@link KHRMaterialsAnisotropy}. * @@ -97,7 +95,7 @@ export class Anisotropy extends ExtensionProperty { return this.getRef('anisotropyTexture') ? this.getRef('anisotropyTextureInfo') : null; } - /** Anisotropy texture. See {@link getAnisotropyTexture}. */ + /** Anisotropy texture. See {@link Anisotropy.getAnisotropyTexture getAnisotropyTexture}. */ public setAnisotropyTexture(texture: Texture | null): this { return this.setRef('anisotropyTexture', texture, { channels: R | G | B }); } diff --git a/packages/extensions/src/khr-materials-anisotropy/materials-anisotropy.ts b/packages/extensions/src/khr-materials-anisotropy/materials-anisotropy.ts index 4239b8f6d..9bd2c7c2e 100644 --- a/packages/extensions/src/khr-materials-anisotropy/materials-anisotropy.ts +++ b/packages/extensions/src/khr-materials-anisotropy/materials-anisotropy.ts @@ -11,8 +11,6 @@ interface AnisotropyDef { } /** - * # KHRMaterialsAnisotropy - * * [`KHR_materials_anisotropy`](https://github.com/KhronosGroup/gltf/blob/main/extensions/2.0/Khronos/KHR_materials_anisotropy/) * defines anisotropy (directionally-dependent reflections) on a PBR material. * diff --git a/packages/extensions/src/khr-materials-clearcoat/clearcoat.ts b/packages/extensions/src/khr-materials-clearcoat/clearcoat.ts index f47183436..5b45b3c36 100644 --- a/packages/extensions/src/khr-materials-clearcoat/clearcoat.ts +++ b/packages/extensions/src/khr-materials-clearcoat/clearcoat.ts @@ -26,8 +26,6 @@ interface IClearcoat extends IProperty { const { R, G, B } = TextureChannel; /** - * # Clearcoat - * * Defines clear coat for a PBR material. See {@link KHRMaterialsClearcoat}. */ export class Clearcoat extends ExtensionProperty { @@ -62,12 +60,12 @@ export class Clearcoat extends ExtensionProperty { * Clearcoat. */ - /** Clearcoat; linear multiplier. See {@link getClearcoatTexture}. */ + /** Clearcoat; linear multiplier. See {@link Clearcoat.getClearcoatTexture getClearcoatTexture}. */ public getClearcoatFactor(): number { return this.get('clearcoatFactor'); } - /** Clearcoat; linear multiplier. See {@link getClearcoatTexture}. */ + /** Clearcoat; linear multiplier. See {@link Clearcoat.getClearcoatTexture getClearcoatTexture}. */ public setClearcoatFactor(factor: number): this { return this.set('clearcoatFactor', factor); } @@ -89,7 +87,7 @@ export class Clearcoat extends ExtensionProperty { return this.getRef('clearcoatTexture') ? this.getRef('clearcoatTextureInfo') : null; } - /** Sets clearcoat texture. See {@link getClearcoatTexture}. */ + /** Sets clearcoat texture. See {@link Clearcoat.getClearcoatTexture getClearcoatTexture}. */ public setClearcoatTexture(texture: Texture | null): this { return this.setRef('clearcoatTexture', texture, { channels: R }); } @@ -98,12 +96,18 @@ export class Clearcoat extends ExtensionProperty { * Clearcoat roughness. */ - /** Clearcoat roughness; linear multiplier. See {@link getClearcoatRoughnessTexture}. */ + /** + * Clearcoat roughness; linear multiplier. + * See {@link Clearcoat.getClearcoatRoughnessTexture getClearcoatRoughnessTexture}. + */ public getClearcoatRoughnessFactor(): number { return this.get('clearcoatRoughnessFactor'); } - /** Clearcoat roughness; linear multiplier. See {@link getClearcoatRoughnessTexture}. */ + /** + * Clearcoat roughness; linear multiplier. + * See {@link Clearcoat.getClearcoatRoughnessTexture getClearcoatRoughnessTexture}. + */ public setClearcoatRoughnessFactor(factor: number): this { return this.set('clearcoatRoughnessFactor', factor); } @@ -124,7 +128,10 @@ export class Clearcoat extends ExtensionProperty { return this.getRef('clearcoatRoughnessTexture') ? this.getRef('clearcoatRoughnessTextureInfo') : null; } - /** Sets clearcoat roughness texture. See {@link getClearcoatRoughnessTexture}. */ + /** + * Sets clearcoat roughness texture. + * See {@link Clearcoat.getClearcoatRoughnessTexture getClearcoatRoughnessTexture}. + */ public setClearcoatRoughnessTexture(texture: Texture | null): this { return this.setRef('clearcoatRoughnessTexture', texture, { channels: G }); } @@ -133,12 +140,12 @@ export class Clearcoat extends ExtensionProperty { * Clearcoat normals. */ - /** Clearcoat normal scale. See {@link getClearcoatNormalTexture}. */ + /** Clearcoat normal scale. See {@link Clearcoat.getClearcoatNormalTexture getClearcoatNormalTexture}. */ public getClearcoatNormalScale(): number { return this.get('clearcoatNormalScale'); } - /** Clearcoat normal scale. See {@link getClearcoatNormalTexture}. */ + /** Clearcoat normal scale. See {@link Clearcoat.getClearcoatNormalTexture getClearcoatNormalTexture}. */ public setClearcoatNormalScale(scale: number): this { return this.set('clearcoatNormalScale', scale); } @@ -158,7 +165,7 @@ export class Clearcoat extends ExtensionProperty { return this.getRef('clearcoatNormalTexture') ? this.getRef('clearcoatNormalTextureInfo') : null; } - /** Sets clearcoat normal texture. See {@link getClearcoatNormalTexture}. */ + /** Sets clearcoat normal texture. See {@link Clearcoat.getClearcoatNormalTexture getClearcoatNormalTexture}. */ public setClearcoatNormalTexture(texture: Texture | null): this { return this.setRef('clearcoatNormalTexture', texture, { channels: R | G | B }); } diff --git a/packages/extensions/src/khr-materials-clearcoat/materials-clearcoat.ts b/packages/extensions/src/khr-materials-clearcoat/materials-clearcoat.ts index 206c55618..4e0b134b8 100644 --- a/packages/extensions/src/khr-materials-clearcoat/materials-clearcoat.ts +++ b/packages/extensions/src/khr-materials-clearcoat/materials-clearcoat.ts @@ -13,8 +13,6 @@ interface ClearcoatDef { } /** - * # KHRMaterialsClearcoat - * * [KHR_materials_clearcoat](https://github.com/KhronosGroup/gltf/blob/main/extensions/2.0/Khronos/KHR_materials_clearcoat/) * defines a clear coating on a glTF PBR material. * diff --git a/packages/extensions/src/khr-materials-emissive-strength/emissive-strength.ts b/packages/extensions/src/khr-materials-emissive-strength/emissive-strength.ts index 12f91d778..dac79009d 100644 --- a/packages/extensions/src/khr-materials-emissive-strength/emissive-strength.ts +++ b/packages/extensions/src/khr-materials-emissive-strength/emissive-strength.ts @@ -6,8 +6,6 @@ interface IEmissiveStrength extends IProperty { } /** - * # EmissiveStrength - * * Defines emissive strength for a PBR {@link Material}, allowing high-dynamic-range * (HDR) emissive materials. See {@link KHRMaterialsEmissiveStrength}. */ diff --git a/packages/extensions/src/khr-materials-emissive-strength/materials-emissive-strength.ts b/packages/extensions/src/khr-materials-emissive-strength/materials-emissive-strength.ts index 538c66111..9bc871993 100644 --- a/packages/extensions/src/khr-materials-emissive-strength/materials-emissive-strength.ts +++ b/packages/extensions/src/khr-materials-emissive-strength/materials-emissive-strength.ts @@ -9,8 +9,6 @@ interface EmissiveStrengthDef { } /** - * # KHRMaterialsEmissiveStrength - * * [KHR_materials_emissive_strength](https://github.com/KhronosGroup/gltf/blob/main/extensions/2.0/Khronos/KHR_materials_emissive_strength/) * defines emissive strength and enables high-dynamic-range (HDR) emissive materials. * diff --git a/packages/extensions/src/khr-materials-ior/ior.ts b/packages/extensions/src/khr-materials-ior/ior.ts index 2b674ee96..08e0d9523 100644 --- a/packages/extensions/src/khr-materials-ior/ior.ts +++ b/packages/extensions/src/khr-materials-ior/ior.ts @@ -6,8 +6,6 @@ interface IIOR extends IProperty { } /** - * # IOR - * * Defines index of refraction for a PBR {@link Material}. See {@link KHRMaterialsIOR}. */ export class IOR extends ExtensionProperty { diff --git a/packages/extensions/src/khr-materials-ior/materials-ior.ts b/packages/extensions/src/khr-materials-ior/materials-ior.ts index 903e659bc..6a8ef1a10 100644 --- a/packages/extensions/src/khr-materials-ior/materials-ior.ts +++ b/packages/extensions/src/khr-materials-ior/materials-ior.ts @@ -9,8 +9,6 @@ interface IORDef { } /** - * # KHRMaterialsIOR - * * [KHR_materials_ior](https://github.com/KhronosGroup/gltf/blob/main/extensions/2.0/Khronos/KHR_materials_ior/) * defines index of refraction on a glTF PBR material. * diff --git a/packages/extensions/src/khr-materials-iridescence/iridescence.ts b/packages/extensions/src/khr-materials-iridescence/iridescence.ts index 348d1fc03..340fee6b8 100644 --- a/packages/extensions/src/khr-materials-iridescence/iridescence.ts +++ b/packages/extensions/src/khr-materials-iridescence/iridescence.ts @@ -23,8 +23,6 @@ interface IIridescence extends IProperty { const { R, G } = TextureChannel; /** - * # Iridescence - * * Defines iridescence (thin film interference) on a PBR {@link Material}. See {@link KHRMaterialsIridescence}. */ export class Iridescence extends ExtensionProperty { @@ -56,12 +54,12 @@ export class Iridescence extends ExtensionProperty { * Iridescence. */ - /** Iridescence; linear multiplier. See {@link getIridescenceTexture}. */ + /** Iridescence; linear multiplier. See {@link Iridescence.getIridescenceTexture getIridescenceTexture}. */ public getIridescenceFactor(): number { return this.get('iridescenceFactor'); } - /** Iridescence; linear multiplier. See {@link getIridescenceTexture}. */ + /** Iridescence; linear multiplier. See {@link Iridescence.getIridescenceTexture getIridescenceTexture}. */ public setIridescenceFactor(factor: number): this { return this.set('iridescenceFactor', factor); } @@ -84,7 +82,7 @@ export class Iridescence extends ExtensionProperty { return this.getRef('iridescenceTexture') ? this.getRef('iridescenceTextureInfo') : null; } - /** Iridescence intensity. See {@link getIridescenceTexture}. */ + /** Iridescence intensity. See {@link Iridescence.getIridescenceTexture getIridescenceTexture}. */ public setIridescenceTexture(texture: Texture | null): this { return this.setRef('iridescenceTexture', texture, { channels: R }); } @@ -143,7 +141,10 @@ export class Iridescence extends ExtensionProperty { return this.getRef('iridescenceThicknessTexture') ? this.getRef('iridescenceThicknessTextureInfo') : null; } - /** Sets iridescence thickness texture. See {@link getIridescenceThicknessTexture}. */ + /** + * Sets iridescence thickness texture. + * See {@link Iridescence.getIridescenceThicknessTexture getIridescenceThicknessTexture}. + */ public setIridescenceThicknessTexture(texture: Texture | null): this { return this.setRef('iridescenceThicknessTexture', texture, { channels: G }); } diff --git a/packages/extensions/src/khr-materials-iridescence/materials-iridescence.ts b/packages/extensions/src/khr-materials-iridescence/materials-iridescence.ts index f01fb2bee..2cf0b484d 100644 --- a/packages/extensions/src/khr-materials-iridescence/materials-iridescence.ts +++ b/packages/extensions/src/khr-materials-iridescence/materials-iridescence.ts @@ -14,8 +14,6 @@ interface IridescenceDef { } /** - * # KHRMaterialsIridescence - * * [`KHR_materials_iridescence`](https://github.com/KhronosGroup/gltf/blob/main/extensions/2.0/Khronos/KHR_materials_iridescence/) * defines iridescence (thin film interference) on a PBR material. * diff --git a/packages/extensions/src/khr-materials-pbr-specular-glossiness/materials-pbr-specular-glossiness.ts b/packages/extensions/src/khr-materials-pbr-specular-glossiness/materials-pbr-specular-glossiness.ts index 49c573086..b5282912b 100644 --- a/packages/extensions/src/khr-materials-pbr-specular-glossiness/materials-pbr-specular-glossiness.ts +++ b/packages/extensions/src/khr-materials-pbr-specular-glossiness/materials-pbr-specular-glossiness.ts @@ -13,8 +13,6 @@ interface SpecularGlossinessDef { } /** - * # KHRMaterialsPBRSpecularGlossiness - * * [`KHR_materials_pbrSpecularGlossiness`](https://github.com/KhronosGroup/gltf/blob/main/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness/) * converts a PBR material from the default metal/rough workflow to a spec/gloss workflow. * diff --git a/packages/extensions/src/khr-materials-pbr-specular-glossiness/pbr-specular-glossiness.ts b/packages/extensions/src/khr-materials-pbr-specular-glossiness/pbr-specular-glossiness.ts index 6af869180..4ba3ddc8b 100644 --- a/packages/extensions/src/khr-materials-pbr-specular-glossiness/pbr-specular-glossiness.ts +++ b/packages/extensions/src/khr-materials-pbr-specular-glossiness/pbr-specular-glossiness.ts @@ -25,8 +25,6 @@ interface IPBRSpecularGlossiness extends IProperty { const { R, G, B, A } = TextureChannel; /** - * # PBRSpecularGlossiness - * * Converts a {@link Material} to a spec/gloss workflow. See {@link KHRMaterialsPBRSpecularGlossiness}. */ export class PBRSpecularGlossiness extends ExtensionProperty { @@ -57,12 +55,12 @@ export class PBRSpecularGlossiness extends ExtensionProperty { @@ -90,7 +88,7 @@ export class Sheen extends ExtensionProperty { return this.getRef('sheenColorTexture') ? this.getRef('sheenColorTextureInfo') : null; } - /** Sets sheen color texture. See {@link getSheenColorTexture}. */ + /** Sets sheen color texture. See {@link Sheen.getSheenColorTexture getSheenColorTexture}. */ public setSheenColorTexture(texture: Texture | null): this { return this.setRef('sheenColorTexture', texture, { channels: R | G | B, isColor: true }); } @@ -99,12 +97,12 @@ export class Sheen extends ExtensionProperty { * Sheen roughness. */ - /** Sheen roughness; linear multiplier. See {@link getSheenRoughnessTexture}. */ + /** Sheen roughness; linear multiplier. See {@link Sheen.getSheenRoughnessTexture getSheenRoughnessTexture}. */ public getSheenRoughnessFactor(): number { return this.get('sheenRoughnessFactor'); } - /** Sheen roughness; linear multiplier. See {@link getSheenRoughnessTexture}. */ + /** Sheen roughness; linear multiplier. See {@link Sheen.getSheenRoughnessTexture getSheenRoughnessTexture}. */ public setSheenRoughnessFactor(factor: number): this { return this.set('sheenRoughnessFactor', factor); } diff --git a/packages/extensions/src/khr-materials-specular/materials-specular.ts b/packages/extensions/src/khr-materials-specular/materials-specular.ts index 5a16dac95..e4cca024e 100644 --- a/packages/extensions/src/khr-materials-specular/materials-specular.ts +++ b/packages/extensions/src/khr-materials-specular/materials-specular.ts @@ -12,8 +12,6 @@ interface SpecularDef { } /** - * # KHRMaterialsSpecular - * * [`KHR_materials_specular`](https://github.com/KhronosGroup/gltf/blob/main/extensions/2.0/Khronos/KHR_materials_specular/) * adjusts the strength of the specular reflection in the dielectric BRDF. * diff --git a/packages/extensions/src/khr-materials-specular/specular.ts b/packages/extensions/src/khr-materials-specular/specular.ts index 00e39995d..7cd0fff25 100644 --- a/packages/extensions/src/khr-materials-specular/specular.ts +++ b/packages/extensions/src/khr-materials-specular/specular.ts @@ -23,8 +23,6 @@ interface ISpecular extends IProperty { const { R, G, B, A } = TextureChannel; /** - * # Specular - * * Defines specular reflectivity on a PBR {@link Material}. See {@link KHRMaterialsSpecular}. */ export class Specular extends ExtensionProperty { @@ -54,32 +52,32 @@ export class Specular extends ExtensionProperty { * Specular. */ - /** Specular; linear multiplier. See {@link getSpecularTexture}. */ + /** Specular; linear multiplier. See {@link Specular.getSpecularTexture getSpecularTexture}. */ public getSpecularFactor(): number { return this.get('specularFactor'); } - /** Specular; linear multiplier. See {@link getSpecularTexture}. */ + /** Specular; linear multiplier. See {@link Specular.getSpecularTexture getSpecularTexture}. */ public setSpecularFactor(factor: number): this { return this.set('specularFactor', factor); } - /** Specular color; Linear-sRGB components. See {@link getSpecularTexture}. */ + /** Specular color; Linear-sRGB components. See {@link Specular.getSpecularTexture getSpecularTexture}. */ public getSpecularColorFactor(): vec3 { return this.get('specularColorFactor'); } - /** Specular color; Linear-sRGB components. See {@link getSpecularTexture}. */ + /** Specular color; Linear-sRGB components. See {@link Specular.getSpecularTexture getSpecularTexture}. */ public setSpecularColorFactor(factor: vec3): this { return this.set('specularColorFactor', factor); } - /** Specular color; sRGB hexadecimal color. See {@link getSpecularTexture} */ + /** Specular color; sRGB hexadecimal color. See {@link Specular.getSpecularTexture getSpecularTexture} */ public getSpecularColorHex(): number { return ColorUtils.factorToHex(this.getSpecularColorFactor()); } - /** Specular color; sRGB hexadecimal color. See {@link getSpecularTexture} */ + /** Specular color; sRGB hexadecimal color. See {@link Specular.getSpecularTexture getSpecularTexture} */ public setSpecularColorHex(hex: number): this { const factor = this.getSpecularColorFactor().slice() as vec3; return this.set('specularColorFactor', ColorUtils.hexToFactor(hex, factor)); @@ -105,7 +103,7 @@ export class Specular extends ExtensionProperty { return this.getRef('specularTexture') ? this.getRef('specularTextureInfo') : null; } - /** Sets specular texture. See {@link getSpecularTexture}. */ + /** Sets specular texture. See {@link Specular.getSpecularTexture getSpecularTexture}. */ public setSpecularTexture(texture: Texture | null): this { return this.setRef('specularTexture', texture, { channels: A }); } @@ -129,7 +127,7 @@ export class Specular extends ExtensionProperty { return this.getRef('specularColorTexture') ? this.getRef('specularColorTextureInfo') : null; } - /** Sets specular color texture. See {@link getSpecularColorTexture}. */ + /** Sets specular color texture. See {@link Specular.getSpecularColorTexture getSpecularColorTexture}. */ public setSpecularColorTexture(texture: Texture | null): this { return this.setRef('specularColorTexture', texture, { channels: R | G | B, isColor: true }); } diff --git a/packages/extensions/src/khr-materials-transmission/materials-transmission.ts b/packages/extensions/src/khr-materials-transmission/materials-transmission.ts index f572ec30e..400c40539 100644 --- a/packages/extensions/src/khr-materials-transmission/materials-transmission.ts +++ b/packages/extensions/src/khr-materials-transmission/materials-transmission.ts @@ -10,8 +10,6 @@ interface TransmissionDef { } /** - * # KHRMaterialsTransmission - * * [`KHR_materials_transmission`](https://github.com/KhronosGroup/gltf/blob/main/extensions/2.0/Khronos/KHR_materials_transmission/) * provides a common type of optical transparency: infinitely-thin materials with no refraction, * scattering, or dispersion. diff --git a/packages/extensions/src/khr-materials-transmission/transmission.ts b/packages/extensions/src/khr-materials-transmission/transmission.ts index 07864e756..fadfa844a 100644 --- a/packages/extensions/src/khr-materials-transmission/transmission.ts +++ b/packages/extensions/src/khr-materials-transmission/transmission.ts @@ -18,8 +18,6 @@ interface ITransmission extends IProperty { const { R } = TextureChannel; /** - * # Transmission - * * Defines optical transmission on a PBR {@link Material}. See {@link KHRMaterialsTransmission}. */ export class Transmission extends ExtensionProperty { @@ -46,12 +44,12 @@ export class Transmission extends ExtensionProperty { * Transmission. */ - /** Transmission; linear multiplier. See {@link getTransmissionTexture}. */ + /** Transmission; linear multiplier. See {@link Transmission.getTransmissionTexture getTransmissionTexture}. */ public getTransmissionFactor(): number { return this.get('transmissionFactor'); } - /** Transmission; linear multiplier. See {@link getTransmissionTexture}. */ + /** Transmission; linear multiplier. See {@link Transmission.getTransmissionTexture getTransmissionTexture}. */ public setTransmissionFactor(factor: number): this { return this.set('transmissionFactor', factor); } @@ -74,7 +72,7 @@ export class Transmission extends ExtensionProperty { return this.getRef('transmissionTexture') ? this.getRef('transmissionTextureInfo') : null; } - /** Sets transmission texture. See {@link getTransmissionTexture}. */ + /** Sets transmission texture. See {@link Transmission.getTransmissionTexture getTransmissionTexture}. */ public setTransmissionTexture(texture: Texture | null): this { return this.setRef('transmissionTexture', texture, { channels: R }); } diff --git a/packages/extensions/src/khr-materials-unlit/materials-unlit.ts b/packages/extensions/src/khr-materials-unlit/materials-unlit.ts index cf8dda623..eaf7ceb85 100644 --- a/packages/extensions/src/khr-materials-unlit/materials-unlit.ts +++ b/packages/extensions/src/khr-materials-unlit/materials-unlit.ts @@ -5,8 +5,6 @@ import { Unlit } from './unlit.js'; const NAME = KHR_MATERIALS_UNLIT; /** - * # KHRMaterialsUnlit - * * [`KHR_materials_unlit`](https://github.com/KhronosGroup/gltf/blob/main/extensions/2.0/Khronos/KHR_materials_unlit/) * defines an unlit shading model for use in glTF 2.0 materials. * diff --git a/packages/extensions/src/khr-materials-unlit/unlit.ts b/packages/extensions/src/khr-materials-unlit/unlit.ts index 871e19203..4f464b038 100644 --- a/packages/extensions/src/khr-materials-unlit/unlit.ts +++ b/packages/extensions/src/khr-materials-unlit/unlit.ts @@ -3,8 +3,6 @@ import { PropertyType } from '@gltf-transform/core'; import { KHR_MATERIALS_UNLIT } from '../constants.js'; /** - * # Unlit - * * Converts a PBR {@link Material} to an unlit shading model. See {@link KHRMaterialsUnlit}. */ export class Unlit extends ExtensionProperty { diff --git a/packages/extensions/src/khr-materials-variants/mapping-list.ts b/packages/extensions/src/khr-materials-variants/mapping-list.ts index d3fb76d6d..a2151c4b3 100644 --- a/packages/extensions/src/khr-materials-variants/mapping-list.ts +++ b/packages/extensions/src/khr-materials-variants/mapping-list.ts @@ -7,8 +7,6 @@ interface IMappingList extends IProperty { } /** - * # MappingList - * * List of material variant {@link Mapping}s. See {@link KHRMaterialsVariants}. */ export class MappingList extends ExtensionProperty { diff --git a/packages/extensions/src/khr-materials-variants/mapping.ts b/packages/extensions/src/khr-materials-variants/mapping.ts index 3ad114113..f689c5ec1 100644 --- a/packages/extensions/src/khr-materials-variants/mapping.ts +++ b/packages/extensions/src/khr-materials-variants/mapping.ts @@ -8,8 +8,6 @@ interface IMapping extends IProperty { } /** - * # Mapping - * * Maps {@link Variant}s to {@link Material}s. See {@link KHRMaterialsVariants}. */ export class Mapping extends ExtensionProperty { diff --git a/packages/extensions/src/khr-materials-variants/materials-variants.ts b/packages/extensions/src/khr-materials-variants/materials-variants.ts index f6f24bfb4..6f8f786e3 100644 --- a/packages/extensions/src/khr-materials-variants/materials-variants.ts +++ b/packages/extensions/src/khr-materials-variants/materials-variants.ts @@ -24,12 +24,10 @@ interface VariantMappingDef { } /** - * # KHRMaterialsVariants - * * [`KHR_materials_variants`](https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_variants/) * defines alternate {@link Material} states for any {@link Primitive} in the scene. * - * ![Illustration](/media/extensions/khr-materials-variants.png) + * ![Illustration](/media/extensions/khr-materials-variants.jpg) * * > _**Figure:** A sneaker, in three material variants. Source: Khronos Group._ * diff --git a/packages/extensions/src/khr-materials-variants/variant.ts b/packages/extensions/src/khr-materials-variants/variant.ts index e3c390894..6e96480ac 100644 --- a/packages/extensions/src/khr-materials-variants/variant.ts +++ b/packages/extensions/src/khr-materials-variants/variant.ts @@ -2,8 +2,6 @@ import { ExtensionProperty } from '@gltf-transform/core'; import { KHR_MATERIALS_VARIANTS } from '../constants.js'; /** - * # Variant - * * Defines a variant of a {@link Material}. See {@link KHRMaterialsVariants}. */ export class Variant extends ExtensionProperty { diff --git a/packages/extensions/src/khr-materials-volume/materials-volume.ts b/packages/extensions/src/khr-materials-volume/materials-volume.ts index 971fa95f5..d7ea8687e 100644 --- a/packages/extensions/src/khr-materials-volume/materials-volume.ts +++ b/packages/extensions/src/khr-materials-volume/materials-volume.ts @@ -12,8 +12,6 @@ interface VolumeDef { } /** - * # KHRMaterialsVolume - * * [KHR_materials_volume](https://github.com/KhronosGroup/gltf/blob/main/extensions/2.0/Khronos/KHR_materials_volume/) * adds refraction, absorption, or scattering to a glTF PBR material already using transmission or * translucency. diff --git a/packages/extensions/src/khr-materials-volume/volume.ts b/packages/extensions/src/khr-materials-volume/volume.ts index 9157fb525..e4b66a099 100644 --- a/packages/extensions/src/khr-materials-volume/volume.ts +++ b/packages/extensions/src/khr-materials-volume/volume.ts @@ -22,8 +22,6 @@ interface IVolume extends IProperty { const { G } = TextureChannel; /** - * # Volume - * * Defines volume on a PBR {@link Material}. See {@link KHRMaterialsVolume}. */ export class Volume extends ExtensionProperty { diff --git a/packages/extensions/src/khr-mesh-quantization/mesh-quantization.ts b/packages/extensions/src/khr-mesh-quantization/mesh-quantization.ts index efb777d53..6432a32fa 100644 --- a/packages/extensions/src/khr-mesh-quantization/mesh-quantization.ts +++ b/packages/extensions/src/khr-mesh-quantization/mesh-quantization.ts @@ -4,8 +4,6 @@ import { KHR_MESH_QUANTIZATION } from '../constants.js'; const NAME = KHR_MESH_QUANTIZATION; /** - * # KHRMeshQuantization - * * [`KHR_mesh_quantization`](https://github.com/KhronosGroup/gltf/blob/main/extensions/2.0/Khronos/KHR_mesh_quantization/) * expands allowed component types for vertex attributes to include 16- and 8-bit storage. * diff --git a/packages/extensions/src/khr-texture-basisu/texture-basisu.ts b/packages/extensions/src/khr-texture-basisu/texture-basisu.ts index 3fcd80309..93023a427 100644 --- a/packages/extensions/src/khr-texture-basisu/texture-basisu.ts +++ b/packages/extensions/src/khr-texture-basisu/texture-basisu.ts @@ -71,8 +71,6 @@ class KTX2ImageUtils implements ImageUtilsFormat { } /** - * # KHRTextureBasisu - * * [`KHR_texture_basisu`](https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu) * enables KTX2 GPU textures with Basis Universal supercompression for any material texture. * @@ -107,7 +105,7 @@ class KTX2ImageUtils implements ImageUtilsFormat { * * Compression is not done automatically when adding the extension as shown above — you must * compress the image data first, then pass the `.ktx2` payload to {@link Texture.setImage}. The - * [glTF-Transform CLI](/cli.html) has functions to help with this, or any similar KTX2-capable + * glTF-Transform CLI has functions to help with this, or any similar KTX2-capable * utility will work. * * When the `KHR_texture_basisu` extension is added to a file by glTF-Transform, the extension diff --git a/packages/extensions/src/khr-texture-transform/texture-transform.ts b/packages/extensions/src/khr-texture-transform/texture-transform.ts index e473558b6..ffc3336bf 100644 --- a/packages/extensions/src/khr-texture-transform/texture-transform.ts +++ b/packages/extensions/src/khr-texture-transform/texture-transform.ts @@ -12,8 +12,6 @@ interface TransformDef { } /** - * # KHRTextureTransform - * * [`KHR_texture_transform`](https://github.com/KhronosGroup/gltf/blob/main/extensions/2.0/Khronos/KHR_texture_transform/) * adds offset, rotation, and scale to {@link TextureInfo} properties. * diff --git a/packages/extensions/src/khr-texture-transform/transform.ts b/packages/extensions/src/khr-texture-transform/transform.ts index f7ece3f86..ba95ca154 100644 --- a/packages/extensions/src/khr-texture-transform/transform.ts +++ b/packages/extensions/src/khr-texture-transform/transform.ts @@ -10,8 +10,6 @@ interface ITransform extends IProperty { } /** - * # Transform - * * Defines UV transform for a {@link TextureInfo}. See {@link KHRTextureTransform}. */ export class Transform extends ExtensionProperty { diff --git a/packages/extensions/src/khr-xmp-json-ld/packet.ts b/packages/extensions/src/khr-xmp-json-ld/packet.ts index 449c0a0c4..d88b12a76 100644 --- a/packages/extensions/src/khr-xmp-json-ld/packet.ts +++ b/packages/extensions/src/khr-xmp-json-ld/packet.ts @@ -23,8 +23,6 @@ interface IPacket extends IProperty { } /** - * # Packet - * * Defines an XMP packet associated with a Document or Property. See {@link KHRXMP}. */ export class Packet extends ExtensionProperty { diff --git a/packages/extensions/src/khr-xmp-json-ld/xmp.ts b/packages/extensions/src/khr-xmp-json-ld/xmp.ts index 5bbd06801..801245c5b 100644 --- a/packages/extensions/src/khr-xmp-json-ld/xmp.ts +++ b/packages/extensions/src/khr-xmp-json-ld/xmp.ts @@ -36,8 +36,6 @@ interface XMPRootDef { } /** - * # KHRXMP - * * [KHR_xmp_json_ld](https://github.com/KhronosGroup/gltf/blob/main/extensions/2.0/Khronos/KHR_xmp_json_ld/) * defines XMP metadata associated with a glTF asset. * diff --git a/packages/functions/README.md b/packages/functions/README.md index 218e30e44..8f5508863 100644 --- a/packages/functions/README.md +++ b/packages/functions/README.md @@ -7,79 +7,12 @@ Part of the glTF-Transform project. - GitHub: https://github.com/donmccurdy/glTF-Transform -- Project Documentation: https://gltf-transform.donmccurdy.com/ -- Package Documentation: https://gltf-transform.donmccurdy.com/functions.html - -## Quickstart - -Install the scripting packages: - -```bash -npm install --save @gltf-transform/core @gltf-transform/extensions @gltf-transform/functions -``` - -Read and write glTF scenes with platform I/O utilities [WebIO](https://gltf-transform.donmccurdy.com/classes/core.webio.html), [NodeIO](https://gltf-transform.donmccurdy.com/classes/core.nodeio.html), or [DenoIO](https://gltf-transform.donmccurdy.com/classes/core.denoio.html): - -```typescript -import { Document, NodeIO } from '@gltf-transform/core'; -import { KHRONOS_EXTENSIONS } from '@gltf-transform/extensions'; -import draco3d from 'draco3dgltf'; - -// Configure I/O. -const io = new NodeIO() - .registerExtensions(KHRONOS_EXTENSIONS) - .registerDependencies({ - 'draco3d.decoder': await draco3d.createDecoderModule(), // Optional. - 'draco3d.encoder': await draco3d.createEncoderModule(), // Optional. - }); - -// Read from URL. -const document = await io.read('path/to/model.glb'); - -// Write to byte array (Uint8Array). -const glb = await io.writeBinary(document); -``` - -To perform changes to an existing glTF [Document](https://gltf-transform.donmccurdy.com/classes/core.document.html), import off-the-shelf scripts from the [Functions](https://gltf-transform.donmccurdy.com/functions.html) package, or write your own using API classes like [Material](https://gltf-transform.donmccurdy.com/classes/core.material.html), [Primitive](https://gltf-transform.donmccurdy.com/classes/core.primitive.html), and [Texture](https://gltf-transform.donmccurdy.com/classes/core.texture.html). - -```typescript -import { resample, prune, dedup, draco, textureCompress } from '@gltf-transform/functions'; -import * as sharp from 'sharp'; // Node.js only. - -await document.transform( - // Losslessly resample animation frames. - resample(), - // Remove unused nodes, textures, or other data. - prune(), - // Remove duplicate vertex or texture data, if any. - dedup(), - // Compress mesh geometry with Draco. - draco(), - // Convert textures to WebP (Requires glTF Transform v3 and Node.js). - textureCompress({ - encoder: sharp, - targetFormat: 'webp', - resize: [1024, 2024], - }), - // Custom transform. - backfaceCulling({cull: true}), -); - -// Custom transform: enable/disable backface culling. -function backfaceCulling(options) { - return (document) => { - for (const material of document.getRoot().listMaterials()) { - material.setDoubleSided(!options.cull); - } - }; -} -``` - -To learn how glTF-Transform works, and the architecture of the scripting API, start with [Concepts](https://gltf-transform.donmccurdy.com/concepts.html). To try out the scripting API without installing anything, visit [gltf.report/](https://gltf.report/), load a glTF model, and open the *Script* tab. +- Project Documentation: https://gltf-transform.donmccurdy.com +- Package Documentation: https://gltf-transform.donmccurdy.com/functions ## Credits -See [*Credits*](https://gltf-transform.donmccurdy.com/credits.html). +See [*Credits*](https://gltf-transform.donmccurdy.com/credits). ## License diff --git a/packages/functions/src/center.ts b/packages/functions/src/center.ts index 6d3e83971..ef6480ec3 100644 --- a/packages/functions/src/center.ts +++ b/packages/functions/src/center.ts @@ -21,6 +21,8 @@ const CENTER_DEFAULTS: Required = { pivot: 'center' }; * ```ts * await document.transform(center({pivot: 'below'})); * ``` + * + * @category Transforms */ export function center(_options: CenterOptions = CENTER_DEFAULTS): Transform { const options = { ...CENTER_DEFAULTS, ..._options } as Required; diff --git a/packages/functions/src/dedup.ts b/packages/functions/src/dedup.ts index f8193a179..21eb74d85 100755 --- a/packages/functions/src/dedup.ts +++ b/packages/functions/src/dedup.ts @@ -46,6 +46,8 @@ const DEDUP_DEFAULTS: Required = { * * document.getRoot().listMeshes(); // → [Mesh] * ``` + * + * @category Transforms */ export function dedup(_options: DedupOptions = DEDUP_DEFAULTS): Transform { const options = { ...DEDUP_DEFAULTS, ..._options } as Required; diff --git a/packages/functions/src/dequantize.ts b/packages/functions/src/dequantize.ts index e4466443e..86153143e 100644 --- a/packages/functions/src/dequantize.ts +++ b/packages/functions/src/dequantize.ts @@ -21,6 +21,8 @@ const DEQUANTIZE_DEFAULTS: DequantizeOptions = { * Dequantize {@link Primitive Primitives}, removing {@link KHRMeshQuantization `KHR_mesh_quantization`} * if present. Dequantization will increase the size of the mesh on disk and in memory, but may be * necessary for compatibility with applications that don't support quantization. + * + * @category Transforms */ export function dequantize(_options: DequantizeOptions = DEQUANTIZE_DEFAULTS): Transform { const options = { ...DEQUANTIZE_DEFAULTS, ..._options } as Required; diff --git a/packages/functions/src/draco.ts b/packages/functions/src/draco.ts index 81b7b6ee0..f5c7a42cb 100644 --- a/packages/functions/src/draco.ts +++ b/packages/functions/src/draco.ts @@ -34,6 +34,8 @@ export const DRACO_DEFAULTS: DracoOptions = { * This type of compression can reduce the size of triangle geometry. * * This function is a thin wrapper around the {@link KHRDracoMeshCompression} extension itself. + * + * @category Transforms */ export function draco(_options: DracoOptions = DRACO_DEFAULTS): Transform { const options = { ...DRACO_DEFAULTS, ..._options } as Required; diff --git a/packages/functions/src/flatten.ts b/packages/functions/src/flatten.ts index cf83a1852..5c33ee7e0 100644 --- a/packages/functions/src/flatten.ts +++ b/packages/functions/src/flatten.ts @@ -27,6 +27,8 @@ export const FLATTEN_DEFAULTS: Required = {}; * * await document.transform(flatten()); * ``` + * + * @category Transforms */ export function flatten(_options: FlattenOptions = FLATTEN_DEFAULTS): Transform { // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/packages/functions/src/instance.ts b/packages/functions/src/instance.ts index 89861f75b..819fdfadd 100644 --- a/packages/functions/src/instance.ts +++ b/packages/functions/src/instance.ts @@ -29,6 +29,8 @@ const INSTANCE_DEFAULTS: Required = { * instance({min: 2}), * ); * ``` + * + * @category Transforms */ export function instance(_options: InstanceOptions = INSTANCE_DEFAULTS): Transform { const options = { ...INSTANCE_DEFAULTS, ..._options } as Required; diff --git a/packages/functions/src/join.ts b/packages/functions/src/join.ts index ae3840f0c..2d8fd3825 100644 --- a/packages/functions/src/join.ts +++ b/packages/functions/src/join.ts @@ -74,6 +74,8 @@ export const JOIN_DEFAULTS: Required = { * join({ keepNamed: false }), * ); * ``` + * + * @category Transforms */ export function join(_options: JoinOptions = JOIN_DEFAULTS): Transform { const options = { ...JOIN_DEFAULTS, ..._options } as Required; diff --git a/packages/functions/src/list-texture-channels.ts b/packages/functions/src/list-texture-channels.ts index d9ffbb460..36b282b7e 100644 --- a/packages/functions/src/list-texture-channels.ts +++ b/packages/functions/src/list-texture-channels.ts @@ -14,6 +14,7 @@ import { Material, TextureChannel, PropertyType } from '@gltf-transform/core'; * if (channels.includes(TextureChannel.R)) { * console.log('texture red channel used'); * } + * ``` */ export function listTextureChannels(texture: Texture): TextureChannel[] { const mask = getTextureChannelMask(texture); diff --git a/packages/functions/src/meshopt.ts b/packages/functions/src/meshopt.ts index f4f21d3dd..b99ce6fd1 100644 --- a/packages/functions/src/meshopt.ts +++ b/packages/functions/src/meshopt.ts @@ -36,6 +36,8 @@ const NAME = 'meshopt'; * reorder({encoder: MeshoptEncoder, level: 'medium'}) * ); * ``` + * + * @category Transforms */ export function meshopt(_options: MeshoptOptions): Transform { const options = { ...MESHOPT_DEFAULTS, ..._options } as Required; diff --git a/packages/functions/src/metal-rough.ts b/packages/functions/src/metal-rough.ts index c500a0d4c..835f9f977 100644 --- a/packages/functions/src/metal-rough.ts +++ b/packages/functions/src/metal-rough.ts @@ -21,6 +21,8 @@ const METALROUGH_DEFAULTS: Required = {}; * and is a prerequisite for other advanced PBR extensions provided by glTF. * * No options are currently implemented for this function. + * + * @category Transforms */ export function metalRough(_options: MetalRoughOptions = METALROUGH_DEFAULTS): Transform { // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/packages/functions/src/normals.ts b/packages/functions/src/normals.ts index 0342f1e15..f43c49971 100644 --- a/packages/functions/src/normals.ts +++ b/packages/functions/src/normals.ts @@ -25,6 +25,8 @@ const NORMALS_DEFAULTS: Required = { * * await document.transform(normals({overwrite: true})); * ``` + * + * @category Transforms */ export function normals(_options: NormalsOptions = NORMALS_DEFAULTS): Transform { const options = { ...NORMALS_DEFAULTS, ..._options } as Required; diff --git a/packages/functions/src/partition.ts b/packages/functions/src/partition.ts index 235aaddcb..2bc5cf1d1 100755 --- a/packages/functions/src/partition.ts +++ b/packages/functions/src/partition.ts @@ -28,6 +28,8 @@ const PARTITION_DEFAULTS: Required = { * * document.getRoot().listBuffers(); // → [Buffer, Buffer, ...] * ``` + * + * @category Transforms */ export function partition(_options: PartitionOptions = PARTITION_DEFAULTS): Transform { const options = { ...PARTITION_DEFAULTS, ..._options } as Required; diff --git a/packages/functions/src/prune.ts b/packages/functions/src/prune.ts index 1f93d4e76..b070ebe1c 100644 --- a/packages/functions/src/prune.ts +++ b/packages/functions/src/prune.ts @@ -62,6 +62,8 @@ const PRUNE_DEFAULTS: Required = { * ``` * * No options are currently implemented for this function. + * + * @category Transforms */ export function prune(_options: PruneOptions = PRUNE_DEFAULTS): Transform { // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/packages/functions/src/quantize.ts b/packages/functions/src/quantize.ts index 7aadb2b61..4c7ac2dca 100644 --- a/packages/functions/src/quantize.ts +++ b/packages/functions/src/quantize.ts @@ -83,6 +83,8 @@ export const QUANTIZE_DEFAULTS: Required = { /** * Quantizes vertex attributes with `KHR_mesh_quantization`, reducing the size and memory footprint * of the file. + * + * @category Transforms */ export function quantize(_options: QuantizeOptions = QUANTIZE_DEFAULTS): Transform { const options = { ...QUANTIZE_DEFAULTS, ..._options } as Required; diff --git a/packages/functions/src/reorder.ts b/packages/functions/src/reorder.ts index ba8adb359..175e12e6f 100644 --- a/packages/functions/src/reorder.ts +++ b/packages/functions/src/reorder.ts @@ -37,6 +37,8 @@ const REORDER_DEFAULTS: Required> = { * reorder({encoder: MeshoptEncoder}) * ); * ``` + * + * @category Transforms */ export function reorder(_options: ReorderOptions): Transform { const options = { ...REORDER_DEFAULTS, ..._options } as Required; @@ -98,6 +100,7 @@ export function reorder(_options: ReorderOptions): Transform { }); } +/** @hidden */ interface LayoutPlan { indicesToMode: Map; indicesToAttributes: SetMap; @@ -109,8 +112,10 @@ interface LayoutPlan { * index:attribute[] groups. Where different indices are used with the same * attributes, we'll end up splitting the primitives to not share attributes, * which appears to be consistent with the Meshopt implementation. + * + * @hidden */ -export function createLayoutPlan(document: Document): LayoutPlan { +function createLayoutPlan(document: Document): LayoutPlan { const indicesToAttributes = new SetMap(); const indicesToMode = new Map(); const attributesToPrimitives = new SetMap(); diff --git a/packages/functions/src/resample.ts b/packages/functions/src/resample.ts index 60f4dc3dd..117dd47a3 100644 --- a/packages/functions/src/resample.ts +++ b/packages/functions/src/resample.ts @@ -49,6 +49,8 @@ const RESAMPLE_DEFAULTS: Required = { * // WebAssembly (faster) * await document.transform(resample({ ready, resample })); * ``` + * + * @category Transforms */ export function resample(_options: ResampleOptions = RESAMPLE_DEFAULTS): Transform { const options = { ...RESAMPLE_DEFAULTS, ..._options } as Required; diff --git a/packages/functions/src/sequence.ts b/packages/functions/src/sequence.ts index 358a38cff..0dc32629a 100644 --- a/packages/functions/src/sequence.ts +++ b/packages/functions/src/sequence.ts @@ -23,23 +23,23 @@ const SEQUENCE_DEFAULTS: Required = { /** * Creates an {@link Animation} displaying each of the specified {@link Node}s sequentially. + * + * @category Transforms */ -export function sequence (_options: SequenceOptions = SEQUENCE_DEFAULTS): Transform { - const options = {...SEQUENCE_DEFAULTS, ..._options} as Required; +export function sequence(_options: SequenceOptions = SEQUENCE_DEFAULTS): Transform { + const options = { ...SEQUENCE_DEFAULTS, ..._options } as Required; return createTransform(NAME, (doc: Document): void => { - const logger = doc.getLogger(); const root = doc.getRoot(); const fps = options.fps; // Collect sequence nodes. - const sequenceNodes = root.listNodes() - .filter((node) => node.getName().match(options.pattern)); + const sequenceNodes = root.listNodes().filter((node) => node.getName().match(options.pattern)); // Sort by node name. if (options.sort) { - sequenceNodes.sort((a, b) => a.getName() > b.getName() ? 1 : -1); + sequenceNodes.sort((a, b) => (a.getName() > b.getName() ? 1 : -1)); } // Create animation cycling visibility of each node. @@ -61,18 +61,19 @@ export function sequence (_options: SequenceOptions = SEQUENCE_DEFAULTS): Transf } // Append channel to animation sequence. - const input = doc.createAccessor() - .setArray(new Float32Array(inputArray)) - .setBuffer(animBuffer); - const output = doc.createAccessor() + const input = doc.createAccessor().setArray(new Float32Array(inputArray)).setBuffer(animBuffer); + const output = doc + .createAccessor() .setArray(new Float32Array(outputArray)) .setBuffer(animBuffer) .setType(Accessor.Type.VEC3); - const sampler = doc.createAnimationSampler() + const sampler = doc + .createAnimationSampler() .setInterpolation(AnimationSampler.Interpolation.STEP) .setInput(input) .setOutput(output); - const channel = doc.createAnimationChannel() + const channel = doc + .createAnimationChannel() .setTargetNode(node) .setTargetPath(AnimationChannel.TargetPath.SCALE) .setSampler(sampler); @@ -80,7 +81,5 @@ export function sequence (_options: SequenceOptions = SEQUENCE_DEFAULTS): Transf }); logger.debug(`${NAME}: Complete.`); - }); - } diff --git a/packages/functions/src/simplify.ts b/packages/functions/src/simplify.ts index 67083c5dc..0b828e3bc 100644 --- a/packages/functions/src/simplify.ts +++ b/packages/functions/src/simplify.ts @@ -65,6 +65,8 @@ export const SIMPLIFY_DEFAULTS: Required> = * * References: * - https://github.com/zeux/meshoptimizer/blob/master/js/README.md#simplifier + * + * @category Transforms */ export function simplify(_options: SimplifyOptions): Transform { const options = { ...SIMPLIFY_DEFAULTS, ..._options } as Required; diff --git a/packages/functions/src/sparse.ts b/packages/functions/src/sparse.ts index 8848e5911..a27bcf9a3 100644 --- a/packages/functions/src/sparse.ts +++ b/packages/functions/src/sparse.ts @@ -36,6 +36,7 @@ const SPARSE_DEFAULTS: Required = { * ``` * * @experimental + * @category Transforms */ export function sparse(_options: SparseOptions = SPARSE_DEFAULTS): Transform { const options = { ...SPARSE_DEFAULTS, ..._options } as Required; diff --git a/packages/functions/src/tangents.ts b/packages/functions/src/tangents.ts index 48ba4b9b4..5ebf4dda3 100644 --- a/packages/functions/src/tangents.ts +++ b/packages/functions/src/tangents.ts @@ -35,6 +35,8 @@ const TANGENTS_DEFAULTS: Required> = { * tangents({generateTangents}) * ); * ``` + * + * @category Transforms */ export function tangents(_options: TangentsOptions = TANGENTS_DEFAULTS): Transform { if (!_options.generateTangents) { diff --git a/packages/functions/src/texture-compress.ts b/packages/functions/src/texture-compress.ts index f8ea14fe5..36ca07b05 100644 --- a/packages/functions/src/texture-compress.ts +++ b/packages/functions/src/texture-compress.ts @@ -86,6 +86,8 @@ export const TEXTURE_COMPRESS_DEFAULTS: Required; diff --git a/packages/functions/src/texture-resize.ts b/packages/functions/src/texture-resize.ts index ec1cf03c2..60b732c7f 100644 --- a/packages/functions/src/texture-resize.ts +++ b/packages/functions/src/texture-resize.ts @@ -39,11 +39,13 @@ export const TEXTURE_RESIZE_DEFAULTS: TextureResizeOptions = { }; /** - * Resize PNG or JPEG {@link Texture Textures}, with {@link https://en.wikipedia.org/wiki/Lanczos_algorithm Lanczos filtering}. + * Resize PNG or JPEG {@link Texture Textures}, with [Lanczos filtering](https://en.wikipedia.org/wiki/Lanczos_algorithm). * - * Implementation provided by {@link https://github.com/donmccurdy/ndarray-lanczos ndarray-lanczos} + * Implementation provided by [ndarray-lanczos](https://github.com/donmccurdy/ndarray-lanczos) * package, which works in Web and Node.js environments. For a faster and more robust implementation * based on Sharp (available only in Node.js), use {@link textureCompress} with the 'resize' option. + * + * @category Transforms */ export function textureResize(_options: TextureResizeOptions = TEXTURE_RESIZE_DEFAULTS): Transform { const options = { ...TEXTURE_RESIZE_DEFAULTS, ..._options } as Required; diff --git a/packages/functions/src/unlit.ts b/packages/functions/src/unlit.ts index 26cb98c6d..22b40baa1 100644 --- a/packages/functions/src/unlit.ts +++ b/packages/functions/src/unlit.ts @@ -1,6 +1,9 @@ import type { Document, Transform } from '@gltf-transform/core'; import { KHRMaterialsUnlit } from '@gltf-transform/extensions'; +/** + * @category Transforms + */ export function unlit(): Transform { return (doc: Document): void => { const unlitExtension = doc.createExtension(KHRMaterialsUnlit) as KHRMaterialsUnlit; diff --git a/packages/functions/src/unpartition.ts b/packages/functions/src/unpartition.ts index f1d0821f6..163feef29 100644 --- a/packages/functions/src/unpartition.ts +++ b/packages/functions/src/unpartition.ts @@ -21,6 +21,8 @@ const UNPARTITION_DEFAULTS: Required = {}; * * document.getRoot().listBuffers(); // → [Buffer] * ``` + * + * @category Transforms */ export function unpartition(_options: UnpartitionOptions = UNPARTITION_DEFAULTS): Transform { // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/packages/functions/src/unweld.ts b/packages/functions/src/unweld.ts index b332ee562..5adc1be8e 100644 --- a/packages/functions/src/unweld.ts +++ b/packages/functions/src/unweld.ts @@ -1,4 +1,3 @@ - import type { Accessor, Document, ILogger, Transform, TypedArray } from '@gltf-transform/core'; import { createTransform, formatDeltaOp } from './utils.js'; @@ -16,6 +15,8 @@ const UNWELD_DEFAULTS: UnweldOptions = {}; * for creating hard edges. * * No options are currently implemented for this function. + * + * @category Transforms */ export function unweld(_options: UnweldOptions = UNWELD_DEFAULTS): Transform { // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/packages/functions/src/vertex-color-space.ts b/packages/functions/src/vertex-color-space.ts index 979cf79d1..83edbbd8d 100644 --- a/packages/functions/src/vertex-color-space.ts +++ b/packages/functions/src/vertex-color-space.ts @@ -28,6 +28,8 @@ export const colorspace = vertexColorSpace; * vertexColorspace({ inputColorSpace: 'srgb' }) * ); * ``` + * + * @category Transforms */ export function vertexColorSpace(options: ColorSpaceOptions): Transform { return createTransform(NAME, (doc: Document): void => { diff --git a/packages/functions/src/weld.ts b/packages/functions/src/weld.ts index bda4e3d7b..7dfec8da4 100644 --- a/packages/functions/src/weld.ts +++ b/packages/functions/src/weld.ts @@ -90,6 +90,8 @@ export const WELD_DEFAULTS: Required = { * weld({ tolerance: 0.001 }) * ); * ``` + * + * @category Transforms */ export function weld(_options: WeldOptions = WELD_DEFAULTS): Transform { const options = { ...WELD_DEFAULTS, ..._options } as Required; diff --git a/renovate.json b/renovate.json index 8993ccb82..56716fb01 100644 --- a/renovate.json +++ b/renovate.json @@ -3,14 +3,7 @@ "github>donmccurdy/renovate-config" ], "packageRules": [ - { - "description": "https://github.com/TypeStrong/typedoc/issues/1633", - "matchPackageNames": [ - "typedoc" - ], - "enabled": false - }, - { + { "description": "Node.js v14 EOL", "matchPackageNames": [ "listr2" diff --git a/vercel.json b/vercel.json deleted file mode 100644 index 29ae0454a..000000000 --- a/vercel.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "redirects": [ - { - "source": "/modules/functions{.html}?", - "destination": "/functions.html" - }, - { - "source": "/:group/:type(\\w+){.html}?", - "destination": "/:group/core.:type.html" - } - ], - "rewrites": [ - { - "source": "/:page(concepts|contributing|extensions|cli|credits){.html}?", - "destination": "/modules/pages.:page.html" - }, - { - "source": "/functions{.html}?", - "destination": "/modules/functions.html" - } - ] -} diff --git a/yarn.lock b/yarn.lock index fc89bb30e..385629dfc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -929,6 +929,116 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@esbuild/android-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.18.tgz#4aa8d8afcffb4458736ca9b32baa97d7cb5861ea" + integrity sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw== + +"@esbuild/android-arm@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.18.tgz#74a7e95af4ee212ebc9db9baa87c06a594f2a427" + integrity sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw== + +"@esbuild/android-x64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.18.tgz#1dcd13f201997c9fe0b204189d3a0da4eb4eb9b6" + integrity sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg== + +"@esbuild/darwin-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.18.tgz#444f3b961d4da7a89eb9bd35cfa4415141537c2a" + integrity sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ== + +"@esbuild/darwin-x64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.18.tgz#a6da308d0ac8a498c54d62e0b2bfb7119b22d315" + integrity sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A== + +"@esbuild/freebsd-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.18.tgz#b83122bb468889399d0d63475d5aea8d6829c2c2" + integrity sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA== + +"@esbuild/freebsd-x64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.18.tgz#af59e0e03fcf7f221b34d4c5ab14094862c9c864" + integrity sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew== + +"@esbuild/linux-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.18.tgz#8551d72ba540c5bce4bab274a81c14ed01eafdcf" + integrity sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ== + +"@esbuild/linux-arm@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.18.tgz#e09e76e526df4f665d4d2720d28ff87d15cdf639" + integrity sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg== + +"@esbuild/linux-ia32@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.18.tgz#47878860ce4fe73a36fd8627f5647bcbbef38ba4" + integrity sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ== + +"@esbuild/linux-loong64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.18.tgz#3f8fbf5267556fc387d20b2e708ce115de5c967a" + integrity sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ== + +"@esbuild/linux-mips64el@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.18.tgz#9d896d8f3c75f6c226cbeb840127462e37738226" + integrity sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA== + +"@esbuild/linux-ppc64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.18.tgz#3d9deb60b2d32c9985bdc3e3be090d30b7472783" + integrity sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ== + +"@esbuild/linux-riscv64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.18.tgz#8a943cf13fd24ff7ed58aefb940ef178f93386bc" + integrity sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA== + +"@esbuild/linux-s390x@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.18.tgz#66cb01f4a06423e5496facabdce4f7cae7cb80e5" + integrity sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw== + +"@esbuild/linux-x64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.18.tgz#23c26050c6c5d1359c7b774823adc32b3883b6c9" + integrity sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA== + +"@esbuild/netbsd-x64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.18.tgz#789a203d3115a52633ff6504f8cbf757f15e703b" + integrity sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg== + +"@esbuild/openbsd-x64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.18.tgz#d7b998a30878f8da40617a10af423f56f12a5e90" + integrity sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA== + +"@esbuild/sunos-x64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.18.tgz#ecad0736aa7dae07901ba273db9ef3d3e93df31f" + integrity sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg== + +"@esbuild/win32-arm64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.18.tgz#58dfc177da30acf956252d7c8ae9e54e424887c4" + integrity sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg== + +"@esbuild/win32-ia32@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.18.tgz#340f6163172b5272b5ae60ec12c312485f69232b" + integrity sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw== + +"@esbuild/win32-x64@0.17.18": + version "0.17.18" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz#3a8e57153905308db357fd02f57c180ee3a0a1fa" + integrity sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg== + "@eslint-community/eslint-utils@^4.2.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz#a831e6e468b4b2b5ae42bf658bea015bf10bc518" @@ -966,6 +1076,22 @@ resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== +"@greendoc/parse@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@greendoc/parse/-/parse-0.1.5.tgz#d818ae44bfea76a2622786323ffe35b28c13dcce" + integrity sha512-9gVdqE6m/Es+yO+rXKxCsgRFheNjRZv0rzdeUjbFT9p3Wv5v80V91uSe4R6gb8mcgchNK+0OD/Mx1hbgeD/l6A== + dependencies: + highlight.js "^11.8.0" + marked "^4.2.3" + ts-morph "^18.0.0" + +"@greendoc/svelte@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@greendoc/svelte/-/svelte-0.1.5.tgz#a86ddd3cccfb15c2d2ef2d7d347fdff5c54942b5" + integrity sha512-EUgFn/zb0I7ETZU+pFgPIrstK2XKJPSKDxlJCO9RvAvIfByhp2fJLtKXvuiz8J2m8hcKxG9HTNTz0MOTfJLsvQ== + dependencies: + "@greendoc/parse" "^0.1.5" + "@humanwhocodes/config-array@^0.11.8": version "0.11.8" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" @@ -1032,6 +1158,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== +"@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + "@jridgewell/trace-mapping@0.3.9": version "0.3.9" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" @@ -1048,6 +1179,14 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@jridgewell/trace-mapping@^0.3.17": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + "@lerna/child-process@6.6.2": version "6.6.2" resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-6.6.2.tgz#5d803c8dee81a4e013dc428292e77b365cba876c" @@ -1574,6 +1713,11 @@ dependencies: esquery "^1.0.1" +"@polka/url@^1.0.0-next.20": + version "1.0.0-next.21" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" + integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== + "@rollup/plugin-alias@^3.1.1": version "3.1.2" resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-3.1.2.tgz#c585b05be4a7782d269c69d13def56f44e417772" @@ -1657,11 +1801,57 @@ json5 "^2.2.0" magic-string "^0.25.0" +"@sveltejs/adapter-static@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@sveltejs/adapter-static/-/adapter-static-2.0.2.tgz#49afd27787fb73d789017d002a91031088494139" + integrity sha512-9wYtf6s6ew7DHUHMrt55YpD1FgV7oWql2IGsW5BXquLxqcY9vjrqCFo0TzzDpo+ZPZkW/v77k0eOP6tsAb8HmQ== + +"@sveltejs/kit@^1.5.0": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@sveltejs/kit/-/kit-1.16.2.tgz#639fd71abbb48ec819b909f051418bd4193f40e0" + integrity sha512-yxcpA4nvlVlJ+VyYnj0zD3QN05kfmoh4OyitlPrVG34nnZSHzFpE4eZ33X1A/tc9prslSFRhpM6rWngCs0nM8w== + dependencies: + "@sveltejs/vite-plugin-svelte" "^2.1.1" + "@types/cookie" "^0.5.1" + cookie "^0.5.0" + devalue "^4.3.0" + esm-env "^1.0.0" + kleur "^4.1.5" + magic-string "^0.30.0" + mime "^3.0.0" + sade "^1.8.1" + set-cookie-parser "^2.6.0" + sirv "^2.0.2" + tiny-glob "^0.2.9" + undici "~5.22.0" + +"@sveltejs/vite-plugin-svelte@^2.1.1": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.2.0.tgz#6e78e912dc0cff5e92bcb936f194e96b849356f9" + integrity sha512-KDtdva+FZrZlyug15KlbXuubntAPKcBau0K7QhAIqC5SAy0uDbjZwoexDRx0L0J2T4niEfC6FnA9GuQQJKg+Aw== + dependencies: + debug "^4.3.4" + deepmerge "^4.3.1" + kleur "^4.1.5" + magic-string "^0.30.0" + svelte-hmr "^0.15.1" + vitefu "^0.2.4" + "@tootallnate/once@2": version "2.0.0" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== +"@ts-morph/common@~0.19.0": + version "0.19.0" + resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.19.0.tgz#927fcd81d1bbc09c89c4a310a84577fb55f3694e" + integrity sha512-Unz/WHmd4pGax91rdIKWi51wnVUW11QttMEPpBiBgIewnc9UQIX7UDLxr5vRlqeByXCwhkF6VabSsI0raWcyAQ== + dependencies: + fast-glob "^3.2.12" + minimatch "^7.4.3" + mkdirp "^2.1.6" + path-browserify "^1.0.1" + "@tsconfig/node10@^1.0.7": version "1.0.8" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" @@ -1712,6 +1902,11 @@ resolved "https://registry.yarnpkg.com/@types/command-exists/-/command-exists-1.2.0.tgz#d97e0ed10097090e4ab0367ed425b0312fad86f3" integrity sha512-ugsxEJfsCuqMLSuCD4PIJkp5Uk2z6TCMRCgYVuhRo5cYQY3+1xXTQkSlPtkpGHuvWMjS2KTeVQXxkXRACMbM6A== +"@types/cookie@^0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.5.1.tgz#b29aa1f91a59f35e29ff8f7cb24faf1a3a750554" + integrity sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g== + "@types/draco3d@*": version "1.4.0" resolved "https://registry.yarnpkg.com/@types/draco3d/-/draco3d-1.4.0.tgz#6a57c6295d69b3c69ee72a93f132763afd74c77b" @@ -1842,6 +2037,11 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/pug@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.6.tgz#f830323c88172e66826d0bde413498b61054b5a6" + integrity sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg== + "@types/q@^1.5.1": version "1.5.4" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" @@ -1895,6 +2095,11 @@ resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.2.3.tgz#908bfb113419fd6a42273674c00994d40902c165" integrity sha512-dDZH/tXzwjutnuk4UacGgFRwV+JSLaXL1ikvidfJprkb7L9Nx1njcRHHmi3Dsvt7pgqqTEeucQuOrWHPFgzVHA== +"@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== + "@types/wrap-ansi@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz#18b97a972f94f60a679fd5c796d96421b9abb9fd" @@ -2546,6 +2751,11 @@ browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.1: escalade "^3.1.1" node-releases "^1.1.70" +buffer-crc32@^0.2.5: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -2584,6 +2794,13 @@ builtins@^5.0.0: dependencies: semver "^7.0.0" +busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + byte-size@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-7.0.0.tgz#36528cd1ca87d39bd9abd51f5715dc93b6ceb032" @@ -2796,7 +3013,7 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@^3.5.3: +chokidar@^3.4.1, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -2975,6 +3192,11 @@ coa@^2.0.2: chalk "^2.4.1" q "^1.1.2" +code-block-writer@^12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/code-block-writer/-/code-block-writer-12.0.0.tgz#4dd58946eb4234105aff7f0035977b2afdc2a770" + integrity sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w== + code-excerpt@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/code-excerpt/-/code-excerpt-4.0.0.tgz#2de7d46e98514385cb01f7b3b741320115f4c95e" @@ -3303,6 +3525,11 @@ convert-to-spaces@^2.0.1: resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz#61a6c98f8aa626c16b296b862a91412a33bceb6b" integrity sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ== +cookie@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + core-js-compat@^3.8.0: version "3.8.3" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.3.tgz#9123fb6b9cad30f0651332dc77deba48ef9b0b3f" @@ -3550,6 +3777,13 @@ debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "2.1.2" +debug@^4.3.1, debug@^4.3.3, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + debug@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" @@ -3557,13 +3791,6 @@ debug@^4.3.2: dependencies: ms "2.1.2" -debug@^4.3.3, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - decamelize-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" @@ -3611,6 +3838,11 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -3683,6 +3915,11 @@ detect-indent@^5.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= +detect-indent@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" @@ -3693,6 +3930,11 @@ detect-libc@^2.0.0, detect-libc@^2.0.1: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== +devalue@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/devalue/-/devalue-4.3.0.tgz#d86db8fee63a70317c2355be0d3d1b4d8f89a44e" + integrity sha512-n94yQo4LI3w7erwf84mhRUkUJfhLoCZiLyoOZ/QFsDbcWNZePrLwbQpvZBUG2TNxwV3VjCKPxkiiQA6pe3TrTA== + diagnostics@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/diagnostics/-/diagnostics-1.1.1.tgz#cab6ac33df70c9d9a727490ae43ac995a769b22a" @@ -3944,11 +4186,44 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es6-promise@^3.1.2: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + integrity sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg== + es6-promisify@^6.0.0: version "6.1.1" resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-6.1.1.tgz#46837651b7b06bf6fff893d03f29393668d01621" integrity sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg== +esbuild@^0.17.5: + version "0.17.18" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.18.tgz#f4f8eb6d77384d68cd71c53eb6601c7efe05e746" + integrity sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w== + optionalDependencies: + "@esbuild/android-arm" "0.17.18" + "@esbuild/android-arm64" "0.17.18" + "@esbuild/android-x64" "0.17.18" + "@esbuild/darwin-arm64" "0.17.18" + "@esbuild/darwin-x64" "0.17.18" + "@esbuild/freebsd-arm64" "0.17.18" + "@esbuild/freebsd-x64" "0.17.18" + "@esbuild/linux-arm" "0.17.18" + "@esbuild/linux-arm64" "0.17.18" + "@esbuild/linux-ia32" "0.17.18" + "@esbuild/linux-loong64" "0.17.18" + "@esbuild/linux-mips64el" "0.17.18" + "@esbuild/linux-ppc64" "0.17.18" + "@esbuild/linux-riscv64" "0.17.18" + "@esbuild/linux-s390x" "0.17.18" + "@esbuild/linux-x64" "0.17.18" + "@esbuild/netbsd-x64" "0.17.18" + "@esbuild/openbsd-x64" "0.17.18" + "@esbuild/sunos-x64" "0.17.18" + "@esbuild/win32-arm64" "0.17.18" + "@esbuild/win32-ia32" "0.17.18" + "@esbuild/win32-x64" "0.17.18" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -3979,6 +4254,21 @@ eslint-config-prettier@8.8.0: resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz#bfda738d412adc917fd7b038857110efe98c9348" integrity sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA== +eslint-plugin-svelte@^2.26.0: + version "2.27.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-svelte/-/eslint-plugin-svelte-2.27.4.tgz#840c87c3b5785be9b259f0f5a057cd35294df929" + integrity sha512-P1VPNgM0a6AGWU/qlk3Jf/55B4TIF6V0vlkRrZsqe+Um3SeCbH8dSakI/WJ4kwupYr7lMzHIbnjFXpzemXqzVw== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + debug "^4.3.1" + esutils "^2.0.3" + known-css-properties "^0.27.0" + postcss "^8.4.5" + postcss-load-config "^3.1.4" + postcss-safe-parser "^6.0.0" + svelte-eslint-parser "^0.27.0" + eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -3987,7 +4277,7 @@ eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.2.0: +eslint-scope@^7.0.0, eslint-scope@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== @@ -3995,6 +4285,11 @@ eslint-scope@^7.2.0: esrecurse "^4.3.0" estraverse "^5.2.0" +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" + integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== + eslint-visitor-keys@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" @@ -4051,6 +4346,20 @@ eslint@8.39.0: strip-json-comments "^3.1.0" text-table "^0.2.0" +esm-env@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esm-env/-/esm-env-1.0.0.tgz#b124b40b180711690a4cb9b00d16573391950413" + integrity sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA== + +espree@^9.0.0: + version "9.5.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" + integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + espree@^9.5.1: version "9.5.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.1.tgz#4f26a4d5f18905bf4f2e0bd99002aab807e96dd4" @@ -4196,7 +4505,7 @@ fast-glob@3.2.7: merge2 "^1.3.0" micromatch "^4.0.4" -fast-glob@^3.2.11: +fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.7: version "3.2.12" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== @@ -4717,18 +5026,6 @@ glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.7: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - 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" - glob@^8.0.1: version "8.0.3" resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" @@ -4810,7 +5107,7 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== -graceful-fs@^4.2.4: +graceful-fs@^4.1.3, graceful-fs@^4.2.4: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -4898,11 +5195,21 @@ has@^1.0.0, has@^1.0.3: dependencies: function-bind "^1.1.1" +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + hex-color-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== +highlight.js@^11.8.0: + version "11.8.0" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.8.0.tgz#966518ea83257bae2e7c9a48596231856555bb65" + integrity sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg== + hosted-git-info@^2.1.4: version "2.8.8" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" @@ -5761,6 +6068,16 @@ kleur@^4.1.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== +kleur@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + +known-css-properties@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.27.0.tgz#82a9358dda5fe7f7bd12b5e7142c0a205393c0c5" + integrity sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg== + ktx-parse@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/ktx-parse/-/ktx-parse-0.5.0.tgz#b4025bbc73ac5386ac37e869de455eab915261bc" @@ -5899,6 +6216,11 @@ libnpmpublish@7.1.4: sigstore "^1.4.0" ssri "^10.0.1" +lilconfig@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -6055,13 +6377,6 @@ logform@^2.1.1: ms "^2.1.1" triple-beam "^1.3.0" -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -6079,11 +6394,6 @@ lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.10.1.tgz#db577f42a94c168f676b638d15da8fb073448cab" integrity sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A== -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== - magic-string@^0.25.0, magic-string@^0.25.7: version "0.25.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" @@ -6091,6 +6401,20 @@ magic-string@^0.25.0, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.4" +magic-string@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" + integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.13" + +magic-string@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.0.tgz#fd58a4748c5c4547338a424e90fa5dd17f4de529" + integrity sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.13" + make-dir@3.1.0, make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -6214,10 +6538,10 @@ map-obj@^4.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5" integrity sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g== -marked@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/marked/-/marked-2.1.1.tgz#b7c27f520fc4de0ddd049d9b4be3b04e06314923" - integrity sha512-5XFS69o9CzDpQDSpUYC+AN2xvq8yl1EGa5SG/GI1hP78/uTeo3PDfiDNmsUyiahpyhToDDJhQk7fNtJsga+KVw== +marked@^4.2.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" + integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== matcher@^5.0.0: version "5.0.0" @@ -6253,6 +6577,16 @@ mdn-data@2.0.4: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== +mdsvex@^0.10.6: + version "0.10.6" + resolved "https://registry.yarnpkg.com/mdsvex/-/mdsvex-0.10.6.tgz#5ba975f4616e5255ca31cd93d33e2c2a22845631" + integrity sha512-aGRDY0r5jx9+OOgFdyB9Xm3EBr9OUmcrTDPWLB7a7g8VPRxzPy4MOBmcVYgz7ErhAJ7bZ/coUoj6aHio3x/2mA== + dependencies: + "@types/unist" "^2.0.3" + prism-svelte "^0.4.7" + prismjs "^1.17.1" + vfile-message "^2.0.4" + mem@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/mem/-/mem-9.0.2.tgz#bbc2d40be045afe30749681e8f5d554cee0c0354" @@ -6378,6 +6712,11 @@ mime-types@^2.1.12, mime-types@~2.1.19: dependencies: mime-db "1.45.0" +mime@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== + mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" @@ -6415,7 +6754,7 @@ minimatch@3.0.5: dependencies: brace-expansion "^1.1.7" -minimatch@^3.0.0, minimatch@^3.0.4: +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== @@ -6450,6 +6789,13 @@ minimatch@^7.4.1, minimatch@^7.4.2: dependencies: brace-expansion "^2.0.1" +minimatch@^7.4.3: + version "7.4.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" + integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== + dependencies: + brace-expansion "^2.0.1" + minimatch@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.0.tgz#bfc8e88a1c40ffd40c172ddac3decb8451503b56" @@ -6597,6 +6943,11 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mkdirp@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.6.tgz#964fbcb12b2d8c5d6fbc62a963ac95a273e2cc19" + integrity sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A== + modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" @@ -6607,6 +6958,11 @@ mri@^1.1.0: resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.6.tgz#49952e1044db21dbf90f6cd92bc9c9a777d415a6" integrity sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ== +mrmime@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" + integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== + ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -6653,6 +7009,11 @@ nanoid@^3.1.20: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + napi-build-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" @@ -7165,13 +7526,6 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -onigasm@^2.2.5: - version "2.2.5" - resolved "https://registry.yarnpkg.com/onigasm/-/onigasm-2.2.5.tgz#cc4d2a79a0fa0b64caec1f4c7ea367585a676892" - integrity sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA== - dependencies: - lru-cache "^5.1.1" - open@^8.4.0: version "8.4.0" resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" @@ -7436,6 +7790,11 @@ parse-url@^8.1.0: dependencies: parse-path "^7.0.0" +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -7496,6 +7855,11 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + picomatch@^2.0.4, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -7622,6 +7986,14 @@ postcss-load-config@^3.0.0: cosmiconfig "^7.0.0" import-cwd "^3.0.0" +postcss-load-config@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" + integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== + dependencies: + lilconfig "^2.0.5" + yaml "^1.10.2" + postcss-merge-longhand@^4.0.11: version "4.0.11" resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" @@ -7836,6 +8208,11 @@ postcss-reduce-transforms@^4.0.2: postcss "^7.0.0" postcss-value-parser "^3.0.0" +postcss-safe-parser@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz#bb4c29894171a94bc5c996b9a30317ef402adaa1" + integrity sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ== + postcss-selector-parser@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" @@ -7910,6 +8287,15 @@ postcss@^8.2.1: nanoid "^3.1.20" source-map "^0.6.1" +postcss@^8.4.23, postcss@^8.4.5: + version "8.4.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab" + integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + prebuild-install@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" @@ -7933,6 +8319,11 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +prettier-plugin-svelte@^2.8.1: + version "2.10.0" + resolved "https://registry.yarnpkg.com/prettier-plugin-svelte/-/prettier-plugin-svelte-2.10.0.tgz#ce8f641f97cfe085fa093cb2beb13e64c5e7f9de" + integrity sha512-GXMY6t86thctyCvQq+jqElO+MKdB09BkL3hexyGP3Oi8XLKRFaJP1ud/xlWCZ9ZIa2BxHka32zhHfcuU+XsRQg== + prettier@2.8.8: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" @@ -7966,6 +8357,16 @@ pretty-ms@^8.0.0: dependencies: parse-ms "^3.0.0" +prism-svelte@^0.4.7: + version "0.4.7" + resolved "https://registry.yarnpkg.com/prism-svelte/-/prism-svelte-0.4.7.tgz#fbc6709450b4e2ed660ddb82c3718817fc584cbe" + integrity sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ== + +prismjs@^1.17.1: + version "1.29.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== + proc-log@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.1.tgz#8f3f69a1f608de27878f91f5c688b225391cb685" @@ -7986,11 +8387,6 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -progress@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - promise-all-reject-late@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" @@ -8416,6 +8812,13 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= +rimraf@^2.5.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -8502,6 +8905,13 @@ rollup@^2.35.1: optionalDependencies: fsevents "~2.3.1" +rollup@^3.21.0: + version "3.21.5" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.21.5.tgz#1fbae43dc1079497b04604707f1cf979e51bfe49" + integrity sha512-a4NTKS4u9PusbUJcfF4IMxuqjFzjm6ifj76P54a7cKnvVzJaG12BLVR+hgU2YDGHzyMMQNxLAZWuALsn8q2oQg== + optionalDependencies: + fsevents "~2.3.2" + run-async@^2.2.0, run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -8547,6 +8957,13 @@ sade@^1.7.4: dependencies: mri "^1.1.0" +sade@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.0" + safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -8567,6 +8984,16 @@ safe-identifier@^0.4.2: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +sander@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad" + integrity sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA== + dependencies: + es6-promise "^3.1.2" + graceful-fs "^4.1.3" + mkdirp "^0.5.1" + rimraf "^2.5.2" + save-pixels@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/save-pixels/-/save-pixels-2.3.6.tgz#d9f40a2f6b374f9c61d14f1b7def2591db7fb780" @@ -8654,6 +9081,11 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +set-cookie-parser@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz#131921e50f62ff1a66a461d7d62d7b21d5d15a51" + integrity sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ== + shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -8692,14 +9124,6 @@ shell-quote@^1.8.0: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== -shiki@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.9.3.tgz#7bf7bcf3ed50ca525ec89cc09254abce4264d5ca" - integrity sha512-NEjg1mVbAUrzRv2eIcUt3TG7X9svX7l3n3F5/3OdFq+/BxUdmBOeKGiH4icZJBLHy354Shnj6sfBTemea2e7XA== - dependencies: - onigasm "^2.2.5" - vscode-textmate "^5.2.0" - signal-exit@3.0.7, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -8758,6 +9182,15 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" +sirv@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.3.tgz#ca5868b87205a74bef62a469ed0296abceccd446" + integrity sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA== + dependencies: + "@polka/url" "^1.0.0-next.20" + mrmime "^1.0.0" + totalist "^3.0.0" + slash@3.0.0, slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -8834,6 +9267,16 @@ socks@^2.6.2: ip "^1.1.5" smart-buffer "^4.2.0" +sorcery@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.11.0.tgz#310c80ee993433854bb55bb9aa4003acd147fca8" + integrity sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.14" + buffer-crc32 "^0.2.5" + minimist "^1.2.0" + sander "^0.5.0" + sort-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" @@ -8841,6 +9284,11 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + source-map-support@0.5.21: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -8978,6 +9426,11 @@ stack-utils@^2.0.6: dependencies: escape-string-regexp "^2.0.0" +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + string-hash@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" @@ -9223,6 +9676,50 @@ suppress-experimental-warnings@1.1.17: dependencies: jiti "^1.18.2" +svelte-check@^3.0.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/svelte-check/-/svelte-check-3.3.2.tgz#11831428531cf7c61a91c38929eda11c37b7dcb1" + integrity sha512-67j3rI0LDc2DvL0ON/2pvCasVVD3nHDrTkZNr4eITNfo2oFXdw7SIyMOiFj4swu+pjmFQAigytBK1IWyik8dBw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.17" + chokidar "^3.4.1" + fast-glob "^3.2.7" + import-fresh "^3.2.1" + picocolors "^1.0.0" + sade "^1.7.4" + svelte-preprocess "^5.0.3" + typescript "^5.0.3" + +svelte-eslint-parser@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/svelte-eslint-parser/-/svelte-eslint-parser-0.27.0.tgz#93dd0a662a3f6f27dbf571d11bf450cfe5bd0050" + integrity sha512-x9cBbCZwLdCnNE3yPqGhvAqEl9FCILC6AaV2xRtwzaMCpvpqO7ceONXj9xka3fQFczSqLzkwOxP4Ln4cIQNqXg== + dependencies: + eslint-scope "^7.0.0" + eslint-visitor-keys "^3.0.0" + espree "^9.0.0" + +svelte-hmr@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/svelte-hmr/-/svelte-hmr-0.15.1.tgz#d11d878a0bbb12ec1cba030f580cd2049f4ec86b" + integrity sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA== + +svelte-preprocess@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-5.0.3.tgz#431d538d457d3a5ba470a5ae5754a5aeb76579c8" + integrity sha512-GrHF1rusdJVbOZOwgPWtpqmaexkydznKzy5qIC2FabgpFyKN57bjMUUUqPRfbBXK5igiEWn1uO/DXsa2vJ5VHA== + dependencies: + "@types/pug" "^2.0.6" + detect-indent "^6.1.0" + magic-string "^0.27.0" + sorcery "^0.11.0" + strip-indent "^3.0.0" + +svelte@^3.54.0: + version "3.59.1" + resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.59.1.tgz#3de3d56b9165748f32f3131589b8d183cabe7449" + integrity sha512-pKj8fEBmqf6mq3/NfrB9SLtcJcUvjYSWyePlfCqN9gujLB25RitWK8PvFzlwim6hD/We35KbPlRteuA6rnPGcQ== + svgo@^1.0.0: version "1.3.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" @@ -9415,6 +9912,14 @@ tiny-glob@^0.2.8: globalyzer "0.1.0" globrex "^0.1.2" +tiny-glob@^0.2.9: + version "0.2.9" + resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" + integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== + dependencies: + globalyzer "0.1.0" + globrex "^0.1.2" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -9441,6 +9946,11 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +totalist@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" + integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== + tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -9479,6 +9989,14 @@ triple-beam@^1.2.0, triple-beam@^1.3.0: resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== +ts-morph@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-18.0.0.tgz#b9e7a898ea115064585a8a775d86da6edc9c5b4e" + integrity sha512-Kg5u0mk19PIIe4islUI/HWRvm9bC1lHejK4S0oh1zaZ77TMZAEmQC0sHQYiu2RgCQFZKXz1fMVi/7nOOeirznA== + dependencies: + "@ts-morph/common" "~0.19.0" + code-block-writer "^12.0.0" + ts-node@10.9.1: version "10.9.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" @@ -9527,6 +10045,11 @@ tslib@^2.3.0, tslib@^2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== +tslib@^2.4.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -9614,27 +10137,7 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typedoc-default-themes@^0.12.10: - version "0.12.10" - resolved "https://registry.yarnpkg.com/typedoc-default-themes/-/typedoc-default-themes-0.12.10.tgz#614c4222fe642657f37693ea62cad4dafeddf843" - integrity sha512-fIS001cAYHkyQPidWXmHuhs8usjP5XVJjWB8oZGqkTowZaz3v7g3KDZeeqE82FBrmkAnIBOY3jgy7lnPnqATbA== - -typedoc@0.21.2: - version "0.21.2" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.21.2.tgz#cf5094314d3d63e95a8ef052ceff06a6cafd509d" - integrity sha512-SR1ByJB3USg+jxoxwzMRP07g/0f/cQUE5t7gOh1iTUyjTPyJohu9YSKRlK+MSXXqlhIq+m0jkEHEG5HoY7/Adg== - dependencies: - glob "^7.1.7" - handlebars "^4.7.7" - lodash "^4.17.21" - lunr "^2.3.9" - marked "^2.1.1" - minimatch "^3.0.0" - progress "^2.0.3" - shiki "^0.9.3" - typedoc-default-themes "^0.12.10" - -typescript@5.0.4: +typescript@5.0.4, typescript@^5.0.3: version "5.0.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== @@ -9654,6 +10157,13 @@ uglify-js@^3.1.4: resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.12.6.tgz#f884584fcc42e10bca70db5cb32e8625c2c42535" integrity sha512-aqWHe3DfQmZUDGWBbabZ2eQnJlQd1fKlMUu7gV+MiTuDzdgDw31bI3wA2jLLsV/hNcDP26IfyEgSVoft5+0SVw== +undici@~5.22.0: + version "5.22.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.22.0.tgz#5e205d82a5aecc003fc4388ccd3d2c6e8674a0ad" + integrity sha512-fR9RXCc+6Dxav4P9VV/sp5w3eFiSdOjJYsbtWfd4s5L5C4ogyuVpdKIVHeW0vV1MloM65/f7W45nR9ZxwVdyiA== + dependencies: + busboy "^1.6.0" + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -9722,6 +10232,13 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" +unist-util-stringify-position@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" + integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== + dependencies: + "@types/unist" "^2.0.2" + universal-user-agent@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" @@ -9841,10 +10358,29 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vscode-textmate@^5.2.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.4.0.tgz#4b25ffc1f14ac3a90faf9a388c67a01d24257cd7" - integrity sha512-c0Q4zYZkcLizeYJ3hNyaVUM2AA8KDhNCA3JvXY8CeZSJuBdAy3bAvSbv46RClC4P3dSO9BdwhnKEx2zOo6vP/w== +vfile-message@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" + integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^2.0.0" + +vite@^4.3.0: + version "4.3.5" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.3.5.tgz#3871fe0f4b582ea7f49a85386ac80e84826367d9" + integrity sha512-0gEnL9wiRFxgz40o/i/eTBwm+NEbpUeTWhzKrZDSdKm6nplj+z4lKz8ANDgildxHm47Vg8EUia0aicKbawUVVA== + dependencies: + esbuild "^0.17.5" + postcss "^8.4.23" + rollup "^3.21.0" + optionalDependencies: + fsevents "~2.3.2" + +vitefu@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/vitefu/-/vitefu-0.2.4.tgz#212dc1a9d0254afe65e579351bed4e25d81e0b35" + integrity sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g== walk-up-path@^1.0.0: version "1.0.0" @@ -10021,11 +10557,6 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" @@ -10036,6 +10567,11 @@ yaml@^1.10.0: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== +yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + yargs-parser@20.2.4, yargs-parser@^20.2.3: version "20.2.4" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"