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