From d7c9329d25cfde52a411ab5a21c854bcf595ba05 Mon Sep 17 00:00:00 2001
From: milesj
Date: Thu, 29 Feb 2024 19:40:03 +0000
Subject: [PATCH] deploy: a184cbc529df29eb1b82ee875abb986927127ae0
---
404.html | 2 +-
api.html | 2 +-
api/report.html | 2 +-
api/report/function/formatDuration.html | 2 +-
api/report/function/formatTime.html | 2 +-
api/report/function/getDurationInMillis.html | 2 +-
api/report/function/getIconForStatus.html | 2 +-
api/report/function/hasFailed.html | 2 +-
api/report/function/hasPassed.html | 2 +-
api/report/function/isFlaky.html | 2 +-
api/report/function/isSlow.html | 2 +-
api/report/function/prepareReportActions.html | 2 +-
api/report/function/sortReport.html | 2 +-
api/report/interface/PreparedAction.html | 2 +-
api/runtime.html | 2 +-
api/runtime/function/getContext.html | 2 +-
api/runtime/interface/RuntimeContext.html | 2 +-
api/types.html | 2 +-
api/types/interface/Action.html | 2 +-
api/types/interface/ActionContext.html | 2 +-
api/types/interface/ActionGraph.html | 2 +-
api/types/interface/ActionGraphEdge.html | 2 +-
api/types/interface/ActionGraphNode.html | 2 +-
api/types/interface/ActionNodeInstallDeps.html | 2 +-
api/types/interface/ActionNodeInstallProjectDeps.html | 2 +-
api/types/interface/ActionNodeRunTask.html | 2 +-
api/types/interface/ActionNodeSetupTool.html | 2 +-
api/types/interface/ActionNodeSyncProject.html | 2 +-
api/types/interface/ActionNodeSyncWorkspace.html | 2 +-
api/types/interface/Attempt.html | 2 +-
api/types/interface/BinConfig.html | 2 +-
api/types/interface/BunConfig.html | 2 +-
api/types/interface/BunpmConfig.html | 2 +-
api/types/interface/CodeownersConfig.html | 2 +-
api/types/interface/ConstraintsConfig.html | 2 +-
api/types/interface/DenoConfig.html | 2 +-
api/types/interface/DependencyConfig.html | 2 +-
api/types/interface/Duration.html | 2 +-
api/types/interface/EventActionFinished.html | 2 +-
api/types/interface/EventActionStarted.html | 2 +-
api/types/interface/EventDependenciesInstalled.html | 2 +-
api/types/interface/EventDependenciesInstalling.html | 2 +-
api/types/interface/EventPipelineAborted.html | 2 +-
api/types/interface/EventPipelineFinished.html | 2 +-
api/types/interface/EventPipelineStarted.html | 2 +-
api/types/interface/EventProjectSynced.html | 2 +-
api/types/interface/EventProjectSyncing.html | 2 +-
api/types/interface/EventTargetOutputArchived.html | 2 +-
api/types/interface/EventTargetOutputArchiving.html | 2 +-
api/types/interface/EventTargetOutputCacheCheck.html | 2 +-
api/types/interface/EventTargetOutputHydrated.html | 2 +-
api/types/interface/EventTargetOutputHydrating.html | 2 +-
api/types/interface/EventTargetRan.html | 2 +-
api/types/interface/EventTargetRunning.html | 2 +-
api/types/interface/EventToolInstalled.html | 2 +-
api/types/interface/EventToolInstalling.html | 2 +-
api/types/interface/EventWorkspaceSynced.html | 2 +-
api/types/interface/ExperimentsConfig.html | 2 +-
api/types/interface/ExtensionConfig.html | 2 +-
api/types/interface/FileGroup.html | 2 +-
api/types/interface/GeneratorConfig.html | 2 +-
api/types/interface/HasherConfig.html | 2 +-
api/types/interface/InheritedTasksConfig.html | 2 +-
api/types/interface/NodeConfig.html | 2 +-
api/types/interface/NotifierConfig.html | 2 +-
api/types/interface/NpmConfig.html | 2 +-
api/types/interface/OwnersConfig.html | 2 +-
api/types/interface/PartialBinConfig.html | 2 +-
api/types/interface/PartialBunConfig.html | 2 +-
api/types/interface/PartialBunpmConfig.html | 2 +-
api/types/interface/PartialCodeownersConfig.html | 2 +-
api/types/interface/PartialConstraintsConfig.html | 2 +-
api/types/interface/PartialDenoConfig.html | 2 +-
api/types/interface/PartialDependencyConfig.html | 2 +-
api/types/interface/PartialExperimentsConfig.html | 2 +-
api/types/interface/PartialExtensionConfig.html | 2 +-
api/types/interface/PartialGeneratorConfig.html | 2 +-
api/types/interface/PartialHasherConfig.html | 2 +-
api/types/interface/PartialInheritedTasksConfig.html | 2 +-
api/types/interface/PartialNodeConfig.html | 2 +-
api/types/interface/PartialNotifierConfig.html | 2 +-
api/types/interface/PartialNpmConfig.html | 2 +-
api/types/interface/PartialOwnersConfig.html | 2 +-
api/types/interface/PartialPnpmConfig.html | 2 +-
api/types/interface/PartialProjectConfig.html | 2 +-
api/types/interface/PartialProjectGraph.html | 2 +-
api/types/interface/PartialProjectMetadataConfig.html | 2 +-
.../PartialProjectToolchainCommonToolConfig.html | 2 +-
.../interface/PartialProjectToolchainConfig.html | 2 +-
.../PartialProjectToolchainTypeScriptConfig.html | 2 +-
.../interface/PartialProjectWorkspaceConfig.html | 2 +-
.../PartialProjectWorkspaceInheritedTasksConfig.html | 2 +-
api/types/interface/PartialRunnerConfig.html | 2 +-
api/types/interface/PartialRustConfig.html | 2 +-
api/types/interface/PartialTaskConfig.html | 2 +-
api/types/interface/PartialTaskDependencyConfig.html | 2 +-
api/types/interface/PartialTaskOptionsConfig.html | 2 +-
api/types/interface/PartialTemplateConfig.html | 2 +-
.../interface/PartialTemplateFrontmatterConfig.html | 2 +-
.../interface/PartialTemplateVariableBoolSetting.html | 2 +-
.../interface/PartialTemplateVariableEnumSetting.html | 2 +-
.../PartialTemplateVariableEnumValueConfig.html | 2 +-
.../PartialTemplateVariableNumberSetting.html | 2 +-
.../PartialTemplateVariableStringSetting.html | 2 +-
api/types/interface/PartialToolchainConfig.html | 2 +-
api/types/interface/PartialTypeScriptConfig.html | 2 +-
api/types/interface/PartialVcsConfig.html | 2 +-
api/types/interface/PartialWorkspaceConfig.html | 2 +-
.../interface/PartialWorkspaceProjectsConfig.html | 2 +-
api/types/interface/PartialYarnConfig.html | 2 +-
api/types/interface/PnpmConfig.html | 2 +-
api/types/interface/Project.html | 2 +-
api/types/interface/ProjectConfig.html | 2 +-
api/types/interface/ProjectGraph.html | 2 +-
api/types/interface/ProjectGraphInner.html | 2 +-
api/types/interface/ProjectMetadataConfig.html | 2 +-
.../interface/ProjectToolchainCommonToolConfig.html | 2 +-
api/types/interface/ProjectToolchainConfig.html | 2 +-
.../interface/ProjectToolchainTypeScriptConfig.html | 2 +-
api/types/interface/ProjectWorkspaceConfig.html | 2 +-
.../ProjectWorkspaceInheritedTasksConfig.html | 2 +-
api/types/interface/ProviderEnvironment.html | 2 +-
api/types/interface/RunReport.html | 2 +-
api/types/interface/RunnerConfig.html | 2 +-
api/types/interface/Runtime.html | 2 +-
api/types/interface/RustConfig.html | 2 +-
api/types/interface/TargetState.html | 2 +-
api/types/interface/Task.html | 2 +-
api/types/interface/TaskConfig.html | 2 +-
api/types/interface/TaskDependencyConfig.html | 2 +-
api/types/interface/TaskOptions.html | 2 +-
api/types/interface/TaskOptionsConfig.html | 2 +-
api/types/interface/TemplateConfig.html | 2 +-
api/types/interface/TemplateFrontmatterConfig.html | 2 +-
api/types/interface/TemplateVariableBoolSetting.html | 2 +-
api/types/interface/TemplateVariableEnumSetting.html | 2 +-
.../interface/TemplateVariableEnumValueConfig.html | 2 +-
.../interface/TemplateVariableNumberSetting.html | 2 +-
.../interface/TemplateVariableStringSetting.html | 2 +-
api/types/interface/ToolchainConfig.html | 2 +-
api/types/interface/TypeScriptConfig.html | 2 +-
api/types/interface/VcsConfig.html | 2 +-
api/types/interface/WebhookPayload.html | 2 +-
api/types/interface/WorkspaceConfig.html | 2 +-
api/types/interface/WorkspaceProjectsConfig.html | 2 +-
api/types/interface/YarnConfig.html | 2 +-
assets/js/17cacc08.a58c2962.js | 1 +
assets/js/17cacc08.b4cb575d.js | 1 -
assets/js/4ec8a4a9.775ff554.js | 1 +
assets/js/4ec8a4a9.92b0a7fa.js | 1 -
...time~main.df1ca9bc.js => runtime~main.4151578b.js} | 2 +-
blog.html | 2 +-
blog/2023-roadmap.html | 2 +-
blog/2024-roadmap.html | 2 +-
blog/archive.html | 2 +-
blog/moon-v1.0.html | 2 +-
blog/moon-v1.1.html | 2 +-
blog/moon-v1.10.html | 2 +-
blog/moon-v1.11.html | 2 +-
blog/moon-v1.12.html | 2 +-
blog/moon-v1.13.html | 2 +-
blog/moon-v1.14.html | 2 +-
blog/moon-v1.15.html | 2 +-
blog/moon-v1.16.html | 2 +-
blog/moon-v1.17.html | 2 +-
blog/moon-v1.18.html | 2 +-
blog/moon-v1.19.html | 2 +-
blog/moon-v1.2.html | 2 +-
blog/moon-v1.20.html | 2 +-
blog/moon-v1.21.html | 2 +-
blog/moon-v1.22.html | 2 +-
blog/moon-v1.3.html | 2 +-
blog/moon-v1.4.html | 2 +-
blog/moon-v1.5.html | 2 +-
blog/moon-v1.6.html | 2 +-
blog/moon-v1.7.html | 2 +-
blog/moon-v1.8.html | 2 +-
blog/moon-v1.9.html | 2 +-
blog/moonbase.html | 2 +-
blog/page/2.html | 2 +-
blog/page/3.html | 2 +-
blog/page/4.html | 2 +-
blog/page/5.html | 2 +-
blog/page/6.html | 2 +-
blog/page/7.html | 2 +-
blog/proto-v0.11.html | 2 +-
blog/proto-v0.12.html | 2 +-
blog/proto-v0.13.html | 2 +-
blog/proto-v0.14.html | 2 +-
blog/proto-v0.15.html | 2 +-
blog/proto-v0.16.html | 2 +-
blog/proto-v0.17.html | 2 +-
blog/proto-v0.18.html | 2 +-
blog/proto-v0.19.html | 2 +-
blog/proto-v0.20.html | 2 +-
blog/proto-v0.21.html | 2 +-
blog/proto-v0.23.html | 2 +-
blog/proto-v0.24.html | 2 +-
blog/proto-v0.25.html | 2 +-
blog/proto-v0.26-rc.html | 2 +-
blog/proto-v0.26.html | 2 +-
blog/proto-v0.27.html | 2 +-
blog/proto-v0.28.html | 2 +-
blog/proto-v0.29.html | 2 +-
blog/proto-v0.3.html | 2 +-
blog/proto-v0.4.html | 2 +-
blog/proto-v0.5.html | 2 +-
blog/proto-v0.6.html | 2 +-
blog/proto-v0.7.html | 2 +-
blog/proto-v0.8.html | 2 +-
blog/proto-v0.9.html | 2 +-
blog/proto.html | 2 +-
blog/tags.html | 2 +-
blog/tags/action.html | 2 +-
blog/tags/affected.html | 2 +-
blog/tags/alias.html | 2 +-
blog/tags/args.html | 2 +-
blog/tags/arm-64.html | 2 +-
blog/tags/automation.html | 2 +-
blog/tags/bin.html | 2 +-
blog/tags/bun.html | 2 +-
blog/tags/cache.html | 2 +-
blog/tags/canary.html | 2 +-
blog/tags/checksum.html | 2 +-
blog/tags/ci.html | 2 +-
blog/tags/clean.html | 2 +-
blog/tags/code.html | 2 +-
blog/tags/codegen.html | 2 +-
blog/tags/config.html | 2 +-
blog/tags/constraints.html | 2 +-
blog/tags/debug.html | 2 +-
blog/tags/deno.html | 2 +-
blog/tags/dep-graph.html | 2 +-
blog/tags/dependency.html | 2 +-
blog/tags/deps.html | 2 +-
blog/tags/detect.html | 2 +-
blog/tags/docker.html | 2 +-
blog/tags/editors.html | 2 +-
blog/tags/env-vars.html | 2 +-
blog/tags/env.html | 2 +-
blog/tags/environment.html | 2 +-
blog/tags/errors.html | 2 +-
blog/tags/experiments.html | 2 +-
blog/tags/extensions.html | 2 +-
blog/tags/extism.html | 2 +-
blog/tags/file-groups.html | 2 +-
blog/tags/generator.html | 2 +-
blog/tags/git.html | 2 +-
blog/tags/github.html | 2 +-
blog/tags/global.html | 2 +-
blog/tags/globals.html | 2 +-
blog/tags/gnu.html | 2 +-
blog/tags/go.html | 2 +-
blog/tags/graph.html | 2 +-
blog/tags/hash.html | 2 +-
blog/tags/hasher.html | 2 +-
blog/tags/hooks.html | 2 +-
blog/tags/http.html | 2 +-
blog/tags/hydration.html | 2 +-
blog/tags/id.html | 2 +-
blog/tags/ignore.html | 2 +-
blog/tags/index.html | 2 +-
blog/tags/inheritance.html | 2 +-
blog/tags/init.html | 2 +-
blog/tags/javascript.html | 2 +-
blog/tags/lang.html | 2 +-
blog/tags/language.html | 2 +-
blog/tags/life.html | 2 +-
blog/tags/linux.html | 2 +-
blog/tags/local.html | 2 +-
blog/tags/log.html | 2 +-
blog/tags/logging.html | 2 +-
blog/tags/manager.html | 2 +-
blog/tags/metadata.html | 2 +-
blog/tags/migrate.html | 2 +-
blog/tags/monorepo.html | 2 +-
blog/tags/moonbase.html | 2 +-
blog/tags/musl.html | 2 +-
blog/tags/name.html | 2 +-
blog/tags/node.html | 2 +-
blog/tags/notifier.html | 2 +-
blog/tags/npm.html | 2 +-
blog/tags/nx.html | 2 +-
blog/tags/offline.html | 2 +-
blog/tags/onboarding.html | 2 +-
blog/tags/options.html | 2 +-
blog/tags/outdated.html | 2 +-
blog/tags/owners.html | 2 +-
blog/tags/ownership.html | 2 +-
blog/tags/package.html | 2 +-
blog/tags/pin.html | 2 +-
blog/tags/pipeline.html | 2 +-
blog/tags/platform.html | 2 +-
blog/tags/plugin.html | 2 +-
blog/tags/plugins.html | 2 +-
blog/tags/profile.html | 2 +-
blog/tags/project-graph.html | 2 +-
blog/tags/project.html | 2 +-
blog/tags/projects.html | 2 +-
blog/tags/proto.html | 2 +-
blog/tags/proto/page/2.html | 2 +-
blog/tags/proto/page/3.html | 2 +-
blog/tags/proto/page/4.html | 2 +-
blog/tags/python.html | 2 +-
blog/tags/qol.html | 2 +-
blog/tags/quality.html | 2 +-
blog/tags/query.html | 2 +-
blog/tags/railway.html | 2 +-
blog/tags/registry.html | 2 +-
blog/tags/remote-cache.html | 2 +-
blog/tags/rfc.html | 2 +-
blog/tags/roadmap.html | 2 +-
blog/tags/run.html | 2 +-
blog/tags/runner.html | 2 +-
blog/tags/runtime.html | 2 +-
blog/tags/rust.html | 2 +-
blog/tags/schema.html | 2 +-
blog/tags/shell.html | 2 +-
blog/tags/shim.html | 2 +-
blog/tags/shorthand.html | 2 +-
blog/tags/source.html | 2 +-
blog/tags/survey.html | 2 +-
blog/tags/tag.html | 2 +-
blog/tags/tags.html | 2 +-
blog/tags/target.html | 2 +-
blog/tags/task.html | 2 +-
blog/tags/tasks.html | 2 +-
blog/tags/templates.html | 2 +-
blog/tags/tier.html | 2 +-
blog/tags/tokens.html | 2 +-
blog/tags/toml.html | 2 +-
blog/tags/tool.html | 2 +-
blog/tags/toolchain.html | 2 +-
blog/tags/tools.html | 2 +-
blog/tags/turborepo.html | 2 +-
blog/tags/typescript.html | 2 +-
blog/tags/vcs.html | 2 +-
blog/tags/version.html | 2 +-
blog/tags/vscode.html | 2 +-
blog/tags/wasm.html | 2 +-
blog/tags/windows.html | 2 +-
blog/typescript-monorepo.html | 2 +-
blog/v0.13.html | 2 +-
blog/v0.14.html | 2 +-
blog/v0.15.html | 2 +-
blog/v0.16.html | 2 +-
blog/v0.17.html | 2 +-
blog/v0.18.html | 2 +-
blog/v0.19.html | 2 +-
blog/v0.20.html | 2 +-
blog/v0.21.html | 2 +-
blog/v0.22.html | 2 +-
blog/v0.23.html | 2 +-
blog/v0.24.html | 2 +-
blog/v0.25.html | 2 +-
blog/v0.26.html | 2 +-
blog/vscode-extension.html | 2 +-
docs.html | 2 +-
docs/cheat-sheet.html | 2 +-
docs/commands.html | 2 +-
docs/commands/action-graph.html | 2 +-
docs/commands/bin.html | 2 +-
docs/commands/check.html | 2 +-
docs/commands/ci.html | 2 +-
docs/commands/clean.html | 2 +-
docs/commands/completions.html | 2 +-
docs/commands/docker.html | 2 +-
docs/commands/docker/prune.html | 2 +-
docs/commands/docker/scaffold.html | 2 +-
docs/commands/docker/setup.html | 2 +-
docs/commands/ext.html | 2 +-
docs/commands/generate.html | 2 +-
docs/commands/init.html | 2 +-
docs/commands/migrate.html | 2 +-
docs/commands/migrate/from-package-json.html | 2 +-
docs/commands/migrate/from-turborepo.html | 2 +-
docs/commands/overview.html | 2 +-
docs/commands/project-graph.html | 2 +-
docs/commands/project.html | 2 +-
docs/commands/query.html | 2 +-
docs/commands/query/hash-diff.html | 2 +-
docs/commands/query/hash.html | 2 +-
docs/commands/query/projects.html | 2 +-
docs/commands/query/tasks.html | 2 +-
docs/commands/query/touched-files.html | 2 +-
docs/commands/run.html | 2 +-
docs/commands/setup.html | 2 +-
docs/commands/sync.html | 2 +-
docs/commands/sync/codeowners.html | 2 +-
docs/commands/sync/hooks.html | 2 +-
docs/commands/sync/projects.html | 2 +-
docs/commands/task.html | 2 +-
docs/commands/teardown.html | 2 +-
docs/commands/upgrade.html | 2 +-
docs/comparison.html | 2 +-
docs/concepts.html | 2 +-
docs/concepts/cache.html | 2 +-
docs/concepts/file-group.html | 2 +-
docs/concepts/file-pattern.html | 2 +-
docs/concepts/project.html | 2 +-
docs/concepts/query-lang.html | 2 +-
docs/concepts/target.html | 2 +-
docs/concepts/task-inheritance.html | 2 +-
docs/concepts/task.html | 2 +-
docs/concepts/token.html | 2 +-
docs/concepts/toolchain.html | 2 +-
docs/concepts/workspace.html | 2 +-
docs/config.html | 2 +-
docs/config/project.html | 3 ++-
docs/config/tasks.html | 2 +-
docs/config/template.html | 2 +-
docs/config/toolchain.html | 2 +-
docs/config/workspace.html | 11 +++++++----
docs/create-project.html | 2 +-
docs/create-task.html | 2 +-
docs/editors.html | 2 +-
docs/editors/vscode.html | 2 +-
docs/faq.html | 2 +-
docs/guides/ci.html | 2 +-
docs/guides/codegen.html | 2 +-
docs/guides/codeowners.html | 2 +-
docs/guides/debug-task.html | 2 +-
docs/guides/docker.html | 2 +-
docs/guides/examples/angular.html | 2 +-
docs/guides/examples/astro.html | 2 +-
docs/guides/examples/eslint.html | 2 +-
docs/guides/examples/jest.html | 2 +-
docs/guides/examples/nest.html | 2 +-
docs/guides/examples/next.html | 2 +-
docs/guides/examples/nuxt.html | 2 +-
docs/guides/examples/packemon.html | 2 +-
docs/guides/examples/prettier.html | 2 +-
docs/guides/examples/react.html | 2 +-
docs/guides/examples/remix.html | 2 +-
docs/guides/examples/solid.html | 2 +-
docs/guides/examples/storybook.html | 2 +-
docs/guides/examples/sveltekit.html | 2 +-
docs/guides/examples/typescript.html | 2 +-
docs/guides/examples/vite.html | 2 +-
docs/guides/examples/vue.html | 2 +-
docs/guides/extensions.html | 2 +-
docs/guides/javascript/bun-handbook.html | 2 +-
docs/guides/javascript/deno-handbook.html | 2 +-
docs/guides/javascript/node-handbook.html | 2 +-
docs/guides/javascript/typescript-eslint.html | 2 +-
docs/guides/javascript/typescript-project-refs.html | 2 +-
docs/guides/node/examples.html | 2 +-
docs/guides/offline-mode.html | 2 +-
docs/guides/open-source.html | 2 +-
docs/guides/profile.html | 2 +-
docs/guides/remote-cache.html | 2 +-
docs/guides/root-project.html | 2 +-
docs/guides/rust/handbook.html | 2 +-
docs/guides/sharing-config.html | 2 +-
docs/guides/vcs-hooks.html | 2 +-
docs/guides/wasm-plugins.html | 2 +-
docs/guides/webhooks.html | 2 +-
docs/how-it-works.html | 2 +-
docs/how-it-works/action-graph.html | 2 +-
docs/how-it-works/languages.html | 2 +-
docs/how-it-works/project-graph.html | 2 +-
docs/install.html | 2 +-
docs/migrate-to-moon.html | 2 +-
docs/proto.html | 2 +-
docs/proto/commands/alias.html | 2 +-
docs/proto/commands/bin.html | 2 +-
docs/proto/commands/clean.html | 2 +-
docs/proto/commands/completions.html | 2 +-
docs/proto/commands/debug.html | 2 +-
docs/proto/commands/debug/config.html | 2 +-
docs/proto/commands/debug/env.html | 2 +-
docs/proto/commands/install-global.html | 2 +-
docs/proto/commands/install.html | 2 +-
docs/proto/commands/list-global.html | 2 +-
docs/proto/commands/list-remote.html | 2 +-
docs/proto/commands/list.html | 2 +-
docs/proto/commands/outdated.html | 2 +-
docs/proto/commands/pin.html | 2 +-
docs/proto/commands/regen.html | 2 +-
docs/proto/commands/run.html | 2 +-
docs/proto/commands/setup.html | 2 +-
docs/proto/commands/tool.html | 2 +-
docs/proto/commands/tool/add.html | 2 +-
docs/proto/commands/tool/info.html | 2 +-
docs/proto/commands/tool/list-plugins.html | 2 +-
docs/proto/commands/tool/list.html | 2 +-
docs/proto/commands/tool/remove.html | 2 +-
docs/proto/commands/unalias.html | 2 +-
docs/proto/commands/uninstall-global.html | 2 +-
docs/proto/commands/uninstall.html | 2 +-
docs/proto/commands/upgrade.html | 2 +-
docs/proto/commands/use.html | 2 +-
docs/proto/config.html | 2 +-
docs/proto/detection.html | 2 +-
docs/proto/faq.html | 2 +-
docs/proto/install.html | 2 +-
docs/proto/plugins.html | 2 +-
docs/proto/toml-plugin.html | 2 +-
docs/proto/tools.html | 2 +-
docs/proto/wasm-plugin.html | 2 +-
docs/run-task.html | 2 +-
docs/setup-toolchain.html | 2 +-
docs/setup-workspace.html | 2 +-
docs/tags.html | 2 +-
docs/tags/code.html | 2 +-
docs/tags/codegen.html | 2 +-
docs/tags/codeowners.html | 2 +-
docs/tags/extension.html | 2 +-
docs/tags/generator.html | 2 +-
docs/tags/git-hooks.html | 2 +-
docs/tags/git.html | 2 +-
docs/tags/hooks.html | 2 +-
docs/tags/lang.html | 2 +-
docs/tags/mql.html | 2 +-
docs/tags/owners.html | 2 +-
docs/tags/plugin.html | 2 +-
docs/tags/query.html | 2 +-
docs/tags/scaffold.html | 2 +-
docs/tags/solid.html | 2 +-
docs/tags/solidjs.html | 2 +-
docs/tags/template.html | 2 +-
docs/tags/vcs.html | 2 +-
docs/tags/wasm.html | 2 +-
docs/terminology.html | 2 +-
index.html | 2 +-
moon.html | 2 +-
moonbase.html | 2 +-
proto.html | 4 ++--
search.html | 2 +-
529 files changed, 535 insertions(+), 531 deletions(-)
create mode 100644 assets/js/17cacc08.a58c2962.js
delete mode 100644 assets/js/17cacc08.b4cb575d.js
create mode 100644 assets/js/4ec8a4a9.775ff554.js
delete mode 100644 assets/js/4ec8a4a9.92b0a7fa.js
rename assets/js/{runtime~main.df1ca9bc.js => runtime~main.4151578b.js} (99%)
diff --git a/404.html b/404.html
index 9876829bb5d..e92b82c0f79 100644
--- a/404.html
+++ b/404.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api.html b/api.html
index 93f54447f32..106a24066a5 100644
--- a/api.html
+++ b/api.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/report.html b/api/report.html
index 2b9d1fb0782..17f3d6f388a 100644
--- a/api/report.html
+++ b/api/report.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/report/function/formatDuration.html b/api/report/function/formatDuration.html
index e949377153e..4399ac6de2f 100644
--- a/api/report/function/formatDuration.html
+++ b/api/report/function/formatDuration.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/report/function/formatTime.html b/api/report/function/formatTime.html
index d7705c4dbb6..b21d761809d 100644
--- a/api/report/function/formatTime.html
+++ b/api/report/function/formatTime.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/report/function/getDurationInMillis.html b/api/report/function/getDurationInMillis.html
index 33e221f5b2e..f0fdd536362 100644
--- a/api/report/function/getDurationInMillis.html
+++ b/api/report/function/getDurationInMillis.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/report/function/getIconForStatus.html b/api/report/function/getIconForStatus.html
index f60382581df..a06e766817a 100644
--- a/api/report/function/getIconForStatus.html
+++ b/api/report/function/getIconForStatus.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/report/function/hasFailed.html b/api/report/function/hasFailed.html
index 24b9f1ab775..97be5a27bec 100644
--- a/api/report/function/hasFailed.html
+++ b/api/report/function/hasFailed.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/report/function/hasPassed.html b/api/report/function/hasPassed.html
index da6e4f279ed..cd003fcc413 100644
--- a/api/report/function/hasPassed.html
+++ b/api/report/function/hasPassed.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/report/function/isFlaky.html b/api/report/function/isFlaky.html
index 5e3a703cd9f..99a526018bf 100644
--- a/api/report/function/isFlaky.html
+++ b/api/report/function/isFlaky.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/report/function/isSlow.html b/api/report/function/isSlow.html
index 68018a45e75..eaf68db0eae 100644
--- a/api/report/function/isSlow.html
+++ b/api/report/function/isSlow.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/report/function/prepareReportActions.html b/api/report/function/prepareReportActions.html
index 22af537d9b7..67cfaf063df 100644
--- a/api/report/function/prepareReportActions.html
+++ b/api/report/function/prepareReportActions.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/report/function/sortReport.html b/api/report/function/sortReport.html
index 7170d4bc709..e98799f0449 100644
--- a/api/report/function/sortReport.html
+++ b/api/report/function/sortReport.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/report/interface/PreparedAction.html b/api/report/interface/PreparedAction.html
index a5806843d87..cf7893b3fec 100644
--- a/api/report/interface/PreparedAction.html
+++ b/api/report/interface/PreparedAction.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/runtime.html b/api/runtime.html
index 5a8bb89d2d0..a01ef8562c1 100644
--- a/api/runtime.html
+++ b/api/runtime.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/runtime/function/getContext.html b/api/runtime/function/getContext.html
index f33f43b419d..56ff4ad4feb 100644
--- a/api/runtime/function/getContext.html
+++ b/api/runtime/function/getContext.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/runtime/interface/RuntimeContext.html b/api/runtime/interface/RuntimeContext.html
index 3868b23fe0d..265342274e6 100644
--- a/api/runtime/interface/RuntimeContext.html
+++ b/api/runtime/interface/RuntimeContext.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types.html b/api/types.html
index db01853bfc8..f4a72e14a19 100644
--- a/api/types.html
+++ b/api/types.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/Action.html b/api/types/interface/Action.html
index 5155df1faa3..96e4afd064b 100644
--- a/api/types/interface/Action.html
+++ b/api/types/interface/Action.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ActionContext.html b/api/types/interface/ActionContext.html
index f7a6571a717..b89e64baa89 100644
--- a/api/types/interface/ActionContext.html
+++ b/api/types/interface/ActionContext.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ActionGraph.html b/api/types/interface/ActionGraph.html
index b259c422bc2..b7c4b19cbca 100644
--- a/api/types/interface/ActionGraph.html
+++ b/api/types/interface/ActionGraph.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ActionGraphEdge.html b/api/types/interface/ActionGraphEdge.html
index 5656dcc2dab..667d2cbec15 100644
--- a/api/types/interface/ActionGraphEdge.html
+++ b/api/types/interface/ActionGraphEdge.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ActionGraphNode.html b/api/types/interface/ActionGraphNode.html
index 1a23e9f57ec..e7a31e66ef2 100644
--- a/api/types/interface/ActionGraphNode.html
+++ b/api/types/interface/ActionGraphNode.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ActionNodeInstallDeps.html b/api/types/interface/ActionNodeInstallDeps.html
index ad0e0b18bd4..62a717816ce 100644
--- a/api/types/interface/ActionNodeInstallDeps.html
+++ b/api/types/interface/ActionNodeInstallDeps.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ActionNodeInstallProjectDeps.html b/api/types/interface/ActionNodeInstallProjectDeps.html
index f7cba456532..9d44f7dfde4 100644
--- a/api/types/interface/ActionNodeInstallProjectDeps.html
+++ b/api/types/interface/ActionNodeInstallProjectDeps.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ActionNodeRunTask.html b/api/types/interface/ActionNodeRunTask.html
index 353d8f69923..3288f169a59 100644
--- a/api/types/interface/ActionNodeRunTask.html
+++ b/api/types/interface/ActionNodeRunTask.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ActionNodeSetupTool.html b/api/types/interface/ActionNodeSetupTool.html
index ef26ecd45a9..6c3ccb0d067 100644
--- a/api/types/interface/ActionNodeSetupTool.html
+++ b/api/types/interface/ActionNodeSetupTool.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ActionNodeSyncProject.html b/api/types/interface/ActionNodeSyncProject.html
index 6501d53440c..24668b66f35 100644
--- a/api/types/interface/ActionNodeSyncProject.html
+++ b/api/types/interface/ActionNodeSyncProject.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ActionNodeSyncWorkspace.html b/api/types/interface/ActionNodeSyncWorkspace.html
index b3d9c7ef53a..8bb727553c8 100644
--- a/api/types/interface/ActionNodeSyncWorkspace.html
+++ b/api/types/interface/ActionNodeSyncWorkspace.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/Attempt.html b/api/types/interface/Attempt.html
index 7eaa3803718..c87bcf85f78 100644
--- a/api/types/interface/Attempt.html
+++ b/api/types/interface/Attempt.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/BinConfig.html b/api/types/interface/BinConfig.html
index 0d22fc3861b..a9c160555bc 100644
--- a/api/types/interface/BinConfig.html
+++ b/api/types/interface/BinConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/BunConfig.html b/api/types/interface/BunConfig.html
index 89ba9659232..3dc2e774026 100644
--- a/api/types/interface/BunConfig.html
+++ b/api/types/interface/BunConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/BunpmConfig.html b/api/types/interface/BunpmConfig.html
index 55b35378a22..0faa3c8c84c 100644
--- a/api/types/interface/BunpmConfig.html
+++ b/api/types/interface/BunpmConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/CodeownersConfig.html b/api/types/interface/CodeownersConfig.html
index 51939dd8000..437e2c56ba3 100644
--- a/api/types/interface/CodeownersConfig.html
+++ b/api/types/interface/CodeownersConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ConstraintsConfig.html b/api/types/interface/ConstraintsConfig.html
index 9109e9e22ef..3fb2ed23867 100644
--- a/api/types/interface/ConstraintsConfig.html
+++ b/api/types/interface/ConstraintsConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/DenoConfig.html b/api/types/interface/DenoConfig.html
index 9014ee95199..b1b87d8704e 100644
--- a/api/types/interface/DenoConfig.html
+++ b/api/types/interface/DenoConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/DependencyConfig.html b/api/types/interface/DependencyConfig.html
index c4bb2f98069..a492f91e30f 100644
--- a/api/types/interface/DependencyConfig.html
+++ b/api/types/interface/DependencyConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/Duration.html b/api/types/interface/Duration.html
index 3838c34c402..e250429ffcd 100644
--- a/api/types/interface/Duration.html
+++ b/api/types/interface/Duration.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventActionFinished.html b/api/types/interface/EventActionFinished.html
index 284a052e4bd..e4202a7dd35 100644
--- a/api/types/interface/EventActionFinished.html
+++ b/api/types/interface/EventActionFinished.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventActionStarted.html b/api/types/interface/EventActionStarted.html
index db3bb64b3c9..ce1d2cf639c 100644
--- a/api/types/interface/EventActionStarted.html
+++ b/api/types/interface/EventActionStarted.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventDependenciesInstalled.html b/api/types/interface/EventDependenciesInstalled.html
index ace2508e5e9..a35a031339f 100644
--- a/api/types/interface/EventDependenciesInstalled.html
+++ b/api/types/interface/EventDependenciesInstalled.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventDependenciesInstalling.html b/api/types/interface/EventDependenciesInstalling.html
index 2ab57dfe7ea..cff6d90597a 100644
--- a/api/types/interface/EventDependenciesInstalling.html
+++ b/api/types/interface/EventDependenciesInstalling.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventPipelineAborted.html b/api/types/interface/EventPipelineAborted.html
index 8a8c856ed0c..f55c23a45eb 100644
--- a/api/types/interface/EventPipelineAborted.html
+++ b/api/types/interface/EventPipelineAborted.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventPipelineFinished.html b/api/types/interface/EventPipelineFinished.html
index d802d947ef5..f99596fd5fe 100644
--- a/api/types/interface/EventPipelineFinished.html
+++ b/api/types/interface/EventPipelineFinished.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventPipelineStarted.html b/api/types/interface/EventPipelineStarted.html
index b01fcdda6eb..c5dbdd42fc1 100644
--- a/api/types/interface/EventPipelineStarted.html
+++ b/api/types/interface/EventPipelineStarted.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventProjectSynced.html b/api/types/interface/EventProjectSynced.html
index 60c7470f14e..268d88b091e 100644
--- a/api/types/interface/EventProjectSynced.html
+++ b/api/types/interface/EventProjectSynced.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventProjectSyncing.html b/api/types/interface/EventProjectSyncing.html
index 78f1c592516..00009fe79f5 100644
--- a/api/types/interface/EventProjectSyncing.html
+++ b/api/types/interface/EventProjectSyncing.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventTargetOutputArchived.html b/api/types/interface/EventTargetOutputArchived.html
index 1ce11283465..ac6943fefee 100644
--- a/api/types/interface/EventTargetOutputArchived.html
+++ b/api/types/interface/EventTargetOutputArchived.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventTargetOutputArchiving.html b/api/types/interface/EventTargetOutputArchiving.html
index 1ffe8f0db59..9850ec66835 100644
--- a/api/types/interface/EventTargetOutputArchiving.html
+++ b/api/types/interface/EventTargetOutputArchiving.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventTargetOutputCacheCheck.html b/api/types/interface/EventTargetOutputCacheCheck.html
index 49a38bb2717..24e84c42bfe 100644
--- a/api/types/interface/EventTargetOutputCacheCheck.html
+++ b/api/types/interface/EventTargetOutputCacheCheck.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventTargetOutputHydrated.html b/api/types/interface/EventTargetOutputHydrated.html
index 4a350ce2096..fe9b92201e5 100644
--- a/api/types/interface/EventTargetOutputHydrated.html
+++ b/api/types/interface/EventTargetOutputHydrated.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventTargetOutputHydrating.html b/api/types/interface/EventTargetOutputHydrating.html
index 54396fae7ec..33049f34cd8 100644
--- a/api/types/interface/EventTargetOutputHydrating.html
+++ b/api/types/interface/EventTargetOutputHydrating.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventTargetRan.html b/api/types/interface/EventTargetRan.html
index 4d3d7b93ca9..31a17951fd4 100644
--- a/api/types/interface/EventTargetRan.html
+++ b/api/types/interface/EventTargetRan.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventTargetRunning.html b/api/types/interface/EventTargetRunning.html
index 0a57f11b749..e5e9b519127 100644
--- a/api/types/interface/EventTargetRunning.html
+++ b/api/types/interface/EventTargetRunning.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventToolInstalled.html b/api/types/interface/EventToolInstalled.html
index 36080a2e12b..0da9d57ab14 100644
--- a/api/types/interface/EventToolInstalled.html
+++ b/api/types/interface/EventToolInstalled.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventToolInstalling.html b/api/types/interface/EventToolInstalling.html
index 4a72d116206..79d9d2905dc 100644
--- a/api/types/interface/EventToolInstalling.html
+++ b/api/types/interface/EventToolInstalling.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/EventWorkspaceSynced.html b/api/types/interface/EventWorkspaceSynced.html
index fd51e645545..07fa6b23916 100644
--- a/api/types/interface/EventWorkspaceSynced.html
+++ b/api/types/interface/EventWorkspaceSynced.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ExperimentsConfig.html b/api/types/interface/ExperimentsConfig.html
index 94385268375..0ab7bc135a4 100644
--- a/api/types/interface/ExperimentsConfig.html
+++ b/api/types/interface/ExperimentsConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ExtensionConfig.html b/api/types/interface/ExtensionConfig.html
index 9ce03640f5c..cba78c78cfe 100644
--- a/api/types/interface/ExtensionConfig.html
+++ b/api/types/interface/ExtensionConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/FileGroup.html b/api/types/interface/FileGroup.html
index da2d69a7a64..95d25e3c0d7 100644
--- a/api/types/interface/FileGroup.html
+++ b/api/types/interface/FileGroup.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/GeneratorConfig.html b/api/types/interface/GeneratorConfig.html
index 5dbff7244e5..a8a5edd37da 100644
--- a/api/types/interface/GeneratorConfig.html
+++ b/api/types/interface/GeneratorConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/HasherConfig.html b/api/types/interface/HasherConfig.html
index 0c896d41e79..1daa38de7a5 100644
--- a/api/types/interface/HasherConfig.html
+++ b/api/types/interface/HasherConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/InheritedTasksConfig.html b/api/types/interface/InheritedTasksConfig.html
index 8e835af427f..2c8ff7696f5 100644
--- a/api/types/interface/InheritedTasksConfig.html
+++ b/api/types/interface/InheritedTasksConfig.html
@@ -17,7 +17,7 @@
-
+
diff --git a/api/types/interface/NodeConfig.html b/api/types/interface/NodeConfig.html
index e54b330843c..e946d947417 100644
--- a/api/types/interface/NodeConfig.html
+++ b/api/types/interface/NodeConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/NotifierConfig.html b/api/types/interface/NotifierConfig.html
index a1a7f028a56..cba03f3fc82 100644
--- a/api/types/interface/NotifierConfig.html
+++ b/api/types/interface/NotifierConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/NpmConfig.html b/api/types/interface/NpmConfig.html
index cd514b3c451..9c3bf5f8b9b 100644
--- a/api/types/interface/NpmConfig.html
+++ b/api/types/interface/NpmConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/OwnersConfig.html b/api/types/interface/OwnersConfig.html
index 9169dc5d1e4..9ad6fc7d7cc 100644
--- a/api/types/interface/OwnersConfig.html
+++ b/api/types/interface/OwnersConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/PartialBinConfig.html b/api/types/interface/PartialBinConfig.html
index 312d9d657ca..461ed77c8c5 100644
--- a/api/types/interface/PartialBinConfig.html
+++ b/api/types/interface/PartialBinConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialBunConfig.html b/api/types/interface/PartialBunConfig.html
index f490f083390..fc7d04735ca 100644
--- a/api/types/interface/PartialBunConfig.html
+++ b/api/types/interface/PartialBunConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/PartialBunpmConfig.html b/api/types/interface/PartialBunpmConfig.html
index 2d38f389f6b..6bb42278924 100644
--- a/api/types/interface/PartialBunpmConfig.html
+++ b/api/types/interface/PartialBunpmConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialCodeownersConfig.html b/api/types/interface/PartialCodeownersConfig.html
index e6cf874d87f..1baea569902 100644
--- a/api/types/interface/PartialCodeownersConfig.html
+++ b/api/types/interface/PartialCodeownersConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialConstraintsConfig.html b/api/types/interface/PartialConstraintsConfig.html
index e1ecd726b53..306ae64edf5 100644
--- a/api/types/interface/PartialConstraintsConfig.html
+++ b/api/types/interface/PartialConstraintsConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialDenoConfig.html b/api/types/interface/PartialDenoConfig.html
index 6db2871fc0a..e5bbe2c8316 100644
--- a/api/types/interface/PartialDenoConfig.html
+++ b/api/types/interface/PartialDenoConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/PartialDependencyConfig.html b/api/types/interface/PartialDependencyConfig.html
index fe76ea24959..900bb80b9e7 100644
--- a/api/types/interface/PartialDependencyConfig.html
+++ b/api/types/interface/PartialDependencyConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialExperimentsConfig.html b/api/types/interface/PartialExperimentsConfig.html
index 91acee2d826..fd21c60000f 100644
--- a/api/types/interface/PartialExperimentsConfig.html
+++ b/api/types/interface/PartialExperimentsConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialExtensionConfig.html b/api/types/interface/PartialExtensionConfig.html
index 0cfb12974da..e3d608a7b87 100644
--- a/api/types/interface/PartialExtensionConfig.html
+++ b/api/types/interface/PartialExtensionConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialGeneratorConfig.html b/api/types/interface/PartialGeneratorConfig.html
index 12980d53cc1..015e5511cdd 100644
--- a/api/types/interface/PartialGeneratorConfig.html
+++ b/api/types/interface/PartialGeneratorConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialHasherConfig.html b/api/types/interface/PartialHasherConfig.html
index 6a0579dee9e..9111367ca09 100644
--- a/api/types/interface/PartialHasherConfig.html
+++ b/api/types/interface/PartialHasherConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialInheritedTasksConfig.html b/api/types/interface/PartialInheritedTasksConfig.html
index 5bdbd06f22a..e29949a94fe 100644
--- a/api/types/interface/PartialInheritedTasksConfig.html
+++ b/api/types/interface/PartialInheritedTasksConfig.html
@@ -17,7 +17,7 @@
-
+
diff --git a/api/types/interface/PartialNodeConfig.html b/api/types/interface/PartialNodeConfig.html
index 50fe2d27efe..dd31e311bcf 100644
--- a/api/types/interface/PartialNodeConfig.html
+++ b/api/types/interface/PartialNodeConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/PartialNotifierConfig.html b/api/types/interface/PartialNotifierConfig.html
index 652286890cd..f94824200fc 100644
--- a/api/types/interface/PartialNotifierConfig.html
+++ b/api/types/interface/PartialNotifierConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialNpmConfig.html b/api/types/interface/PartialNpmConfig.html
index f2a27144b4a..e3f36923d63 100644
--- a/api/types/interface/PartialNpmConfig.html
+++ b/api/types/interface/PartialNpmConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialOwnersConfig.html b/api/types/interface/PartialOwnersConfig.html
index 2c85965184d..44dffce7de3 100644
--- a/api/types/interface/PartialOwnersConfig.html
+++ b/api/types/interface/PartialOwnersConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/PartialPnpmConfig.html b/api/types/interface/PartialPnpmConfig.html
index c6156507df9..da40df43084 100644
--- a/api/types/interface/PartialPnpmConfig.html
+++ b/api/types/interface/PartialPnpmConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialProjectConfig.html b/api/types/interface/PartialProjectConfig.html
index f37454eb3ff..8c22e592634 100644
--- a/api/types/interface/PartialProjectConfig.html
+++ b/api/types/interface/PartialProjectConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/PartialProjectGraph.html b/api/types/interface/PartialProjectGraph.html
index 76022eb463a..815fc7a34e0 100644
--- a/api/types/interface/PartialProjectGraph.html
+++ b/api/types/interface/PartialProjectGraph.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialProjectMetadataConfig.html b/api/types/interface/PartialProjectMetadataConfig.html
index 54c403af65a..b823cae4797 100644
--- a/api/types/interface/PartialProjectMetadataConfig.html
+++ b/api/types/interface/PartialProjectMetadataConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialProjectToolchainCommonToolConfig.html b/api/types/interface/PartialProjectToolchainCommonToolConfig.html
index dae2696c162..fb2a7ee10f9 100644
--- a/api/types/interface/PartialProjectToolchainCommonToolConfig.html
+++ b/api/types/interface/PartialProjectToolchainCommonToolConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialProjectToolchainConfig.html b/api/types/interface/PartialProjectToolchainConfig.html
index afa7de40e0c..d965c632db7 100644
--- a/api/types/interface/PartialProjectToolchainConfig.html
+++ b/api/types/interface/PartialProjectToolchainConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialProjectToolchainTypeScriptConfig.html b/api/types/interface/PartialProjectToolchainTypeScriptConfig.html
index c2952ef00c2..26e6d1126fe 100644
--- a/api/types/interface/PartialProjectToolchainTypeScriptConfig.html
+++ b/api/types/interface/PartialProjectToolchainTypeScriptConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialProjectWorkspaceConfig.html b/api/types/interface/PartialProjectWorkspaceConfig.html
index 4678b85ffa2..400859052e0 100644
--- a/api/types/interface/PartialProjectWorkspaceConfig.html
+++ b/api/types/interface/PartialProjectWorkspaceConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialProjectWorkspaceInheritedTasksConfig.html b/api/types/interface/PartialProjectWorkspaceInheritedTasksConfig.html
index d3e4ecf22da..92383ea3047 100644
--- a/api/types/interface/PartialProjectWorkspaceInheritedTasksConfig.html
+++ b/api/types/interface/PartialProjectWorkspaceInheritedTasksConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialRunnerConfig.html b/api/types/interface/PartialRunnerConfig.html
index 6ed871556a5..4bc1886ff95 100644
--- a/api/types/interface/PartialRunnerConfig.html
+++ b/api/types/interface/PartialRunnerConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialRustConfig.html b/api/types/interface/PartialRustConfig.html
index 6179f7e06dc..39a0aafc5a1 100644
--- a/api/types/interface/PartialRustConfig.html
+++ b/api/types/interface/PartialRustConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/PartialTaskConfig.html b/api/types/interface/PartialTaskConfig.html
index 2884c8888d2..67cffe8fa66 100644
--- a/api/types/interface/PartialTaskConfig.html
+++ b/api/types/interface/PartialTaskConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialTaskDependencyConfig.html b/api/types/interface/PartialTaskDependencyConfig.html
index 7c4cd4c5938..2d9b6bff8c4 100644
--- a/api/types/interface/PartialTaskDependencyConfig.html
+++ b/api/types/interface/PartialTaskDependencyConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialTaskOptionsConfig.html b/api/types/interface/PartialTaskOptionsConfig.html
index 76f499b14d1..f621da643a7 100644
--- a/api/types/interface/PartialTaskOptionsConfig.html
+++ b/api/types/interface/PartialTaskOptionsConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialTemplateConfig.html b/api/types/interface/PartialTemplateConfig.html
index 8f3fed7dcd3..8a984c9a451 100644
--- a/api/types/interface/PartialTemplateConfig.html
+++ b/api/types/interface/PartialTemplateConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/PartialTemplateFrontmatterConfig.html b/api/types/interface/PartialTemplateFrontmatterConfig.html
index fd53d233ce4..3bc61f0968d 100644
--- a/api/types/interface/PartialTemplateFrontmatterConfig.html
+++ b/api/types/interface/PartialTemplateFrontmatterConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialTemplateVariableBoolSetting.html b/api/types/interface/PartialTemplateVariableBoolSetting.html
index 7b9a6cbeece..7058894a5ac 100644
--- a/api/types/interface/PartialTemplateVariableBoolSetting.html
+++ b/api/types/interface/PartialTemplateVariableBoolSetting.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialTemplateVariableEnumSetting.html b/api/types/interface/PartialTemplateVariableEnumSetting.html
index 04351e7fdee..85a8829cca5 100644
--- a/api/types/interface/PartialTemplateVariableEnumSetting.html
+++ b/api/types/interface/PartialTemplateVariableEnumSetting.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialTemplateVariableEnumValueConfig.html b/api/types/interface/PartialTemplateVariableEnumValueConfig.html
index adb8da7b5b7..055946e4910 100644
--- a/api/types/interface/PartialTemplateVariableEnumValueConfig.html
+++ b/api/types/interface/PartialTemplateVariableEnumValueConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialTemplateVariableNumberSetting.html b/api/types/interface/PartialTemplateVariableNumberSetting.html
index 83ac3b9f53a..cd4458db913 100644
--- a/api/types/interface/PartialTemplateVariableNumberSetting.html
+++ b/api/types/interface/PartialTemplateVariableNumberSetting.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialTemplateVariableStringSetting.html b/api/types/interface/PartialTemplateVariableStringSetting.html
index 8e54f8a60b1..f12d5f205b0 100644
--- a/api/types/interface/PartialTemplateVariableStringSetting.html
+++ b/api/types/interface/PartialTemplateVariableStringSetting.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialToolchainConfig.html b/api/types/interface/PartialToolchainConfig.html
index 8e2612a103a..ec43e7dd0fd 100644
--- a/api/types/interface/PartialToolchainConfig.html
+++ b/api/types/interface/PartialToolchainConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/PartialTypeScriptConfig.html b/api/types/interface/PartialTypeScriptConfig.html
index 5b6abc4fdba..c683034702f 100644
--- a/api/types/interface/PartialTypeScriptConfig.html
+++ b/api/types/interface/PartialTypeScriptConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/PartialVcsConfig.html b/api/types/interface/PartialVcsConfig.html
index 43cbb6d6431..368f2d2e1cd 100644
--- a/api/types/interface/PartialVcsConfig.html
+++ b/api/types/interface/PartialVcsConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialWorkspaceConfig.html b/api/types/interface/PartialWorkspaceConfig.html
index b0531746e66..db1791adf70 100644
--- a/api/types/interface/PartialWorkspaceConfig.html
+++ b/api/types/interface/PartialWorkspaceConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/PartialWorkspaceProjectsConfig.html b/api/types/interface/PartialWorkspaceProjectsConfig.html
index 298f6d0c92c..3b6fa8d94ea 100644
--- a/api/types/interface/PartialWorkspaceProjectsConfig.html
+++ b/api/types/interface/PartialWorkspaceProjectsConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PartialYarnConfig.html b/api/types/interface/PartialYarnConfig.html
index f7097b28175..96146740ec5 100644
--- a/api/types/interface/PartialYarnConfig.html
+++ b/api/types/interface/PartialYarnConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/PnpmConfig.html b/api/types/interface/PnpmConfig.html
index d180f6e4649..3e2447503d1 100644
--- a/api/types/interface/PnpmConfig.html
+++ b/api/types/interface/PnpmConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/Project.html b/api/types/interface/Project.html
index 502db39cba7..4ac366d0e38 100644
--- a/api/types/interface/Project.html
+++ b/api/types/interface/Project.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ProjectConfig.html b/api/types/interface/ProjectConfig.html
index d797f129f73..32e3d2ebf23 100644
--- a/api/types/interface/ProjectConfig.html
+++ b/api/types/interface/ProjectConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/ProjectGraph.html b/api/types/interface/ProjectGraph.html
index ff4363bd702..2a756fd95c4 100644
--- a/api/types/interface/ProjectGraph.html
+++ b/api/types/interface/ProjectGraph.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ProjectGraphInner.html b/api/types/interface/ProjectGraphInner.html
index b96e7135978..737503d124c 100644
--- a/api/types/interface/ProjectGraphInner.html
+++ b/api/types/interface/ProjectGraphInner.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ProjectMetadataConfig.html b/api/types/interface/ProjectMetadataConfig.html
index 49b984dd260..1ec5ee491d7 100644
--- a/api/types/interface/ProjectMetadataConfig.html
+++ b/api/types/interface/ProjectMetadataConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ProjectToolchainCommonToolConfig.html b/api/types/interface/ProjectToolchainCommonToolConfig.html
index 6dfe075d756..c1b3fd912f8 100644
--- a/api/types/interface/ProjectToolchainCommonToolConfig.html
+++ b/api/types/interface/ProjectToolchainCommonToolConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ProjectToolchainConfig.html b/api/types/interface/ProjectToolchainConfig.html
index 5b08f7b336b..f17b71a49f2 100644
--- a/api/types/interface/ProjectToolchainConfig.html
+++ b/api/types/interface/ProjectToolchainConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ProjectToolchainTypeScriptConfig.html b/api/types/interface/ProjectToolchainTypeScriptConfig.html
index 55f4421bcb8..b05e5d7e8ff 100644
--- a/api/types/interface/ProjectToolchainTypeScriptConfig.html
+++ b/api/types/interface/ProjectToolchainTypeScriptConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ProjectWorkspaceConfig.html b/api/types/interface/ProjectWorkspaceConfig.html
index 0d19eee0122..d0db2602a0c 100644
--- a/api/types/interface/ProjectWorkspaceConfig.html
+++ b/api/types/interface/ProjectWorkspaceConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ProjectWorkspaceInheritedTasksConfig.html b/api/types/interface/ProjectWorkspaceInheritedTasksConfig.html
index 02db61c88b7..8ab2a4e361b 100644
--- a/api/types/interface/ProjectWorkspaceInheritedTasksConfig.html
+++ b/api/types/interface/ProjectWorkspaceInheritedTasksConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ProviderEnvironment.html b/api/types/interface/ProviderEnvironment.html
index d477cca2a06..5bfd162de21 100644
--- a/api/types/interface/ProviderEnvironment.html
+++ b/api/types/interface/ProviderEnvironment.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/RunReport.html b/api/types/interface/RunReport.html
index 1dac8652768..2a4254aa532 100644
--- a/api/types/interface/RunReport.html
+++ b/api/types/interface/RunReport.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/RunnerConfig.html b/api/types/interface/RunnerConfig.html
index 7996085cb18..7a95dc6a6da 100644
--- a/api/types/interface/RunnerConfig.html
+++ b/api/types/interface/RunnerConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/Runtime.html b/api/types/interface/Runtime.html
index f8385f93a75..29fa605dd09 100644
--- a/api/types/interface/Runtime.html
+++ b/api/types/interface/Runtime.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/RustConfig.html b/api/types/interface/RustConfig.html
index 2bcc05eff79..b58d5b270f1 100644
--- a/api/types/interface/RustConfig.html
+++ b/api/types/interface/RustConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/TargetState.html b/api/types/interface/TargetState.html
index 79ab0916131..4c4caf4d43f 100644
--- a/api/types/interface/TargetState.html
+++ b/api/types/interface/TargetState.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/Task.html b/api/types/interface/Task.html
index 16010425f21..7b2e404cdb0 100644
--- a/api/types/interface/Task.html
+++ b/api/types/interface/Task.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/TaskConfig.html b/api/types/interface/TaskConfig.html
index eee1db4d067..96d595a6827 100644
--- a/api/types/interface/TaskConfig.html
+++ b/api/types/interface/TaskConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/TaskDependencyConfig.html b/api/types/interface/TaskDependencyConfig.html
index 131665b1781..c5ee62a3530 100644
--- a/api/types/interface/TaskDependencyConfig.html
+++ b/api/types/interface/TaskDependencyConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/TaskOptions.html b/api/types/interface/TaskOptions.html
index d4d03a3fd4c..579ffd58163 100644
--- a/api/types/interface/TaskOptions.html
+++ b/api/types/interface/TaskOptions.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/TaskOptionsConfig.html b/api/types/interface/TaskOptionsConfig.html
index 005cc5dbf9d..1d48a46b2db 100644
--- a/api/types/interface/TaskOptionsConfig.html
+++ b/api/types/interface/TaskOptionsConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/TemplateConfig.html b/api/types/interface/TemplateConfig.html
index 0f03d187444..0dd93573240 100644
--- a/api/types/interface/TemplateConfig.html
+++ b/api/types/interface/TemplateConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/TemplateFrontmatterConfig.html b/api/types/interface/TemplateFrontmatterConfig.html
index 0771adf39fe..03d271ba84e 100644
--- a/api/types/interface/TemplateFrontmatterConfig.html
+++ b/api/types/interface/TemplateFrontmatterConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/TemplateVariableBoolSetting.html b/api/types/interface/TemplateVariableBoolSetting.html
index 88f605f2b55..7754298eed0 100644
--- a/api/types/interface/TemplateVariableBoolSetting.html
+++ b/api/types/interface/TemplateVariableBoolSetting.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/TemplateVariableEnumSetting.html b/api/types/interface/TemplateVariableEnumSetting.html
index 82197ca5923..5d37eec97e4 100644
--- a/api/types/interface/TemplateVariableEnumSetting.html
+++ b/api/types/interface/TemplateVariableEnumSetting.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/TemplateVariableEnumValueConfig.html b/api/types/interface/TemplateVariableEnumValueConfig.html
index ba254a70bc0..0a79260daa0 100644
--- a/api/types/interface/TemplateVariableEnumValueConfig.html
+++ b/api/types/interface/TemplateVariableEnumValueConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/TemplateVariableNumberSetting.html b/api/types/interface/TemplateVariableNumberSetting.html
index c1996d039fc..a17784449a1 100644
--- a/api/types/interface/TemplateVariableNumberSetting.html
+++ b/api/types/interface/TemplateVariableNumberSetting.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/TemplateVariableStringSetting.html b/api/types/interface/TemplateVariableStringSetting.html
index ec9732ad029..b4305ec17eb 100644
--- a/api/types/interface/TemplateVariableStringSetting.html
+++ b/api/types/interface/TemplateVariableStringSetting.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/ToolchainConfig.html b/api/types/interface/ToolchainConfig.html
index 939a19773da..7d1d951bf8a 100644
--- a/api/types/interface/ToolchainConfig.html
+++ b/api/types/interface/ToolchainConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/TypeScriptConfig.html b/api/types/interface/TypeScriptConfig.html
index becc208e518..5d5a59d0828 100644
--- a/api/types/interface/TypeScriptConfig.html
+++ b/api/types/interface/TypeScriptConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/VcsConfig.html b/api/types/interface/VcsConfig.html
index e0c7e736d07..2cd5c02f8d6 100644
--- a/api/types/interface/VcsConfig.html
+++ b/api/types/interface/VcsConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/WebhookPayload.html b/api/types/interface/WebhookPayload.html
index 7d15a02472a..f4ba25e8132 100644
--- a/api/types/interface/WebhookPayload.html
+++ b/api/types/interface/WebhookPayload.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/WorkspaceConfig.html b/api/types/interface/WorkspaceConfig.html
index 0a2abd05db5..734f49d286c 100644
--- a/api/types/interface/WorkspaceConfig.html
+++ b/api/types/interface/WorkspaceConfig.html
@@ -15,7 +15,7 @@
-
+
diff --git a/api/types/interface/WorkspaceProjectsConfig.html b/api/types/interface/WorkspaceProjectsConfig.html
index 3ccecfd542a..3881386e4f3 100644
--- a/api/types/interface/WorkspaceProjectsConfig.html
+++ b/api/types/interface/WorkspaceProjectsConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/api/types/interface/YarnConfig.html b/api/types/interface/YarnConfig.html
index 884ea1e7783..e6f739a939d 100644
--- a/api/types/interface/YarnConfig.html
+++ b/api/types/interface/YarnConfig.html
@@ -13,7 +13,7 @@
-
+
diff --git a/assets/js/17cacc08.a58c2962.js b/assets/js/17cacc08.a58c2962.js
new file mode 100644
index 00000000000..1a915719b98
--- /dev/null
+++ b/assets/js/17cacc08.a58c2962.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[88893],{95208:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>c,default:()=>m,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var i=s(24246),t=s(71670),r=(s(33337),s(39798),s(32189)),o=s(9785),a=s(79022);const l={title:".moon/workspace.yml",toc_max_heading_level:6},c=void 0,d={id:"config/workspace",title:".moon/workspace.yml",description:"The .moon/workspace.yml file configures projects and services in the workspace. This file is",source:"@site/docs/config/workspace.mdx",sourceDirName:"config",slug:"/config/workspace",permalink:"/docs/config/workspace",draft:!1,unlisted:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/config/workspace.mdx",tags:[],version:"current",frontMatter:{title:".moon/workspace.yml",toc_max_heading_level:6},sidebar:"docs",previous:{title:"Config files",permalink:"/docs/config"},next:{title:".moon/toolchain.yml",permalink:"/docs/config/toolchain"}},h={},p=[{value:"extends
",id:"extends",level:2},{value:"projects
",id:"projects",level:2},{value:"Using a map",id:"using-a-map",level:3},{value:"Using globs",id:"using-globs",level:3},{value:"Using a map and globs",id:"using-a-map-and-globs",level:3},{value:"codeowners
",id:"codeowners",level:2},{value:"globalPaths
",id:"globalpaths",level:3},{value:"orderBy
",id:"orderby",level:3},{value:"syncOnRun
",id:"synconrun",level:3},{value:"constraints
",id:"constraints",level:2},{value:"enforceProjectTypeRelationships
",id:"enforceprojecttyperelationships",level:3},{value:"tagRelationships
",id:"tagrelationships",level:3},{value:"experiments
",id:"experiments",level:2},{value:"strictProjectAliases
",id:"strictprojectaliases",level:3},{value:"extensions
",id:"extensions",level:2},{value:"generator
",id:"generator",level:2},{value:"templates
",id:"templates",level:3},{value:"hasher
",id:"hasher",level:2},{value:"batchSize
",id:"batchsize",level:3},{value:"ignoreMissingPatterns
",id:"ignoremissingpatterns",level:3},{value:"ignorePatterns
",id:"ignorepatterns",level:3},{value:"optimization
",id:"optimization",level:3},{value:"walkStrategy
",id:"walkstrategy",level:3},{value:"warnOnMissingInputs
",id:"warnonmissinginputs",level:3},{value:"notifier
",id:"notifier",level:2},{value:"webhookUrl
",id:"webhookurl",level:3},{value:"runner
",id:"runner",level:2},{value:"cacheLifetime
",id:"cachelifetime",level:3},{value:"archivableTargets
",id:"archivabletargets",level:3},{value:"inheritColorsForPipedTasks
",id:"inheritcolorsforpipedtasks",level:3},{value:"logRunningCommand
",id:"logrunningcommand",level:3},{value:"telemetry
",id:"telemetry",level:2},{value:"vcs
",id:"vcs",level:2},{value:"defaultBranch
",id:"defaultbranch",level:3},{value:"hooks
",id:"hooks",level:3},{value:"manager
",id:"manager",level:3},{value:"provider
",id:"provider",level:3},{value:"remoteCandidates
",id:"remotecandidates",level:3},{value:"syncHooks
",id:"synchooks",level:3},{value:"versionConstraint
",id:"versionconstraint",level:2}];function u(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:".moon/workspace.yml"})," file configures projects and services in the workspace. This file is\n",(0,i.jsx)(n.em,{children:"required"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml"',children:"$schema: 'https://moonrepo.dev/schemas/workspace.json'\n"})}),"\n",(0,i.jsx)(n.h2,{id:"extends",children:(0,i.jsx)(n.code,{children:"extends"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#extends"}),"\n",(0,i.jsxs)(n.p,{children:["Defines an external ",(0,i.jsx)(n.code,{children:".moon/workspace.yml"})," to extend and inherit settings from. Perfect for\nreusability and sharing configuration across repositories and projects. When defined, this setting\nmust be an HTTPS URL ",(0,i.jsx)(n.em,{children:"or"})," relative file system path that points to a valid YAML document!"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {1}',children:"extends: 'https://raw.githubusercontent.com/organization/repository/master/.moon/workspace.yml'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["Settings will be merged recursively for blocks, with values defined in the local configuration\ntaking precedence over those defined in the extended configuration. However, the ",(0,i.jsx)(n.code,{children:"projects"})," setting\n",(0,i.jsx)(n.em,{children:"does not merge"}),"!"]})}),"\n",(0,i.jsxs)(n.h2,{id:"projects",children:[(0,i.jsx)(n.code,{children:"projects"}),(0,i.jsx)(o.Z,{})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#projects"}),"\n",(0,i.jsxs)(n.p,{children:["Defines the location of all ",(0,i.jsx)(n.a,{href:"../concepts/project",children:"projects"})," within the workspace. Supports either a\nmanual map of projects (default), a list of globs in which to automatically locate projects, ",(0,i.jsx)(n.em,{children:"or"}),"\nboth."]}),"\n",(0,i.jsx)(n.admonition,{type:"caution",children:(0,i.jsx)(n.p,{children:"Projects that depend on each other and form a cycle must be avoided! While we do our best to avoid\nan infinite loop and disconnect nodes from each other, there's no guarantee that tasks will run in\nthe correct order."})}),"\n",(0,i.jsx)(n.h3,{id:"using-a-map",children:"Using a map"}),"\n",(0,i.jsxs)(n.p,{children:["When using a map, each project must be ",(0,i.jsx)(n.em,{children:"manually"})," configured and requires a unique\n",(0,i.jsx)(n.a,{href:"../concepts/project#names",children:"name"})," as the map key, where this name is used heavily on the command\nline and within the project graph for uniquely identifying the project amongst all projects. The map\nvalue (known as the project source) is a file system path to the project folder, relative from the\nworkspace root, and must be contained within the workspace boundary."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml"',children:"projects:\n admin: 'apps/admin'\n apiClients: 'packages/api-clients'\n designSystem: 'packages/design-system'\n web: 'apps/web'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"using-globs",children:"Using globs"}),"\n",(0,i.jsxs)(n.p,{children:["If manually mapping projects is too tedious or cumbersome, you may provide a list of\n",(0,i.jsx)(n.a,{href:"../concepts/file-pattern#globs",children:"globs"})," to automatically locate all project folders, relative from\nthe workspace root."]}),"\n",(0,i.jsxs)(n.p,{children:["When using this approach, the project name is derived from the project folder name, and is cleaned\nto our ",(0,i.jsx)(n.a,{href:"../concepts/project#names",children:"supported characters"}),", but can be customized with the\n",(0,i.jsx)(n.a,{href:"./project#id",children:(0,i.jsx)(n.code,{children:"id"})})," setting in ",(0,i.jsx)(n.a,{href:"./project",children:(0,i.jsx)(n.code,{children:"moon.yml"})}),". Furthermore, globbing ",(0,i.jsx)(n.strong,{children:"does risk the\nchance of collision"}),", and when that happens, we log a warning and skip the conflicting project from\nbeing configured in the project graph."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml"',children:"projects:\n - 'apps/*'\n - 'packages/*'\n # Only shared folders with a moon configuration\n - 'shared/*/moon.yml'\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"using-a-map-and-globs",children:["Using a map ",(0,i.jsx)(n.em,{children:"and"})," globs"]}),"\n",(0,i.jsxs)(n.p,{children:["For those situations where you want to use ",(0,i.jsx)(n.em,{children:"both"})," patterns, you can! The list of globs can be\ndefined under a ",(0,i.jsx)(n.code,{children:"globs"})," field, while the map of projects under a ",(0,i.jsx)(n.code,{children:"sources"})," field."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml"',children:"projects:\n globs:\n - 'apps/*'\n - 'packages/*'\n sources:\n www: 'www'\n"})}),"\n",(0,i.jsxs)(n.h2,{id:"codeowners",children:[(0,i.jsx)(n.code,{children:"codeowners"}),(0,i.jsx)(a.Z,{version:"1.8.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#codeowners"}),"\n",(0,i.jsxs)(n.p,{children:["Configures code owners (",(0,i.jsx)(n.code,{children:"CODEOWNERS"}),") integration across the entire workspace."]}),"\n",(0,i.jsx)(n.h3,{id:"globalpaths",children:(0,i.jsx)(n.code,{children:"globalPaths"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/CodeownersConfig#globalPaths"}),"\n",(0,i.jsxs)(n.p,{children:["This setting defines file patterns and their owners at the workspace-level, and are applied to any\nmatching path, at any depth, within the entire workspace. This is useful for defining global or\nfallback owners when a granular ",(0,i.jsx)(n.a,{href:"./project#paths",children:"project-level path"})," does not match or exist."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2-5}',children:"codeowners:\n globalPaths:\n '*': ['@admins']\n 'config/': ['@infra']\n '/.github/': ['@infra']\n"})}),"\n",(0,i.jsx)(n.h3,{id:"orderby",children:(0,i.jsx)(n.code,{children:"orderBy"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/CodeownersConfig#orderBy"}),"\n",(0,i.jsxs)(n.p,{children:["The order in which code owners, grouped by project, are listed in the ",(0,i.jsx)(n.code,{children:"CODEOWNERS"}),' file. Accepts\n"file-source" (default) or "project-name".']}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"codeowners:\n orderBy: 'project-name'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"synconrun",children:(0,i.jsx)(n.code,{children:"syncOnRun"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/CodeownersConfig#syncOnRun"}),"\n",(0,i.jsxs)(n.p,{children:["Will automatically generate a ",(0,i.jsx)(n.code,{children:"CODEOWNERS"})," file by aggregating and syncing all project\n",(0,i.jsx)(n.a,{href:"./project#owners",children:(0,i.jsx)(n.code,{children:"owners"})})," in the workspace when a ",(0,i.jsx)(n.a,{href:"../concepts/target",children:"target is run"}),". The format\nand location of the ",(0,i.jsx)(n.code,{children:"CODEOWNERS"})," file is based on the ",(0,i.jsx)(n.a,{href:"#provider",children:(0,i.jsx)(n.code,{children:"vcs.provider"})})," setting. Defaults\nto ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"codeowners:\n syncOnRun: true\n"})}),"\n",(0,i.jsx)(n.h2,{id:"constraints",children:(0,i.jsx)(n.code,{children:"constraints"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#constraints"}),"\n",(0,i.jsx)(n.p,{children:"Configures constraints between projects that are enforced during project graph generation. This is\nalso known as project boundaries."}),"\n",(0,i.jsx)(n.h3,{id:"enforceprojecttyperelationships",children:(0,i.jsx)(n.code,{children:"enforceProjectTypeRelationships"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ConstraintsConfig#enforceProjectTypeRelationships"}),"\n",(0,i.jsxs)(n.p,{children:["Enforces allowed relationships between a project its dependencies based on the project's\n",(0,i.jsx)(n.a,{href:"./project#type",children:(0,i.jsx)(n.code,{children:"type"})})," and ",(0,i.jsx)(n.a,{href:"./project#stack",children:(0,i.jsx)(n.code,{children:"stack"})})," settings. When a project depends on another\nproject of an invalid type, an error will be thrown when attempting to run a task. The following\nrelationships are enforced when this setting is enabled, which defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Applications can depend on all types ",(0,i.jsx)(n.em,{children:"except other"})," applications or automation."]}),"\n",(0,i.jsxs)(n.li,{children:["Automation can depend on all types ",(0,i.jsx)(n.em,{children:"except other"})," automation."]}),"\n",(0,i.jsxs)(n.li,{children:["Libraries can ",(0,i.jsx)(n.em,{children:"only"})," depend on other libraries, configuration, or scaffolding."]}),"\n",(0,i.jsxs)(n.li,{children:["Tools can ",(0,i.jsx)(n.em,{children:"only"})," depend on libraries, configuration, or scaffolding."]}),"\n",(0,i.jsxs)(n.li,{children:["Configuration and scaffolding can ",(0,i.jsx)(n.em,{children:"only"})," depend on other configuration and scaffolding."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["When the project ",(0,i.jsx)(n.code,{children:"stack"})," setting is defined, it alters these rules to allow these kinds of\nrelationships. For example, a frontend application can depend on a backend application, but not\nanother frontend application."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"constraints:\n enforceProjectTypeRelationships: false\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Projects with an unconfigured or unknown type are ignored during enforcement."}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"tagrelationships",children:(0,i.jsx)(n.code,{children:"tagRelationships"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ConstraintsConfig#tagRelationships"}),"\n",(0,i.jsxs)(n.p,{children:["Enforces allowed relationships between a project and its dependencies based on the project's\n",(0,i.jsx)(n.a,{href:"./project#tags",children:(0,i.jsx)(n.code,{children:"tags"})})," setting. This works in a similar fashion to\n",(0,i.jsx)(n.code,{children:"enforceProjectTypeRelationships"}),", but gives you far more control over what these relationships look\nlike."]}),"\n",(0,i.jsxs)(n.p,{children:["For example, let's enforce that Next.js projects using the ",(0,i.jsx)(n.code,{children:"next"})," tag can only depend on React\nprojects using the ",(0,i.jsx)(n.code,{children:"react"})," tag. If a dependency does not have one of the configured required tags,\nin this case ",(0,i.jsx)(n.code,{children:"react"}),", an error will occur."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2,3}',children:"constraints:\n tagRelationships:\n next: ['react']\n"})}),"\n",(0,i.jsxs)(n.p,{children:["On the project side, we would configure ",(0,i.jsx)(n.a,{href:"./project#tags",children:(0,i.jsx)(n.code,{children:"moon.yml"})})," like so:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="app/moon.yml"',children:"tags: ['next']\ndependsOn: ['components']\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="packages/components/moon.yml"',children:"tags: ['react']\n"})}),"\n",(0,i.jsxs)(n.h2,{id:"experiments",children:[(0,i.jsx)(n.code,{children:"experiments"}),(0,i.jsx)(a.Z,{version:"1.11.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#experiments"}),"\n",(0,i.jsx)(n.p,{children:"Enable or disable experiments that alter core functionality."}),"\n",(0,i.jsxs)(n.h3,{id:"strictprojectaliases",children:[(0,i.jsx)(n.code,{children:"strictProjectAliases"}),(0,i.jsx)(a.Z,{version:"1.18.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ExperimentsConfig#strictProjectAliases"}),"\n",(0,i.jsxs)(n.p,{children:["When enabled, will fail with an error when multiple\n",(0,i.jsx)(n.a,{href:"../concepts/project#aliases",children:"projects have the same alias"}),". When disabled, the duplicate aliases\nwill not be assigned to their project, and only the first project will use the alias. Defaults to\n",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"experiments:\n strictProjectAliases: false\n"})}),"\n",(0,i.jsxs)(n.h2,{id:"extensions",children:[(0,i.jsx)(n.code,{children:"extensions"}),(0,i.jsx)(a.Z,{version:"1.20.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#extensions"}),"\n",(0,i.jsxs)(n.p,{children:["A mapping of extensions that can be downloaded and executed with the ",(0,i.jsx)(n.a,{href:"../commands/ext",children:(0,i.jsx)(n.code,{children:"moon ext"})}),"\ncommand. An extension is a WASM plugin, and the location of the WASM file must be defined with the\n",(0,i.jsx)(n.code,{children:"plugin"})," field, which requires a\n",(0,i.jsx)(n.a,{href:"../guides/wasm-plugins#configuring-plugin-locations",children:"plugin locator string"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2-5}',children:"extensions:\n example:\n plugin: 'source:./path/to/example.wasm'\n # or\n plugin: 'source:https://example.com/path/to/example.wasm'\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Additionally, extensions support custom configuration that is passed to the WASM runtime when the\nplugin is instantiated. This configuration is defined by inserting additional fields under the\nextension name, relative to the ",(0,i.jsx)(n.code,{children:"plugin"})," field. Each extension may have its own settings, so refer\nto their documentation for more information."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2-5}',children:"extensions:\n example:\n plugin: 'source:./path/to/example.wasm'\n setting1: true\n setting2: 'abc'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["View our official ",(0,i.jsx)(n.a,{href:"../guides/extensions",children:"extensions guide"})," for more information, including built-in\nextensions!"]})}),"\n",(0,i.jsx)(n.h2,{id:"generator",children:(0,i.jsx)(n.code,{children:"generator"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#generator"}),"\n",(0,i.jsx)(n.p,{children:"Configures aspects of the template generator."}),"\n",(0,i.jsx)(n.h3,{id:"templates",children:(0,i.jsx)(n.code,{children:"templates"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/GeneratorConfig#templates"}),"\n",(0,i.jsxs)(n.p,{children:["A list of file system paths where templates can be located, relative from the workspace root.\nDefaults to ",(0,i.jsx)(n.code,{children:"./templates"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2-4}',children:"generator:\n templates:\n - './templates'\n - './other/templates'\n"})}),"\n",(0,i.jsx)(n.h2,{id:"hasher",children:(0,i.jsx)(n.code,{children:"hasher"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#hasher"}),"\n",(0,i.jsx)(n.p,{children:"Configures aspects of the smart hashing layer."}),"\n",(0,i.jsx)(n.h3,{id:"batchsize",children:(0,i.jsx)(n.code,{children:"batchSize"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/HasherConfig#batchSize"}),"\n",(0,i.jsxs)(n.p,{children:["When hashing a list of files, we split the list into batches to help reduce memory footprint and\navoid overloading the configured VCS. This setting controls how many files are in each batch and\ndefaults to ",(0,i.jsx)(n.code,{children:"2500"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"If you're running into memory issues, or moon hanging during the file hashing process, lowering this\nnumber may help resolve the issue."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"hasher:\n batchSize: 1000\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"ignoremissingpatterns",children:[(0,i.jsx)(n.code,{children:"ignoreMissingPatterns"}),(0,i.jsx)(a.Z,{version:"1.10.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/HasherConfig#ignoreMissingPatterns"}),"\n",(0,i.jsxs)(n.p,{children:["When ",(0,i.jsx)(n.a,{href:"#warnonmissinginputs",children:(0,i.jsx)(n.code,{children:"hasher.warnOnMissingInputs"})})," is enabled, moon will log a warning to the\nterminal that an input is missing. This is useful for uncovering misconfigurations, but can be quite\nnoisy when inputs are truly optional."]}),"\n",(0,i.jsxs)(n.p,{children:["To ignore warnings for missing inputs, a list of ",(0,i.jsx)(n.a,{href:"../concepts/file-pattern#globs",children:"glob patterns"})," can\nbe configured to filter and ignore files. Files are matched against workspace relative paths, so\nprefixing patterns with ",(0,i.jsx)(n.code,{children:"**/"})," is suggested."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2-4}',children:"hasher:\n ignoreMissingPatterns:\n - '**/.eslintrc.*'\n - '**/*.config.*'\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"ignorepatterns",children:[(0,i.jsx)(n.code,{children:"ignorePatterns"}),(0,i.jsx)(a.Z,{version:"1.10.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/HasherConfig#ignorePatterns"}),"\n",(0,i.jsxs)(n.p,{children:["A list of ",(0,i.jsx)(n.a,{href:"../concepts/file-pattern#globs",children:"glob patterns"})," used to filter and ignore files during the\ninputs hashing process. Files are matched against workspace relative paths, so prefixing patterns\nwith ",(0,i.jsx)(n.code,{children:"**/"})," is suggested."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2,3}',children:"hasher:\n ignorePatterns:\n - '**/*.png'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"optimization",children:(0,i.jsx)(n.code,{children:"optimization"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/HasherConfig#optimization"}),"\n",(0,i.jsx)(n.p,{children:"Determines the optimization level to utilize when hashing content before running targets."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"accuracy"})," (default) - When hashing dependency versions, utilize the resolved value in the\nlockfile. This requires parsing the lockfile, which may reduce performance."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"performance"})," - When hashing dependency versions, utilize the value defined in the manifest. This\nis typically a version range or requirement."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"hasher:\n optimization: 'performance'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"walkstrategy",children:(0,i.jsx)(n.code,{children:"walkStrategy"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/HasherConfig#walkStrategy"}),"\n",(0,i.jsx)(n.p,{children:"Defines the file system walking strategy to utilize when discovering inputs to hash."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"glob"})," - Walks the file system using glob patterns."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"vcs"})," (default) - Calls out to the ",(0,i.jsx)(n.a,{href:"#vcs",children:"VCS"})," to extract files from its working tree."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"hasher:\n walkStrategy: 'glob'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"warnonmissinginputs",children:(0,i.jsx)(n.code,{children:"warnOnMissingInputs"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/HasherConfig#warnOnMissingInputs"}),"\n",(0,i.jsxs)(n.p,{children:["When enabled, will log warnings to the console when attempting to hash an input that does not exist.\nThis is useful in uncovering misconfigured tasks. Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"hasher:\n warnOnMissingInputs: false\n"})}),"\n",(0,i.jsx)(n.h2,{id:"notifier",children:(0,i.jsx)(n.code,{children:"notifier"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#notifier"}),"\n",(0,i.jsx)(n.p,{children:"Configures how moon notifies and interacts with a developer or an external system."}),"\n",(0,i.jsx)(n.h3,{id:"webhookurl",children:(0,i.jsx)(n.code,{children:"webhookUrl"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/NotifierConfig#webhookUrl"}),"\n",(0,i.jsxs)(n.p,{children:["Defines an HTTPS URL that all pipeline events will be posted to. View the\n",(0,i.jsx)(n.a,{href:"../guides/webhooks",children:"webhooks guide for more information"})," on available events."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"notifier:\n webhookUrl: 'https://api.company.com/some/endpoint'\n"})}),"\n",(0,i.jsx)(n.h2,{id:"runner",children:(0,i.jsx)(n.code,{children:"runner"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#runner"}),"\n",(0,i.jsx)(n.p,{children:"Configures aspects of the action pipeline."}),"\n",(0,i.jsx)(n.h3,{id:"cachelifetime",children:(0,i.jsx)(n.code,{children:"cacheLifetime"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/RunnerConfig#cacheLifetime"}),"\n",(0,i.jsxs)(n.p,{children:['The maximum lifetime of cached artifacts before they\'re marked as stale and automatically removed by\nthe action pipeline. Defaults to "7 days". This field requires an integer and a timeframe unit that\ncan be ',(0,i.jsx)(n.a,{href:"https://docs.rs/humantime/2.1.0/humantime/fn.parse_duration.html",children:"parsed as a duration"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"runner:\n cacheLifetime: '24 hours'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"archivabletargets",children:(0,i.jsx)(n.code,{children:"archivableTargets"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/RunnerConfig#archivableTargets"}),"\n",(0,i.jsxs)(n.p,{children:["Defines a list of ",(0,i.jsx)(n.a,{href:"../concepts/target",children:"targets"}),", with or without scope, that will be cached and\narchived within the runner. Tasks that produce ",(0,i.jsx)(n.a,{href:"./project#outputs",children:"outputs"})," are automatically\narchived, and do not need to be defined here. Defaults to an empty list."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2-4}',children:"runner:\n archivableTargets:\n - ':test'\n - 'app:typecheck'\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["This setting primarily exists for ",(0,i.jsx)(n.a,{href:"../guides/remote-cache",children:"remote caching"})," as it will create and\npersist tar archives located in ",(0,i.jsx)(n.code,{children:".moon/cache/outputs"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"inheritcolorsforpipedtasks",children:(0,i.jsx)(n.code,{children:"inheritColorsForPipedTasks"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/RunnerConfig#inheritColorsForPipedTasks"}),"\n",(0,i.jsxs)(n.p,{children:["Force colors to be inherited from the current terminal for all tasks that are ran as a child process\nand their output is piped to the action pipeline. Defaults to ",(0,i.jsx)(n.code,{children:"true"}),".\n",(0,i.jsx)(n.a,{href:"../commands/overview#colors",children:"View more about color handling in moon"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"runner:\n inheritColorsForPipedTasks: true\n"})}),"\n",(0,i.jsx)(n.h3,{id:"logrunningcommand",children:(0,i.jsx)(n.code,{children:"logRunningCommand"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/RunnerConfig#logRunningCommand"}),"\n",(0,i.jsxs)(n.p,{children:["When enabled, will log the task's command, resolved arguments, and working directory when a target\nis ran. Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"runner:\n logRunningCommand: true\n"})}),"\n",(0,i.jsx)(n.h2,{id:"telemetry",children:(0,i.jsx)(n.code,{children:"telemetry"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#telemetry"}),"\n",(0,i.jsxs)(n.p,{children:["When enabled, will check for a newer moon version and send anonymous usage data to the moonrepo\nteam. This data is used to improve the quality and reliability of the tool. Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {1}',children:"telemetry: false\n"})}),"\n",(0,i.jsx)(n.h2,{id:"vcs",children:(0,i.jsx)(n.code,{children:"vcs"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#vcs"}),"\n",(0,i.jsx)(n.p,{children:"Configures the version control system to utilize within the workspace (and repository). A VCS is\nrequired for determining touched (added, modified, etc) files, calculating file hashes, computing\naffected files, and much more."}),"\n",(0,i.jsx)(n.h3,{id:"defaultbranch",children:(0,i.jsx)(n.code,{children:"defaultBranch"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/VcsConfig#defaultBranch"}),"\n",(0,i.jsx)(n.p,{children:'Defines the default branch in the repository for comparing differences against. For git, this is\ntypically "master" (default) or "main".'}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"vcs:\n defaultBranch: 'master'\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"hooks",children:[(0,i.jsx)(n.code,{children:"hooks"}),(0,i.jsx)(a.Z,{version:"1.9.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/VcsConfig#hooks"}),"\n",(0,i.jsx)(n.p,{children:"Defines a mapping of hooks to a list of commands to run when that event is triggered. There are no\nrestrictions to what commands can be run, but the binaries for each command must exist on each\nmachine that will be running hooks."}),"\n",(0,i.jsxs)(n.p,{children:["For Git, each ",(0,i.jsx)(n.a,{href:"https://git-scm.com/docs/githooks#_hooks",children:"hook name"})," must be a valid kebab-cased\nname. ",(0,i.jsx)(n.a,{href:"https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks",children:"Learn more about Git hooks"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2-5}',children:"vcs:\n hooks:\n pre-commit:\n - 'moon run :lint :format --affected --status=staged'\n - 'another-command'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["If running ",(0,i.jsx)(n.code,{children:"moon"})," commands directly, the ",(0,i.jsx)(n.code,{children:"moon"})," binary must be installed globally!"]})}),"\n",(0,i.jsx)(n.h3,{id:"manager",children:(0,i.jsx)(n.code,{children:"manager"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/VcsConfig#manager"}),"\n",(0,i.jsx)(n.p,{children:'Defines the VCS tool/binary that is being used for managing the repository. Accepts "git" (default).\nExpect more version control systems in the future!'}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"vcs:\n manager: 'git'\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"provider",children:[(0,i.jsx)(n.code,{children:"provider"}),(0,i.jsx)(a.Z,{version:"1.8.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/VcsConfig#provider"}),"\n",(0,i.jsx)(n.p,{children:'Defines the service provider that the repository is hosted on. Accepts "github" (default), "gitlab",\n"bitbucket", or "other".'}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"vcs:\n provider: 'github'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"remotecandidates",children:(0,i.jsx)(n.code,{children:"remoteCandidates"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/VcsConfig#remoteCandidates"}),"\n",(0,i.jsx)(n.p,{children:'(Git only) Defines a list of remote candidates to query agaist to determine merge bases. Defaults to\n"origin" and "upstream".'}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2-4}',children:"vcs:\n remoteCandidates:\n - 'origin'\n - 'upstream'\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"synchooks",children:[(0,i.jsx)(n.code,{children:"syncHooks"}),(0,i.jsx)(a.Z,{version:"1.9.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/VcsConfig#syncHooks"}),"\n",(0,i.jsxs)(n.p,{children:["Will automatically generate ",(0,i.jsx)(n.a,{href:"#hooks",children:"hook scripts"})," to ",(0,i.jsx)(n.code,{children:".moon/hooks"})," and sync the scripts to the\nlocal VCS checkout. The hooks format and location is based on the ",(0,i.jsx)(n.a,{href:"#manager",children:(0,i.jsx)(n.code,{children:"vcs.manager"})})," setting.\nDefaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {4}',children:"vcs:\n hooks:\n # ...\n syncHooks: true\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"caution",children:(0,i.jsxs)(n.p,{children:["When enabled, this will sync hooks for ",(0,i.jsx)(n.em,{children:"all"})," users of the repository. For personal or small\nprojects, this may be fine, but for larger projects, this may be undesirable and disruptive!"]})}),"\n",(0,i.jsx)(n.h2,{id:"versionconstraint",children:(0,i.jsx)(n.code,{children:"versionConstraint"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#versionConstraint"}),"\n",(0,i.jsx)(n.p,{children:"Defines a version requirement for the currently running moon binary. This provides a mechanism for\nenforcing that the globally installed moon on every developers machine is using an applicable\nversion."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {1}',children:"versionConstraint: '>=0.20.0'\n"})})]})}function m(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},39798:(e,n,s)=>{s.d(n,{Z:()=>o});s(27378);var i=s(40624);const t={tabItem:"tabItem_wHwb"};var r=s(24246);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.Z)(t.tabItem,o),hidden:s,children:n})}},33337:(e,n,s)=>{s.d(n,{Z:()=>u});var i=s(27378),t=s(40624),r=s(83457),o=s(35595),a=s(76457);const l={tabList:"tabList_J5MA",tabItem:"tabItem_l0OV"};var c=s(24246);function d(e){let{className:n,block:s,selectedValue:i,selectValue:o,tabValues:a}=e;const d=[],{blockElementScrollPositionUntilNextRender:h}=(0,r.o5)(),p=e=>{const n=e.currentTarget,s=d.indexOf(n),t=a[s].value;t!==i&&(h(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,c.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.Z)("tabs",{"tabs--block":s},n),children:a.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,c.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>d.push(e),onKeyDown:u,onClick:p,...r,className:(0,t.Z)("tabs__item",l.tabItem,r?.className,{"tabs__item--active":i===n}),children:s??n},n)}))})}function h(e){let{lazy:n,children:s,selectedValue:t}=e;const r=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=r.find((e=>e.props.value===t));return e?(0,i.cloneElement)(e,{className:"margin-top--md"}):null}return(0,c.jsx)("div",{className:"margin-top--md",children:r.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==t})))})}function p(e){const n=(0,o.Y)(e);return(0,c.jsxs)("div",{className:(0,t.Z)("tabs-container",l.tabList),children:[(0,c.jsx)(d,{...e,...n}),(0,c.jsx)(h,{...e,...n})]})}function u(e){const n=(0,a.Z)();return(0,c.jsx)(p,{...e,children:(0,o.h)(e.children)},String(n))}},35595:(e,n,s)=>{s.d(n,{Y:()=>u,h:()=>c});var i=s(27378),t=s(3620),r=s(9834),o=s(30654),a=s(70784),l=s(71819);function c(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function d(e){const{values:n,children:s}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return c(e).map((e=>{let{props:{value:n,label:s,attributes:i,default:t}}=e;return{value:n,label:s,attributes:i,default:t}}))}(s);return function(e){const n=(0,a.l)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const r=(0,t.k6)(),a=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,o._X)(a),(0,i.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(r.location.search);n.set(a,e),r.replace({...r.location,search:n.toString()})}),[a,r])]}function u(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,o=d(e),[a,c]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=s.find((e=>e.default))??s[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:o}))),[u,m]=p({queryString:s,groupId:t}),[g,f]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,l.Nk)(s);return[t,(0,i.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),x=(()=>{const e=u??g;return h({value:e,tabValues:o})?e:null})();(0,r.Z)((()=>{x&&c(x)}),[x]);return{selectedValue:a,selectValue:(0,i.useCallback)((e=>{if(!h({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);c(e),m(e),f(e)}),[m,f,o]),tabValues:o}}},32189:(e,n,s)=>{s.d(n,{Z:()=>o});var i=s(83469),t=s(31792),r=s(24246);function o(e){let{to:n}=e;return(0,r.jsx)("a",{href:n,target:"_blank",className:"float-right inline-block",style:{marginTop:"-3em"},children:(0,r.jsx)(t.Z,{icon:i.dT$})})}},9785:(e,n,s)=>{s.d(n,{Z:()=>r});var i=s(9619),t=s(24246);function r(e){let{text:n="Required"}=e;return(0,t.jsx)(i.Z,{text:n,variant:"failure",className:"ml-2"})}},79022:(e,n,s)=>{s.d(n,{Z:()=>r});var i=s(9619),t=s(24246);function r(e){let{header:n,inline:s,updated:r,version:o}=e;return(0,t.jsx)(i.Z,{text:`v${o}`,variant:r?"success":"info",className:n?"absolute right-0 top-1.5":s?"inline-block":"ml-2"})}},9619:(e,n,s)=>{s.d(n,{Z:()=>a});var i=s(40624),t=s(31792),r=s(24246);const o={failure:"bg-red-100 text-red-900",info:"bg-pink-100 text-pink-900",success:"bg-green-100 text-green-900",warning:"bg-orange-100 text-orange-900"};function a(e){let{className:n,icon:s,text:a,variant:l}=e;return(0,r.jsxs)("span",{className:(0,i.Z)("inline-flex items-center px-1 py-0.5 rounded text-xs font-bold uppercase",l?o[l]:"bg-gray-100 text-gray-800",n),children:[s&&(0,r.jsx)(t.Z,{icon:s,className:"mr-1"}),a]})}},71670:(e,n,s)=>{s.d(n,{Z:()=>a,a:()=>o});var i=s(27378);const t={},r=i.createContext(t);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/17cacc08.b4cb575d.js b/assets/js/17cacc08.b4cb575d.js
deleted file mode 100644
index c0df491a7f1..00000000000
--- a/assets/js/17cacc08.b4cb575d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[88893],{95208:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>c,default:()=>m,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var i=s(24246),t=s(71670),r=(s(33337),s(39798),s(32189)),o=s(9785),a=s(79022);const l={title:".moon/workspace.yml",toc_max_heading_level:6},c=void 0,d={id:"config/workspace",title:".moon/workspace.yml",description:"The .moon/workspace.yml file configures projects and services in the workspace. This file is",source:"@site/docs/config/workspace.mdx",sourceDirName:"config",slug:"/config/workspace",permalink:"/docs/config/workspace",draft:!1,unlisted:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/config/workspace.mdx",tags:[],version:"current",frontMatter:{title:".moon/workspace.yml",toc_max_heading_level:6},sidebar:"docs",previous:{title:"Config files",permalink:"/docs/config"},next:{title:".moon/toolchain.yml",permalink:"/docs/config/toolchain"}},h={},p=[{value:"extends
",id:"extends",level:2},{value:"projects
",id:"projects",level:2},{value:"Using a map",id:"using-a-map",level:3},{value:"Using globs",id:"using-globs",level:3},{value:"Using a map and globs",id:"using-a-map-and-globs",level:3},{value:"codeowners
",id:"codeowners",level:2},{value:"globalPaths
",id:"globalpaths",level:3},{value:"orderBy
",id:"orderby",level:3},{value:"syncOnRun
",id:"synconrun",level:3},{value:"constraints
",id:"constraints",level:2},{value:"enforceProjectTypeRelationships
",id:"enforceprojecttyperelationships",level:3},{value:"tagRelationships
",id:"tagrelationships",level:3},{value:"experiments
",id:"experiments",level:2},{value:"strictProjectAliases
",id:"strictprojectaliases",level:3},{value:"extensions
",id:"extensions",level:2},{value:"generator
",id:"generator",level:2},{value:"templates
",id:"templates",level:3},{value:"hasher
",id:"hasher",level:2},{value:"batchSize
",id:"batchsize",level:3},{value:"ignoreMissingPatterns
",id:"ignoremissingpatterns",level:3},{value:"ignorePatterns
",id:"ignorepatterns",level:3},{value:"optimization
",id:"optimization",level:3},{value:"walkStrategy
",id:"walkstrategy",level:3},{value:"warnOnMissingInputs
",id:"warnonmissinginputs",level:3},{value:"notifier
",id:"notifier",level:2},{value:"webhookUrl
",id:"webhookurl",level:3},{value:"runner
",id:"runner",level:2},{value:"cacheLifetime
",id:"cachelifetime",level:3},{value:"archivableTargets
",id:"archivabletargets",level:3},{value:"inheritColorsForPipedTasks
",id:"inheritcolorsforpipedtasks",level:3},{value:"logRunningCommand
",id:"logrunningcommand",level:3},{value:"telemetry
",id:"telemetry",level:2},{value:"vcs
",id:"vcs",level:2},{value:"defaultBranch
",id:"defaultbranch",level:3},{value:"hooks
",id:"hooks",level:3},{value:"manager
",id:"manager",level:3},{value:"provider
",id:"provider",level:3},{value:"remoteCandidates
",id:"remotecandidates",level:3},{value:"syncHooks
",id:"synchooks",level:3},{value:"versionConstraint
",id:"versionconstraint",level:2}];function u(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:".moon/workspace.yml"})," file configures projects and services in the workspace. This file is\n",(0,i.jsx)(n.em,{children:"required"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml"',children:"$schema: 'https://moonrepo.dev/schemas/workspace.json'\n"})}),"\n",(0,i.jsx)(n.h2,{id:"extends",children:(0,i.jsx)(n.code,{children:"extends"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#extends"}),"\n",(0,i.jsxs)(n.p,{children:["Defines an external ",(0,i.jsx)(n.code,{children:".moon/workspace.yml"})," to extend and inherit settings from. Perfect for\nreusability and sharing configuration across repositories and projects. When defined, this setting\nmust be an HTTPS URL ",(0,i.jsx)(n.em,{children:"or"})," relative file system path that points to a valid YAML document!"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {1}',children:"extends: 'https://raw.githubusercontent.com/organization/repository/master/.moon/workspace.yml'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["Settings will be merged recursively for blocks, with values defined in the local configuration\ntaking precedence over those defined in the extended configuration. However, the ",(0,i.jsx)(n.code,{children:"projects"})," setting\n",(0,i.jsx)(n.em,{children:"does not merge"}),"!"]})}),"\n",(0,i.jsxs)(n.h2,{id:"projects",children:[(0,i.jsx)(n.code,{children:"projects"}),(0,i.jsx)(o.Z,{})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#projects"}),"\n",(0,i.jsxs)(n.p,{children:["Defines the location of all ",(0,i.jsx)(n.a,{href:"../concepts/project",children:"projects"})," within the workspace. Supports either a\nmanual map of projects (default), a list of globs in which to automatically locate projects, ",(0,i.jsx)(n.em,{children:"or"}),"\nboth."]}),"\n",(0,i.jsx)(n.admonition,{type:"caution",children:(0,i.jsx)(n.p,{children:"Projects that depend on each other and form a cycle must be avoided! While we do our best to avoid\nan infinite loop and disconnect nodes from each other, there's no guarantee that tasks will run in\nthe correct order."})}),"\n",(0,i.jsx)(n.h3,{id:"using-a-map",children:"Using a map"}),"\n",(0,i.jsxs)(n.p,{children:["When using a map, each project must be ",(0,i.jsx)(n.em,{children:"manually"})," configured and requires a unique\n",(0,i.jsx)(n.a,{href:"../concepts/project#names",children:"name"})," as the map key, where this name is used heavily on the command\nline and within the project graph for uniquely identifying the project amongst all projects. The map\nvalue (known as the project source) is a file system path to the project folder, relative from the\nworkspace root, and must be contained within the workspace boundary."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml"',children:"projects:\n admin: 'apps/admin'\n apiClients: 'packages/api-clients'\n designSystem: 'packages/design-system'\n web: 'apps/web'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"using-globs",children:"Using globs"}),"\n",(0,i.jsxs)(n.p,{children:["If manually mapping projects is too tedious or cumbersome, you may provide a list of\n",(0,i.jsx)(n.a,{href:"../concepts/file-pattern#globs",children:"globs"})," to automatically locate all project folders, relative from\nthe workspace root."]}),"\n",(0,i.jsxs)(n.p,{children:["When using this approach, the project name is derived from the project folder name, and is cleaned\nto our ",(0,i.jsx)(n.a,{href:"../concepts/project#names",children:"supported characters"}),", but can be customized with the\n",(0,i.jsx)(n.a,{href:"./project#id",children:(0,i.jsx)(n.code,{children:"id"})})," setting in ",(0,i.jsx)(n.a,{href:"./project",children:(0,i.jsx)(n.code,{children:"moon.yml"})}),". Furthermore, globbing ",(0,i.jsx)(n.strong,{children:"does risk the\nchance of collision"}),", and when that happens, we log a warning and skip the conflicting project from\nbeing configured in the project graph."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml"',children:"projects:\n - 'apps/*'\n - 'packages/*'\n # Only shared folders with a moon configuration\n - 'shared/*/moon.yml'\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"using-a-map-and-globs",children:["Using a map ",(0,i.jsx)(n.em,{children:"and"})," globs"]}),"\n",(0,i.jsxs)(n.p,{children:["For those situations where you want to use ",(0,i.jsx)(n.em,{children:"both"})," patterns, you can! The list of globs can be\ndefined under a ",(0,i.jsx)(n.code,{children:"globs"})," field, while the map of projects under a ",(0,i.jsx)(n.code,{children:"sources"})," field."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml"',children:"projects:\n globs:\n - 'apps/*'\n - 'packages/*'\n sources:\n www: 'www'\n"})}),"\n",(0,i.jsxs)(n.h2,{id:"codeowners",children:[(0,i.jsx)(n.code,{children:"codeowners"}),(0,i.jsx)(a.Z,{version:"1.8.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#codeowners"}),"\n",(0,i.jsxs)(n.p,{children:["Configures code owners (",(0,i.jsx)(n.code,{children:"CODEOWNERS"}),") integration across the entire workspace."]}),"\n",(0,i.jsx)(n.h3,{id:"globalpaths",children:(0,i.jsx)(n.code,{children:"globalPaths"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/CodeownersConfig#globalPaths"}),"\n",(0,i.jsxs)(n.p,{children:["This setting defines file patterns and their owners at the workspace-level, and are applied to any\nmatching path, at any depth, within the entire workspace. This is useful for defining global or\nfallback owners when a granular ",(0,i.jsx)(n.a,{href:"./project#paths",children:"project-level path"})," does not match or exist."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2-5}',children:"codeowners:\n globalPaths:\n '*': ['@admins']\n 'config/': ['@infra']\n '/.github/': ['@infra']\n"})}),"\n",(0,i.jsx)(n.h3,{id:"orderby",children:(0,i.jsx)(n.code,{children:"orderBy"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/CodeownersConfig#orderBy"}),"\n",(0,i.jsxs)(n.p,{children:["The order in which code owners, grouped by project, are listed in the ",(0,i.jsx)(n.code,{children:"CODEOWNERS"}),' file. Accepts\n"file-source" (default) or "project-name".']}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"codeowners:\n orderBy: 'project-name'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"synconrun",children:(0,i.jsx)(n.code,{children:"syncOnRun"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/CodeownersConfig#syncOnRun"}),"\n",(0,i.jsxs)(n.p,{children:["Will automatically generate a ",(0,i.jsx)(n.code,{children:"CODEOWNERS"})," file by aggregating and syncing all project\n",(0,i.jsx)(n.a,{href:"./project#owners",children:(0,i.jsx)(n.code,{children:"owners"})})," in the workspace when a ",(0,i.jsx)(n.a,{href:"../concepts/target",children:"target is run"}),". The format\nand location of the ",(0,i.jsx)(n.code,{children:"CODEOWNERS"})," file is based on the ",(0,i.jsx)(n.a,{href:"#provider",children:(0,i.jsx)(n.code,{children:"vcs.provider"})})," setting. Defaults\nto ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"codeowners:\n syncOnRun: true\n"})}),"\n",(0,i.jsx)(n.h2,{id:"constraints",children:(0,i.jsx)(n.code,{children:"constraints"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#constraints"}),"\n",(0,i.jsx)(n.p,{children:"Configures constraints between projects that are enforced during project graph generation. This is\nalso known as project boundaries."}),"\n",(0,i.jsx)(n.h3,{id:"enforceprojecttyperelationships",children:(0,i.jsx)(n.code,{children:"enforceProjectTypeRelationships"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ConstraintsConfig#enforceProjectTypeRelationships"}),"\n",(0,i.jsxs)(n.p,{children:["Enforces allowed relationships between a project its dependencies based on the project's\n",(0,i.jsx)(n.a,{href:"./project#type",children:(0,i.jsx)(n.code,{children:"type"})})," setting. When a project depends on another project of an invalid type, an\nerror will be thrown when attempting to run a task. The following relationships are enforced when\nthis setting is enabled, which defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Applications can depend on all types ",(0,i.jsx)(n.em,{children:"except other"})," applications or automation."]}),"\n",(0,i.jsxs)(n.li,{children:["Automation can depend on all types ",(0,i.jsx)(n.em,{children:"except other"})," automation."]}),"\n",(0,i.jsxs)(n.li,{children:["Libraries can ",(0,i.jsx)(n.em,{children:"only"})," depend on other libraries, configuration, or scaffolding."]}),"\n",(0,i.jsxs)(n.li,{children:["Tools can ",(0,i.jsx)(n.em,{children:"only"})," depend on libraries, configuration, or scaffolding."]}),"\n",(0,i.jsxs)(n.li,{children:["Configuration and scaffolding can ",(0,i.jsx)(n.em,{children:"only"})," depend on other configuration and scaffolding."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"constraints:\n enforceProjectTypeRelationships: false\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Projects with an unconfigured or unknown type are ignored during enforcement."}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"tagrelationships",children:(0,i.jsx)(n.code,{children:"tagRelationships"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ConstraintsConfig#tagRelationships"}),"\n",(0,i.jsxs)(n.p,{children:["Enforces allowed relationships between a project and its dependencies based on the project's\n",(0,i.jsx)(n.a,{href:"./project#tags",children:(0,i.jsx)(n.code,{children:"tags"})})," setting. This works in a similar fashion to\n",(0,i.jsx)(n.code,{children:"enforceProjectTypeRelationships"}),", but gives you far more control over what these relationships look\nlike."]}),"\n",(0,i.jsxs)(n.p,{children:["For example, let's enforce that Next.js projects using the ",(0,i.jsx)(n.code,{children:"next"})," tag can only depend on React\nprojects using the ",(0,i.jsx)(n.code,{children:"react"})," tag. If a dependency does not have one of the configured required tags,\nin this case ",(0,i.jsx)(n.code,{children:"react"}),", an error will occur."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2,3}',children:"constraints:\n tagRelationships:\n next: ['react']\n"})}),"\n",(0,i.jsxs)(n.p,{children:["On the project side, we would configure ",(0,i.jsx)(n.a,{href:"./project#tags",children:(0,i.jsx)(n.code,{children:"moon.yml"})})," like so:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="app/moon.yml"',children:"tags: ['next']\ndependsOn: ['components']\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="packages/components/moon.yml"',children:"tags: ['react']\n"})}),"\n",(0,i.jsxs)(n.h2,{id:"experiments",children:[(0,i.jsx)(n.code,{children:"experiments"}),(0,i.jsx)(a.Z,{version:"1.11.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#experiments"}),"\n",(0,i.jsx)(n.p,{children:"Enable or disable experiments that alter core functionality."}),"\n",(0,i.jsxs)(n.h3,{id:"strictprojectaliases",children:[(0,i.jsx)(n.code,{children:"strictProjectAliases"}),(0,i.jsx)(a.Z,{version:"1.18.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ExperimentsConfig#strictProjectAliases"}),"\n",(0,i.jsxs)(n.p,{children:["When enabled, will fail with an error when multiple\n",(0,i.jsx)(n.a,{href:"../concepts/project#aliases",children:"projects have the same alias"}),". When disabled, the duplicate aliases\nwill not be assigned to their project, and only the first project will use the alias. Defaults to\n",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"experiments:\n strictProjectAliases: false\n"})}),"\n",(0,i.jsxs)(n.h2,{id:"extensions",children:[(0,i.jsx)(n.code,{children:"extensions"}),(0,i.jsx)(a.Z,{version:"1.20.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#extensions"}),"\n",(0,i.jsxs)(n.p,{children:["A mapping of extensions that can be downloaded and executed with the ",(0,i.jsx)(n.a,{href:"../commands/ext",children:(0,i.jsx)(n.code,{children:"moon ext"})}),"\ncommand. An extension is a WASM plugin, and the location of the WASM file must be defined with the\n",(0,i.jsx)(n.code,{children:"plugin"})," field, which requires a\n",(0,i.jsx)(n.a,{href:"../guides/wasm-plugins#configuring-plugin-locations",children:"plugin locator string"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2-5}',children:"extensions:\n example:\n plugin: 'source:./path/to/example.wasm'\n # or\n plugin: 'source:https://example.com/path/to/example.wasm'\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Additionally, extensions support custom configuration that is passed to the WASM runtime when the\nplugin is instantiated. This configuration is defined by inserting additional fields under the\nextension name, relative to the ",(0,i.jsx)(n.code,{children:"plugin"})," field. Each extension may have its own settings, so refer\nto their documentation for more information."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2-5}',children:"extensions:\n example:\n plugin: 'source:./path/to/example.wasm'\n setting1: true\n setting2: 'abc'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["View our official ",(0,i.jsx)(n.a,{href:"../guides/extensions",children:"extensions guide"})," for more information, including built-in\nextensions!"]})}),"\n",(0,i.jsx)(n.h2,{id:"generator",children:(0,i.jsx)(n.code,{children:"generator"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#generator"}),"\n",(0,i.jsx)(n.p,{children:"Configures aspects of the template generator."}),"\n",(0,i.jsx)(n.h3,{id:"templates",children:(0,i.jsx)(n.code,{children:"templates"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/GeneratorConfig#templates"}),"\n",(0,i.jsxs)(n.p,{children:["A list of file system paths where templates can be located, relative from the workspace root.\nDefaults to ",(0,i.jsx)(n.code,{children:"./templates"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2-4}',children:"generator:\n templates:\n - './templates'\n - './other/templates'\n"})}),"\n",(0,i.jsx)(n.h2,{id:"hasher",children:(0,i.jsx)(n.code,{children:"hasher"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#hasher"}),"\n",(0,i.jsx)(n.p,{children:"Configures aspects of the smart hashing layer."}),"\n",(0,i.jsx)(n.h3,{id:"batchsize",children:(0,i.jsx)(n.code,{children:"batchSize"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/HasherConfig#batchSize"}),"\n",(0,i.jsxs)(n.p,{children:["When hashing a list of files, we split the list into batches to help reduce memory footprint and\navoid overloading the configured VCS. This setting controls how many files are in each batch and\ndefaults to ",(0,i.jsx)(n.code,{children:"2500"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"If you're running into memory issues, or moon hanging during the file hashing process, lowering this\nnumber may help resolve the issue."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"hasher:\n batchSize: 1000\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"ignoremissingpatterns",children:[(0,i.jsx)(n.code,{children:"ignoreMissingPatterns"}),(0,i.jsx)(a.Z,{version:"1.10.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/HasherConfig#ignoreMissingPatterns"}),"\n",(0,i.jsxs)(n.p,{children:["When ",(0,i.jsx)(n.a,{href:"#warnonmissinginputs",children:(0,i.jsx)(n.code,{children:"hasher.warnOnMissingInputs"})})," is enabled, moon will log a warning to the\nterminal that an input is missing. This is useful for uncovering misconfigurations, but can be quite\nnoisy when inputs are truly optional."]}),"\n",(0,i.jsxs)(n.p,{children:["To ignore warnings for missing inputs, a list of ",(0,i.jsx)(n.a,{href:"../concepts/file-pattern#globs",children:"glob patterns"})," can\nbe configured to filter and ignore files. Files are matched against workspace relative paths, so\nprefixing patterns with ",(0,i.jsx)(n.code,{children:"**/"})," is suggested."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2-4}',children:"hasher:\n ignoreMissingPatterns:\n - '**/.eslintrc.*'\n - '**/*.config.*'\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"ignorepatterns",children:[(0,i.jsx)(n.code,{children:"ignorePatterns"}),(0,i.jsx)(a.Z,{version:"1.10.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/HasherConfig#ignorePatterns"}),"\n",(0,i.jsxs)(n.p,{children:["A list of ",(0,i.jsx)(n.a,{href:"../concepts/file-pattern#globs",children:"glob patterns"})," used to filter and ignore files during the\ninputs hashing process. Files are matched against workspace relative paths, so prefixing patterns\nwith ",(0,i.jsx)(n.code,{children:"**/"})," is suggested."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2,3}',children:"hasher:\n ignorePatterns:\n - '**/*.png'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"optimization",children:(0,i.jsx)(n.code,{children:"optimization"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/HasherConfig#optimization"}),"\n",(0,i.jsx)(n.p,{children:"Determines the optimization level to utilize when hashing content before running targets."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"accuracy"})," (default) - When hashing dependency versions, utilize the resolved value in the\nlockfile. This requires parsing the lockfile, which may reduce performance."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"performance"})," - When hashing dependency versions, utilize the value defined in the manifest. This\nis typically a version range or requirement."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"hasher:\n optimization: 'performance'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"walkstrategy",children:(0,i.jsx)(n.code,{children:"walkStrategy"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/HasherConfig#walkStrategy"}),"\n",(0,i.jsx)(n.p,{children:"Defines the file system walking strategy to utilize when discovering inputs to hash."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"glob"})," - Walks the file system using glob patterns."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"vcs"})," (default) - Calls out to the ",(0,i.jsx)(n.a,{href:"#vcs",children:"VCS"})," to extract files from its working tree."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"hasher:\n walkStrategy: 'glob'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"warnonmissinginputs",children:(0,i.jsx)(n.code,{children:"warnOnMissingInputs"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/HasherConfig#warnOnMissingInputs"}),"\n",(0,i.jsxs)(n.p,{children:["When enabled, will log warnings to the console when attempting to hash an input that does not exist.\nThis is useful in uncovering misconfigured tasks. Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"hasher:\n warnOnMissingInputs: false\n"})}),"\n",(0,i.jsx)(n.h2,{id:"notifier",children:(0,i.jsx)(n.code,{children:"notifier"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#notifier"}),"\n",(0,i.jsx)(n.p,{children:"Configures how moon notifies and interacts with a developer or an external system."}),"\n",(0,i.jsx)(n.h3,{id:"webhookurl",children:(0,i.jsx)(n.code,{children:"webhookUrl"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/NotifierConfig#webhookUrl"}),"\n",(0,i.jsxs)(n.p,{children:["Defines an HTTPS URL that all pipeline events will be posted to. View the\n",(0,i.jsx)(n.a,{href:"../guides/webhooks",children:"webhooks guide for more information"})," on available events."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"notifier:\n webhookUrl: 'https://api.company.com/some/endpoint'\n"})}),"\n",(0,i.jsx)(n.h2,{id:"runner",children:(0,i.jsx)(n.code,{children:"runner"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#runner"}),"\n",(0,i.jsx)(n.p,{children:"Configures aspects of the action pipeline."}),"\n",(0,i.jsx)(n.h3,{id:"cachelifetime",children:(0,i.jsx)(n.code,{children:"cacheLifetime"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/RunnerConfig#cacheLifetime"}),"\n",(0,i.jsxs)(n.p,{children:['The maximum lifetime of cached artifacts before they\'re marked as stale and automatically removed by\nthe action pipeline. Defaults to "7 days". This field requires an integer and a timeframe unit that\ncan be ',(0,i.jsx)(n.a,{href:"https://docs.rs/humantime/2.1.0/humantime/fn.parse_duration.html",children:"parsed as a duration"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"runner:\n cacheLifetime: '24 hours'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"archivabletargets",children:(0,i.jsx)(n.code,{children:"archivableTargets"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/RunnerConfig#archivableTargets"}),"\n",(0,i.jsxs)(n.p,{children:["Defines a list of ",(0,i.jsx)(n.a,{href:"../concepts/target",children:"targets"}),", with or without scope, that will be cached and\narchived within the runner. Tasks that produce ",(0,i.jsx)(n.a,{href:"./project#outputs",children:"outputs"})," are automatically\narchived, and do not need to be defined here. Defaults to an empty list."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2-4}',children:"runner:\n archivableTargets:\n - ':test'\n - 'app:typecheck'\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["This setting primarily exists for ",(0,i.jsx)(n.a,{href:"../guides/remote-cache",children:"remote caching"})," as it will create and\npersist tar archives located in ",(0,i.jsx)(n.code,{children:".moon/cache/outputs"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"inheritcolorsforpipedtasks",children:(0,i.jsx)(n.code,{children:"inheritColorsForPipedTasks"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/RunnerConfig#inheritColorsForPipedTasks"}),"\n",(0,i.jsxs)(n.p,{children:["Force colors to be inherited from the current terminal for all tasks that are ran as a child process\nand their output is piped to the action pipeline. Defaults to ",(0,i.jsx)(n.code,{children:"true"}),".\n",(0,i.jsx)(n.a,{href:"../commands/overview#colors",children:"View more about color handling in moon"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"runner:\n inheritColorsForPipedTasks: true\n"})}),"\n",(0,i.jsx)(n.h3,{id:"logrunningcommand",children:(0,i.jsx)(n.code,{children:"logRunningCommand"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/RunnerConfig#logRunningCommand"}),"\n",(0,i.jsxs)(n.p,{children:["When enabled, will log the task's command, resolved arguments, and working directory when a target\nis ran. Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"runner:\n logRunningCommand: true\n"})}),"\n",(0,i.jsx)(n.h2,{id:"telemetry",children:(0,i.jsx)(n.code,{children:"telemetry"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#telemetry"}),"\n",(0,i.jsxs)(n.p,{children:["When enabled, will check for a newer moon version and send anonymous usage data to the moonrepo\nteam. This data is used to improve the quality and reliability of the tool. Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {1}',children:"telemetry: false\n"})}),"\n",(0,i.jsx)(n.h2,{id:"vcs",children:(0,i.jsx)(n.code,{children:"vcs"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#vcs"}),"\n",(0,i.jsx)(n.p,{children:"Configures the version control system to utilize within the workspace (and repository). A VCS is\nrequired for determining touched (added, modified, etc) files, calculating file hashes, computing\naffected files, and much more."}),"\n",(0,i.jsx)(n.h3,{id:"defaultbranch",children:(0,i.jsx)(n.code,{children:"defaultBranch"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/VcsConfig#defaultBranch"}),"\n",(0,i.jsx)(n.p,{children:'Defines the default branch in the repository for comparing differences against. For git, this is\ntypically "master" (default) or "main".'}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"vcs:\n defaultBranch: 'master'\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"hooks",children:[(0,i.jsx)(n.code,{children:"hooks"}),(0,i.jsx)(a.Z,{version:"1.9.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/VcsConfig#hooks"}),"\n",(0,i.jsx)(n.p,{children:"Defines a mapping of hooks to a list of commands to run when that event is triggered. There are no\nrestrictions to what commands can be run, but the binaries for each command must exist on each\nmachine that will be running hooks."}),"\n",(0,i.jsxs)(n.p,{children:["For Git, each ",(0,i.jsx)(n.a,{href:"https://git-scm.com/docs/githooks#_hooks",children:"hook name"})," must be a valid kebab-cased\nname. ",(0,i.jsx)(n.a,{href:"https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks",children:"Learn more about Git hooks"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2-5}',children:"vcs:\n hooks:\n pre-commit:\n - 'moon run :lint :format --affected --status=staged'\n - 'another-command'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["If running ",(0,i.jsx)(n.code,{children:"moon"})," commands directly, the ",(0,i.jsx)(n.code,{children:"moon"})," binary must be installed globally!"]})}),"\n",(0,i.jsx)(n.h3,{id:"manager",children:(0,i.jsx)(n.code,{children:"manager"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/VcsConfig#manager"}),"\n",(0,i.jsx)(n.p,{children:'Defines the VCS tool/binary that is being used for managing the repository. Accepts "git" (default).\nExpect more version control systems in the future!'}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"vcs:\n manager: 'git'\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"provider",children:[(0,i.jsx)(n.code,{children:"provider"}),(0,i.jsx)(a.Z,{version:"1.8.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/VcsConfig#provider"}),"\n",(0,i.jsx)(n.p,{children:'Defines the service provider that the repository is hosted on. Accepts "github" (default), "gitlab",\n"bitbucket", or "other".'}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2}',children:"vcs:\n provider: 'github'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"remotecandidates",children:(0,i.jsx)(n.code,{children:"remoteCandidates"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/VcsConfig#remoteCandidates"}),"\n",(0,i.jsx)(n.p,{children:'(Git only) Defines a list of remote candidates to query agaist to determine merge bases. Defaults to\n"origin" and "upstream".'}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {2-4}',children:"vcs:\n remoteCandidates:\n - 'origin'\n - 'upstream'\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"synchooks",children:[(0,i.jsx)(n.code,{children:"syncHooks"}),(0,i.jsx)(a.Z,{version:"1.9.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/VcsConfig#syncHooks"}),"\n",(0,i.jsxs)(n.p,{children:["Will automatically generate ",(0,i.jsx)(n.a,{href:"#hooks",children:"hook scripts"})," to ",(0,i.jsx)(n.code,{children:".moon/hooks"})," and sync the scripts to the\nlocal VCS checkout. The hooks format and location is based on the ",(0,i.jsx)(n.a,{href:"#manager",children:(0,i.jsx)(n.code,{children:"vcs.manager"})})," setting.\nDefaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {4}',children:"vcs:\n hooks:\n # ...\n syncHooks: true\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"caution",children:(0,i.jsxs)(n.p,{children:["When enabled, this will sync hooks for ",(0,i.jsx)(n.em,{children:"all"})," users of the repository. For personal or small\nprojects, this may be fine, but for larger projects, this may be undesirable and disruptive!"]})}),"\n",(0,i.jsx)(n.h2,{id:"versionconstraint",children:(0,i.jsx)(n.code,{children:"versionConstraint"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/WorkspaceConfig#versionConstraint"}),"\n",(0,i.jsx)(n.p,{children:"Defines a version requirement for the currently running moon binary. This provides a mechanism for\nenforcing that the globally installed moon on every developers machine is using an applicable\nversion."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title=".moon/workspace.yml" {1}',children:"versionConstraint: '>=0.20.0'\n"})})]})}function m(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},39798:(e,n,s)=>{s.d(n,{Z:()=>o});s(27378);var i=s(40624);const t={tabItem:"tabItem_wHwb"};var r=s(24246);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.Z)(t.tabItem,o),hidden:s,children:n})}},33337:(e,n,s)=>{s.d(n,{Z:()=>u});var i=s(27378),t=s(40624),r=s(83457),o=s(35595),a=s(76457);const l={tabList:"tabList_J5MA",tabItem:"tabItem_l0OV"};var c=s(24246);function d(e){let{className:n,block:s,selectedValue:i,selectValue:o,tabValues:a}=e;const d=[],{blockElementScrollPositionUntilNextRender:h}=(0,r.o5)(),p=e=>{const n=e.currentTarget,s=d.indexOf(n),t=a[s].value;t!==i&&(h(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const s=d.indexOf(e.currentTarget)+1;n=d[s]??d[0];break}case"ArrowLeft":{const s=d.indexOf(e.currentTarget)-1;n=d[s]??d[d.length-1];break}}n?.focus()};return(0,c.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.Z)("tabs",{"tabs--block":s},n),children:a.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,c.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>d.push(e),onKeyDown:u,onClick:p,...r,className:(0,t.Z)("tabs__item",l.tabItem,r?.className,{"tabs__item--active":i===n}),children:s??n},n)}))})}function h(e){let{lazy:n,children:s,selectedValue:t}=e;const r=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=r.find((e=>e.props.value===t));return e?(0,i.cloneElement)(e,{className:"margin-top--md"}):null}return(0,c.jsx)("div",{className:"margin-top--md",children:r.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==t})))})}function p(e){const n=(0,o.Y)(e);return(0,c.jsxs)("div",{className:(0,t.Z)("tabs-container",l.tabList),children:[(0,c.jsx)(d,{...e,...n}),(0,c.jsx)(h,{...e,...n})]})}function u(e){const n=(0,a.Z)();return(0,c.jsx)(p,{...e,children:(0,o.h)(e.children)},String(n))}},35595:(e,n,s)=>{s.d(n,{Y:()=>u,h:()=>c});var i=s(27378),t=s(3620),r=s(9834),o=s(30654),a=s(70784),l=s(71819);function c(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function d(e){const{values:n,children:s}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return c(e).map((e=>{let{props:{value:n,label:s,attributes:i,default:t}}=e;return{value:n,label:s,attributes:i,default:t}}))}(s);return function(e){const n=(0,a.l)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const r=(0,t.k6)(),a=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,o._X)(a),(0,i.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(r.location.search);n.set(a,e),r.replace({...r.location,search:n.toString()})}),[a,r])]}function u(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,o=d(e),[a,c]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=s.find((e=>e.default))??s[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:o}))),[u,m]=p({queryString:s,groupId:t}),[g,f]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,l.Nk)(s);return[t,(0,i.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),x=(()=>{const e=u??g;return h({value:e,tabValues:o})?e:null})();(0,r.Z)((()=>{x&&c(x)}),[x]);return{selectedValue:a,selectValue:(0,i.useCallback)((e=>{if(!h({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);c(e),m(e),f(e)}),[m,f,o]),tabValues:o}}},32189:(e,n,s)=>{s.d(n,{Z:()=>o});var i=s(83469),t=s(31792),r=s(24246);function o(e){let{to:n}=e;return(0,r.jsx)("a",{href:n,target:"_blank",className:"float-right inline-block",style:{marginTop:"-3em"},children:(0,r.jsx)(t.Z,{icon:i.dT$})})}},9785:(e,n,s)=>{s.d(n,{Z:()=>r});var i=s(9619),t=s(24246);function r(e){let{text:n="Required"}=e;return(0,t.jsx)(i.Z,{text:n,variant:"failure",className:"ml-2"})}},79022:(e,n,s)=>{s.d(n,{Z:()=>r});var i=s(9619),t=s(24246);function r(e){let{header:n,inline:s,updated:r,version:o}=e;return(0,t.jsx)(i.Z,{text:`v${o}`,variant:r?"success":"info",className:n?"absolute right-0 top-1.5":s?"inline-block":"ml-2"})}},9619:(e,n,s)=>{s.d(n,{Z:()=>a});var i=s(40624),t=s(31792),r=s(24246);const o={failure:"bg-red-100 text-red-900",info:"bg-pink-100 text-pink-900",success:"bg-green-100 text-green-900",warning:"bg-orange-100 text-orange-900"};function a(e){let{className:n,icon:s,text:a,variant:l}=e;return(0,r.jsxs)("span",{className:(0,i.Z)("inline-flex items-center px-1 py-0.5 rounded text-xs font-bold uppercase",l?o[l]:"bg-gray-100 text-gray-800",n),children:[s&&(0,r.jsx)(t.Z,{icon:s,className:"mr-1"}),a]})}},71670:(e,n,s)=>{s.d(n,{Z:()=>a,a:()=>o});var i=s(27378);const t={},r=i.createContext(t);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/4ec8a4a9.775ff554.js b/assets/js/4ec8a4a9.775ff554.js
new file mode 100644
index 00000000000..6a4800f6492
--- /dev/null
+++ b/assets/js/4ec8a4a9.775ff554.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[50818],{20668:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>c,default:()=>u,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var i=s(24246),t=s(71670),r=s(32189),o=s(9785),a=s(79022);const l={title:"moon.yml",toc_max_heading_level:6},c=void 0,d={id:"config/project",title:"moon.yml",description:"The moon.yml configuration file is not required but can be used to define additional metadata",source:"@site/docs/config/project.mdx",sourceDirName:"config",slug:"/config/project",permalink:"/docs/config/project",draft:!1,unlisted:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/config/project.mdx",tags:[],version:"current",frontMatter:{title:"moon.yml",toc_max_heading_level:6},sidebar:"docs",previous:{title:".moon/tasks...",permalink:"/docs/config/tasks"},next:{title:"template.yml",permalink:"/docs/config/template"}},h={},p=[{value:"dependsOn
",id:"dependson",level:2},{value:"Metadata",id:"metadata",level:2},{value:"id
",id:"id",level:2},{value:"language
",id:"language",level:2},{value:"owners
",id:"owners",level:2},{value:"customGroups
",id:"customgroups",level:3},{value:"defaultOwner
",id:"defaultowner",level:3},{value:"optional
",id:"optional",level:3},{value:"paths
",id:"paths",level:3},{value:"requiredApprovals
",id:"requiredapprovals",level:3},{value:"project
",id:"project",level:2},{value:"channel
",id:"channel",level:3},{value:"description
",id:"description",level:3},{value:"maintainers
",id:"maintainers",level:3},{value:"name
",id:"name",level:3},{value:"owner
",id:"owner",level:3},{value:"stack
",id:"stack",level:2},{value:"tags
",id:"tags",level:2},{value:"type
",id:"type",level:2},{value:"Tasks",id:"tasks",level:2},{value:"env
",id:"env",level:2},{value:"fileGroups
",id:"filegroups",level:2},{value:"platform
",id:"platform",level:2},{value:"tasks
",id:"tasks-1",level:2},{value:"extends
",id:"extends",level:3},{value:"description
",id:"description-1",level:3},{value:"command
",id:"command",level:3},{value:"Special commands",id:"special-commands",level:4},{value:"args
",id:"args",level:3},{value:"deps
",id:"deps",level:3},{value:"Args & env",id:"args--env",level:4},{value:"Optional",id:"optional-1",level:4},{value:"env
",id:"env-1",level:3},{value:"inputs
",id:"inputs",level:3},{value:"local
",id:"local",level:3},{value:"outputs
",id:"outputs",level:3},{value:"platform
",id:"platform-1",level:3},{value:"options
",id:"options",level:3},{value:"affectedFiles
",id:"affectedfiles",level:4},{value:"affectedPassInputs
",id:"affectedpassinputs",level:4},{value:"allowFailure
",id:"allowfailure",level:4},{value:"cache
",id:"cache",level:4},{value:"envFile
",id:"envfile",level:4},{value:"interactive
",id:"interactive",level:4},{value:"mergeArgs
",id:"mergeargs",level:4},{value:"mergeDeps
",id:"mergedeps",level:4},{value:"mergeEnv
",id:"mergeenv",level:4},{value:"mergeInputs
",id:"mergeinputs",level:4},{value:"mergeOutputs
",id:"mergeoutputs",level:4},{value:"outputStyle
",id:"outputstyle",level:4},{value:"persistent
",id:"persistent",level:4},{value:"retryCount
",id:"retrycount",level:4},{value:"runDepsInParallel
",id:"rundepsinparallel",level:4},{value:"runInCI
",id:"runinci",level:4},{value:"runFromWorkspaceRoot
",id:"runfromworkspaceroot",level:4},{value:"shell
",id:"shell",level:4},{value:"unixShell
",id:"unixshell",level:4},{value:"windowsShell
",id:"windowsshell",level:4},{value:"Overrides",id:"overrides",level:2},{value:"toolchain
",id:"toolchain",level:2},{value:"bun
",id:"bun",level:3},{value:"version
",id:"version",level:4},{value:"deno
",id:"deno",level:3},{value:"version
",id:"version-1",level:4},{value:"node
",id:"node",level:3},{value:"version
",id:"version-2",level:4},{value:"rust
",id:"rust",level:3},{value:"version
",id:"version-3",level:4},{value:"typescript
",id:"typescript",level:3},{value:"disabled
",id:"disabled",level:4},{value:"includeProjectReferenceSources
",id:"includeprojectreferencesources",level:4},{value:"includeSharedTypes
",id:"includesharedtypes",level:4},{value:"routeOutDirToCache
",id:"routeoutdirtocache",level:4},{value:"syncProjectReferences
",id:"syncprojectreferences",level:4},{value:"syncProjectReferencesToPaths
",id:"syncprojectreferencestopaths",level:4},{value:"workspace
",id:"workspace",level:2},{value:"inheritedTasks
",id:"inheritedtasks",level:3},{value:"exclude
",id:"exclude",level:4},{value:"include
",id:"include",level:4},{value:"rename
",id:"rename",level:4}];function j(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"moon.yml"})," configuration file ",(0,i.jsx)(n.em,{children:"is not required"})," but can be used to define additional metadata\nfor a project, override inherited tasks, and more at the project-level. When used, this file must\nexist in a project's root, as configured in ",(0,i.jsx)(n.a,{href:"./workspace#projects",children:(0,i.jsx)(n.code,{children:"projects"})}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"$schema: 'https://moonrepo.dev/schemas/project.json'\n"})}),"\n",(0,i.jsx)(n.h2,{id:"dependson",children:(0,i.jsx)(n.code,{children:"dependsOn"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#dependsOn"}),"\n",(0,i.jsxs)(n.p,{children:["Explicitly defines ",(0,i.jsx)(n.em,{children:"other"})," projects that ",(0,i.jsx)(n.em,{children:"this"})," project depends on, primarily when generating the\nproject and task graphs. The most common use case for this is building those projects ",(0,i.jsx)(n.em,{children:"before"}),"\nbuilding this one. When defined, this setting requires an array of project names, which are the keys\nfound in the ",(0,i.jsx)(n.a,{href:"./workspace#projects",children:(0,i.jsx)(n.code,{children:"projects"})})," map."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"dependsOn:\n - 'apiClients'\n - 'designSystem'\n"})}),"\n",(0,i.jsxs)(n.p,{children:["A dependency object can also be defined, where a specific ",(0,i.jsx)(n.code,{children:"scope"}),' can be assigned, which accepts\n"production" (default), "development", "build", or "peer".']}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"dependsOn:\n - id: 'apiClients'\n scope: 'production'\n - id: 'designSystem'\n scope: 'peer'\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["Learn more about ",(0,i.jsx)(n.a,{href:"../concepts/project#dependencies",children:"implicit and explicit dependencies"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"metadata",children:"Metadata"}),"\n",(0,i.jsxs)(n.h2,{id:"id",children:[(0,i.jsx)(n.code,{children:"id"}),(0,i.jsx)(a.Z,{version:"1.18.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#id"}),"\n",(0,i.jsxs)(n.p,{children:["Overrides the name (identifier) of the project, which was configured in or derived from the\n",(0,i.jsx)(n.a,{href:"./workspace#projects",children:(0,i.jsx)(n.code,{children:"projects"})})," setting in ",(0,i.jsx)(n.a,{href:"./workspace",children:(0,i.jsx)(n.code,{children:".moon/workspace.yml"})}),". This setting is\nuseful when using glob based project location, and want to avoid using the folder name as the\nproject name."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"id: 'custom-id'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsx)(n.p,{children:"All references to the project must use the new identifier, including project and task dependencies."})}),"\n",(0,i.jsx)(n.h2,{id:"language",children:(0,i.jsx)(n.code,{children:"language"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#language"}),"\n",(0,i.jsxs)(n.p,{children:["The primary programming language the project is written in. This setting is required for\n",(0,i.jsx)(n.a,{href:"./tasks",children:"task inheritance"}),", editor extensions, and more. Supports the following values:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"bash"})," - A ",(0,i.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Bash_(Unix_shell)",children:"Bash"})," based project (Unix only)."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"batch"})," - A ",(0,i.jsx)(n.a,{href:"https://en.wikibooks.org/wiki/Windows_Batch_Scripting",children:"Batch"}),"/PowerShell based\nproject (Windows only)."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"go"})," - A ",(0,i.jsx)(n.a,{href:"https://go.dev/",children:"Go"})," based project."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"javascript"})," - A ",(0,i.jsx)(n.a,{href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript",children:"JavaScript"})," based\nproject."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"php"})," - A ",(0,i.jsx)(n.a,{href:"https://www.php.net",children:"PHP"})," based project."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"python"})," - A ",(0,i.jsx)(n.a,{href:"https://www.python.org/",children:"Python"})," based project."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ruby"})," - A ",(0,i.jsx)(n.a,{href:"https://www.ruby-lang.org/en/",children:"Ruby"})," based project."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"rust"})," - A ",(0,i.jsx)(n.a,{href:"https://www.rust-lang.org/",children:"Rust"})," based project."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"typescript"})," - A ",(0,i.jsx)(n.a,{href:"https://www.typescriptlang.org/",children:"TypeScript"})," based project."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"unknown"})," (default) - When not configured or inferred."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"*"})," - A custom language. Values will be converted to kebab-case."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"language: 'javascript'\n\n# Custom\nlanguage: 'kotlin'\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"For convenience, when this setting is not defined, moon will attempt to detect the language based\non configuration files found in the project root. This only applies to non-custom languages!"}),"\n"]}),"\n",(0,i.jsxs)(n.h2,{id:"owners",children:[(0,i.jsx)(n.code,{children:"owners"}),(0,i.jsx)(a.Z,{version:"1.8.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#owners"}),"\n",(0,i.jsx)(n.p,{children:"Defines ownership of source code within the current project, by mapping file system paths to owners.\nAn owner is either a user, team, or group."}),"\n",(0,i.jsxs)(n.p,{children:["Currently supports\n",(0,i.jsx)(n.a,{href:"https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners",children:"GitHub"}),",\n",(0,i.jsx)(n.a,{href:"https://docs.gitlab.com/ee/user/project/codeowners/reference.html",children:"GitLab"}),", and\n",(0,i.jsx)(n.a,{href:"https://marketplace.atlassian.com/apps/1218598/code-owners-for-bitbucket?tab=overview&hosting=cloud",children:"Bitbucket"}),"\n(via app)."]}),"\n",(0,i.jsxs)(n.h3,{id:"customgroups",children:[(0,i.jsx)(n.code,{children:"customGroups"}),(0,i.jsx)(o.Z,{text:"Bitbucket"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/OwnersConfig#customGroups"}),"\n",(0,i.jsxs)(n.p,{children:["When using the\n",(0,i.jsx)(n.a,{href:"https://marketplace.atlassian.com/apps/1218598/code-owners-for-bitbucket?tab=overview&hosting=cloud",children:"Code Owners for Bitbucket"}),"\napp, this setting provides a way to define custom groups that will be injected at the top of the\n",(0,i.jsx)(n.code,{children:"CODEOWNERS"})," file. These groups ",(0,i.jsx)(n.em,{children:"must"})," be unique across all projects."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {2,3}',children:"owners:\n customGroups:\n '@@@backend': ['@\"user name\"', '@@team']\n"})}),"\n",(0,i.jsx)(n.h3,{id:"defaultowner",children:(0,i.jsx)(n.code,{children:"defaultOwner"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/OwnersConfig#defaultOwner"}),"\n",(0,i.jsxs)(n.p,{children:["The default owner for all ",(0,i.jsx)(n.a,{href:"#paths",children:(0,i.jsx)(n.code,{children:"paths"})}),". This setting is optional in some cases but helps to\navoid unnecessary repetition."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {2}',children:"owners:\n defaultOwner: '@frontend'\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"optional",children:[(0,i.jsx)(n.code,{children:"optional"}),(0,i.jsx)(o.Z,{text:"GitLab"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/OwnersConfig#optional"}),"\n",(0,i.jsxs)(n.p,{children:["For GitLab, marks the project's\n",(0,i.jsx)(n.a,{href:"https://docs.gitlab.com/ee/user/project/codeowners/reference.html#optional-sections",children:"code owners section"}),"\nas optional. Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {2}',children:"owners:\n optional: true\n"})}),"\n",(0,i.jsx)(n.h3,{id:"paths",children:(0,i.jsx)(n.code,{children:"paths"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/OwnersConfig#paths"}),"\n",(0,i.jsxs)(n.p,{children:["The primary setting for defining ownership of source code within the current project. This setting\nsupports 2 formats, the first being a list of file paths relative from the current project. This\nformat requires ",(0,i.jsx)(n.a,{href:"#defaultowner",children:(0,i.jsx)(n.code,{children:"defaultOwner"})})," to be defined, and only supports 1 owner for every\npath (the default owner)."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {3-6}',children:"owners:\n defaultOwner: '@frontend'\n paths:\n - '**/*.ts'\n - '**/*.tsx'\n - '*.config.js'\n"})}),"\n",(0,i.jsxs)(n.p,{children:["The second format provides far more granularity, allowing for multiple owners per path. This format\nrequires a map, where the key is a file path relative from the current project, and the value is a\nlist of owners. Paths with an empty list of owners will fallback to ",(0,i.jsx)(n.a,{href:"#defaultowner",children:(0,i.jsx)(n.code,{children:"defaultOwner"})}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {3-6}',children:"owners:\n defaultOwner: '@frontend'\n paths:\n '**/*.rs': ['@backend']\n '**/*.js': []\n '*.config.js': ['@frontend', '@frontend-infra']\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"The syntax for owners is dependent on the provider you are using for version control (GitHub,\nGitLab, Bitbucket). moon provides no validation or guarantees that these are correct."}),"\n"]}),"\n",(0,i.jsxs)(n.h3,{id:"requiredapprovals",children:[(0,i.jsx)(n.code,{children:"requiredApprovals"}),(0,i.jsx)(o.Z,{text:"Bitbucket / GitLab"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/OwnersConfig#requiredApprovals"}),"\n",(0,i.jsxs)(n.p,{children:["Requires a specific number of approvals for a pull/merge request to be satisfied. Defaults to ",(0,i.jsx)(n.code,{children:"1"}),"."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["For Bitbucket, defines the\n",(0,i.jsxs)(n.a,{href:"https://docs.mibexsoftware.com/codeowners/merge-checks#MergeChecks-2.MergeChecks:HowmanyoftheseCodeOwnersneedtoapprovebeforeapullrequestcanbemerged?",children:[(0,i.jsx)(n.code,{children:"Check()"})," condition"]}),"\nwhen using a ",(0,i.jsx)(n.a,{href:"#defaultowner",children:(0,i.jsx)(n.code,{children:"defaultOwner"})}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["For GitLab, defines a requirement on the\n",(0,i.jsx)(n.a,{href:"https://docs.gitlab.com/ee/user/project/codeowners/reference.html#sections-requiring-multiple-approvals",children:"code owners section"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {2}',children:"owners:\n requiredApprovals: 2\n"})}),"\n",(0,i.jsx)(n.h2,{id:"project",children:(0,i.jsx)(n.code,{children:"project"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#project"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"project"})," setting defines metadata about the project itself."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"project:\n name: 'moon'\n description: 'A monorepo management tool.'\n channel: '#moon'\n owner: 'infra.platform'\n maintainers: ['miles.johnson']\n"})}),"\n",(0,i.jsxs)(n.p,{children:["The information listed within ",(0,i.jsx)(n.code,{children:"project"})," is purely informational and primarily displayed within the\nCLI. However, this setting exists for you, your team, and your company, as a means to identify and\norganize all projects. Feel free to build your own tooling around these settings!"]}),"\n",(0,i.jsx)(n.h3,{id:"channel",children:(0,i.jsx)(n.code,{children:"channel"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectMetadataConfig#channel"}),"\n",(0,i.jsx)(n.p,{children:"The Slack, Discord, Teams, IRC, etc channel name (with leading #) in which to discuss the project."}),"\n",(0,i.jsxs)(n.h3,{id:"description",children:[(0,i.jsx)(n.code,{children:"description"}),(0,i.jsx)(o.Z,{})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectMetadataConfig#description"}),"\n",(0,i.jsx)(n.p,{children:"A description of what the project does and aims to achieve. Be as descriptive as possible, as this\nis the kind of information search engines would index on."}),"\n",(0,i.jsx)(n.h3,{id:"maintainers",children:(0,i.jsx)(n.code,{children:"maintainers"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectMetadataConfig#maintainers"}),"\n",(0,i.jsx)(n.p,{children:"A list of people/developers that maintain the project, review code changes, and can provide support.\nCan be a name, email, LDAP name, GitHub username, etc, the choice is yours."}),"\n",(0,i.jsx)(n.h3,{id:"name",children:(0,i.jsx)(n.code,{children:"name"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectMetadataConfig#name"}),"\n",(0,i.jsxs)(n.p,{children:["A human readable name of the project. This is ",(0,i.jsx)(n.em,{children:"different"})," from the unique project name configured in\n",(0,i.jsx)(n.a,{href:"./workspace#projects",children:(0,i.jsx)(n.code,{children:"projects"})}),"."]}),"\n",(0,i.jsx)(n.h3,{id:"owner",children:(0,i.jsx)(n.code,{children:"owner"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectMetadataConfig#owner"}),"\n",(0,i.jsxs)(n.p,{children:["The team or organization that owns the project. Can be a title, LDAP name, GitHub team, etc. We\nsuggest ",(0,i.jsx)(n.em,{children:"not"})," listing people/developers as the owner, use ",(0,i.jsx)(n.a,{href:"#maintainers",children:"maintainers"})," instead."]}),"\n",(0,i.jsxs)(n.h2,{id:"stack",children:[(0,i.jsx)(n.code,{children:"stack"}),(0,i.jsx)(a.Z,{version:"1.22.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#stack"}),"\n",(0,i.jsx)(n.p,{children:"The technology stack this project belongs to, primarily for categorization. Supports the following\nvalues:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"frontend"})," - Client-side user interfaces, etc."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"backend"})," - Server-side APIs, database layers, etc."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"infrastructure"})," - Cloud/server infrastructure, Docker, etc."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"systems"})," - Low-level systems programming."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"unknown"})," (default) - When not configured."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"stack: 'frontend'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["The project stack is also used in ",(0,i.jsx)(n.a,{href:"./workspace#constraints",children:"constraints and boundaries"}),"!"]})}),"\n",(0,i.jsx)(n.h2,{id:"tags",children:(0,i.jsx)(n.code,{children:"tags"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#tags"}),"\n",(0,i.jsxs)(n.p,{children:["Tags are a simple mechanism for categorizing projects. They can be used to group projects together\nfor ",(0,i.jsx)(n.a,{href:"../commands/query/projects",children:"easier querying"}),", enforcing of\n",(0,i.jsx)(n.a,{href:"./workspace#constraints",children:"project boundaries and constraints"}),",\n",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance",children:"task inheritance"}),", and more."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"tags:\n - 'react'\n - 'prisma'\n"})}),"\n",(0,i.jsx)(n.h2,{id:"type",children:(0,i.jsx)(n.code,{children:"type"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#type"}),"\n",(0,i.jsx)(n.p,{children:"The type of project. Supports the following values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"application"})," - An application of any kind."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"automation"})," - An automated testing suite, like E2E, integration, or visual tests.","\n",(0,i.jsx)(a.Z,{version:"1.16.0"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"configuration"})," - Configuration files or infrastructure.","\n",(0,i.jsx)(a.Z,{version:"1.22.0"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"library"})," - A self-contained, shareable, and publishable set of code."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"scaffolding"})," - Templates or generators for scaffolding.","\n",(0,i.jsx)(a.Z,{version:"1.22.0"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"tool"})," - An internal tool, one-off script, etc."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"unknown"})," (default) - When not configured."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"type: 'application'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["The project type is used in ",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance",children:"task inheritance"}),",\n",(0,i.jsx)(n.a,{href:"./workspace#constraints",children:"constraints and boundaries"}),", editor extensions, and more!"]})}),"\n",(0,i.jsx)(n.h2,{id:"tasks",children:"Tasks"}),"\n",(0,i.jsx)(n.h2,{id:"env",children:(0,i.jsx)(n.code,{children:"env"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#env"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"env"})," field is map of strings that are passed as environment variables to ",(0,i.jsx)(n.em,{children:"all tasks"})," within the\ncurrent project. Project-level variables will not override task-level variables of the same name."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"env:\n NODE_ENV: 'production'\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["View the task ",(0,i.jsx)(n.a,{href:"#env-1",children:(0,i.jsx)(n.code,{children:"env"})})," setting for more usage examples and information."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"filegroups",children:(0,i.jsx)(n.code,{children:"fileGroups"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#fileGroups"}),"\n",(0,i.jsxs)(n.p,{children:["Defines ",(0,i.jsx)(n.a,{href:"../concepts/file-group",children:"file groups"})," to be used by local tasks. By default, this setting\n",(0,i.jsx)(n.em,{children:"is not required"})," for the following reasons:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"File groups are an optional feature, and are designed for advanced use cases."}),"\n",(0,i.jsxs)(n.li,{children:["File groups defined in ",(0,i.jsx)(n.a,{href:"./tasks",children:(0,i.jsx)(n.code,{children:".moon/tasks.yml"})})," will be inherited by all projects."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["When defined this setting requires a map, where the key is the file group name, and the value is a\nlist of ",(0,i.jsx)(n.a,{href:"../concepts/file-pattern",children:"globs or file paths"}),", or environment variables. Globs and paths\nare ",(0,i.jsx)(n.a,{href:"../concepts/file-pattern#project-relative",children:"relative to a project"})," (even when defined\n",(0,i.jsx)(n.a,{href:"./tasks",children:"globally"}),")."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"fileGroups:\n configs:\n - '*.config.{js,cjs,mjs}'\n - '*.json'\n sources:\n - 'src/**/*'\n - 'types/**/*'\n tests:\n - 'tests/**/*'\n - '**/__tests__/**/*'\n assets:\n - 'assets/**/*'\n - 'images/**/*'\n - 'static/**/*'\n - '**/*.{scss,css}'\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"The code snippet above is merely an example of file groups. Feel free to use those groups as-is,\nmodify the glob lists, add and remove groups, or implement completely new groups. The choice is\nyours!"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"platform",children:(0,i.jsx)(n.code,{children:"platform"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#platform"}),"\n",(0,i.jsxs)(n.p,{children:["The default ",(0,i.jsx)(n.a,{href:"#platform-1",children:(0,i.jsx)(n.code,{children:"platform"})})," for all task's within the current project. When a task's\n",(0,i.jsx)(n.code,{children:"platform"})," has ",(0,i.jsx)(n.em,{children:"not been"})," explicitly configured, the platform will fallback to this configured\nvalue, otherwise the platform will be detected from the project's environment."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"platform: 'node'\n"})}),"\n",(0,i.jsx)(n.h2,{id:"tasks-1",children:(0,i.jsx)(n.code,{children:"tasks"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#tasks"}),"\n",(0,i.jsxs)(n.p,{children:["Tasks are actions that are ran within the context of a ",(0,i.jsx)(n.a,{href:"../concepts/project",children:"project"}),", and commonly\nwrap an npm binary or system command. This setting requires a map, where the key is a unique name\nfor the task, and the value is an object of task parameters."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"tasks:\n format:\n command: 'prettier'\n lint:\n command: 'eslint'\n test:\n command: 'jest'\n typecheck:\n command: 'tsc'\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"extends",children:[(0,i.jsx)(n.code,{children:"extends"}),(0,i.jsx)(a.Z,{version:"1.12.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#extends"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"extends"})," field can be used to extend the settings from a sibling task within the same project,\nor ",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance",children:"inherited from the global scope"}),". This is useful for composing\nsimilar tasks with different arguments or options."]}),"\n",(0,i.jsxs)(n.p,{children:["When extending another task, the same\n",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance#merge-strategies",children:"merge strategies"})," used for inheritance are applied."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {8}',children:"tasks:\n lint:\n command: 'eslint .'\n inputs:\n - 'src/**/*'\n\n lint-fix:\n extends: 'lint'\n args: '--fix'\n local: true\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"description-1",children:[(0,i.jsx)(n.code,{children:"description"}),(0,i.jsx)(a.Z,{version:"1.22.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#description"}),"\n",(0,i.jsxs)(n.p,{children:["A human-readable description of what the task does. This information is displayed within the\n",(0,i.jsx)(n.a,{href:"../commands/project",children:(0,i.jsx)(n.code,{children:"moon project"})})," and ",(0,i.jsx)(n.a,{href:"../commands/task",children:(0,i.jsx)(n.code,{children:"moon task"})})," commands."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {3}',children:"tasks:\n build:\n description: 'Builds the project using Vite'\n command: 'vite build'\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"command",children:[(0,i.jsx)(n.code,{children:"command"}),(0,i.jsx)(o.Z,{})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#command"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"command"})," field is the command line to run for the task, including the command name (must be\nfirst) and any optional ",(0,i.jsx)(n.a,{href:"#args",children:"arguments"}),". This field is required when ",(0,i.jsx)(n.em,{children:"not"})," inheriting a global\ntask of the same name."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4,6-9}',children:"tasks:\n format:\n # Using a string\n command: 'prettier --check .'\n # Using an array\n command:\n - 'prettier'\n - '--check'\n - '.'\n"})}),"\n",(0,i.jsxs)(n.p,{children:["By default a task assumes the command name is an npm binary, and if you'd like to reference a system\ncommand, you'll also need to set the ",(0,i.jsx)(n.a,{href:"#platform",children:(0,i.jsx)(n.code,{children:"platform"})}),' to "system". We do our best to\nautomatically detect this, but it\'s not accurate in all scenarios.']}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"tasks:\n clean:\n command: 'rm -rf ./dist'\n platform: 'system'\n"})}),"\n",(0,i.jsx)(n.h4,{id:"special-commands",children:"Special commands"}),"\n",(0,i.jsx)(n.p,{children:"For interoperability reasons, the following command names have special handling."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"noop"}),", ",(0,i.jsx)(n.code,{children:"no-op"}),", ",(0,i.jsx)(n.code,{children:"nop"}),' - Marks the task as a "no operation". Will not execute a command in the\naction pipeline but can define dependencies.']}),"\n",(0,i.jsxs)(n.li,{children:["When ",(0,i.jsx)(n.code,{children:"platform"}),' is "bun":',"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"bun"}),", ",(0,i.jsx)(n.code,{children:"bunx"})," - Uses the binaries from the toolchain."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["When ",(0,i.jsx)(n.code,{children:"platform"}),' is "deno":',"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Will execute with ",(0,i.jsx)(n.code,{children:"deno"})," binary."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["When ",(0,i.jsx)(n.code,{children:"platform"}),' is "node":',"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"node"}),", ",(0,i.jsx)(n.code,{children:"npm"}),", ",(0,i.jsx)(n.code,{children:"pnpm"}),", ",(0,i.jsx)(n.code,{children:"yarn"})," - Uses the binaries from the toolchain."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["When ",(0,i.jsx)(n.code,{children:"platform"}),' is "rust":',"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Will execute with ",(0,i.jsx)(n.code,{children:"cargo"})," binary."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"args",children:(0,i.jsx)(n.code,{children:"args"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#args"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"args"})," field is a collection of ",(0,i.jsx)(n.em,{children:"additional"})," arguments to pass to the command line when\nexecuting the task. This field exists purely to provide arguments for\n",(0,i.jsx)(n.a,{href:"./tasks#tasks",children:"inherited tasks"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"This setting can be defined using a string, or an array of strings. We suggest using arrays when\ndealing with many args, or the args string cannot be parsed easily."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5,7-10}',children:"tasks:\n test:\n command: 'jest'\n # Using a string\n args: '--color --maxWorkers 3'\n # Using an array\n args:\n - '--color'\n - '--maxWorkers'\n - '3'\n"})}),"\n",(0,i.jsxs)(n.p,{children:["However, for the array approach to work correctly, each argument ",(0,i.jsx)(n.em,{children:"must"})," be its own distinct item,\nincluding argument values. For example:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"tasks:\n test:\n command: 'jest'\n args:\n # Valid\n - '--maxWorkers'\n - '3'\n # Also valid\n - '--maxWorkers=3'\n # Invalid\n - '--maxWorkers 3'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"deps",children:(0,i.jsx)(n.code,{children:"deps"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#deps"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"deps"})," field is a list of other tasks (known as ",(0,i.jsx)(n.a,{href:"../concepts/target",children:"targets"}),"), either within\nthis project or found in another project, that will be executed ",(0,i.jsx)(n.em,{children:"before"})," this task. It achieves this\nby generating a directed task graph based on the project graph."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4-8}',children:"tasks:\n build:\n command: 'webpack'\n deps:\n - 'apiClients:build'\n - 'designSystem:build'\n # A task within the current project\n - 'codegen'\n"})}),"\n",(0,i.jsx)(n.h4,{id:"args--env",children:"Args & env"}),"\n",(0,i.jsxs)(n.p,{children:["Furthermore, for each dependency target, you can configure additional command line arguments and\nenvironment variables that'll be passed to the dependent task when it is ran. The ",(0,i.jsx)(n.code,{children:"args"})," field\nsupports a string or a list of strings, while ",(0,i.jsx)(n.code,{children:"env"})," is an object of key-value pairs."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4-8}',children:"tasks:\n build:\n command: 'webpack'\n deps:\n - target: 'apiClients:build'\n args: '--env production'\n env:\n NODE_ENV: 'production'\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["Dependencies of inherited tasks will be excluded and renamed according to the\n",(0,i.jsx)(n.a,{href:"#inheritedtasks",children:(0,i.jsx)(n.code,{children:"workspace.inheritedTasks"})})," setting. This process ",(0,i.jsx)(n.em,{children:"only"})," uses filters from the\ncurrent project, and not filters from dependent projects. Furthermore, ",(0,i.jsx)(n.code,{children:"args"})," and ",(0,i.jsx)(n.code,{children:"env"})," are not\ndeeply merged."]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"optional-1",children:"Optional"}),"\n",(0,i.jsxs)(n.p,{children:["By default, all dependencies are required to exist when tasks are being built and expanded, but this\nisn't always true when dealing with composition and inheritance. For dependencies that may not exist\nbased on what's inherited, you can mark it as ",(0,i.jsx)(n.code,{children:"optional"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4-6}',children:"tasks:\n build:\n command: 'webpack'\n deps:\n - target: 'apiClients:build'\n optional: true\n"})}),"\n",(0,i.jsx)(n.h3,{id:"env-1",children:(0,i.jsx)(n.code,{children:"env"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#env"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"env"})," field is map of strings that are passed as environment variables when running the command.\nVariables defined here will take precedence over those loaded with ",(0,i.jsx)(n.a,{href:"#envfile",children:(0,i.jsx)(n.code,{children:"envFile"})}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4,5}',children:"tasks:\n build:\n command: 'webpack'\n env:\n NODE_ENV: 'production'\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Variables also support substitution using the syntax ",(0,i.jsx)(n.code,{children:"${VAR_NAME}"}),". When using substitution, only\nvariables in the current process can be referenced, and not those currently defined in ",(0,i.jsx)(n.code,{children:"env"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4,5}',children:"tasks:\n build:\n command: 'webpack'\n env:\n APP_TARGET: '${REGION}-${ENVIRONMENT}'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"inputs",children:(0,i.jsx)(n.code,{children:"inputs"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#inputs"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"inputs"})," field is a list of sources that calculate whether to execute this task based on the\nenvironment and files that have been touched since the last time the task has been ran. If ",(0,i.jsx)(n.em,{children:"not"}),"\ndefined or inherited, then all files within a project are considered an input (",(0,i.jsx)(n.code,{children:"**/*"}),")."]}),"\n",(0,i.jsx)(n.p,{children:"Inputs support the following source types:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Environment variables (must start with a ",(0,i.jsx)(n.code,{children:"$"}),")"]}),"\n",(0,i.jsxs)(n.li,{children:["Environment variable wildcards (must start with a ",(0,i.jsx)(n.code,{children:"$"})," and contain ",(0,i.jsx)(n.code,{children:"*"}),")","\n",(0,i.jsx)(a.Z,{version:"1.22.0"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["Files, folders, and globs\n(",(0,i.jsx)(n.a,{href:"../concepts/file-pattern#project-relative",children:"project and workspace relative file patterns"}),")"]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4-12}',children:"tasks:\n lint:\n command: 'eslint'\n inputs:\n # Config files anywhere within the project\n - '**/.eslintignore'\n - '**/.eslintrc.js'\n # Config files at the workspace root\n - '/.eslintignore'\n - '/.eslintrc.js'\n # Environment variables\n - '$ESLINT_CACHE'\n - '$ESLINT_*'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"caution",children:(0,i.jsxs)(n.p,{children:["When using an environment variable, we assume ",(0,i.jsx)(n.em,{children:"it's not defined"})," by default, and will trigger an\naffected state when it ",(0,i.jsx)(n.em,{children:"is"})," defined. If the environment variable always exists, then the task will\nalways run and bypass the cache."]})}),"\n",(0,i.jsx)(n.admonition,{type:"danger",children:(0,i.jsxs)(n.p,{children:["When using globs, be aware that files that match the glob, but are ignored via ",(0,i.jsx)(n.code,{children:".gitignore"})," (or\nsimilar), will ",(0,i.jsx)(n.em,{children:"not"})," be considered an input. To work around this, use explicit file inputs."]})}),"\n",(0,i.jsx)(n.h3,{id:"local",children:(0,i.jsx)(n.code,{children:"local"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#local"}),"\n",(0,i.jsxs)(n.p,{children:["Marks the task as local only. This should primarily be enabled for long-running or never-ending\ntasks, like development servers and watch mode. Defaults to ",(0,i.jsx)(n.code,{children:"true"}),' if the task name is "dev",\n"start", or "serve", and ',(0,i.jsx)(n.code,{children:"false"})," otherwise."]}),"\n",(0,i.jsx)(n.p,{children:"This is a convenience setting for local development that sets the following task options:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#cache",children:(0,i.jsx)(n.code,{children:"cache"})})," -> Turned off"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#outputstyle",children:(0,i.jsx)(n.code,{children:"outputStyle"})}),' -> Set to "stream"']}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#persistent",children:(0,i.jsx)(n.code,{children:"persistent"})})," -> Turned on"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#runinci",children:(0,i.jsx)(n.code,{children:"runInCI"})})," -> Turned off"]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n dev:\n command: 'webpack server'\n local: true\n"})}),"\n",(0,i.jsx)(n.h3,{id:"outputs",children:(0,i.jsx)(n.code,{children:"outputs"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#outputs"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"outputs"})," field is a list of ",(0,i.jsx)(n.a,{href:"../concepts/file-pattern#project-relative",children:"files and folders"})," that\nare ",(0,i.jsx)(n.em,{children:"created"})," as a result of executing this task, typically from a build or compilation related\ntask. Outputs are necessary for ",(0,i.jsx)(n.a,{href:"../concepts/cache",children:"incremental caching and hydration"}),". If you'd\nprefer to avoid that functionality, omit this field."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4-6}',children:"tasks:\n build:\n command: 'webpack'\n outputs:\n # Relative from project root\n - 'build/'\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Globs can also be used if you'd like to restrict which files are cached. For example, when building\na JavaScript project, you may want to include ",(0,i.jsx)(n.code,{children:".js"})," files, but exclude ",(0,i.jsx)(n.code,{children:".map"})," and other files."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4-6}',children:"tasks:\n build:\n command: 'webpack'\n outputs:\n - 'build/**/*.js'\n - '!build/internal.js'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"caution",children:(0,i.jsxs)(n.p,{children:["When using globs and moon hydrates an output (a cache hit), all files not matching the glob will be\n",(0,i.jsx)(n.strong,{children:"deleted"}),". Ensure that all files critical for the build to function correctly are included."]})}),"\n",(0,i.jsx)(n.h3,{id:"platform-1",children:(0,i.jsx)(n.code,{children:"platform"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#platform"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"platform"})," field defines the platform (language runtime) the command runs on, where to locate\nits executable, and which tool to execute it with. By default moon will set to a value based on the\nproject's ",(0,i.jsx)(n.a,{href:"#language",children:(0,i.jsx)(n.code,{children:"language"})})," or default ",(0,i.jsx)(n.a,{href:"#platform",children:(0,i.jsx)(n.code,{children:"platform"})}),"."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"bun"})," - Command is a binary within ",(0,i.jsx)(n.code,{children:"node_modules"})," and will be executed with Bun.","\n",(0,i.jsx)(a.Z,{version:"1.17.0"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"deno"})," - Command is executed with Deno, or is a Deno binary located in ",(0,i.jsx)(n.code,{children:"~/.deno/bin"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"node"})," - Command is a binary within ",(0,i.jsx)(n.code,{children:"node_modules"})," and will be executed with Node.js."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"rust"})," - Command is executed with Cargo, or is a Cargo binary located in ",(0,i.jsx)(n.code,{children:"~/.cargo/bin"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"system"})," - Command is expected to exist within the system's environment / user's shell."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"unknown"})," - When not configured or inferred."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4}',children:"tasks:\n env:\n command: 'printenv'\n platform: 'system'\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["This field exists because of our ",(0,i.jsx)(n.a,{href:"../concepts/toolchain",children:"toolchain"}),", and moon ensuring the correct\ncommand is ran."]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"options",children:(0,i.jsx)(n.code,{children:"options"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#options"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"options"})," field is an object of configurable options that can be used to modify the task and its\nexecution. The following fields can be provided, with merge related fields supporting all\n",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance#merge-strategies",children:"merge strategies"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"tasks:\n typecheck:\n command: 'tsc --noEmit'\n options:\n mergeArgs: 'replace'\n runFromWorkspaceRoot: true\n"})}),"\n",(0,i.jsx)(n.h4,{id:"affectedfiles",children:(0,i.jsx)(n.code,{children:"affectedFiles"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#affectedFiles"}),"\n",(0,i.jsxs)(n.p,{children:["When enabled and the ",(0,i.jsxs)(n.a,{href:"../run-task#running-based-on-affected-files-only",children:[(0,i.jsx)(n.code,{children:"--affected"})," option"]})," is\nprovided, all affected files that match this task's ",(0,i.jsx)(n.a,{href:"#inputs",children:(0,i.jsx)(n.code,{children:"inputs"})})," will be passed as relative\nfile paths as command line arguments, and as a ",(0,i.jsx)(n.code,{children:"MOON_AFFECTED_FILES"})," environment variable."]}),"\n",(0,i.jsxs)(n.p,{children:["If there are no affected files, ",(0,i.jsx)(n.code,{children:"."})," (current directory) will be passed instead for arguments, and an\nempty value for the environment variable. This functionality can be changed with the\n",(0,i.jsx)(n.a,{href:"#affected-pass-inputs",children:(0,i.jsx)(n.code,{children:"affectedPassInputs"})})," setting."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5,7,9}',children:"tasks:\n lint:\n command: 'eslint'\n options:\n affectedFiles: true\n # Only pass args\n affectedFiles: 'args'\n # Only set env var\n affectedFiles: 'env'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"caution",children:(0,i.jsxs)(n.p,{children:["When using this option, ensure that explicit files or ",(0,i.jsx)(n.code,{children:"."})," ",(0,i.jsx)(n.em,{children:"are not present"})," in the ",(0,i.jsx)(n.a,{href:"#args",children:(0,i.jsx)(n.code,{children:"args"})}),"\nlist. Furthermore, this functionality will only work if the task's command supports an arbitrary\nlist of files being passed as arguments."]})}),"\n",(0,i.jsxs)(n.h4,{id:"affectedpassinputs",children:[(0,i.jsx)(n.code,{children:"affectedPassInputs"}),(0,i.jsx)(a.Z,{version:"1.22.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#affectedPassInputs"}),"\n",(0,i.jsxs)(n.p,{children:["When ",(0,i.jsx)(n.a,{href:"#affectedfiles",children:(0,i.jsx)(n.code,{children:"affectedFiles"})})," is enabled, and no affected files are found, moon will pass\n",(0,i.jsx)(n.code,{children:"."})," as an argument. For the most part, this works, but if you'd like to ",(0,i.jsx)(n.em,{children:"not"})," pass the entire\ndirectory (and everything in it), and only pass the configured ",(0,i.jsx)(n.a,{href:"#inputs",children:(0,i.jsx)(n.code,{children:"inputs"})})," instead, then you\ncan enable this setting."]}),"\n",(0,i.jsx)(n.p,{children:"When enabled, moon will resolve all input globs to literal file paths, and pass them as relative\narguments."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5,6}',children:"tasks:\n lint:\n command: 'eslint'\n options:\n affectedFiles: true\n affectedPassInputs: true\n"})}),"\n",(0,i.jsxs)(n.h4,{id:"allowfailure",children:[(0,i.jsx)(n.code,{children:"allowFailure"}),(0,i.jsx)(a.Z,{version:"1.13.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#allowFailure"}),"\n",(0,i.jsx)(n.p,{children:"Allows a task to fail without failing the entire pipeline. When enabled, the following changes\noccur:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Other tasks ",(0,i.jsx)(n.em,{children:"cannot"})," depend on this task, as we can't ensure it's side-effect free."]}),"\n",(0,i.jsxs)(n.li,{children:["For ",(0,i.jsx)(n.a,{href:"../commands/run",children:(0,i.jsx)(n.code,{children:"moon run"})}),", the process will not bail early and will run to completion."]}),"\n",(0,i.jsxs)(n.li,{children:["For ",(0,i.jsx)(n.a,{href:"../commands/ci",children:(0,i.jsx)(n.code,{children:"moon ci"})}),", the process will not exit with a non-zero exit code, if the only\nfailing tasks are allowed to fail."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n lint:\n command: 'eslint'\n options:\n allowFailure: true\n"})}),"\n",(0,i.jsx)(n.h4,{id:"cache",children:(0,i.jsx)(n.code,{children:"cache"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#cache"}),"\n",(0,i.jsxs)(n.p,{children:["Whether to cache the task's execution result using our ",(0,i.jsx)(n.a,{href:"../concepts/cache#hashing",children:"smart hashing"}),"\nsystem. If disabled, ",(0,i.jsx)(n.em,{children:"will not"})," create a cache hash, and ",(0,i.jsx)(n.em,{children:"will not"})," persist a task's\n",(0,i.jsx)(n.a,{href:"#outputs",children:"outputs"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"We suggest disabling caching when defining cleanup tasks, one-off scripts, or file system heavy\noperations."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n clean:\n command: 'rm -rf ./temp'\n options:\n cache: false\n"})}),"\n",(0,i.jsx)(n.h4,{id:"envfile",children:(0,i.jsx)(n.code,{children:"envFile"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#envFile"}),"\n",(0,i.jsxs)(n.p,{children:["A boolean or path to a ",(0,i.jsx)(n.code,{children:".env"})," file (also know as dotenv file) that defines a collection of\n",(0,i.jsx)(n.a,{href:"#env-1",children:"environment variables"})," for the current task. Variables will be loaded on project creation,\nbut will ",(0,i.jsx)(n.em,{children:"not"})," override those defined in ",(0,i.jsx)(n.a,{href:"#env-1",children:(0,i.jsx)(n.code,{children:"env"})}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Variables defined in the file support value substitution/expansion by wrapping the variable name in\ncurly brackets, such as ",(0,i.jsx)(n.code,{children:"${VAR_NAME}"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {6,8,10}',children:"tasks:\n build:\n command: 'webpack'\n options:\n # Defaults to .env\n envFile: true\n # Or\n envFile: '.env.production'\n # Or from the workspace root\n envFile: '/.env.shared'\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Additionally, a list of file paths can also be provided. When using a list, the order of the files\nis important, as environment variables from all files will be aggregated into a single map, with\nsubsequent files taking precedence over previous ones. Once aggregated, the variables will be passed\nto the task, but will ",(0,i.jsx)(n.em,{children:"not"})," override those defined in ",(0,i.jsx)(n.a,{href:"#env-1",children:(0,i.jsx)(n.code,{children:"env"})}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5-7}',children:"tasks:\n build:\n command: 'webpack'\n options:\n envFile:\n - '.env'\n - '.env.production'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"caution",children:(0,i.jsxs)(n.p,{children:["File parsing is done using the Rust ",(0,i.jsx)(n.a,{href:"https://crates.io/crates/dotenvy",children:(0,i.jsx)(n.code,{children:"dotenvy"})})," crate, which is\n",(0,i.jsx)(n.em,{children:"different"})," than the Node.js ",(0,i.jsx)(n.a,{href:"https://www.npmjs.com/package/dotenv",children:(0,i.jsx)(n.code,{children:"dotenv"})})," package. The biggest\ndifferences are around quote handling and variable substitution, so be aware of this!"]})}),"\n",(0,i.jsxs)(n.h4,{id:"interactive",children:[(0,i.jsx)(n.code,{children:"interactive"}),(0,i.jsx)(a.Z,{version:"1.12.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#interactive"}),"\n",(0,i.jsxs)(n.p,{children:["Marks the task as interactive. ",(0,i.jsx)(n.a,{href:"../concepts/task#interactive",children:"Interactive tasks"})," run in isolation so\nthat they can interact with stdin."]}),"\n",(0,i.jsxs)(n.p,{children:["This setting also disables caching, turns of CI, and other functionality, similar to the\n",(0,i.jsx)(n.a,{href:"#local",children:(0,i.jsx)(n.code,{children:"local"})})," setting."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n init:\n # ...\n options:\n interactive: true\n"})}),"\n",(0,i.jsx)(n.h4,{id:"mergeargs",children:(0,i.jsx)(n.code,{children:"mergeArgs"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#mergeArgs"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance#merge-strategies",children:"strategy"})," to use when merging the\n",(0,i.jsx)(n.a,{href:"#args",children:(0,i.jsx)(n.code,{children:"args"})}),' list with an inherited task. Defaults to "append".']}),"\n",(0,i.jsx)(n.h4,{id:"mergedeps",children:(0,i.jsx)(n.code,{children:"mergeDeps"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#mergeDeps"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance#merge-strategies",children:"strategy"})," to use when merging the\n",(0,i.jsx)(n.a,{href:"#deps",children:(0,i.jsx)(n.code,{children:"deps"})}),' list with an inherited task. Defaults to "append".']}),"\n",(0,i.jsx)(n.h4,{id:"mergeenv",children:(0,i.jsx)(n.code,{children:"mergeEnv"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#mergeEnv"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance#merge-strategies",children:"strategy"})," to use when merging the\n",(0,i.jsx)(n.a,{href:"#env-1",children:(0,i.jsx)(n.code,{children:"env"})}),' map with an inherited task. Defaults to "append".']}),"\n",(0,i.jsx)(n.h4,{id:"mergeinputs",children:(0,i.jsx)(n.code,{children:"mergeInputs"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#mergeInputs"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance#merge-strategies",children:"strategy"})," to use when merging the\n",(0,i.jsx)(n.a,{href:"#inputs",children:(0,i.jsx)(n.code,{children:"inputs"})}),' list with an inherited task. Defaults to "append".']}),"\n",(0,i.jsx)(n.h4,{id:"mergeoutputs",children:(0,i.jsx)(n.code,{children:"mergeOutputs"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#mergeOutputs"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance#merge-strategies",children:"strategy"})," to use when merging the\n",(0,i.jsx)(n.a,{href:"#outputs",children:(0,i.jsx)(n.code,{children:"outputs"})}),' list with an inherited task. Defaults to "append".']}),"\n",(0,i.jsx)(n.h4,{id:"outputstyle",children:(0,i.jsx)(n.code,{children:"outputStyle"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#outputStyle"}),"\n",(0,i.jsxs)(n.p,{children:["Controls how stdout/stderr is displayed when the task is ran as a ",(0,i.jsx)(n.em,{children:"transitive target"}),". By default,\nthis setting is not defined and defers to the action pipeline, but can be overridden with one of the\nfollowing values:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"buffer"})," - Buffers output and displays after the task has exited (either success or failure)."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"buffer-only-failure"})," - Like ",(0,i.jsx)(n.code,{children:"buffer"}),", but only displays on failures."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"hash"})," - Ignores output and only displays the generated ",(0,i.jsx)(n.a,{href:"../concepts/cache#hashing",children:"hash"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"none"})," - Ignores output."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"stream"})," - Streams output directly to the terminal. Will prefix each line of output with the\ntarget."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n test:\n # ...\n options:\n outputStyle: 'stream'\n"})}),"\n",(0,i.jsxs)(n.h4,{id:"persistent",children:[(0,i.jsx)(n.code,{children:"persistent"}),(0,i.jsx)(a.Z,{version:"1.6.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#persistent"}),"\n",(0,i.jsxs)(n.p,{children:["Marks the task as persistent (continuously running). ",(0,i.jsx)(n.a,{href:"../concepts/task#persistent",children:"Persistent tasks"}),"\nare handled differently than non-persistent tasks in the action graph. When running a target, all\npersistent tasks are ",(0,i.jsx)(n.em,{children:"ran last"})," and ",(0,i.jsx)(n.em,{children:"in parallel"}),", after all their dependencies have completed."]}),"\n",(0,i.jsx)(n.p,{children:"This is extremely useful for running a server (or a watcher) in the background while other tasks are\nrunning."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n dev:\n # ...\n options:\n persistent: true\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["We suggest using the ",(0,i.jsx)(n.a,{href:"#local",children:(0,i.jsx)(n.code,{children:"local"})})," setting instead, which enables this setting, amongst other\nuseful settings."]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"retrycount",children:(0,i.jsx)(n.code,{children:"retryCount"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#retryCount"}),"\n",(0,i.jsxs)(n.p,{children:["The number of attempts the task will retry execution before returning a failure. This is especially\nuseful for flaky tasks. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n test:\n # ...\n options:\n retryCount: 3\n"})}),"\n",(0,i.jsx)(n.h4,{id:"rundepsinparallel",children:(0,i.jsx)(n.code,{children:"runDepsInParallel"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#runDepsInParallel"}),"\n",(0,i.jsxs)(n.p,{children:["Whether to run the task's direct ",(0,i.jsx)(n.a,{href:"#deps",children:(0,i.jsx)(n.code,{children:"deps"})})," in parallel or serial (in order). Defaults to\n",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["When disabled, this ",(0,i.jsx)(n.em,{children:"does not"})," run dependencies of dependencies in serial, only direct dependencies."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {8}',children:"tasks:\n start:\n # ...\n deps:\n - '~:clean'\n - '~:build'\n options:\n runDepsInParallel: false\n"})}),"\n",(0,i.jsx)(n.h4,{id:"runinci",children:(0,i.jsx)(n.code,{children:"runInCI"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#runInCI"}),"\n",(0,i.jsxs)(n.p,{children:["Whether to run the task automatically in a CI (continuous integration) environment when affected by\ntouched files, typically through the ",(0,i.jsx)(n.a,{href:"../commands/ci",children:(0,i.jsx)(n.code,{children:"moon ci"})})," command. Defaults to ",(0,i.jsx)(n.code,{children:"true"})," unless\nthe ",(0,i.jsx)(n.a,{href:"#local",children:(0,i.jsx)(n.code,{children:"local"})})," setting is disabled, but is ",(0,i.jsx)(n.em,{children:"always"})," true when a task defines\n",(0,i.jsx)(n.a,{href:"#outputs",children:(0,i.jsx)(n.code,{children:"outputs"})}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n build:\n # ...\n options:\n runInCI: false\n"})}),"\n",(0,i.jsx)(n.h4,{id:"runfromworkspaceroot",children:(0,i.jsx)(n.code,{children:"runFromWorkspaceRoot"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#runFromWorkspaceRoot"}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use the workspace root as the working directory when executing a task. Defaults to\n",(0,i.jsx)(n.code,{children:"false"})," and runs from the task's project root."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n typecheck:\n # ...\n options:\n runFromWorkspaceRoot: true\n"})}),"\n",(0,i.jsx)(n.h4,{id:"shell",children:(0,i.jsx)(n.code,{children:"shell"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#shell"}),"\n",(0,i.jsxs)(n.p,{children:["Whether to run the command within a shell or not. Defaults to ",(0,i.jsx)(n.code,{children:"true"})," for system platform or Windows,\nand ",(0,i.jsx)(n.code,{children:"false"})," otherwise. The shell to run is determined by the ",(0,i.jsx)(n.a,{href:"#unixshell",children:(0,i.jsx)(n.code,{children:"unixShell"})})," and\n",(0,i.jsx)(n.a,{href:"#windowsshell",children:(0,i.jsx)(n.code,{children:"windowsShell"})})," options respectively."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n native:\n command: 'echo $SHELL'\n options:\n shell: true\n"})}),"\n",(0,i.jsxs)(n.p,{children:["However, if you'd like to use a different shell, or customize the shell's arguments, or have\ngranular control, you can set ",(0,i.jsx)(n.code,{children:"shell"})," to false and configure a fully qualified command."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n native:\n command: '/bin/zsh -c \"echo $SHELL\"'\n options:\n shell: false\n"})}),"\n",(0,i.jsxs)(n.h4,{id:"unixshell",children:[(0,i.jsx)(n.code,{children:"unixShell"}),(0,i.jsx)(a.Z,{version:"1.21.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#unixShell"}),"\n",(0,i.jsxs)(n.p,{children:["Customize the shell to run with when on a Unix operating system. Accepts ",(0,i.jsx)(n.code,{children:"bash"}),", ",(0,i.jsx)(n.code,{children:"elvish"}),", ",(0,i.jsx)(n.code,{children:"fish"}),",\n",(0,i.jsx)(n.code,{children:"sh"}),", or ",(0,i.jsx)(n.code,{children:"zsh"}),". If not defined, will derive the shell from the ",(0,i.jsx)(n.code,{children:"SHELL"})," environment variable, or\ndefaults to ",(0,i.jsx)(n.code,{children:"sh"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n native:\n command: 'echo $SHELL'\n options:\n unixShell: 'fish'\n"})}),"\n",(0,i.jsxs)(n.h4,{id:"windowsshell",children:[(0,i.jsx)(n.code,{children:"windowsShell"}),(0,i.jsx)(a.Z,{version:"1.21.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#windowsShell"}),"\n",(0,i.jsxs)(n.p,{children:["Customize the shell to run with when on a Windows operating system. Accepts ",(0,i.jsx)(n.code,{children:"bash"})," (typically via\nGit) or ",(0,i.jsx)(n.code,{children:"pwsh"}),". If not defined, defaults to ",(0,i.jsx)(n.code,{children:"pwsh"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n native:\n command: 'echo $SHELL'\n options:\n windowsShell: 'bash'\n"})}),"\n",(0,i.jsx)(n.h2,{id:"overrides",children:"Overrides"}),"\n",(0,i.jsx)(n.p,{children:"Dictates how a project interacts with settings defined at the top-level."}),"\n",(0,i.jsx)(n.h2,{id:"toolchain",children:(0,i.jsx)(n.code,{children:"toolchain"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#toolchain"}),"\n",(0,i.jsx)(n.h3,{id:"bun",children:(0,i.jsx)(n.code,{children:"bun"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainConfig#bun"}),"\n",(0,i.jsxs)(n.p,{children:["Configures Bun for this project and overrides the top-level ",(0,i.jsx)(n.a,{href:"./toolchain#bun",children:(0,i.jsx)(n.code,{children:"bun"})})," setting."]}),"\n",(0,i.jsx)(n.h4,{id:"version",children:(0,i.jsx)(n.code,{children:"version"})}),"\n",(0,i.jsxs)(n.p,{children:["Defines the explicit Bun ",(0,i.jsx)(n.a,{href:"../concepts/toolchain#version-specification",children:"version specification"})," to use\nwhen ",(0,i.jsx)(n.em,{children:"running tasks"})," for this project."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {2,3}',children:"toolchain:\n bun:\n version: '1.0.0'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"deno",children:(0,i.jsx)(n.code,{children:"deno"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainConfig#deno"}),"\n",(0,i.jsxs)(n.p,{children:["Configures Deno for this project and overrides the top-level ",(0,i.jsx)(n.a,{href:"./toolchain#deno",children:(0,i.jsx)(n.code,{children:"deno"})})," setting."]}),"\n",(0,i.jsx)(n.h4,{id:"version-1",children:(0,i.jsx)(n.code,{children:"version"})}),"\n",(0,i.jsxs)(n.p,{children:["Defines the explicit Deno ",(0,i.jsx)(n.a,{href:"../concepts/toolchain#version-specification",children:"version specification"})," to\nuse when ",(0,i.jsx)(n.em,{children:"running tasks"})," for this project."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {2,3}',children:"toolchain:\n deno:\n version: '1.40.0'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"node",children:(0,i.jsx)(n.code,{children:"node"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainConfig#node"}),"\n",(0,i.jsxs)(n.p,{children:["Configures Node.js for this project and overrides the top-level ",(0,i.jsx)(n.a,{href:"./toolchain#node",children:(0,i.jsx)(n.code,{children:"node"})})," setting.\nCurrently, only the Node.js version can be overridden per-project, not the package manager."]}),"\n",(0,i.jsx)(n.h4,{id:"version-2",children:(0,i.jsx)(n.code,{children:"version"})}),"\n",(0,i.jsxs)(n.p,{children:["Defines the explicit Node.js ",(0,i.jsx)(n.a,{href:"../concepts/toolchain#version-specification",children:"version specification"})," to\nuse when ",(0,i.jsx)(n.em,{children:"running tasks"})," for this project."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {2,3}',children:"toolchain:\n node:\n version: '12.12.0'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"rust",children:(0,i.jsx)(n.code,{children:"rust"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainConfig#rust"}),"\n",(0,i.jsxs)(n.p,{children:["Configures Rust for this project and overrides the top-level ",(0,i.jsx)(n.a,{href:"./toolchain#rust",children:(0,i.jsx)(n.code,{children:"rust"})})," setting."]}),"\n",(0,i.jsx)(n.h4,{id:"version-3",children:(0,i.jsx)(n.code,{children:"version"})}),"\n",(0,i.jsxs)(n.p,{children:["Defines the explicit Rust\n",(0,i.jsx)(n.a,{href:"../concepts/toolchain#version-specification",children:"version/channel specification"})," to use when ",(0,i.jsx)(n.em,{children:"running\ntasks"})," for this project."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {2,3}',children:"toolchain:\n rust:\n version: '1.68.0'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"typescript",children:(0,i.jsx)(n.code,{children:"typescript"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainConfig#typescript"}),"\n",(0,i.jsx)(n.h4,{id:"disabled",children:(0,i.jsx)(n.code,{children:"disabled"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainTypeScriptConfig#disabled"}),"\n",(0,i.jsxs)(n.p,{children:["Disables ",(0,i.jsx)(n.a,{href:"./toolchain#typescript",children:"TypeScript support"})," entirely for this project. Defaults to\n",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {3}',children:"toolchain:\n typescript:\n disabled: true\n"})}),"\n",(0,i.jsxs)(n.h4,{id:"includeprojectreferencesources",children:[(0,i.jsx)(n.code,{children:"includeProjectReferenceSources"}),(0,i.jsx)(a.Z,{version:"1.17.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainTypeScriptConfig#includeProjectReferenceSources"}),"\n",(0,i.jsxs)(n.p,{children:["Overrides the workspace-level\n",(0,i.jsx)(n.a,{href:"./toolchain#includeprojectreferencesources",children:(0,i.jsx)(n.code,{children:"includeProjectReferenceSources"})})," setting. Defaults to\nundefined."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {3}',children:"toolchain:\n typescript:\n includeProjectReferenceSources: false\n"})}),"\n",(0,i.jsxs)(n.h4,{id:"includesharedtypes",children:[(0,i.jsx)(n.code,{children:"includeSharedTypes"}),(0,i.jsx)(a.Z,{version:"1.17.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainTypeScriptConfig#includeSharedTypes"}),"\n",(0,i.jsxs)(n.p,{children:["Overrides the workspace-level ",(0,i.jsx)(n.a,{href:"./toolchain#includesharedtypes",children:(0,i.jsx)(n.code,{children:"includeSharedTypes"})})," setting.\nDefaults to undefined."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {3}',children:"toolchain:\n typescript:\n includeSharedTypes: false\n"})}),"\n",(0,i.jsx)(n.h4,{id:"routeoutdirtocache",children:(0,i.jsx)(n.code,{children:"routeOutDirToCache"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainTypeScriptConfig#routeOutDirToCache"}),"\n",(0,i.jsxs)(n.p,{children:["Overrides the workspace-level ",(0,i.jsx)(n.a,{href:"./toolchain#routeoutdirtocache",children:(0,i.jsx)(n.code,{children:"routeOutDirToCache"})})," setting.\nDefaults to undefined."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {3}',children:"toolchain:\n typescript:\n routeOutDirToCache: false\n"})}),"\n",(0,i.jsx)(n.h4,{id:"syncprojectreferences",children:(0,i.jsx)(n.code,{children:"syncProjectReferences"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainTypeScriptConfig#syncProjectReferences"}),"\n",(0,i.jsxs)(n.p,{children:["Overrides the workspace-level ",(0,i.jsx)(n.a,{href:"./toolchain#syncprojectreferences",children:(0,i.jsx)(n.code,{children:"syncProjectReferences"})})," setting.\nDefaults to undefined."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {3}',children:"toolchain:\n typescript:\n syncProjectReferences: false\n"})}),"\n",(0,i.jsx)(n.h4,{id:"syncprojectreferencestopaths",children:(0,i.jsx)(n.code,{children:"syncProjectReferencesToPaths"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainTypeScriptConfig#syncProjectReferencesToPaths"}),"\n",(0,i.jsxs)(n.p,{children:["Overrides the workspace-level\n",(0,i.jsx)(n.a,{href:"./toolchain#syncprojectreferencestopaths",children:(0,i.jsx)(n.code,{children:"syncProjectReferencesToPaths"})})," setting. Defaults to\nundefined."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {3}',children:"toolchain:\n typescript:\n syncProjectReferencesToPaths: false\n"})}),"\n",(0,i.jsx)(n.h2,{id:"workspace",children:(0,i.jsx)(n.code,{children:"workspace"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#workspace"}),"\n",(0,i.jsx)(n.h3,{id:"inheritedtasks",children:(0,i.jsx)(n.code,{children:"inheritedTasks"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectWorkspaceConfig#inheritedTasks"}),"\n",(0,i.jsxs)(n.p,{children:["Provides a layer of control when inheriting tasks from ",(0,i.jsx)(n.a,{href:"./tasks",children:(0,i.jsx)(n.code,{children:".moon/tasks.yml"})}),"."]}),"\n",(0,i.jsx)(n.h4,{id:"exclude",children:(0,i.jsx)(n.code,{children:"exclude"})}),"\n",(0,i.jsxs)(n.p,{children:["The optional ",(0,i.jsx)(n.code,{children:"exclude"})," setting permits a project to exclude specific tasks from being inherited. It\naccepts a list of strings, where each string is the name of a global task to exclude."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4}',children:"workspace:\n inheritedTasks:\n # Exclude the inherited `test` task for this project\n exclude: ['test']\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Exclusion is applied after inclusion and before renaming."}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"include",children:(0,i.jsx)(n.code,{children:"include"})}),"\n",(0,i.jsxs)(n.p,{children:["The optional ",(0,i.jsx)(n.code,{children:"include"})," setting permits a project to ",(0,i.jsx)(n.em,{children:"only"})," include specific inherited tasks (works\nlike an allow/white list). It accepts a list of strings, where each string is the name of a global\ntask to include."]}),"\n",(0,i.jsx)(n.p,{children:"When this field is not defined, the project will inherit all tasks from the global project config."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4,7-9}',children:"workspace:\n inheritedTasks:\n # Include *no* tasks (works like a full exclude)\n include: []\n\n # Only include the `lint` and `test` tasks for this project\n include:\n - 'lint'\n - 'test'\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Inclusion is applied before exclusion and renaming."}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"rename",children:(0,i.jsx)(n.code,{children:"rename"})}),"\n",(0,i.jsxs)(n.p,{children:["The optional ",(0,i.jsx)(n.code,{children:"rename"})," setting permits a project to rename the inherited task within the current\nproject. It accepts a map of strings, where the key is the original name (found in the global\nproject config), and the value is the new name to use."]}),"\n",(0,i.jsxs)(n.p,{children:["For example, say we have 2 tasks in the global project config called ",(0,i.jsx)(n.code,{children:"buildPackage"})," and\n",(0,i.jsx)(n.code,{children:"buildApplication"}),", but we only need 1, and since we're an application, we should omit and rename."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4,5}',children:"workspace:\n inheritedTasks:\n exclude: ['buildPackage']\n rename:\n buildApplication: 'build'\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Renaming occurs after inclusion and exclusion."}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(j,{...e})}):j(e)}},32189:(e,n,s)=>{s.d(n,{Z:()=>o});var i=s(83469),t=s(31792),r=s(24246);function o(e){let{to:n}=e;return(0,r.jsx)("a",{href:n,target:"_blank",className:"float-right inline-block",style:{marginTop:"-3em"},children:(0,r.jsx)(t.Z,{icon:i.dT$})})}},9785:(e,n,s)=>{s.d(n,{Z:()=>r});var i=s(9619),t=s(24246);function r(e){let{text:n="Required"}=e;return(0,t.jsx)(i.Z,{text:n,variant:"failure",className:"ml-2"})}},79022:(e,n,s)=>{s.d(n,{Z:()=>r});var i=s(9619),t=s(24246);function r(e){let{header:n,inline:s,updated:r,version:o}=e;return(0,t.jsx)(i.Z,{text:`v${o}`,variant:r?"success":"info",className:n?"absolute right-0 top-1.5":s?"inline-block":"ml-2"})}},9619:(e,n,s)=>{s.d(n,{Z:()=>a});var i=s(40624),t=s(31792),r=s(24246);const o={failure:"bg-red-100 text-red-900",info:"bg-pink-100 text-pink-900",success:"bg-green-100 text-green-900",warning:"bg-orange-100 text-orange-900"};function a(e){let{className:n,icon:s,text:a,variant:l}=e;return(0,r.jsxs)("span",{className:(0,i.Z)("inline-flex items-center px-1 py-0.5 rounded text-xs font-bold uppercase",l?o[l]:"bg-gray-100 text-gray-800",n),children:[s&&(0,r.jsx)(t.Z,{icon:s,className:"mr-1"}),a]})}},71670:(e,n,s)=>{s.d(n,{Z:()=>a,a:()=>o});var i=s(27378);const t={},r=i.createContext(t);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/4ec8a4a9.92b0a7fa.js b/assets/js/4ec8a4a9.92b0a7fa.js
deleted file mode 100644
index 8a90720f76a..00000000000
--- a/assets/js/4ec8a4a9.92b0a7fa.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[50818],{20668:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>d,toc:()=>p});var i=s(24246),t=s(71670),r=s(32189),o=s(9785),l=s(79022);const a={title:"moon.yml",toc_max_heading_level:6},c=void 0,d={id:"config/project",title:"moon.yml",description:"The moon.yml configuration file is not required but can be used to define additional metadata",source:"@site/docs/config/project.mdx",sourceDirName:"config",slug:"/config/project",permalink:"/docs/config/project",draft:!1,unlisted:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/config/project.mdx",tags:[],version:"current",frontMatter:{title:"moon.yml",toc_max_heading_level:6},sidebar:"docs",previous:{title:".moon/tasks...",permalink:"/docs/config/tasks"},next:{title:"template.yml",permalink:"/docs/config/template"}},h={},p=[{value:"dependsOn
",id:"dependson",level:2},{value:"Metadata",id:"metadata",level:2},{value:"id
",id:"id",level:2},{value:"language
",id:"language",level:2},{value:"owners
",id:"owners",level:2},{value:"customGroups
",id:"customgroups",level:3},{value:"defaultOwner
",id:"defaultowner",level:3},{value:"optional
",id:"optional",level:3},{value:"paths
",id:"paths",level:3},{value:"requiredApprovals
",id:"requiredapprovals",level:3},{value:"project
",id:"project",level:2},{value:"channel
",id:"channel",level:3},{value:"description
",id:"description",level:3},{value:"maintainers
",id:"maintainers",level:3},{value:"name
",id:"name",level:3},{value:"owner
",id:"owner",level:3},{value:"stack
",id:"stack",level:2},{value:"tags
",id:"tags",level:2},{value:"type
",id:"type",level:2},{value:"Tasks",id:"tasks",level:2},{value:"env
",id:"env",level:2},{value:"fileGroups
",id:"filegroups",level:2},{value:"platform
",id:"platform",level:2},{value:"tasks
",id:"tasks-1",level:2},{value:"extends
",id:"extends",level:3},{value:"description
",id:"description-1",level:3},{value:"command
",id:"command",level:3},{value:"Special commands",id:"special-commands",level:4},{value:"args
",id:"args",level:3},{value:"deps
",id:"deps",level:3},{value:"Args & env",id:"args--env",level:4},{value:"Optional",id:"optional-1",level:4},{value:"env
",id:"env-1",level:3},{value:"inputs
",id:"inputs",level:3},{value:"local
",id:"local",level:3},{value:"outputs
",id:"outputs",level:3},{value:"platform
",id:"platform-1",level:3},{value:"options
",id:"options",level:3},{value:"affectedFiles
",id:"affectedfiles",level:4},{value:"affectedPassInputs
",id:"affectedpassinputs",level:4},{value:"allowFailure
",id:"allowfailure",level:4},{value:"cache
",id:"cache",level:4},{value:"envFile
",id:"envfile",level:4},{value:"interactive
",id:"interactive",level:4},{value:"mergeArgs
",id:"mergeargs",level:4},{value:"mergeDeps
",id:"mergedeps",level:4},{value:"mergeEnv
",id:"mergeenv",level:4},{value:"mergeInputs
",id:"mergeinputs",level:4},{value:"mergeOutputs
",id:"mergeoutputs",level:4},{value:"outputStyle
",id:"outputstyle",level:4},{value:"persistent
",id:"persistent",level:4},{value:"retryCount
",id:"retrycount",level:4},{value:"runDepsInParallel
",id:"rundepsinparallel",level:4},{value:"runInCI
",id:"runinci",level:4},{value:"runFromWorkspaceRoot
",id:"runfromworkspaceroot",level:4},{value:"shell
",id:"shell",level:4},{value:"unixShell
",id:"unixshell",level:4},{value:"windowsShell
",id:"windowsshell",level:4},{value:"Overrides",id:"overrides",level:2},{value:"toolchain
",id:"toolchain",level:2},{value:"bun
",id:"bun",level:3},{value:"version
",id:"version",level:4},{value:"deno
",id:"deno",level:3},{value:"version
",id:"version-1",level:4},{value:"node
",id:"node",level:3},{value:"version
",id:"version-2",level:4},{value:"rust
",id:"rust",level:3},{value:"version
",id:"version-3",level:4},{value:"typescript
",id:"typescript",level:3},{value:"disabled
",id:"disabled",level:4},{value:"includeProjectReferenceSources
",id:"includeprojectreferencesources",level:4},{value:"includeSharedTypes
",id:"includesharedtypes",level:4},{value:"routeOutDirToCache
",id:"routeoutdirtocache",level:4},{value:"syncProjectReferences
",id:"syncprojectreferences",level:4},{value:"syncProjectReferencesToPaths
",id:"syncprojectreferencestopaths",level:4},{value:"workspace
",id:"workspace",level:2},{value:"inheritedTasks
",id:"inheritedtasks",level:3},{value:"exclude
",id:"exclude",level:4},{value:"include
",id:"include",level:4},{value:"rename
",id:"rename",level:4}];function j(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"moon.yml"})," configuration file ",(0,i.jsx)(n.em,{children:"is not required"})," but can be used to define additional metadata\nfor a project, override inherited tasks, and more at the project-level. When used, this file must\nexist in a project's root, as configured in ",(0,i.jsx)(n.a,{href:"./workspace#projects",children:(0,i.jsx)(n.code,{children:"projects"})}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"$schema: 'https://moonrepo.dev/schemas/project.json'\n"})}),"\n",(0,i.jsx)(n.h2,{id:"dependson",children:(0,i.jsx)(n.code,{children:"dependsOn"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#dependsOn"}),"\n",(0,i.jsxs)(n.p,{children:["Explicitly defines ",(0,i.jsx)(n.em,{children:"other"})," projects that ",(0,i.jsx)(n.em,{children:"this"})," project depends on, primarily when generating the\nproject and task graphs. The most common use case for this is building those projects ",(0,i.jsx)(n.em,{children:"before"}),"\nbuilding this one. When defined, this setting requires an array of project names, which are the keys\nfound in the ",(0,i.jsx)(n.a,{href:"./workspace#projects",children:(0,i.jsx)(n.code,{children:"projects"})})," map."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"dependsOn:\n - 'apiClients'\n - 'designSystem'\n"})}),"\n",(0,i.jsxs)(n.p,{children:["A dependency object can also be defined, where a specific ",(0,i.jsx)(n.code,{children:"scope"}),' can be assigned, which accepts\n"production" (default), "development", "build", or "peer".']}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"dependsOn:\n - id: 'apiClients'\n scope: 'production'\n - id: 'designSystem'\n scope: 'peer'\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["Learn more about ",(0,i.jsx)(n.a,{href:"../concepts/project#dependencies",children:"implicit and explicit dependencies"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"metadata",children:"Metadata"}),"\n",(0,i.jsxs)(n.h2,{id:"id",children:[(0,i.jsx)(n.code,{children:"id"}),(0,i.jsx)(l.Z,{version:"1.18.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#id"}),"\n",(0,i.jsxs)(n.p,{children:["Overrides the name (identifier) of the project, which was configured in or derived from the\n",(0,i.jsx)(n.a,{href:"./workspace#projects",children:(0,i.jsx)(n.code,{children:"projects"})})," setting in ",(0,i.jsx)(n.a,{href:"./workspace",children:(0,i.jsx)(n.code,{children:".moon/workspace.yml"})}),". This setting is\nuseful when using glob based project location, and want to avoid using the folder name as the\nproject name."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"id: 'custom-id'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsx)(n.p,{children:"All references to the project must use the new identifier, including project and task dependencies."})}),"\n",(0,i.jsx)(n.h2,{id:"language",children:(0,i.jsx)(n.code,{children:"language"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#language"}),"\n",(0,i.jsxs)(n.p,{children:["The primary programming language the project is written in. This setting is required for\n",(0,i.jsx)(n.a,{href:"./tasks",children:"task inheritance"}),", editor extensions, and more. Supports the following values:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"bash"})," - A ",(0,i.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Bash_(Unix_shell)",children:"Bash"})," based project (Unix only)."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"batch"})," - A ",(0,i.jsx)(n.a,{href:"https://en.wikibooks.org/wiki/Windows_Batch_Scripting",children:"Batch"}),"/PowerShell based\nproject (Windows only)."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"go"})," - A ",(0,i.jsx)(n.a,{href:"https://go.dev/",children:"Go"})," based project."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"javascript"})," - A ",(0,i.jsx)(n.a,{href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript",children:"JavaScript"})," based\nproject."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"php"})," - A ",(0,i.jsx)(n.a,{href:"https://www.php.net",children:"PHP"})," based project."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"python"})," - A ",(0,i.jsx)(n.a,{href:"https://www.python.org/",children:"Python"})," based project."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ruby"})," - A ",(0,i.jsx)(n.a,{href:"https://www.ruby-lang.org/en/",children:"Ruby"})," based project."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"rust"})," - A ",(0,i.jsx)(n.a,{href:"https://www.rust-lang.org/",children:"Rust"})," based project."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"typescript"})," - A ",(0,i.jsx)(n.a,{href:"https://www.typescriptlang.org/",children:"TypeScript"})," based project."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"unknown"})," (default) - When not configured or inferred."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"*"})," - A custom language. Values will be converted to kebab-case."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"language: 'javascript'\n\n# Custom\nlanguage: 'kotlin'\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"For convenience, when this setting is not defined, moon will attempt to detect the language based\non configuration files found in the project root. This only applies to non-custom languages!"}),"\n"]}),"\n",(0,i.jsxs)(n.h2,{id:"owners",children:[(0,i.jsx)(n.code,{children:"owners"}),(0,i.jsx)(l.Z,{version:"1.8.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#owners"}),"\n",(0,i.jsx)(n.p,{children:"Defines ownership of source code within the current project, by mapping file system paths to owners.\nAn owner is either a user, team, or group."}),"\n",(0,i.jsxs)(n.p,{children:["Currently supports\n",(0,i.jsx)(n.a,{href:"https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners",children:"GitHub"}),",\n",(0,i.jsx)(n.a,{href:"https://docs.gitlab.com/ee/user/project/codeowners/reference.html",children:"GitLab"}),", and\n",(0,i.jsx)(n.a,{href:"https://marketplace.atlassian.com/apps/1218598/code-owners-for-bitbucket?tab=overview&hosting=cloud",children:"Bitbucket"}),"\n(via app)."]}),"\n",(0,i.jsxs)(n.h3,{id:"customgroups",children:[(0,i.jsx)(n.code,{children:"customGroups"}),(0,i.jsx)(o.Z,{text:"Bitbucket"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/OwnersConfig#customGroups"}),"\n",(0,i.jsxs)(n.p,{children:["When using the\n",(0,i.jsx)(n.a,{href:"https://marketplace.atlassian.com/apps/1218598/code-owners-for-bitbucket?tab=overview&hosting=cloud",children:"Code Owners for Bitbucket"}),"\napp, this setting provides a way to define custom groups that will be injected at the top of the\n",(0,i.jsx)(n.code,{children:"CODEOWNERS"})," file. These groups ",(0,i.jsx)(n.em,{children:"must"})," be unique across all projects."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {2,3}',children:"owners:\n customGroups:\n '@@@backend': ['@\"user name\"', '@@team']\n"})}),"\n",(0,i.jsx)(n.h3,{id:"defaultowner",children:(0,i.jsx)(n.code,{children:"defaultOwner"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/OwnersConfig#defaultOwner"}),"\n",(0,i.jsxs)(n.p,{children:["The default owner for all ",(0,i.jsx)(n.a,{href:"#paths",children:(0,i.jsx)(n.code,{children:"paths"})}),". This setting is optional in some cases but helps to\navoid unnecessary repetition."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {2}',children:"owners:\n defaultOwner: '@frontend'\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"optional",children:[(0,i.jsx)(n.code,{children:"optional"}),(0,i.jsx)(o.Z,{text:"GitLab"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/OwnersConfig#optional"}),"\n",(0,i.jsxs)(n.p,{children:["For GitLab, marks the project's\n",(0,i.jsx)(n.a,{href:"https://docs.gitlab.com/ee/user/project/codeowners/reference.html#optional-sections",children:"code owners section"}),"\nas optional. Defaults to ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {2}',children:"owners:\n optional: true\n"})}),"\n",(0,i.jsx)(n.h3,{id:"paths",children:(0,i.jsx)(n.code,{children:"paths"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/OwnersConfig#paths"}),"\n",(0,i.jsxs)(n.p,{children:["The primary setting for defining ownership of source code within the current project. This setting\nsupports 2 formats, the first being a list of file paths relative from the current project. This\nformat requires ",(0,i.jsx)(n.a,{href:"#defaultowner",children:(0,i.jsx)(n.code,{children:"defaultOwner"})})," to be defined, and only supports 1 owner for every\npath (the default owner)."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {3-6}',children:"owners:\n defaultOwner: '@frontend'\n paths:\n - '**/*.ts'\n - '**/*.tsx'\n - '*.config.js'\n"})}),"\n",(0,i.jsxs)(n.p,{children:["The second format provides far more granularity, allowing for multiple owners per path. This format\nrequires a map, where the key is a file path relative from the current project, and the value is a\nlist of owners. Paths with an empty list of owners will fallback to ",(0,i.jsx)(n.a,{href:"#defaultowner",children:(0,i.jsx)(n.code,{children:"defaultOwner"})}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {3-6}',children:"owners:\n defaultOwner: '@frontend'\n paths:\n '**/*.rs': ['@backend']\n '**/*.js': []\n '*.config.js': ['@frontend', '@frontend-infra']\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"The syntax for owners is dependent on the provider you are using for version control (GitHub,\nGitLab, Bitbucket). moon provides no validation or guarantees that these are correct."}),"\n"]}),"\n",(0,i.jsxs)(n.h3,{id:"requiredapprovals",children:[(0,i.jsx)(n.code,{children:"requiredApprovals"}),(0,i.jsx)(o.Z,{text:"Bitbucket / GitLab"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/OwnersConfig#requiredApprovals"}),"\n",(0,i.jsxs)(n.p,{children:["Requires a specific number of approvals for a pull/merge request to be satisfied. Defaults to ",(0,i.jsx)(n.code,{children:"1"}),"."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["For Bitbucket, defines the\n",(0,i.jsxs)(n.a,{href:"https://docs.mibexsoftware.com/codeowners/merge-checks#MergeChecks-2.MergeChecks:HowmanyoftheseCodeOwnersneedtoapprovebeforeapullrequestcanbemerged?",children:[(0,i.jsx)(n.code,{children:"Check()"})," condition"]}),"\nwhen using a ",(0,i.jsx)(n.a,{href:"#defaultowner",children:(0,i.jsx)(n.code,{children:"defaultOwner"})}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["For GitLab, defines a requirement on the\n",(0,i.jsx)(n.a,{href:"https://docs.gitlab.com/ee/user/project/codeowners/reference.html#sections-requiring-multiple-approvals",children:"code owners section"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {2}',children:"owners:\n requiredApprovals: 2\n"})}),"\n",(0,i.jsx)(n.h2,{id:"project",children:(0,i.jsx)(n.code,{children:"project"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#project"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"project"})," setting defines metadata about the project itself."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"project:\n name: 'moon'\n description: 'A monorepo management tool.'\n channel: '#moon'\n owner: 'infra.platform'\n maintainers: ['miles.johnson']\n"})}),"\n",(0,i.jsxs)(n.p,{children:["The information listed within ",(0,i.jsx)(n.code,{children:"project"})," is purely informational and primarily displayed within the\nCLI. However, this setting exists for you, your team, and your company, as a means to identify and\norganize all projects. Feel free to build your own tooling around these settings!"]}),"\n",(0,i.jsx)(n.h3,{id:"channel",children:(0,i.jsx)(n.code,{children:"channel"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectMetadataConfig#channel"}),"\n",(0,i.jsx)(n.p,{children:"The Slack, Discord, Teams, IRC, etc channel name (with leading #) in which to discuss the project."}),"\n",(0,i.jsxs)(n.h3,{id:"description",children:[(0,i.jsx)(n.code,{children:"description"}),(0,i.jsx)(o.Z,{})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectMetadataConfig#description"}),"\n",(0,i.jsx)(n.p,{children:"A description of what the project does and aims to achieve. Be as descriptive as possible, as this\nis the kind of information search engines would index on."}),"\n",(0,i.jsx)(n.h3,{id:"maintainers",children:(0,i.jsx)(n.code,{children:"maintainers"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectMetadataConfig#maintainers"}),"\n",(0,i.jsx)(n.p,{children:"A list of people/developers that maintain the project, review code changes, and can provide support.\nCan be a name, email, LDAP name, GitHub username, etc, the choice is yours."}),"\n",(0,i.jsx)(n.h3,{id:"name",children:(0,i.jsx)(n.code,{children:"name"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectMetadataConfig#name"}),"\n",(0,i.jsxs)(n.p,{children:["A human readable name of the project. This is ",(0,i.jsx)(n.em,{children:"different"})," from the unique project name configured in\n",(0,i.jsx)(n.a,{href:"./workspace#projects",children:(0,i.jsx)(n.code,{children:"projects"})}),"."]}),"\n",(0,i.jsx)(n.h3,{id:"owner",children:(0,i.jsx)(n.code,{children:"owner"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectMetadataConfig#owner"}),"\n",(0,i.jsxs)(n.p,{children:["The team or organization that owns the project. Can be a title, LDAP name, GitHub team, etc. We\nsuggest ",(0,i.jsx)(n.em,{children:"not"})," listing people/developers as the owner, use ",(0,i.jsx)(n.a,{href:"#maintainers",children:"maintainers"})," instead."]}),"\n",(0,i.jsxs)(n.h2,{id:"stack",children:[(0,i.jsx)(n.code,{children:"stack"}),(0,i.jsx)(l.Z,{version:"1.22.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#stack"}),"\n",(0,i.jsx)(n.p,{children:"The technology stack this project belongs to, primarily for categorization. Supports the following\nvalues:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"frontend"})," - Client-side user interfaces, etc."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"backend"})," - Server-side APIs, database layers, etc."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"infrastructure"})," - Cloud/server infrastructure, Docker, etc."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"systems"})," - Low-level systems programming."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"unknown"})," (default) - When not configured."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"stack: 'frontend'\n"})}),"\n",(0,i.jsx)(n.h2,{id:"tags",children:(0,i.jsx)(n.code,{children:"tags"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#tags"}),"\n",(0,i.jsxs)(n.p,{children:["Tags are a simple mechanism for categorizing projects. They can be used to group projects together\nfor ",(0,i.jsx)(n.a,{href:"../commands/query/projects",children:"easier querying"}),", enforcing of\n",(0,i.jsx)(n.a,{href:"./workspace#constraints",children:"project boundaries and constraints"}),",\n",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance",children:"task inheritance"}),", and more."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"tags:\n - 'react'\n - 'prisma'\n"})}),"\n",(0,i.jsx)(n.h2,{id:"type",children:(0,i.jsx)(n.code,{children:"type"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#type"}),"\n",(0,i.jsx)(n.p,{children:"The type of project. Supports the following values:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"application"})," - An application of any kind."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"automation"})," - An automated testing suite, like E2E, integration, or visual tests.","\n",(0,i.jsx)(l.Z,{version:"1.16.0"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"configuration"})," - Configuration files or infrastructure.","\n",(0,i.jsx)(l.Z,{version:"1.22.0"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"library"})," - A self-contained, shareable, and publishable set of code."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"scaffolding"})," - Templates or generators for scaffolding.","\n",(0,i.jsx)(l.Z,{version:"1.22.0"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"tool"})," - An internal tool, one-off script, etc."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"unknown"})," (default) - When not configured."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"type: 'application'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["The project type is used in ",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance",children:"task inheritance"}),",\n",(0,i.jsx)(n.a,{href:"./workspace#constraints",children:"constraints and boundaries"}),", editor extensions, and more!"]})}),"\n",(0,i.jsx)(n.h2,{id:"tasks",children:"Tasks"}),"\n",(0,i.jsx)(n.h2,{id:"env",children:(0,i.jsx)(n.code,{children:"env"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#env"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"env"})," field is map of strings that are passed as environment variables to ",(0,i.jsx)(n.em,{children:"all tasks"})," within the\ncurrent project. Project-level variables will not override task-level variables of the same name."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"env:\n NODE_ENV: 'production'\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["View the task ",(0,i.jsx)(n.a,{href:"#env-1",children:(0,i.jsx)(n.code,{children:"env"})})," setting for more usage examples and information."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"filegroups",children:(0,i.jsx)(n.code,{children:"fileGroups"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#fileGroups"}),"\n",(0,i.jsxs)(n.p,{children:["Defines ",(0,i.jsx)(n.a,{href:"../concepts/file-group",children:"file groups"})," to be used by local tasks. By default, this setting\n",(0,i.jsx)(n.em,{children:"is not required"})," for the following reasons:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"File groups are an optional feature, and are designed for advanced use cases."}),"\n",(0,i.jsxs)(n.li,{children:["File groups defined in ",(0,i.jsx)(n.a,{href:"./tasks",children:(0,i.jsx)(n.code,{children:".moon/tasks.yml"})})," will be inherited by all projects."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["When defined this setting requires a map, where the key is the file group name, and the value is a\nlist of ",(0,i.jsx)(n.a,{href:"../concepts/file-pattern",children:"globs or file paths"}),", or environment variables. Globs and paths\nare ",(0,i.jsx)(n.a,{href:"../concepts/file-pattern#project-relative",children:"relative to a project"})," (even when defined\n",(0,i.jsx)(n.a,{href:"./tasks",children:"globally"}),")."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"fileGroups:\n configs:\n - '*.config.{js,cjs,mjs}'\n - '*.json'\n sources:\n - 'src/**/*'\n - 'types/**/*'\n tests:\n - 'tests/**/*'\n - '**/__tests__/**/*'\n assets:\n - 'assets/**/*'\n - 'images/**/*'\n - 'static/**/*'\n - '**/*.{scss,css}'\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"The code snippet above is merely an example of file groups. Feel free to use those groups as-is,\nmodify the glob lists, add and remove groups, or implement completely new groups. The choice is\nyours!"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"platform",children:(0,i.jsx)(n.code,{children:"platform"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#platform"}),"\n",(0,i.jsxs)(n.p,{children:["The default ",(0,i.jsx)(n.a,{href:"#platform-1",children:(0,i.jsx)(n.code,{children:"platform"})})," for all task's within the current project. When a task's\n",(0,i.jsx)(n.code,{children:"platform"})," has ",(0,i.jsx)(n.em,{children:"not been"})," explicitly configured, the platform will fallback to this configured\nvalue, otherwise the platform will be detected from the project's environment."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"platform: 'node'\n"})}),"\n",(0,i.jsx)(n.h2,{id:"tasks-1",children:(0,i.jsx)(n.code,{children:"tasks"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#tasks"}),"\n",(0,i.jsxs)(n.p,{children:["Tasks are actions that are ran within the context of a ",(0,i.jsx)(n.a,{href:"../concepts/project",children:"project"}),", and commonly\nwrap an npm binary or system command. This setting requires a map, where the key is a unique name\nfor the task, and the value is an object of task parameters."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"tasks:\n format:\n command: 'prettier'\n lint:\n command: 'eslint'\n test:\n command: 'jest'\n typecheck:\n command: 'tsc'\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"extends",children:[(0,i.jsx)(n.code,{children:"extends"}),(0,i.jsx)(l.Z,{version:"1.12.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#extends"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"extends"})," field can be used to extend the settings from a sibling task within the same project,\nor ",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance",children:"inherited from the global scope"}),". This is useful for composing\nsimilar tasks with different arguments or options."]}),"\n",(0,i.jsxs)(n.p,{children:["When extending another task, the same\n",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance#merge-strategies",children:"merge strategies"})," used for inheritance are applied."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {8}',children:"tasks:\n lint:\n command: 'eslint .'\n inputs:\n - 'src/**/*'\n\n lint-fix:\n extends: 'lint'\n args: '--fix'\n local: true\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"description-1",children:[(0,i.jsx)(n.code,{children:"description"}),(0,i.jsx)(l.Z,{version:"1.22.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#description"}),"\n",(0,i.jsxs)(n.p,{children:["A human-readable description of what the task does. This information is displayed within the\n",(0,i.jsx)(n.a,{href:"../commands/project",children:(0,i.jsx)(n.code,{children:"moon project"})})," and ",(0,i.jsx)(n.a,{href:"../commands/task",children:(0,i.jsx)(n.code,{children:"moon task"})})," commands."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {3}',children:"tasks:\n build:\n description: 'Builds the project using Vite'\n command: 'vite build'\n"})}),"\n",(0,i.jsxs)(n.h3,{id:"command",children:[(0,i.jsx)(n.code,{children:"command"}),(0,i.jsx)(o.Z,{})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#command"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"command"})," field is the command line to run for the task, including the command name (must be\nfirst) and any optional ",(0,i.jsx)(n.a,{href:"#args",children:"arguments"}),". This field is required when ",(0,i.jsx)(n.em,{children:"not"})," inheriting a global\ntask of the same name."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4,6-9}',children:"tasks:\n format:\n # Using a string\n command: 'prettier --check .'\n # Using an array\n command:\n - 'prettier'\n - '--check'\n - '.'\n"})}),"\n",(0,i.jsxs)(n.p,{children:["By default a task assumes the command name is an npm binary, and if you'd like to reference a system\ncommand, you'll also need to set the ",(0,i.jsx)(n.a,{href:"#platform",children:(0,i.jsx)(n.code,{children:"platform"})}),' to "system". We do our best to\nautomatically detect this, but it\'s not accurate in all scenarios.']}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"tasks:\n clean:\n command: 'rm -rf ./dist'\n platform: 'system'\n"})}),"\n",(0,i.jsx)(n.h4,{id:"special-commands",children:"Special commands"}),"\n",(0,i.jsx)(n.p,{children:"For interoperability reasons, the following command names have special handling."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"noop"}),", ",(0,i.jsx)(n.code,{children:"no-op"}),", ",(0,i.jsx)(n.code,{children:"nop"}),' - Marks the task as a "no operation". Will not execute a command in the\naction pipeline but can define dependencies.']}),"\n",(0,i.jsxs)(n.li,{children:["When ",(0,i.jsx)(n.code,{children:"platform"}),' is "bun":',"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"bun"}),", ",(0,i.jsx)(n.code,{children:"bunx"})," - Uses the binaries from the toolchain."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["When ",(0,i.jsx)(n.code,{children:"platform"}),' is "deno":',"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Will execute with ",(0,i.jsx)(n.code,{children:"deno"})," binary."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["When ",(0,i.jsx)(n.code,{children:"platform"}),' is "node":',"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"node"}),", ",(0,i.jsx)(n.code,{children:"npm"}),", ",(0,i.jsx)(n.code,{children:"pnpm"}),", ",(0,i.jsx)(n.code,{children:"yarn"})," - Uses the binaries from the toolchain."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["When ",(0,i.jsx)(n.code,{children:"platform"}),' is "rust":',"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Will execute with ",(0,i.jsx)(n.code,{children:"cargo"})," binary."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"args",children:(0,i.jsx)(n.code,{children:"args"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#args"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"args"})," field is a collection of ",(0,i.jsx)(n.em,{children:"additional"})," arguments to pass to the command line when\nexecuting the task. This field exists purely to provide arguments for\n",(0,i.jsx)(n.a,{href:"./tasks#tasks",children:"inherited tasks"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"This setting can be defined using a string, or an array of strings. We suggest using arrays when\ndealing with many args, or the args string cannot be parsed easily."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5,7-10}',children:"tasks:\n test:\n command: 'jest'\n # Using a string\n args: '--color --maxWorkers 3'\n # Using an array\n args:\n - '--color'\n - '--maxWorkers'\n - '3'\n"})}),"\n",(0,i.jsxs)(n.p,{children:["However, for the array approach to work correctly, each argument ",(0,i.jsx)(n.em,{children:"must"})," be its own distinct item,\nincluding argument values. For example:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"tasks:\n test:\n command: 'jest'\n args:\n # Valid\n - '--maxWorkers'\n - '3'\n # Also valid\n - '--maxWorkers=3'\n # Invalid\n - '--maxWorkers 3'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"deps",children:(0,i.jsx)(n.code,{children:"deps"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#deps"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"deps"})," field is a list of other tasks (known as ",(0,i.jsx)(n.a,{href:"../concepts/target",children:"targets"}),"), either within\nthis project or found in another project, that will be executed ",(0,i.jsx)(n.em,{children:"before"})," this task. It achieves this\nby generating a directed task graph based on the project graph."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4-8}',children:"tasks:\n build:\n command: 'webpack'\n deps:\n - 'apiClients:build'\n - 'designSystem:build'\n # A task within the current project\n - 'codegen'\n"})}),"\n",(0,i.jsx)(n.h4,{id:"args--env",children:"Args & env"}),"\n",(0,i.jsxs)(n.p,{children:["Furthermore, for each dependency target, you can configure additional command line arguments and\nenvironment variables that'll be passed to the dependent task when it is ran. The ",(0,i.jsx)(n.code,{children:"args"})," field\nsupports a string or a list of strings, while ",(0,i.jsx)(n.code,{children:"env"})," is an object of key-value pairs."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4-8}',children:"tasks:\n build:\n command: 'webpack'\n deps:\n - target: 'apiClients:build'\n args: '--env production'\n env:\n NODE_ENV: 'production'\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["Dependencies of inherited tasks will be excluded and renamed according to the\n",(0,i.jsx)(n.a,{href:"#inheritedtasks",children:(0,i.jsx)(n.code,{children:"workspace.inheritedTasks"})})," setting. This process ",(0,i.jsx)(n.em,{children:"only"})," uses filters from the\ncurrent project, and not filters from dependent projects. Furthermore, ",(0,i.jsx)(n.code,{children:"args"})," and ",(0,i.jsx)(n.code,{children:"env"})," are not\ndeeply merged."]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"optional-1",children:"Optional"}),"\n",(0,i.jsxs)(n.p,{children:["By default, all dependencies are required to exist when tasks are being built and expanded, but this\nisn't always true when dealing with composition and inheritance. For dependencies that may not exist\nbased on what's inherited, you can mark it as ",(0,i.jsx)(n.code,{children:"optional"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4-6}',children:"tasks:\n build:\n command: 'webpack'\n deps:\n - target: 'apiClients:build'\n optional: true\n"})}),"\n",(0,i.jsx)(n.h3,{id:"env-1",children:(0,i.jsx)(n.code,{children:"env"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#env"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"env"})," field is map of strings that are passed as environment variables when running the command.\nVariables defined here will take precedence over those loaded with ",(0,i.jsx)(n.a,{href:"#envfile",children:(0,i.jsx)(n.code,{children:"envFile"})}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4,5}',children:"tasks:\n build:\n command: 'webpack'\n env:\n NODE_ENV: 'production'\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Variables also support substitution using the syntax ",(0,i.jsx)(n.code,{children:"${VAR_NAME}"}),". When using substitution, only\nvariables in the current process can be referenced, and not those currently defined in ",(0,i.jsx)(n.code,{children:"env"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4,5}',children:"tasks:\n build:\n command: 'webpack'\n env:\n APP_TARGET: '${REGION}-${ENVIRONMENT}'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"inputs",children:(0,i.jsx)(n.code,{children:"inputs"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#inputs"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"inputs"})," field is a list of sources that calculate whether to execute this task based on the\nenvironment and files that have been touched since the last time the task has been ran. If ",(0,i.jsx)(n.em,{children:"not"}),"\ndefined or inherited, then all files within a project are considered an input (",(0,i.jsx)(n.code,{children:"**/*"}),")."]}),"\n",(0,i.jsx)(n.p,{children:"Inputs support the following source types:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Environment variables (must start with a ",(0,i.jsx)(n.code,{children:"$"}),")"]}),"\n",(0,i.jsxs)(n.li,{children:["Environment variable wildcards (must start with a ",(0,i.jsx)(n.code,{children:"$"})," and contain ",(0,i.jsx)(n.code,{children:"*"}),")","\n",(0,i.jsx)(l.Z,{version:"1.22.0"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["Files, folders, and globs\n(",(0,i.jsx)(n.a,{href:"../concepts/file-pattern#project-relative",children:"project and workspace relative file patterns"}),")"]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4-12}',children:"tasks:\n lint:\n command: 'eslint'\n inputs:\n # Config files anywhere within the project\n - '**/.eslintignore'\n - '**/.eslintrc.js'\n # Config files at the workspace root\n - '/.eslintignore'\n - '/.eslintrc.js'\n # Environment variables\n - '$ESLINT_CACHE'\n - '$ESLINT_*'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"caution",children:(0,i.jsxs)(n.p,{children:["When using an environment variable, we assume ",(0,i.jsx)(n.em,{children:"it's not defined"})," by default, and will trigger an\naffected state when it ",(0,i.jsx)(n.em,{children:"is"})," defined. If the environment variable always exists, then the task will\nalways run and bypass the cache."]})}),"\n",(0,i.jsx)(n.admonition,{type:"danger",children:(0,i.jsxs)(n.p,{children:["When using globs, be aware that files that match the glob, but are ignored via ",(0,i.jsx)(n.code,{children:".gitignore"})," (or\nsimilar), will ",(0,i.jsx)(n.em,{children:"not"})," be considered an input. To work around this, use explicit file inputs."]})}),"\n",(0,i.jsx)(n.h3,{id:"local",children:(0,i.jsx)(n.code,{children:"local"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#local"}),"\n",(0,i.jsxs)(n.p,{children:["Marks the task as local only. This should primarily be enabled for long-running or never-ending\ntasks, like development servers and watch mode. Defaults to ",(0,i.jsx)(n.code,{children:"true"}),' if the task name is "dev",\n"start", or "serve", and ',(0,i.jsx)(n.code,{children:"false"})," otherwise."]}),"\n",(0,i.jsx)(n.p,{children:"This is a convenience setting for local development that sets the following task options:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#cache",children:(0,i.jsx)(n.code,{children:"cache"})})," -> Turned off"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#outputstyle",children:(0,i.jsx)(n.code,{children:"outputStyle"})}),' -> Set to "stream"']}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#persistent",children:(0,i.jsx)(n.code,{children:"persistent"})})," -> Turned on"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#runinci",children:(0,i.jsx)(n.code,{children:"runInCI"})})," -> Turned off"]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n dev:\n command: 'webpack server'\n local: true\n"})}),"\n",(0,i.jsx)(n.h3,{id:"outputs",children:(0,i.jsx)(n.code,{children:"outputs"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#outputs"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"outputs"})," field is a list of ",(0,i.jsx)(n.a,{href:"../concepts/file-pattern#project-relative",children:"files and folders"})," that\nare ",(0,i.jsx)(n.em,{children:"created"})," as a result of executing this task, typically from a build or compilation related\ntask. Outputs are necessary for ",(0,i.jsx)(n.a,{href:"../concepts/cache",children:"incremental caching and hydration"}),". If you'd\nprefer to avoid that functionality, omit this field."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4-6}',children:"tasks:\n build:\n command: 'webpack'\n outputs:\n # Relative from project root\n - 'build/'\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Globs can also be used if you'd like to restrict which files are cached. For example, when building\na JavaScript project, you may want to include ",(0,i.jsx)(n.code,{children:".js"})," files, but exclude ",(0,i.jsx)(n.code,{children:".map"})," and other files."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4-6}',children:"tasks:\n build:\n command: 'webpack'\n outputs:\n - 'build/**/*.js'\n - '!build/internal.js'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"caution",children:(0,i.jsxs)(n.p,{children:["When using globs and moon hydrates an output (a cache hit), all files not matching the glob will be\n",(0,i.jsx)(n.strong,{children:"deleted"}),". Ensure that all files critical for the build to function correctly are included."]})}),"\n",(0,i.jsx)(n.h3,{id:"platform-1",children:(0,i.jsx)(n.code,{children:"platform"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#platform"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"platform"})," field defines the platform (language runtime) the command runs on, where to locate\nits executable, and which tool to execute it with. By default moon will set to a value based on the\nproject's ",(0,i.jsx)(n.a,{href:"#language",children:(0,i.jsx)(n.code,{children:"language"})})," or default ",(0,i.jsx)(n.a,{href:"#platform",children:(0,i.jsx)(n.code,{children:"platform"})}),"."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"bun"})," - Command is a binary within ",(0,i.jsx)(n.code,{children:"node_modules"})," and will be executed with Bun.","\n",(0,i.jsx)(l.Z,{version:"1.17.0"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"deno"})," - Command is executed with Deno, or is a Deno binary located in ",(0,i.jsx)(n.code,{children:"~/.deno/bin"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"node"})," - Command is a binary within ",(0,i.jsx)(n.code,{children:"node_modules"})," and will be executed with Node.js."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"rust"})," - Command is executed with Cargo, or is a Cargo binary located in ",(0,i.jsx)(n.code,{children:"~/.cargo/bin"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"system"})," - Command is expected to exist within the system's environment / user's shell."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"unknown"})," - When not configured or inferred."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4}',children:"tasks:\n env:\n command: 'printenv'\n platform: 'system'\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["This field exists because of our ",(0,i.jsx)(n.a,{href:"../concepts/toolchain",children:"toolchain"}),", and moon ensuring the correct\ncommand is ran."]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"options",children:(0,i.jsx)(n.code,{children:"options"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskConfig#options"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"options"})," field is an object of configurable options that can be used to modify the task and its\nexecution. The following fields can be provided, with merge related fields supporting all\n",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance#merge-strategies",children:"merge strategies"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml"',children:"tasks:\n typecheck:\n command: 'tsc --noEmit'\n options:\n mergeArgs: 'replace'\n runFromWorkspaceRoot: true\n"})}),"\n",(0,i.jsx)(n.h4,{id:"affectedfiles",children:(0,i.jsx)(n.code,{children:"affectedFiles"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#affectedFiles"}),"\n",(0,i.jsxs)(n.p,{children:["When enabled and the ",(0,i.jsxs)(n.a,{href:"../run-task#running-based-on-affected-files-only",children:[(0,i.jsx)(n.code,{children:"--affected"})," option"]})," is\nprovided, all affected files that match this task's ",(0,i.jsx)(n.a,{href:"#inputs",children:(0,i.jsx)(n.code,{children:"inputs"})})," will be passed as relative\nfile paths as command line arguments, and as a ",(0,i.jsx)(n.code,{children:"MOON_AFFECTED_FILES"})," environment variable."]}),"\n",(0,i.jsxs)(n.p,{children:["If there are no affected files, ",(0,i.jsx)(n.code,{children:"."})," (current directory) will be passed instead for arguments, and an\nempty value for the environment variable. This functionality can be changed with the\n",(0,i.jsx)(n.a,{href:"#affected-pass-inputs",children:(0,i.jsx)(n.code,{children:"affectedPassInputs"})})," setting."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5,7,9}',children:"tasks:\n lint:\n command: 'eslint'\n options:\n affectedFiles: true\n # Only pass args\n affectedFiles: 'args'\n # Only set env var\n affectedFiles: 'env'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"caution",children:(0,i.jsxs)(n.p,{children:["When using this option, ensure that explicit files or ",(0,i.jsx)(n.code,{children:"."})," ",(0,i.jsx)(n.em,{children:"are not present"})," in the ",(0,i.jsx)(n.a,{href:"#args",children:(0,i.jsx)(n.code,{children:"args"})}),"\nlist. Furthermore, this functionality will only work if the task's command supports an arbitrary\nlist of files being passed as arguments."]})}),"\n",(0,i.jsxs)(n.h4,{id:"affectedpassinputs",children:[(0,i.jsx)(n.code,{children:"affectedPassInputs"}),(0,i.jsx)(l.Z,{version:"1.22.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#affectedPassInputs"}),"\n",(0,i.jsxs)(n.p,{children:["When ",(0,i.jsx)(n.a,{href:"#affectedfiles",children:(0,i.jsx)(n.code,{children:"affectedFiles"})})," is enabled, and no affected files are found, moon will pass\n",(0,i.jsx)(n.code,{children:"."})," as an argument. For the most part, this works, but if you'd like to ",(0,i.jsx)(n.em,{children:"not"})," pass the entire\ndirectory (and everything in it), and only pass the configured ",(0,i.jsx)(n.a,{href:"#inputs",children:(0,i.jsx)(n.code,{children:"inputs"})})," instead, then you\ncan enable this setting."]}),"\n",(0,i.jsx)(n.p,{children:"When enabled, moon will resolve all input globs to literal file paths, and pass them as relative\narguments."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5,6}',children:"tasks:\n lint:\n command: 'eslint'\n options:\n affectedFiles: true\n affectedPassInputs: true\n"})}),"\n",(0,i.jsxs)(n.h4,{id:"allowfailure",children:[(0,i.jsx)(n.code,{children:"allowFailure"}),(0,i.jsx)(l.Z,{version:"1.13.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#allowFailure"}),"\n",(0,i.jsx)(n.p,{children:"Allows a task to fail without failing the entire pipeline. When enabled, the following changes\noccur:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Other tasks ",(0,i.jsx)(n.em,{children:"cannot"})," depend on this task, as we can't ensure it's side-effect free."]}),"\n",(0,i.jsxs)(n.li,{children:["For ",(0,i.jsx)(n.a,{href:"../commands/run",children:(0,i.jsx)(n.code,{children:"moon run"})}),", the process will not bail early and will run to completion."]}),"\n",(0,i.jsxs)(n.li,{children:["For ",(0,i.jsx)(n.a,{href:"../commands/ci",children:(0,i.jsx)(n.code,{children:"moon ci"})}),", the process will not exit with a non-zero exit code, if the only\nfailing tasks are allowed to fail."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n lint:\n command: 'eslint'\n options:\n allowFailure: true\n"})}),"\n",(0,i.jsx)(n.h4,{id:"cache",children:(0,i.jsx)(n.code,{children:"cache"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#cache"}),"\n",(0,i.jsxs)(n.p,{children:["Whether to cache the task's execution result using our ",(0,i.jsx)(n.a,{href:"../concepts/cache#hashing",children:"smart hashing"}),"\nsystem. If disabled, ",(0,i.jsx)(n.em,{children:"will not"})," create a cache hash, and ",(0,i.jsx)(n.em,{children:"will not"})," persist a task's\n",(0,i.jsx)(n.a,{href:"#outputs",children:"outputs"}),". Defaults to ",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"We suggest disabling caching when defining cleanup tasks, one-off scripts, or file system heavy\noperations."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n clean:\n command: 'rm -rf ./temp'\n options:\n cache: false\n"})}),"\n",(0,i.jsx)(n.h4,{id:"envfile",children:(0,i.jsx)(n.code,{children:"envFile"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#envFile"}),"\n",(0,i.jsxs)(n.p,{children:["A boolean or path to a ",(0,i.jsx)(n.code,{children:".env"})," file (also know as dotenv file) that defines a collection of\n",(0,i.jsx)(n.a,{href:"#env-1",children:"environment variables"})," for the current task. Variables will be loaded on project creation,\nbut will ",(0,i.jsx)(n.em,{children:"not"})," override those defined in ",(0,i.jsx)(n.a,{href:"#env-1",children:(0,i.jsx)(n.code,{children:"env"})}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Variables defined in the file support value substitution/expansion by wrapping the variable name in\ncurly brackets, such as ",(0,i.jsx)(n.code,{children:"${VAR_NAME}"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {6,8,10}',children:"tasks:\n build:\n command: 'webpack'\n options:\n # Defaults to .env\n envFile: true\n # Or\n envFile: '.env.production'\n # Or from the workspace root\n envFile: '/.env.shared'\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Additionally, a list of file paths can also be provided. When using a list, the order of the files\nis important, as environment variables from all files will be aggregated into a single map, with\nsubsequent files taking precedence over previous ones. Once aggregated, the variables will be passed\nto the task, but will ",(0,i.jsx)(n.em,{children:"not"})," override those defined in ",(0,i.jsx)(n.a,{href:"#env-1",children:(0,i.jsx)(n.code,{children:"env"})}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5-7}',children:"tasks:\n build:\n command: 'webpack'\n options:\n envFile:\n - '.env'\n - '.env.production'\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"caution",children:(0,i.jsxs)(n.p,{children:["File parsing is done using the Rust ",(0,i.jsx)(n.a,{href:"https://crates.io/crates/dotenvy",children:(0,i.jsx)(n.code,{children:"dotenvy"})})," crate, which is\n",(0,i.jsx)(n.em,{children:"different"})," than the Node.js ",(0,i.jsx)(n.a,{href:"https://www.npmjs.com/package/dotenv",children:(0,i.jsx)(n.code,{children:"dotenv"})})," package. The biggest\ndifferences are around quote handling and variable substitution, so be aware of this!"]})}),"\n",(0,i.jsxs)(n.h4,{id:"interactive",children:[(0,i.jsx)(n.code,{children:"interactive"}),(0,i.jsx)(l.Z,{version:"1.12.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#interactive"}),"\n",(0,i.jsxs)(n.p,{children:["Marks the task as interactive. ",(0,i.jsx)(n.a,{href:"../concepts/task#interactive",children:"Interactive tasks"})," run in isolation so\nthat they can interact with stdin."]}),"\n",(0,i.jsxs)(n.p,{children:["This setting also disables caching, turns of CI, and other functionality, similar to the\n",(0,i.jsx)(n.a,{href:"#local",children:(0,i.jsx)(n.code,{children:"local"})})," setting."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n init:\n # ...\n options:\n interactive: true\n"})}),"\n",(0,i.jsx)(n.h4,{id:"mergeargs",children:(0,i.jsx)(n.code,{children:"mergeArgs"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#mergeArgs"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance#merge-strategies",children:"strategy"})," to use when merging the\n",(0,i.jsx)(n.a,{href:"#args",children:(0,i.jsx)(n.code,{children:"args"})}),' list with an inherited task. Defaults to "append".']}),"\n",(0,i.jsx)(n.h4,{id:"mergedeps",children:(0,i.jsx)(n.code,{children:"mergeDeps"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#mergeDeps"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance#merge-strategies",children:"strategy"})," to use when merging the\n",(0,i.jsx)(n.a,{href:"#deps",children:(0,i.jsx)(n.code,{children:"deps"})}),' list with an inherited task. Defaults to "append".']}),"\n",(0,i.jsx)(n.h4,{id:"mergeenv",children:(0,i.jsx)(n.code,{children:"mergeEnv"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#mergeEnv"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance#merge-strategies",children:"strategy"})," to use when merging the\n",(0,i.jsx)(n.a,{href:"#env-1",children:(0,i.jsx)(n.code,{children:"env"})}),' map with an inherited task. Defaults to "append".']}),"\n",(0,i.jsx)(n.h4,{id:"mergeinputs",children:(0,i.jsx)(n.code,{children:"mergeInputs"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#mergeInputs"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance#merge-strategies",children:"strategy"})," to use when merging the\n",(0,i.jsx)(n.a,{href:"#inputs",children:(0,i.jsx)(n.code,{children:"inputs"})}),' list with an inherited task. Defaults to "append".']}),"\n",(0,i.jsx)(n.h4,{id:"mergeoutputs",children:(0,i.jsx)(n.code,{children:"mergeOutputs"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#mergeOutputs"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.a,{href:"../concepts/task-inheritance#merge-strategies",children:"strategy"})," to use when merging the\n",(0,i.jsx)(n.a,{href:"#outputs",children:(0,i.jsx)(n.code,{children:"outputs"})}),' list with an inherited task. Defaults to "append".']}),"\n",(0,i.jsx)(n.h4,{id:"outputstyle",children:(0,i.jsx)(n.code,{children:"outputStyle"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#outputStyle"}),"\n",(0,i.jsxs)(n.p,{children:["Controls how stdout/stderr is displayed when the task is ran as a ",(0,i.jsx)(n.em,{children:"transitive target"}),". By default,\nthis setting is not defined and defers to the action pipeline, but can be overridden with one of the\nfollowing values:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"buffer"})," - Buffers output and displays after the task has exited (either success or failure)."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"buffer-only-failure"})," - Like ",(0,i.jsx)(n.code,{children:"buffer"}),", but only displays on failures."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"hash"})," - Ignores output and only displays the generated ",(0,i.jsx)(n.a,{href:"../concepts/cache#hashing",children:"hash"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"none"})," - Ignores output."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"stream"})," - Streams output directly to the terminal. Will prefix each line of output with the\ntarget."]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n test:\n # ...\n options:\n outputStyle: 'stream'\n"})}),"\n",(0,i.jsxs)(n.h4,{id:"persistent",children:[(0,i.jsx)(n.code,{children:"persistent"}),(0,i.jsx)(l.Z,{version:"1.6.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#persistent"}),"\n",(0,i.jsxs)(n.p,{children:["Marks the task as persistent (continuously running). ",(0,i.jsx)(n.a,{href:"../concepts/task#persistent",children:"Persistent tasks"}),"\nare handled differently than non-persistent tasks in the action graph. When running a target, all\npersistent tasks are ",(0,i.jsx)(n.em,{children:"ran last"})," and ",(0,i.jsx)(n.em,{children:"in parallel"}),", after all their dependencies have completed."]}),"\n",(0,i.jsx)(n.p,{children:"This is extremely useful for running a server (or a watcher) in the background while other tasks are\nrunning."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n dev:\n # ...\n options:\n persistent: true\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["We suggest using the ",(0,i.jsx)(n.a,{href:"#local",children:(0,i.jsx)(n.code,{children:"local"})})," setting instead, which enables this setting, amongst other\nuseful settings."]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"retrycount",children:(0,i.jsx)(n.code,{children:"retryCount"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#retryCount"}),"\n",(0,i.jsxs)(n.p,{children:["The number of attempts the task will retry execution before returning a failure. This is especially\nuseful for flaky tasks. Defaults to ",(0,i.jsx)(n.code,{children:"0"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n test:\n # ...\n options:\n retryCount: 3\n"})}),"\n",(0,i.jsx)(n.h4,{id:"rundepsinparallel",children:(0,i.jsx)(n.code,{children:"runDepsInParallel"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#runDepsInParallel"}),"\n",(0,i.jsxs)(n.p,{children:["Whether to run the task's direct ",(0,i.jsx)(n.a,{href:"#deps",children:(0,i.jsx)(n.code,{children:"deps"})})," in parallel or serial (in order). Defaults to\n",(0,i.jsx)(n.code,{children:"true"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["When disabled, this ",(0,i.jsx)(n.em,{children:"does not"})," run dependencies of dependencies in serial, only direct dependencies."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {8}',children:"tasks:\n start:\n # ...\n deps:\n - '~:clean'\n - '~:build'\n options:\n runDepsInParallel: false\n"})}),"\n",(0,i.jsx)(n.h4,{id:"runinci",children:(0,i.jsx)(n.code,{children:"runInCI"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#runInCI"}),"\n",(0,i.jsxs)(n.p,{children:["Whether to run the task automatically in a CI (continuous integration) environment when affected by\ntouched files, typically through the ",(0,i.jsx)(n.a,{href:"../commands/ci",children:(0,i.jsx)(n.code,{children:"moon ci"})})," command. Defaults to ",(0,i.jsx)(n.code,{children:"true"})," unless\nthe ",(0,i.jsx)(n.a,{href:"#local",children:(0,i.jsx)(n.code,{children:"local"})})," setting is disabled, but is ",(0,i.jsx)(n.em,{children:"always"})," true when a task defines\n",(0,i.jsx)(n.a,{href:"#outputs",children:(0,i.jsx)(n.code,{children:"outputs"})}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n build:\n # ...\n options:\n runInCI: false\n"})}),"\n",(0,i.jsx)(n.h4,{id:"runfromworkspaceroot",children:(0,i.jsx)(n.code,{children:"runFromWorkspaceRoot"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#runFromWorkspaceRoot"}),"\n",(0,i.jsxs)(n.p,{children:["Whether to use the workspace root as the working directory when executing a task. Defaults to\n",(0,i.jsx)(n.code,{children:"false"})," and runs from the task's project root."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n typecheck:\n # ...\n options:\n runFromWorkspaceRoot: true\n"})}),"\n",(0,i.jsx)(n.h4,{id:"shell",children:(0,i.jsx)(n.code,{children:"shell"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#shell"}),"\n",(0,i.jsxs)(n.p,{children:["Whether to run the command within a shell or not. Defaults to ",(0,i.jsx)(n.code,{children:"true"})," for system platform or Windows,\nand ",(0,i.jsx)(n.code,{children:"false"})," otherwise. The shell to run is determined by the ",(0,i.jsx)(n.a,{href:"#unixshell",children:(0,i.jsx)(n.code,{children:"unixShell"})})," and\n",(0,i.jsx)(n.a,{href:"#windowsshell",children:(0,i.jsx)(n.code,{children:"windowsShell"})})," options respectively."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n native:\n command: 'echo $SHELL'\n options:\n shell: true\n"})}),"\n",(0,i.jsxs)(n.p,{children:["However, if you'd like to use a different shell, or customize the shell's arguments, or have\ngranular control, you can set ",(0,i.jsx)(n.code,{children:"shell"})," to false and configure a fully qualified command."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n native:\n command: '/bin/zsh -c \"echo $SHELL\"'\n options:\n shell: false\n"})}),"\n",(0,i.jsxs)(n.h4,{id:"unixshell",children:[(0,i.jsx)(n.code,{children:"unixShell"}),(0,i.jsx)(l.Z,{version:"1.21.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#unixShell"}),"\n",(0,i.jsxs)(n.p,{children:["Customize the shell to run with when on a Unix operating system. Accepts ",(0,i.jsx)(n.code,{children:"bash"}),", ",(0,i.jsx)(n.code,{children:"elvish"}),", ",(0,i.jsx)(n.code,{children:"fish"}),",\n",(0,i.jsx)(n.code,{children:"sh"}),", or ",(0,i.jsx)(n.code,{children:"zsh"}),". If not defined, will derive the shell from the ",(0,i.jsx)(n.code,{children:"SHELL"})," environment variable, or\ndefaults to ",(0,i.jsx)(n.code,{children:"sh"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n native:\n command: 'echo $SHELL'\n options:\n unixShell: 'fish'\n"})}),"\n",(0,i.jsxs)(n.h4,{id:"windowsshell",children:[(0,i.jsx)(n.code,{children:"windowsShell"}),(0,i.jsx)(l.Z,{version:"1.21.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/TaskOptionsConfig#windowsShell"}),"\n",(0,i.jsxs)(n.p,{children:["Customize the shell to run with when on a Windows operating system. Accepts ",(0,i.jsx)(n.code,{children:"bash"})," (typically via\nGit) or ",(0,i.jsx)(n.code,{children:"pwsh"}),". If not defined, defaults to ",(0,i.jsx)(n.code,{children:"pwsh"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {5}',children:"tasks:\n native:\n command: 'echo $SHELL'\n options:\n windowsShell: 'bash'\n"})}),"\n",(0,i.jsx)(n.h2,{id:"overrides",children:"Overrides"}),"\n",(0,i.jsx)(n.p,{children:"Dictates how a project interacts with settings defined at the top-level."}),"\n",(0,i.jsx)(n.h2,{id:"toolchain",children:(0,i.jsx)(n.code,{children:"toolchain"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#toolchain"}),"\n",(0,i.jsx)(n.h3,{id:"bun",children:(0,i.jsx)(n.code,{children:"bun"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainConfig#bun"}),"\n",(0,i.jsxs)(n.p,{children:["Configures Bun for this project and overrides the top-level ",(0,i.jsx)(n.a,{href:"./toolchain#bun",children:(0,i.jsx)(n.code,{children:"bun"})})," setting."]}),"\n",(0,i.jsx)(n.h4,{id:"version",children:(0,i.jsx)(n.code,{children:"version"})}),"\n",(0,i.jsxs)(n.p,{children:["Defines the explicit Bun ",(0,i.jsx)(n.a,{href:"../concepts/toolchain#version-specification",children:"version specification"})," to use\nwhen ",(0,i.jsx)(n.em,{children:"running tasks"})," for this project."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {2,3}',children:"toolchain:\n bun:\n version: '1.0.0'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"deno",children:(0,i.jsx)(n.code,{children:"deno"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainConfig#deno"}),"\n",(0,i.jsxs)(n.p,{children:["Configures Deno for this project and overrides the top-level ",(0,i.jsx)(n.a,{href:"./toolchain#deno",children:(0,i.jsx)(n.code,{children:"deno"})})," setting."]}),"\n",(0,i.jsx)(n.h4,{id:"version-1",children:(0,i.jsx)(n.code,{children:"version"})}),"\n",(0,i.jsxs)(n.p,{children:["Defines the explicit Deno ",(0,i.jsx)(n.a,{href:"../concepts/toolchain#version-specification",children:"version specification"})," to\nuse when ",(0,i.jsx)(n.em,{children:"running tasks"})," for this project."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {2,3}',children:"toolchain:\n deno:\n version: '1.40.0'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"node",children:(0,i.jsx)(n.code,{children:"node"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainConfig#node"}),"\n",(0,i.jsxs)(n.p,{children:["Configures Node.js for this project and overrides the top-level ",(0,i.jsx)(n.a,{href:"./toolchain#node",children:(0,i.jsx)(n.code,{children:"node"})})," setting.\nCurrently, only the Node.js version can be overridden per-project, not the package manager."]}),"\n",(0,i.jsx)(n.h4,{id:"version-2",children:(0,i.jsx)(n.code,{children:"version"})}),"\n",(0,i.jsxs)(n.p,{children:["Defines the explicit Node.js ",(0,i.jsx)(n.a,{href:"../concepts/toolchain#version-specification",children:"version specification"})," to\nuse when ",(0,i.jsx)(n.em,{children:"running tasks"})," for this project."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {2,3}',children:"toolchain:\n node:\n version: '12.12.0'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"rust",children:(0,i.jsx)(n.code,{children:"rust"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainConfig#rust"}),"\n",(0,i.jsxs)(n.p,{children:["Configures Rust for this project and overrides the top-level ",(0,i.jsx)(n.a,{href:"./toolchain#rust",children:(0,i.jsx)(n.code,{children:"rust"})})," setting."]}),"\n",(0,i.jsx)(n.h4,{id:"version-3",children:(0,i.jsx)(n.code,{children:"version"})}),"\n",(0,i.jsxs)(n.p,{children:["Defines the explicit Rust\n",(0,i.jsx)(n.a,{href:"../concepts/toolchain#version-specification",children:"version/channel specification"})," to use when ",(0,i.jsx)(n.em,{children:"running\ntasks"})," for this project."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {2,3}',children:"toolchain:\n rust:\n version: '1.68.0'\n"})}),"\n",(0,i.jsx)(n.h3,{id:"typescript",children:(0,i.jsx)(n.code,{children:"typescript"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainConfig#typescript"}),"\n",(0,i.jsx)(n.h4,{id:"disabled",children:(0,i.jsx)(n.code,{children:"disabled"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainTypeScriptConfig#disabled"}),"\n",(0,i.jsxs)(n.p,{children:["Disables ",(0,i.jsx)(n.a,{href:"./toolchain#typescript",children:"TypeScript support"})," entirely for this project. Defaults to\n",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {3}',children:"toolchain:\n typescript:\n disabled: true\n"})}),"\n",(0,i.jsxs)(n.h4,{id:"includeprojectreferencesources",children:[(0,i.jsx)(n.code,{children:"includeProjectReferenceSources"}),(0,i.jsx)(l.Z,{version:"1.17.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainTypeScriptConfig#includeProjectReferenceSources"}),"\n",(0,i.jsxs)(n.p,{children:["Overrides the workspace-level\n",(0,i.jsx)(n.a,{href:"./toolchain#includeprojectreferencesources",children:(0,i.jsx)(n.code,{children:"includeProjectReferenceSources"})})," setting. Defaults to\nundefined."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {3}',children:"toolchain:\n typescript:\n includeProjectReferenceSources: false\n"})}),"\n",(0,i.jsxs)(n.h4,{id:"includesharedtypes",children:[(0,i.jsx)(n.code,{children:"includeSharedTypes"}),(0,i.jsx)(l.Z,{version:"1.17.0"})]}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainTypeScriptConfig#includeSharedTypes"}),"\n",(0,i.jsxs)(n.p,{children:["Overrides the workspace-level ",(0,i.jsx)(n.a,{href:"./toolchain#includesharedtypes",children:(0,i.jsx)(n.code,{children:"includeSharedTypes"})})," setting.\nDefaults to undefined."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {3}',children:"toolchain:\n typescript:\n includeSharedTypes: false\n"})}),"\n",(0,i.jsx)(n.h4,{id:"routeoutdirtocache",children:(0,i.jsx)(n.code,{children:"routeOutDirToCache"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainTypeScriptConfig#routeOutDirToCache"}),"\n",(0,i.jsxs)(n.p,{children:["Overrides the workspace-level ",(0,i.jsx)(n.a,{href:"./toolchain#routeoutdirtocache",children:(0,i.jsx)(n.code,{children:"routeOutDirToCache"})})," setting.\nDefaults to undefined."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {3}',children:"toolchain:\n typescript:\n routeOutDirToCache: false\n"})}),"\n",(0,i.jsx)(n.h4,{id:"syncprojectreferences",children:(0,i.jsx)(n.code,{children:"syncProjectReferences"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainTypeScriptConfig#syncProjectReferences"}),"\n",(0,i.jsxs)(n.p,{children:["Overrides the workspace-level ",(0,i.jsx)(n.a,{href:"./toolchain#syncprojectreferences",children:(0,i.jsx)(n.code,{children:"syncProjectReferences"})})," setting.\nDefaults to undefined."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {3}',children:"toolchain:\n typescript:\n syncProjectReferences: false\n"})}),"\n",(0,i.jsx)(n.h4,{id:"syncprojectreferencestopaths",children:(0,i.jsx)(n.code,{children:"syncProjectReferencesToPaths"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectToolchainTypeScriptConfig#syncProjectReferencesToPaths"}),"\n",(0,i.jsxs)(n.p,{children:["Overrides the workspace-level\n",(0,i.jsx)(n.a,{href:"./toolchain#syncprojectreferencestopaths",children:(0,i.jsx)(n.code,{children:"syncProjectReferencesToPaths"})})," setting. Defaults to\nundefined."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {3}',children:"toolchain:\n typescript:\n syncProjectReferencesToPaths: false\n"})}),"\n",(0,i.jsx)(n.h2,{id:"workspace",children:(0,i.jsx)(n.code,{children:"workspace"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectConfig#workspace"}),"\n",(0,i.jsx)(n.h3,{id:"inheritedtasks",children:(0,i.jsx)(n.code,{children:"inheritedTasks"})}),"\n",(0,i.jsx)(r.Z,{to:"/api/types/interface/ProjectWorkspaceConfig#inheritedTasks"}),"\n",(0,i.jsxs)(n.p,{children:["Provides a layer of control when inheriting tasks from ",(0,i.jsx)(n.a,{href:"./tasks",children:(0,i.jsx)(n.code,{children:".moon/tasks.yml"})}),"."]}),"\n",(0,i.jsx)(n.h4,{id:"exclude",children:(0,i.jsx)(n.code,{children:"exclude"})}),"\n",(0,i.jsxs)(n.p,{children:["The optional ",(0,i.jsx)(n.code,{children:"exclude"})," setting permits a project to exclude specific tasks from being inherited. It\naccepts a list of strings, where each string is the name of a global task to exclude."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4}',children:"workspace:\n inheritedTasks:\n # Exclude the inherited `test` task for this project\n exclude: ['test']\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Exclusion is applied after inclusion and before renaming."}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"include",children:(0,i.jsx)(n.code,{children:"include"})}),"\n",(0,i.jsxs)(n.p,{children:["The optional ",(0,i.jsx)(n.code,{children:"include"})," setting permits a project to ",(0,i.jsx)(n.em,{children:"only"})," include specific inherited tasks (works\nlike an allow/white list). It accepts a list of strings, where each string is the name of a global\ntask to include."]}),"\n",(0,i.jsx)(n.p,{children:"When this field is not defined, the project will inherit all tasks from the global project config."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4,7-9}',children:"workspace:\n inheritedTasks:\n # Include *no* tasks (works like a full exclude)\n include: []\n\n # Only include the `lint` and `test` tasks for this project\n include:\n - 'lint'\n - 'test'\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Inclusion is applied before exclusion and renaming."}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"rename",children:(0,i.jsx)(n.code,{children:"rename"})}),"\n",(0,i.jsxs)(n.p,{children:["The optional ",(0,i.jsx)(n.code,{children:"rename"})," setting permits a project to rename the inherited task within the current\nproject. It accepts a map of strings, where the key is the original name (found in the global\nproject config), and the value is the new name to use."]}),"\n",(0,i.jsxs)(n.p,{children:["For example, say we have 2 tasks in the global project config called ",(0,i.jsx)(n.code,{children:"buildPackage"})," and\n",(0,i.jsx)(n.code,{children:"buildApplication"}),", but we only need 1, and since we're an application, we should omit and rename."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",metastring:'title="moon.yml" {4,5}',children:"workspace:\n inheritedTasks:\n exclude: ['buildPackage']\n rename:\n buildApplication: 'build'\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Renaming occurs after inclusion and exclusion."}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(j,{...e})}):j(e)}},32189:(e,n,s)=>{s.d(n,{Z:()=>o});var i=s(83469),t=s(31792),r=s(24246);function o(e){let{to:n}=e;return(0,r.jsx)("a",{href:n,target:"_blank",className:"float-right inline-block",style:{marginTop:"-3em"},children:(0,r.jsx)(t.Z,{icon:i.dT$})})}},9785:(e,n,s)=>{s.d(n,{Z:()=>r});var i=s(9619),t=s(24246);function r(e){let{text:n="Required"}=e;return(0,t.jsx)(i.Z,{text:n,variant:"failure",className:"ml-2"})}},79022:(e,n,s)=>{s.d(n,{Z:()=>r});var i=s(9619),t=s(24246);function r(e){let{header:n,inline:s,updated:r,version:o}=e;return(0,t.jsx)(i.Z,{text:`v${o}`,variant:r?"success":"info",className:n?"absolute right-0 top-1.5":s?"inline-block":"ml-2"})}},9619:(e,n,s)=>{s.d(n,{Z:()=>l});var i=s(40624),t=s(31792),r=s(24246);const o={failure:"bg-red-100 text-red-900",info:"bg-pink-100 text-pink-900",success:"bg-green-100 text-green-900",warning:"bg-orange-100 text-orange-900"};function l(e){let{className:n,icon:s,text:l,variant:a}=e;return(0,r.jsxs)("span",{className:(0,i.Z)("inline-flex items-center px-1 py-0.5 rounded text-xs font-bold uppercase",a?o[a]:"bg-gray-100 text-gray-800",n),children:[s&&(0,r.jsx)(t.Z,{icon:s,className:"mr-1"}),l]})}},71670:(e,n,s)=>{s.d(n,{Z:()=>l,a:()=>o});var i=s(27378);const t={},r=i.createContext(t);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/runtime~main.df1ca9bc.js b/assets/js/runtime~main.4151578b.js
similarity index 99%
rename from assets/js/runtime~main.df1ca9bc.js
rename to assets/js/runtime~main.4151578b.js
index e85409b7aad..23a24d8c2cf 100644
--- a/assets/js/runtime~main.df1ca9bc.js
+++ b/assets/js/runtime~main.4151578b.js
@@ -1 +1 @@
-(()=>{"use strict";var e,f,d,c,b,a={},t={};function r(e){var f=t[e];if(void 0!==f)return f.exports;var d=t[e]={id:e,loaded:!1,exports:{}};return a[e].call(d.exports,d,d.exports,r),d.loaded=!0,d.exports}r.m=a,e=[],r.O=(f,d,c,b)=>{if(!d){var a=1/0;for(i=0;i=b)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[d,c,b]},r.n=e=>{var f=e&&e.__esModule?()=>e.default:()=>e;return r.d(f,{a:f}),f},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,c){if(1&c&&(e=this(e)),8&c)return e;if("object"==typeof e&&e){if(4&c&&e.__esModule)return e;if(16&c&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var a={};f=f||[null,d({}),d([]),d(d)];for(var t=2&c&&e;"object"==typeof t&&!~f.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach((f=>a[f]=()=>e[f]));return a.default=()=>e,r.d(b,a),b},r.d=(e,f)=>{for(var d in f)r.o(f,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:f[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((f,d)=>(r.f[d](e,f),f)),[])),r.u=e=>"assets/js/"+({1:"409da100",323:"686e1776",433:"14f9b0f2",601:"01b81367",602:"6308087d",638:"d213043e",1157:"89df0009",1175:"0cd40d9b",1358:"6fb24ff7",1531:"11ce4159",1607:"cf510f60",1719:"0cb5fac6",1795:"86257f88",2033:"a65441a5",2074:"2cd5cbb6",2571:"1e070f27",2615:"8876813e",2801:"202af6b6",3206:"f8409a7e",3663:"9932ae0e",3779:"af7c3e2d",4068:"1badf320",4138:"88aaac27",4590:"a372a63b",5016:"cfdf2b5f",5267:"cc2086a7",5758:"2eaf3a2f",5826:"f8de77c0",6274:"ef3509ef",6388:"19ca9089",6506:"d1576682",6517:"7aad579e",6633:"9e528cee",6652:"78060cbc",6759:"0f8a713b",6855:"9a062e52",7012:"711949de",7037:"125698e9",7278:"1e542d68",7429:"7d9726a8",7566:"3dc68565",7932:"f1db6d6f",8057:"c095dcfa",8100:"7d4c8b40",8114:"90b14878",8159:"4e9707d9",8248:"ce2c6db8",8450:"b819cecb",8551:"1ce131f4",8678:"8d06f620",9010:"e629dea5",9157:"b831fe65",9197:"6be7ee83",9305:"1b381de4",9331:"5624c486",9551:"87d62477",9817:"14eb3368",9847:"be324e15",10001:"8eb4e46b",10252:"3db5b877",10537:"4178efb8",10722:"722146fe",10744:"24556f49",10938:"f8deddba",10948:"97878c65",11126:"4c8cef38",11312:"8fe4bb0e",11477:"b2f554cd",11558:"0e22a4b2",11713:"a7023ddc",11729:"82753213",11823:"a07ef81b",12174:"ff13fcd4",12391:"204dd830",12454:"479321cf",12785:"957809ee",12949:"b0e766b4",13089:"bf04367c",13481:"90f88783",13751:"3720c009",13774:"318f6953",13869:"769e9ed2",13874:"efac74b2",14079:"2f2ef150",14640:"0ff9eadc",15017:"3cf94527",15050:"f18fbdcd",15091:"56a06382",15411:"fc3ae8bf",15428:"9d3c1a44",15437:"4bddfbdb",15494:"f9651623",15867:"48b0f434",15911:"57bd32c7",15995:"861abce9",16039:"eb514dbf",16144:"42611ca7",16319:"cb9b57ed",16447:"cce51cf2",16502:"f5b890ba",16732:"c67cfbac",16835:"ed26bce9",16836:"427e2c3d",16974:"232c92ba",17642:"fcb295ad",18442:"92999a1c",18496:"5cde4d5c",18509:"cdad2d50",18518:"a7bd4aaa",18869:"61486960",18914:"5419aa43",19821:"83943ce1",19902:"e8700426",19950:"8f6f7bb5",20019:"dd99bf53",20384:"752c6bfa",20612:"4b8535eb",20728:"dae127b6",20735:"3fc19409",20739:"8c4a23a7",20984:"f440db1d",21042:"39b245d7",21258:"f5f247cc",21351:"dd92571b",21364:"bb624440",21393:"7c4e6415",21396:"459b1c5c",21575:"0b289f4d",21756:"3b568f5a",22108:"3e7d7789",22293:"54024cf2",22461:"ddec1041",22636:"46561613",23131:"c5ed658f",23157:"89a53707",23168:"1cb65c7d",23358:"766b2171",23512:"aa431e4a",23523:"33d935e4",23615:"71dfd0a8",23664:"fd8ac5c7",23685:"d2864f87",24404:"f7bfbae9",24744:"ec9f380e",24871:"24a07a83",25370:"bc6c5049",25425:"68d17c71",25547:"a0d8b188",25624:"77b7a366",25971:"0b1dc2cd",26003:"042222b7",26027:"ffef4e04",26051:"3e1aa1b6",26285:"18dd62e9",26622:"8d701eb4",26911:"b184781f",27418:"63aeb80b",27460:"a18798d1",27483:"4fc032be",27594:"63243ad1",27722:"213182ef",27756:"39a2c297",27918:"17896441",28129:"36027025",28149:"44183a86",28444:"376f2f8c",28495:"860d7f34",29219:"1cbc9cf3",29453:"affd832d",29593:"63be5056",29631:"2dffafe2",29661:"5e95c892",29719:"5552634a",29737:"f7b99134",29754:"3f5148d4",29769:"4fa82ff8",29917:"1365e0a6",29958:"a6d9fcee",29962:"0abe3c97",30004:"7eb5bf2d",30027:"3353503a",30464:"2fafdb99",30601:"0681d8e1",30727:"60262e21",30808:"271a7b09",30827:"a86b7c98",30841:"eb1a9ca0",30959:"09d7020f",31186:"e6e8ac82",31328:"2123995c",31338:"80c4f2d9",31622:"819f977d",31737:"cd988af7",32433:"b072568e",32571:"ec4f6a24",32618:"0ec8745a",32823:"3d312808",33062:"66a08410",33068:"a701d349",33071:"937d7adc",33134:"bc74446d",33439:"53df8e83",33643:"c6200b76",33869:"c6cdd4c0",33984:"e746f759",35334:"b03b3eac",35499:"46f74c3b",35537:"9529487c",35649:"7b667a7f",35666:"068b8e98",36095:"69ea3d78",36147:"0d478160",36167:"423a0e62",36297:"0c7f16c1",36361:"4f0c5301",36371:"163fb342",36394:"edfea66c",36861:"2048b789",36863:"df212c12",36942:"f3782a6b",37007:"8593ff01",37133:"be1aaa14",37394:"151c652b",37440:"79765aba",37633:"907bfa82",37930:"600433a8",37941:"2d15743f",38086:"db676956",38428:"1e90ea6d",38488:"759c01e9",38670:"2804bc6d",38830:"9ff86157",39200:"2b3490d9",39558:"f41c0109",39817:"920c0536",39818:"fb2dd7db",40128:"74525e00",40216:"6e15e01b",40367:"ccf139f5",40459:"429b21e2",40805:"c19ad3d7",40824:"47b3b041",41180:"90dd988c",41284:"2849ed2c",41303:"5d48ec89",41314:"50bf3dcb",41426:"52099127",41525:"c5980a65",41692:"5727ee78",42121:"2ed8359a",42277:"d9c57d72",42334:"7c9b29bb",42463:"14f81d84",42656:"073e718f",42839:"170d6c86",42945:"5e371f0f",43109:"5a3a719f",43171:"e8d2c25f",43238:"5534fb85",43310:"f761bd07",43363:"03193cc0",43408:"87f861ef",43869:"40c69ef1",43871:"d43cc2ec",43972:"0e736169",43993:"d8fdbe7a",44321:"2253283f",44343:"9f025583",44436:"9edb948e",44497:"f90d8a46",44817:"31fff4a5",44867:"c83c6fdf",44873:"1910946c",44969:"3d0b0327",45048:"d7cb860d",45244:"128a5f34",45420:"fe36d4cd",45750:"aeb8605d",45768:"885555b6",46070:"77530bb9",46103:"ccc49370",46480:"4d69ebec",46500:"66222453",46526:"a452709a",46920:"7d55a0f0",46947:"752283db",47265:"3db947d3",47789:"e8f62c55",47822:"b1144183",47890:"b7a8f57a",47969:"89c16be8",47999:"1a2b669c",48114:"2497986c",48233:"4e986fc6",48529:"4931a616",48610:"6875c492",48667:"046e2194",50139:"5076d7f9",50167:"2e94733f",50609:"80514956",50670:"0684a904",50818:"4ec8a4a9",50916:"a51acd91",50984:"54eec65a",51047:"db35e163",51084:"c7d98fe2",51109:"976dc663",51294:"51ada3e3",51452:"c35cb5af",51578:"8e65fbae",51592:"00eeb48c",51677:"e2e8a294",51684:"3f885d22",51705:"a6746ab5",51746:"ca67c4de",51909:"2df21221",52080:"626ef9ce",52201:"f41d5eb1",52287:"66926af2",52535:"814f3328",52606:"bcbbf42e",52753:"146ca1ad",53184:"dd5ac54b",53237:"1df93b7f",53608:"9e4087bc",53647:"fbcfc993",53733:"245d4974",53941:"fac0f815",54252:"679bd524",54362:"c1721191",54403:"062a1a43",54488:"4ab2bb95",54640:"dd5bc5cd",54841:"f3f44898",55055:"bd0db63d",55126:"732b1ff8",55649:"b49860f1",55932:"70c84758",56040:"efef7eb9",56256:"5c653e8d",56336:"3f2d0a0e",56448:"be1609b7",56560:"4bd5fd33",56630:"75408299",56720:"f1d6ac1e",56819:"bec065e9",56842:"4fd1aaa1",56971:"daf4eece",57690:"2d92dfb9",57754:"7c54c2f8",58074:"b1c60aef",58696:"6196de5a",58751:"f9cc98ab",58941:"d5875de2",59364:"dd3540fa",59639:"bf95ed3d",59673:"1202c0b0",60026:"f714495d",60314:"eda853ca",60354:"788e7a3c",60459:"c3e887d3",60499:"b0cf9b20",60662:"54b27903",60730:"b65c3624",60793:"7e97ad64",60846:"3691c6ec",61826:"ec3c4baa",61988:"c4542d8c",62117:"7cde1f03",62419:"4bee05e8",62441:"2172420b",62687:"bd6bded1",62814:"750b9005",62865:"26419218",63058:"5b4d43ff",63165:"00ddaded",63210:"5794c75f",63450:"ccfb5782",63651:"b8b35c51",64013:"01a85c17",64043:"60fa46e1",64065:"db0cc9f1",64067:"365a10b6",64147:"b15686f4",64197:"8de38bef",64414:"16ea2389",64492:"5613e7cf",64623:"2a9820b4",64788:"0ae21139",64859:"93bce8ec",65077:"ad536080",65217:"7599f4f1",65379:"43bdf210",65537:"f7f505dc",65819:"f41735e0",65899:"e7d7123e",66065:"303db6c1",66172:"e13166f5",66458:"49b772d3",66647:"7f3e2518",66882:"e5f23965",67005:"d7cf5e1f",67143:"2bd8a6cf",67145:"f1c28687",67217:"49af4b98",67448:"1740b646",67614:"2e78e54c",67619:"98ae4a66",67622:"dbbb982f",67862:"d475de92",67964:"fab64b27",68005:"a91ae4c2",68007:"250d5d50",68026:"6c24c6c6",68282:"a88c4343",68573:"c532175a",68876:"676566fe",68900:"8b38bcbd",69015:"3df11149",69186:"f09f371a",69201:"688193a4",69959:"1aebc10b",70406:"0cbb83d7",70731:"2adc0ba4",70866:"dffc4bd7",70951:"e570d6db",70969:"a20401e4",71133:"fe55d425",71478:"771f38eb",72080:"f20dbcd4",72178:"7ec3d878",72484:"195293b6",72882:"088b3228",73250:"edd7d65c",73443:"110403ef",73931:"a641c963",73986:"5f3507b2",74096:"0d0b9fc6",74121:"55960ee5",74170:"beea6c26",74675:"8e9e3e30",74824:"0627e785",74825:"22e78681",74875:"81d944d1",75103:"4d0779a0",75394:"caa6a735",75706:"9e4ae2cc",75847:"2e4722bd",75852:"f01f44c3",76331:"be0fdac8",76352:"17ae22f4",76353:"51985ffa",76569:"7dbcf43b",76629:"b78f40a6",76939:"1e76467f",77008:"4a1ab9c8",77142:"44ac4dbb",77234:"e72df945",77363:"69c95af3",77465:"6fe6957f",77521:"8b2dd20d",77560:"845c4296",77659:"fc3deafd",77838:"a26a8dd3",77869:"78dd992d",77889:"350ea002",77937:"ea313555",77963:"c5de23c8",78158:"fffcdd84",78195:"2573a9a7",78437:"0f20bda7",78463:"b80596f4",79357:"f616eec2",79702:"7e9fb3d2",79716:"b2d692e7",80053:"935f2afb",80115:"b717531a",80146:"d84e8684",80175:"140321b2",80337:"33f77f6d",80347:"5995366c",80368:"620e72fa",80632:"59abedb6",80925:"3cf7eb9d",81148:"4c2d8fdb",81187:"b972506a",81812:"405d593f",82056:"016d6d21",82178:"e78c3998",82192:"a5a57258",82258:"488a99ce",82297:"dd10dfc1",82444:"b8f3d4c8",82687:"6eae5b23",82763:"a33962b9",83036:"f89b6242",83075:"ac1be023",83088:"2994c7d6",83108:"84861aa7",83508:"413318e8",83549:"7d19a980",83561:"7f6c6f55",83815:"5a16b840",83884:"4a3d03f6",84037:"c0e911ed",84247:"23ef67df",84366:"bf35a812",84470:"00568285",84536:"b104f86f",85027:"02401b2b",85029:"69e0bfe1",85390:"6dd55018",85620:"8526ffa3",85679:"d93dbc28",85723:"6ea8a316",85880:"8c079f7d",85950:"22eddac1",86289:"0592e420",86551:"04d8c43e",86633:"92e5465c",86795:"3c3b6fb9",87387:"d4c755e6",87451:"1b469a71",87538:"9c090340",87584:"e898b7f3",87829:"d9e52d1f",87976:"0631dc07",88548:"e9d548ba",88610:"2e4ab3f3",88663:"2c114e85",88893:"17cacc08",89094:"3d4b58f3",89126:"c8acf440",89203:"09a4ed0c",89531:"99b94e0d",89624:"b6e1085a",89819:"e4c23816",89856:"f7c83201",90297:"b9e9925e",90341:"b976481c",90437:"da42f544",90439:"fcbcdf3c",90514:"fba28ebc",90533:"b2b675dd",90543:"fd485bd3",90661:"fd27c808",91324:"8c241076",91710:"4e3c283c",91816:"28508d4c",92105:"ffc0ac08",92129:"15a4ce61",92293:"4d66ab66",92702:"aacc3e35",92778:"a581e456",93089:"a6aa9e1f",93160:"24adbf31",93231:"9f838734",93287:"fea2b255",93317:"846a5e19",93363:"54350ada",93791:"c6c73cac",93811:"1d14c2f4",93848:"4e30d381",94268:"6b50e60a",94312:"cae36b15",94368:"a94703ab",94384:"c413f1b7",94488:"37e4cb73",94672:"32632728",94734:"98738a6c",94979:"450b14c3",95084:"351d319b",95129:"357f2143",95299:"9223c52e",95653:"b652e05c",95924:"4665933c",96149:"d2908feb",96321:"90fdb9b5",96370:"43dc46d9",96758:"4ddbfcdc",96822:"b666032b",96897:"4aa262b7",97064:"081149e5",97325:"5422c2e3",97424:"0034bcd6",97547:"fff5a6d1",97676:"4b04eb2b",97749:"a219b733",97889:"e16afba1",97920:"1a4e3797",98109:"c83296ab",98401:"c4f95133",98434:"d5075c4a",98450:"1aa28b52",98561:"4e444002",98645:"5e26083b",98685:"b38a02d7",99067:"bb86fac5",99639:"05c7f781",99662:"193b481a",99827:"bf5d9784",99924:"df203c0f",99979:"987564cc"}[e]||e)+"."+{1:"1636f741",323:"bea43e6a",433:"015f711f",601:"bc8690a1",602:"b715e1fe",638:"65a764e3",1157:"e63a3921",1175:"a76e53eb",1358:"221c2950",1531:"9d00aa28",1607:"1b7c63bc",1719:"b1443385",1795:"1429f900",2033:"587f96c4",2074:"e977b135",2571:"8a307946",2615:"a211d354",2801:"64b30388",3206:"223b662a",3663:"5b91763c",3779:"f5a038ea",4068:"c499d9aa",4138:"f709a0a7",4590:"903db670",5016:"bf6fef62",5267:"2d99e22a",5758:"fb0bdc44",5826:"35b2d96a",6274:"25a9c89b",6388:"f4ad3aeb",6506:"7df69c28",6517:"522570fd",6633:"f952981a",6652:"d4f46f8b",6759:"aa1c9c5d",6855:"8f968fcb",7012:"f1dd9997",7037:"73615ac4",7278:"90294187",7429:"c3d9fc28",7566:"be2ce9a6",7932:"8c4adee7",8057:"3491d42d",8100:"f08c602c",8114:"9e5d1974",8159:"70e4729a",8248:"41d2e034",8450:"caec9cd3",8551:"86bbcc34",8678:"39a398f5",9010:"4173ce74",9157:"bcb1af17",9197:"cfc7d363",9305:"bf7ab5b5",9331:"c1d2f4ea",9551:"19e4cbb5",9817:"5b3d7c3c",9847:"4dcbee9c",10001:"4ed68892",10252:"61f0b773",10537:"9d4d4e3f",10722:"aaa17e3e",10744:"b26e6c3c",10938:"806a63cf",10948:"c700a578",11126:"d2bfffd1",11312:"9d6213ab",11477:"8231ad3e",11558:"9b243833",11713:"0663d80f",11729:"a95086f0",11823:"855ddaa3",12174:"2f4c20e7",12391:"b0aedcab",12454:"84f9bccd",12700:"5cde9e05",12785:"b48b5e4d",12949:"693d862e",13089:"fd8b84fe",13481:"c304721f",13751:"e5637b19",13774:"70d6abdb",13869:"c2a134de",13874:"5ecd777c",14079:"fc1c277b",14094:"79e76789",14640:"6c7d2b09",15017:"f42ea8e3",15050:"81fa29a3",15091:"b6ef22bb",15411:"c12764d3",15428:"d85305c9",15437:"4edb80b9",15494:"3e13c775",15867:"3c0ff780",15911:"b02da2bb",15995:"c9dce327",16039:"bb6ca03e",16144:"8e66ab12",16319:"c503e87b",16447:"395d4f10",16502:"6cb38524",16732:"b7158047",16835:"8603abef",16836:"84481400",16974:"e3e6c355",17642:"07b1c928",18442:"73a7242c",18496:"c4892f4e",18509:"ef955236",18518:"afb55224",18869:"d9f8dd52",18914:"ed14c83e",19821:"5f0278c8",19902:"30b3c843",19950:"13e2e175",20019:"85834099",20384:"54fb55d8",20612:"e9a597ee",20728:"c8dc0fa2",20735:"a8d36788",20739:"42552037",20984:"8b0b56fe",21042:"f0fb40c9",21258:"fdf02c6d",21351:"036ffdef",21364:"66454df3",21393:"2396003d",21396:"6697c800",21575:"7eab597e",21756:"7f727c83",21947:"e639b456",22108:"e2c9d3f3",22293:"f40bb160",22461:"fe39ec2e",22636:"f08deb9d",23131:"82641341",23157:"c994cb8a",23168:"4ce65f3d",23358:"c239b70e",23512:"99cf35a7",23523:"b359beb6",23615:"8c76db3e",23664:"dddc1183",23685:"36b53202",24404:"59127fd1",24744:"659353a2",24871:"aed5f4f0",25370:"f2887640",25425:"e6968532",25547:"fac976fe",25624:"5a1c6f10",25971:"2e288bee",26003:"757d4c3e",26027:"fed083f1",26051:"1e2c73a0",26285:"58ebab93",26622:"39db6ae8",26911:"ff8172a1",27418:"dd95895d",27460:"8c2849fc",27483:"72d41ff0",27594:"b744d73f",27722:"cb5c3e5e",27756:"716956f8",27918:"eccc8abf",28129:"2b55467c",28149:"4509236d",28444:"ac58a3f8",28495:"0a6915ba",29219:"ddc8f752",29453:"23f5c49b",29593:"51514fae",29631:"195b76c0",29661:"e310c5b6",29719:"be8c0e6b",29737:"da4a5579",29754:"eace0253",29769:"52b79dfd",29917:"e78a441e",29958:"e908f79f",29962:"445691db",30004:"f2e595ca",30027:"cbe52fd4",30464:"e01d1579",30601:"b9b636e8",30727:"dafcba8f",30808:"3641965b",30827:"7e624766",30841:"7f1e8c4a",30959:"17f93cfd",31186:"5e0e8ab1",31328:"29eb0345",31338:"8056ca08",31622:"f267f8a6",31737:"ebed1759",32392:"cc00ad7f",32433:"be30e97a",32571:"5a68ea0e",32618:"ae688b28",32823:"a1f2c0c4",33062:"731adba8",33068:"e3ce92f1",33071:"fa9a95d5",33134:"3e06f93f",33439:"d6f6a7db",33643:"3015bb10",33869:"b6941737",33984:"50586e8c",34670:"931c0ca5",35334:"5d3f6b1c",35499:"b0b06663",35537:"2749a8ed",35649:"ccab7471",35666:"8ce461d7",36095:"79abe347",36147:"de29e740",36167:"d058d3e4",36297:"a4399d62",36361:"66e754e6",36371:"4b2d8d15",36394:"1fa562da",36861:"18f0d8a3",36863:"465e8a0f",36942:"9131be53",37007:"070e15ce",37133:"684285ac",37394:"cf961f60",37440:"f32094ec",37633:"ac27cc7e",37930:"d7107184",37941:"343aa8e3",38086:"830832db",38428:"1745a80b",38488:"729a779f",38670:"188d3a42",38830:"ae17298a",39200:"77ebd669",39558:"14ba81dd",39817:"76249693",39818:"c4cf94ec",40128:"9ced6c14",40216:"067a4ea3",40367:"f8b63d33",40459:"9647927f",40805:"b1f5c711",40824:"bb37192d",41180:"eeb87865",41284:"9ba2094e",41303:"ce079f8c",41314:"178e71c3",41426:"1b60e6ad",41525:"feb1c6a0",41692:"56c070ab",42121:"67cc1435",42277:"3c7226cf",42334:"e4fcafad",42463:"a7c018bf",42656:"a3a963b9",42839:"52021f56",42945:"605dddb1",43109:"617dac45",43171:"3f6e218e",43238:"5683a7ec",43310:"60a4a283",43363:"2e73b235",43408:"de1f7b92",43869:"82e2c468",43871:"8f2b3b63",43972:"4323f540",43993:"e968bd8a",44321:"94316a94",44343:"0ba3e8f0",44436:"4a676aad",44497:"9e2f96c8",44817:"0d43e3cd",44867:"41e99a79",44873:"aff06885",44969:"602720e4",45048:"a61acda3",45244:"59ad943b",45420:"9b88b1eb",45750:"3420c6fd",45768:"ced7982d",46070:"12cfb096",46103:"6483fcf2",46480:"4b883301",46500:"f247ff59",46526:"98b6ebdb",46920:"4a64bfc8",46947:"7481fe46",47265:"61d87b07",47789:"008e6065",47822:"baa8c66e",47890:"b7c646d1",47969:"57fca18a",47999:"681011df",48114:"449f18fa",48233:"96575219",48529:"592ab1cf",48610:"d651ff53",48667:"161b1faa",50139:"33411c5b",50167:"cf674e7c",50609:"1eae2f2b",50670:"bd58aba5",50818:"92b0a7fa",50916:"709ab427",50984:"783f815c",51047:"e5cbe2a6",51084:"9afb13d9",51109:"0e00a255",51294:"c51b8d13",51452:"33dfae6e",51578:"c9980979",51592:"9daf582c",51677:"b76249c6",51684:"8572f8bd",51705:"cd24ca86",51746:"5780aff7",51909:"39d56dfd",52080:"84a312ae",52201:"13081022",52287:"b7dae22e",52535:"004c680a",52606:"d2254261",52753:"2bd937c6",52807:"2d398a2e",53184:"e5527d5e",53237:"51052867",53608:"013eb448",53647:"4e7542ec",53733:"41459e22",53941:"74920a49",54252:"ce78743c",54362:"3a75e0fa",54403:"216cbc50",54488:"eb246110",54640:"9cf368fb",54841:"3924bbec",55055:"ee1a2e91",55126:"ebae5f91",55649:"79623cb2",55932:"1ab156a0",56040:"84051d01",56256:"5f7be7cf",56336:"0d5a8fac",56448:"d6154d4b",56560:"7712fd42",56630:"b7b8e46c",56720:"3365cbb2",56819:"e25bdd9a",56842:"020e579e",56971:"6b06f1ca",57690:"5c316658",57754:"73c5b993",58074:"5563057d",58696:"cd0c9d66",58751:"bbffee6a",58941:"453b7a7d",59364:"b812cdcb",59639:"10acef3e",59673:"36f9306b",60026:"9b10b2b3",60314:"79a217a3",60354:"6d4ad311",60459:"f8258a3d",60499:"32752660",60662:"d860c703",60730:"2f59175b",60793:"798c047f",60846:"15fd0a1d",61826:"b8c4d131",61988:"159450dd",62117:"8bca3fbf",62419:"e4d56b5b",62441:"a8634052",62687:"a2c74eb8",62814:"b8965188",62865:"64dd0a0c",63058:"e4a1b6b7",63165:"c3a7f3a8",63210:"63bade43",63450:"9a192da0",63651:"cc573f44",64013:"5dbc1e46",64043:"790c505d",64065:"ae9fda03",64067:"510bc3c5",64147:"57813650",64197:"f4793025",64414:"46d9e3cb",64492:"dfd2810b",64623:"40f94bad",64788:"9dd01147",64859:"9eb43cc8",65077:"76920580",65217:"df68c804",65379:"f6c34f70",65537:"041290e7",65819:"f4ce2a2e",65899:"4fc9cc21",66065:"312ffbca",66172:"f92d640a",66458:"2367b57c",66647:"3fa8476f",66882:"82389a5c",67005:"1683728e",67143:"bc3aebd5",67145:"04536ab5",67217:"7175b80e",67448:"a009b328",67614:"83928c87",67619:"507f0222",67622:"ab5a3f4b",67862:"d1a30f59",67964:"f4ba6749",68005:"742a1f89",68007:"9e37bb40",68026:"b1ff5aa2",68282:"cf1ef82f",68573:"bfa9c707",68876:"066ca5ad",68900:"a8fea36d",69015:"68dc7854",69186:"ba7de249",69201:"a7923cb1",69959:"a87c1725",70406:"ad44a7d6",70731:"d692e4f7",70866:"efacc5a5",70951:"d7234412",70969:"c677b015",71133:"a44997e8",71478:"addb2d54",71947:"44c0413e",72080:"3cec1011",72178:"b3bc87a8",72484:"eef34a01",72882:"6a91f5a2",73250:"458e858f",73443:"4031a175",73931:"666fcfe7",73986:"00143d72",74096:"93a939a8",74121:"fbe05621",74170:"1d3e5a07",74675:"243c92fb",74824:"5c41590a",74825:"01658c99",74875:"1cb31eec",74962:"8d4c50a8",75103:"f5bee677",75394:"311f28fd",75706:"62333167",75847:"ed01149f",75852:"fa2e6d38",76331:"cad236da",76352:"7e32e3a2",76353:"0128b9b5",76569:"5338f068",76629:"cb2b4875",76939:"2cc51de3",77008:"8b0f8273",77142:"0a02f371",77234:"3ac5d9e5",77363:"2c385e5a",77465:"bdb02167",77521:"2a51d283",77560:"4cf73da0",77659:"b7aaf2eb",77838:"4b96d2d1",77869:"9493beb5",77889:"47ad87ab",77937:"cc579fa4",77963:"63d81a92",78158:"4266a658",78195:"849d5634",78437:"e9099731",78463:"f4d98d4a",79357:"69f6eff0",79702:"8b955371",79716:"d932d43a",80053:"56fe40ec",80115:"0ba8c19c",80146:"f5da489b",80175:"63ef4da2",80337:"9cf75397",80347:"dcb65f27",80368:"26201c33",80469:"0ac6cd91",80632:"f14a4eb3",80925:"8de4e467",81148:"f81c6c57",81187:"2ec688f1",81812:"4322dc5d",82056:"b2667cf2",82178:"54dbaf16",82192:"11a3f0f5",82258:"409be7b2",82297:"0175e637",82444:"d25b84b4",82687:"6f2a0c3d",82763:"debacdcf",83036:"a26427b7",83075:"2175f94c",83088:"8805149a",83108:"31c51b60",83508:"584c1141",83549:"ff26f5c5",83561:"dd319674",83815:"bb4b4f7d",83884:"1e1e3c54",84037:"d682bc47",84247:"222fbd2c",84366:"e6bb7ade",84470:"1866b646",84536:"2abfb354",85027:"58894fca",85029:"9c47af01",85390:"1eac0fff",85620:"72675280",85679:"f787f664",85723:"1ada08b4",85880:"15a94fd0",85950:"ecd6b1fc",86289:"9a7e0507",86551:"c36837fb",86633:"3491cedd",86795:"7595d26c",87387:"9e61304d",87451:"aa872ca4",87538:"361204c8",87584:"ab63f510",87829:"f2d25bcb",87976:"3977c92b",88548:"af7cbe87",88610:"01772a65",88663:"f3de0c87",88893:"b4cb575d",89094:"54784e31",89126:"64e955b9",89127:"70da48ea",89203:"c27973e3",89531:"7fed04fe",89624:"87e7ef62",89819:"aef59422",89856:"8cb80f9e",90297:"5e991863",90341:"9db1b3ad",90437:"3af45951",90439:"1fb02704",90514:"d2cd1d13",90533:"223d1cec",90543:"82bf782f",90661:"438419ec",91324:"64ed419f",91710:"c3fd2c20",91816:"291389df",92105:"925ca3ef",92129:"91fcd43e",92293:"8128b23a",92702:"f0dc4ce0",92778:"40759bad",93041:"3a8f7f74",93089:"918a28fe",93160:"8324a4e1",93231:"7c8693fc",93287:"84dcba94",93317:"0bb7839a",93363:"d3056847",93791:"912d1b85",93811:"6bbc8bea",93848:"2f3937ff",94268:"976ca1b9",94312:"86b276e6",94368:"b3abf07c",94384:"67c17906",94488:"a1492859",94672:"8871b90a",94734:"716a047d",94979:"f1410100",95084:"73ee59cd",95129:"12dcf46a",95299:"cdd33179",95653:"72c5b16c",95924:"e63f2065",96149:"1b875854",96321:"1e561fd7",96370:"a61f8376",96758:"db72aa4a",96822:"02d2a047",96897:"9a96b120",97064:"3cc40e41",97279:"57c54ca9",97325:"ebcf5add",97424:"1a58392b",97547:"b48a7113",97676:"c5baddda",97749:"be384fff",97889:"4b56032a",97920:"8b8de891",98109:"d164103f",98401:"bbc50d1d",98434:"42e3484a",98450:"c1e033ca",98561:"04d42e90",98645:"85b5c9e2",98685:"5a83b72e",99067:"e90a1f5f",99639:"22d80ea9",99662:"55831b3f",99827:"0f07feb1",99924:"7494e51b",99979:"6f6702a4"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,f)=>Object.prototype.hasOwnProperty.call(e,f),c={},b="website:",r.l=(e,f,d,a)=>{if(c[e])c[e].push(f);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var b=c[e];if(delete c[e],t.parentNode&&t.parentNode.removeChild(t),b&&b.forEach((e=>e(d))),f)return f(d)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/",r.gca=function(e){return e={17896441:"27918",26419218:"62865",32632728:"94672",36027025:"28129",46561613:"22636",52099127:"41426",61486960:"18869",66222453:"46500",75408299:"56630",80514956:"50609",82753213:"11729","409da100":"1","686e1776":"323","14f9b0f2":"433","01b81367":"601","6308087d":"602",d213043e:"638","89df0009":"1157","0cd40d9b":"1175","6fb24ff7":"1358","11ce4159":"1531",cf510f60:"1607","0cb5fac6":"1719","86257f88":"1795",a65441a5:"2033","2cd5cbb6":"2074","1e070f27":"2571","8876813e":"2615","202af6b6":"2801",f8409a7e:"3206","9932ae0e":"3663",af7c3e2d:"3779","1badf320":"4068","88aaac27":"4138",a372a63b:"4590",cfdf2b5f:"5016",cc2086a7:"5267","2eaf3a2f":"5758",f8de77c0:"5826",ef3509ef:"6274","19ca9089":"6388",d1576682:"6506","7aad579e":"6517","9e528cee":"6633","78060cbc":"6652","0f8a713b":"6759","9a062e52":"6855","711949de":"7012","125698e9":"7037","1e542d68":"7278","7d9726a8":"7429","3dc68565":"7566",f1db6d6f:"7932",c095dcfa:"8057","7d4c8b40":"8100","90b14878":"8114","4e9707d9":"8159",ce2c6db8:"8248",b819cecb:"8450","1ce131f4":"8551","8d06f620":"8678",e629dea5:"9010",b831fe65:"9157","6be7ee83":"9197","1b381de4":"9305","5624c486":"9331","87d62477":"9551","14eb3368":"9817",be324e15:"9847","8eb4e46b":"10001","3db5b877":"10252","4178efb8":"10537","722146fe":"10722","24556f49":"10744",f8deddba:"10938","97878c65":"10948","4c8cef38":"11126","8fe4bb0e":"11312",b2f554cd:"11477","0e22a4b2":"11558",a7023ddc:"11713",a07ef81b:"11823",ff13fcd4:"12174","204dd830":"12391","479321cf":"12454","957809ee":"12785",b0e766b4:"12949",bf04367c:"13089","90f88783":"13481","3720c009":"13751","318f6953":"13774","769e9ed2":"13869",efac74b2:"13874","2f2ef150":"14079","0ff9eadc":"14640","3cf94527":"15017",f18fbdcd:"15050","56a06382":"15091",fc3ae8bf:"15411","9d3c1a44":"15428","4bddfbdb":"15437",f9651623:"15494","48b0f434":"15867","57bd32c7":"15911","861abce9":"15995",eb514dbf:"16039","42611ca7":"16144",cb9b57ed:"16319",cce51cf2:"16447",f5b890ba:"16502",c67cfbac:"16732",ed26bce9:"16835","427e2c3d":"16836","232c92ba":"16974",fcb295ad:"17642","92999a1c":"18442","5cde4d5c":"18496",cdad2d50:"18509",a7bd4aaa:"18518","5419aa43":"18914","83943ce1":"19821",e8700426:"19902","8f6f7bb5":"19950",dd99bf53:"20019","752c6bfa":"20384","4b8535eb":"20612",dae127b6:"20728","3fc19409":"20735","8c4a23a7":"20739",f440db1d:"20984","39b245d7":"21042",f5f247cc:"21258",dd92571b:"21351",bb624440:"21364","7c4e6415":"21393","459b1c5c":"21396","0b289f4d":"21575","3b568f5a":"21756","3e7d7789":"22108","54024cf2":"22293",ddec1041:"22461",c5ed658f:"23131","89a53707":"23157","1cb65c7d":"23168","766b2171":"23358",aa431e4a:"23512","33d935e4":"23523","71dfd0a8":"23615",fd8ac5c7:"23664",d2864f87:"23685",f7bfbae9:"24404",ec9f380e:"24744","24a07a83":"24871",bc6c5049:"25370","68d17c71":"25425",a0d8b188:"25547","77b7a366":"25624","0b1dc2cd":"25971","042222b7":"26003",ffef4e04:"26027","3e1aa1b6":"26051","18dd62e9":"26285","8d701eb4":"26622",b184781f:"26911","63aeb80b":"27418",a18798d1:"27460","4fc032be":"27483","63243ad1":"27594","213182ef":"27722","39a2c297":"27756","44183a86":"28149","376f2f8c":"28444","860d7f34":"28495","1cbc9cf3":"29219",affd832d:"29453","63be5056":"29593","2dffafe2":"29631","5e95c892":"29661","5552634a":"29719",f7b99134:"29737","3f5148d4":"29754","4fa82ff8":"29769","1365e0a6":"29917",a6d9fcee:"29958","0abe3c97":"29962","7eb5bf2d":"30004","3353503a":"30027","2fafdb99":"30464","0681d8e1":"30601","60262e21":"30727","271a7b09":"30808",a86b7c98:"30827",eb1a9ca0:"30841","09d7020f":"30959",e6e8ac82:"31186","2123995c":"31328","80c4f2d9":"31338","819f977d":"31622",cd988af7:"31737",b072568e:"32433",ec4f6a24:"32571","0ec8745a":"32618","3d312808":"32823","66a08410":"33062",a701d349:"33068","937d7adc":"33071",bc74446d:"33134","53df8e83":"33439",c6200b76:"33643",c6cdd4c0:"33869",e746f759:"33984",b03b3eac:"35334","46f74c3b":"35499","9529487c":"35537","7b667a7f":"35649","068b8e98":"35666","69ea3d78":"36095","0d478160":"36147","423a0e62":"36167","0c7f16c1":"36297","4f0c5301":"36361","163fb342":"36371",edfea66c:"36394","2048b789":"36861",df212c12:"36863",f3782a6b:"36942","8593ff01":"37007",be1aaa14:"37133","151c652b":"37394","79765aba":"37440","907bfa82":"37633","600433a8":"37930","2d15743f":"37941",db676956:"38086","1e90ea6d":"38428","759c01e9":"38488","2804bc6d":"38670","9ff86157":"38830","2b3490d9":"39200",f41c0109:"39558","920c0536":"39817",fb2dd7db:"39818","74525e00":"40128","6e15e01b":"40216",ccf139f5:"40367","429b21e2":"40459",c19ad3d7:"40805","47b3b041":"40824","90dd988c":"41180","2849ed2c":"41284","5d48ec89":"41303","50bf3dcb":"41314",c5980a65:"41525","5727ee78":"41692","2ed8359a":"42121",d9c57d72:"42277","7c9b29bb":"42334","14f81d84":"42463","073e718f":"42656","170d6c86":"42839","5e371f0f":"42945","5a3a719f":"43109",e8d2c25f:"43171","5534fb85":"43238",f761bd07:"43310","03193cc0":"43363","87f861ef":"43408","40c69ef1":"43869",d43cc2ec:"43871","0e736169":"43972",d8fdbe7a:"43993","2253283f":"44321","9f025583":"44343","9edb948e":"44436",f90d8a46:"44497","31fff4a5":"44817",c83c6fdf:"44867","1910946c":"44873","3d0b0327":"44969",d7cb860d:"45048","128a5f34":"45244",fe36d4cd:"45420",aeb8605d:"45750","885555b6":"45768","77530bb9":"46070",ccc49370:"46103","4d69ebec":"46480",a452709a:"46526","7d55a0f0":"46920","752283db":"46947","3db947d3":"47265",e8f62c55:"47789",b1144183:"47822",b7a8f57a:"47890","89c16be8":"47969","1a2b669c":"47999","2497986c":"48114","4e986fc6":"48233","4931a616":"48529","6875c492":"48610","046e2194":"48667","5076d7f9":"50139","2e94733f":"50167","0684a904":"50670","4ec8a4a9":"50818",a51acd91:"50916","54eec65a":"50984",db35e163:"51047",c7d98fe2:"51084","976dc663":"51109","51ada3e3":"51294",c35cb5af:"51452","8e65fbae":"51578","00eeb48c":"51592",e2e8a294:"51677","3f885d22":"51684",a6746ab5:"51705",ca67c4de:"51746","2df21221":"51909","626ef9ce":"52080",f41d5eb1:"52201","66926af2":"52287","814f3328":"52535",bcbbf42e:"52606","146ca1ad":"52753",dd5ac54b:"53184","1df93b7f":"53237","9e4087bc":"53608",fbcfc993:"53647","245d4974":"53733",fac0f815:"53941","679bd524":"54252",c1721191:"54362","062a1a43":"54403","4ab2bb95":"54488",dd5bc5cd:"54640",f3f44898:"54841",bd0db63d:"55055","732b1ff8":"55126",b49860f1:"55649","70c84758":"55932",efef7eb9:"56040","5c653e8d":"56256","3f2d0a0e":"56336",be1609b7:"56448","4bd5fd33":"56560",f1d6ac1e:"56720",bec065e9:"56819","4fd1aaa1":"56842",daf4eece:"56971","2d92dfb9":"57690","7c54c2f8":"57754",b1c60aef:"58074","6196de5a":"58696",f9cc98ab:"58751",d5875de2:"58941",dd3540fa:"59364",bf95ed3d:"59639","1202c0b0":"59673",f714495d:"60026",eda853ca:"60314","788e7a3c":"60354",c3e887d3:"60459",b0cf9b20:"60499","54b27903":"60662",b65c3624:"60730","7e97ad64":"60793","3691c6ec":"60846",ec3c4baa:"61826",c4542d8c:"61988","7cde1f03":"62117","4bee05e8":"62419","2172420b":"62441",bd6bded1:"62687","750b9005":"62814","5b4d43ff":"63058","00ddaded":"63165","5794c75f":"63210",ccfb5782:"63450",b8b35c51:"63651","01a85c17":"64013","60fa46e1":"64043",db0cc9f1:"64065","365a10b6":"64067",b15686f4:"64147","8de38bef":"64197","16ea2389":"64414","5613e7cf":"64492","2a9820b4":"64623","0ae21139":"64788","93bce8ec":"64859",ad536080:"65077","7599f4f1":"65217","43bdf210":"65379",f7f505dc:"65537",f41735e0:"65819",e7d7123e:"65899","303db6c1":"66065",e13166f5:"66172","49b772d3":"66458","7f3e2518":"66647",e5f23965:"66882",d7cf5e1f:"67005","2bd8a6cf":"67143",f1c28687:"67145","49af4b98":"67217","1740b646":"67448","2e78e54c":"67614","98ae4a66":"67619",dbbb982f:"67622",d475de92:"67862",fab64b27:"67964",a91ae4c2:"68005","250d5d50":"68007","6c24c6c6":"68026",a88c4343:"68282",c532175a:"68573","676566fe":"68876","8b38bcbd":"68900","3df11149":"69015",f09f371a:"69186","688193a4":"69201","1aebc10b":"69959","0cbb83d7":"70406","2adc0ba4":"70731",dffc4bd7:"70866",e570d6db:"70951",a20401e4:"70969",fe55d425:"71133","771f38eb":"71478",f20dbcd4:"72080","7ec3d878":"72178","195293b6":"72484","088b3228":"72882",edd7d65c:"73250","110403ef":"73443",a641c963:"73931","5f3507b2":"73986","0d0b9fc6":"74096","55960ee5":"74121",beea6c26:"74170","8e9e3e30":"74675","0627e785":"74824","22e78681":"74825","81d944d1":"74875","4d0779a0":"75103",caa6a735:"75394","9e4ae2cc":"75706","2e4722bd":"75847",f01f44c3:"75852",be0fdac8:"76331","17ae22f4":"76352","51985ffa":"76353","7dbcf43b":"76569",b78f40a6:"76629","1e76467f":"76939","4a1ab9c8":"77008","44ac4dbb":"77142",e72df945:"77234","69c95af3":"77363","6fe6957f":"77465","8b2dd20d":"77521","845c4296":"77560",fc3deafd:"77659",a26a8dd3:"77838","78dd992d":"77869","350ea002":"77889",ea313555:"77937",c5de23c8:"77963",fffcdd84:"78158","2573a9a7":"78195","0f20bda7":"78437",b80596f4:"78463",f616eec2:"79357","7e9fb3d2":"79702",b2d692e7:"79716","935f2afb":"80053",b717531a:"80115",d84e8684:"80146","140321b2":"80175","33f77f6d":"80337","5995366c":"80347","620e72fa":"80368","59abedb6":"80632","3cf7eb9d":"80925","4c2d8fdb":"81148",b972506a:"81187","405d593f":"81812","016d6d21":"82056",e78c3998:"82178",a5a57258:"82192","488a99ce":"82258",dd10dfc1:"82297",b8f3d4c8:"82444","6eae5b23":"82687",a33962b9:"82763",f89b6242:"83036",ac1be023:"83075","2994c7d6":"83088","84861aa7":"83108","413318e8":"83508","7d19a980":"83549","7f6c6f55":"83561","5a16b840":"83815","4a3d03f6":"83884",c0e911ed:"84037","23ef67df":"84247",bf35a812:"84366","00568285":"84470",b104f86f:"84536","02401b2b":"85027","69e0bfe1":"85029","6dd55018":"85390","8526ffa3":"85620",d93dbc28:"85679","6ea8a316":"85723","8c079f7d":"85880","22eddac1":"85950","0592e420":"86289","04d8c43e":"86551","92e5465c":"86633","3c3b6fb9":"86795",d4c755e6:"87387","1b469a71":"87451","9c090340":"87538",e898b7f3:"87584",d9e52d1f:"87829","0631dc07":"87976",e9d548ba:"88548","2e4ab3f3":"88610","2c114e85":"88663","17cacc08":"88893","3d4b58f3":"89094",c8acf440:"89126","09a4ed0c":"89203","99b94e0d":"89531",b6e1085a:"89624",e4c23816:"89819",f7c83201:"89856",b9e9925e:"90297",b976481c:"90341",da42f544:"90437",fcbcdf3c:"90439",fba28ebc:"90514",b2b675dd:"90533",fd485bd3:"90543",fd27c808:"90661","8c241076":"91324","4e3c283c":"91710","28508d4c":"91816",ffc0ac08:"92105","15a4ce61":"92129","4d66ab66":"92293",aacc3e35:"92702",a581e456:"92778",a6aa9e1f:"93089","24adbf31":"93160","9f838734":"93231",fea2b255:"93287","846a5e19":"93317","54350ada":"93363",c6c73cac:"93791","1d14c2f4":"93811","4e30d381":"93848","6b50e60a":"94268",cae36b15:"94312",a94703ab:"94368",c413f1b7:"94384","37e4cb73":"94488","98738a6c":"94734","450b14c3":"94979","351d319b":"95084","357f2143":"95129","9223c52e":"95299",b652e05c:"95653","4665933c":"95924",d2908feb:"96149","90fdb9b5":"96321","43dc46d9":"96370","4ddbfcdc":"96758",b666032b:"96822","4aa262b7":"96897","081149e5":"97064","5422c2e3":"97325","0034bcd6":"97424",fff5a6d1:"97547","4b04eb2b":"97676",a219b733:"97749",e16afba1:"97889","1a4e3797":"97920",c83296ab:"98109",c4f95133:"98401",d5075c4a:"98434","1aa28b52":"98450","4e444002":"98561","5e26083b":"98645",b38a02d7:"98685",bb86fac5:"99067","05c7f781":"99639","193b481a":"99662",bf5d9784:"99827",df203c0f:"99924","987564cc":"99979"}[e]||e,r.p+r.u(e)},(()=>{var e={51303:0,40532:0};r.f.j=(f,d)=>{var c=r.o(e,f)?e[f]:void 0;if(0!==c)if(c)d.push(c[2]);else if(/^(40532|51303)$/.test(f))e[f]=0;else{var b=new Promise(((d,b)=>c=e[f]=[d,b]));d.push(c[2]=b);var a=r.p+r.u(f),t=new Error;r.l(a,(d=>{if(r.o(e,f)&&(0!==(c=e[f])&&(e[f]=void 0),c)){var b=d&&("load"===d.type?"missing":d.type),a=d&&d.target&&d.target.src;t.message="Loading chunk "+f+" failed.\n("+b+": "+a+")",t.name="ChunkLoadError",t.type=b,t.request=a,c[1](t)}}),"chunk-"+f,f)}},r.O.j=f=>0===e[f];var f=(f,d)=>{var c,b,a=d[0],t=d[1],o=d[2],n=0;if(a.some((f=>0!==e[f]))){for(c in t)r.o(t,c)&&(r.m[c]=t[c]);if(o)var i=o(r)}for(f&&f(d);n{"use strict";var e,f,d,c,b,a={},t={};function r(e){var f=t[e];if(void 0!==f)return f.exports;var d=t[e]={id:e,loaded:!1,exports:{}};return a[e].call(d.exports,d,d.exports,r),d.loaded=!0,d.exports}r.m=a,e=[],r.O=(f,d,c,b)=>{if(!d){var a=1/0;for(i=0;i=b)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[d,c,b]},r.n=e=>{var f=e&&e.__esModule?()=>e.default:()=>e;return r.d(f,{a:f}),f},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,c){if(1&c&&(e=this(e)),8&c)return e;if("object"==typeof e&&e){if(4&c&&e.__esModule)return e;if(16&c&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var a={};f=f||[null,d({}),d([]),d(d)];for(var t=2&c&&e;"object"==typeof t&&!~f.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach((f=>a[f]=()=>e[f]));return a.default=()=>e,r.d(b,a),b},r.d=(e,f)=>{for(var d in f)r.o(f,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:f[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((f,d)=>(r.f[d](e,f),f)),[])),r.u=e=>"assets/js/"+({1:"409da100",323:"686e1776",433:"14f9b0f2",601:"01b81367",602:"6308087d",638:"d213043e",1157:"89df0009",1175:"0cd40d9b",1358:"6fb24ff7",1531:"11ce4159",1607:"cf510f60",1719:"0cb5fac6",1795:"86257f88",2033:"a65441a5",2074:"2cd5cbb6",2571:"1e070f27",2615:"8876813e",2801:"202af6b6",3206:"f8409a7e",3663:"9932ae0e",3779:"af7c3e2d",4068:"1badf320",4138:"88aaac27",4590:"a372a63b",5016:"cfdf2b5f",5267:"cc2086a7",5758:"2eaf3a2f",5826:"f8de77c0",6274:"ef3509ef",6388:"19ca9089",6506:"d1576682",6517:"7aad579e",6633:"9e528cee",6652:"78060cbc",6759:"0f8a713b",6855:"9a062e52",7012:"711949de",7037:"125698e9",7278:"1e542d68",7429:"7d9726a8",7566:"3dc68565",7932:"f1db6d6f",8057:"c095dcfa",8100:"7d4c8b40",8114:"90b14878",8159:"4e9707d9",8248:"ce2c6db8",8450:"b819cecb",8551:"1ce131f4",8678:"8d06f620",9010:"e629dea5",9157:"b831fe65",9197:"6be7ee83",9305:"1b381de4",9331:"5624c486",9551:"87d62477",9817:"14eb3368",9847:"be324e15",10001:"8eb4e46b",10252:"3db5b877",10537:"4178efb8",10722:"722146fe",10744:"24556f49",10938:"f8deddba",10948:"97878c65",11126:"4c8cef38",11312:"8fe4bb0e",11477:"b2f554cd",11558:"0e22a4b2",11713:"a7023ddc",11729:"82753213",11823:"a07ef81b",12174:"ff13fcd4",12391:"204dd830",12454:"479321cf",12785:"957809ee",12949:"b0e766b4",13089:"bf04367c",13481:"90f88783",13751:"3720c009",13774:"318f6953",13869:"769e9ed2",13874:"efac74b2",14079:"2f2ef150",14640:"0ff9eadc",15017:"3cf94527",15050:"f18fbdcd",15091:"56a06382",15411:"fc3ae8bf",15428:"9d3c1a44",15437:"4bddfbdb",15494:"f9651623",15867:"48b0f434",15911:"57bd32c7",15995:"861abce9",16039:"eb514dbf",16144:"42611ca7",16319:"cb9b57ed",16447:"cce51cf2",16502:"f5b890ba",16732:"c67cfbac",16835:"ed26bce9",16836:"427e2c3d",16974:"232c92ba",17642:"fcb295ad",18442:"92999a1c",18496:"5cde4d5c",18509:"cdad2d50",18518:"a7bd4aaa",18869:"61486960",18914:"5419aa43",19821:"83943ce1",19902:"e8700426",19950:"8f6f7bb5",20019:"dd99bf53",20384:"752c6bfa",20612:"4b8535eb",20728:"dae127b6",20735:"3fc19409",20739:"8c4a23a7",20984:"f440db1d",21042:"39b245d7",21258:"f5f247cc",21351:"dd92571b",21364:"bb624440",21393:"7c4e6415",21396:"459b1c5c",21575:"0b289f4d",21756:"3b568f5a",22108:"3e7d7789",22293:"54024cf2",22461:"ddec1041",22636:"46561613",23131:"c5ed658f",23157:"89a53707",23168:"1cb65c7d",23358:"766b2171",23512:"aa431e4a",23523:"33d935e4",23615:"71dfd0a8",23664:"fd8ac5c7",23685:"d2864f87",24404:"f7bfbae9",24744:"ec9f380e",24871:"24a07a83",25370:"bc6c5049",25425:"68d17c71",25547:"a0d8b188",25624:"77b7a366",25971:"0b1dc2cd",26003:"042222b7",26027:"ffef4e04",26051:"3e1aa1b6",26285:"18dd62e9",26622:"8d701eb4",26911:"b184781f",27418:"63aeb80b",27460:"a18798d1",27483:"4fc032be",27594:"63243ad1",27722:"213182ef",27756:"39a2c297",27918:"17896441",28129:"36027025",28149:"44183a86",28444:"376f2f8c",28495:"860d7f34",29219:"1cbc9cf3",29453:"affd832d",29593:"63be5056",29631:"2dffafe2",29661:"5e95c892",29719:"5552634a",29737:"f7b99134",29754:"3f5148d4",29769:"4fa82ff8",29917:"1365e0a6",29958:"a6d9fcee",29962:"0abe3c97",30004:"7eb5bf2d",30027:"3353503a",30464:"2fafdb99",30601:"0681d8e1",30727:"60262e21",30808:"271a7b09",30827:"a86b7c98",30841:"eb1a9ca0",30959:"09d7020f",31186:"e6e8ac82",31328:"2123995c",31338:"80c4f2d9",31622:"819f977d",31737:"cd988af7",32433:"b072568e",32571:"ec4f6a24",32618:"0ec8745a",32823:"3d312808",33062:"66a08410",33068:"a701d349",33071:"937d7adc",33134:"bc74446d",33439:"53df8e83",33643:"c6200b76",33869:"c6cdd4c0",33984:"e746f759",35334:"b03b3eac",35499:"46f74c3b",35537:"9529487c",35649:"7b667a7f",35666:"068b8e98",36095:"69ea3d78",36147:"0d478160",36167:"423a0e62",36297:"0c7f16c1",36361:"4f0c5301",36371:"163fb342",36394:"edfea66c",36861:"2048b789",36863:"df212c12",36942:"f3782a6b",37007:"8593ff01",37133:"be1aaa14",37394:"151c652b",37440:"79765aba",37633:"907bfa82",37930:"600433a8",37941:"2d15743f",38086:"db676956",38428:"1e90ea6d",38488:"759c01e9",38670:"2804bc6d",38830:"9ff86157",39200:"2b3490d9",39558:"f41c0109",39817:"920c0536",39818:"fb2dd7db",40128:"74525e00",40216:"6e15e01b",40367:"ccf139f5",40459:"429b21e2",40805:"c19ad3d7",40824:"47b3b041",41180:"90dd988c",41284:"2849ed2c",41303:"5d48ec89",41314:"50bf3dcb",41426:"52099127",41525:"c5980a65",41692:"5727ee78",42121:"2ed8359a",42277:"d9c57d72",42334:"7c9b29bb",42463:"14f81d84",42656:"073e718f",42839:"170d6c86",42945:"5e371f0f",43109:"5a3a719f",43171:"e8d2c25f",43238:"5534fb85",43310:"f761bd07",43363:"03193cc0",43408:"87f861ef",43869:"40c69ef1",43871:"d43cc2ec",43972:"0e736169",43993:"d8fdbe7a",44321:"2253283f",44343:"9f025583",44436:"9edb948e",44497:"f90d8a46",44817:"31fff4a5",44867:"c83c6fdf",44873:"1910946c",44969:"3d0b0327",45048:"d7cb860d",45244:"128a5f34",45420:"fe36d4cd",45750:"aeb8605d",45768:"885555b6",46070:"77530bb9",46103:"ccc49370",46480:"4d69ebec",46500:"66222453",46526:"a452709a",46920:"7d55a0f0",46947:"752283db",47265:"3db947d3",47789:"e8f62c55",47822:"b1144183",47890:"b7a8f57a",47969:"89c16be8",47999:"1a2b669c",48114:"2497986c",48233:"4e986fc6",48529:"4931a616",48610:"6875c492",48667:"046e2194",50139:"5076d7f9",50167:"2e94733f",50609:"80514956",50670:"0684a904",50818:"4ec8a4a9",50916:"a51acd91",50984:"54eec65a",51047:"db35e163",51084:"c7d98fe2",51109:"976dc663",51294:"51ada3e3",51452:"c35cb5af",51578:"8e65fbae",51592:"00eeb48c",51677:"e2e8a294",51684:"3f885d22",51705:"a6746ab5",51746:"ca67c4de",51909:"2df21221",52080:"626ef9ce",52201:"f41d5eb1",52287:"66926af2",52535:"814f3328",52606:"bcbbf42e",52753:"146ca1ad",53184:"dd5ac54b",53237:"1df93b7f",53608:"9e4087bc",53647:"fbcfc993",53733:"245d4974",53941:"fac0f815",54252:"679bd524",54362:"c1721191",54403:"062a1a43",54488:"4ab2bb95",54640:"dd5bc5cd",54841:"f3f44898",55055:"bd0db63d",55126:"732b1ff8",55649:"b49860f1",55932:"70c84758",56040:"efef7eb9",56256:"5c653e8d",56336:"3f2d0a0e",56448:"be1609b7",56560:"4bd5fd33",56630:"75408299",56720:"f1d6ac1e",56819:"bec065e9",56842:"4fd1aaa1",56971:"daf4eece",57690:"2d92dfb9",57754:"7c54c2f8",58074:"b1c60aef",58696:"6196de5a",58751:"f9cc98ab",58941:"d5875de2",59364:"dd3540fa",59639:"bf95ed3d",59673:"1202c0b0",60026:"f714495d",60314:"eda853ca",60354:"788e7a3c",60459:"c3e887d3",60499:"b0cf9b20",60662:"54b27903",60730:"b65c3624",60793:"7e97ad64",60846:"3691c6ec",61826:"ec3c4baa",61988:"c4542d8c",62117:"7cde1f03",62419:"4bee05e8",62441:"2172420b",62687:"bd6bded1",62814:"750b9005",62865:"26419218",63058:"5b4d43ff",63165:"00ddaded",63210:"5794c75f",63450:"ccfb5782",63651:"b8b35c51",64013:"01a85c17",64043:"60fa46e1",64065:"db0cc9f1",64067:"365a10b6",64147:"b15686f4",64197:"8de38bef",64414:"16ea2389",64492:"5613e7cf",64623:"2a9820b4",64788:"0ae21139",64859:"93bce8ec",65077:"ad536080",65217:"7599f4f1",65379:"43bdf210",65537:"f7f505dc",65819:"f41735e0",65899:"e7d7123e",66065:"303db6c1",66172:"e13166f5",66458:"49b772d3",66647:"7f3e2518",66882:"e5f23965",67005:"d7cf5e1f",67143:"2bd8a6cf",67145:"f1c28687",67217:"49af4b98",67448:"1740b646",67614:"2e78e54c",67619:"98ae4a66",67622:"dbbb982f",67862:"d475de92",67964:"fab64b27",68005:"a91ae4c2",68007:"250d5d50",68026:"6c24c6c6",68282:"a88c4343",68573:"c532175a",68876:"676566fe",68900:"8b38bcbd",69015:"3df11149",69186:"f09f371a",69201:"688193a4",69959:"1aebc10b",70406:"0cbb83d7",70731:"2adc0ba4",70866:"dffc4bd7",70951:"e570d6db",70969:"a20401e4",71133:"fe55d425",71478:"771f38eb",72080:"f20dbcd4",72178:"7ec3d878",72484:"195293b6",72882:"088b3228",73250:"edd7d65c",73443:"110403ef",73931:"a641c963",73986:"5f3507b2",74096:"0d0b9fc6",74121:"55960ee5",74170:"beea6c26",74675:"8e9e3e30",74824:"0627e785",74825:"22e78681",74875:"81d944d1",75103:"4d0779a0",75394:"caa6a735",75706:"9e4ae2cc",75847:"2e4722bd",75852:"f01f44c3",76331:"be0fdac8",76352:"17ae22f4",76353:"51985ffa",76569:"7dbcf43b",76629:"b78f40a6",76939:"1e76467f",77008:"4a1ab9c8",77142:"44ac4dbb",77234:"e72df945",77363:"69c95af3",77465:"6fe6957f",77521:"8b2dd20d",77560:"845c4296",77659:"fc3deafd",77838:"a26a8dd3",77869:"78dd992d",77889:"350ea002",77937:"ea313555",77963:"c5de23c8",78158:"fffcdd84",78195:"2573a9a7",78437:"0f20bda7",78463:"b80596f4",79357:"f616eec2",79702:"7e9fb3d2",79716:"b2d692e7",80053:"935f2afb",80115:"b717531a",80146:"d84e8684",80175:"140321b2",80337:"33f77f6d",80347:"5995366c",80368:"620e72fa",80632:"59abedb6",80925:"3cf7eb9d",81148:"4c2d8fdb",81187:"b972506a",81812:"405d593f",82056:"016d6d21",82178:"e78c3998",82192:"a5a57258",82258:"488a99ce",82297:"dd10dfc1",82444:"b8f3d4c8",82687:"6eae5b23",82763:"a33962b9",83036:"f89b6242",83075:"ac1be023",83088:"2994c7d6",83108:"84861aa7",83508:"413318e8",83549:"7d19a980",83561:"7f6c6f55",83815:"5a16b840",83884:"4a3d03f6",84037:"c0e911ed",84247:"23ef67df",84366:"bf35a812",84470:"00568285",84536:"b104f86f",85027:"02401b2b",85029:"69e0bfe1",85390:"6dd55018",85620:"8526ffa3",85679:"d93dbc28",85723:"6ea8a316",85880:"8c079f7d",85950:"22eddac1",86289:"0592e420",86551:"04d8c43e",86633:"92e5465c",86795:"3c3b6fb9",87387:"d4c755e6",87451:"1b469a71",87538:"9c090340",87584:"e898b7f3",87829:"d9e52d1f",87976:"0631dc07",88548:"e9d548ba",88610:"2e4ab3f3",88663:"2c114e85",88893:"17cacc08",89094:"3d4b58f3",89126:"c8acf440",89203:"09a4ed0c",89531:"99b94e0d",89624:"b6e1085a",89819:"e4c23816",89856:"f7c83201",90297:"b9e9925e",90341:"b976481c",90437:"da42f544",90439:"fcbcdf3c",90514:"fba28ebc",90533:"b2b675dd",90543:"fd485bd3",90661:"fd27c808",91324:"8c241076",91710:"4e3c283c",91816:"28508d4c",92105:"ffc0ac08",92129:"15a4ce61",92293:"4d66ab66",92702:"aacc3e35",92778:"a581e456",93089:"a6aa9e1f",93160:"24adbf31",93231:"9f838734",93287:"fea2b255",93317:"846a5e19",93363:"54350ada",93791:"c6c73cac",93811:"1d14c2f4",93848:"4e30d381",94268:"6b50e60a",94312:"cae36b15",94368:"a94703ab",94384:"c413f1b7",94488:"37e4cb73",94672:"32632728",94734:"98738a6c",94979:"450b14c3",95084:"351d319b",95129:"357f2143",95299:"9223c52e",95653:"b652e05c",95924:"4665933c",96149:"d2908feb",96321:"90fdb9b5",96370:"43dc46d9",96758:"4ddbfcdc",96822:"b666032b",96897:"4aa262b7",97064:"081149e5",97325:"5422c2e3",97424:"0034bcd6",97547:"fff5a6d1",97676:"4b04eb2b",97749:"a219b733",97889:"e16afba1",97920:"1a4e3797",98109:"c83296ab",98401:"c4f95133",98434:"d5075c4a",98450:"1aa28b52",98561:"4e444002",98645:"5e26083b",98685:"b38a02d7",99067:"bb86fac5",99639:"05c7f781",99662:"193b481a",99827:"bf5d9784",99924:"df203c0f",99979:"987564cc"}[e]||e)+"."+{1:"1636f741",323:"bea43e6a",433:"015f711f",601:"bc8690a1",602:"b715e1fe",638:"65a764e3",1157:"e63a3921",1175:"a76e53eb",1358:"221c2950",1531:"9d00aa28",1607:"1b7c63bc",1719:"b1443385",1795:"1429f900",2033:"587f96c4",2074:"e977b135",2571:"8a307946",2615:"a211d354",2801:"64b30388",3206:"223b662a",3663:"5b91763c",3779:"f5a038ea",4068:"c499d9aa",4138:"f709a0a7",4590:"903db670",5016:"bf6fef62",5267:"2d99e22a",5758:"fb0bdc44",5826:"35b2d96a",6274:"25a9c89b",6388:"f4ad3aeb",6506:"7df69c28",6517:"522570fd",6633:"f952981a",6652:"d4f46f8b",6759:"aa1c9c5d",6855:"8f968fcb",7012:"f1dd9997",7037:"73615ac4",7278:"90294187",7429:"c3d9fc28",7566:"be2ce9a6",7932:"8c4adee7",8057:"3491d42d",8100:"f08c602c",8114:"9e5d1974",8159:"70e4729a",8248:"41d2e034",8450:"caec9cd3",8551:"86bbcc34",8678:"39a398f5",9010:"4173ce74",9157:"bcb1af17",9197:"cfc7d363",9305:"bf7ab5b5",9331:"c1d2f4ea",9551:"19e4cbb5",9817:"5b3d7c3c",9847:"4dcbee9c",10001:"4ed68892",10252:"61f0b773",10537:"9d4d4e3f",10722:"aaa17e3e",10744:"b26e6c3c",10938:"806a63cf",10948:"c700a578",11126:"d2bfffd1",11312:"9d6213ab",11477:"8231ad3e",11558:"9b243833",11713:"0663d80f",11729:"a95086f0",11823:"855ddaa3",12174:"2f4c20e7",12391:"b0aedcab",12454:"84f9bccd",12700:"5cde9e05",12785:"b48b5e4d",12949:"693d862e",13089:"fd8b84fe",13481:"c304721f",13751:"e5637b19",13774:"70d6abdb",13869:"c2a134de",13874:"5ecd777c",14079:"fc1c277b",14094:"79e76789",14640:"6c7d2b09",15017:"f42ea8e3",15050:"81fa29a3",15091:"b6ef22bb",15411:"c12764d3",15428:"d85305c9",15437:"4edb80b9",15494:"3e13c775",15867:"3c0ff780",15911:"b02da2bb",15995:"c9dce327",16039:"bb6ca03e",16144:"8e66ab12",16319:"c503e87b",16447:"395d4f10",16502:"6cb38524",16732:"b7158047",16835:"8603abef",16836:"84481400",16974:"e3e6c355",17642:"07b1c928",18442:"73a7242c",18496:"c4892f4e",18509:"ef955236",18518:"afb55224",18869:"d9f8dd52",18914:"ed14c83e",19821:"5f0278c8",19902:"30b3c843",19950:"13e2e175",20019:"85834099",20384:"54fb55d8",20612:"e9a597ee",20728:"c8dc0fa2",20735:"a8d36788",20739:"42552037",20984:"8b0b56fe",21042:"f0fb40c9",21258:"fdf02c6d",21351:"036ffdef",21364:"66454df3",21393:"2396003d",21396:"6697c800",21575:"7eab597e",21756:"7f727c83",21947:"e639b456",22108:"e2c9d3f3",22293:"f40bb160",22461:"fe39ec2e",22636:"f08deb9d",23131:"82641341",23157:"c994cb8a",23168:"4ce65f3d",23358:"c239b70e",23512:"99cf35a7",23523:"b359beb6",23615:"8c76db3e",23664:"dddc1183",23685:"36b53202",24404:"59127fd1",24744:"659353a2",24871:"aed5f4f0",25370:"f2887640",25425:"e6968532",25547:"fac976fe",25624:"5a1c6f10",25971:"2e288bee",26003:"757d4c3e",26027:"fed083f1",26051:"1e2c73a0",26285:"58ebab93",26622:"39db6ae8",26911:"ff8172a1",27418:"dd95895d",27460:"8c2849fc",27483:"72d41ff0",27594:"b744d73f",27722:"cb5c3e5e",27756:"716956f8",27918:"eccc8abf",28129:"2b55467c",28149:"4509236d",28444:"ac58a3f8",28495:"0a6915ba",29219:"ddc8f752",29453:"23f5c49b",29593:"51514fae",29631:"195b76c0",29661:"e310c5b6",29719:"be8c0e6b",29737:"da4a5579",29754:"eace0253",29769:"52b79dfd",29917:"e78a441e",29958:"e908f79f",29962:"445691db",30004:"f2e595ca",30027:"cbe52fd4",30464:"e01d1579",30601:"b9b636e8",30727:"dafcba8f",30808:"3641965b",30827:"7e624766",30841:"7f1e8c4a",30959:"17f93cfd",31186:"5e0e8ab1",31328:"29eb0345",31338:"8056ca08",31622:"f267f8a6",31737:"ebed1759",32392:"cc00ad7f",32433:"be30e97a",32571:"5a68ea0e",32618:"ae688b28",32823:"a1f2c0c4",33062:"731adba8",33068:"e3ce92f1",33071:"fa9a95d5",33134:"3e06f93f",33439:"d6f6a7db",33643:"3015bb10",33869:"b6941737",33984:"50586e8c",34670:"931c0ca5",35334:"5d3f6b1c",35499:"b0b06663",35537:"2749a8ed",35649:"ccab7471",35666:"8ce461d7",36095:"79abe347",36147:"de29e740",36167:"d058d3e4",36297:"a4399d62",36361:"66e754e6",36371:"4b2d8d15",36394:"1fa562da",36861:"18f0d8a3",36863:"465e8a0f",36942:"9131be53",37007:"070e15ce",37133:"684285ac",37394:"cf961f60",37440:"f32094ec",37633:"ac27cc7e",37930:"d7107184",37941:"343aa8e3",38086:"830832db",38428:"1745a80b",38488:"729a779f",38670:"188d3a42",38830:"ae17298a",39200:"77ebd669",39558:"14ba81dd",39817:"76249693",39818:"c4cf94ec",40128:"9ced6c14",40216:"067a4ea3",40367:"f8b63d33",40459:"9647927f",40805:"b1f5c711",40824:"bb37192d",41180:"eeb87865",41284:"9ba2094e",41303:"ce079f8c",41314:"178e71c3",41426:"1b60e6ad",41525:"feb1c6a0",41692:"56c070ab",42121:"67cc1435",42277:"3c7226cf",42334:"e4fcafad",42463:"a7c018bf",42656:"a3a963b9",42839:"52021f56",42945:"605dddb1",43109:"617dac45",43171:"3f6e218e",43238:"5683a7ec",43310:"60a4a283",43363:"2e73b235",43408:"de1f7b92",43869:"82e2c468",43871:"8f2b3b63",43972:"4323f540",43993:"e968bd8a",44321:"94316a94",44343:"0ba3e8f0",44436:"4a676aad",44497:"9e2f96c8",44817:"0d43e3cd",44867:"41e99a79",44873:"aff06885",44969:"602720e4",45048:"a61acda3",45244:"59ad943b",45420:"9b88b1eb",45750:"3420c6fd",45768:"ced7982d",46070:"12cfb096",46103:"6483fcf2",46480:"4b883301",46500:"f247ff59",46526:"98b6ebdb",46920:"4a64bfc8",46947:"7481fe46",47265:"61d87b07",47789:"008e6065",47822:"baa8c66e",47890:"b7c646d1",47969:"57fca18a",47999:"681011df",48114:"449f18fa",48233:"96575219",48529:"592ab1cf",48610:"d651ff53",48667:"161b1faa",50139:"33411c5b",50167:"cf674e7c",50609:"1eae2f2b",50670:"bd58aba5",50818:"775ff554",50916:"709ab427",50984:"783f815c",51047:"e5cbe2a6",51084:"9afb13d9",51109:"0e00a255",51294:"c51b8d13",51452:"33dfae6e",51578:"c9980979",51592:"9daf582c",51677:"b76249c6",51684:"8572f8bd",51705:"cd24ca86",51746:"5780aff7",51909:"39d56dfd",52080:"84a312ae",52201:"13081022",52287:"b7dae22e",52535:"004c680a",52606:"d2254261",52753:"2bd937c6",52807:"2d398a2e",53184:"e5527d5e",53237:"51052867",53608:"013eb448",53647:"4e7542ec",53733:"41459e22",53941:"74920a49",54252:"ce78743c",54362:"3a75e0fa",54403:"216cbc50",54488:"eb246110",54640:"9cf368fb",54841:"3924bbec",55055:"ee1a2e91",55126:"ebae5f91",55649:"79623cb2",55932:"1ab156a0",56040:"84051d01",56256:"5f7be7cf",56336:"0d5a8fac",56448:"d6154d4b",56560:"7712fd42",56630:"b7b8e46c",56720:"3365cbb2",56819:"e25bdd9a",56842:"020e579e",56971:"6b06f1ca",57690:"5c316658",57754:"73c5b993",58074:"5563057d",58696:"cd0c9d66",58751:"bbffee6a",58941:"453b7a7d",59364:"b812cdcb",59639:"10acef3e",59673:"36f9306b",60026:"9b10b2b3",60314:"79a217a3",60354:"6d4ad311",60459:"f8258a3d",60499:"32752660",60662:"d860c703",60730:"2f59175b",60793:"798c047f",60846:"15fd0a1d",61826:"b8c4d131",61988:"159450dd",62117:"8bca3fbf",62419:"e4d56b5b",62441:"a8634052",62687:"a2c74eb8",62814:"b8965188",62865:"64dd0a0c",63058:"e4a1b6b7",63165:"c3a7f3a8",63210:"63bade43",63450:"9a192da0",63651:"cc573f44",64013:"5dbc1e46",64043:"790c505d",64065:"ae9fda03",64067:"510bc3c5",64147:"57813650",64197:"f4793025",64414:"46d9e3cb",64492:"dfd2810b",64623:"40f94bad",64788:"9dd01147",64859:"9eb43cc8",65077:"76920580",65217:"df68c804",65379:"f6c34f70",65537:"041290e7",65819:"f4ce2a2e",65899:"4fc9cc21",66065:"312ffbca",66172:"f92d640a",66458:"2367b57c",66647:"3fa8476f",66882:"82389a5c",67005:"1683728e",67143:"bc3aebd5",67145:"04536ab5",67217:"7175b80e",67448:"a009b328",67614:"83928c87",67619:"507f0222",67622:"ab5a3f4b",67862:"d1a30f59",67964:"f4ba6749",68005:"742a1f89",68007:"9e37bb40",68026:"b1ff5aa2",68282:"cf1ef82f",68573:"bfa9c707",68876:"066ca5ad",68900:"a8fea36d",69015:"68dc7854",69186:"ba7de249",69201:"a7923cb1",69959:"a87c1725",70406:"ad44a7d6",70731:"d692e4f7",70866:"efacc5a5",70951:"d7234412",70969:"c677b015",71133:"a44997e8",71478:"addb2d54",71947:"44c0413e",72080:"3cec1011",72178:"b3bc87a8",72484:"eef34a01",72882:"6a91f5a2",73250:"458e858f",73443:"4031a175",73931:"666fcfe7",73986:"00143d72",74096:"93a939a8",74121:"fbe05621",74170:"1d3e5a07",74675:"243c92fb",74824:"5c41590a",74825:"01658c99",74875:"1cb31eec",74962:"8d4c50a8",75103:"f5bee677",75394:"311f28fd",75706:"62333167",75847:"ed01149f",75852:"fa2e6d38",76331:"cad236da",76352:"7e32e3a2",76353:"0128b9b5",76569:"5338f068",76629:"cb2b4875",76939:"2cc51de3",77008:"8b0f8273",77142:"0a02f371",77234:"3ac5d9e5",77363:"2c385e5a",77465:"bdb02167",77521:"2a51d283",77560:"4cf73da0",77659:"b7aaf2eb",77838:"4b96d2d1",77869:"9493beb5",77889:"47ad87ab",77937:"cc579fa4",77963:"63d81a92",78158:"4266a658",78195:"849d5634",78437:"e9099731",78463:"f4d98d4a",79357:"69f6eff0",79702:"8b955371",79716:"d932d43a",80053:"56fe40ec",80115:"0ba8c19c",80146:"f5da489b",80175:"63ef4da2",80337:"9cf75397",80347:"dcb65f27",80368:"26201c33",80469:"0ac6cd91",80632:"f14a4eb3",80925:"8de4e467",81148:"f81c6c57",81187:"2ec688f1",81812:"4322dc5d",82056:"b2667cf2",82178:"54dbaf16",82192:"11a3f0f5",82258:"409be7b2",82297:"0175e637",82444:"d25b84b4",82687:"6f2a0c3d",82763:"debacdcf",83036:"a26427b7",83075:"2175f94c",83088:"8805149a",83108:"31c51b60",83508:"584c1141",83549:"ff26f5c5",83561:"dd319674",83815:"bb4b4f7d",83884:"1e1e3c54",84037:"d682bc47",84247:"222fbd2c",84366:"e6bb7ade",84470:"1866b646",84536:"2abfb354",85027:"58894fca",85029:"9c47af01",85390:"1eac0fff",85620:"72675280",85679:"f787f664",85723:"1ada08b4",85880:"15a94fd0",85950:"ecd6b1fc",86289:"9a7e0507",86551:"c36837fb",86633:"3491cedd",86795:"7595d26c",87387:"9e61304d",87451:"aa872ca4",87538:"361204c8",87584:"ab63f510",87829:"f2d25bcb",87976:"3977c92b",88548:"af7cbe87",88610:"01772a65",88663:"f3de0c87",88893:"a58c2962",89094:"54784e31",89126:"64e955b9",89127:"70da48ea",89203:"c27973e3",89531:"7fed04fe",89624:"87e7ef62",89819:"aef59422",89856:"8cb80f9e",90297:"5e991863",90341:"9db1b3ad",90437:"3af45951",90439:"1fb02704",90514:"d2cd1d13",90533:"223d1cec",90543:"82bf782f",90661:"438419ec",91324:"64ed419f",91710:"c3fd2c20",91816:"291389df",92105:"925ca3ef",92129:"91fcd43e",92293:"8128b23a",92702:"f0dc4ce0",92778:"40759bad",93041:"3a8f7f74",93089:"918a28fe",93160:"8324a4e1",93231:"7c8693fc",93287:"84dcba94",93317:"0bb7839a",93363:"d3056847",93791:"912d1b85",93811:"6bbc8bea",93848:"2f3937ff",94268:"976ca1b9",94312:"86b276e6",94368:"b3abf07c",94384:"67c17906",94488:"a1492859",94672:"8871b90a",94734:"716a047d",94979:"f1410100",95084:"73ee59cd",95129:"12dcf46a",95299:"cdd33179",95653:"72c5b16c",95924:"e63f2065",96149:"1b875854",96321:"1e561fd7",96370:"a61f8376",96758:"db72aa4a",96822:"02d2a047",96897:"9a96b120",97064:"3cc40e41",97279:"57c54ca9",97325:"ebcf5add",97424:"1a58392b",97547:"b48a7113",97676:"c5baddda",97749:"be384fff",97889:"4b56032a",97920:"8b8de891",98109:"d164103f",98401:"bbc50d1d",98434:"42e3484a",98450:"c1e033ca",98561:"04d42e90",98645:"85b5c9e2",98685:"5a83b72e",99067:"e90a1f5f",99639:"22d80ea9",99662:"55831b3f",99827:"0f07feb1",99924:"7494e51b",99979:"6f6702a4"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,f)=>Object.prototype.hasOwnProperty.call(e,f),c={},b="website:",r.l=(e,f,d,a)=>{if(c[e])c[e].push(f);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var b=c[e];if(delete c[e],t.parentNode&&t.parentNode.removeChild(t),b&&b.forEach((e=>e(d))),f)return f(d)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/",r.gca=function(e){return e={17896441:"27918",26419218:"62865",32632728:"94672",36027025:"28129",46561613:"22636",52099127:"41426",61486960:"18869",66222453:"46500",75408299:"56630",80514956:"50609",82753213:"11729","409da100":"1","686e1776":"323","14f9b0f2":"433","01b81367":"601","6308087d":"602",d213043e:"638","89df0009":"1157","0cd40d9b":"1175","6fb24ff7":"1358","11ce4159":"1531",cf510f60:"1607","0cb5fac6":"1719","86257f88":"1795",a65441a5:"2033","2cd5cbb6":"2074","1e070f27":"2571","8876813e":"2615","202af6b6":"2801",f8409a7e:"3206","9932ae0e":"3663",af7c3e2d:"3779","1badf320":"4068","88aaac27":"4138",a372a63b:"4590",cfdf2b5f:"5016",cc2086a7:"5267","2eaf3a2f":"5758",f8de77c0:"5826",ef3509ef:"6274","19ca9089":"6388",d1576682:"6506","7aad579e":"6517","9e528cee":"6633","78060cbc":"6652","0f8a713b":"6759","9a062e52":"6855","711949de":"7012","125698e9":"7037","1e542d68":"7278","7d9726a8":"7429","3dc68565":"7566",f1db6d6f:"7932",c095dcfa:"8057","7d4c8b40":"8100","90b14878":"8114","4e9707d9":"8159",ce2c6db8:"8248",b819cecb:"8450","1ce131f4":"8551","8d06f620":"8678",e629dea5:"9010",b831fe65:"9157","6be7ee83":"9197","1b381de4":"9305","5624c486":"9331","87d62477":"9551","14eb3368":"9817",be324e15:"9847","8eb4e46b":"10001","3db5b877":"10252","4178efb8":"10537","722146fe":"10722","24556f49":"10744",f8deddba:"10938","97878c65":"10948","4c8cef38":"11126","8fe4bb0e":"11312",b2f554cd:"11477","0e22a4b2":"11558",a7023ddc:"11713",a07ef81b:"11823",ff13fcd4:"12174","204dd830":"12391","479321cf":"12454","957809ee":"12785",b0e766b4:"12949",bf04367c:"13089","90f88783":"13481","3720c009":"13751","318f6953":"13774","769e9ed2":"13869",efac74b2:"13874","2f2ef150":"14079","0ff9eadc":"14640","3cf94527":"15017",f18fbdcd:"15050","56a06382":"15091",fc3ae8bf:"15411","9d3c1a44":"15428","4bddfbdb":"15437",f9651623:"15494","48b0f434":"15867","57bd32c7":"15911","861abce9":"15995",eb514dbf:"16039","42611ca7":"16144",cb9b57ed:"16319",cce51cf2:"16447",f5b890ba:"16502",c67cfbac:"16732",ed26bce9:"16835","427e2c3d":"16836","232c92ba":"16974",fcb295ad:"17642","92999a1c":"18442","5cde4d5c":"18496",cdad2d50:"18509",a7bd4aaa:"18518","5419aa43":"18914","83943ce1":"19821",e8700426:"19902","8f6f7bb5":"19950",dd99bf53:"20019","752c6bfa":"20384","4b8535eb":"20612",dae127b6:"20728","3fc19409":"20735","8c4a23a7":"20739",f440db1d:"20984","39b245d7":"21042",f5f247cc:"21258",dd92571b:"21351",bb624440:"21364","7c4e6415":"21393","459b1c5c":"21396","0b289f4d":"21575","3b568f5a":"21756","3e7d7789":"22108","54024cf2":"22293",ddec1041:"22461",c5ed658f:"23131","89a53707":"23157","1cb65c7d":"23168","766b2171":"23358",aa431e4a:"23512","33d935e4":"23523","71dfd0a8":"23615",fd8ac5c7:"23664",d2864f87:"23685",f7bfbae9:"24404",ec9f380e:"24744","24a07a83":"24871",bc6c5049:"25370","68d17c71":"25425",a0d8b188:"25547","77b7a366":"25624","0b1dc2cd":"25971","042222b7":"26003",ffef4e04:"26027","3e1aa1b6":"26051","18dd62e9":"26285","8d701eb4":"26622",b184781f:"26911","63aeb80b":"27418",a18798d1:"27460","4fc032be":"27483","63243ad1":"27594","213182ef":"27722","39a2c297":"27756","44183a86":"28149","376f2f8c":"28444","860d7f34":"28495","1cbc9cf3":"29219",affd832d:"29453","63be5056":"29593","2dffafe2":"29631","5e95c892":"29661","5552634a":"29719",f7b99134:"29737","3f5148d4":"29754","4fa82ff8":"29769","1365e0a6":"29917",a6d9fcee:"29958","0abe3c97":"29962","7eb5bf2d":"30004","3353503a":"30027","2fafdb99":"30464","0681d8e1":"30601","60262e21":"30727","271a7b09":"30808",a86b7c98:"30827",eb1a9ca0:"30841","09d7020f":"30959",e6e8ac82:"31186","2123995c":"31328","80c4f2d9":"31338","819f977d":"31622",cd988af7:"31737",b072568e:"32433",ec4f6a24:"32571","0ec8745a":"32618","3d312808":"32823","66a08410":"33062",a701d349:"33068","937d7adc":"33071",bc74446d:"33134","53df8e83":"33439",c6200b76:"33643",c6cdd4c0:"33869",e746f759:"33984",b03b3eac:"35334","46f74c3b":"35499","9529487c":"35537","7b667a7f":"35649","068b8e98":"35666","69ea3d78":"36095","0d478160":"36147","423a0e62":"36167","0c7f16c1":"36297","4f0c5301":"36361","163fb342":"36371",edfea66c:"36394","2048b789":"36861",df212c12:"36863",f3782a6b:"36942","8593ff01":"37007",be1aaa14:"37133","151c652b":"37394","79765aba":"37440","907bfa82":"37633","600433a8":"37930","2d15743f":"37941",db676956:"38086","1e90ea6d":"38428","759c01e9":"38488","2804bc6d":"38670","9ff86157":"38830","2b3490d9":"39200",f41c0109:"39558","920c0536":"39817",fb2dd7db:"39818","74525e00":"40128","6e15e01b":"40216",ccf139f5:"40367","429b21e2":"40459",c19ad3d7:"40805","47b3b041":"40824","90dd988c":"41180","2849ed2c":"41284","5d48ec89":"41303","50bf3dcb":"41314",c5980a65:"41525","5727ee78":"41692","2ed8359a":"42121",d9c57d72:"42277","7c9b29bb":"42334","14f81d84":"42463","073e718f":"42656","170d6c86":"42839","5e371f0f":"42945","5a3a719f":"43109",e8d2c25f:"43171","5534fb85":"43238",f761bd07:"43310","03193cc0":"43363","87f861ef":"43408","40c69ef1":"43869",d43cc2ec:"43871","0e736169":"43972",d8fdbe7a:"43993","2253283f":"44321","9f025583":"44343","9edb948e":"44436",f90d8a46:"44497","31fff4a5":"44817",c83c6fdf:"44867","1910946c":"44873","3d0b0327":"44969",d7cb860d:"45048","128a5f34":"45244",fe36d4cd:"45420",aeb8605d:"45750","885555b6":"45768","77530bb9":"46070",ccc49370:"46103","4d69ebec":"46480",a452709a:"46526","7d55a0f0":"46920","752283db":"46947","3db947d3":"47265",e8f62c55:"47789",b1144183:"47822",b7a8f57a:"47890","89c16be8":"47969","1a2b669c":"47999","2497986c":"48114","4e986fc6":"48233","4931a616":"48529","6875c492":"48610","046e2194":"48667","5076d7f9":"50139","2e94733f":"50167","0684a904":"50670","4ec8a4a9":"50818",a51acd91:"50916","54eec65a":"50984",db35e163:"51047",c7d98fe2:"51084","976dc663":"51109","51ada3e3":"51294",c35cb5af:"51452","8e65fbae":"51578","00eeb48c":"51592",e2e8a294:"51677","3f885d22":"51684",a6746ab5:"51705",ca67c4de:"51746","2df21221":"51909","626ef9ce":"52080",f41d5eb1:"52201","66926af2":"52287","814f3328":"52535",bcbbf42e:"52606","146ca1ad":"52753",dd5ac54b:"53184","1df93b7f":"53237","9e4087bc":"53608",fbcfc993:"53647","245d4974":"53733",fac0f815:"53941","679bd524":"54252",c1721191:"54362","062a1a43":"54403","4ab2bb95":"54488",dd5bc5cd:"54640",f3f44898:"54841",bd0db63d:"55055","732b1ff8":"55126",b49860f1:"55649","70c84758":"55932",efef7eb9:"56040","5c653e8d":"56256","3f2d0a0e":"56336",be1609b7:"56448","4bd5fd33":"56560",f1d6ac1e:"56720",bec065e9:"56819","4fd1aaa1":"56842",daf4eece:"56971","2d92dfb9":"57690","7c54c2f8":"57754",b1c60aef:"58074","6196de5a":"58696",f9cc98ab:"58751",d5875de2:"58941",dd3540fa:"59364",bf95ed3d:"59639","1202c0b0":"59673",f714495d:"60026",eda853ca:"60314","788e7a3c":"60354",c3e887d3:"60459",b0cf9b20:"60499","54b27903":"60662",b65c3624:"60730","7e97ad64":"60793","3691c6ec":"60846",ec3c4baa:"61826",c4542d8c:"61988","7cde1f03":"62117","4bee05e8":"62419","2172420b":"62441",bd6bded1:"62687","750b9005":"62814","5b4d43ff":"63058","00ddaded":"63165","5794c75f":"63210",ccfb5782:"63450",b8b35c51:"63651","01a85c17":"64013","60fa46e1":"64043",db0cc9f1:"64065","365a10b6":"64067",b15686f4:"64147","8de38bef":"64197","16ea2389":"64414","5613e7cf":"64492","2a9820b4":"64623","0ae21139":"64788","93bce8ec":"64859",ad536080:"65077","7599f4f1":"65217","43bdf210":"65379",f7f505dc:"65537",f41735e0:"65819",e7d7123e:"65899","303db6c1":"66065",e13166f5:"66172","49b772d3":"66458","7f3e2518":"66647",e5f23965:"66882",d7cf5e1f:"67005","2bd8a6cf":"67143",f1c28687:"67145","49af4b98":"67217","1740b646":"67448","2e78e54c":"67614","98ae4a66":"67619",dbbb982f:"67622",d475de92:"67862",fab64b27:"67964",a91ae4c2:"68005","250d5d50":"68007","6c24c6c6":"68026",a88c4343:"68282",c532175a:"68573","676566fe":"68876","8b38bcbd":"68900","3df11149":"69015",f09f371a:"69186","688193a4":"69201","1aebc10b":"69959","0cbb83d7":"70406","2adc0ba4":"70731",dffc4bd7:"70866",e570d6db:"70951",a20401e4:"70969",fe55d425:"71133","771f38eb":"71478",f20dbcd4:"72080","7ec3d878":"72178","195293b6":"72484","088b3228":"72882",edd7d65c:"73250","110403ef":"73443",a641c963:"73931","5f3507b2":"73986","0d0b9fc6":"74096","55960ee5":"74121",beea6c26:"74170","8e9e3e30":"74675","0627e785":"74824","22e78681":"74825","81d944d1":"74875","4d0779a0":"75103",caa6a735:"75394","9e4ae2cc":"75706","2e4722bd":"75847",f01f44c3:"75852",be0fdac8:"76331","17ae22f4":"76352","51985ffa":"76353","7dbcf43b":"76569",b78f40a6:"76629","1e76467f":"76939","4a1ab9c8":"77008","44ac4dbb":"77142",e72df945:"77234","69c95af3":"77363","6fe6957f":"77465","8b2dd20d":"77521","845c4296":"77560",fc3deafd:"77659",a26a8dd3:"77838","78dd992d":"77869","350ea002":"77889",ea313555:"77937",c5de23c8:"77963",fffcdd84:"78158","2573a9a7":"78195","0f20bda7":"78437",b80596f4:"78463",f616eec2:"79357","7e9fb3d2":"79702",b2d692e7:"79716","935f2afb":"80053",b717531a:"80115",d84e8684:"80146","140321b2":"80175","33f77f6d":"80337","5995366c":"80347","620e72fa":"80368","59abedb6":"80632","3cf7eb9d":"80925","4c2d8fdb":"81148",b972506a:"81187","405d593f":"81812","016d6d21":"82056",e78c3998:"82178",a5a57258:"82192","488a99ce":"82258",dd10dfc1:"82297",b8f3d4c8:"82444","6eae5b23":"82687",a33962b9:"82763",f89b6242:"83036",ac1be023:"83075","2994c7d6":"83088","84861aa7":"83108","413318e8":"83508","7d19a980":"83549","7f6c6f55":"83561","5a16b840":"83815","4a3d03f6":"83884",c0e911ed:"84037","23ef67df":"84247",bf35a812:"84366","00568285":"84470",b104f86f:"84536","02401b2b":"85027","69e0bfe1":"85029","6dd55018":"85390","8526ffa3":"85620",d93dbc28:"85679","6ea8a316":"85723","8c079f7d":"85880","22eddac1":"85950","0592e420":"86289","04d8c43e":"86551","92e5465c":"86633","3c3b6fb9":"86795",d4c755e6:"87387","1b469a71":"87451","9c090340":"87538",e898b7f3:"87584",d9e52d1f:"87829","0631dc07":"87976",e9d548ba:"88548","2e4ab3f3":"88610","2c114e85":"88663","17cacc08":"88893","3d4b58f3":"89094",c8acf440:"89126","09a4ed0c":"89203","99b94e0d":"89531",b6e1085a:"89624",e4c23816:"89819",f7c83201:"89856",b9e9925e:"90297",b976481c:"90341",da42f544:"90437",fcbcdf3c:"90439",fba28ebc:"90514",b2b675dd:"90533",fd485bd3:"90543",fd27c808:"90661","8c241076":"91324","4e3c283c":"91710","28508d4c":"91816",ffc0ac08:"92105","15a4ce61":"92129","4d66ab66":"92293",aacc3e35:"92702",a581e456:"92778",a6aa9e1f:"93089","24adbf31":"93160","9f838734":"93231",fea2b255:"93287","846a5e19":"93317","54350ada":"93363",c6c73cac:"93791","1d14c2f4":"93811","4e30d381":"93848","6b50e60a":"94268",cae36b15:"94312",a94703ab:"94368",c413f1b7:"94384","37e4cb73":"94488","98738a6c":"94734","450b14c3":"94979","351d319b":"95084","357f2143":"95129","9223c52e":"95299",b652e05c:"95653","4665933c":"95924",d2908feb:"96149","90fdb9b5":"96321","43dc46d9":"96370","4ddbfcdc":"96758",b666032b:"96822","4aa262b7":"96897","081149e5":"97064","5422c2e3":"97325","0034bcd6":"97424",fff5a6d1:"97547","4b04eb2b":"97676",a219b733:"97749",e16afba1:"97889","1a4e3797":"97920",c83296ab:"98109",c4f95133:"98401",d5075c4a:"98434","1aa28b52":"98450","4e444002":"98561","5e26083b":"98645",b38a02d7:"98685",bb86fac5:"99067","05c7f781":"99639","193b481a":"99662",bf5d9784:"99827",df203c0f:"99924","987564cc":"99979"}[e]||e,r.p+r.u(e)},(()=>{var e={51303:0,40532:0};r.f.j=(f,d)=>{var c=r.o(e,f)?e[f]:void 0;if(0!==c)if(c)d.push(c[2]);else if(/^(40532|51303)$/.test(f))e[f]=0;else{var b=new Promise(((d,b)=>c=e[f]=[d,b]));d.push(c[2]=b);var a=r.p+r.u(f),t=new Error;r.l(a,(d=>{if(r.o(e,f)&&(0!==(c=e[f])&&(e[f]=void 0),c)){var b=d&&("load"===d.type?"missing":d.type),a=d&&d.target&&d.target.src;t.message="Loading chunk "+f+" failed.\n("+b+": "+a+")",t.name="ChunkLoadError",t.type=b,t.request=a,c[1](t)}}),"chunk-"+f,f)}},r.O.j=f=>0===e[f];var f=(f,d)=>{var c,b,a=d[0],t=d[1],o=d[2],n=0;if(a.some((f=>0!==e[f]))){for(c in t)r.o(t,c)&&(r.m[c]=t[c]);if(o)var i=o(r)}for(f&&f(d);n
-
+
diff --git a/blog/2023-roadmap.html b/blog/2023-roadmap.html
index 10b4efab657..c581f240523 100644
--- a/blog/2023-roadmap.html
+++ b/blog/2023-roadmap.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/2024-roadmap.html b/blog/2024-roadmap.html
index 4af54d66600..f16c3db31c9 100644
--- a/blog/2024-roadmap.html
+++ b/blog/2024-roadmap.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/archive.html b/blog/archive.html
index c6f63d5c3b1..a2bbe7aa969 100644
--- a/blog/archive.html
+++ b/blog/archive.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.0.html b/blog/moon-v1.0.html
index 675af4050d3..48f57f8b837 100644
--- a/blog/moon-v1.0.html
+++ b/blog/moon-v1.0.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.1.html b/blog/moon-v1.1.html
index a3066320e53..98840c2b1f3 100644
--- a/blog/moon-v1.1.html
+++ b/blog/moon-v1.1.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.10.html b/blog/moon-v1.10.html
index 923216a3d32..098248a1493 100644
--- a/blog/moon-v1.10.html
+++ b/blog/moon-v1.10.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.11.html b/blog/moon-v1.11.html
index f13574f19cd..52baae8022b 100644
--- a/blog/moon-v1.11.html
+++ b/blog/moon-v1.11.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.12.html b/blog/moon-v1.12.html
index 061f824cfab..eefab3e519c 100644
--- a/blog/moon-v1.12.html
+++ b/blog/moon-v1.12.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.13.html b/blog/moon-v1.13.html
index 7f75f21b6ca..ac86912c9f8 100644
--- a/blog/moon-v1.13.html
+++ b/blog/moon-v1.13.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.14.html b/blog/moon-v1.14.html
index 5f53e2391d2..dbf6bf97c4e 100644
--- a/blog/moon-v1.14.html
+++ b/blog/moon-v1.14.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.15.html b/blog/moon-v1.15.html
index d950a1b7d6f..b3d849da400 100644
--- a/blog/moon-v1.15.html
+++ b/blog/moon-v1.15.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.16.html b/blog/moon-v1.16.html
index 7a0687d1049..15fd5429100 100644
--- a/blog/moon-v1.16.html
+++ b/blog/moon-v1.16.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.17.html b/blog/moon-v1.17.html
index e25733682db..396c9a11bc0 100644
--- a/blog/moon-v1.17.html
+++ b/blog/moon-v1.17.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.18.html b/blog/moon-v1.18.html
index f6df36b4b9d..4ca0c7b501a 100644
--- a/blog/moon-v1.18.html
+++ b/blog/moon-v1.18.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.19.html b/blog/moon-v1.19.html
index 310280ad42c..7446655c130 100644
--- a/blog/moon-v1.19.html
+++ b/blog/moon-v1.19.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.2.html b/blog/moon-v1.2.html
index 6aef791417c..8a588bebdb7 100644
--- a/blog/moon-v1.2.html
+++ b/blog/moon-v1.2.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.20.html b/blog/moon-v1.20.html
index 049b7ded820..c0e7f47b134 100644
--- a/blog/moon-v1.20.html
+++ b/blog/moon-v1.20.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.21.html b/blog/moon-v1.21.html
index 742b625eab9..c8541094df3 100644
--- a/blog/moon-v1.21.html
+++ b/blog/moon-v1.21.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.22.html b/blog/moon-v1.22.html
index e379fac413b..66e43552f11 100644
--- a/blog/moon-v1.22.html
+++ b/blog/moon-v1.22.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.3.html b/blog/moon-v1.3.html
index 651ffa6fee8..3eee0e31511 100644
--- a/blog/moon-v1.3.html
+++ b/blog/moon-v1.3.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.4.html b/blog/moon-v1.4.html
index 4d958ac2146..2efebb706f3 100644
--- a/blog/moon-v1.4.html
+++ b/blog/moon-v1.4.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.5.html b/blog/moon-v1.5.html
index 7164a633bcd..b58734f92f6 100644
--- a/blog/moon-v1.5.html
+++ b/blog/moon-v1.5.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.6.html b/blog/moon-v1.6.html
index 2f6cdfcc321..f25f7db11f2 100644
--- a/blog/moon-v1.6.html
+++ b/blog/moon-v1.6.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.7.html b/blog/moon-v1.7.html
index 3a135b1a507..6d6995de33c 100644
--- a/blog/moon-v1.7.html
+++ b/blog/moon-v1.7.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.8.html b/blog/moon-v1.8.html
index 929527602d5..91543c5506e 100644
--- a/blog/moon-v1.8.html
+++ b/blog/moon-v1.8.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moon-v1.9.html b/blog/moon-v1.9.html
index ba27d9ef5fc..60e4ab846a7 100644
--- a/blog/moon-v1.9.html
+++ b/blog/moon-v1.9.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/moonbase.html b/blog/moonbase.html
index 70ef28b0428..e308f69185c 100644
--- a/blog/moonbase.html
+++ b/blog/moonbase.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/page/2.html b/blog/page/2.html
index 1035fa43476..4b02bacb957 100644
--- a/blog/page/2.html
+++ b/blog/page/2.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/page/3.html b/blog/page/3.html
index 76b40e307f0..b2d13dc0d56 100644
--- a/blog/page/3.html
+++ b/blog/page/3.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/page/4.html b/blog/page/4.html
index 508f888bc4c..f57c7ce9fd8 100644
--- a/blog/page/4.html
+++ b/blog/page/4.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/page/5.html b/blog/page/5.html
index 66bb5591253..dd62f3403e3 100644
--- a/blog/page/5.html
+++ b/blog/page/5.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/page/6.html b/blog/page/6.html
index 5c387b3b2aa..66dbe9f8aee 100644
--- a/blog/page/6.html
+++ b/blog/page/6.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/page/7.html b/blog/page/7.html
index 1cb2e8324cc..7402d03e8cb 100644
--- a/blog/page/7.html
+++ b/blog/page/7.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.11.html b/blog/proto-v0.11.html
index 47c5b3224b1..eda8e0ee6c3 100644
--- a/blog/proto-v0.11.html
+++ b/blog/proto-v0.11.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.12.html b/blog/proto-v0.12.html
index 0ca5e55f3b2..32f90d3f1a0 100644
--- a/blog/proto-v0.12.html
+++ b/blog/proto-v0.12.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.13.html b/blog/proto-v0.13.html
index 4e8835d2d91..48100a29203 100644
--- a/blog/proto-v0.13.html
+++ b/blog/proto-v0.13.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.14.html b/blog/proto-v0.14.html
index 2462c332f71..9387527ee56 100644
--- a/blog/proto-v0.14.html
+++ b/blog/proto-v0.14.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.15.html b/blog/proto-v0.15.html
index b1d0f16f76c..0eaf2da1fff 100644
--- a/blog/proto-v0.15.html
+++ b/blog/proto-v0.15.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.16.html b/blog/proto-v0.16.html
index f0d726f3da2..b847eb835a2 100644
--- a/blog/proto-v0.16.html
+++ b/blog/proto-v0.16.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.17.html b/blog/proto-v0.17.html
index 7f35bed2bb1..d5ccfd36c33 100644
--- a/blog/proto-v0.17.html
+++ b/blog/proto-v0.17.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.18.html b/blog/proto-v0.18.html
index d4d38bfc4e2..ccc14d9c2fe 100644
--- a/blog/proto-v0.18.html
+++ b/blog/proto-v0.18.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.19.html b/blog/proto-v0.19.html
index 66152efcf8d..7cb51cfa05e 100644
--- a/blog/proto-v0.19.html
+++ b/blog/proto-v0.19.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.20.html b/blog/proto-v0.20.html
index cc4e2fd7b31..10c6a746e73 100644
--- a/blog/proto-v0.20.html
+++ b/blog/proto-v0.20.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.21.html b/blog/proto-v0.21.html
index ffb38fc53a9..994e5e06fad 100644
--- a/blog/proto-v0.21.html
+++ b/blog/proto-v0.21.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.23.html b/blog/proto-v0.23.html
index fb01dbcd15e..a3f0e2b0ae3 100644
--- a/blog/proto-v0.23.html
+++ b/blog/proto-v0.23.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.24.html b/blog/proto-v0.24.html
index 3ff56c458dc..71f58407976 100644
--- a/blog/proto-v0.24.html
+++ b/blog/proto-v0.24.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.25.html b/blog/proto-v0.25.html
index 155bc27a226..48f4ce28c96 100644
--- a/blog/proto-v0.25.html
+++ b/blog/proto-v0.25.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.26-rc.html b/blog/proto-v0.26-rc.html
index cb9a3c7f9f5..a1b0f8ca5be 100644
--- a/blog/proto-v0.26-rc.html
+++ b/blog/proto-v0.26-rc.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.26.html b/blog/proto-v0.26.html
index 2b8b36e7f94..7a15bf90735 100644
--- a/blog/proto-v0.26.html
+++ b/blog/proto-v0.26.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.27.html b/blog/proto-v0.27.html
index 15ba843785f..1f3d3c8d766 100644
--- a/blog/proto-v0.27.html
+++ b/blog/proto-v0.27.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.28.html b/blog/proto-v0.28.html
index a078553fdfd..99fa853d02d 100644
--- a/blog/proto-v0.28.html
+++ b/blog/proto-v0.28.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.29.html b/blog/proto-v0.29.html
index 052937f4141..757fcc1e685 100644
--- a/blog/proto-v0.29.html
+++ b/blog/proto-v0.29.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.3.html b/blog/proto-v0.3.html
index 4d783690630..5cc4cc73fe2 100644
--- a/blog/proto-v0.3.html
+++ b/blog/proto-v0.3.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.4.html b/blog/proto-v0.4.html
index e867d5c1c47..6a9845f803e 100644
--- a/blog/proto-v0.4.html
+++ b/blog/proto-v0.4.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.5.html b/blog/proto-v0.5.html
index fcf1010bc8a..50326c0e4a1 100644
--- a/blog/proto-v0.5.html
+++ b/blog/proto-v0.5.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.6.html b/blog/proto-v0.6.html
index 28ae033af94..d0d270ba29f 100644
--- a/blog/proto-v0.6.html
+++ b/blog/proto-v0.6.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.7.html b/blog/proto-v0.7.html
index 3c57f800cea..cf996b9c147 100644
--- a/blog/proto-v0.7.html
+++ b/blog/proto-v0.7.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.8.html b/blog/proto-v0.8.html
index 8424ddbca3a..8e7ea2e137c 100644
--- a/blog/proto-v0.8.html
+++ b/blog/proto-v0.8.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto-v0.9.html b/blog/proto-v0.9.html
index 0ca4df5aa75..48ae9a34fde 100644
--- a/blog/proto-v0.9.html
+++ b/blog/proto-v0.9.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/proto.html b/blog/proto.html
index 047b677ecef..41e12a3ad47 100644
--- a/blog/proto.html
+++ b/blog/proto.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags.html b/blog/tags.html
index 46fc4168ded..7644a68e090 100644
--- a/blog/tags.html
+++ b/blog/tags.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/action.html b/blog/tags/action.html
index 1893991b2ed..5cdaf0dd2e4 100644
--- a/blog/tags/action.html
+++ b/blog/tags/action.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/affected.html b/blog/tags/affected.html
index 0d876bc09c6..5c504fa28d1 100644
--- a/blog/tags/affected.html
+++ b/blog/tags/affected.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/alias.html b/blog/tags/alias.html
index 34ee6b83412..d34dc7a9e0d 100644
--- a/blog/tags/alias.html
+++ b/blog/tags/alias.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/args.html b/blog/tags/args.html
index f565926b897..8c07a27817e 100644
--- a/blog/tags/args.html
+++ b/blog/tags/args.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/arm-64.html b/blog/tags/arm-64.html
index ba180fbc99b..8c0643f8fc9 100644
--- a/blog/tags/arm-64.html
+++ b/blog/tags/arm-64.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/automation.html b/blog/tags/automation.html
index 09d7e8ec809..9484f2a2be0 100644
--- a/blog/tags/automation.html
+++ b/blog/tags/automation.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/bin.html b/blog/tags/bin.html
index b9b274a09a2..896f33dd001 100644
--- a/blog/tags/bin.html
+++ b/blog/tags/bin.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/bun.html b/blog/tags/bun.html
index 7014378b4c5..0ddf9a9dd18 100644
--- a/blog/tags/bun.html
+++ b/blog/tags/bun.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/cache.html b/blog/tags/cache.html
index 50c14dfc25c..3eb033d2b90 100644
--- a/blog/tags/cache.html
+++ b/blog/tags/cache.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/canary.html b/blog/tags/canary.html
index 975859f9e8b..6b2fbea5dbc 100644
--- a/blog/tags/canary.html
+++ b/blog/tags/canary.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/checksum.html b/blog/tags/checksum.html
index f97ab7c7ca4..28a0bdd4afd 100644
--- a/blog/tags/checksum.html
+++ b/blog/tags/checksum.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/ci.html b/blog/tags/ci.html
index 0203b35ce98..89e3e32d04f 100644
--- a/blog/tags/ci.html
+++ b/blog/tags/ci.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/clean.html b/blog/tags/clean.html
index 59cdcf74558..0ac642a2d91 100644
--- a/blog/tags/clean.html
+++ b/blog/tags/clean.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/code.html b/blog/tags/code.html
index a1855f044bb..fc961e1c5b2 100644
--- a/blog/tags/code.html
+++ b/blog/tags/code.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/codegen.html b/blog/tags/codegen.html
index 1080218bc13..02cff4a7ca0 100644
--- a/blog/tags/codegen.html
+++ b/blog/tags/codegen.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/config.html b/blog/tags/config.html
index cd379b1b79c..cd6c33e285b 100644
--- a/blog/tags/config.html
+++ b/blog/tags/config.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/constraints.html b/blog/tags/constraints.html
index 8091d6fe354..c8b510891dc 100644
--- a/blog/tags/constraints.html
+++ b/blog/tags/constraints.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/debug.html b/blog/tags/debug.html
index b119548e33f..dc9130acac9 100644
--- a/blog/tags/debug.html
+++ b/blog/tags/debug.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/deno.html b/blog/tags/deno.html
index 6c5f073a7f9..46acb9d6f5e 100644
--- a/blog/tags/deno.html
+++ b/blog/tags/deno.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/dep-graph.html b/blog/tags/dep-graph.html
index 6c58e2626a8..d239454dfc3 100644
--- a/blog/tags/dep-graph.html
+++ b/blog/tags/dep-graph.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/dependency.html b/blog/tags/dependency.html
index 92659e7bebc..1a53bf48804 100644
--- a/blog/tags/dependency.html
+++ b/blog/tags/dependency.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/deps.html b/blog/tags/deps.html
index 68c9d9fc201..d1918442ba3 100644
--- a/blog/tags/deps.html
+++ b/blog/tags/deps.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/detect.html b/blog/tags/detect.html
index 32e9b02e7df..e06fbd64859 100644
--- a/blog/tags/detect.html
+++ b/blog/tags/detect.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/docker.html b/blog/tags/docker.html
index 099077bb63d..5b771bd7c05 100644
--- a/blog/tags/docker.html
+++ b/blog/tags/docker.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/editors.html b/blog/tags/editors.html
index 8d93dfe230c..f833f8eb057 100644
--- a/blog/tags/editors.html
+++ b/blog/tags/editors.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/env-vars.html b/blog/tags/env-vars.html
index 00f5ada8dc4..a6b89d16b64 100644
--- a/blog/tags/env-vars.html
+++ b/blog/tags/env-vars.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/env.html b/blog/tags/env.html
index f890a339ac4..71c4e0f73ee 100644
--- a/blog/tags/env.html
+++ b/blog/tags/env.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/environment.html b/blog/tags/environment.html
index c615baecfa4..9df1b6307dd 100644
--- a/blog/tags/environment.html
+++ b/blog/tags/environment.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/errors.html b/blog/tags/errors.html
index 0b5774849f0..70cad247131 100644
--- a/blog/tags/errors.html
+++ b/blog/tags/errors.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/experiments.html b/blog/tags/experiments.html
index 99f3ea25cde..c198b858a34 100644
--- a/blog/tags/experiments.html
+++ b/blog/tags/experiments.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/extensions.html b/blog/tags/extensions.html
index a20b75d40d1..46807c7b078 100644
--- a/blog/tags/extensions.html
+++ b/blog/tags/extensions.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/extism.html b/blog/tags/extism.html
index dc7a9ed5bae..ed6155ec86f 100644
--- a/blog/tags/extism.html
+++ b/blog/tags/extism.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/file-groups.html b/blog/tags/file-groups.html
index 3cc74c62959..6eddb8bf5ca 100644
--- a/blog/tags/file-groups.html
+++ b/blog/tags/file-groups.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/generator.html b/blog/tags/generator.html
index 7101e362b49..73224a443dd 100644
--- a/blog/tags/generator.html
+++ b/blog/tags/generator.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/git.html b/blog/tags/git.html
index 94035254bf3..73c816058b1 100644
--- a/blog/tags/git.html
+++ b/blog/tags/git.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/github.html b/blog/tags/github.html
index 62a3a98c0ec..c0e25bda2dc 100644
--- a/blog/tags/github.html
+++ b/blog/tags/github.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/global.html b/blog/tags/global.html
index 5e6bf54f669..bae297a29ac 100644
--- a/blog/tags/global.html
+++ b/blog/tags/global.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/globals.html b/blog/tags/globals.html
index 760ef5b7f9d..8c10f4b3bb3 100644
--- a/blog/tags/globals.html
+++ b/blog/tags/globals.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/gnu.html b/blog/tags/gnu.html
index a393541bc0c..7dc0c5e8865 100644
--- a/blog/tags/gnu.html
+++ b/blog/tags/gnu.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/go.html b/blog/tags/go.html
index 7613bf7e5af..14e4dec3d82 100644
--- a/blog/tags/go.html
+++ b/blog/tags/go.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/graph.html b/blog/tags/graph.html
index 1369fedbfc2..8940872f312 100644
--- a/blog/tags/graph.html
+++ b/blog/tags/graph.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/hash.html b/blog/tags/hash.html
index 1c220cf82c5..cdccba74d05 100644
--- a/blog/tags/hash.html
+++ b/blog/tags/hash.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/hasher.html b/blog/tags/hasher.html
index c47ae8adc5e..f87e7eac666 100644
--- a/blog/tags/hasher.html
+++ b/blog/tags/hasher.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/hooks.html b/blog/tags/hooks.html
index 19c06d08a2d..316e28f90a1 100644
--- a/blog/tags/hooks.html
+++ b/blog/tags/hooks.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/http.html b/blog/tags/http.html
index e2694379a6e..91c84ea0ec4 100644
--- a/blog/tags/http.html
+++ b/blog/tags/http.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/hydration.html b/blog/tags/hydration.html
index fdbb3fe9834..a9a1f6afcae 100644
--- a/blog/tags/hydration.html
+++ b/blog/tags/hydration.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/id.html b/blog/tags/id.html
index 4c8efeb8029..eb7d2f99685 100644
--- a/blog/tags/id.html
+++ b/blog/tags/id.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/ignore.html b/blog/tags/ignore.html
index fbcf97a16a9..79c8b6ff8a8 100644
--- a/blog/tags/ignore.html
+++ b/blog/tags/ignore.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/index.html b/blog/tags/index.html
index 5b8a2cd003a..d10646ab2b2 100644
--- a/blog/tags/index.html
+++ b/blog/tags/index.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/inheritance.html b/blog/tags/inheritance.html
index 50aa212294f..410ce1b4bf4 100644
--- a/blog/tags/inheritance.html
+++ b/blog/tags/inheritance.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/init.html b/blog/tags/init.html
index b98d07fa56b..97378c58bc8 100644
--- a/blog/tags/init.html
+++ b/blog/tags/init.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/javascript.html b/blog/tags/javascript.html
index 6eaede2c859..03326796b5f 100644
--- a/blog/tags/javascript.html
+++ b/blog/tags/javascript.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/lang.html b/blog/tags/lang.html
index d55e10d7b76..38d72d2bacf 100644
--- a/blog/tags/lang.html
+++ b/blog/tags/lang.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/language.html b/blog/tags/language.html
index db461237452..698cbb8a6ea 100644
--- a/blog/tags/language.html
+++ b/blog/tags/language.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/life.html b/blog/tags/life.html
index ebe5a58727b..d7699275ba6 100644
--- a/blog/tags/life.html
+++ b/blog/tags/life.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/linux.html b/blog/tags/linux.html
index c98edda9aa8..6a60e55d0c5 100644
--- a/blog/tags/linux.html
+++ b/blog/tags/linux.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/local.html b/blog/tags/local.html
index eee173de1c5..80a3393ce55 100644
--- a/blog/tags/local.html
+++ b/blog/tags/local.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/log.html b/blog/tags/log.html
index 1fea4b24567..f35a05ad3b5 100644
--- a/blog/tags/log.html
+++ b/blog/tags/log.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/logging.html b/blog/tags/logging.html
index 3a62d867bc9..928414cd916 100644
--- a/blog/tags/logging.html
+++ b/blog/tags/logging.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/manager.html b/blog/tags/manager.html
index 6c71289573b..d3602d1cc79 100644
--- a/blog/tags/manager.html
+++ b/blog/tags/manager.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/metadata.html b/blog/tags/metadata.html
index 1b822e6a4f1..de9281b8f00 100644
--- a/blog/tags/metadata.html
+++ b/blog/tags/metadata.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/migrate.html b/blog/tags/migrate.html
index 202c3ad7440..8cdd10e275a 100644
--- a/blog/tags/migrate.html
+++ b/blog/tags/migrate.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/monorepo.html b/blog/tags/monorepo.html
index db23f95cf52..69c0f55566d 100644
--- a/blog/tags/monorepo.html
+++ b/blog/tags/monorepo.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/moonbase.html b/blog/tags/moonbase.html
index b4df1cdbbcd..7c454dee8f3 100644
--- a/blog/tags/moonbase.html
+++ b/blog/tags/moonbase.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/musl.html b/blog/tags/musl.html
index 8858a727dec..877a809d2a2 100644
--- a/blog/tags/musl.html
+++ b/blog/tags/musl.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/name.html b/blog/tags/name.html
index 6326a0f2398..a87f8399b0a 100644
--- a/blog/tags/name.html
+++ b/blog/tags/name.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/node.html b/blog/tags/node.html
index 373d614b80b..b5fec8b8876 100644
--- a/blog/tags/node.html
+++ b/blog/tags/node.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/notifier.html b/blog/tags/notifier.html
index 306d64ce898..5514a9a8e01 100644
--- a/blog/tags/notifier.html
+++ b/blog/tags/notifier.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/npm.html b/blog/tags/npm.html
index 11d1b62c421..dba2ec2bd84 100644
--- a/blog/tags/npm.html
+++ b/blog/tags/npm.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/nx.html b/blog/tags/nx.html
index 5223cd9ffbc..f9c863093a6 100644
--- a/blog/tags/nx.html
+++ b/blog/tags/nx.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/offline.html b/blog/tags/offline.html
index 2004ad6d4c5..031ba069d56 100644
--- a/blog/tags/offline.html
+++ b/blog/tags/offline.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/onboarding.html b/blog/tags/onboarding.html
index 2259f12c200..8f909b18d5c 100644
--- a/blog/tags/onboarding.html
+++ b/blog/tags/onboarding.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/options.html b/blog/tags/options.html
index 320bc577d63..ee6be4da5b1 100644
--- a/blog/tags/options.html
+++ b/blog/tags/options.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/outdated.html b/blog/tags/outdated.html
index 9bd33fe8e4b..b9c3ac5644c 100644
--- a/blog/tags/outdated.html
+++ b/blog/tags/outdated.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/owners.html b/blog/tags/owners.html
index 09545702965..0396323fb7c 100644
--- a/blog/tags/owners.html
+++ b/blog/tags/owners.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/ownership.html b/blog/tags/ownership.html
index 6f281fc5f1a..1dbdffdf500 100644
--- a/blog/tags/ownership.html
+++ b/blog/tags/ownership.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/package.html b/blog/tags/package.html
index 367befa0025..3ce2b84c6c6 100644
--- a/blog/tags/package.html
+++ b/blog/tags/package.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/pin.html b/blog/tags/pin.html
index e983d2b1421..4f984d25215 100644
--- a/blog/tags/pin.html
+++ b/blog/tags/pin.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/pipeline.html b/blog/tags/pipeline.html
index 74661762183..cfa65080a64 100644
--- a/blog/tags/pipeline.html
+++ b/blog/tags/pipeline.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/platform.html b/blog/tags/platform.html
index 27d6da4c045..8eb05f4e911 100644
--- a/blog/tags/platform.html
+++ b/blog/tags/platform.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/plugin.html b/blog/tags/plugin.html
index 800e6a6a810..c69d88547af 100644
--- a/blog/tags/plugin.html
+++ b/blog/tags/plugin.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/plugins.html b/blog/tags/plugins.html
index 5ec3b067e3c..99f55123f7f 100644
--- a/blog/tags/plugins.html
+++ b/blog/tags/plugins.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/profile.html b/blog/tags/profile.html
index d0e33a34377..58165161feb 100644
--- a/blog/tags/profile.html
+++ b/blog/tags/profile.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/project-graph.html b/blog/tags/project-graph.html
index 521729b1fc5..e17104e70dd 100644
--- a/blog/tags/project-graph.html
+++ b/blog/tags/project-graph.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/project.html b/blog/tags/project.html
index c2cfb8825b5..38834c03ea9 100644
--- a/blog/tags/project.html
+++ b/blog/tags/project.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/projects.html b/blog/tags/projects.html
index d386761b967..32db0d2e4d2 100644
--- a/blog/tags/projects.html
+++ b/blog/tags/projects.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/proto.html b/blog/tags/proto.html
index 8fad4bd7b08..b843f94b9b4 100644
--- a/blog/tags/proto.html
+++ b/blog/tags/proto.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/proto/page/2.html b/blog/tags/proto/page/2.html
index b7265f6278f..e661f847d43 100644
--- a/blog/tags/proto/page/2.html
+++ b/blog/tags/proto/page/2.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/proto/page/3.html b/blog/tags/proto/page/3.html
index c63c5bf10ce..7a91cc6ed01 100644
--- a/blog/tags/proto/page/3.html
+++ b/blog/tags/proto/page/3.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/proto/page/4.html b/blog/tags/proto/page/4.html
index 0d7e3370a48..371b9bd35ca 100644
--- a/blog/tags/proto/page/4.html
+++ b/blog/tags/proto/page/4.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/python.html b/blog/tags/python.html
index 424ca296912..72c58004f23 100644
--- a/blog/tags/python.html
+++ b/blog/tags/python.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/qol.html b/blog/tags/qol.html
index 6c89b7be46f..4590c4664fd 100644
--- a/blog/tags/qol.html
+++ b/blog/tags/qol.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/quality.html b/blog/tags/quality.html
index 18cdfcbe866..e63e2f3c5c9 100644
--- a/blog/tags/quality.html
+++ b/blog/tags/quality.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/query.html b/blog/tags/query.html
index e55009035b0..7d1f1b2692f 100644
--- a/blog/tags/query.html
+++ b/blog/tags/query.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/railway.html b/blog/tags/railway.html
index 28e8d15ec2e..2e7634d92c2 100644
--- a/blog/tags/railway.html
+++ b/blog/tags/railway.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/registry.html b/blog/tags/registry.html
index 2aff44e36d9..290bc37d53e 100644
--- a/blog/tags/registry.html
+++ b/blog/tags/registry.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/remote-cache.html b/blog/tags/remote-cache.html
index b6094078c2a..7b881bf8d6a 100644
--- a/blog/tags/remote-cache.html
+++ b/blog/tags/remote-cache.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/rfc.html b/blog/tags/rfc.html
index 42b481b716b..03ddb311a5d 100644
--- a/blog/tags/rfc.html
+++ b/blog/tags/rfc.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/roadmap.html b/blog/tags/roadmap.html
index 52a4b80fcc8..c7a60d0ee47 100644
--- a/blog/tags/roadmap.html
+++ b/blog/tags/roadmap.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/run.html b/blog/tags/run.html
index c535e7ebfaa..ef8bf67124c 100644
--- a/blog/tags/run.html
+++ b/blog/tags/run.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/runner.html b/blog/tags/runner.html
index b53e75d9f12..7614f4b9153 100644
--- a/blog/tags/runner.html
+++ b/blog/tags/runner.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/runtime.html b/blog/tags/runtime.html
index c49a408460c..b54ff6110dd 100644
--- a/blog/tags/runtime.html
+++ b/blog/tags/runtime.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/rust.html b/blog/tags/rust.html
index 8d007615525..783c2640947 100644
--- a/blog/tags/rust.html
+++ b/blog/tags/rust.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/schema.html b/blog/tags/schema.html
index c64701f04e2..b7784504424 100644
--- a/blog/tags/schema.html
+++ b/blog/tags/schema.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/shell.html b/blog/tags/shell.html
index 335a2ba25d2..6b67e824ff0 100644
--- a/blog/tags/shell.html
+++ b/blog/tags/shell.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/shim.html b/blog/tags/shim.html
index 54c491886f4..a699b9a1bff 100644
--- a/blog/tags/shim.html
+++ b/blog/tags/shim.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/shorthand.html b/blog/tags/shorthand.html
index 76033f5ff5f..7f9c0e0f41c 100644
--- a/blog/tags/shorthand.html
+++ b/blog/tags/shorthand.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/source.html b/blog/tags/source.html
index dd3c9c65083..4f1ffa6b9c4 100644
--- a/blog/tags/source.html
+++ b/blog/tags/source.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/survey.html b/blog/tags/survey.html
index e740edefa05..ef261f84e69 100644
--- a/blog/tags/survey.html
+++ b/blog/tags/survey.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/tag.html b/blog/tags/tag.html
index 1c5105b22b8..943bf329d95 100644
--- a/blog/tags/tag.html
+++ b/blog/tags/tag.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/tags.html b/blog/tags/tags.html
index 6903def9fbf..5694a77c653 100644
--- a/blog/tags/tags.html
+++ b/blog/tags/tags.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/target.html b/blog/tags/target.html
index 502661f709a..1b73163f95f 100644
--- a/blog/tags/target.html
+++ b/blog/tags/target.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/task.html b/blog/tags/task.html
index 868340714fc..46ca2d548f4 100644
--- a/blog/tags/task.html
+++ b/blog/tags/task.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/tasks.html b/blog/tags/tasks.html
index e8ab58fcdb9..e5c5619087d 100644
--- a/blog/tags/tasks.html
+++ b/blog/tags/tasks.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/templates.html b/blog/tags/templates.html
index 23187d34acd..b2d652b9536 100644
--- a/blog/tags/templates.html
+++ b/blog/tags/templates.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/tier.html b/blog/tags/tier.html
index 895023c6580..85de647a7b3 100644
--- a/blog/tags/tier.html
+++ b/blog/tags/tier.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/tokens.html b/blog/tags/tokens.html
index a9197a1c231..8f59004c887 100644
--- a/blog/tags/tokens.html
+++ b/blog/tags/tokens.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/toml.html b/blog/tags/toml.html
index b8810088336..fb6fbc2a26e 100644
--- a/blog/tags/toml.html
+++ b/blog/tags/toml.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/tool.html b/blog/tags/tool.html
index 89a8c00813e..cdbed5a8fa9 100644
--- a/blog/tags/tool.html
+++ b/blog/tags/tool.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/toolchain.html b/blog/tags/toolchain.html
index 649fbc82842..b1be93683ce 100644
--- a/blog/tags/toolchain.html
+++ b/blog/tags/toolchain.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/tools.html b/blog/tags/tools.html
index f02fa26c524..1b48688c32c 100644
--- a/blog/tags/tools.html
+++ b/blog/tags/tools.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/turborepo.html b/blog/tags/turborepo.html
index d07d319270d..dc9f66780c0 100644
--- a/blog/tags/turborepo.html
+++ b/blog/tags/turborepo.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/typescript.html b/blog/tags/typescript.html
index b39e46e72b0..06100b640f8 100644
--- a/blog/tags/typescript.html
+++ b/blog/tags/typescript.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/vcs.html b/blog/tags/vcs.html
index a371e2b31c5..c8afe28a727 100644
--- a/blog/tags/vcs.html
+++ b/blog/tags/vcs.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/version.html b/blog/tags/version.html
index fb41d4f0336..f72e8d216be 100644
--- a/blog/tags/version.html
+++ b/blog/tags/version.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/vscode.html b/blog/tags/vscode.html
index 6ea2469fe13..1ca0d183624 100644
--- a/blog/tags/vscode.html
+++ b/blog/tags/vscode.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/wasm.html b/blog/tags/wasm.html
index 6ddf5f3f3a0..a7fe126d86f 100644
--- a/blog/tags/wasm.html
+++ b/blog/tags/wasm.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/tags/windows.html b/blog/tags/windows.html
index d5f98670979..c96b26a8a5e 100644
--- a/blog/tags/windows.html
+++ b/blog/tags/windows.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/typescript-monorepo.html b/blog/typescript-monorepo.html
index b452e81c027..cf6240c808f 100644
--- a/blog/typescript-monorepo.html
+++ b/blog/typescript-monorepo.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/v0.13.html b/blog/v0.13.html
index 6efa742731d..c0c0b3b2af1 100644
--- a/blog/v0.13.html
+++ b/blog/v0.13.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/v0.14.html b/blog/v0.14.html
index 7b47dfc8c23..0837f20d592 100644
--- a/blog/v0.14.html
+++ b/blog/v0.14.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/v0.15.html b/blog/v0.15.html
index efb718e779c..ee66d06edf4 100644
--- a/blog/v0.15.html
+++ b/blog/v0.15.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/v0.16.html b/blog/v0.16.html
index 7ab9061dcae..dc654441de8 100644
--- a/blog/v0.16.html
+++ b/blog/v0.16.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/v0.17.html b/blog/v0.17.html
index cb2b701bfad..15061d9f90b 100644
--- a/blog/v0.17.html
+++ b/blog/v0.17.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/v0.18.html b/blog/v0.18.html
index cab30240c61..c771bb40da8 100644
--- a/blog/v0.18.html
+++ b/blog/v0.18.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/v0.19.html b/blog/v0.19.html
index 5b0c18337d2..f6e9d68f837 100644
--- a/blog/v0.19.html
+++ b/blog/v0.19.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/v0.20.html b/blog/v0.20.html
index e405b600c62..e12419e1ae9 100644
--- a/blog/v0.20.html
+++ b/blog/v0.20.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/v0.21.html b/blog/v0.21.html
index ebad931c202..4713963718f 100644
--- a/blog/v0.21.html
+++ b/blog/v0.21.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/v0.22.html b/blog/v0.22.html
index be847f1aba2..833fec9f369 100644
--- a/blog/v0.22.html
+++ b/blog/v0.22.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/v0.23.html b/blog/v0.23.html
index 6b9fadc2323..46914916bf6 100644
--- a/blog/v0.23.html
+++ b/blog/v0.23.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/v0.24.html b/blog/v0.24.html
index ce9379f7442..336bbcfdef8 100644
--- a/blog/v0.24.html
+++ b/blog/v0.24.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/v0.25.html b/blog/v0.25.html
index a8009125808..c172d6ef548 100644
--- a/blog/v0.25.html
+++ b/blog/v0.25.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/v0.26.html b/blog/v0.26.html
index 1bd1516bd46..6aca51ec559 100644
--- a/blog/v0.26.html
+++ b/blog/v0.26.html
@@ -13,7 +13,7 @@
-
+
diff --git a/blog/vscode-extension.html b/blog/vscode-extension.html
index 77de8b5749d..d0958154b24 100644
--- a/blog/vscode-extension.html
+++ b/blog/vscode-extension.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs.html b/docs.html
index 0a96f1a34d0..8f08fcc28cb 100644
--- a/docs.html
+++ b/docs.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/cheat-sheet.html b/docs/cheat-sheet.html
index afa6d9c7442..c72fb3db162 100644
--- a/docs/cheat-sheet.html
+++ b/docs/cheat-sheet.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands.html b/docs/commands.html
index f89cc4be707..f47941cd367 100644
--- a/docs/commands.html
+++ b/docs/commands.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/action-graph.html b/docs/commands/action-graph.html
index 984fb0b877e..8d8d0a58bdc 100644
--- a/docs/commands/action-graph.html
+++ b/docs/commands/action-graph.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/bin.html b/docs/commands/bin.html
index 45be68e81e1..c482ab39621 100644
--- a/docs/commands/bin.html
+++ b/docs/commands/bin.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/check.html b/docs/commands/check.html
index 16c43737389..46069694004 100644
--- a/docs/commands/check.html
+++ b/docs/commands/check.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/ci.html b/docs/commands/ci.html
index 141d2ea03b5..71886831701 100644
--- a/docs/commands/ci.html
+++ b/docs/commands/ci.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/clean.html b/docs/commands/clean.html
index cafb41c0e04..8d4561bef18 100644
--- a/docs/commands/clean.html
+++ b/docs/commands/clean.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/completions.html b/docs/commands/completions.html
index 4842f0cd89b..f34623f2224 100644
--- a/docs/commands/completions.html
+++ b/docs/commands/completions.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/docker.html b/docs/commands/docker.html
index 4b0b4d91aa5..5206e822b04 100644
--- a/docs/commands/docker.html
+++ b/docs/commands/docker.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/docker/prune.html b/docs/commands/docker/prune.html
index 63f4e1b290e..1b0ec2dd299 100644
--- a/docs/commands/docker/prune.html
+++ b/docs/commands/docker/prune.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/docker/scaffold.html b/docs/commands/docker/scaffold.html
index 2975d0d5026..8df1654b33e 100644
--- a/docs/commands/docker/scaffold.html
+++ b/docs/commands/docker/scaffold.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/docker/setup.html b/docs/commands/docker/setup.html
index 77c11f52d4a..780dc968b4b 100644
--- a/docs/commands/docker/setup.html
+++ b/docs/commands/docker/setup.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/ext.html b/docs/commands/ext.html
index c46c24d3bc3..7795d23782b 100644
--- a/docs/commands/ext.html
+++ b/docs/commands/ext.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/generate.html b/docs/commands/generate.html
index 1b0337730c9..e617d2a340f 100644
--- a/docs/commands/generate.html
+++ b/docs/commands/generate.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/init.html b/docs/commands/init.html
index 106dc0da650..4b30a3d6c90 100644
--- a/docs/commands/init.html
+++ b/docs/commands/init.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/migrate.html b/docs/commands/migrate.html
index 332ccf69c4f..5118448ecaa 100644
--- a/docs/commands/migrate.html
+++ b/docs/commands/migrate.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/migrate/from-package-json.html b/docs/commands/migrate/from-package-json.html
index ab88aeb3ded..075f2c5dc22 100644
--- a/docs/commands/migrate/from-package-json.html
+++ b/docs/commands/migrate/from-package-json.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/migrate/from-turborepo.html b/docs/commands/migrate/from-turborepo.html
index b601b55972f..cf1d8a230e8 100644
--- a/docs/commands/migrate/from-turborepo.html
+++ b/docs/commands/migrate/from-turborepo.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/overview.html b/docs/commands/overview.html
index c897044a630..3b69cae5be7 100644
--- a/docs/commands/overview.html
+++ b/docs/commands/overview.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/project-graph.html b/docs/commands/project-graph.html
index 801343c55ec..923a62872e7 100644
--- a/docs/commands/project-graph.html
+++ b/docs/commands/project-graph.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/project.html b/docs/commands/project.html
index 89c05ebdfd4..4b3dc737608 100644
--- a/docs/commands/project.html
+++ b/docs/commands/project.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/query.html b/docs/commands/query.html
index e95c16f3bc3..cd4ecf0a3b6 100644
--- a/docs/commands/query.html
+++ b/docs/commands/query.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/query/hash-diff.html b/docs/commands/query/hash-diff.html
index e294985be81..3e930bea46e 100644
--- a/docs/commands/query/hash-diff.html
+++ b/docs/commands/query/hash-diff.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/query/hash.html b/docs/commands/query/hash.html
index 3c380c6483c..ab4bd19797a 100644
--- a/docs/commands/query/hash.html
+++ b/docs/commands/query/hash.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/query/projects.html b/docs/commands/query/projects.html
index 79728090f3f..8f4705434bb 100644
--- a/docs/commands/query/projects.html
+++ b/docs/commands/query/projects.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/query/tasks.html b/docs/commands/query/tasks.html
index bfe1f148d8c..8812b22c704 100644
--- a/docs/commands/query/tasks.html
+++ b/docs/commands/query/tasks.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/query/touched-files.html b/docs/commands/query/touched-files.html
index 4b490fc47ee..79be97959c7 100644
--- a/docs/commands/query/touched-files.html
+++ b/docs/commands/query/touched-files.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/run.html b/docs/commands/run.html
index e41b322b361..e79359d8455 100644
--- a/docs/commands/run.html
+++ b/docs/commands/run.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/setup.html b/docs/commands/setup.html
index 44fb3c1b088..8961ec60c16 100644
--- a/docs/commands/setup.html
+++ b/docs/commands/setup.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/sync.html b/docs/commands/sync.html
index 59bb7467902..530545ac235 100644
--- a/docs/commands/sync.html
+++ b/docs/commands/sync.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/sync/codeowners.html b/docs/commands/sync/codeowners.html
index f8eba5bafba..e9530f7d3ba 100644
--- a/docs/commands/sync/codeowners.html
+++ b/docs/commands/sync/codeowners.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/sync/hooks.html b/docs/commands/sync/hooks.html
index 7249b1d6f6a..87fc3e8d50f 100644
--- a/docs/commands/sync/hooks.html
+++ b/docs/commands/sync/hooks.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/sync/projects.html b/docs/commands/sync/projects.html
index ceef699a063..f6afbd2a8a7 100644
--- a/docs/commands/sync/projects.html
+++ b/docs/commands/sync/projects.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/task.html b/docs/commands/task.html
index 61aaeb7c3f9..d7bc67d85d0 100644
--- a/docs/commands/task.html
+++ b/docs/commands/task.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/teardown.html b/docs/commands/teardown.html
index 4a2593b9c0b..36be4578420 100644
--- a/docs/commands/teardown.html
+++ b/docs/commands/teardown.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/commands/upgrade.html b/docs/commands/upgrade.html
index cb45cd30c7c..ea96964b0d3 100644
--- a/docs/commands/upgrade.html
+++ b/docs/commands/upgrade.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/comparison.html b/docs/comparison.html
index 47430b543fa..c6746aedd30 100644
--- a/docs/comparison.html
+++ b/docs/comparison.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/concepts.html b/docs/concepts.html
index db88a52aed2..a7953551776 100644
--- a/docs/concepts.html
+++ b/docs/concepts.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/concepts/cache.html b/docs/concepts/cache.html
index bcf24be1765..f6ddf728e1f 100644
--- a/docs/concepts/cache.html
+++ b/docs/concepts/cache.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/concepts/file-group.html b/docs/concepts/file-group.html
index 6cb98e40269..185a33045ed 100644
--- a/docs/concepts/file-group.html
+++ b/docs/concepts/file-group.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/concepts/file-pattern.html b/docs/concepts/file-pattern.html
index 0364cfd6ce2..8f236dc4574 100644
--- a/docs/concepts/file-pattern.html
+++ b/docs/concepts/file-pattern.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/concepts/project.html b/docs/concepts/project.html
index 41b6d9c8eed..d7c379f3e73 100644
--- a/docs/concepts/project.html
+++ b/docs/concepts/project.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/concepts/query-lang.html b/docs/concepts/query-lang.html
index c44e97ebb53..3e9e72b1a21 100644
--- a/docs/concepts/query-lang.html
+++ b/docs/concepts/query-lang.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/concepts/target.html b/docs/concepts/target.html
index bb3ecb26e8b..fd9b900c6ac 100644
--- a/docs/concepts/target.html
+++ b/docs/concepts/target.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/concepts/task-inheritance.html b/docs/concepts/task-inheritance.html
index c523a24e7bd..d74e013623b 100644
--- a/docs/concepts/task-inheritance.html
+++ b/docs/concepts/task-inheritance.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/concepts/task.html b/docs/concepts/task.html
index 75e8082a639..6b27a8e7728 100644
--- a/docs/concepts/task.html
+++ b/docs/concepts/task.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/concepts/token.html b/docs/concepts/token.html
index 0d4fd88d31c..382a619429e 100644
--- a/docs/concepts/token.html
+++ b/docs/concepts/token.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/concepts/toolchain.html b/docs/concepts/toolchain.html
index ccc4c2fb500..5e97d5d8750 100644
--- a/docs/concepts/toolchain.html
+++ b/docs/concepts/toolchain.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/concepts/workspace.html b/docs/concepts/workspace.html
index 3ab77330191..38aa1331413 100644
--- a/docs/concepts/workspace.html
+++ b/docs/concepts/workspace.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/config.html b/docs/config.html
index 6c18337dfce..5a9bfdf1bff 100644
--- a/docs/config.html
+++ b/docs/config.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/config/project.html b/docs/config/project.html
index 8daa4fbd004..80c3911f135 100644
--- a/docs/config/project.html
+++ b/docs/config/project.html
@@ -13,7 +13,7 @@
-
+
@@ -158,6 +158,7 @@ stack
unknown
(default) - When not configured.
+
Tags are a simple mechanism for categorizing projects. They can be used to group projects together
diff --git a/docs/config/tasks.html b/docs/config/tasks.html
index 34e6cddc28e..27e0098252e 100644
--- a/docs/config/tasks.html
+++ b/docs/config/tasks.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/config/template.html b/docs/config/template.html
index ace66208f38..7574dbd41ae 100644
--- a/docs/config/template.html
+++ b/docs/config/template.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/config/toolchain.html b/docs/config/toolchain.html
index 7df21461736..9cc4599ef7d 100644
--- a/docs/config/toolchain.html
+++ b/docs/config/toolchain.html
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/config/workspace.html b/docs/config/workspace.html
index 3544d6d99ed..cf4c2757453 100644
--- a/docs/config/workspace.html
+++ b/docs/config/workspace.html
@@ -13,7 +13,7 @@
-
+
@@ -86,9 +86,9 @@ constraint
enforceProjectTypeRelationships
Enforces allowed relationships between a project its dependencies based on the project's
-type
setting. When a project depends on another project of an invalid type, an
-error will be thrown when attempting to run a task. The following relationships are enforced when
-this setting is enabled, which defaults to true
.
+type
and stack
settings. When a project depends on another
+project of an invalid type, an error will be thrown when attempting to run a task. The following
+relationships are enforced when this setting is enabled, which defaults to true
.
Applications can depend on all types except other applications or automation.
Automation can depend on all types except other automation.
@@ -96,6 +96,9 @@